@gtkx/runtime 1.0.0-rc.2 → 1.0.0-rc.4

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.
Files changed (86) hide show
  1. package/README.md +4 -5
  2. package/dist/arg.d.ts +7 -2
  3. package/dist/arg.d.ts.map +1 -1
  4. package/dist/arg.js +2 -2
  5. package/dist/arg.js.map +1 -1
  6. package/dist/callback.js +1 -1
  7. package/dist/callback.js.map +1 -1
  8. package/dist/descriptors.d.ts +33 -5
  9. package/dist/descriptors.d.ts.map +1 -1
  10. package/dist/descriptors.js +12 -12
  11. package/dist/descriptors.js.map +1 -1
  12. package/dist/error.d.ts +6 -0
  13. package/dist/error.d.ts.map +1 -1
  14. package/dist/error.js +1 -1
  15. package/dist/error.js.map +1 -1
  16. package/dist/fn.d.ts +5 -1
  17. package/dist/fn.d.ts.map +1 -1
  18. package/dist/fn.js +12 -12
  19. package/dist/fn.js.map +1 -1
  20. package/dist/index.d.ts +17 -3
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +15 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/lifecycle.d.ts +14 -4
  25. package/dist/lifecycle.d.ts.map +1 -1
  26. package/dist/lifecycle.js +3 -2
  27. package/dist/lifecycle.js.map +1 -1
  28. package/dist/listeners.d.ts +6 -0
  29. package/dist/listeners.d.ts.map +1 -1
  30. package/dist/listeners.js.map +1 -1
  31. package/dist/mixin.d.ts +13 -0
  32. package/dist/mixin.d.ts.map +1 -1
  33. package/dist/mixin.js +5 -5
  34. package/dist/mixin.js.map +1 -1
  35. package/dist/native-value.d.ts +8 -0
  36. package/dist/native-value.d.ts.map +1 -1
  37. package/dist/native-value.js +8 -0
  38. package/dist/native-value.js.map +1 -1
  39. package/dist/promisify.d.ts +3 -5
  40. package/dist/promisify.d.ts.map +1 -1
  41. package/dist/promisify.js +1 -1
  42. package/dist/promisify.js.map +1 -1
  43. package/dist/properties.d.ts +1 -0
  44. package/dist/properties.d.ts.map +1 -1
  45. package/dist/properties.js.map +1 -1
  46. package/dist/register-class.d.ts +5 -5
  47. package/dist/register-class.d.ts.map +1 -1
  48. package/dist/register-class.js +1 -4
  49. package/dist/register-class.js.map +1 -1
  50. package/dist/registry.d.ts +16 -2
  51. package/dist/registry.d.ts.map +1 -1
  52. package/dist/registry.js +4 -2
  53. package/dist/registry.js.map +1 -1
  54. package/dist/signal.d.ts +13 -1
  55. package/dist/signal.d.ts.map +1 -1
  56. package/dist/signal.js +2 -2
  57. package/dist/signal.js.map +1 -1
  58. package/dist/t.d.ts +44 -0
  59. package/dist/t.d.ts.map +1 -1
  60. package/dist/t.js.map +1 -1
  61. package/dist/type.d.ts +0 -1
  62. package/dist/type.d.ts.map +1 -1
  63. package/dist/type.js.map +1 -1
  64. package/dist/value.d.ts +2 -9
  65. package/dist/value.d.ts.map +1 -1
  66. package/dist/value.js +2 -9
  67. package/dist/value.js.map +1 -1
  68. package/package.json +4 -4
  69. package/src/arg.ts +9 -4
  70. package/src/callback.ts +1 -1
  71. package/src/descriptors.ts +54 -19
  72. package/src/error.ts +7 -1
  73. package/src/fn.ts +18 -14
  74. package/src/index.ts +17 -3
  75. package/src/lifecycle.ts +14 -4
  76. package/src/listeners.ts +6 -0
  77. package/src/mixin.ts +12 -6
  78. package/src/native-value.ts +8 -0
  79. package/src/promisify.ts +4 -6
  80. package/src/properties.ts +1 -0
  81. package/src/register-class.ts +6 -8
  82. package/src/registry.ts +16 -2
  83. package/src/signal.ts +18 -4
  84. package/src/t.ts +44 -0
  85. package/src/type.ts +0 -1
  86. package/src/value.ts +2 -9
package/README.md CHANGED
@@ -6,7 +6,8 @@
6
6
 
7
7
  <p align="center">
8
8
  The React framework for Linux.<br />
9
- Build GTK4 and Adwaita apps in TypeScript, with React components and hooks driving GNOME's own widgets. What you ship is a GNOME app.
9
+ Write native Linux applications with React and TypeScript.
10
+ Built on the GNOME stack and standard web tooling.
10
11
  </p>
11
12
 
12
13
  <p align="center">
@@ -20,15 +21,13 @@
20
21
 
21
22
  <p align="center">
22
23
  <a href="https://gtkx.dev">Homepage</a> &middot;
23
- <a href="https://gtkx.dev/guide/why-gtkx">Documentation</a> &middot;
24
+ <a href="https://gtkx.dev/guide/getting-started">Documentation</a> &middot;
24
25
  <a href="https://github.com/gtkx-org/gtkx/tree/main/examples">Examples</a> &middot;
25
26
  <a href="https://github.com/gtkx-org/gtkx/blob/main/CONTRIBUTING.md">Contributing</a>
26
27
  </p>
27
28
 
28
29
  ---
29
30
 
30
- GTKX generates fully typed bindings for the entire GTK4 and Adwaita surface directly from GObject-Introspection. On top of those bindings you get the React programming model: components and hooks driving GObject instances, with Fast Refresh while you develop.
31
-
32
31
  <p align="center">
33
32
  <img src="https://raw.githubusercontent.com/gtkx-org/gtkx/main/examples/tutorial/assets/screenshot.png" alt="The Tasks app: an Adwaita window with a sidebar of smart views and colored lists on the left, and a boxed task list on the right." />
34
33
  </p>
@@ -109,7 +108,7 @@ React Native and similar frameworks hide the native toolkit so one API can run e
109
108
 
110
109
  ### Why Node.js, and why generated bindings
111
110
 
112
- GTKX runs on Node.js, which puts native modules, the npm ecosystem, and the tooling built for Node.js APIs within reach. GJS is GNOME's own runtime, built on SpiderMonkey rather than V8; node-gtk runs on Node.js but is lightly maintained, on the older nan/V8 ABI rather than N-API, and still centered on GTK3. The [why-gtkx guide](https://gtkx.dev/guide/why-gtkx) covers the comparison in full.
111
+ GTKX runs on Node.js, which puts native modules, the npm ecosystem, and the tooling built for Node.js APIs within reach. GJS is GNOME's own runtime, built on SpiderMonkey rather than V8; node-gtk runs on Node.js but is lightly maintained, on the older nan/V8 ABI rather than N-API, and still centered on GTK3. The [Why GTKX guide](https://gtkx.dev/guide/why-gtkx) covers the comparison in full.
113
112
 
114
113
  GTKX generates the TypeScript types and the native FFI calls from the same GObject-Introspection data, so the types cannot drift from the calls they back. Codegen covers the whole GTK4 and Adwaita surface.
115
114
 
package/dist/arg.d.ts CHANGED
@@ -1,9 +1,14 @@
1
1
  import type { Descriptor } from "@gtkx/native";
2
+ /** How one argument of a native call or signal emission is marshalled and which way it flows. */
2
3
  type Arg = {
4
+ /** Descriptor the value is marshalled with, wrapped in a pointer to it for an output argument. */
3
5
  type: Descriptor;
6
+ /** Direction of an output argument, omitted for a plain input argument. */
4
7
  direction?: "out" | "inout";
5
- callerAllocated?: boolean;
6
- consumed?: boolean;
8
+ /** When true, the caller supplies the storage the callee writes into, rather than a pointer to fill. */
9
+ isCallerAllocated?: boolean;
10
+ /** When true, the argument is consumed internally and left out of the packed result. */
11
+ isConsumed?: boolean;
7
12
  };
8
13
  declare const isOutputArg: (arg: Arg) => boolean;
9
14
  declare const isInoutArg: (arg: Arg) => boolean;
package/dist/arg.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"arg.d.ts","sourceRoot":"","sources":["../src/arg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,KAAK,GAAG,GAAG;IACP,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,QAAA,MAAM,WAAW,GAAI,KAAK,GAAG,KAAG,OAAsC,CAAC;AACvE,QAAA,MAAM,UAAU,GAAI,KAAK,GAAG,KAAG,OAAoC,CAAC;AACpE,QAAA,MAAM,oBAAoB,GAAI,KAAK,GAAG,KAAG,OAAuC,CAAC;AACjF,QAAA,MAAM,QAAQ,GAAI,KAAK,GAAG,KAAG,OAAsE,CAAC;AAEpG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,EAAE,QAAQ,EAAE,KAAK,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"arg.d.ts","sourceRoot":"","sources":["../src/arg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,iGAAiG;AACjG,KAAK,GAAG,GAAG;IACP,kGAAkG;IAClG,IAAI,EAAE,UAAU,CAAC;IACjB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IAC5B,wGAAwG;IACxG,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,wFAAwF;IACxF,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,QAAA,MAAM,WAAW,GAAI,KAAK,GAAG,KAAG,OAAsC,CAAC;AACvE,QAAA,MAAM,UAAU,GAAI,KAAK,GAAG,KAAG,OAAoC,CAAC;AACpE,QAAA,MAAM,oBAAoB,GAAI,KAAK,GAAG,KAAG,OAAyC,CAAC;AACnF,QAAA,MAAM,QAAQ,GAAI,KAAK,GAAG,KAAG,OAAwE,CAAC;AAEtG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,EAAE,QAAQ,EAAE,KAAK,GAAG,EAAE,CAAC"}
package/dist/arg.js CHANGED
@@ -1,6 +1,6 @@
1
1
  const isOutputArg = (arg) => arg.direction !== undefined;
2
2
  const isInoutArg = (arg) => arg.direction === "inout";
3
- const isCallerAllocatedArg = (arg) => arg.callerAllocated === true;
4
- const isRefArg = (arg) => arg.direction !== undefined && arg.callerAllocated !== true;
3
+ const isCallerAllocatedArg = (arg) => arg.isCallerAllocated === true;
4
+ const isRefArg = (arg) => arg.direction !== undefined && arg.isCallerAllocated !== true;
5
5
  export { isOutputArg, isInoutArg, isCallerAllocatedArg, isRefArg };
6
6
  //# sourceMappingURL=arg.js.map
package/dist/arg.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"arg.js","sourceRoot":"","sources":["../src/arg.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,GAAG,CAAC,GAAQ,EAAW,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC;AACvE,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAW,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,OAAO,CAAC;AACpE,MAAM,oBAAoB,GAAG,CAAC,GAAQ,EAAW,EAAE,CAAC,GAAG,CAAC,eAAe,KAAK,IAAI,CAAC;AACjF,MAAM,QAAQ,GAAG,CAAC,GAAQ,EAAW,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,eAAe,KAAK,IAAI,CAAC;AAEpG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,EAAE,QAAQ,EAAY,CAAC","sourcesContent":["import type { Descriptor } from \"@gtkx/native\";\n\ntype Arg = {\n type: Descriptor;\n direction?: \"out\" | \"inout\";\n callerAllocated?: boolean;\n consumed?: boolean;\n};\n\nconst isOutputArg = (arg: Arg): boolean => arg.direction !== undefined;\nconst isInoutArg = (arg: Arg): boolean => arg.direction === \"inout\";\nconst isCallerAllocatedArg = (arg: Arg): boolean => arg.callerAllocated === true;\nconst isRefArg = (arg: Arg): boolean => arg.direction !== undefined && arg.callerAllocated !== true;\n\nexport { isOutputArg, isInoutArg, isCallerAllocatedArg, isRefArg, type Arg };\n"]}
1
+ {"version":3,"file":"arg.js","sourceRoot":"","sources":["../src/arg.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,GAAG,CAAC,GAAQ,EAAW,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC;AACvE,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAW,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,OAAO,CAAC;AACpE,MAAM,oBAAoB,GAAG,CAAC,GAAQ,EAAW,EAAE,CAAC,GAAG,CAAC,iBAAiB,KAAK,IAAI,CAAC;AACnF,MAAM,QAAQ,GAAG,CAAC,GAAQ,EAAW,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,iBAAiB,KAAK,IAAI,CAAC;AAEtG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,EAAE,QAAQ,EAAY,CAAC","sourcesContent":["import type { Descriptor } from \"@gtkx/native\";\n\n/** How one argument of a native call or signal emission is marshalled and which way it flows. */\ntype Arg = {\n /** Descriptor the value is marshalled with, wrapped in a pointer to it for an output argument. */\n type: Descriptor;\n /** Direction of an output argument, omitted for a plain input argument. */\n direction?: \"out\" | \"inout\";\n /** When true, the caller supplies the storage the callee writes into, rather than a pointer to fill. */\n isCallerAllocated?: boolean;\n /** When true, the argument is consumed internally and left out of the packed result. */\n isConsumed?: boolean;\n};\n\nconst isOutputArg = (arg: Arg): boolean => arg.direction !== undefined;\nconst isInoutArg = (arg: Arg): boolean => arg.direction === \"inout\";\nconst isCallerAllocatedArg = (arg: Arg): boolean => arg.isCallerAllocated === true;\nconst isRefArg = (arg: Arg): boolean => arg.direction !== undefined && arg.isCallerAllocated !== true;\n\nexport { isOutputArg, isInoutArg, isCallerAllocatedArg, isRefArg, type Arg };\n"]}
package/dist/callback.js CHANGED
@@ -14,7 +14,7 @@ const fillCallerAllocatedBuffer = (descriptor, target, source) => {
14
14
  }
15
15
  throw new Error(`Cannot write caller-allocated ${descriptor.kind} out-parameter: no known byte size`);
16
16
  };
17
- const isCallerAllocatedOut = (descriptor) => (descriptor.kind === "boxed" || descriptor.kind === "struct") && descriptor.callerAllocated === true;
17
+ const isCallerAllocatedOut = (descriptor) => (descriptor.kind === "boxed" || descriptor.kind === "struct") && descriptor.isCallerAllocated === true;
18
18
  const collectRefArg = (descriptor, wrappedValue, inputs, outParams) => {
19
19
  if (descriptor.inout === true) {
20
20
  inputs.push(wrappedValue.value);
@@ -1 +1 @@
1
- {"version":3,"file":"callback.js","sourceRoot":"","sources":["../src/callback.ts"],"names":[],"mappings":"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","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"]}
1
+ {"version":3,"file":"callback.js","sourceRoot":"","sources":["../src/callback.ts"],"names":[],"mappings":"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","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.isCallerAllocated === 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"]}
@@ -66,11 +66,13 @@ type BoxedDescriptor = Extract<Descriptor, {
66
66
  type StructDescriptor = Extract<Descriptor, {
67
67
  kind: "struct";
68
68
  }> & {
69
+ /** Class a decoded value is wrapped in; without it the wrapper comes from the value's own GType. */
69
70
  wrapperClass?: AnyClass;
70
71
  };
71
72
  type FundamentalDescriptor = Extract<Descriptor, {
72
73
  kind: "fundamental";
73
74
  }> & {
75
+ /** Class a decoded value is wrapped in; without it the wrapper comes from the type named by `typeName`. */
74
76
  wrapperClass?: AnyClass;
75
77
  };
76
78
  type ArrayDescriptor = Extract<Descriptor, {
@@ -88,35 +90,61 @@ type RefDescriptor = Extract<Descriptor, {
88
90
  type TypeDescriptor = BigUint64Descriptor & {
89
91
  type: true;
90
92
  };
93
+ /** How a boxed value is stored, and where its GType and free function are resolved from. */
91
94
  type BoxedOptions = {
92
- callerAllocated?: boolean;
93
- inline?: boolean;
95
+ /** The caller owns the storage the callee fills, so a decoded value is borrowed instead of copied. */
96
+ isCallerAllocated?: boolean;
97
+ /** The value is embedded in the containing struct rather than reached through a pointer. */
98
+ isInline?: boolean;
99
+ /** Whether a decoded value is owned by the caller; defaults to `"borrowed"`. */
94
100
  ownership?: Ownership;
101
+ /** Library `getTypeFnName` and `freeFnName` are resolved in. */
95
102
  sharedLibrary?: string;
103
+ /** Symbol returning the boxed GType, used when the type is not already registered under its name. */
96
104
  getTypeFnName?: string;
105
+ /** Symbol that frees the value, for a boxed type with no GType of its own. */
97
106
  freeFnName?: string;
107
+ /** Byte size of the value, needed to copy it into an inline field. */
98
108
  size?: number;
99
109
  };
110
+ /** How the callee takes a callback's closure, and how long that closure has to stay alive. */
100
111
  type CallbackOptions = {
112
+ /** The callee also takes a `GDestroyNotify`, which frees the closure once it is done with it. */
101
113
  hasDestroy?: boolean;
114
+ /** Position of the `user_data` argument carrying the closure; without one it can never be freed. */
102
115
  userDataIndex?: number;
116
+ /** Lifetime of the closure; defaults to `notified` when `hasDestroy` is set and `call` otherwise. */
103
117
  scope?: CallbackDescriptor["scope"];
104
118
  };
119
+ /** The lengths and strides a C array layout needs beyond its element type. */
105
120
  type ArrayOptions = {
121
+ /** Stride in bytes between elements stored inline in the array. */
106
122
  elementSize?: number | undefined;
123
+ /** Position of the argument carrying the element count, for a length-bounded array. */
107
124
  sizeParamIndex?: number | undefined;
125
+ /** Element count of a fixed-length array. */
108
126
  fixedSize?: number | undefined;
109
127
  };
128
+ /** How a ref-counted fundamental value is named, wrapped and stored. */
110
129
  type FundamentalOptions = {
130
+ /** Whether a decoded value is owned by the caller; defaults to `"borrowed"`. */
111
131
  ownership?: Ownership;
132
+ /** GLib type name the wrapper class is looked up by. */
112
133
  typeName?: string;
134
+ /** Class a decoded value is wrapped in, instead of the one registered for `typeName`. */
113
135
  wrapperClass?: AnyClass;
114
- inline?: boolean;
136
+ /** The value is embedded in the containing struct rather than reached through a pointer. */
137
+ isInline?: boolean;
115
138
  };
139
+ /** How a plain C struct is stored and wrapped. */
116
140
  type StructOptions = {
117
- callerAllocated?: boolean;
118
- inline?: boolean;
141
+ /** The caller owns the storage the callee fills, so a decoded value is borrowed instead of copied. */
142
+ isCallerAllocated?: boolean;
143
+ /** The value is embedded in the containing struct rather than reached through a pointer. */
144
+ isInline?: boolean;
145
+ /** Byte size of the struct, needed to copy it rather than borrow the pointer. */
119
146
  size?: number;
147
+ /** Class a decoded value is wrapped in, instead of the one registered for its GType. */
120
148
  wrapperClass?: AnyClass;
121
149
  };
122
150
  declare const int8T: Int8Descriptor;
@@ -1 +1 @@
1
- {"version":3,"file":"descriptors.d.ts","sourceRoot":"","sources":["../src/descriptors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"descriptors.d.ts","sourceRoot":"","sources":["../src/descriptors.ts"],"names":[],"mappings":"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"}
@@ -28,13 +28,13 @@ const enumT = (sharedLibrary, typeFnName, isSigned) => ({
28
28
  kind: "enum",
29
29
  sharedLibrary,
30
30
  getTypeFnName: typeFnName,
31
- signed: isSigned,
31
+ isSigned,
32
32
  });
33
33
  const flagsT = (sharedLibrary, typeFnName, isSigned) => ({
34
34
  kind: "flags",
35
35
  sharedLibrary,
36
36
  getTypeFnName: typeFnName,
37
- signed: isSigned,
37
+ isSigned,
38
38
  });
39
39
  const applyBoxedNames = (result, options) => {
40
40
  if (options.sharedLibrary !== undefined) {
@@ -49,11 +49,11 @@ const applyBoxedNames = (result, options) => {
49
49
  };
50
50
  const applyBoxedOptions = (result, options) => {
51
51
  applyBoxedNames(result, options);
52
- if (options.callerAllocated) {
53
- result.callerAllocated = true;
52
+ if (options.isCallerAllocated) {
53
+ result.isCallerAllocated = true;
54
54
  }
55
- if (options.inline) {
56
- result.inline = true;
55
+ if (options.isInline) {
56
+ result.isInline = true;
57
57
  }
58
58
  if (options.size !== undefined) {
59
59
  result.size = options.size;
@@ -76,11 +76,11 @@ const structT = (ownership = "borrowed", options = {}) => {
76
76
  if (options.wrapperClass !== undefined) {
77
77
  result.wrapperClass = options.wrapperClass;
78
78
  }
79
- if (options.callerAllocated) {
80
- result.callerAllocated = true;
79
+ if (options.isCallerAllocated) {
80
+ result.isCallerAllocated = true;
81
81
  }
82
- if (options.inline) {
83
- result.inline = true;
82
+ if (options.isInline) {
83
+ result.isInline = true;
84
84
  }
85
85
  return result;
86
86
  };
@@ -93,8 +93,8 @@ const fundamentalT = (sharedLibrary, refFnName, unrefFnName, options = {}) => {
93
93
  if (options.wrapperClass !== undefined) {
94
94
  result.wrapperClass = options.wrapperClass;
95
95
  }
96
- if (options.inline) {
97
- result.inline = true;
96
+ if (options.isInline) {
97
+ result.isInline = true;
98
98
  }
99
99
  return result;
100
100
  };
@@ -1 +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"]}
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\" }>;\n\ntype StructDescriptor = Extract<Descriptor, { kind: \"struct\" }> & {\n /** Class a decoded value is wrapped in; without it the wrapper comes from the value's own GType. */\n wrapperClass?: AnyClass;\n};\n\ntype FundamentalDescriptor = Extract<Descriptor, { kind: \"fundamental\" }> & {\n /** Class a decoded value is wrapped in; without it the wrapper comes from the type named by `typeName`. */\n wrapperClass?: AnyClass;\n};\n\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\n/** How a boxed value is stored, and where its GType and free function are resolved from. */\ntype BoxedOptions = {\n /** The caller owns the storage the callee fills, so a decoded value is borrowed instead of copied. */\n isCallerAllocated?: boolean;\n /** The value is embedded in the containing struct rather than reached through a pointer. */\n isInline?: boolean;\n /** Whether a decoded value is owned by the caller; defaults to `\"borrowed\"`. */\n ownership?: Ownership;\n /** Library `getTypeFnName` and `freeFnName` are resolved in. */\n sharedLibrary?: string;\n /** Symbol returning the boxed GType, used when the type is not already registered under its name. */\n getTypeFnName?: string;\n /** Symbol that frees the value, for a boxed type with no GType of its own. */\n freeFnName?: string;\n /** Byte size of the value, needed to copy it into an inline field. */\n size?: number;\n};\n\n/** How the callee takes a callback's closure, and how long that closure has to stay alive. */\ntype CallbackOptions = {\n /** The callee also takes a `GDestroyNotify`, which frees the closure once it is done with it. */\n hasDestroy?: boolean;\n /** Position of the `user_data` argument carrying the closure; without one it can never be freed. */\n userDataIndex?: number;\n /** Lifetime of the closure; defaults to `notified` when `hasDestroy` is set and `call` otherwise. */\n scope?: CallbackDescriptor[\"scope\"];\n};\n\n/** The lengths and strides a C array layout needs beyond its element type. */\ntype ArrayOptions = {\n /** Stride in bytes between elements stored inline in the array. */\n elementSize?: number | undefined;\n /** Position of the argument carrying the element count, for a length-bounded array. */\n sizeParamIndex?: number | undefined;\n /** Element count of a fixed-length array. */\n fixedSize?: number | undefined;\n};\n\n/** How a ref-counted fundamental value is named, wrapped and stored. */\ntype FundamentalOptions = {\n /** Whether a decoded value is owned by the caller; defaults to `\"borrowed\"`. */\n ownership?: Ownership;\n /** GLib type name the wrapper class is looked up by. */\n typeName?: string;\n /** Class a decoded value is wrapped in, instead of the one registered for `typeName`. */\n wrapperClass?: AnyClass;\n /** The value is embedded in the containing struct rather than reached through a pointer. */\n isInline?: boolean;\n};\n\n/** How a plain C struct is stored and wrapped. */\ntype StructOptions = {\n /** The caller owns the storage the callee fills, so a decoded value is borrowed instead of copied. */\n isCallerAllocated?: boolean;\n /** The value is embedded in the containing struct rather than reached through a pointer. */\n isInline?: boolean;\n /** Byte size of the struct, needed to copy it rather than borrow the pointer. */\n size?: number;\n /** Class a decoded value is wrapped in, instead of the one registered for its GType. */\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 isSigned,\n});\n\nconst flagsT = (sharedLibrary: string, typeFnName: string, isSigned: boolean): FlagsDescriptor => ({\n kind: \"flags\",\n sharedLibrary,\n getTypeFnName: typeFnName,\n 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.isCallerAllocated) {\n result.isCallerAllocated = true;\n }\n\n if (options.isInline) {\n result.isInline = 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.isCallerAllocated) {\n result.isCallerAllocated = true;\n }\n\n if (options.isInline) {\n result.isInline = 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.isInline) {\n result.isInline = 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 CHANGED
@@ -1,6 +1,12 @@
1
1
  import type { Ref } from "@gtkx/native";
2
+ /**
3
+ * A wrapped `GError` thrown across the FFI boundary: a JavaScript `Error` that also identifies its
4
+ * GLib domain and code.
5
+ */
2
6
  type ErrorLike = Error & {
7
+ /** Quark of the error domain the code belongs to. */
3
8
  domain: number;
9
+ /** Error code, meaningful only within `ErrorLike.domain`. */
4
10
  code: number;
5
11
  };
6
12
  /**
@@ -1 +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"}
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA0B,GAAG,EAAE,MAAM,cAAc,CAAC;AAIhE;;;GAGG;AACH,KAAK,SAAS,GAAG,KAAK,GAAG;IACrB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,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 CHANGED
@@ -5,7 +5,7 @@ function checkError(error) {
5
5
  return;
6
6
  }
7
7
  const gerror = wrapHandle(error.value, getWrapperClass(getErrorType()));
8
- const callSite = new Error("gtkx call site");
8
+ const callSite = new Error("GTKX call site");
9
9
  const callerFrames = (callSite.stack ?? "").split("\n").slice(2);
10
10
  gerror.stack = [`${gerror.name}: ${gerror.message}`, ...callerFrames].join("\n");
11
11
  throw gerror;
package/dist/error.js.map CHANGED
@@ -1 +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"]}
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;AAqBvD,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\n/**\n * A wrapped `GError` thrown across the FFI boundary: a JavaScript `Error` that also identifies its\n * GLib domain and code.\n */\ntype ErrorLike = Error & {\n /** Quark of the error domain the code belongs to. */\n domain: number;\n /** Error code, meaningful only within `ErrorLike.domain`. */\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"]}
package/dist/fn.d.ts CHANGED
@@ -1,9 +1,13 @@
1
1
  import type { Descriptor } from "@gtkx/native";
2
2
  import { type Arg } from "./arg.js";
3
+ /** The signature a native function is bound against. */
3
4
  type FnSpec = {
5
+ /** The C arguments in declaration order, including the ones the callee writes into. */
4
6
  args: Arg[];
7
+ /** Descriptor for the C return value, packed first when output arguments are also returned. */
5
8
  returns: Descriptor;
6
- throws?: boolean;
9
+ /** The function takes a trailing `GError**`, whose contents are thrown as an error on return. */
10
+ canThrow?: boolean;
7
11
  };
8
12
  declare function fn(sharedLibrary: string, symbol: string, spec: FnSpec): (...inputs: unknown[]) => unknown;
9
13
  export { fn };
package/dist/fn.d.ts.map CHANGED
@@ -1 +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"}
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,wDAAwD;AACxD,KAAK,MAAM,GAAG;IACV,uFAAuF;IACvF,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,+FAA+F;IAC/F,OAAO,EAAE,UAAU,CAAC;IACpB,iGAAiG;IACjG,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,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"}
package/dist/fn.js CHANGED
@@ -8,7 +8,7 @@ import { fromNative } from "./native-value.js";
8
8
  import { getHandle } from "./registry.js";
9
9
  import { packTupleResult } from "./tuple.js";
10
10
  const buildNativeArgTypes = (args, canThrow) => {
11
- const nativeArgTypes = args.map((argSpec) => argSpec.direction !== undefined && argSpec.callerAllocated !== true ? refT(argSpec.type) : argSpec.type);
11
+ const nativeArgTypes = args.map((argSpec) => argSpec.direction !== undefined && argSpec.isCallerAllocated !== true ? refT(argSpec.type) : argSpec.type);
12
12
  if (canThrow) {
13
13
  nativeArgTypes.push(refT(boxedT("GError", { ownership: "full", sharedLibrary: LIB, getTypeFnName: "g_error_get_type" })));
14
14
  }
@@ -18,14 +18,14 @@ const buildArgSpecs = (args) => {
18
18
  let inputCursor = 0;
19
19
  return args.map((arg) => {
20
20
  const isRef = isRefArg(arg);
21
- const isConsumesInput = !isRef || isInoutArg(arg);
22
- const isOutParam = isOutputArg(arg) && arg.consumed !== true;
21
+ const requiresInput = !isRef || isInoutArg(arg);
22
+ const isOutParam = isOutputArg(arg) && arg.isConsumed !== true;
23
23
  return {
24
24
  arg,
25
25
  isRef,
26
26
  isCallerAllocated: isCallerAllocatedArg(arg),
27
- consumesInput: isConsumesInput,
28
- inputIndex: isConsumesInput ? inputCursor++ : -1,
27
+ requiresInput,
28
+ inputIndex: requiresInput ? inputCursor++ : -1,
29
29
  isOutParam,
30
30
  };
31
31
  });
@@ -34,16 +34,16 @@ const resolveCallerAllocated = (inputs, inputIndex) => {
34
34
  const wrapper = inputs[inputIndex];
35
35
  return wrapper == null ? wrapper : getHandle(wrapper);
36
36
  };
37
- const buildRefValue = (isInputConsumed, inputs, inputIndex) => ({
38
- value: isInputConsumed ? inputs[inputIndex] : null,
37
+ const buildRefValue = (requiresInput, inputs, inputIndex) => ({
38
+ value: requiresInput ? inputs[inputIndex] : null,
39
39
  });
40
40
  const buildNativeValue = (spec, inputs) => {
41
- const { arg, isRef, isCallerAllocated, consumesInput, inputIndex } = spec;
41
+ const { arg, isRef, isCallerAllocated, requiresInput, inputIndex } = spec;
42
42
  if (isCallerAllocated) {
43
43
  return resolveCallerAllocated(inputs, inputIndex);
44
44
  }
45
45
  if (isRef) {
46
- return buildRefValue(consumesInput, inputs, inputIndex);
46
+ return buildRefValue(requiresInput, inputs, inputIndex);
47
47
  }
48
48
  if (arg.type.kind === "callback") {
49
49
  return wrapCallbackValue(arg.type, inputs[inputIndex]);
@@ -62,8 +62,8 @@ const readOutParams = (plans, inputs, nativeValues) => {
62
62
  return outParams;
63
63
  };
64
64
  function fn(sharedLibrary, symbol, spec) {
65
- const { args, returns: returnDescriptor, throws = false } = spec;
66
- const nativeArgTypes = buildNativeArgTypes(args, throws);
65
+ const { args, returns: returnDescriptor, canThrow = false } = spec;
66
+ const nativeArgTypes = buildNativeArgTypes(args, canThrow);
67
67
  const nativeFn = bind(sharedLibrary, symbol, nativeArgTypes, returnDescriptor);
68
68
  const hasPrimary = returnDescriptor.kind !== "void";
69
69
  const plans = buildArgSpecs(args);
@@ -71,7 +71,7 @@ function fn(sharedLibrary, symbol, spec) {
71
71
  const primary = hasPrimary ? fromNative(returnDescriptor, nativeResult) : undefined;
72
72
  return packTupleResult(readOutParams(plans, inputs, nativeValues), primary, hasPrimary);
73
73
  };
74
- if (throws) {
74
+ if (canThrow) {
75
75
  return (...inputs) => {
76
76
  const nativeValues = buildNativeValues(plans, inputs);
77
77
  const errorRef = { value: null };
package/dist/fn.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fn.js","sourceRoot":"","sources":["../src/fn.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Descriptor, Ref } from \"@gtkx/native\";\nimport { type Arg, isCallerAllocatedArg, isInoutArg, isOutputArg, isRefArg } from \"./arg.js\";\nimport { bind } from \"./bind.js\";\nimport { wrapCallbackValue } from \"./callback.js\";\nimport { boxedT, refT } from \"./descriptors.js\";\nimport { checkError } from \"./error.js\";\nimport { LIB } from \"./library.js\";\nimport { fromNative } from \"./native-value.js\";\nimport { getHandle } from \"./registry.js\";\nimport { packTupleResult } from \"./tuple.js\";\n\ntype FnSpec = {\n args: Arg[];\n returns: Descriptor;\n throws?: boolean;\n};\n\ntype ArgSpec = {\n arg: Arg;\n isRef: boolean;\n isCallerAllocated: boolean;\n consumesInput: boolean;\n inputIndex: number;\n isOutParam: boolean;\n};\n\nconst buildNativeArgTypes = (args: Arg[], canThrow: boolean): Descriptor[] => {\n const nativeArgTypes = args.map((argSpec) =>\n argSpec.direction !== undefined && argSpec.callerAllocated !== true ? refT(argSpec.type) : argSpec.type,\n );\n\n if (canThrow) {\n nativeArgTypes.push(\n refT(boxedT(\"GError\", { ownership: \"full\", sharedLibrary: LIB, getTypeFnName: \"g_error_get_type\" })),\n );\n }\n\n return nativeArgTypes;\n};\n\nconst buildArgSpecs = (args: Arg[]): ArgSpec[] => {\n let inputCursor = 0;\n\n return args.map((arg) => {\n const isRef = isRefArg(arg);\n const isConsumesInput = !isRef || isInoutArg(arg);\n const isOutParam = isOutputArg(arg) && arg.consumed !== true;\n\n return {\n arg,\n isRef,\n isCallerAllocated: isCallerAllocatedArg(arg),\n consumesInput: isConsumesInput,\n inputIndex: isConsumesInput ? inputCursor++ : -1,\n isOutParam,\n };\n });\n};\n\nconst resolveCallerAllocated = (inputs: unknown[], inputIndex: number): unknown => {\n const wrapper = inputs[inputIndex];\n\n return wrapper == null ? wrapper : getHandle(wrapper);\n};\n\nconst buildRefValue = (isInputConsumed: boolean, inputs: unknown[], inputIndex: number): Ref => ({\n value: isInputConsumed ? inputs[inputIndex] : null,\n});\n\nconst buildNativeValue = (spec: ArgSpec, inputs: unknown[]): unknown => {\n const { arg, isRef, isCallerAllocated, consumesInput, inputIndex } = spec;\n\n if (isCallerAllocated) {\n return resolveCallerAllocated(inputs, inputIndex);\n }\n\n if (isRef) {\n return buildRefValue(consumesInput, inputs, inputIndex);\n }\n\n if (arg.type.kind === \"callback\") {\n return wrapCallbackValue(arg.type, inputs[inputIndex]);\n }\n\n return inputs[inputIndex];\n};\n\nconst buildNativeValues = (plans: ArgSpec[], inputs: unknown[]): unknown[] =>\n plans.map((plan) => buildNativeValue(plan, inputs));\n\nconst readOutParams = (plans: ArgSpec[], inputs: unknown[], nativeValues: unknown[]): unknown[] => {\n const outParams: unknown[] = [];\n\n for (const [index, { arg, isCallerAllocated, inputIndex, isOutParam }] of plans.entries()) {\n if (!isOutParam) {\n continue;\n }\n\n outParams.push(\n isCallerAllocated ? inputs[inputIndex] : fromNative(arg.type, (nativeValues[index] as Ref).value),\n );\n }\n\n return outParams;\n};\n\nfunction fn(sharedLibrary: string, symbol: string, spec: FnSpec): (...inputs: unknown[]) => unknown {\n const { args, returns: returnDescriptor, throws = false } = spec;\n const nativeArgTypes = buildNativeArgTypes(args, throws);\n const nativeFn = bind(sharedLibrary, symbol, nativeArgTypes, returnDescriptor);\n const hasPrimary = returnDescriptor.kind !== \"void\";\n const plans = buildArgSpecs(args);\n\n const shape = (inputs: unknown[], nativeValues: unknown[], nativeResult: unknown): unknown => {\n const primary = hasPrimary ? fromNative(returnDescriptor, nativeResult) : undefined;\n\n return packTupleResult(readOutParams(plans, inputs, nativeValues), primary, hasPrimary);\n };\n\n if (throws) {\n return (...inputs) => {\n const nativeValues = buildNativeValues(plans, inputs);\n const errorRef: Ref = { value: null };\n nativeValues.push(errorRef);\n const nativeResult = nativeFn(...nativeValues);\n checkError(errorRef);\n\n return shape(inputs, nativeValues, nativeResult);\n };\n }\n\n return (...inputs) => {\n const nativeValues = buildNativeValues(plans, inputs);\n\n return shape(inputs, nativeValues, nativeFn(...nativeValues));\n };\n}\n\nexport { fn };\n"]}
1
+ {"version":3,"file":"fn.js","sourceRoot":"","sources":["../src/fn.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Descriptor, Ref } from \"@gtkx/native\";\nimport { type Arg, isCallerAllocatedArg, isInoutArg, isOutputArg, isRefArg } from \"./arg.js\";\nimport { bind } from \"./bind.js\";\nimport { wrapCallbackValue } from \"./callback.js\";\nimport { boxedT, refT } from \"./descriptors.js\";\nimport { checkError } from \"./error.js\";\nimport { LIB } from \"./library.js\";\nimport { fromNative } from \"./native-value.js\";\nimport { getHandle } from \"./registry.js\";\nimport { packTupleResult } from \"./tuple.js\";\n\n/** The signature a native function is bound against. */\ntype FnSpec = {\n /** The C arguments in declaration order, including the ones the callee writes into. */\n args: Arg[];\n /** Descriptor for the C return value, packed first when output arguments are also returned. */\n returns: Descriptor;\n /** The function takes a trailing `GError**`, whose contents are thrown as an error on return. */\n canThrow?: boolean;\n};\n\ntype ArgSpec = {\n arg: Arg;\n isRef: boolean;\n isCallerAllocated: boolean;\n requiresInput: boolean;\n inputIndex: number;\n isOutParam: boolean;\n};\n\nconst buildNativeArgTypes = (args: Arg[], canThrow: boolean): Descriptor[] => {\n const nativeArgTypes = args.map((argSpec) =>\n argSpec.direction !== undefined && argSpec.isCallerAllocated !== true ? refT(argSpec.type) : argSpec.type,\n );\n\n if (canThrow) {\n nativeArgTypes.push(\n refT(boxedT(\"GError\", { ownership: \"full\", sharedLibrary: LIB, getTypeFnName: \"g_error_get_type\" })),\n );\n }\n\n return nativeArgTypes;\n};\n\nconst buildArgSpecs = (args: Arg[]): ArgSpec[] => {\n let inputCursor = 0;\n\n return args.map((arg) => {\n const isRef = isRefArg(arg);\n const requiresInput = !isRef || isInoutArg(arg);\n const isOutParam = isOutputArg(arg) && arg.isConsumed !== true;\n\n return {\n arg,\n isRef,\n isCallerAllocated: isCallerAllocatedArg(arg),\n requiresInput,\n inputIndex: requiresInput ? inputCursor++ : -1,\n isOutParam,\n };\n });\n};\n\nconst resolveCallerAllocated = (inputs: unknown[], inputIndex: number): unknown => {\n const wrapper = inputs[inputIndex];\n\n return wrapper == null ? wrapper : getHandle(wrapper);\n};\n\nconst buildRefValue = (requiresInput: boolean, inputs: unknown[], inputIndex: number): Ref => ({\n value: requiresInput ? inputs[inputIndex] : null,\n});\n\nconst buildNativeValue = (spec: ArgSpec, inputs: unknown[]): unknown => {\n const { arg, isRef, isCallerAllocated, requiresInput, inputIndex } = spec;\n\n if (isCallerAllocated) {\n return resolveCallerAllocated(inputs, inputIndex);\n }\n\n if (isRef) {\n return buildRefValue(requiresInput, inputs, inputIndex);\n }\n\n if (arg.type.kind === \"callback\") {\n return wrapCallbackValue(arg.type, inputs[inputIndex]);\n }\n\n return inputs[inputIndex];\n};\n\nconst buildNativeValues = (plans: ArgSpec[], inputs: unknown[]): unknown[] =>\n plans.map((plan) => buildNativeValue(plan, inputs));\n\nconst readOutParams = (plans: ArgSpec[], inputs: unknown[], nativeValues: unknown[]): unknown[] => {\n const outParams: unknown[] = [];\n\n for (const [index, { arg, isCallerAllocated, inputIndex, isOutParam }] of plans.entries()) {\n if (!isOutParam) {\n continue;\n }\n\n outParams.push(\n isCallerAllocated ? inputs[inputIndex] : fromNative(arg.type, (nativeValues[index] as Ref).value),\n );\n }\n\n return outParams;\n};\n\nfunction fn(sharedLibrary: string, symbol: string, spec: FnSpec): (...inputs: unknown[]) => unknown {\n const { args, returns: returnDescriptor, canThrow = false } = spec;\n const nativeArgTypes = buildNativeArgTypes(args, canThrow);\n const nativeFn = bind(sharedLibrary, symbol, nativeArgTypes, returnDescriptor);\n const hasPrimary = returnDescriptor.kind !== \"void\";\n const plans = buildArgSpecs(args);\n\n const shape = (inputs: unknown[], nativeValues: unknown[], nativeResult: unknown): unknown => {\n const primary = hasPrimary ? fromNative(returnDescriptor, nativeResult) : undefined;\n\n return packTupleResult(readOutParams(plans, inputs, nativeValues), primary, hasPrimary);\n };\n\n if (canThrow) {\n return (...inputs) => {\n const nativeValues = buildNativeValues(plans, inputs);\n const errorRef: Ref = { value: null };\n nativeValues.push(errorRef);\n const nativeResult = nativeFn(...nativeValues);\n checkError(errorRef);\n\n return shape(inputs, nativeValues, nativeResult);\n };\n }\n\n return (...inputs) => {\n const nativeValues = buildNativeValues(plans, inputs);\n\n return shape(inputs, nativeValues, nativeFn(...nativeValues));\n };\n}\n\nexport { fn };\n"]}