Skip to content

Commit 5c97e18

Browse files
committed
feat: Add @af/sweph-wasm package (Phase 2)
- Isolated WebAssembly implementation for browser support - Implements ISwephAdapter interface - Exports unified creation factory createSweph() - Includes Typescript definitions and WASM binaries
1 parent 044c02e commit 5c97e18

19 files changed

Lines changed: 1164 additions & 0 deletions

packages/wasm/dist/adapter.d.ts

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/**
2+
* @af/sweph-wasm - WASM Adapter
3+
*
4+
* Implements ISwephAdapter interface for WebAssembly module.
5+
*/
6+
import type { ISwephAdapter, CalcResult, RiseTransResult, AzAltResult } from '@af/sweph-core';
7+
/**
8+
* WASM module interface (Emscripten generated)
9+
*/
10+
interface WasmModule {
11+
_malloc(size: number): number;
12+
_free(ptr: number): void;
13+
getValue(ptr: number, type: string): number;
14+
setValue(ptr: number, value: number, type: string): void;
15+
UTF8ToString(ptr: number): string;
16+
HEAPU8: Uint8Array;
17+
_swe_julday(year: number, month: number, day: number, hour: number, gregflag: number): number;
18+
_swe_calc_ut(tjd_ut: number, ipl: number, iflag: number, xxPtr: number, serrPtr: number): number;
19+
_swe_set_ephe_path(pathPtr: number): void;
20+
_swe_set_sid_mode(sid_mode: number, t0: number, ayan_t0: number): void;
21+
_swe_get_ayanamsa(tjd_et: number): number;
22+
_swe_get_ayanamsa_ut(tjd_ut: number): number;
23+
_swe_rise_trans(tjd_ut: number, ipl: number, starnamePtr: number, epheflag: number, rsmi: number, geoposPtr: number, atpress: number, attemp: number, tretPtr: number, serrPtr: number): number;
24+
_swe_azalt(tjd_ut: number, calc_flag: number, geoposPtr: number, atpress: number, attemp: number, xinPtr: number, xazPtr: number): void;
25+
_swe_version(ptr: number): void;
26+
}
27+
/**
28+
* WebAssembly adapter implementing ISwephAdapter
29+
*/
30+
export declare class WasmAdapter implements ISwephAdapter {
31+
private module;
32+
SEFLG_SWIEPH: number;
33+
SEFLG_SPEED: number;
34+
SE_CALC_RISE: number;
35+
SE_CALC_SET: number;
36+
SE_CALC_MTRANSIT: number;
37+
constructor(wasmModule: WasmModule);
38+
swe_julday(year: number, month: number, day: number, hour: number, gregflag: number): number;
39+
swe_calc_ut(tjd_ut: number, ipl: number, iflag: number): CalcResult | {
40+
error: string;
41+
};
42+
swe_set_ephe_path(path: string): void;
43+
swe_set_sid_mode(sid_mode: number, t0: number, ayan_t0: number): void;
44+
swe_get_ayanamsa(tjd_et: number): number;
45+
swe_get_ayanamsa_ut(tjd_ut: number): number;
46+
swe_rise_trans(tjd_ut: number, ipl: number, starname: string, epheflag: number, rsmi: number, geopos: number[], atpress: number, attemp: number): RiseTransResult | {
47+
error: string;
48+
};
49+
swe_azalt(tjd_ut: number, calc_flag: number, geopos: number[], atpress: number, attemp: number, xin: number[]): AzAltResult;
50+
swe_version(): string;
51+
}
52+
export {};
53+
//# sourceMappingURL=adapter.d.ts.map

packages/wasm/dist/adapter.d.ts.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/wasm/dist/adapter.js

Lines changed: 149 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/wasm/dist/adapter.js.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/wasm/dist/index.d.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* @af/sweph-wasm
3+
*
4+
* Swiss Ephemeris WebAssembly module for browser-based Vedic astrology calculations.
5+
*
6+
* @example
7+
* ```typescript
8+
* import { createSweph } from '@af/sweph-wasm';
9+
*
10+
* const sweph = await createSweph();
11+
* const planets = sweph.calculatePlanets(new Date());
12+
* ```
13+
*/
14+
export * from '@af/sweph-core';
15+
export { WasmAdapter } from './adapter';
16+
export { loadWasmModule, getAdapter, isLoaded, isWasmSupported } from './loader';
17+
export type { WasmLoadOptions } from './loader';
18+
import { WasmLoadOptions } from './loader';
19+
import type { ISwephInstance } from '@af/sweph-core';
20+
/**
21+
* Create and initialize a Swiss Ephemeris instance for browser
22+
*/
23+
export declare function createSweph(options?: WasmLoadOptions): Promise<ISwephInstance>;
24+
/**
25+
* Initialize Swiss Ephemeris (alias for createSweph for API compatibility)
26+
*/
27+
export declare function initializeSweph(options?: WasmLoadOptions): Promise<void>;
28+
declare const _default: {
29+
createSweph: typeof createSweph;
30+
initializeSweph: typeof initializeSweph;
31+
};
32+
export default _default;
33+
//# sourceMappingURL=index.d.ts.map

packages/wasm/dist/index.d.ts.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)