@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.
- package/dist/arg.d.ts +6 -5
- package/dist/arg.d.ts.map +1 -1
- package/dist/arg.js +5 -4
- package/dist/arg.js.map +1 -1
- package/dist/bind.d.ts +3 -2
- package/dist/bind.d.ts.map +1 -1
- package/dist/bind.js +5 -3
- package/dist/bind.js.map +1 -1
- package/dist/callback.d.ts +3 -3
- package/dist/callback.d.ts.map +1 -1
- package/dist/callback.js +51 -33
- package/dist/callback.js.map +1 -1
- package/dist/descriptors.d.ts +67 -64
- package/dist/descriptors.d.ts.map +1 -1
- package/dist/descriptors.js +92 -60
- package/dist/descriptors.js.map +1 -1
- package/dist/error.d.ts +5 -6
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +10 -6
- package/dist/error.js.map +1 -1
- package/dist/exit-hook.d.ts +2 -0
- package/dist/exit-hook.d.ts.map +1 -0
- package/dist/exit-hook.js +3 -0
- package/dist/exit-hook.js.map +1 -0
- package/dist/fn.d.ts +2 -2
- package/dist/fn.d.ts.map +1 -1
- package/dist/fn.js +26 -15
- package/dist/fn.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/library.d.ts +6 -5
- package/dist/library.d.ts.map +1 -1
- package/dist/library.js +6 -5
- package/dist/library.js.map +1 -1
- package/dist/lifecycle.d.ts +10 -9
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +38 -23
- package/dist/lifecycle.js.map +1 -1
- package/dist/listeners.d.ts +8 -8
- package/dist/listeners.d.ts.map +1 -1
- package/dist/listeners.js +28 -15
- package/dist/listeners.js.map +1 -1
- package/dist/mixin.d.ts +5 -11
- package/dist/mixin.d.ts.map +1 -1
- package/dist/mixin.js +24 -14
- package/dist/mixin.js.map +1 -1
- package/dist/native-value.d.ts +3 -2
- package/dist/native-value.d.ts.map +1 -1
- package/dist/native-value.js +75 -42
- package/dist/native-value.js.map +1 -1
- package/dist/object.d.ts +4 -3
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +8 -5
- package/dist/object.js.map +1 -1
- package/dist/promisify.d.ts +9 -1
- package/dist/promisify.d.ts.map +1 -1
- package/dist/promisify.js +18 -15
- package/dist/promisify.js.map +1 -1
- package/dist/properties.d.ts +14 -0
- package/dist/properties.d.ts.map +1 -0
- package/dist/properties.js +79 -0
- package/dist/properties.js.map +1 -0
- package/dist/register-class.d.ts +10 -2
- package/dist/register-class.d.ts.map +1 -1
- package/dist/register-class.js +83 -29
- package/dist/register-class.js.map +1 -1
- package/dist/registry.d.ts +23 -21
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +54 -35
- package/dist/registry.js.map +1 -1
- package/dist/signal.d.ts +7 -6
- package/dist/signal.d.ts.map +1 -1
- package/dist/signal.js +19 -12
- package/dist/signal.js.map +1 -1
- package/dist/t.d.ts +2 -2
- package/dist/t.d.ts.map +1 -1
- package/dist/t.js +2 -1
- package/dist/t.js.map +1 -1
- package/dist/tuple.d.ts +3 -2
- package/dist/tuple.d.ts.map +1 -1
- package/dist/tuple.js +7 -4
- package/dist/tuple.js.map +1 -1
- package/dist/type.d.ts +48 -41
- package/dist/type.d.ts.map +1 -1
- package/dist/type.js +107 -87
- package/dist/type.js.map +1 -1
- package/dist/value.d.ts +19 -10
- package/dist/value.d.ts.map +1 -1
- package/dist/value.js +164 -99
- package/dist/value.js.map +1 -1
- package/package.json +4 -6
- package/src/arg.ts +7 -5
- package/src/bind.ts +13 -4
- package/src/callback.ts +97 -35
- package/src/descriptors.ts +227 -85
- package/src/error.ts +18 -9
- package/src/exit-hook.ts +3 -0
- package/src/fn.ts +53 -22
- package/src/index.ts +4 -2
- package/src/library.ts +7 -5
- package/src/lifecycle.ts +54 -26
- package/src/listeners.ts +46 -18
- package/src/mixin.ts +39 -14
- package/src/native-value.ts +103 -46
- package/src/object.ts +19 -7
- package/src/promisify.ts +42 -15
- package/src/properties.ts +115 -0
- package/src/register-class.ts +157 -30
- package/src/registry.ts +144 -54
- package/src/signal.ts +53 -13
- package/src/t.ts +3 -1
- package/src/tuple.ts +16 -4
- package/src/type.ts +183 -93
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
23
|
-
|
|
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
|
-
|
|
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
|
package/dist/signal.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
16
|
+
const getSignalBaseName = (signal) => {
|
|
16
17
|
const detailIndex = signal.indexOf("::");
|
|
17
18
|
return detailIndex === -1 ? signal : signal.slice(0, detailIndex);
|
|
18
19
|
};
|
|
19
|
-
function
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
74
|
+
function emitSignal(instance, signal, args, returnDescriptor) {
|
|
70
75
|
const signalId = getSignalId(instance, signal);
|
|
71
|
-
const detail =
|
|
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
|
package/dist/signal.js.map
CHANGED
|
@@ -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":"AAEA,OAAO,EAAY,oBAAoB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACnF,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACH,MAAM,EACN,UAAU,EACV,QAAQ,EAER,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,KAAK,GACR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EACH,SAAS,EACT,aAAa,EACb,4BAA4B,EAC5B,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,OAAO,GACV,MAAM,YAAY,CAAC;AAapB,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;AACvC,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,qBAAqB,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1F,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;AAE/F,MAAM,YAAY,GAAG,IAAI,CACrB,GAAG,EACH,gBAAgB,EAChB,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAC9F,KAAK,CACR,CAAC;AAEF,MAAM,2BAA2B,GAAG,IAAI,CACpC,GAAG,EACH,iCAAiC,EACjC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,EAC/G,OAAO,CACV,CAAC;AAEF,MAAM,yBAAyB,GAAG,IAAI,CAClC,GAAG,EACH,+BAA+B,EAC/B,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,EAC9B,QAAQ,CACX,CAAC;AAEF,+EAA+E;AAC/E,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAU,EAAE;IACjD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC,OAAO,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACtE,CAAC,CAAC;AAEF,SAAS,oBAAoB,CAAC,MAAc;IACxC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC;IACb,CAAC;IAED,OAAO,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAW,CAAC;AACrE,CAAC;AAED,MAAM,wBAAwB,GAAG,CAAC,QAAgB,EAAE,SAAiB,EAAW,EAAE,CAC9E,yBAAyB,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAY,CAAC;AAEzE,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAU,EAAE;IAC7D,MAAM,IAAI,GAAY,QAAuB,CAAC,QAAQ,CAAC;IAEvD,OAAO,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAW,CAAC;AACpE,CAAC,CAAC;AAEF,SAAS,WAAW,CAAC,IAAY,EAAE,MAAc,EAAE,QAA4B;IAC3E,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;IAE5D,OAAO,YAAY,CACf,GAAG,EACH,GAAG,EACH,uBAAuB,EACvB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,EAC7D,OAAO,CACV,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,QAAgB,EAAE,MAAc,EAAE,IAAuB;IAC5E,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC1C,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAY,QAAuB,CAAC,QAAQ,CAAC;IACvD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEpD,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAW,CAAC;AAClF,CAAC;AAED,SAAS,0BAA0B,CAAC,QAAgB,EAAE,MAAc;IAChE,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,2BAA2B,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,eAAe,GAAG,CAAC,GAAY,EAA2D,EAAE;IAC9F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,EAAE,KAAK,EAAE,4BAA4B,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAe,CAAC,EAAE,CAAC;QAClF,CAAC;QAED,MAAM,KAAK,GAAG,0BAA0B,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAe,CAAC,CAAC;QAExE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1G,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,QAAgB,EAAE,MAAc,EAAE,IAAe,EAAE,gBAA6B;IAChG,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,MAAM,GAA6B,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAsB,EAAE,CAAC;IAEpC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnB,IAAI,IAAI,EAAE,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACL,CAAC;IAED,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAC5D,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAEpD,OAAO,eAAe,CAClB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAC3B,SAAS,CAAC,WAAW,CAAC,EACtB,IAAI,CACP,CAAC;IACN,CAAC;IAED,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAElD,OAAO,eAAe,CAClB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAC3B,SAAS,EACT,KAAK,CACR,CAAC;AACN,CAAC;AAED,OAAO,EACH,iBAAiB,EACjB,aAAa,EACb,0BAA0B,EAC1B,UAAU,EACV,wBAAwB,GAE3B,CAAC","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
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,
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
2
|
-
|
|
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
|
package/dist/tuple.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tuple.d.ts","sourceRoot":"","sources":["../src/tuple.ts"],"names":[],"mappings":"AAAA,
|
|
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
|
-
|
|
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
|
-
|
|
7
|
+
}
|
|
8
|
+
if (outs.length === 1) {
|
|
8
9
|
return outs[0];
|
|
10
|
+
}
|
|
9
11
|
return outs;
|
|
10
12
|
};
|
|
11
|
-
|
|
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,
|
|
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
|
-
|
|
4
|
+
type TypedClass = {
|
|
5
5
|
__type__: bigint;
|
|
6
6
|
};
|
|
7
|
-
|
|
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
|
-
|
|
13
|
+
declare const TYPE_INVALID = 0n;
|
|
10
14
|
/** GType tag for the absence of a value (`void`). */
|
|
11
|
-
|
|
15
|
+
declare const TYPE_NONE: bigint;
|
|
12
16
|
/** GType tag for the base GInterface type. */
|
|
13
|
-
|
|
17
|
+
declare const TYPE_INTERFACE: bigint;
|
|
14
18
|
/** GType tag for `gchar` (signed 8-bit integer). */
|
|
15
|
-
|
|
19
|
+
declare const TYPE_CHAR: bigint;
|
|
16
20
|
/** GType tag for `guchar` (unsigned 8-bit integer). */
|
|
17
|
-
|
|
21
|
+
declare const TYPE_UCHAR: bigint;
|
|
18
22
|
/** GType tag for `gboolean`. */
|
|
19
|
-
|
|
23
|
+
declare const TYPE_BOOLEAN: bigint;
|
|
20
24
|
/** GType tag for `gint`. */
|
|
21
|
-
|
|
25
|
+
declare const TYPE_INT: bigint;
|
|
22
26
|
/** GType tag for `guint`. */
|
|
23
|
-
|
|
27
|
+
declare const TYPE_UINT: bigint;
|
|
24
28
|
/** GType tag for `glong`. */
|
|
25
|
-
|
|
29
|
+
declare const TYPE_LONG: bigint;
|
|
26
30
|
/** GType tag for `gulong`. */
|
|
27
|
-
|
|
31
|
+
declare const TYPE_ULONG: bigint;
|
|
28
32
|
/** GType tag for `gint64`. */
|
|
29
|
-
|
|
33
|
+
declare const TYPE_INT64: bigint;
|
|
30
34
|
/** GType tag for `guint64`. */
|
|
31
|
-
|
|
35
|
+
declare const TYPE_UINT64: bigint;
|
|
32
36
|
/** GType tag for the base GEnum type. */
|
|
33
|
-
|
|
37
|
+
declare const TYPE_ENUM: bigint;
|
|
34
38
|
/** GType tag for the base GFlags type. */
|
|
35
|
-
|
|
39
|
+
declare const TYPE_FLAGS: bigint;
|
|
36
40
|
/** GType tag for `gfloat`. */
|
|
37
|
-
|
|
41
|
+
declare const TYPE_FLOAT: bigint;
|
|
38
42
|
/** GType tag for `gdouble`. */
|
|
39
|
-
|
|
43
|
+
declare const TYPE_DOUBLE: bigint;
|
|
40
44
|
/** GType tag for `gchararray` (a nul-terminated C string). */
|
|
41
|
-
|
|
45
|
+
declare const TYPE_STRING: bigint;
|
|
42
46
|
/** GType tag for `gpointer` (an opaque pointer). */
|
|
43
|
-
|
|
47
|
+
declare const TYPE_POINTER: bigint;
|
|
44
48
|
/** GType tag for the base GBoxed type. */
|
|
45
|
-
|
|
49
|
+
declare const TYPE_BOXED: bigint;
|
|
46
50
|
/** GType tag for the base GParam type. */
|
|
47
|
-
|
|
51
|
+
declare const TYPE_PARAM: bigint;
|
|
48
52
|
/** GType tag for the base GObject type. */
|
|
49
|
-
|
|
53
|
+
declare const TYPE_OBJECT: bigint;
|
|
50
54
|
/** GType tag for a GType value itself. */
|
|
51
|
-
|
|
55
|
+
declare const TYPE_GTYPE: bigint;
|
|
52
56
|
/** GType tag for GVariant. */
|
|
53
|
-
|
|
57
|
+
declare const TYPE_VARIANT: bigint;
|
|
54
58
|
/** GType tag for a Unicode character stored as `guint`. */
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
66
|
+
declare function typeParent(type: bigint): bigint;
|
|
62
67
|
/** Returns the GTypes of the interfaces implemented by the given type. */
|
|
63
|
-
|
|
68
|
+
declare function typeInterfaces(type: bigint): bigint[];
|
|
64
69
|
/** Returns the GType registered under the given name, or `TYPE_INVALID` if none exists. */
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
80
|
+
* @param typeFnName Name of the `*_get_type` function to call.
|
|
76
81
|
*/
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
package/dist/type.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAoC,MAAM,cAAc,CAAC;AAEjF,OAAO,
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"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"}
|