@sanbus/galley-node 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/build.mjs +36 -0
- package/dist/dispatch.d.ts +14 -0
- package/dist/dispatch.js +146 -0
- package/dist/dispatch.js.map +1 -0
- package/dist/ffi.d.ts +268 -0
- package/dist/ffi.js +842 -0
- package/dist/ffi.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/session.d.ts +13 -0
- package/dist/session.js +25 -0
- package/dist/session.js.map +1 -0
- package/package.json +49 -0
- package/src/dispatch.ts +147 -0
- package/src/ffi.ts +1498 -0
- package/src/index.ts +79 -0
- package/src/session.ts +28 -0
package/dist/ffi.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ffi.js","sourceRoot":"","sources":["../src/ffi.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Galley JavaScript bindings for Node — public surface.
|
|
3
|
+
*
|
|
4
|
+
* Binds the runtime-neutral `@sanbus/galley-core` to the koffi port. Mirrors the
|
|
5
|
+
* layout of `bindings/python/galley.pyi` and the C header
|
|
6
|
+
* `bindings/c/galley.h`.
|
|
7
|
+
*/
|
|
8
|
+
import { findLibrary } from "./ffi.ts";
|
|
9
|
+
import { Session } from "./session.ts";
|
|
10
|
+
export * from "@sanbus/galley-core";
|
|
11
|
+
export { Session };
|
|
12
|
+
export { findLibrary };
|
|
13
|
+
export { getNodePort, libFileName } from "./ffi.ts";
|
|
14
|
+
export type { SessionOptions, WalkStep, Diagnostic, TreeSnapshot } from "@sanbus/galley-core";
|
|
15
|
+
export declare function version(): string;
|
|
16
|
+
export declare function parserType(): number;
|
|
17
|
+
export declare function errorRecoveryMode(): number;
|
|
18
|
+
export declare function hasAst(): boolean;
|
|
19
|
+
export declare function hasProcedures(): boolean;
|
|
20
|
+
export declare function allowsNoAstTreeProcedures(): boolean;
|
|
21
|
+
export declare function sourceRetentionEnabled(): boolean;
|
|
22
|
+
export declare function hasPositionTracking(): boolean;
|
|
23
|
+
export declare function hasInputStreaming(): boolean;
|
|
24
|
+
export declare function usesVerbatim(): boolean;
|
|
25
|
+
export declare function stackOverflowRecoveryAvailable(): boolean;
|
|
26
|
+
export declare function symbolCount(): number;
|
|
27
|
+
export declare function variableCount(): number;
|
|
28
|
+
export declare function statusString(status: number): string | null;
|
|
29
|
+
export declare const has_ast: typeof hasAst;
|
|
30
|
+
export declare const has_procedures: typeof hasProcedures;
|
|
31
|
+
export declare const has_position_tracking: typeof hasPositionTracking;
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Galley JavaScript bindings for Node — public surface.
|
|
3
|
+
*
|
|
4
|
+
* Binds the runtime-neutral `@sanbus/galley-core` to the koffi port. Mirrors the
|
|
5
|
+
* layout of `bindings/python/galley.pyi` and the C header
|
|
6
|
+
* `bindings/c/galley.h`.
|
|
7
|
+
*/
|
|
8
|
+
import { getNodePort, findLibrary } from "./ffi.js";
|
|
9
|
+
import { Session } from "./session.js";
|
|
10
|
+
// Core surface (Session base is shadowed by the adapter subclass below).
|
|
11
|
+
export * from "@sanbus/galley-core";
|
|
12
|
+
export { Session };
|
|
13
|
+
export { findLibrary };
|
|
14
|
+
export { getNodePort, libFileName } from "./ffi.js";
|
|
15
|
+
// Module-level queries (mirror galley.h)
|
|
16
|
+
export function version() {
|
|
17
|
+
return getNodePort().version();
|
|
18
|
+
}
|
|
19
|
+
export function parserType() {
|
|
20
|
+
return getNodePort().parserType();
|
|
21
|
+
}
|
|
22
|
+
export function errorRecoveryMode() {
|
|
23
|
+
return getNodePort().errorRecoveryMode();
|
|
24
|
+
}
|
|
25
|
+
export function hasAst() {
|
|
26
|
+
return getNodePort().hasAst();
|
|
27
|
+
}
|
|
28
|
+
export function hasProcedures() {
|
|
29
|
+
return getNodePort().hasProcedures();
|
|
30
|
+
}
|
|
31
|
+
export function allowsNoAstTreeProcedures() {
|
|
32
|
+
return getNodePort().allowsNoAstTreeProcedures();
|
|
33
|
+
}
|
|
34
|
+
export function sourceRetentionEnabled() {
|
|
35
|
+
return getNodePort().sourceRetentionEnabled();
|
|
36
|
+
}
|
|
37
|
+
export function hasPositionTracking() {
|
|
38
|
+
return getNodePort().hasPositionTracking();
|
|
39
|
+
}
|
|
40
|
+
export function hasInputStreaming() {
|
|
41
|
+
return getNodePort().hasInputStreaming();
|
|
42
|
+
}
|
|
43
|
+
export function usesVerbatim() {
|
|
44
|
+
return getNodePort().usesVerbatim();
|
|
45
|
+
}
|
|
46
|
+
export function stackOverflowRecoveryAvailable() {
|
|
47
|
+
return getNodePort().stackOverflowRecoveryAvailable();
|
|
48
|
+
}
|
|
49
|
+
export function symbolCount() {
|
|
50
|
+
return getNodePort().symbolCount();
|
|
51
|
+
}
|
|
52
|
+
export function variableCount() {
|
|
53
|
+
return getNodePort().variableCount();
|
|
54
|
+
}
|
|
55
|
+
export function statusString(status) {
|
|
56
|
+
return getNodePort().statusString(status);
|
|
57
|
+
}
|
|
58
|
+
// Preserve original Python naming aliases for docs parity
|
|
59
|
+
export const has_ast = hasAst;
|
|
60
|
+
export const has_procedures = hasProcedures;
|
|
61
|
+
export const has_position_tracking = hasPositionTracking;
|
|
62
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,yEAAyE;AACzE,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGpD,yCAAyC;AACzC,MAAM,UAAU,OAAO;IACrB,OAAO,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,WAAW,EAAE,CAAC,UAAU,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,WAAW,EAAE,CAAC,iBAAiB,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,OAAO,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,EAAE,CAAC,aAAa,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO,WAAW,EAAE,CAAC,yBAAyB,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,WAAW,EAAE,CAAC,sBAAsB,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,WAAW,EAAE,CAAC,mBAAmB,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,WAAW,EAAE,CAAC,iBAAiB,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,8BAA8B;IAC5C,OAAO,WAAW,EAAE,CAAC,8BAA8B,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,EAAE,CAAC,aAAa,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,WAAW,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC;AAC9B,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC;AAC5C,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node `Session`: the core session bound to the koffi port.
|
|
3
|
+
*
|
|
4
|
+
* Installs the host-procedure dispatch for the session's library (mirrors
|
|
5
|
+
* Python's import-time shim setup); the installer is a no-op for libraries
|
|
6
|
+
* built for C procedures.
|
|
7
|
+
*/
|
|
8
|
+
import { Session as CoreSession } from "@sanbus/galley-core";
|
|
9
|
+
import type { SessionOptions } from "@sanbus/galley-core";
|
|
10
|
+
export type { SessionOptions };
|
|
11
|
+
export declare class Session extends CoreSession {
|
|
12
|
+
constructor(options?: SessionOptions);
|
|
13
|
+
}
|
package/dist/session.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node `Session`: the core session bound to the koffi port.
|
|
3
|
+
*
|
|
4
|
+
* Installs the host-procedure dispatch for the session's library (mirrors
|
|
5
|
+
* Python's import-time shim setup); the installer is a no-op for libraries
|
|
6
|
+
* built for C procedures.
|
|
7
|
+
*/
|
|
8
|
+
import { Session as CoreSession } from "@sanbus/galley-core";
|
|
9
|
+
import { getNodePort } from "./ffi.js";
|
|
10
|
+
import { ensureDispatchFor } from "./dispatch.js";
|
|
11
|
+
export class Session extends CoreSession {
|
|
12
|
+
constructor(options = {}) {
|
|
13
|
+
const port = getNodePort(options.libraryPath);
|
|
14
|
+
// Ensure host-procedure dispatch is installed for this library even if
|
|
15
|
+
// the first Session is created before any installProcedure call.
|
|
16
|
+
try {
|
|
17
|
+
ensureDispatchFor(port.ffi, port);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// installer missing (C build) — ignore.
|
|
21
|
+
}
|
|
22
|
+
super(port, options);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAIlD,MAAM,OAAO,OAAQ,SAAQ,WAAW;IACtC,YAAY,OAAO,GAAmB,EAAE;QACtC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9C,uEAAuE;QACvE,iEAAiE;QACjE,IAAI,CAAC;YACH,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;QACD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;CACF"}
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@sanbus/galley-node",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Galley JavaScript bindings for Node (@sanbus/galley-core over koffi FFI and bindings/c/galley.h)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"src",
|
|
18
|
+
"build.mjs",
|
|
19
|
+
"README.md"
|
|
20
|
+
],
|
|
21
|
+
"bin": {
|
|
22
|
+
"@sanbus/galley-node": "./build.mjs"
|
|
23
|
+
},
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "tsc -p tsconfig.json",
|
|
26
|
+
"prepare": "tsc -p tsconfig.json --noCheck --types \"\"",
|
|
27
|
+
"prepublishOnly": "npm run build",
|
|
28
|
+
"test": "node tests/test_bindings.mjs"
|
|
29
|
+
},
|
|
30
|
+
"keywords": [
|
|
31
|
+
"galley",
|
|
32
|
+
"parser",
|
|
33
|
+
"javascript",
|
|
34
|
+
"typescript",
|
|
35
|
+
"ffi",
|
|
36
|
+
"node"
|
|
37
|
+
],
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@sanbus/galley-core": "0.0.1",
|
|
40
|
+
"koffi": "^3.1.6"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@types/node": "^22.0.0",
|
|
44
|
+
"typescript": "^7.0.2"
|
|
45
|
+
},
|
|
46
|
+
"engines": {
|
|
47
|
+
"node": ">=18"
|
|
48
|
+
}
|
|
49
|
+
}
|
package/src/dispatch.ts
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node procedure-dispatch installer.
|
|
3
|
+
*
|
|
4
|
+
* Owns the koffi callback that the shared JS shim
|
|
5
|
+
* (`galley_install_js_dispatch_id`, generated by `@sanbus/galley-core/build/shim.mjs`)
|
|
6
|
+
* forwards every parser hook through, plus the `require()`-based auto-scan
|
|
7
|
+
* of `procedures.*` in the language directory. The registry and the
|
|
8
|
+
* ID-to-name dispatcher live in the core; this module only bridges the
|
|
9
|
+
* native boundary. Libraries that predate integer hook IDs still export
|
|
10
|
+
* the name-carrying `galley_install_js_dispatch`, used as a fallback.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { createRequire } from "node:module";
|
|
14
|
+
import * as path from "node:path";
|
|
15
|
+
const require = createRequire(import.meta.url);
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
17
|
+
const koffi = require("koffi") as typeof import("koffi");
|
|
18
|
+
|
|
19
|
+
import { dispatchProcedure, installProcedures, listProcedures } from "@sanbus/galley-core";
|
|
20
|
+
import type { FfiPort } from "@sanbus/galley-core";
|
|
21
|
+
import { copyStringBytes, type GalleyFFI } from "./ffi.ts";
|
|
22
|
+
|
|
23
|
+
// Held to prevent GC of the koffi callbacks; installed per library path.
|
|
24
|
+
// ID and name paths keep separate slots: their signatures differ.
|
|
25
|
+
let dispatchIdCallback: unknown = null;
|
|
26
|
+
let dispatchCallback: unknown = null;
|
|
27
|
+
const installedFor = new Set<string>();
|
|
28
|
+
let autoAttempted = false;
|
|
29
|
+
|
|
30
|
+
function isProcedureName(name: string): boolean {
|
|
31
|
+
return name === "reduction" || name.startsWith("reduction_") || name.startsWith("hook_");
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function tryAutoRegister(foreignInterface: GalleyFFI): void {
|
|
35
|
+
if (listProcedures().length > 0 || autoAttempted) return;
|
|
36
|
+
autoAttempted = true;
|
|
37
|
+
const tryLoadModule = (modulePath: string): boolean => {
|
|
38
|
+
try {
|
|
39
|
+
const loadedModule = require(modulePath) as Record<string, unknown>;
|
|
40
|
+
let hasHook = false;
|
|
41
|
+
for (const [name, value] of Object.entries(loadedModule)) {
|
|
42
|
+
if (typeof value !== "function" || !isProcedureName(name)) continue;
|
|
43
|
+
hasHook = true;
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
if (hasHook) return installProcedures(loadedModule) > 0;
|
|
47
|
+
const defaultExport = (loadedModule as Record<string, unknown>).default as
|
|
48
|
+
| Record<string, unknown>
|
|
49
|
+
| undefined;
|
|
50
|
+
if (defaultExport && typeof defaultExport === "object") {
|
|
51
|
+
return installProcedures(defaultExport) > 0;
|
|
52
|
+
}
|
|
53
|
+
} catch {}
|
|
54
|
+
return false;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// One place: the directory holding the loaded library. Anything found
|
|
58
|
+
// there belongs to this grammar; nothing else is even looked at.
|
|
59
|
+
const baseDirectory = path.dirname(foreignInterface.libPath);
|
|
60
|
+
const extensions = ["", ".js", ".ts"];
|
|
61
|
+
for (const extension of extensions) {
|
|
62
|
+
if (tryLoadModule(path.join(baseDirectory, `procedures${extension}`))) return;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export function ensureDispatchFor(foreignInterface: GalleyFFI, port: FfiPort): void {
|
|
67
|
+
// Option B: auto — if no explicit hooks yet, try to auto-discover procedures.* in language dir
|
|
68
|
+
tryAutoRegister(foreignInterface);
|
|
69
|
+
const useIds =
|
|
70
|
+
foreignInterface.galley_install_js_dispatch_id !== null &&
|
|
71
|
+
typeof port.procedureNames === "function" &&
|
|
72
|
+
port.procedureNames().length > 0;
|
|
73
|
+
if (!useIds && foreignInterface.galley_install_js_dispatch === null) {
|
|
74
|
+
// Library was built for C procedures (no shim); installs will be no-ops.
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (installedFor.has(foreignInterface.libPath)) return;
|
|
78
|
+
if (useIds) {
|
|
79
|
+
installIdDispatch(foreignInterface, port);
|
|
80
|
+
} else {
|
|
81
|
+
installNameDispatch(foreignInterface, port);
|
|
82
|
+
}
|
|
83
|
+
installedFor.add(foreignInterface.libPath);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function installIdDispatch(foreignInterface: GalleyFFI, port: FfiPort): void {
|
|
87
|
+
if (dispatchIdCallback === null) {
|
|
88
|
+
// Integer hook IDs: no string copy or decode on the hot path. The table
|
|
89
|
+
// is fixed per library build; unknown IDs are silent no-ops.
|
|
90
|
+
const table = port.procedureNames();
|
|
91
|
+
const proto = koffi.proto("void DispatchId(uint32_t id, void *args)");
|
|
92
|
+
const cb = koffi.register((id: unknown, argsPtr: unknown) => {
|
|
93
|
+
const name = table[typeof id === "bigint" ? Number(id) : (id as number)];
|
|
94
|
+
if (name === undefined) return;
|
|
95
|
+
let argsAddr: bigint = 0n;
|
|
96
|
+
if (argsPtr !== null && argsPtr !== undefined) {
|
|
97
|
+
try {
|
|
98
|
+
argsAddr = typeof argsPtr === "bigint" ? (argsPtr as bigint) : BigInt(argsPtr as number);
|
|
99
|
+
} catch {
|
|
100
|
+
argsAddr = 0n;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
dispatchProcedure(name, argsAddr, port);
|
|
104
|
+
}, koffi.pointer(proto));
|
|
105
|
+
// Prevent GC — registered callbacks must stay reachable; koffi holds the
|
|
106
|
+
// trampoline, but we keep the address alive as well.
|
|
107
|
+
(globalThis as unknown as Record<string, unknown>).__galley_js_dispatchIdCallback = cb;
|
|
108
|
+
dispatchIdCallback = cb;
|
|
109
|
+
}
|
|
110
|
+
foreignInterface.galley_install_js_dispatch_id!(dispatchIdCallback);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function installNameDispatch(foreignInterface: GalleyFFI, port: FfiPort): void {
|
|
114
|
+
if (dispatchCallback === null) {
|
|
115
|
+
// Create single global dispatcher. Uses registered callback (must persist
|
|
116
|
+
// beyond the installer call, unlike transient callbacks). Signature mirrors
|
|
117
|
+
// Zig: fn([*]const u8, usize, ?*anyopaque) callconv(.c) void — void* for
|
|
118
|
+
// the name pointer keeps it as a raw address with length.
|
|
119
|
+
const proto = koffi.proto("void Dispatch(void *name_ptr, size_t name_len, void *args)");
|
|
120
|
+
const cb = koffi.register((namePtr: unknown, nameLen: unknown, argsPtr: unknown) => {
|
|
121
|
+
let name: string;
|
|
122
|
+
try {
|
|
123
|
+
// Registered callbacks receive pointer values as BigInt (or null).
|
|
124
|
+
const ptrVal: bigint = typeof namePtr === "bigint" ? (namePtr as bigint) : BigInt(namePtr as number);
|
|
125
|
+
const lenVal: bigint | number = typeof nameLen === "bigint" ? (nameLen as bigint) : (nameLen as number);
|
|
126
|
+
name = copyStringBytes(ptrVal as bigint, lenVal as bigint | number);
|
|
127
|
+
} catch (e) {
|
|
128
|
+
console.error("galley procedure dispatch: failed to decode name", e);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
let argsAddr: bigint = 0n;
|
|
132
|
+
if (argsPtr !== null && argsPtr !== undefined) {
|
|
133
|
+
try {
|
|
134
|
+
argsAddr = typeof argsPtr === "bigint" ? (argsPtr as bigint) : BigInt(argsPtr as number);
|
|
135
|
+
} catch {
|
|
136
|
+
argsAddr = 0n;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
dispatchProcedure(name, argsAddr, port);
|
|
140
|
+
}, koffi.pointer(proto));
|
|
141
|
+
// Prevent GC — registered callbacks must stay reachable; koffi holds the
|
|
142
|
+
// trampoline, but we keep the address alive as well.
|
|
143
|
+
(globalThis as unknown as Record<string, unknown>).__galley_js_dispatchCallback = cb;
|
|
144
|
+
dispatchCallback = cb;
|
|
145
|
+
}
|
|
146
|
+
foreignInterface.galley_install_js_dispatch!(dispatchCallback);
|
|
147
|
+
}
|