@gtkx/runtime 1.0.0-rc.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.
Files changed (116) hide show
  1. package/dist/arg.d.ts +6 -5
  2. package/dist/arg.d.ts.map +1 -1
  3. package/dist/arg.js +5 -4
  4. package/dist/arg.js.map +1 -1
  5. package/dist/bind.d.ts +3 -2
  6. package/dist/bind.d.ts.map +1 -1
  7. package/dist/bind.js +5 -3
  8. package/dist/bind.js.map +1 -1
  9. package/dist/callback.d.ts +3 -3
  10. package/dist/callback.d.ts.map +1 -1
  11. package/dist/callback.js +51 -33
  12. package/dist/callback.js.map +1 -1
  13. package/dist/descriptors.d.ts +67 -64
  14. package/dist/descriptors.d.ts.map +1 -1
  15. package/dist/descriptors.js +92 -60
  16. package/dist/descriptors.js.map +1 -1
  17. package/dist/error.d.ts +5 -6
  18. package/dist/error.d.ts.map +1 -1
  19. package/dist/error.js +10 -6
  20. package/dist/error.js.map +1 -1
  21. package/dist/exit-hook.d.ts +2 -0
  22. package/dist/exit-hook.d.ts.map +1 -0
  23. package/dist/exit-hook.js +3 -0
  24. package/dist/exit-hook.js.map +1 -0
  25. package/dist/fn.d.ts +2 -2
  26. package/dist/fn.d.ts.map +1 -1
  27. package/dist/fn.js +26 -15
  28. package/dist/fn.js.map +1 -1
  29. package/dist/index.d.ts +3 -2
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +2 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/library.d.ts +6 -5
  34. package/dist/library.d.ts.map +1 -1
  35. package/dist/library.js +6 -5
  36. package/dist/library.js.map +1 -1
  37. package/dist/lifecycle.d.ts +10 -9
  38. package/dist/lifecycle.d.ts.map +1 -1
  39. package/dist/lifecycle.js +38 -23
  40. package/dist/lifecycle.js.map +1 -1
  41. package/dist/listeners.d.ts +8 -8
  42. package/dist/listeners.d.ts.map +1 -1
  43. package/dist/listeners.js +28 -15
  44. package/dist/listeners.js.map +1 -1
  45. package/dist/mixin.d.ts +5 -11
  46. package/dist/mixin.d.ts.map +1 -1
  47. package/dist/mixin.js +24 -14
  48. package/dist/mixin.js.map +1 -1
  49. package/dist/native-value.d.ts +3 -2
  50. package/dist/native-value.d.ts.map +1 -1
  51. package/dist/native-value.js +75 -42
  52. package/dist/native-value.js.map +1 -1
  53. package/dist/object.d.ts +4 -3
  54. package/dist/object.d.ts.map +1 -1
  55. package/dist/object.js +8 -5
  56. package/dist/object.js.map +1 -1
  57. package/dist/promisify.d.ts +9 -1
  58. package/dist/promisify.d.ts.map +1 -1
  59. package/dist/promisify.js +18 -15
  60. package/dist/promisify.js.map +1 -1
  61. package/dist/properties.d.ts +14 -0
  62. package/dist/properties.d.ts.map +1 -0
  63. package/dist/properties.js +79 -0
  64. package/dist/properties.js.map +1 -0
  65. package/dist/register-class.d.ts +10 -2
  66. package/dist/register-class.d.ts.map +1 -1
  67. package/dist/register-class.js +83 -29
  68. package/dist/register-class.js.map +1 -1
  69. package/dist/registry.d.ts +23 -21
  70. package/dist/registry.d.ts.map +1 -1
  71. package/dist/registry.js +54 -35
  72. package/dist/registry.js.map +1 -1
  73. package/dist/signal.d.ts +7 -6
  74. package/dist/signal.d.ts.map +1 -1
  75. package/dist/signal.js +19 -12
  76. package/dist/signal.js.map +1 -1
  77. package/dist/t.d.ts +2 -2
  78. package/dist/t.d.ts.map +1 -1
  79. package/dist/t.js +2 -1
  80. package/dist/t.js.map +1 -1
  81. package/dist/tuple.d.ts +3 -2
  82. package/dist/tuple.d.ts.map +1 -1
  83. package/dist/tuple.js +7 -4
  84. package/dist/tuple.js.map +1 -1
  85. package/dist/type.d.ts +48 -41
  86. package/dist/type.d.ts.map +1 -1
  87. package/dist/type.js +107 -87
  88. package/dist/type.js.map +1 -1
  89. package/dist/value.d.ts +19 -10
  90. package/dist/value.d.ts.map +1 -1
  91. package/dist/value.js +164 -99
  92. package/dist/value.js.map +1 -1
  93. package/package.json +4 -6
  94. package/src/arg.ts +7 -5
  95. package/src/bind.ts +13 -4
  96. package/src/callback.ts +97 -35
  97. package/src/descriptors.ts +227 -85
  98. package/src/error.ts +18 -9
  99. package/src/exit-hook.ts +3 -0
  100. package/src/fn.ts +53 -22
  101. package/src/index.ts +4 -2
  102. package/src/library.ts +7 -5
  103. package/src/lifecycle.ts +54 -26
  104. package/src/listeners.ts +46 -18
  105. package/src/mixin.ts +39 -14
  106. package/src/native-value.ts +103 -46
  107. package/src/object.ts +19 -7
  108. package/src/promisify.ts +42 -15
  109. package/src/properties.ts +115 -0
  110. package/src/register-class.ts +157 -30
  111. package/src/registry.ts +144 -54
  112. package/src/signal.ts +53 -13
  113. package/src/t.ts +3 -1
  114. package/src/tuple.ts +16 -4
  115. package/src/type.ts +183 -93
  116. package/src/value.ts +231 -108
package/dist/signal.d.ts CHANGED
@@ -2,7 +2,7 @@ import type { Descriptor } from "@gtkx/native";
2
2
  import { type Arg } from "./arg.js";
3
3
  import { type CallbackDescriptor } from "./descriptors.js";
4
4
  /** Function invoked when a connected GObject signal is emitted. */
5
- export type SignalHandler = (...args: unknown[]) => unknown;
5
+ type SignalHandler = (...args: unknown[]) => unknown;
6
6
  type SignalConnectSpec = {
7
7
  callback: CallbackDescriptor;
8
8
  handler: SignalHandler;
@@ -12,15 +12,16 @@ type EmitArg = Arg & {
12
12
  value?: unknown;
13
13
  };
14
14
  /** Returns the signal name without its detail suffix (the part after `::`). */
15
- export declare const getSignalBaseName: (signal: string) => string;
15
+ declare const getSignalBaseName: (signal: string) => string;
16
+ declare const isSignalHandlerConnected: (instance: object, handlerId: number) => boolean;
16
17
  /**
17
18
  * Connects a handler to a GObject signal on an instance and returns the handler id.
18
19
  * @param instance Emitter to connect to.
19
20
  * @param signal Signal name, optionally including a `::detail` suffix.
20
21
  * @param spec Callback descriptor, handler function, and whether to run after the default handler.
21
22
  */
22
- export declare function connectSignal(instance: object, signal: string, spec: SignalConnectSpec): number;
23
- export declare function blockMatchedSignalHandlers(instance: object, signal: string): void;
23
+ declare function connectSignal(instance: object, signal: string, spec: SignalConnectSpec): number;
24
+ declare function blockMatchedSignalHandlers(instance: object, signal: string): void;
24
25
  /**
25
26
  * Emits a signal on an instance with the given arguments and returns its result
26
27
  * combined with any output-argument values.
@@ -29,6 +30,6 @@ export declare function blockMatchedSignalHandlers(instance: object, signal: str
29
30
  * @param args Arguments to pass, including output and inout arguments.
30
31
  * @param returnDescriptor Descriptor for the signal's return value, omitted when it returns void.
31
32
  */
32
- export declare function emitSignal(instance: object, signal: string, args: EmitArg[], returnDescriptor?: Descriptor): unknown;
33
- export {};
33
+ declare function emitSignal(instance: object, signal: string, args: EmitArg[], returnDescriptor?: Descriptor): unknown;
34
+ export { getSignalBaseName, connectSignal, blockMatchedSignalHandlers, emitSignal, isSignalHandlerConnected, type SignalHandler, };
34
35
  //# sourceMappingURL=signal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../src/signal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA0B,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,KAAK,GAAG,EAAiD,MAAM,UAAU,CAAC;AAGnF,OAAO,EAGH,KAAK,kBAAkB,EAM1B,MAAM,kBAAkB,CAAC;AAe1B,mEAAmE;AACnE,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAE5D,KAAK,iBAAiB,GAAG;IACrB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,OAAO,GAAG,GAAG,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAoBzC,+EAA+E;AAC/E,eAAO,MAAM,iBAAiB,WAAY,MAAM,KAAG,MAGlD,CAAC;AAwBF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAM/F;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGjF;AAYD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,gBAAgB,CAAC,EAAE,UAAU,GAAG,OAAO,CA6BpH"}
1
+ {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../src/signal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA0B,MAAM,cAAc,CAAC;AAEvE,OAAO,EAAE,KAAK,GAAG,EAAiD,MAAM,UAAU,CAAC;AAGnF,OAAO,EAIH,KAAK,kBAAkB,EAM1B,MAAM,kBAAkB,CAAC;AAc1B,mEAAmE;AACnE,KAAK,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAErD,KAAK,iBAAiB,GAAG;IACrB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,OAAO,GAAG,GAAG,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AA2BzC,+EAA+E;AAC/E,QAAA,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,MAI3C,CAAC;AAYF,QAAA,MAAM,wBAAwB,GAAI,UAAU,MAAM,EAAE,WAAW,MAAM,KAAG,OACA,CAAC;AAoBzE;;;;;GAKG;AACH,iBAAS,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAOxF;AAED,iBAAS,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAG1E;AAoBD;;;;;;;GAOG;AACH,iBAAS,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,gBAAgB,CAAC,EAAE,UAAU,GAAG,OAAO,CAiC7G;AAED,OAAO,EACH,iBAAiB,EACjB,aAAa,EACb,0BAA0B,EAC1B,UAAU,EACV,wBAAwB,EACxB,KAAK,aAAa,GACrB,CAAC"}
package/dist/signal.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { isCallerAllocatedArg, isInoutArg, isOutputArg } from "./arg.js";
2
2
  import { bind, createBindCache } from "./bind.js";
3
3
  import { wrapCallback } from "./callback.js";
4
- import { arrayT, biguint64T, objectT, stringT, uint32T, uint64T, voidT, } from "./descriptors.js";
4
+ import { arrayT, biguint64T, booleanT, objectT, stringT, uint32T, uint64T, voidT, } from "./descriptors.js";
5
5
  import { LIB, VALUE_SIZE, VALUE_T } from "./library.js";
6
6
  import { getHandle } from "./registry.js";
7
7
  import { packTupleResult } from "./tuple.js";
@@ -11,23 +11,26 @@ const gQuarkFromString = bind(LIB, "g_quark_from_string", [stringT("borrowed")],
11
11
  const gSignalLookup = bind(LIB, "g_signal_lookup", [stringT("borrowed"), biguint64T], uint32T);
12
12
  const gSignalEmitv = bind(LIB, "g_signal_emitv", [arrayT(VALUE_T, "array", "borrowed", { elementSize: VALUE_SIZE }), uint32T, uint32T, VALUE_T], voidT);
13
13
  const gSignalHandlersBlockMatched = bind(LIB, "g_signal_handlers_block_matched", [objectT("borrowed"), uint32T, uint32T, uint32T, objectT("borrowed"), objectT("borrowed"), objectT("borrowed")], uint32T);
14
+ const gSignalHandlerIsConnected = bind(LIB, "g_signal_handler_is_connected", [objectT("borrowed"), uint64T], booleanT);
14
15
  /** Returns the signal name without its detail suffix (the part after `::`). */
15
- export const getSignalBaseName = (signal) => {
16
+ const getSignalBaseName = (signal) => {
16
17
  const detailIndex = signal.indexOf("::");
17
18
  return detailIndex === -1 ? signal : signal.slice(0, detailIndex);
18
19
  };
19
- function getQuarkForSignalDetail(signal) {
20
+ function getSignalDetailQuark(signal) {
20
21
  const detailIndex = signal.indexOf("::");
21
- if (detailIndex === -1)
22
+ if (detailIndex === -1) {
22
23
  return 0;
24
+ }
23
25
  return gQuarkFromString(signal.slice(detailIndex + 2));
24
26
  }
27
+ const isSignalHandlerConnected = (instance, handlerId) => gSignalHandlerIsConnected(getHandle(instance), handlerId);
25
28
  const getSignalId = (instance, signal) => {
26
29
  const type = instance.__type__;
27
30
  return gSignalLookup(getSignalBaseName(signal), type);
28
31
  };
29
32
  function connectBind(type, signal, callback) {
30
- const key = `${type}\0${getSignalBaseName(signal)}`;
33
+ const key = `${String(type)}\0${getSignalBaseName(signal)}`;
31
34
  return connectCache(key, LIB, "g_signal_connect_data", [objectT("borrowed"), stringT("borrowed"), callback, uint32T], uint64T);
32
35
  }
33
36
  /**
@@ -36,23 +39,25 @@ function connectBind(type, signal, callback) {
36
39
  * @param signal Signal name, optionally including a `::detail` suffix.
37
40
  * @param spec Callback descriptor, handler function, and whether to run after the default handler.
38
41
  */
39
- export function connectSignal(instance, signal, spec) {
42
+ function connectSignal(instance, signal, spec) {
40
43
  const { callback, handler, after } = spec;
41
44
  const wrapped = wrapCallback(handler, callback, "emitter");
42
45
  const type = instance.__type__;
43
46
  const connect = connectBind(type, signal, callback);
44
47
  return connect(getHandle(instance), signal, wrapped, after ? 1 : 0);
45
48
  }
46
- export function blockMatchedSignalHandlers(instance, signal) {
49
+ function blockMatchedSignalHandlers(instance, signal) {
47
50
  const signalId = getSignalId(instance, signal);
48
51
  gSignalHandlersBlockMatched(getHandle(instance), 1, signalId, 0, undefined, undefined, undefined);
49
52
  }
50
53
  const createEmitValue = (arg) => {
51
- if (!isOutputArg(arg))
54
+ if (!isOutputArg(arg)) {
52
55
  return { value: toValue(arg.type, arg.value) };
56
+ }
53
57
  if (isCallerAllocatedArg(arg)) {
54
- if (isInoutArg(arg))
58
+ if (isInoutArg(arg)) {
55
59
  return { value: inoutValueForBoxedDescriptor(arg.type, arg.value) };
60
+ }
56
61
  const value = outValueForBoxedDescriptor(arg.type, arg.value);
57
62
  return { value, read: () => getBoxedValue(value) };
58
63
  }
@@ -66,16 +71,17 @@ const createEmitValue = (arg) => {
66
71
  * @param args Arguments to pass, including output and inout arguments.
67
72
  * @param returnDescriptor Descriptor for the signal's return value, omitted when it returns void.
68
73
  */
69
- export function emitSignal(instance, signal, args, returnDescriptor) {
74
+ function emitSignal(instance, signal, args, returnDescriptor) {
70
75
  const signalId = getSignalId(instance, signal);
71
- const detail = getQuarkForSignalDetail(signal);
76
+ const detail = getSignalDetailQuark(signal);
72
77
  const values = [toValue(objectT("full"), instance)];
73
78
  const reads = [];
74
79
  for (const arg of args) {
75
80
  const { value, read } = createEmitValue(arg);
76
81
  values.push(value);
77
- if (read)
82
+ if (read) {
78
83
  reads.push(read);
84
+ }
79
85
  }
80
86
  if (returnDescriptor !== undefined) {
81
87
  const returnValue = newValueForDescriptor(returnDescriptor);
@@ -85,4 +91,5 @@ export function emitSignal(instance, signal, args, returnDescriptor) {
85
91
  gSignalEmitv(values, signalId, detail, undefined);
86
92
  return packTupleResult(reads.map((read) => read()), undefined, false);
87
93
  }
94
+ export { getSignalBaseName, connectSignal, blockMatchedSignalHandlers, emitSignal, isSignalHandlerConnected, };
88
95
  //# sourceMappingURL=signal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signal.js","sourceRoot":"","sources":["../src/signal.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Descriptor, ExternalObject, Handle } from \"@gtkx/native\";\nimport { type Arg, isCallerAllocatedArg, isInoutArg, isOutputArg } from \"./arg.js\";\nimport { bind, createBindCache } from \"./bind.js\";\nimport { wrapCallback } from \"./callback.js\";\nimport {\n arrayT,\n biguint64T,\n type CallbackDescriptor,\n objectT,\n stringT,\n uint32T,\n uint64T,\n voidT,\n} from \"./descriptors.js\";\nimport { LIB, VALUE_SIZE, VALUE_T } from \"./library.js\";\nimport { getHandle } from \"./registry.js\";\nimport { packTupleResult } from \"./tuple.js\";\nimport type { TypedClass } from \"./type.js\";\nimport {\n fromValue,\n getBoxedValue,\n inoutValueForBoxedDescriptor,\n newValueForDescriptor,\n outValueForBoxedDescriptor,\n outValueForDescriptor,\n toValue,\n} from \"./value.js\";\n\n/** Function invoked when a connected GObject signal is emitted. */\nexport type SignalHandler = (...args: unknown[]) => unknown;\n\ntype SignalConnectSpec = {\n callback: CallbackDescriptor;\n handler: SignalHandler;\n after: boolean;\n};\n\ntype EmitArg = Arg & { value?: unknown };\n\nconst connectCache = createBindCache();\nconst gQuarkFromString = bind(LIB, \"g_quark_from_string\", [stringT(\"borrowed\")], uint32T);\nconst gSignalLookup = bind(LIB, \"g_signal_lookup\", [stringT(\"borrowed\"), biguint64T], uint32T);\n\nconst gSignalEmitv = bind(\n LIB,\n \"g_signal_emitv\",\n [arrayT(VALUE_T, \"array\", \"borrowed\", { elementSize: VALUE_SIZE }), uint32T, uint32T, VALUE_T],\n voidT,\n);\n\nconst gSignalHandlersBlockMatched = bind(\n LIB,\n \"g_signal_handlers_block_matched\",\n [objectT(\"borrowed\"), uint32T, uint32T, uint32T, objectT(\"borrowed\"), objectT(\"borrowed\"), objectT(\"borrowed\")],\n uint32T,\n);\n\n/** Returns the signal name without its detail suffix (the part after `::`). */\nexport const getSignalBaseName = (signal: string): string => {\n const detailIndex = signal.indexOf(\"::\");\n return detailIndex === -1 ? signal : signal.slice(0, detailIndex);\n};\n\nfunction getQuarkForSignalDetail(signal: string): number {\n const detailIndex = signal.indexOf(\"::\");\n if (detailIndex === -1) return 0;\n return gQuarkFromString(signal.slice(detailIndex + 2)) as number;\n}\n\nconst getSignalId = (instance: object, signal: string): number => {\n const type: bigint = (instance as TypedClass).__type__;\n return gSignalLookup(getSignalBaseName(signal), type) as number;\n};\n\nfunction connectBind(type: bigint, signal: string, callback: CallbackDescriptor): (...values: unknown[]) => unknown {\n const key = `${type}\\0${getSignalBaseName(signal)}`;\n return connectCache(\n key,\n LIB,\n \"g_signal_connect_data\",\n [objectT(\"borrowed\"), stringT(\"borrowed\"), callback, uint32T],\n uint64T,\n );\n}\n\n/**\n * Connects a handler to a GObject signal on an instance and returns the handler id.\n * @param instance Emitter to connect to.\n * @param signal Signal name, optionally including a `::detail` suffix.\n * @param spec Callback descriptor, handler function, and whether to run after the default handler.\n */\nexport function connectSignal(instance: object, signal: string, spec: SignalConnectSpec): number {\n const { callback, handler, after } = spec;\n const wrapped = wrapCallback(handler, callback, \"emitter\");\n const type: bigint = (instance as TypedClass).__type__;\n const connect = connectBind(type, signal, callback);\n return connect(getHandle(instance), signal, wrapped, after ? 1 : 0) as number;\n}\n\nexport function blockMatchedSignalHandlers(instance: object, signal: string): void {\n const signalId = getSignalId(instance, signal);\n gSignalHandlersBlockMatched(getHandle(instance), 1, signalId, 0, undefined, undefined, undefined);\n}\n\nconst createEmitValue = (arg: EmitArg): { value: ExternalObject<Handle>; read?: () => unknown } => {\n if (!isOutputArg(arg)) return { value: toValue(arg.type, arg.value) };\n if (isCallerAllocatedArg(arg)) {\n if (isInoutArg(arg)) return { value: inoutValueForBoxedDescriptor(arg.type, arg.value as object) };\n const value = outValueForBoxedDescriptor(arg.type, arg.value as object);\n return { value, read: () => getBoxedValue(value) };\n }\n return isInoutArg(arg) ? outValueForDescriptor(arg.type, arg.value) : outValueForDescriptor(arg.type);\n};\n\n/**\n * Emits a signal on an instance with the given arguments and returns its result\n * combined with any output-argument values.\n * @param instance Emitter to emit the signal on.\n * @param signal Signal name, optionally including a `::detail` suffix.\n * @param args Arguments to pass, including output and inout arguments.\n * @param returnDescriptor Descriptor for the signal's return value, omitted when it returns void.\n */\nexport function emitSignal(instance: object, signal: string, args: EmitArg[], returnDescriptor?: Descriptor): unknown {\n const signalId = getSignalId(instance, signal);\n const detail = getQuarkForSignalDetail(signal);\n const values: ExternalObject<Handle>[] = [toValue(objectT(\"full\"), instance)];\n const reads: (() => unknown)[] = [];\n\n for (const arg of args) {\n const { value, read } = createEmitValue(arg);\n values.push(value);\n if (read) reads.push(read);\n }\n\n if (returnDescriptor !== undefined) {\n const returnValue = newValueForDescriptor(returnDescriptor);\n gSignalEmitv(values, signalId, detail, returnValue);\n return packTupleResult(\n reads.map((read) => read()),\n fromValue(returnValue),\n true,\n );\n }\n\n gSignalEmitv(values, signalId, detail, undefined);\n\n return packTupleResult(\n reads.map((read) => read()),\n undefined,\n false,\n );\n}\n"]}
1
+ {"version":3,"file":"signal.js","sourceRoot":"","sources":["../src/signal.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Descriptor, ExternalObject, Handle } from \"@gtkx/native\";\nimport type { TypedClass } from \"./type.js\";\nimport { type Arg, isCallerAllocatedArg, isInoutArg, isOutputArg } from \"./arg.js\";\nimport { bind, createBindCache } from \"./bind.js\";\nimport { wrapCallback } from \"./callback.js\";\nimport {\n arrayT,\n biguint64T,\n booleanT,\n type CallbackDescriptor,\n objectT,\n stringT,\n uint32T,\n uint64T,\n voidT,\n} from \"./descriptors.js\";\nimport { LIB, VALUE_SIZE, VALUE_T } from \"./library.js\";\nimport { getHandle } from \"./registry.js\";\nimport { packTupleResult } from \"./tuple.js\";\nimport {\n fromValue,\n getBoxedValue,\n inoutValueForBoxedDescriptor,\n newValueForDescriptor,\n outValueForBoxedDescriptor,\n outValueForDescriptor,\n toValue,\n} from \"./value.js\";\n\n/** Function invoked when a connected GObject signal is emitted. */\ntype SignalHandler = (...args: unknown[]) => unknown;\n\ntype SignalConnectSpec = {\n callback: CallbackDescriptor;\n handler: SignalHandler;\n after: boolean;\n};\n\ntype EmitArg = Arg & { value?: unknown };\n\nconst connectCache = createBindCache();\nconst gQuarkFromString = bind(LIB, \"g_quark_from_string\", [stringT(\"borrowed\")], uint32T);\nconst gSignalLookup = bind(LIB, \"g_signal_lookup\", [stringT(\"borrowed\"), biguint64T], uint32T);\n\nconst gSignalEmitv = bind(\n LIB,\n \"g_signal_emitv\",\n [arrayT(VALUE_T, \"array\", \"borrowed\", { elementSize: VALUE_SIZE }), uint32T, uint32T, VALUE_T],\n voidT,\n);\n\nconst gSignalHandlersBlockMatched = bind(\n LIB,\n \"g_signal_handlers_block_matched\",\n [objectT(\"borrowed\"), uint32T, uint32T, uint32T, objectT(\"borrowed\"), objectT(\"borrowed\"), objectT(\"borrowed\")],\n uint32T,\n);\n\nconst gSignalHandlerIsConnected = bind(\n LIB,\n \"g_signal_handler_is_connected\",\n [objectT(\"borrowed\"), uint64T],\n booleanT,\n);\n\n/** Returns the signal name without its detail suffix (the part after `::`). */\nconst getSignalBaseName = (signal: string): string => {\n const detailIndex = signal.indexOf(\"::\");\n\n return detailIndex === -1 ? signal : signal.slice(0, detailIndex);\n};\n\nfunction getSignalDetailQuark(signal: string): number {\n const detailIndex = signal.indexOf(\"::\");\n\n if (detailIndex === -1) {\n return 0;\n }\n\n return gQuarkFromString(signal.slice(detailIndex + 2)) as number;\n}\n\nconst isSignalHandlerConnected = (instance: object, handlerId: number): boolean =>\n gSignalHandlerIsConnected(getHandle(instance), handlerId) as boolean;\n\nconst getSignalId = (instance: object, signal: string): number => {\n const type: bigint = (instance as TypedClass).__type__;\n\n return gSignalLookup(getSignalBaseName(signal), type) as number;\n};\n\nfunction connectBind(type: bigint, signal: string, callback: CallbackDescriptor): (...values: unknown[]) => unknown {\n const key = `${String(type)}\\0${getSignalBaseName(signal)}`;\n\n return connectCache(\n key,\n LIB,\n \"g_signal_connect_data\",\n [objectT(\"borrowed\"), stringT(\"borrowed\"), callback, uint32T],\n uint64T,\n );\n}\n\n/**\n * Connects a handler to a GObject signal on an instance and returns the handler id.\n * @param instance Emitter to connect to.\n * @param signal Signal name, optionally including a `::detail` suffix.\n * @param spec Callback descriptor, handler function, and whether to run after the default handler.\n */\nfunction connectSignal(instance: object, signal: string, spec: SignalConnectSpec): number {\n const { callback, handler, after } = spec;\n const wrapped = wrapCallback(handler, callback, \"emitter\");\n const type: bigint = (instance as TypedClass).__type__;\n const connect = connectBind(type, signal, callback);\n\n return connect(getHandle(instance), signal, wrapped, after ? 1 : 0) as number;\n}\n\nfunction blockMatchedSignalHandlers(instance: object, signal: string): void {\n const signalId = getSignalId(instance, signal);\n gSignalHandlersBlockMatched(getHandle(instance), 1, signalId, 0, undefined, undefined, undefined);\n}\n\nconst createEmitValue = (arg: EmitArg): { value: ExternalObject<Handle>; read?: () => unknown } => {\n if (!isOutputArg(arg)) {\n return { value: toValue(arg.type, arg.value) };\n }\n\n if (isCallerAllocatedArg(arg)) {\n if (isInoutArg(arg)) {\n return { value: inoutValueForBoxedDescriptor(arg.type, arg.value as object) };\n }\n\n const value = outValueForBoxedDescriptor(arg.type, arg.value as object);\n\n return { value, read: () => getBoxedValue(value) };\n }\n\n return isInoutArg(arg) ? outValueForDescriptor(arg.type, arg.value) : outValueForDescriptor(arg.type);\n};\n\n/**\n * Emits a signal on an instance with the given arguments and returns its result\n * combined with any output-argument values.\n * @param instance Emitter to emit the signal on.\n * @param signal Signal name, optionally including a `::detail` suffix.\n * @param args Arguments to pass, including output and inout arguments.\n * @param returnDescriptor Descriptor for the signal's return value, omitted when it returns void.\n */\nfunction emitSignal(instance: object, signal: string, args: EmitArg[], returnDescriptor?: Descriptor): unknown {\n const signalId = getSignalId(instance, signal);\n const detail = getSignalDetailQuark(signal);\n const values: ExternalObject<Handle>[] = [toValue(objectT(\"full\"), instance)];\n const reads: (() => unknown)[] = [];\n\n for (const arg of args) {\n const { value, read } = createEmitValue(arg);\n values.push(value);\n\n if (read) {\n reads.push(read);\n }\n }\n\n if (returnDescriptor !== undefined) {\n const returnValue = newValueForDescriptor(returnDescriptor);\n gSignalEmitv(values, signalId, detail, returnValue);\n\n return packTupleResult(\n reads.map((read) => read()),\n fromValue(returnValue),\n true,\n );\n }\n\n gSignalEmitv(values, signalId, detail, undefined);\n\n return packTupleResult(\n reads.map((read) => read()),\n undefined,\n false,\n );\n}\n\nexport {\n getSignalBaseName,\n connectSignal,\n blockMatchedSignalHandlers,\n emitSignal,\n isSignalHandlerConnected,\n type SignalHandler,\n};\n"]}
package/dist/t.d.ts CHANGED
@@ -45,6 +45,6 @@ type T = {
45
45
  * FFI marshalling, plus `bind` to bind a native function and `fn` to describe a
46
46
  * function signature.
47
47
  */
48
- export declare const t: T;
49
- export {};
48
+ declare const t: T;
49
+ export { t };
50
50
  //# sourceMappingURL=t.d.ts.map
package/dist/t.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"t.d.ts","sourceRoot":"","sources":["../src/t.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7B,KAAK,CAAC,GAAG;IACL,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,IAAI,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAC3B,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC/B,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC/B,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC/B,QAAQ,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC;IACnC,SAAS,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC;IACrC,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,OAAO,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;IACjC,OAAO,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;IACjC,OAAO,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;IACjC,IAAI,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAC3B,OAAO,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;IACjC,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC/B,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC/B,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC/B,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC/B,WAAW,EAAE,OAAO,OAAO,CAAC,YAAY,CAAC;IACzC,GAAG,EAAE,OAAO,OAAO,CAAC,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC;IACrC,IAAI,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAC3B,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,IAAI,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAC3B,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,QAAQ,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC;IACnC,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC/B,SAAS,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC;IACrC,UAAU,EAAE,OAAO,OAAO,CAAC,WAAW,CAAC;IACvC,UAAU,EAAE,OAAO,OAAO,CAAC,WAAW,CAAC;IACvC,QAAQ,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC;IACnC,EAAE,EAAE,OAAO,EAAE,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,CAAC,EAAE,CAsCf,CAAC"}
1
+ {"version":3,"file":"t.d.ts","sourceRoot":"","sources":["../src/t.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7B,KAAK,CAAC,GAAG;IACL,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,IAAI,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAC3B,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC/B,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC/B,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC/B,QAAQ,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC;IACnC,SAAS,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC;IACrC,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,OAAO,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;IACjC,OAAO,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;IACjC,OAAO,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;IACjC,IAAI,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAC3B,OAAO,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;IACjC,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC/B,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC/B,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC/B,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC/B,WAAW,EAAE,OAAO,OAAO,CAAC,YAAY,CAAC;IACzC,GAAG,EAAE,OAAO,OAAO,CAAC,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC;IACrC,IAAI,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAC3B,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,IAAI,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IAC3B,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC7B,QAAQ,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC;IACnC,MAAM,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAC/B,SAAS,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC;IACrC,UAAU,EAAE,OAAO,OAAO,CAAC,WAAW,CAAC;IACvC,UAAU,EAAE,OAAO,OAAO,CAAC,WAAW,CAAC;IACvC,QAAQ,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC;IACnC,EAAE,EAAE,OAAO,EAAE,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,CAAC,EAAE,CAsCR,CAAC;AAEF,OAAO,EAAE,CAAC,EAAE,CAAC"}
package/dist/t.js CHANGED
@@ -6,7 +6,7 @@ import { fn } from "./fn.js";
6
6
  * FFI marshalling, plus `bind` to bind a native function and `fn` to describe a
7
7
  * function signature.
8
8
  */
9
- export const t = {
9
+ const t = {
10
10
  bind,
11
11
  int8: helpers.int8T,
12
12
  uint8: helpers.uint8T,
@@ -45,4 +45,5 @@ export const t = {
45
45
  callback: helpers.callbackT,
46
46
  fn,
47
47
  };
48
+ export { t };
48
49
  //# sourceMappingURL=t.js.map
package/dist/t.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"t.js","sourceRoot":"","sources":["../src/t.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AA0C7B;;;;GAIG;AACH,MAAM,CAAC,MAAM,CAAC,GAAM;IAChB,IAAI;IACJ,IAAI,EAAE,OAAO,CAAC,KAAK;IACnB,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,MAAM,EAAE,OAAO,CAAC,OAAO;IACvB,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,MAAM,EAAE,OAAO,CAAC,OAAO;IACvB,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,MAAM,EAAE,OAAO,CAAC,OAAO;IACvB,QAAQ,EAAE,OAAO,CAAC,SAAS;IAC3B,SAAS,EAAE,OAAO,CAAC,UAAU;IAC7B,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,OAAO,EAAE,OAAO,CAAC,QAAQ;IACzB,OAAO,EAAE,OAAO,CAAC,QAAQ;IACzB,OAAO,EAAE,OAAO,CAAC,QAAQ;IACzB,IAAI,EAAE,OAAO,CAAC,KAAK;IACnB,OAAO,EAAE,OAAO,CAAC,QAAQ;IACzB,MAAM,EAAE,OAAO,CAAC,OAAO;IACvB,MAAM,EAAE,OAAO,CAAC,OAAO;IACvB,MAAM,EAAE,OAAO,CAAC,OAAO;IACvB,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,MAAM,EAAE,OAAO,CAAC,OAAO;IACvB,WAAW,EAAE,OAAO,CAAC,YAAY;IACjC,GAAG,EAAE,OAAO,CAAC,IAAI;IACjB,SAAS,EAAE,OAAO,CAAC,UAAU;IAC7B,IAAI,EAAE,OAAO,CAAC,KAAK;IACnB,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,IAAI,EAAE,OAAO,CAAC,KAAK;IACnB,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,QAAQ,EAAE,OAAO,CAAC,SAAS;IAC3B,MAAM,EAAE,OAAO,CAAC,OAAO;IACvB,SAAS,EAAE,OAAO,CAAC,UAAU;IAC7B,UAAU,EAAE,OAAO,CAAC,WAAW;IAC/B,UAAU,EAAE,OAAO,CAAC,WAAW;IAC/B,QAAQ,EAAE,OAAO,CAAC,SAAS;IAC3B,EAAE;CACL,CAAC","sourcesContent":["import { bind } from \"./bind.js\";\nimport * as helpers from \"./descriptors.js\";\nimport { fn } from \"./fn.js\";\n\ntype T = {\n bind: typeof bind;\n int8: typeof helpers.int8T;\n uint8: typeof helpers.uint8T;\n int16: typeof helpers.int16T;\n uint16: typeof helpers.uint16T;\n int32: typeof helpers.int32T;\n uint32: typeof helpers.uint32T;\n int64: typeof helpers.int64T;\n uint64: typeof helpers.uint64T;\n bigint64: typeof helpers.bigint64T;\n biguint64: typeof helpers.biguint64T;\n gtype: typeof helpers.gtypeT;\n float32: typeof helpers.float32T;\n float64: typeof helpers.float64T;\n boolean: typeof helpers.booleanT;\n void: typeof helpers.voidT;\n unichar: typeof helpers.unicharT;\n buffer: typeof helpers.bufferT;\n string: typeof helpers.stringT;\n object: typeof helpers.objectT;\n boxed: typeof helpers.boxedT;\n struct: typeof helpers.structT;\n fundamental: typeof helpers.fundamentalT;\n ref: typeof helpers.refT;\n hashTable: typeof helpers.hashTableT;\n enum: typeof helpers.enumT;\n flags: typeof helpers.flagsT;\n array: typeof helpers.arrayT;\n list: typeof helpers.listT;\n slist: typeof helpers.slistT;\n ptrArray: typeof helpers.ptrArrayT;\n gArray: typeof helpers.gArrayT;\n byteArray: typeof helpers.byteArrayT;\n sizedArray: typeof helpers.sizedArrayT;\n fixedArray: typeof helpers.fixedArrayT;\n callback: typeof helpers.callbackT;\n fn: typeof fn;\n};\n\n/**\n * Type descriptor builder: a collection of factory helpers that describe C types for\n * FFI marshalling, plus `bind` to bind a native function and `fn` to describe a\n * function signature.\n */\nexport const t: T = {\n bind,\n int8: helpers.int8T,\n uint8: helpers.uint8T,\n int16: helpers.int16T,\n uint16: helpers.uint16T,\n int32: helpers.int32T,\n uint32: helpers.uint32T,\n int64: helpers.int64T,\n uint64: helpers.uint64T,\n bigint64: helpers.bigint64T,\n biguint64: helpers.biguint64T,\n gtype: helpers.gtypeT,\n float32: helpers.float32T,\n float64: helpers.float64T,\n boolean: helpers.booleanT,\n void: helpers.voidT,\n unichar: helpers.unicharT,\n buffer: helpers.bufferT,\n string: helpers.stringT,\n object: helpers.objectT,\n boxed: helpers.boxedT,\n struct: helpers.structT,\n fundamental: helpers.fundamentalT,\n ref: helpers.refT,\n hashTable: helpers.hashTableT,\n enum: helpers.enumT,\n flags: helpers.flagsT,\n array: helpers.arrayT,\n list: helpers.listT,\n slist: helpers.slistT,\n ptrArray: helpers.ptrArrayT,\n gArray: helpers.gArrayT,\n byteArray: helpers.byteArrayT,\n sizedArray: helpers.sizedArrayT,\n fixedArray: helpers.fixedArrayT,\n callback: helpers.callbackT,\n fn,\n};\n"]}
1
+ {"version":3,"file":"t.js","sourceRoot":"","sources":["../src/t.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AA0C7B;;;;GAIG;AACH,MAAM,CAAC,GAAM;IACT,IAAI;IACJ,IAAI,EAAE,OAAO,CAAC,KAAK;IACnB,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,MAAM,EAAE,OAAO,CAAC,OAAO;IACvB,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,MAAM,EAAE,OAAO,CAAC,OAAO;IACvB,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,MAAM,EAAE,OAAO,CAAC,OAAO;IACvB,QAAQ,EAAE,OAAO,CAAC,SAAS;IAC3B,SAAS,EAAE,OAAO,CAAC,UAAU;IAC7B,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,OAAO,EAAE,OAAO,CAAC,QAAQ;IACzB,OAAO,EAAE,OAAO,CAAC,QAAQ;IACzB,OAAO,EAAE,OAAO,CAAC,QAAQ;IACzB,IAAI,EAAE,OAAO,CAAC,KAAK;IACnB,OAAO,EAAE,OAAO,CAAC,QAAQ;IACzB,MAAM,EAAE,OAAO,CAAC,OAAO;IACvB,MAAM,EAAE,OAAO,CAAC,OAAO;IACvB,MAAM,EAAE,OAAO,CAAC,OAAO;IACvB,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,MAAM,EAAE,OAAO,CAAC,OAAO;IACvB,WAAW,EAAE,OAAO,CAAC,YAAY;IACjC,GAAG,EAAE,OAAO,CAAC,IAAI;IACjB,SAAS,EAAE,OAAO,CAAC,UAAU;IAC7B,IAAI,EAAE,OAAO,CAAC,KAAK;IACnB,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,IAAI,EAAE,OAAO,CAAC,KAAK;IACnB,KAAK,EAAE,OAAO,CAAC,MAAM;IACrB,QAAQ,EAAE,OAAO,CAAC,SAAS;IAC3B,MAAM,EAAE,OAAO,CAAC,OAAO;IACvB,SAAS,EAAE,OAAO,CAAC,UAAU;IAC7B,UAAU,EAAE,OAAO,CAAC,WAAW;IAC/B,UAAU,EAAE,OAAO,CAAC,WAAW;IAC/B,QAAQ,EAAE,OAAO,CAAC,SAAS;IAC3B,EAAE;CACL,CAAC;AAEF,OAAO,EAAE,CAAC,EAAE,CAAC","sourcesContent":["import { bind } from \"./bind.js\";\nimport * as helpers from \"./descriptors.js\";\nimport { fn } from \"./fn.js\";\n\ntype T = {\n bind: typeof bind;\n int8: typeof helpers.int8T;\n uint8: typeof helpers.uint8T;\n int16: typeof helpers.int16T;\n uint16: typeof helpers.uint16T;\n int32: typeof helpers.int32T;\n uint32: typeof helpers.uint32T;\n int64: typeof helpers.int64T;\n uint64: typeof helpers.uint64T;\n bigint64: typeof helpers.bigint64T;\n biguint64: typeof helpers.biguint64T;\n gtype: typeof helpers.gtypeT;\n float32: typeof helpers.float32T;\n float64: typeof helpers.float64T;\n boolean: typeof helpers.booleanT;\n void: typeof helpers.voidT;\n unichar: typeof helpers.unicharT;\n buffer: typeof helpers.bufferT;\n string: typeof helpers.stringT;\n object: typeof helpers.objectT;\n boxed: typeof helpers.boxedT;\n struct: typeof helpers.structT;\n fundamental: typeof helpers.fundamentalT;\n ref: typeof helpers.refT;\n hashTable: typeof helpers.hashTableT;\n enum: typeof helpers.enumT;\n flags: typeof helpers.flagsT;\n array: typeof helpers.arrayT;\n list: typeof helpers.listT;\n slist: typeof helpers.slistT;\n ptrArray: typeof helpers.ptrArrayT;\n gArray: typeof helpers.gArrayT;\n byteArray: typeof helpers.byteArrayT;\n sizedArray: typeof helpers.sizedArrayT;\n fixedArray: typeof helpers.fixedArrayT;\n callback: typeof helpers.callbackT;\n fn: typeof fn;\n};\n\n/**\n * Type descriptor builder: a collection of factory helpers that describe C types for\n * FFI marshalling, plus `bind` to bind a native function and `fn` to describe a\n * function signature.\n */\nconst t: T = {\n bind,\n int8: helpers.int8T,\n uint8: helpers.uint8T,\n int16: helpers.int16T,\n uint16: helpers.uint16T,\n int32: helpers.int32T,\n uint32: helpers.uint32T,\n int64: helpers.int64T,\n uint64: helpers.uint64T,\n bigint64: helpers.bigint64T,\n biguint64: helpers.biguint64T,\n gtype: helpers.gtypeT,\n float32: helpers.float32T,\n float64: helpers.float64T,\n boolean: helpers.booleanT,\n void: helpers.voidT,\n unichar: helpers.unicharT,\n buffer: helpers.bufferT,\n string: helpers.stringT,\n object: helpers.objectT,\n boxed: helpers.boxedT,\n struct: helpers.structT,\n fundamental: helpers.fundamentalT,\n ref: helpers.refT,\n hashTable: helpers.hashTableT,\n enum: helpers.enumT,\n flags: helpers.flagsT,\n array: helpers.arrayT,\n list: helpers.listT,\n slist: helpers.slistT,\n ptrArray: helpers.ptrArrayT,\n gArray: helpers.gArrayT,\n byteArray: helpers.byteArrayT,\n sizedArray: helpers.sizedArrayT,\n fixedArray: helpers.fixedArrayT,\n callback: helpers.callbackT,\n fn,\n};\n\nexport { t };\n"]}
package/dist/tuple.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- export declare const packTupleResult: (outs: unknown[], primary: unknown, hasPrimary: boolean) => unknown;
2
- export declare const splitTupleResult: (result: unknown, hasPrimary: boolean, outCount: number) => {
1
+ declare const packTupleResult: (outs: unknown[], primary: unknown, hasPrimary: boolean) => unknown;
2
+ declare const splitTupleResult: (result: unknown, hasPrimary: boolean, outCount: number) => {
3
3
  primary: unknown;
4
4
  outValues: unknown[];
5
5
  };
6
+ export { packTupleResult, splitTupleResult };
6
7
  //# sourceMappingURL=tuple.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tuple.d.ts","sourceRoot":"","sources":["../src/tuple.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,SAAU,OAAO,EAAE,WAAW,OAAO,cAAc,OAAO,KAAG,OAOxF,CAAC;AAEF,eAAO,MAAM,gBAAgB,WACjB,OAAO,cACH,OAAO,YACT,MAAM,KACjB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,EAAE,CAAA;CAW1C,CAAC"}
1
+ {"version":3,"file":"tuple.d.ts","sourceRoot":"","sources":["../src/tuple.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,eAAe,GAAI,MAAM,OAAO,EAAE,EAAE,SAAS,OAAO,EAAE,YAAY,OAAO,KAAG,OAcjF,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAClB,QAAQ,OAAO,EACf,YAAY,OAAO,EACnB,UAAU,MAAM,KACjB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,EAAE,CAAA;CAc1C,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC"}
package/dist/tuple.js CHANGED
@@ -1,14 +1,16 @@
1
- export const packTupleResult = (outs, primary, hasPrimary) => {
1
+ const packTupleResult = (outs, primary, hasPrimary) => {
2
2
  if (hasPrimary) {
3
3
  return outs.length === 0 ? primary : [primary, ...outs];
4
4
  }
5
- if (outs.length === 0)
5
+ if (outs.length === 0) {
6
6
  return undefined;
7
- if (outs.length === 1)
7
+ }
8
+ if (outs.length === 1) {
8
9
  return outs[0];
10
+ }
9
11
  return outs;
10
12
  };
11
- export const splitTupleResult = (result, hasPrimary, outCount) => {
13
+ const splitTupleResult = (result, hasPrimary, outCount) => {
12
14
  if (hasPrimary) {
13
15
  if (Array.isArray(result)) {
14
16
  return { primary: result[0], outValues: result.slice(1) };
@@ -20,4 +22,5 @@ export const splitTupleResult = (result, hasPrimary, outCount) => {
20
22
  }
21
23
  return { primary: undefined, outValues: Array.isArray(result) ? result : [] };
22
24
  };
25
+ export { packTupleResult, splitTupleResult };
23
26
  //# sourceMappingURL=tuple.js.map
package/dist/tuple.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tuple.js","sourceRoot":"","sources":["../src/tuple.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAe,EAAE,OAAgB,EAAE,UAAmB,EAAW,EAAE;IAC/F,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC5B,MAAe,EACf,UAAmB,EACnB,QAAgB,EAC0B,EAAE;IAC5C,IAAI,UAAU,EAAE,CAAC;QACb,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC9C,CAAC;IACD,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAClF,CAAC,CAAC","sourcesContent":["export const packTupleResult = (outs: unknown[], primary: unknown, hasPrimary: boolean): unknown => {\n if (hasPrimary) {\n return outs.length === 0 ? primary : [primary, ...outs];\n }\n if (outs.length === 0) return undefined;\n if (outs.length === 1) return outs[0];\n return outs;\n};\n\nexport const splitTupleResult = (\n result: unknown,\n hasPrimary: boolean,\n outCount: number,\n): { primary: unknown; outValues: unknown[] } => {\n if (hasPrimary) {\n if (Array.isArray(result)) {\n return { primary: result[0], outValues: result.slice(1) };\n }\n return { primary: result, outValues: [] };\n }\n if (outCount === 1) {\n return { primary: undefined, outValues: [result] };\n }\n return { primary: undefined, outValues: Array.isArray(result) ? result : [] };\n};\n"]}
1
+ {"version":3,"file":"tuple.js","sourceRoot":"","sources":["../src/tuple.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,CAAC,IAAe,EAAE,OAAgB,EAAE,UAAmB,EAAW,EAAE;IACxF,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACrB,MAAe,EACf,UAAmB,EACnB,QAAgB,EAC0B,EAAE;IAC5C,IAAI,UAAU,EAAE,CAAC;QACb,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC9C,CAAC;IAED,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAClF,CAAC,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC","sourcesContent":["const packTupleResult = (outs: unknown[], primary: unknown, hasPrimary: boolean): unknown => {\n if (hasPrimary) {\n return outs.length === 0 ? primary : [primary, ...outs];\n }\n\n if (outs.length === 0) {\n return undefined;\n }\n\n if (outs.length === 1) {\n return outs[0];\n }\n\n return outs;\n};\n\nconst splitTupleResult = (\n result: unknown,\n hasPrimary: boolean,\n outCount: number,\n): { primary: unknown; outValues: unknown[] } => {\n if (hasPrimary) {\n if (Array.isArray(result)) {\n return { primary: result[0], outValues: result.slice(1) };\n }\n\n return { primary: result, outValues: [] };\n }\n\n if (outCount === 1) {\n return { primary: undefined, outValues: [result] };\n }\n\n return { primary: undefined, outValues: Array.isArray(result) ? result : [] };\n};\n\nexport { packTupleResult, splitTupleResult };\n"]}
package/dist/type.d.ts CHANGED
@@ -1,81 +1,88 @@
1
1
  import { type Descriptor } from "@gtkx/native";
2
2
  import { type BoxedDescriptor, type FundamentalDescriptor } from "./descriptors.js";
3
3
  /** Object tagged with its GLib type through a `__type__` GType field. */
4
- export type TypedClass = {
4
+ type TypedClass = {
5
5
  __type__: bigint;
6
6
  };
7
- export declare const isTypedClass: (value: unknown) => value is TypedClass;
7
+ type ResolvableKind = "enum" | "flags" | "boxed" | "fundamental" | "array";
8
+ /** Descriptor kinds whose GType is resolved from library metadata rather than a fixed fundamental type. */
9
+ type ResolvableDescriptor = Extract<Descriptor, {
10
+ kind: ResolvableKind;
11
+ }>;
8
12
  /** GType tag for an invalid or uninitialized type. */
9
- export declare const TYPE_INVALID: bigint;
13
+ declare const TYPE_INVALID = 0n;
10
14
  /** GType tag for the absence of a value (`void`). */
11
- export declare const TYPE_NONE: bigint;
15
+ declare const TYPE_NONE: bigint;
12
16
  /** GType tag for the base GInterface type. */
13
- export declare const TYPE_INTERFACE: bigint;
17
+ declare const TYPE_INTERFACE: bigint;
14
18
  /** GType tag for `gchar` (signed 8-bit integer). */
15
- export declare const TYPE_CHAR: bigint;
19
+ declare const TYPE_CHAR: bigint;
16
20
  /** GType tag for `guchar` (unsigned 8-bit integer). */
17
- export declare const TYPE_UCHAR: bigint;
21
+ declare const TYPE_UCHAR: bigint;
18
22
  /** GType tag for `gboolean`. */
19
- export declare const TYPE_BOOLEAN: bigint;
23
+ declare const TYPE_BOOLEAN: bigint;
20
24
  /** GType tag for `gint`. */
21
- export declare const TYPE_INT: bigint;
25
+ declare const TYPE_INT: bigint;
22
26
  /** GType tag for `guint`. */
23
- export declare const TYPE_UINT: bigint;
27
+ declare const TYPE_UINT: bigint;
24
28
  /** GType tag for `glong`. */
25
- export declare const TYPE_LONG: bigint;
29
+ declare const TYPE_LONG: bigint;
26
30
  /** GType tag for `gulong`. */
27
- export declare const TYPE_ULONG: bigint;
31
+ declare const TYPE_ULONG: bigint;
28
32
  /** GType tag for `gint64`. */
29
- export declare const TYPE_INT64: bigint;
33
+ declare const TYPE_INT64: bigint;
30
34
  /** GType tag for `guint64`. */
31
- export declare const TYPE_UINT64: bigint;
35
+ declare const TYPE_UINT64: bigint;
32
36
  /** GType tag for the base GEnum type. */
33
- export declare const TYPE_ENUM: bigint;
37
+ declare const TYPE_ENUM: bigint;
34
38
  /** GType tag for the base GFlags type. */
35
- export declare const TYPE_FLAGS: bigint;
39
+ declare const TYPE_FLAGS: bigint;
36
40
  /** GType tag for `gfloat`. */
37
- export declare const TYPE_FLOAT: bigint;
41
+ declare const TYPE_FLOAT: bigint;
38
42
  /** GType tag for `gdouble`. */
39
- export declare const TYPE_DOUBLE: bigint;
43
+ declare const TYPE_DOUBLE: bigint;
40
44
  /** GType tag for `gchararray` (a nul-terminated C string). */
41
- export declare const TYPE_STRING: bigint;
45
+ declare const TYPE_STRING: bigint;
42
46
  /** GType tag for `gpointer` (an opaque pointer). */
43
- export declare const TYPE_POINTER: bigint;
47
+ declare const TYPE_POINTER: bigint;
44
48
  /** GType tag for the base GBoxed type. */
45
- export declare const TYPE_BOXED: bigint;
49
+ declare const TYPE_BOXED: bigint;
46
50
  /** GType tag for the base GParam type. */
47
- export declare const TYPE_PARAM: bigint;
51
+ declare const TYPE_PARAM: bigint;
48
52
  /** GType tag for the base GObject type. */
49
- export declare const TYPE_OBJECT: bigint;
53
+ declare const TYPE_OBJECT: bigint;
50
54
  /** GType tag for a GType value itself. */
51
- export declare const TYPE_GTYPE: bigint;
55
+ declare const TYPE_GTYPE: bigint;
52
56
  /** GType tag for GVariant. */
53
- export declare const TYPE_VARIANT: bigint;
57
+ declare const TYPE_VARIANT: bigint;
54
58
  /** GType tag for a Unicode character stored as `guint`. */
55
- export declare const TYPE_UNICHAR: bigint;
56
- export declare const getErrorType: () => bigint;
57
- export declare const getStrvType: () => bigint;
58
- /** Returns whether `type` is `isAType` or descends from it. */
59
- export declare function typeIsA(type: bigint, isAType: bigint): boolean;
59
+ declare const TYPE_UNICHAR: bigint;
60
+ declare const getErrorType: () => bigint;
61
+ declare const getStrvType: () => bigint;
62
+ declare const isTypedClass: (value: unknown) => value is TypedClass;
63
+ /** Returns whether `type` is `ancestorType` or descends from it. */
64
+ declare function typeIsA(type: bigint, ancestorType: bigint): boolean;
60
65
  /** Returns the immediate parent GType of the given type. */
61
- export declare function typeParent(type: bigint): bigint;
66
+ declare function typeParent(type: bigint): bigint;
62
67
  /** Returns the GTypes of the interfaces implemented by the given type. */
63
- export declare function typeInterfaces(type: bigint): bigint[];
68
+ declare function typeInterfaces(type: bigint): bigint[];
64
69
  /** Returns the GType registered under the given name, or `TYPE_INVALID` if none exists. */
65
- export declare function typeFromName(name: string): bigint;
66
- export declare function typeFundamental(type: bigint): bigint;
70
+ declare function typeFromName(name: string): bigint;
71
+ declare function typeFundamental(type: bigint): bigint;
67
72
  /** Returns the registered name of a GType, or null if it has none. */
68
- export declare function typeName(type: bigint): string | null;
73
+ declare function typeName(type: bigint): string | null;
69
74
  /** Returns whether `value` is a typed wrapper whose GType is or descends from `gtype`. */
70
- export declare function valueIsA(value: unknown, gtype: bigint): boolean;
75
+ declare function valueIsA(value: unknown, gtype: bigint): boolean;
71
76
  /**
72
77
  * Resolves the GType produced by a `get_type` function in a shared library, caching
73
78
  * the result per library and function name.
74
79
  * @param sharedLibrary Path or name of the shared library exporting the function.
75
- * @param getTypeFnName Name of the `*_get_type` function to call.
80
+ * @param typeFnName Name of the `*_get_type` function to call.
76
81
  */
77
- export declare const resolveType: (sharedLibrary: string, getTypeFnName: string) => bigint;
78
- export declare const resolveBoxedType: (descriptor: BoxedDescriptor) => bigint;
79
- export declare const resolveFundamentalType: (descriptor: FundamentalDescriptor) => bigint;
80
- export declare function resolveDescriptorType(descriptor: Descriptor): bigint;
82
+ declare const resolveType: (sharedLibrary: string, typeFnName: string) => bigint;
83
+ declare const resolveBoxedType: (descriptor: BoxedDescriptor) => bigint;
84
+ declare const resolveFundamentalType: (descriptor: FundamentalDescriptor) => bigint;
85
+ declare function isResolvableDescriptor(descriptor: Descriptor): descriptor is ResolvableDescriptor;
86
+ declare function resolveDescriptorType(descriptor: Descriptor): bigint;
87
+ export { TYPE_INVALID, TYPE_NONE, TYPE_INTERFACE, TYPE_CHAR, TYPE_UCHAR, TYPE_BOOLEAN, TYPE_INT, TYPE_UINT, TYPE_LONG, TYPE_ULONG, TYPE_INT64, TYPE_UINT64, TYPE_ENUM, TYPE_FLAGS, TYPE_FLOAT, TYPE_DOUBLE, TYPE_STRING, TYPE_POINTER, TYPE_BOXED, TYPE_PARAM, TYPE_OBJECT, TYPE_GTYPE, TYPE_VARIANT, TYPE_UNICHAR, getErrorType, getStrvType, isResolvableDescriptor, isTypedClass, typeIsA, typeParent, typeInterfaces, typeFromName, typeFundamental, typeName, valueIsA, resolveType, resolveBoxedType, resolveFundamentalType, resolveDescriptorType, type ResolvableDescriptor, type TypedClass, };
81
88
  //# sourceMappingURL=type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"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"}