@gtkx/runtime 0.0.1 → 1.0.0-rc.2
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/LICENSE +373 -0
- package/README.md +171 -3
- package/dist/arg.d.ts +13 -0
- package/dist/arg.d.ts.map +1 -0
- package/dist/arg.js +6 -0
- package/dist/arg.js.map +1 -0
- package/dist/bind.d.ts +5 -0
- package/dist/bind.d.ts.map +1 -0
- package/dist/bind.js +19 -0
- package/dist/bind.js.map +1 -0
- package/dist/callback.d.ts +13 -0
- package/dist/callback.d.ts.map +1 -0
- package/dist/callback.js +86 -0
- package/dist/callback.js.map +1 -0
- package/dist/descriptors.d.ts +158 -0
- package/dist/descriptors.d.ts.map +1 -0
- package/dist/descriptors.js +135 -0
- package/dist/descriptors.js.map +1 -0
- package/dist/error.d.ts +24 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +33 -0
- package/dist/error.js.map +1 -0
- package/dist/exit-hook.d.ts +2 -0
- package/dist/exit-hook.d.ts.map +1 -0
- package/dist/exit-hook.js +3 -0
- package/dist/exit-hook.js.map +1 -0
- package/dist/fn.d.ts +10 -0
- package/dist/fn.d.ts.map +1 -0
- package/dist/fn.js +90 -0
- package/dist/fn.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +5 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +5 -0
- package/dist/internal.js.map +1 -0
- package/dist/library.d.ts +8 -0
- package/dist/library.d.ts.map +1 -0
- package/dist/library.js +14 -0
- package/dist/library.js.map +1 -0
- package/dist/lifecycle.d.ts +42 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +70 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/listeners.d.ts +36 -0
- package/dist/listeners.d.ts.map +1 -0
- package/dist/listeners.js +85 -0
- package/dist/listeners.js.map +1 -0
- package/dist/mixin.d.ts +13 -0
- package/dist/mixin.d.ts.map +1 -0
- package/dist/mixin.js +49 -0
- package/dist/mixin.js.map +1 -0
- package/dist/native-value.d.ts +13 -0
- package/dist/native-value.d.ts.map +1 -0
- package/dist/native-value.js +105 -0
- package/dist/native-value.js.map +1 -0
- package/dist/object.d.ts +32 -0
- package/dist/object.d.ts.map +1 -0
- package/dist/object.js +66 -0
- package/dist/object.js.map +1 -0
- package/dist/promisify.d.ts +21 -0
- package/dist/promisify.d.ts.map +1 -0
- package/dist/promisify.js +39 -0
- package/dist/promisify.js.map +1 -0
- package/dist/properties.d.ts +14 -0
- package/dist/properties.d.ts.map +1 -0
- package/dist/properties.js +79 -0
- package/dist/properties.js.map +1 -0
- package/dist/register-class.d.ts +25 -0
- package/dist/register-class.d.ts.map +1 -0
- package/dist/register-class.js +178 -0
- package/dist/register-class.js.map +1 -0
- package/dist/registry.d.ts +69 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +186 -0
- package/dist/registry.js.map +1 -0
- package/dist/signal.d.ts +35 -0
- package/dist/signal.d.ts.map +1 -0
- package/dist/signal.js +95 -0
- package/dist/signal.js.map +1 -0
- package/dist/t.d.ts +50 -0
- package/dist/t.d.ts.map +1 -0
- package/dist/t.js +49 -0
- package/dist/t.js.map +1 -0
- package/dist/tuple.d.ts +7 -0
- package/dist/tuple.d.ts.map +1 -0
- package/dist/tuple.js +26 -0
- package/dist/tuple.js.map +1 -0
- package/dist/type.d.ts +88 -0
- package/dist/type.d.ts.map +1 -0
- package/dist/type.js +194 -0
- package/dist/type.js.map +1 -0
- package/dist/value.d.ts +29 -0
- package/dist/value.d.ts.map +1 -0
- package/dist/value.js +292 -0
- package/dist/value.js.map +1 -0
- package/package.json +54 -13
- package/src/arg.ts +15 -0
- package/src/bind.ts +31 -0
- package/src/callback.ts +149 -0
- package/src/descriptors.ts +350 -0
- package/src/error.ts +58 -0
- package/src/exit-hook.ts +3 -0
- package/src/fn.ts +139 -0
- package/src/index.ts +59 -0
- package/src/internal.ts +12 -0
- package/src/library.ts +17 -0
- package/src/lifecycle.ts +101 -0
- package/src/listeners.ts +112 -0
- package/src/mixin.ts +73 -0
- package/src/native-value.ts +135 -0
- package/src/object.ts +95 -0
- package/src/promisify.ts +67 -0
- package/src/properties.ts +115 -0
- package/src/register-class.ts +305 -0
- package/src/registry.ts +311 -0
- package/src/signal.ts +192 -0
- package/src/t.ts +90 -0
- package/src/tuple.ts +37 -0
- package/src/type.ts +290 -0
- package/src/value.ts +430 -0
package/dist/callback.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { copy } from "@gtkx/native";
|
|
2
|
+
import { fromNative, toNative } from "./native-value.js";
|
|
3
|
+
import { getHandle } from "./registry.js";
|
|
4
|
+
import { splitTupleResult } from "./tuple.js";
|
|
5
|
+
import { copyValue } from "./value.js";
|
|
6
|
+
const fillCallerAllocatedBuffer = (descriptor, target, source) => {
|
|
7
|
+
if (descriptor.kind === "boxed" && descriptor.typeName === "GValue") {
|
|
8
|
+
copyValue(getHandle(target), getHandle(source));
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
if ((descriptor.kind === "boxed" || descriptor.kind === "struct") && descriptor.size !== undefined) {
|
|
12
|
+
copy(getHandle(target), getHandle(source), descriptor.size);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
throw new Error(`Cannot write caller-allocated ${descriptor.kind} out-parameter: no known byte size`);
|
|
16
|
+
};
|
|
17
|
+
const isCallerAllocatedOut = (descriptor) => (descriptor.kind === "boxed" || descriptor.kind === "struct") && descriptor.callerAllocated === true;
|
|
18
|
+
const collectRefArg = (descriptor, wrappedValue, inputs, outParams) => {
|
|
19
|
+
if (descriptor.inout === true) {
|
|
20
|
+
inputs.push(wrappedValue.value);
|
|
21
|
+
}
|
|
22
|
+
outParams.push({ value: wrappedValue, descriptor });
|
|
23
|
+
};
|
|
24
|
+
const collectCallbackArg = (descriptor, wrappedValue, inputs, outParams) => {
|
|
25
|
+
if (descriptor?.kind === "ref") {
|
|
26
|
+
collectRefArg(descriptor, wrappedValue, inputs, outParams);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
inputs.push(wrappedValue);
|
|
30
|
+
if (descriptor !== undefined && isCallerAllocatedOut(descriptor)) {
|
|
31
|
+
outParams.push({ value: wrappedValue, descriptor });
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const partitionCallbackArgs = (effectiveTypes, wrapped, start) => {
|
|
35
|
+
const inputs = [];
|
|
36
|
+
const outParams = [];
|
|
37
|
+
for (let i = start; i < effectiveTypes.length; i++) {
|
|
38
|
+
collectCallbackArg(effectiveTypes[i], wrapped[i], inputs, outParams);
|
|
39
|
+
}
|
|
40
|
+
return { inputs, outParams };
|
|
41
|
+
};
|
|
42
|
+
const writeOutParams = (outParams, outValues) => {
|
|
43
|
+
for (const [position, outParam] of outParams.entries()) {
|
|
44
|
+
const outValue = outValues[position];
|
|
45
|
+
if (outParam.descriptor.kind === "ref") {
|
|
46
|
+
outParam.value.value = outValue;
|
|
47
|
+
}
|
|
48
|
+
else if (outValue != null && outParam.value != null) {
|
|
49
|
+
fillCallerAllocatedBuffer(outParam.descriptor, outParam.value, outValue);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
const getThisArg = (receiver, wrapped) => receiver === "this" ? (wrapped[0] ?? null) : null;
|
|
54
|
+
const runCallback = (plan, rawArgs) => {
|
|
55
|
+
const { effectiveTypes, returnDescriptor } = plan;
|
|
56
|
+
const wrapped = effectiveTypes.map((descriptor, i) => fromNative(descriptor, rawArgs[i]));
|
|
57
|
+
const thisArg = getThisArg(plan.receiver, wrapped);
|
|
58
|
+
const { inputs, outParams } = partitionCallbackArgs(effectiveTypes, wrapped, plan.start);
|
|
59
|
+
const result = plan.fn.apply(thisArg, inputs);
|
|
60
|
+
if (outParams.length === 0) {
|
|
61
|
+
return toNative(returnDescriptor, result);
|
|
62
|
+
}
|
|
63
|
+
const { primary, outValues } = splitTupleResult(result, returnDescriptor.kind !== "void", outParams.length);
|
|
64
|
+
writeOutParams(outParams, outValues);
|
|
65
|
+
return toNative(returnDescriptor, primary);
|
|
66
|
+
};
|
|
67
|
+
const getEffectiveTypes = (spec) => {
|
|
68
|
+
const { userDataIndex } = spec;
|
|
69
|
+
if (userDataIndex === undefined) {
|
|
70
|
+
return spec.argDescriptors;
|
|
71
|
+
}
|
|
72
|
+
return spec.argDescriptors.filter((_, i) => i !== userDataIndex);
|
|
73
|
+
};
|
|
74
|
+
const wrapCallbackValue = (spec, callback) => callback == null ? callback : wrapCallback(callback, spec, "none");
|
|
75
|
+
function wrapCallback(fn, spec, receiver) {
|
|
76
|
+
const plan = {
|
|
77
|
+
fn,
|
|
78
|
+
effectiveTypes: getEffectiveTypes(spec),
|
|
79
|
+
returnDescriptor: spec.returnDescriptor,
|
|
80
|
+
start: receiver === "none" ? 0 : 1,
|
|
81
|
+
receiver,
|
|
82
|
+
};
|
|
83
|
+
return (...rawArgs) => runCallback(plan, rawArgs);
|
|
84
|
+
}
|
|
85
|
+
export { wrapCallbackValue, wrapCallback };
|
|
86
|
+
//# sourceMappingURL=callback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callback.js","sourceRoot":"","sources":["../src/callback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoBvC,MAAM,yBAAyB,GAAG,CAAC,UAAsB,EAAE,MAAc,EAAE,MAAc,EAAQ,EAAE;IAC/F,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,IAAI,UAAU,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAEhD,OAAO;IACX,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACjG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAE5D,OAAO;IACX,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,CAAC,IAAI,oCAAoC,CAAC,CAAC;AAC1G,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,UAAsB,EAAW,EAAE,CAC7D,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,UAAU,CAAC,eAAe,KAAK,IAAI,CAAC;AAEzG,MAAM,aAAa,GAAG,CAClB,UAAyB,EACzB,YAAqB,EACrB,MAAiB,EACjB,SAAqB,EACjB,EAAE;IACN,IAAI,UAAU,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAE,YAAmC,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CACvB,UAAkC,EAClC,YAAqB,EACrB,MAAiB,EACjB,SAAqB,EACjB,EAAE;IACN,IAAI,UAAU,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;QAC7B,aAAa,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAE3D,OAAO;IACX,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE1B,IAAI,UAAU,KAAK,SAAS,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/D,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;IACxD,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC1B,cAA4B,EAC5B,OAAkB,EAClB,KAAa,EAC+B,EAAE;IAC9C,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAe,EAAE,CAAC;IAEjC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,SAAqB,EAAE,SAAoB,EAAQ,EAAE;IACzE,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAErC,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACpC,QAAQ,CAAC,KAA4B,CAAC,KAAK,GAAG,QAAQ,CAAC;QAC5D,CAAC;aAAM,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YACpD,yBAAyB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,QAA0B,EAAE,OAAkB,EAAW,EAAE,CAC3E,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAEtD,MAAM,WAAW,GAAG,CAAC,IAAkB,EAAE,OAAkB,EAAW,EAAE;IACpE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAClD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAE9C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,KAAK,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5G,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAErC,OAAO,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,IAAkB,EAAgB,EAAE;IAC3D,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAE/B,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC;AACrE,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,IAAwB,EAAE,QAAiB,EAAW,EAAE,CAC/E,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAoB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAEnF,SAAS,YAAY,CAAC,EAAY,EAAE,IAAkB,EAAE,QAA0B;IAC9E,MAAM,IAAI,GAAiB;QACvB,EAAE;QACF,cAAc,EAAE,iBAAiB,CAAC,IAAI,CAAC;QACvC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,KAAK,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,QAAQ;KACX,CAAC;IAEF,OAAO,CAAC,GAAG,OAAkB,EAAW,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC","sourcesContent":["import { copy, type Descriptor } from \"@gtkx/native\";\nimport type { CallbackDescriptor, RefDescriptor } from \"./descriptors.js\";\nimport { fromNative, toNative } from \"./native-value.js\";\nimport { getHandle } from \"./registry.js\";\nimport { splitTupleResult } from \"./tuple.js\";\nimport { copyValue } from \"./value.js\";\n\ntype Callback = (...args: unknown[]) => unknown;\ntype CallbackReceiver = \"this\" | \"emitter\" | \"none\";\ntype OutParam = { value: unknown; descriptor: Descriptor };\n\ntype CallbackSpec = {\n argDescriptors: Descriptor[];\n returnDescriptor: Descriptor;\n userDataIndex?: number;\n};\n\ntype CallbackPlan = {\n fn: Callback;\n effectiveTypes: Descriptor[];\n returnDescriptor: Descriptor;\n start: number;\n receiver: CallbackReceiver;\n};\n\nconst fillCallerAllocatedBuffer = (descriptor: Descriptor, target: object, source: object): void => {\n if (descriptor.kind === \"boxed\" && descriptor.typeName === \"GValue\") {\n copyValue(getHandle(target), getHandle(source));\n\n return;\n }\n\n if ((descriptor.kind === \"boxed\" || descriptor.kind === \"struct\") && descriptor.size !== undefined) {\n copy(getHandle(target), getHandle(source), descriptor.size);\n\n return;\n }\n\n throw new Error(`Cannot write caller-allocated ${descriptor.kind} out-parameter: no known byte size`);\n};\n\nconst isCallerAllocatedOut = (descriptor: Descriptor): boolean =>\n (descriptor.kind === \"boxed\" || descriptor.kind === \"struct\") && descriptor.callerAllocated === true;\n\nconst collectRefArg = (\n descriptor: RefDescriptor,\n wrappedValue: unknown,\n inputs: unknown[],\n outParams: OutParam[],\n): void => {\n if (descriptor.inout === true) {\n inputs.push((wrappedValue as { value: unknown }).value);\n }\n\n outParams.push({ value: wrappedValue, descriptor });\n};\n\nconst collectCallbackArg = (\n descriptor: Descriptor | undefined,\n wrappedValue: unknown,\n inputs: unknown[],\n outParams: OutParam[],\n): void => {\n if (descriptor?.kind === \"ref\") {\n collectRefArg(descriptor, wrappedValue, inputs, outParams);\n\n return;\n }\n\n inputs.push(wrappedValue);\n\n if (descriptor !== undefined && isCallerAllocatedOut(descriptor)) {\n outParams.push({ value: wrappedValue, descriptor });\n }\n};\n\nconst partitionCallbackArgs = (\n effectiveTypes: Descriptor[],\n wrapped: unknown[],\n start: number,\n): { inputs: unknown[]; outParams: OutParam[] } => {\n const inputs: unknown[] = [];\n const outParams: OutParam[] = [];\n\n for (let i = start; i < effectiveTypes.length; i++) {\n collectCallbackArg(effectiveTypes[i], wrapped[i], inputs, outParams);\n }\n\n return { inputs, outParams };\n};\n\nconst writeOutParams = (outParams: OutParam[], outValues: unknown[]): void => {\n for (const [position, outParam] of outParams.entries()) {\n const outValue = outValues[position];\n\n if (outParam.descriptor.kind === \"ref\") {\n (outParam.value as { value: unknown }).value = outValue;\n } else if (outValue != null && outParam.value != null) {\n fillCallerAllocatedBuffer(outParam.descriptor, outParam.value, outValue);\n }\n }\n};\n\nconst getThisArg = (receiver: CallbackReceiver, wrapped: unknown[]): unknown =>\n receiver === \"this\" ? (wrapped[0] ?? null) : null;\n\nconst runCallback = (plan: CallbackPlan, rawArgs: unknown[]): unknown => {\n const { effectiveTypes, returnDescriptor } = plan;\n const wrapped = effectiveTypes.map((descriptor, i) => fromNative(descriptor, rawArgs[i]));\n const thisArg = getThisArg(plan.receiver, wrapped);\n const { inputs, outParams } = partitionCallbackArgs(effectiveTypes, wrapped, plan.start);\n const result = plan.fn.apply(thisArg, inputs);\n\n if (outParams.length === 0) {\n return toNative(returnDescriptor, result);\n }\n\n const { primary, outValues } = splitTupleResult(result, returnDescriptor.kind !== \"void\", outParams.length);\n writeOutParams(outParams, outValues);\n\n return toNative(returnDescriptor, primary);\n};\n\nconst getEffectiveTypes = (spec: CallbackSpec): Descriptor[] => {\n const { userDataIndex } = spec;\n\n if (userDataIndex === undefined) {\n return spec.argDescriptors;\n }\n\n return spec.argDescriptors.filter((_, i) => i !== userDataIndex);\n};\n\nconst wrapCallbackValue = (spec: CallbackDescriptor, callback: unknown): unknown =>\n callback == null ? callback : wrapCallback(callback as Callback, spec, \"none\");\n\nfunction wrapCallback(fn: Callback, spec: CallbackSpec, receiver: CallbackReceiver): Callback {\n const plan: CallbackPlan = {\n fn,\n effectiveTypes: getEffectiveTypes(spec),\n returnDescriptor: spec.returnDescriptor,\n start: receiver === \"none\" ? 0 : 1,\n receiver,\n };\n\n return (...rawArgs: unknown[]): unknown => runCallback(plan, rawArgs);\n}\n\nexport { wrapCallbackValue, wrapCallback };\n"]}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import type { ArrayKind, Descriptor, Ownership } from "@gtkx/native";
|
|
2
|
+
import type { AnyClass } from "@gtkx/utils";
|
|
3
|
+
type Int8Descriptor = Extract<Descriptor, {
|
|
4
|
+
kind: "int8";
|
|
5
|
+
}>;
|
|
6
|
+
type Uint8Descriptor = Extract<Descriptor, {
|
|
7
|
+
kind: "uint8";
|
|
8
|
+
}>;
|
|
9
|
+
type Int16Descriptor = Extract<Descriptor, {
|
|
10
|
+
kind: "int16";
|
|
11
|
+
}>;
|
|
12
|
+
type Uint16Descriptor = Extract<Descriptor, {
|
|
13
|
+
kind: "uint16";
|
|
14
|
+
}>;
|
|
15
|
+
type Int32Descriptor = Extract<Descriptor, {
|
|
16
|
+
kind: "int32";
|
|
17
|
+
}>;
|
|
18
|
+
type Uint32Descriptor = Extract<Descriptor, {
|
|
19
|
+
kind: "uint32";
|
|
20
|
+
}>;
|
|
21
|
+
type Int64Descriptor = Extract<Descriptor, {
|
|
22
|
+
kind: "int64";
|
|
23
|
+
}>;
|
|
24
|
+
type Uint64Descriptor = Extract<Descriptor, {
|
|
25
|
+
kind: "uint64";
|
|
26
|
+
}>;
|
|
27
|
+
type BigInt64Descriptor = Extract<Descriptor, {
|
|
28
|
+
kind: "bigint64";
|
|
29
|
+
}>;
|
|
30
|
+
type BigUint64Descriptor = Extract<Descriptor, {
|
|
31
|
+
kind: "biguint64";
|
|
32
|
+
}>;
|
|
33
|
+
type Float32Descriptor = Extract<Descriptor, {
|
|
34
|
+
kind: "float32";
|
|
35
|
+
}>;
|
|
36
|
+
type Float64Descriptor = Extract<Descriptor, {
|
|
37
|
+
kind: "float64";
|
|
38
|
+
}>;
|
|
39
|
+
type EnumDescriptor = Extract<Descriptor, {
|
|
40
|
+
kind: "enum";
|
|
41
|
+
}>;
|
|
42
|
+
type FlagsDescriptor = Extract<Descriptor, {
|
|
43
|
+
kind: "flags";
|
|
44
|
+
}>;
|
|
45
|
+
type BooleanDescriptor = Extract<Descriptor, {
|
|
46
|
+
kind: "boolean";
|
|
47
|
+
}>;
|
|
48
|
+
type StringDescriptor = Extract<Descriptor, {
|
|
49
|
+
kind: "string";
|
|
50
|
+
}>;
|
|
51
|
+
type ObjectDescriptor = Extract<Descriptor, {
|
|
52
|
+
kind: "object";
|
|
53
|
+
}>;
|
|
54
|
+
type UnicharDescriptor = Extract<Descriptor, {
|
|
55
|
+
kind: "unichar";
|
|
56
|
+
}>;
|
|
57
|
+
type VoidDescriptor = Extract<Descriptor, {
|
|
58
|
+
kind: "void";
|
|
59
|
+
}>;
|
|
60
|
+
type BufferDescriptor = Extract<Descriptor, {
|
|
61
|
+
kind: "buffer";
|
|
62
|
+
}>;
|
|
63
|
+
type BoxedDescriptor = Extract<Descriptor, {
|
|
64
|
+
kind: "boxed";
|
|
65
|
+
}>;
|
|
66
|
+
type StructDescriptor = Extract<Descriptor, {
|
|
67
|
+
kind: "struct";
|
|
68
|
+
}> & {
|
|
69
|
+
wrapperClass?: AnyClass;
|
|
70
|
+
};
|
|
71
|
+
type FundamentalDescriptor = Extract<Descriptor, {
|
|
72
|
+
kind: "fundamental";
|
|
73
|
+
}> & {
|
|
74
|
+
wrapperClass?: AnyClass;
|
|
75
|
+
};
|
|
76
|
+
type ArrayDescriptor = Extract<Descriptor, {
|
|
77
|
+
kind: "array";
|
|
78
|
+
}>;
|
|
79
|
+
type HashTableDescriptor = Extract<Descriptor, {
|
|
80
|
+
kind: "hashtable";
|
|
81
|
+
}>;
|
|
82
|
+
type CallbackDescriptor = Extract<Descriptor, {
|
|
83
|
+
kind: "callback";
|
|
84
|
+
}>;
|
|
85
|
+
type RefDescriptor = Extract<Descriptor, {
|
|
86
|
+
kind: "ref";
|
|
87
|
+
}>;
|
|
88
|
+
type TypeDescriptor = BigUint64Descriptor & {
|
|
89
|
+
type: true;
|
|
90
|
+
};
|
|
91
|
+
type BoxedOptions = {
|
|
92
|
+
callerAllocated?: boolean;
|
|
93
|
+
inline?: boolean;
|
|
94
|
+
ownership?: Ownership;
|
|
95
|
+
sharedLibrary?: string;
|
|
96
|
+
getTypeFnName?: string;
|
|
97
|
+
freeFnName?: string;
|
|
98
|
+
size?: number;
|
|
99
|
+
};
|
|
100
|
+
type CallbackOptions = {
|
|
101
|
+
hasDestroy?: boolean;
|
|
102
|
+
userDataIndex?: number;
|
|
103
|
+
scope?: CallbackDescriptor["scope"];
|
|
104
|
+
};
|
|
105
|
+
type ArrayOptions = {
|
|
106
|
+
elementSize?: number | undefined;
|
|
107
|
+
sizeParamIndex?: number | undefined;
|
|
108
|
+
fixedSize?: number | undefined;
|
|
109
|
+
};
|
|
110
|
+
type FundamentalOptions = {
|
|
111
|
+
ownership?: Ownership;
|
|
112
|
+
typeName?: string;
|
|
113
|
+
wrapperClass?: AnyClass;
|
|
114
|
+
inline?: boolean;
|
|
115
|
+
};
|
|
116
|
+
type StructOptions = {
|
|
117
|
+
callerAllocated?: boolean;
|
|
118
|
+
inline?: boolean;
|
|
119
|
+
size?: number;
|
|
120
|
+
wrapperClass?: AnyClass;
|
|
121
|
+
};
|
|
122
|
+
declare const int8T: Int8Descriptor;
|
|
123
|
+
declare const uint8T: Uint8Descriptor;
|
|
124
|
+
declare const int16T: Int16Descriptor;
|
|
125
|
+
declare const uint16T: Uint16Descriptor;
|
|
126
|
+
declare const int32T: Int32Descriptor;
|
|
127
|
+
declare const uint32T: Uint32Descriptor;
|
|
128
|
+
declare const int64T: Int64Descriptor;
|
|
129
|
+
declare const uint64T: Uint64Descriptor;
|
|
130
|
+
declare const bigint64T: BigInt64Descriptor;
|
|
131
|
+
declare const biguint64T: BigUint64Descriptor;
|
|
132
|
+
declare const gtypeT: TypeDescriptor;
|
|
133
|
+
declare const float32T: Float32Descriptor;
|
|
134
|
+
declare const float64T: Float64Descriptor;
|
|
135
|
+
declare const booleanT: BooleanDescriptor;
|
|
136
|
+
declare const voidT: VoidDescriptor;
|
|
137
|
+
declare const unicharT: UnicharDescriptor;
|
|
138
|
+
declare const bufferT: BufferDescriptor;
|
|
139
|
+
declare const stringT: (ownership?: Ownership, length?: number) => StringDescriptor;
|
|
140
|
+
declare const objectT: (ownership?: Ownership) => ObjectDescriptor;
|
|
141
|
+
declare const refT: (innerDescriptor: Descriptor, isInout?: boolean) => RefDescriptor;
|
|
142
|
+
declare const hashTableT: (keyDescriptor: Descriptor, valueDescriptor: Descriptor, ownership?: Ownership) => HashTableDescriptor;
|
|
143
|
+
declare const enumT: (sharedLibrary: string, typeFnName: string, isSigned: boolean) => EnumDescriptor;
|
|
144
|
+
declare const flagsT: (sharedLibrary: string, typeFnName: string, isSigned: boolean) => FlagsDescriptor;
|
|
145
|
+
declare const boxedT: (typeName: string, options?: BoxedOptions) => BoxedDescriptor;
|
|
146
|
+
declare const structT: (ownership?: Ownership, options?: StructOptions) => StructDescriptor;
|
|
147
|
+
declare const fundamentalT: (sharedLibrary: string, refFnName: string, unrefFnName: string, options?: FundamentalOptions) => FundamentalDescriptor;
|
|
148
|
+
declare const arrayT: (itemDescriptor: Descriptor, arrayKind?: ArrayKind, ownership?: Ownership, options?: ArrayOptions) => ArrayDescriptor;
|
|
149
|
+
declare const listT: (itemDescriptor: Descriptor, ownership?: Ownership) => ArrayDescriptor;
|
|
150
|
+
declare const slistT: (itemDescriptor: Descriptor, ownership?: Ownership) => ArrayDescriptor;
|
|
151
|
+
declare const ptrArrayT: (itemDescriptor: Descriptor, ownership?: Ownership) => ArrayDescriptor;
|
|
152
|
+
declare const gArrayT: (itemDescriptor: Descriptor, ownership?: Ownership, elementSize?: number) => ArrayDescriptor;
|
|
153
|
+
declare const byteArrayT: (ownership?: Ownership) => ArrayDescriptor;
|
|
154
|
+
declare const sizedArrayT: (itemDescriptor: Descriptor, sizeParamIndex: number, ownership?: Ownership, elementSize?: number) => ArrayDescriptor;
|
|
155
|
+
declare const fixedArrayT: (itemDescriptor: Descriptor, fixedSize: number, ownership?: Ownership, elementSize?: number) => ArrayDescriptor;
|
|
156
|
+
declare const callbackT: (argDescriptors: Descriptor[], returnDescriptor: Descriptor, options?: CallbackOptions) => CallbackDescriptor;
|
|
157
|
+
export { int8T, uint8T, int16T, uint16T, int32T, uint32T, int64T, uint64T, bigint64T, biguint64T, gtypeT, float32T, float64T, booleanT, voidT, unicharT, bufferT, stringT, objectT, refT, hashTableT, enumT, flagsT, boxedT, structT, fundamentalT, arrayT, listT, slistT, ptrArrayT, gArrayT, byteArrayT, sizedArrayT, fixedArrayT, callbackT, type Int8Descriptor, type Uint8Descriptor, type Int16Descriptor, type Uint16Descriptor, type Int32Descriptor, type Uint32Descriptor, type Int64Descriptor, type Uint64Descriptor, type BigInt64Descriptor, type BigUint64Descriptor, type Float32Descriptor, type Float64Descriptor, type EnumDescriptor, type FlagsDescriptor, type BooleanDescriptor, type StringDescriptor, type ObjectDescriptor, type UnicharDescriptor, type VoidDescriptor, type BufferDescriptor, type BoxedDescriptor, type StructDescriptor, type FundamentalDescriptor, type ArrayDescriptor, type HashTableDescriptor, type CallbackDescriptor, type RefDescriptor, type TypeDescriptor, };
|
|
158
|
+
//# sourceMappingURL=descriptors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptors.d.ts","sourceRoot":"","sources":["../src/descriptors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
const int8T = { kind: "int8" };
|
|
2
|
+
const uint8T = { kind: "uint8" };
|
|
3
|
+
const int16T = { kind: "int16" };
|
|
4
|
+
const uint16T = { kind: "uint16" };
|
|
5
|
+
const int32T = { kind: "int32" };
|
|
6
|
+
const uint32T = { kind: "uint32" };
|
|
7
|
+
const int64T = { kind: "int64" };
|
|
8
|
+
const uint64T = { kind: "uint64" };
|
|
9
|
+
const bigint64T = { kind: "bigint64" };
|
|
10
|
+
const biguint64T = { kind: "biguint64" };
|
|
11
|
+
const gtypeT = { kind: "biguint64", type: true };
|
|
12
|
+
const float32T = { kind: "float32" };
|
|
13
|
+
const float64T = { kind: "float64" };
|
|
14
|
+
const booleanT = { kind: "boolean" };
|
|
15
|
+
const voidT = { kind: "void" };
|
|
16
|
+
const unicharT = { kind: "unichar" };
|
|
17
|
+
const bufferT = { kind: "buffer" };
|
|
18
|
+
const stringT = (ownership = "borrowed", length) => length === undefined ? { kind: "string", ownership } : { kind: "string", ownership, length };
|
|
19
|
+
const objectT = (ownership = "borrowed") => ({ kind: "object", ownership });
|
|
20
|
+
const refT = (innerDescriptor, isInout = false) => isInout ? { kind: "ref", innerDescriptor, inout: true } : { kind: "ref", innerDescriptor };
|
|
21
|
+
const hashTableT = (keyDescriptor, valueDescriptor, ownership = "borrowed") => ({
|
|
22
|
+
kind: "hashtable",
|
|
23
|
+
keyDescriptor,
|
|
24
|
+
valueDescriptor,
|
|
25
|
+
ownership,
|
|
26
|
+
});
|
|
27
|
+
const enumT = (sharedLibrary, typeFnName, isSigned) => ({
|
|
28
|
+
kind: "enum",
|
|
29
|
+
sharedLibrary,
|
|
30
|
+
getTypeFnName: typeFnName,
|
|
31
|
+
signed: isSigned,
|
|
32
|
+
});
|
|
33
|
+
const flagsT = (sharedLibrary, typeFnName, isSigned) => ({
|
|
34
|
+
kind: "flags",
|
|
35
|
+
sharedLibrary,
|
|
36
|
+
getTypeFnName: typeFnName,
|
|
37
|
+
signed: isSigned,
|
|
38
|
+
});
|
|
39
|
+
const applyBoxedNames = (result, options) => {
|
|
40
|
+
if (options.sharedLibrary !== undefined) {
|
|
41
|
+
result.sharedLibrary = options.sharedLibrary;
|
|
42
|
+
}
|
|
43
|
+
if (options.getTypeFnName !== undefined) {
|
|
44
|
+
result.getTypeFnName = options.getTypeFnName;
|
|
45
|
+
}
|
|
46
|
+
if (options.freeFnName !== undefined) {
|
|
47
|
+
result.freeFnName = options.freeFnName;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const applyBoxedOptions = (result, options) => {
|
|
51
|
+
applyBoxedNames(result, options);
|
|
52
|
+
if (options.callerAllocated) {
|
|
53
|
+
result.callerAllocated = true;
|
|
54
|
+
}
|
|
55
|
+
if (options.inline) {
|
|
56
|
+
result.inline = true;
|
|
57
|
+
}
|
|
58
|
+
if (options.size !== undefined) {
|
|
59
|
+
result.size = options.size;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
const boxedT = (typeName, options = {}) => {
|
|
63
|
+
const result = {
|
|
64
|
+
kind: "boxed",
|
|
65
|
+
ownership: options.ownership ?? "borrowed",
|
|
66
|
+
typeName,
|
|
67
|
+
};
|
|
68
|
+
applyBoxedOptions(result, options);
|
|
69
|
+
return result;
|
|
70
|
+
};
|
|
71
|
+
const structT = (ownership = "borrowed", options = {}) => {
|
|
72
|
+
const result = { kind: "struct", ownership };
|
|
73
|
+
if (options.size !== undefined) {
|
|
74
|
+
result.size = options.size;
|
|
75
|
+
}
|
|
76
|
+
if (options.wrapperClass !== undefined) {
|
|
77
|
+
result.wrapperClass = options.wrapperClass;
|
|
78
|
+
}
|
|
79
|
+
if (options.callerAllocated) {
|
|
80
|
+
result.callerAllocated = true;
|
|
81
|
+
}
|
|
82
|
+
if (options.inline) {
|
|
83
|
+
result.inline = true;
|
|
84
|
+
}
|
|
85
|
+
return result;
|
|
86
|
+
};
|
|
87
|
+
const fundamentalT = (sharedLibrary, refFnName, unrefFnName, options = {}) => {
|
|
88
|
+
const ownership = options.ownership ?? "borrowed";
|
|
89
|
+
const result = { kind: "fundamental", ownership, sharedLibrary, refFnName, unrefFnName };
|
|
90
|
+
if (options.typeName !== undefined) {
|
|
91
|
+
result.typeName = options.typeName;
|
|
92
|
+
}
|
|
93
|
+
if (options.wrapperClass !== undefined) {
|
|
94
|
+
result.wrapperClass = options.wrapperClass;
|
|
95
|
+
}
|
|
96
|
+
if (options.inline) {
|
|
97
|
+
result.inline = true;
|
|
98
|
+
}
|
|
99
|
+
return result;
|
|
100
|
+
};
|
|
101
|
+
const arrayT = (itemDescriptor, arrayKind = "array", ownership = "borrowed", options) => {
|
|
102
|
+
const result = { kind: "array", itemDescriptor, arrayKind, ownership };
|
|
103
|
+
if (options?.elementSize !== undefined) {
|
|
104
|
+
result.elementSize = options.elementSize;
|
|
105
|
+
}
|
|
106
|
+
if (options?.sizeParamIndex !== undefined) {
|
|
107
|
+
result.sizeParamIndex = options.sizeParamIndex;
|
|
108
|
+
}
|
|
109
|
+
if (options?.fixedSize !== undefined) {
|
|
110
|
+
result.fixedSize = options.fixedSize;
|
|
111
|
+
}
|
|
112
|
+
return result;
|
|
113
|
+
};
|
|
114
|
+
const listT = (itemDescriptor, ownership = "borrowed") => arrayT(itemDescriptor, "glist", ownership);
|
|
115
|
+
const slistT = (itemDescriptor, ownership = "borrowed") => arrayT(itemDescriptor, "gslist", ownership);
|
|
116
|
+
const ptrArrayT = (itemDescriptor, ownership = "borrowed") => arrayT(itemDescriptor, "gptrarray", ownership);
|
|
117
|
+
const gArrayT = (itemDescriptor, ownership = "borrowed", elementSize) => arrayT(itemDescriptor, "garray", ownership, elementSize === undefined ? undefined : { elementSize });
|
|
118
|
+
const byteArrayT = (ownership = "borrowed") => arrayT(uint8T, "gbytearray", ownership);
|
|
119
|
+
const sizedArrayT = (itemDescriptor, sizeParamIndex, ownership = "borrowed", elementSize) => arrayT(itemDescriptor, "sized", ownership, { sizeParamIndex, elementSize });
|
|
120
|
+
const fixedArrayT = (itemDescriptor, fixedSize, ownership = "borrowed", elementSize) => arrayT(itemDescriptor, "fixed", ownership, { fixedSize, elementSize });
|
|
121
|
+
const callbackT = (argDescriptors, returnDescriptor, options) => {
|
|
122
|
+
const result = { kind: "callback", argDescriptors, returnDescriptor };
|
|
123
|
+
if (options?.hasDestroy !== undefined) {
|
|
124
|
+
result.hasDestroy = options.hasDestroy;
|
|
125
|
+
}
|
|
126
|
+
if (options?.userDataIndex !== undefined) {
|
|
127
|
+
result.userDataIndex = options.userDataIndex;
|
|
128
|
+
}
|
|
129
|
+
if (options?.scope !== undefined) {
|
|
130
|
+
result.scope = options.scope;
|
|
131
|
+
}
|
|
132
|
+
return result;
|
|
133
|
+
};
|
|
134
|
+
export { int8T, uint8T, int16T, uint16T, int32T, uint32T, int64T, uint64T, bigint64T, biguint64T, gtypeT, float32T, float64T, booleanT, voidT, unicharT, bufferT, stringT, objectT, refT, hashTableT, enumT, flagsT, boxedT, structT, fundamentalT, arrayT, listT, slistT, ptrArrayT, gArrayT, byteArrayT, sizedArrayT, fixedArrayT, callbackT, };
|
|
135
|
+
//# sourceMappingURL=descriptors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptors.js","sourceRoot":"","sources":["../src/descriptors.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ArrayKind, Descriptor, Ownership } from \"@gtkx/native\";\nimport type { AnyClass } from \"@gtkx/utils\";\n\ntype Int8Descriptor = Extract<Descriptor, { kind: \"int8\" }>;\ntype Uint8Descriptor = Extract<Descriptor, { kind: \"uint8\" }>;\ntype Int16Descriptor = Extract<Descriptor, { kind: \"int16\" }>;\ntype Uint16Descriptor = Extract<Descriptor, { kind: \"uint16\" }>;\ntype Int32Descriptor = Extract<Descriptor, { kind: \"int32\" }>;\ntype Uint32Descriptor = Extract<Descriptor, { kind: \"uint32\" }>;\ntype Int64Descriptor = Extract<Descriptor, { kind: \"int64\" }>;\ntype Uint64Descriptor = Extract<Descriptor, { kind: \"uint64\" }>;\ntype BigInt64Descriptor = Extract<Descriptor, { kind: \"bigint64\" }>;\ntype BigUint64Descriptor = Extract<Descriptor, { kind: \"biguint64\" }>;\ntype Float32Descriptor = Extract<Descriptor, { kind: \"float32\" }>;\ntype Float64Descriptor = Extract<Descriptor, { kind: \"float64\" }>;\ntype EnumDescriptor = Extract<Descriptor, { kind: \"enum\" }>;\ntype FlagsDescriptor = Extract<Descriptor, { kind: \"flags\" }>;\ntype BooleanDescriptor = Extract<Descriptor, { kind: \"boolean\" }>;\ntype StringDescriptor = Extract<Descriptor, { kind: \"string\" }>;\ntype ObjectDescriptor = Extract<Descriptor, { kind: \"object\" }>;\ntype UnicharDescriptor = Extract<Descriptor, { kind: \"unichar\" }>;\ntype VoidDescriptor = Extract<Descriptor, { kind: \"void\" }>;\ntype BufferDescriptor = Extract<Descriptor, { kind: \"buffer\" }>;\ntype BoxedDescriptor = Extract<Descriptor, { kind: \"boxed\" }>;\ntype StructDescriptor = Extract<Descriptor, { kind: \"struct\" }> & { wrapperClass?: AnyClass };\ntype FundamentalDescriptor = Extract<Descriptor, { kind: \"fundamental\" }> & { wrapperClass?: AnyClass };\ntype ArrayDescriptor = Extract<Descriptor, { kind: \"array\" }>;\ntype HashTableDescriptor = Extract<Descriptor, { kind: \"hashtable\" }>;\ntype CallbackDescriptor = Extract<Descriptor, { kind: \"callback\" }>;\ntype RefDescriptor = Extract<Descriptor, { kind: \"ref\" }>;\ntype TypeDescriptor = BigUint64Descriptor & { type: true };\n\ntype BoxedOptions = {\n callerAllocated?: boolean;\n inline?: boolean;\n ownership?: Ownership;\n sharedLibrary?: string;\n getTypeFnName?: string;\n freeFnName?: string;\n size?: number;\n};\n\ntype CallbackOptions = {\n hasDestroy?: boolean;\n userDataIndex?: number;\n scope?: CallbackDescriptor[\"scope\"];\n};\n\ntype ArrayOptions = {\n elementSize?: number | undefined;\n sizeParamIndex?: number | undefined;\n fixedSize?: number | undefined;\n};\n\ntype FundamentalOptions = {\n ownership?: Ownership;\n typeName?: string;\n wrapperClass?: AnyClass;\n inline?: boolean;\n};\n\ntype StructOptions = {\n callerAllocated?: boolean;\n inline?: boolean;\n size?: number;\n wrapperClass?: AnyClass;\n};\n\nconst int8T: Int8Descriptor = { kind: \"int8\" };\nconst uint8T: Uint8Descriptor = { kind: \"uint8\" };\nconst int16T: Int16Descriptor = { kind: \"int16\" };\nconst uint16T: Uint16Descriptor = { kind: \"uint16\" };\nconst int32T: Int32Descriptor = { kind: \"int32\" };\nconst uint32T: Uint32Descriptor = { kind: \"uint32\" };\nconst int64T: Int64Descriptor = { kind: \"int64\" };\nconst uint64T: Uint64Descriptor = { kind: \"uint64\" };\nconst bigint64T: BigInt64Descriptor = { kind: \"bigint64\" };\nconst biguint64T: BigUint64Descriptor = { kind: \"biguint64\" };\nconst gtypeT: TypeDescriptor = { kind: \"biguint64\", type: true };\nconst float32T: Float32Descriptor = { kind: \"float32\" };\nconst float64T: Float64Descriptor = { kind: \"float64\" };\nconst booleanT: BooleanDescriptor = { kind: \"boolean\" };\nconst voidT: VoidDescriptor = { kind: \"void\" };\nconst unicharT: UnicharDescriptor = { kind: \"unichar\" };\nconst bufferT: BufferDescriptor = { kind: \"buffer\" };\n\nconst stringT = (ownership: Ownership = \"borrowed\", length?: number): StringDescriptor =>\n length === undefined ? { kind: \"string\", ownership } : { kind: \"string\", ownership, length };\n\nconst objectT = (ownership: Ownership = \"borrowed\"): ObjectDescriptor => ({ kind: \"object\", ownership });\n\nconst refT = (innerDescriptor: Descriptor, isInout = false): RefDescriptor =>\n isInout ? { kind: \"ref\", innerDescriptor, inout: true } : { kind: \"ref\", innerDescriptor };\n\nconst hashTableT = (\n keyDescriptor: Descriptor,\n valueDescriptor: Descriptor,\n ownership: Ownership = \"borrowed\",\n): HashTableDescriptor => ({\n kind: \"hashtable\",\n keyDescriptor,\n valueDescriptor,\n ownership,\n});\n\nconst enumT = (sharedLibrary: string, typeFnName: string, isSigned: boolean): EnumDescriptor => ({\n kind: \"enum\",\n sharedLibrary,\n getTypeFnName: typeFnName,\n signed: isSigned,\n});\n\nconst flagsT = (sharedLibrary: string, typeFnName: string, isSigned: boolean): FlagsDescriptor => ({\n kind: \"flags\",\n sharedLibrary,\n getTypeFnName: typeFnName,\n signed: isSigned,\n});\n\nconst applyBoxedNames = (result: BoxedDescriptor, options: BoxedOptions): void => {\n if (options.sharedLibrary !== undefined) {\n result.sharedLibrary = options.sharedLibrary;\n }\n\n if (options.getTypeFnName !== undefined) {\n result.getTypeFnName = options.getTypeFnName;\n }\n\n if (options.freeFnName !== undefined) {\n result.freeFnName = options.freeFnName;\n }\n};\n\nconst applyBoxedOptions = (result: BoxedDescriptor, options: BoxedOptions): void => {\n applyBoxedNames(result, options);\n\n if (options.callerAllocated) {\n result.callerAllocated = true;\n }\n\n if (options.inline) {\n result.inline = true;\n }\n\n if (options.size !== undefined) {\n result.size = options.size;\n }\n};\n\nconst boxedT = (typeName: string, options: BoxedOptions = {}): BoxedDescriptor => {\n const result: BoxedDescriptor = {\n kind: \"boxed\",\n ownership: options.ownership ?? \"borrowed\",\n typeName,\n };\n\n applyBoxedOptions(result, options);\n\n return result;\n};\n\nconst structT = (ownership: Ownership = \"borrowed\", options: StructOptions = {}): StructDescriptor => {\n const result: StructDescriptor = { kind: \"struct\", ownership };\n\n if (options.size !== undefined) {\n result.size = options.size;\n }\n\n if (options.wrapperClass !== undefined) {\n result.wrapperClass = options.wrapperClass;\n }\n\n if (options.callerAllocated) {\n result.callerAllocated = true;\n }\n\n if (options.inline) {\n result.inline = true;\n }\n\n return result;\n};\n\nconst fundamentalT = (\n sharedLibrary: string,\n refFnName: string,\n unrefFnName: string,\n options: FundamentalOptions = {},\n): FundamentalDescriptor => {\n const ownership = options.ownership ?? \"borrowed\";\n const result: FundamentalDescriptor = { kind: \"fundamental\", ownership, sharedLibrary, refFnName, unrefFnName };\n\n if (options.typeName !== undefined) {\n result.typeName = options.typeName;\n }\n\n if (options.wrapperClass !== undefined) {\n result.wrapperClass = options.wrapperClass;\n }\n\n if (options.inline) {\n result.inline = true;\n }\n\n return result;\n};\n\nconst arrayT = (\n itemDescriptor: Descriptor,\n arrayKind: ArrayKind = \"array\",\n ownership: Ownership = \"borrowed\",\n options?: ArrayOptions,\n): ArrayDescriptor => {\n const result: ArrayDescriptor = { kind: \"array\", itemDescriptor, arrayKind, ownership };\n\n if (options?.elementSize !== undefined) {\n result.elementSize = options.elementSize;\n }\n\n if (options?.sizeParamIndex !== undefined) {\n result.sizeParamIndex = options.sizeParamIndex;\n }\n\n if (options?.fixedSize !== undefined) {\n result.fixedSize = options.fixedSize;\n }\n\n return result;\n};\n\nconst listT = (itemDescriptor: Descriptor, ownership: Ownership = \"borrowed\"): ArrayDescriptor =>\n arrayT(itemDescriptor, \"glist\", ownership);\n\nconst slistT = (itemDescriptor: Descriptor, ownership: Ownership = \"borrowed\"): ArrayDescriptor =>\n arrayT(itemDescriptor, \"gslist\", ownership);\n\nconst ptrArrayT = (itemDescriptor: Descriptor, ownership: Ownership = \"borrowed\"): ArrayDescriptor =>\n arrayT(itemDescriptor, \"gptrarray\", ownership);\n\nconst gArrayT = (\n itemDescriptor: Descriptor,\n ownership: Ownership = \"borrowed\",\n elementSize?: number,\n): ArrayDescriptor =>\n arrayT(itemDescriptor, \"garray\", ownership, elementSize === undefined ? undefined : { elementSize });\n\nconst byteArrayT = (ownership: Ownership = \"borrowed\"): ArrayDescriptor =>\n arrayT(uint8T, \"gbytearray\", ownership);\n\nconst sizedArrayT = (\n itemDescriptor: Descriptor,\n sizeParamIndex: number,\n ownership: Ownership = \"borrowed\",\n elementSize?: number,\n): ArrayDescriptor => arrayT(itemDescriptor, \"sized\", ownership, { sizeParamIndex, elementSize });\n\nconst fixedArrayT = (\n itemDescriptor: Descriptor,\n fixedSize: number,\n ownership: Ownership = \"borrowed\",\n elementSize?: number,\n): ArrayDescriptor => arrayT(itemDescriptor, \"fixed\", ownership, { fixedSize, elementSize });\n\nconst callbackT = (\n argDescriptors: Descriptor[],\n returnDescriptor: Descriptor,\n options?: CallbackOptions,\n): CallbackDescriptor => {\n const result: CallbackDescriptor = { kind: \"callback\", argDescriptors, returnDescriptor };\n\n if (options?.hasDestroy !== undefined) {\n result.hasDestroy = options.hasDestroy;\n }\n\n if (options?.userDataIndex !== undefined) {\n result.userDataIndex = options.userDataIndex;\n }\n\n if (options?.scope !== undefined) {\n result.scope = options.scope;\n }\n\n return result;\n};\n\nexport {\n int8T,\n uint8T,\n int16T,\n uint16T,\n int32T,\n uint32T,\n int64T,\n uint64T,\n bigint64T,\n biguint64T,\n gtypeT,\n float32T,\n float64T,\n booleanT,\n voidT,\n unicharT,\n bufferT,\n stringT,\n objectT,\n refT,\n hashTableT,\n enumT,\n flagsT,\n boxedT,\n structT,\n fundamentalT,\n arrayT,\n listT,\n slistT,\n ptrArrayT,\n gArrayT,\n byteArrayT,\n sizedArrayT,\n fixedArrayT,\n callbackT,\n type Int8Descriptor,\n type Uint8Descriptor,\n type Int16Descriptor,\n type Uint16Descriptor,\n type Int32Descriptor,\n type Uint32Descriptor,\n type Int64Descriptor,\n type Uint64Descriptor,\n type BigInt64Descriptor,\n type BigUint64Descriptor,\n type Float32Descriptor,\n type Float64Descriptor,\n type EnumDescriptor,\n type FlagsDescriptor,\n type BooleanDescriptor,\n type StringDescriptor,\n type ObjectDescriptor,\n type UnicharDescriptor,\n type VoidDescriptor,\n type BufferDescriptor,\n type BoxedDescriptor,\n type StructDescriptor,\n type FundamentalDescriptor,\n type ArrayDescriptor,\n type HashTableDescriptor,\n type CallbackDescriptor,\n type RefDescriptor,\n type TypeDescriptor,\n};\n"]}
|
package/dist/error.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Ref } from "@gtkx/native";
|
|
2
|
+
type ErrorLike = Error & {
|
|
3
|
+
domain: number;
|
|
4
|
+
code: number;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* An error enum object carrying its member codes plus an `instanceof` check that
|
|
8
|
+
* matches wrapped GLib errors belonging to a specific error domain.
|
|
9
|
+
*/
|
|
10
|
+
type ErrorDomain<T extends Record<string, number>> = T & {
|
|
11
|
+
[Symbol.hasInstance]: (value: unknown) => value is ErrorLike;
|
|
12
|
+
};
|
|
13
|
+
declare function checkError(error: Ref): void;
|
|
14
|
+
/**
|
|
15
|
+
* Builds an error domain enum object from its members and a lazy resolver for the
|
|
16
|
+
* domain quark, giving it an `instanceof` check that matches wrapped GLib errors of
|
|
17
|
+
* that domain.
|
|
18
|
+
*
|
|
19
|
+
* @param resolveDomain Called once, on first `instanceof` check, to obtain the domain quark.
|
|
20
|
+
* @param members The error code enum members to expose on the returned object.
|
|
21
|
+
*/
|
|
22
|
+
declare function createErrorDomain<const T extends Record<string, number>>(resolveDomain: () => number, members: T): ErrorDomain<T>;
|
|
23
|
+
export { checkError, createErrorDomain, type ErrorDomain };
|
|
24
|
+
//# sourceMappingURL=error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA0B,GAAG,EAAE,MAAM,cAAc,CAAC;AAIhE,KAAK,SAAS,GAAG,KAAK,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,KAAK,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;IACrD,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,SAAS,CAAC;CAChE,CAAC;AAEF,iBAAS,UAAU,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAUpC;AAID;;;;;;;GAOG;AACH,iBAAS,iBAAiB,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7D,aAAa,EAAE,MAAM,MAAM,EAC3B,OAAO,EAAE,CAAC,GACX,WAAW,CAAC,CAAC,CAAC,CAahB;AAED,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,CAAC"}
|
package/dist/error.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { getWrapperClass, wrapHandle } from "./registry.js";
|
|
2
|
+
import { getErrorType, isTypedClass } from "./type.js";
|
|
3
|
+
function checkError(error) {
|
|
4
|
+
if (error.value === null) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
const gerror = wrapHandle(error.value, getWrapperClass(getErrorType()));
|
|
8
|
+
const callSite = new Error("gtkx call site");
|
|
9
|
+
const callerFrames = (callSite.stack ?? "").split("\n").slice(2);
|
|
10
|
+
gerror.stack = [`${gerror.name}: ${gerror.message}`, ...callerFrames].join("\n");
|
|
11
|
+
throw gerror;
|
|
12
|
+
}
|
|
13
|
+
const isError = (value) => isTypedClass(value) && value.__type__ === getErrorType();
|
|
14
|
+
/**
|
|
15
|
+
* Builds an error domain enum object from its members and a lazy resolver for the
|
|
16
|
+
* domain quark, giving it an `instanceof` check that matches wrapped GLib errors of
|
|
17
|
+
* that domain.
|
|
18
|
+
*
|
|
19
|
+
* @param resolveDomain Called once, on first `instanceof` check, to obtain the domain quark.
|
|
20
|
+
* @param members The error code enum members to expose on the returned object.
|
|
21
|
+
*/
|
|
22
|
+
function createErrorDomain(resolveDomain, members) {
|
|
23
|
+
let domain;
|
|
24
|
+
const hasInstance = (value) => {
|
|
25
|
+
domain ??= resolveDomain();
|
|
26
|
+
return isError(value) && value.domain === domain;
|
|
27
|
+
};
|
|
28
|
+
const enumObject = { ...members };
|
|
29
|
+
Object.defineProperty(enumObject, Symbol.hasInstance, { value: hasInstance });
|
|
30
|
+
return enumObject;
|
|
31
|
+
}
|
|
32
|
+
export { checkError, createErrorDomain };
|
|
33
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAevD,SAAS,UAAU,CAAC,KAAU;IAC1B,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO;IACX,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAA+B,EAAE,eAAe,CAAC,YAAY,EAAE,CAAC,CAAc,CAAC;IAC/G,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjF,MAAM,MAAM,CAAC;AACjB,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,KAAc,EAAsB,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;AAEjH;;;;;;;GAOG;AACH,SAAS,iBAAiB,CACtB,aAA2B,EAC3B,OAAU;IAEV,IAAI,MAA0B,CAAC;IAE/B,MAAM,WAAW,GAAG,CAAC,KAAc,EAAsB,EAAE;QACvD,MAAM,KAAK,aAAa,EAAE,CAAC;QAE3B,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC;IACrD,CAAC,CAAC;IAEF,MAAM,UAAU,GAA4B,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3D,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAE9E,OAAO,UAA4B,CAAC;AACxC,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAoB,CAAC","sourcesContent":["import type { ExternalObject, Handle, Ref } from \"@gtkx/native\";\nimport { getWrapperClass, wrapHandle } from \"./registry.js\";\nimport { getErrorType, isTypedClass } from \"./type.js\";\n\ntype ErrorLike = Error & {\n domain: number;\n code: number;\n};\n\n/**\n * An error enum object carrying its member codes plus an `instanceof` check that\n * matches wrapped GLib errors belonging to a specific error domain.\n */\ntype ErrorDomain<T extends Record<string, number>> = T & {\n [Symbol.hasInstance]: (value: unknown) => value is ErrorLike;\n};\n\nfunction checkError(error: Ref): void {\n if (error.value === null) {\n return;\n }\n\n const gerror = wrapHandle(error.value as ExternalObject<Handle>, getWrapperClass(getErrorType())) as ErrorLike;\n const callSite = new Error(\"gtkx call site\");\n const callerFrames = (callSite.stack ?? \"\").split(\"\\n\").slice(2);\n gerror.stack = [`${gerror.name}: ${gerror.message}`, ...callerFrames].join(\"\\n\");\n throw gerror;\n}\n\nconst isError = (value: unknown): value is ErrorLike => isTypedClass(value) && value.__type__ === getErrorType();\n\n/**\n * Builds an error domain enum object from its members and a lazy resolver for the\n * domain quark, giving it an `instanceof` check that matches wrapped GLib errors of\n * that domain.\n *\n * @param resolveDomain Called once, on first `instanceof` check, to obtain the domain quark.\n * @param members The error code enum members to expose on the returned object.\n */\nfunction createErrorDomain<const T extends Record<string, number>>(\n resolveDomain: () => number,\n members: T,\n): ErrorDomain<T> {\n let domain: number | undefined;\n\n const hasInstance = (value: unknown): value is ErrorLike => {\n domain ??= resolveDomain();\n\n return isError(value) && value.domain === domain;\n };\n\n const enumObject: Record<string, unknown> = { ...members };\n Object.defineProperty(enumObject, Symbol.hasInstance, { value: hasInstance });\n\n return enumObject as ErrorDomain<T>;\n}\n\nexport { checkError, createErrorDomain, type ErrorDomain };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exit-hook.d.ts","sourceRoot":"","sources":["../src/exit-hook.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exit-hook.js","sourceRoot":"","sources":["../src/exit-hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC","sourcesContent":["import { quit } from \"./lifecycle.js\";\n\nprocess.on(\"exit\", quit);\n"]}
|
package/dist/fn.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Descriptor } from "@gtkx/native";
|
|
2
|
+
import { type Arg } from "./arg.js";
|
|
3
|
+
type FnSpec = {
|
|
4
|
+
args: Arg[];
|
|
5
|
+
returns: Descriptor;
|
|
6
|
+
throws?: boolean;
|
|
7
|
+
};
|
|
8
|
+
declare function fn(sharedLibrary: string, symbol: string, spec: FnSpec): (...inputs: unknown[]) => unknown;
|
|
9
|
+
export { fn };
|
|
10
|
+
//# sourceMappingURL=fn.d.ts.map
|
package/dist/fn.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fn.d.ts","sourceRoot":"","sources":["../src/fn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAO,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,KAAK,GAAG,EAA2D,MAAM,UAAU,CAAC;AAU7F,KAAK,MAAM,GAAG;IACV,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,UAAU,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AA2FF,iBAAS,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,CA8BlG;AAED,OAAO,EAAE,EAAE,EAAE,CAAC"}
|