@gtkx/runtime 1.6.0 → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/application-class.d.ts +1 -1
- package/dist/application-class.d.ts.map +1 -1
- package/dist/application-class.js +1 -2
- package/dist/application-class.js.map +1 -1
- package/dist/arg.d.ts +4 -1
- package/dist/arg.d.ts.map +1 -1
- package/dist/arg.js.map +1 -1
- package/dist/bind.d.ts.map +1 -1
- package/dist/bind.js +1 -9
- package/dist/bind.js.map +1 -1
- package/dist/callback.d.ts +6 -1
- package/dist/callback.d.ts.map +1 -1
- package/dist/callback.js +33 -21
- package/dist/callback.js.map +1 -1
- package/dist/closure.d.ts +3 -1
- package/dist/closure.d.ts.map +1 -1
- package/dist/closure.js +17 -6
- package/dist/closure.js.map +1 -1
- package/dist/descriptors.d.ts +22 -51
- package/dist/descriptors.d.ts.map +1 -1
- package/dist/descriptors.js +53 -27
- package/dist/descriptors.js.map +1 -1
- package/dist/fn.d.ts.map +1 -1
- package/dist/fn.js +23 -9
- package/dist/fn.js.map +1 -1
- package/dist/folded-lengths.d.ts +2 -1
- package/dist/folded-lengths.d.ts.map +1 -1
- package/dist/folded-lengths.js +17 -7
- package/dist/folded-lengths.js.map +1 -1
- package/dist/index.d.ts +2 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -24
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +2 -2
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +2 -2
- package/dist/internal.js.map +1 -1
- package/dist/native-value.d.ts +9 -1
- package/dist/native-value.d.ts.map +1 -1
- package/dist/native-value.js +20 -3
- package/dist/native-value.js.map +1 -1
- package/dist/properties.d.ts +1 -1
- package/dist/properties.d.ts.map +1 -1
- package/dist/properties.js +2 -11
- package/dist/properties.js.map +1 -1
- package/dist/register-class.d.ts +45 -249
- package/dist/register-class.d.ts.map +1 -1
- package/dist/register-class.js.map +1 -1
- package/dist/signal.d.ts.map +1 -1
- package/dist/signal.js +9 -22
- package/dist/signal.js.map +1 -1
- package/dist/t.d.ts +5 -21
- package/dist/t.d.ts.map +1 -1
- package/dist/t.js +1 -5
- package/dist/t.js.map +1 -1
- package/dist/type.d.ts.map +1 -1
- package/dist/type.js +7 -1
- package/dist/type.js.map +1 -1
- package/dist/value.d.ts.map +1 -1
- package/dist/value.js +7 -1
- package/dist/value.js.map +1 -1
- package/dist/variant.d.ts +2 -6
- package/dist/variant.d.ts.map +1 -1
- package/dist/variant.js.map +1 -1
- package/dist/vfunc-call.d.ts.map +1 -1
- package/dist/vfunc-call.js +2 -11
- package/dist/vfunc-call.js.map +1 -1
- package/package.json +9 -5
- package/src/application-class.ts +2 -2
- package/src/arg.ts +4 -1
- package/src/bind.ts +1 -12
- package/src/callback.ts +53 -29
- package/src/closure.ts +31 -6
- package/src/descriptors.ts +95 -59
- package/src/fn.ts +31 -10
- package/src/folded-lengths.ts +23 -10
- package/src/index.ts +2 -24
- package/src/internal.ts +2 -2
- package/src/native-value.ts +24 -3
- package/src/properties.ts +3 -16
- package/src/register-class.ts +45 -249
- package/src/signal.ts +9 -34
- package/src/t.ts +5 -21
- package/src/type.ts +9 -1
- package/src/value.ts +9 -1
- package/src/variant.ts +2 -6
- package/src/vfunc-call.ts +3 -16
package/dist/fn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fn.js","sourceRoot":"","sources":["../src/fn.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CallDescriptor, Descriptor, ExternalObject, Handle, Ref } from \"@gtkx/native\";\nimport { call, bind as nativeBind } from \"@gtkx/native\";\nimport type { RefSeeds } from \"./vfunc-seeds.js\";\nimport { type Arg, isCallerAllocatedArg, isOutputArg, isRefArg, isUnpackedArg, requiresInputArg } from \"./arg.js\";\nimport { wrapCallbackValue } from \"./callback.js\";\nimport { boxedT, isGtypeDescriptor, refT } from \"./descriptors.js\";\nimport { checkError } from \"./error.js\";\nimport { LIB } from \"./library.js\";\nimport { fromNative, toNative } from \"./native-value.js\";\nimport { getHandle } from \"./registry.js\";\nimport { hasSurfacedPrimary, packTupleResult } from \"./tuple.js\";\nimport { TYPE_INVALID } from \"./type.js\";\nimport { fromValue, getValueType } from \"./value.js\";\n\n/** The signature a native function is bound against. */\ntype FnSpec = {\n /** The C arguments in declaration order, including the ones the callee writes into. */\n args: Arg[];\n /** Descriptor for the C return value, packed first when output arguments are also returned. */\n returns: Descriptor;\n /**\n * The callee returns a value the bindings do not surface, so the call is made against the\n * declared return type and the value is dropped instead of being packed into the result.\n */\n isReturnSkipped?: boolean;\n /** The function takes a trailing `GError**`, whose contents are thrown as an error on return. */\n canThrow?: boolean;\n /**\n * How many of `args` precede the callee's ellipsis, marking it variadic. Omitting it binds a\n * fixed-arity call, which passes the wrong argument classes to a variadic callee on some\n * architectures.\n */\n fixedArgCount?: number;\n /** The callee returns a `GValue`, surfaced as what it holds rather than as the value itself. */\n isReturnUnpacked?: boolean;\n};\n\ntype ArgSpec = {\n arg: Arg;\n index: number;\n isRef: boolean;\n isCallerAllocated: boolean;\n isUnpacked: boolean;\n requiresInput: boolean;\n inputIndex: number;\n isOutParam: boolean;\n carriesGtype: boolean;\n};\n\nconst NO_OUT_PARAMS: unknown[] = [];\n\nconst hasGtypeInput = (descriptor: Descriptor): boolean =>\n isGtypeDescriptor(descriptor) || (descriptor.kind === \"array\" && isGtypeDescriptor(descriptor.itemDescriptor));\n\nconst buildNativeArgTypes = (args: Arg[], canThrow: boolean): Descriptor[] => {\n const nativeArgTypes = args.map((argSpec) =>\n argSpec.direction !== undefined && argSpec.isCallerAllocated !== true ? refT(argSpec.type) : argSpec.type,\n );\n\n if (canThrow) {\n nativeArgTypes.push(\n refT(boxedT(\"GError\", { ownership: \"full\", sharedLibrary: LIB, getTypeFnName: \"g_error_get_type\" })),\n );\n }\n\n return nativeArgTypes;\n};\n\nconst buildArgSpecs = (args: Arg[]): ArgSpec[] => {\n let inputCursor = 0;\n\n return args.map((arg, index) => {\n const isRef = isRefArg(arg);\n const requiresInput = requiresInputArg(arg);\n const isOutParam = isOutputArg(arg) && arg.isConsumed !== true;\n\n return {\n arg,\n index,\n isRef,\n isCallerAllocated: isCallerAllocatedArg(arg),\n isUnpacked: isUnpackedArg(arg),\n requiresInput,\n inputIndex: requiresInput ? inputCursor++ : -1,\n isOutParam,\n carriesGtype: hasGtypeInput(arg.type),\n };\n });\n};\n\nconst resolveCallerAllocated = (inputs: unknown[], inputIndex: number): unknown => {\n const wrapper = inputs[inputIndex];\n\n return wrapper == null ? wrapper : getHandle(wrapper);\n};\n\nconst inputValueFor = (spec: ArgSpec, inputs: unknown[]): unknown =>\n spec.carriesGtype ? toNative(spec.arg.type, inputs[spec.inputIndex]) : inputs[spec.inputIndex];\n\nconst buildRefValue = (spec: ArgSpec, inputs: unknown[], seeds: RefSeeds | undefined): Ref => ({\n value: spec.requiresInput ? inputValueFor(spec, inputs) : (seeds?.get(spec.index) ?? null),\n});\n\nconst buildNativeValue = (spec: ArgSpec, inputs: unknown[], seeds: RefSeeds | undefined): unknown => {\n const { arg, isRef, isCallerAllocated, inputIndex } = spec;\n\n if (isCallerAllocated) {\n return resolveCallerAllocated(inputs, inputIndex);\n }\n\n if (isRef) {\n return buildRefValue(spec, inputs, seeds);\n }\n\n if (arg.type.kind === \"callback\") {\n return wrapCallbackValue(arg.type, inputs[inputIndex]);\n }\n\n return inputValueFor(spec, inputs);\n};\n\nconst buildNativeValues = (plans: ArgSpec[], inputs: unknown[], seeds: RefSeeds | undefined): unknown[] =>\n plans.map((plan) => buildNativeValue(plan, inputs, seeds));\n\nconst unpackValueHandle = (handle: ExternalObject<Handle> | null): unknown => {\n if (handle === null || getValueType(handle) === TYPE_INVALID) {\n return null;\n }\n\n return fromValue(handle);\n};\n\nconst readCallerAllocated = (plan: ArgSpec, inputs: unknown[]): unknown => {\n const wrapper = inputs[plan.inputIndex];\n\n if (!plan.isUnpacked) {\n return wrapper;\n }\n\n return unpackValueHandle(wrapper == null ? null : getHandle(wrapper));\n};\n\nconst readOutParams = (outPlans: ArgSpec[], inputs: unknown[], nativeValues: unknown[]): unknown[] => {\n if (outPlans.length === 0) {\n return NO_OUT_PARAMS;\n }\n\n return Array.from(outPlans, (plan) =>\n plan.isCallerAllocated\n ? readCallerAllocated(plan, inputs)\n : fromNative(plan.arg.type, (nativeValues[plan.index] as Ref).value));\n};\n\nconst isPassThroughPlan = (plan: ArgSpec, index: number): boolean =>\n plan.inputIndex === index &&\n !plan.isRef &&\n !plan.isCallerAllocated &&\n !plan.carriesGtype &&\n plan.arg.type.kind !== \"callback\";\n\nconst requiredInputIndices = (plans: ArgSpec[]): number[] =>\n plans.filter((plan) => plan.requiresInput && plan.arg.isRequired === true).map((plan) => plan.inputIndex);\n\nconst assertRequiredInputs = (requiredIndices: number[], inputs: unknown[]): void => {\n for (const index of requiredIndices) {\n if (inputs[index] === undefined) {\n throw new TypeError(`Missing required argument at position ${String(index + 1)}`);\n }\n }\n};\n\nconst resizeInputs = (inputs: unknown[], argCount: number): unknown[] => {\n while (inputs.length < argCount) {\n inputs.push(undefined);\n }\n\n if (inputs.length > argCount) {\n inputs.length = argCount;\n }\n\n return inputs;\n};\n\nconst returnReader = (spec: FnSpec): ((nativeResult: unknown) => unknown) =>\n spec.isReturnUnpacked === true\n ? (nativeResult) => unpackValueHandle((nativeResult ?? null) as ExternalObject<Handle> | null)\n : (nativeResult) => fromNative(spec.returns, nativeResult);\n\nconst directCallable = (\n descriptor: ExternalObject<CallDescriptor>,\n readReturn: (nativeResult: unknown) => unknown,\n hasPrimary: boolean,\n plans: ArgSpec[],\n): ((...inputs: unknown[]) => unknown) => {\n const argCount = plans.length;\n const requiredIndices = requiredInputIndices(plans);\n\n const marshal = (inputs: unknown[]): unknown => {\n assertRequiredInputs(requiredIndices, inputs);\n\n return readReturn(call(descriptor, resizeInputs(inputs, argCount)));\n };\n\n if (hasPrimary) {\n return (...inputs) => marshal(inputs);\n }\n\n return (...inputs) => {\n marshal(inputs);\n };\n};\n\nfunction fromNativeCallable(\n descriptor: ExternalObject<CallDescriptor>,\n spec: FnSpec,\n getRefSeeds?: () => RefSeeds | undefined,\n): (...inputs: unknown[]) => unknown {\n const { args, returns: returnDescriptor, canThrow = false } = spec;\n const hasPrimary = hasSurfacedPrimary(returnDescriptor, spec.isReturnSkipped);\n const plans = buildArgSpecs(args);\n const outPlans = plans.filter((plan) => plan.isOutParam);\n const arePassThrough = plans.every((plan, index) => isPassThroughPlan(plan, index));\n const readReturn = returnReader(spec);\n\n if (!canThrow && arePassThrough) {\n return directCallable(descriptor, readReturn, hasPrimary, plans);\n }\n\n const requiredIndices = requiredInputIndices(plans);\n\n const shape = (inputs: unknown[], nativeValues: unknown[], nativeResult: unknown): unknown =>\n packTupleResult(readOutParams(outPlans, inputs, nativeValues), readReturn(nativeResult), hasPrimary);\n\n if (canThrow) {\n return (...inputs) => {\n assertRequiredInputs(requiredIndices, inputs);\n const nativeValues = buildNativeValues(plans, inputs, getRefSeeds?.());\n const errorRef: Ref = { value: null };\n nativeValues.push(errorRef);\n const nativeResult = call(descriptor, nativeValues);\n checkError(errorRef);\n\n return shape(inputs, nativeValues, nativeResult);\n };\n }\n\n return (...inputs) => {\n assertRequiredInputs(requiredIndices, inputs);\n const nativeValues = buildNativeValues(plans, inputs, getRefSeeds?.());\n\n return shape(inputs, nativeValues, call(descriptor, nativeValues));\n };\n}\n\nconst bindNativeCallable = (\n sharedLibrary: string,\n symbol: string,\n spec: FnSpec,\n): ((...inputs: unknown[]) => unknown) => {\n const nativeArgTypes = buildNativeArgTypes(spec.args, spec.canThrow ?? false);\n const descriptor = nativeBind(sharedLibrary, symbol, nativeArgTypes, spec.returns, spec.fixedArgCount);\n\n return fromNativeCallable(descriptor, spec);\n};\n\n/**\n * Binds a symbol in a shared library to a callable that marshals its inputs and packs output\n * arguments into the result. When the spec sets `canThrow`, the reported `GError` is thrown.\n *\n * A plain spec is bound when `fn` is called, so a malformed descriptor throws at binding time.\n * Passing a function returning the spec instead defers building the descriptors and the binding\n * to the first call, so describing such a binding costs nothing until something calls it and a\n * module full of them loads without touching the shared library.\n *\n * @param sharedLibrary Shared library the symbol is looked up in.\n * @param symbol Name of the C symbol to bind.\n * @param spec Argument and return descriptors the call is marshalled through, or a function\n * returning them, which defers building the descriptors and the binding to the first call.\n */\nfunction fn(\n sharedLibrary: string,\n symbol: string,\n spec: FnSpec | (() => FnSpec),\n): (...inputs: unknown[]) => unknown {\n if (typeof spec !== \"function\") {\n return bindNativeCallable(sharedLibrary, symbol, spec);\n }\n\n let bound: ((...inputs: unknown[]) => unknown) | undefined;\n\n return (...inputs) => {\n bound ??= bindNativeCallable(sharedLibrary, symbol, spec());\n\n return bound(...inputs);\n };\n}\n\nexport { buildNativeArgTypes, fn, fromNativeCallable };\n"]}
|
|
1
|
+
{"version":3,"file":"fn.js","sourceRoot":"","sources":["../src/fn.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CallDescriptor, Descriptor, ExternalObject, Handle, Ref } from \"@gtkx/native\";\nimport { call, bind as nativeBind } from \"@gtkx/native\";\nimport type { RefSeeds } from \"./vfunc-seeds.js\";\nimport { type Arg, isCallerAllocatedArg, isOutputArg, isRefArg, isUnpackedArg, requiresInputArg } from \"./arg.js\";\nimport { wrapCallbackValue } from \"./callback.js\";\nimport { boxedT, isGtypeDescriptor, refT } from \"./descriptors.js\";\nimport { checkError } from \"./error.js\";\nimport { LIB } from \"./library.js\";\nimport { fromNative, toNative } from \"./native-value.js\";\nimport { getHandle } from \"./registry.js\";\nimport { hasSurfacedPrimary, packTupleResult } from \"./tuple.js\";\nimport { TYPE_INVALID } from \"./type.js\";\nimport { fromValue, getValueType } from \"./value.js\";\n\n/** The signature a native function is bound against. */\ntype FnSpec = {\n /** The C arguments in declaration order, including the ones the callee writes into. */\n args: Arg[];\n /** Descriptor for the C return value, packed first when output arguments are also returned. */\n returns: Descriptor;\n /**\n * The callee returns a value the bindings do not surface, so the call is made against the\n * declared return type and the value is dropped instead of being packed into the result.\n */\n isReturnSkipped?: boolean;\n /** The function takes a trailing `GError**`, whose contents are thrown as an error on return. */\n canThrow?: boolean;\n /**\n * How many of `args` precede the callee's ellipsis, marking it variadic. Omitting it binds a\n * fixed-arity call, which passes the wrong argument classes to a variadic callee on some\n * architectures.\n */\n fixedArgCount?: number;\n /** The callee returns a `GValue`, surfaced as what it holds rather than as the value itself. */\n isReturnUnpacked?: boolean;\n};\n\ntype ArgSpec = {\n arg: Arg;\n index: number;\n isRef: boolean;\n isCallerAllocated: boolean;\n isUnpacked: boolean;\n requiresInput: boolean;\n inputIndex: number;\n isOutParam: boolean;\n carriesGtype: boolean;\n};\n\nconst NO_OUT_PARAMS: unknown[] = [];\n\nconst hasGtypeInput = (descriptor: Descriptor): boolean =>\n isGtypeDescriptor(descriptor) || (descriptor.kind === \"array\" && isGtypeDescriptor(descriptor.itemDescriptor));\n\nconst buildNativeArgTypes = (args: Arg[], canThrow: boolean): Descriptor[] => {\n const nativeArgTypes = args.map((argSpec) =>\n argSpec.direction !== undefined && argSpec.isCallerAllocated !== true ? refT(argSpec.type) : argSpec.type,\n );\n\n if (canThrow) {\n nativeArgTypes.push(\n refT(boxedT(\"GError\", { ownership: \"full\", sharedLibrary: LIB, getTypeFnName: \"g_error_get_type\" })),\n );\n }\n\n return nativeArgTypes;\n};\n\nconst buildArgSpecs = (args: Arg[]): ArgSpec[] => {\n let inputCursor = 0;\n\n return args.map((arg, index) => {\n const isRef = isRefArg(arg);\n const requiresInput = requiresInputArg(arg);\n const isOutParam = isOutputArg(arg) && arg.isConsumed !== true;\n\n return {\n arg,\n index,\n isRef,\n isCallerAllocated: isCallerAllocatedArg(arg),\n isUnpacked: isUnpackedArg(arg),\n requiresInput,\n inputIndex: requiresInput ? inputCursor++ : -1,\n isOutParam,\n carriesGtype: hasGtypeInput(arg.type),\n };\n });\n};\n\nconst resolveCallerAllocated = (inputs: unknown[], inputIndex: number): unknown => {\n const wrapper = inputs[inputIndex];\n\n return wrapper == null ? wrapper : getHandle(wrapper);\n};\n\nconst inputValueFor = (spec: ArgSpec, inputs: unknown[]): unknown =>\n spec.carriesGtype ? toNative(spec.arg.type, inputs[spec.inputIndex]) : inputs[spec.inputIndex];\n\nconst buildRefValue = (spec: ArgSpec, inputs: unknown[], seeds: RefSeeds | undefined): Ref => ({\n value: spec.requiresInput ? inputValueFor(spec, inputs) : (seeds?.get(spec.index) ?? null),\n});\n\nconst buildNativeValue = (spec: ArgSpec, inputs: unknown[], seeds: RefSeeds | undefined): unknown => {\n const { arg, isRef, isCallerAllocated, inputIndex } = spec;\n\n if (isCallerAllocated) {\n return resolveCallerAllocated(inputs, inputIndex);\n }\n\n if (isRef) {\n return buildRefValue(spec, inputs, seeds);\n }\n\n if (arg.type.kind === \"callback\") {\n return wrapCallbackValue(arg.type, inputs[inputIndex]);\n }\n\n return inputValueFor(spec, inputs);\n};\n\nconst buildNativeValues = (plans: ArgSpec[], inputs: unknown[], seeds: RefSeeds | undefined): unknown[] =>\n plans.map((plan) => buildNativeValue(plan, inputs, seeds));\n\nconst unpackValueHandle = (handle: ExternalObject<Handle> | null): unknown => {\n if (handle === null || getValueType(handle) === TYPE_INVALID) {\n return null;\n }\n\n return fromValue(handle);\n};\n\nconst readCallerAllocated = (plan: ArgSpec, inputs: unknown[]): unknown => {\n const wrapper = inputs[plan.inputIndex];\n\n if (!plan.isUnpacked) {\n return wrapper;\n }\n\n return unpackValueHandle(wrapper == null ? null : getHandle(wrapper));\n};\n\nconst readOutParams = (outPlans: ArgSpec[], inputs: unknown[], nativeValues: unknown[]): unknown[] => {\n if (outPlans.length === 0) {\n return NO_OUT_PARAMS;\n }\n\n return Array.from(outPlans, (plan) =>\n plan.isCallerAllocated\n ? readCallerAllocated(plan, inputs)\n : fromNative(plan.arg.type, (nativeValues[plan.index] as Ref).value));\n};\n\nconst isPassThroughPlan = (plan: ArgSpec, index: number): boolean =>\n plan.inputIndex === index &&\n !plan.isRef &&\n !plan.isCallerAllocated &&\n !plan.carriesGtype &&\n plan.arg.type.kind !== \"callback\";\n\nconst KINDS_PASSED_AS_POINTER: ReadonlySet<Descriptor[\"kind\"]> = new Set<Descriptor[\"kind\"]>([\n \"array\",\n \"boxed\",\n \"buffer\",\n \"callback\",\n \"fundamental\",\n \"hashtable\",\n \"object\",\n \"string\",\n \"struct\",\n]);\n\ntype RequiredInput = {\n index: number;\n rejectsNull: boolean;\n};\n\nconst requiredInputs = (plans: ArgSpec[]): RequiredInput[] =>\n plans\n .filter((plan) => plan.requiresInput && plan.arg.isRequired === true)\n .map((plan) => ({ index: plan.inputIndex, rejectsNull: KINDS_PASSED_AS_POINTER.has(plan.arg.type.kind) }));\n\nconst assertRequiredInputs = (required: RequiredInput[], inputs: unknown[]): void => {\n for (const { index, rejectsNull } of required) {\n const input = inputs[index];\n\n if (input === undefined || (rejectsNull && input === null)) {\n throw new TypeError(`Missing required argument at position ${String(index + 1)}`);\n }\n }\n};\n\nconst resizeInputs = (inputs: unknown[], argCount: number): unknown[] => {\n while (inputs.length < argCount) {\n inputs.push(undefined);\n }\n\n if (inputs.length > argCount) {\n inputs.length = argCount;\n }\n\n return inputs;\n};\n\nconst returnReader = (spec: FnSpec): ((nativeResult: unknown) => unknown) =>\n spec.isReturnUnpacked === true\n ? (nativeResult) => unpackValueHandle((nativeResult ?? null) as ExternalObject<Handle> | null)\n : (nativeResult) => fromNative(spec.returns, nativeResult);\n\nconst directCallable = (\n descriptor: ExternalObject<CallDescriptor>,\n readReturn: (nativeResult: unknown) => unknown,\n hasPrimary: boolean,\n plans: ArgSpec[],\n): ((...inputs: unknown[]) => unknown) => {\n const argCount = plans.length;\n const required = requiredInputs(plans);\n\n const marshal = (inputs: unknown[]): unknown => {\n assertRequiredInputs(required, inputs);\n\n return readReturn(call(descriptor, resizeInputs(inputs, argCount)));\n };\n\n if (hasPrimary) {\n return (...inputs) => marshal(inputs);\n }\n\n return (...inputs) => {\n marshal(inputs);\n };\n};\n\nfunction fromNativeCallable(\n descriptor: ExternalObject<CallDescriptor>,\n spec: FnSpec,\n getRefSeeds?: () => RefSeeds | undefined,\n): (...inputs: unknown[]) => unknown {\n const { args, returns: returnDescriptor, canThrow = false } = spec;\n const hasPrimary = hasSurfacedPrimary(returnDescriptor, spec.isReturnSkipped);\n const plans = buildArgSpecs(args);\n const outPlans = plans.filter((plan) => plan.isOutParam);\n const arePassThrough = plans.every((plan, index) => isPassThroughPlan(plan, index));\n const readReturn = returnReader(spec);\n\n if (!canThrow && arePassThrough) {\n return directCallable(descriptor, readReturn, hasPrimary, plans);\n }\n\n const required = requiredInputs(plans);\n\n const shape = (inputs: unknown[], nativeValues: unknown[], nativeResult: unknown): unknown =>\n packTupleResult(readOutParams(outPlans, inputs, nativeValues), readReturn(nativeResult), hasPrimary);\n\n if (canThrow) {\n return (...inputs) => {\n assertRequiredInputs(required, inputs);\n const nativeValues = buildNativeValues(plans, inputs, getRefSeeds?.());\n const errorRef: Ref = { value: null };\n nativeValues.push(errorRef);\n const nativeResult = call(descriptor, nativeValues);\n checkError(errorRef);\n\n return shape(inputs, nativeValues, nativeResult);\n };\n }\n\n return (...inputs) => {\n assertRequiredInputs(required, inputs);\n const nativeValues = buildNativeValues(plans, inputs, getRefSeeds?.());\n\n return shape(inputs, nativeValues, call(descriptor, nativeValues));\n };\n}\n\nconst bindNativeCallable = (\n sharedLibrary: string,\n symbol: string,\n spec: FnSpec,\n): ((...inputs: unknown[]) => unknown) => {\n const nativeArgTypes = buildNativeArgTypes(spec.args, spec.canThrow ?? false);\n const descriptor = nativeBind(sharedLibrary, symbol, nativeArgTypes, spec.returns, spec.fixedArgCount);\n\n return fromNativeCallable(descriptor, spec);\n};\n\n/**\n * Binds a symbol in a shared library to a callable that marshals its inputs and packs output\n * arguments into the result. When the spec sets `canThrow`, the reported `GError` is thrown.\n *\n * A plain spec is bound when `fn` is called, so a malformed descriptor throws at binding time.\n * Passing a function returning the spec instead defers building the descriptors and the binding\n * to the first call, so describing such a binding costs nothing until something calls it and a\n * module full of them loads without touching the shared library.\n *\n * @param sharedLibrary Shared library the symbol is looked up in.\n * @param symbol Name of the C symbol to bind.\n * @param spec Argument and return descriptors the call is marshalled through, or a function\n * returning them, which defers building the descriptors and the binding to the first call.\n */\nfunction fn(\n sharedLibrary: string,\n symbol: string,\n spec: FnSpec | (() => FnSpec),\n): (...inputs: unknown[]) => unknown {\n if (typeof spec !== \"function\") {\n return bindNativeCallable(sharedLibrary, symbol, spec);\n }\n\n let bound: ((...inputs: unknown[]) => unknown) | undefined;\n\n return (...inputs) => {\n bound ??= bindNativeCallable(sharedLibrary, symbol, spec());\n\n return bound(...inputs);\n };\n}\n\nexport { buildNativeArgTypes, fn, fromNativeCallable };\n"]}
|
package/dist/folded-lengths.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ type FoldedLengthSpec = {
|
|
|
11
11
|
returnDescriptor: Descriptor;
|
|
12
12
|
userDataIndex?: number | undefined;
|
|
13
13
|
};
|
|
14
|
+
declare const foldedLengthArgIndices: (spec: FoldedLengthSpec) => ReadonlySet<number>;
|
|
14
15
|
declare const foldedLengthSources: (spec: FoldedLengthSpec) => LengthSources;
|
|
15
|
-
export { foldedLengthSources, type LengthSource, type LengthSources };
|
|
16
|
+
export { foldedLengthArgIndices, foldedLengthSources, type LengthSource, type LengthSources };
|
|
16
17
|
//# sourceMappingURL=folded-lengths.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folded-lengths.d.ts","sourceRoot":"","sources":["../src/folded-lengths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,KAAK,YAAY,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAC9E,KAAK,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;AAEjD,KAAK,gBAAgB,GAAG;IACpB,cAAc,EAAE,UAAU,EAAE,CAAC;IAC7B,gBAAgB,EAAE,UAAU,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC,CAAC;
|
|
1
|
+
{"version":3,"file":"folded-lengths.d.ts","sourceRoot":"","sources":["../src/folded-lengths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,KAAK,YAAY,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAC9E,KAAK,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;AAEjD,KAAK,gBAAgB,GAAG;IACpB,cAAc,EAAE,UAAU,EAAE,CAAC;IAC7B,gBAAgB,EAAE,UAAU,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC,CAAC;AAqCF,QAAA,MAAM,sBAAsB,GAAI,MAAM,gBAAgB,KAAG,WAAW,CAAC,MAAM,CAmB1E,CAAC;AAEF,QAAA,MAAM,mBAAmB,GAAI,MAAM,gBAAgB,KAAG,aAOrD,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,CAAC"}
|
package/dist/folded-lengths.js
CHANGED
|
@@ -10,12 +10,7 @@ const addLengthSource = (sources, index, source) => {
|
|
|
10
10
|
if (index === undefined) {
|
|
11
11
|
return;
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
if (existing === undefined) {
|
|
15
|
-
sources.set(index, [source]);
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
existing.push(source);
|
|
13
|
+
sources.getOrInsertComputed(index, () => []).push(source);
|
|
19
14
|
};
|
|
20
15
|
const addOutArgLengthSources = (sources, spec) => {
|
|
21
16
|
const { userDataIndex } = spec;
|
|
@@ -27,6 +22,21 @@ const addOutArgLengthSources = (sources, spec) => {
|
|
|
27
22
|
}
|
|
28
23
|
}
|
|
29
24
|
};
|
|
25
|
+
const foldedLengthArgIndices = (spec) => {
|
|
26
|
+
const indices = new Set();
|
|
27
|
+
const add = (declaredIndex) => {
|
|
28
|
+
const argIndex = effectiveArgIndex(declaredIndex, spec.userDataIndex);
|
|
29
|
+
if (argIndex !== undefined) {
|
|
30
|
+
indices.add(argIndex);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
add(sizedArrayLengthIndex(spec.returnDescriptor));
|
|
34
|
+
for (const descriptor of spec.argDescriptors) {
|
|
35
|
+
add(sizedArrayLengthIndex(descriptor));
|
|
36
|
+
add(outArgLengthIndex(descriptor));
|
|
37
|
+
}
|
|
38
|
+
return indices;
|
|
39
|
+
};
|
|
30
40
|
const foldedLengthSources = (spec) => {
|
|
31
41
|
const sources = new Map();
|
|
32
42
|
const returnLengthIndex = effectiveArgIndex(sizedArrayLengthIndex(spec.returnDescriptor), spec.userDataIndex);
|
|
@@ -34,5 +44,5 @@ const foldedLengthSources = (spec) => {
|
|
|
34
44
|
addOutArgLengthSources(sources, spec);
|
|
35
45
|
return sources;
|
|
36
46
|
};
|
|
37
|
-
export { foldedLengthSources };
|
|
47
|
+
export { foldedLengthArgIndices, foldedLengthSources };
|
|
38
48
|
//# sourceMappingURL=folded-lengths.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folded-lengths.js","sourceRoot":"","sources":["../src/folded-lengths.ts"],"names":[],"mappings":"AAWA,MAAM,qBAAqB,GAAG,CAAC,UAAsB,EAAsB,EAAE,CACzE,UAAU,CAAC,IAAI,KAAK,OAAO,IAAI,UAAU,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;AAE5G,MAAM,iBAAiB,GAAG,CAAC,UAAkC,EAAsB,EAAE,CACjF,UAAU,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAE/F,MAAM,iBAAiB,GAAG,CAAC,QAA4B,EAAE,aAAiC,EAAsB,EAAE;IAC9G,IAAI,QAAQ,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,IAAI,QAAQ,GAAG,aAAa,EAAE,CAAC;QACpF,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,OAAsB,EAAE,KAAyB,EAAE,MAAoB,EAAQ,EAAE;IACtG,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO;IACX,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"folded-lengths.js","sourceRoot":"","sources":["../src/folded-lengths.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Descriptor } from \"@gtkx/native\";\n\ntype LengthSource = { kind: \"return\" } | { kind: \"outArg\"; argIndex: number };\ntype LengthSources = Map<number, LengthSource[]>;\n\ntype FoldedLengthSpec = {\n argDescriptors: Descriptor[];\n returnDescriptor: Descriptor;\n userDataIndex?: number | undefined;\n};\n\nconst sizedArrayLengthIndex = (descriptor: Descriptor): number | undefined =>\n descriptor.kind === \"array\" && descriptor.arrayKind === \"sized\" ? descriptor.sizeParamIndex : undefined;\n\nconst outArgLengthIndex = (descriptor: Descriptor | undefined): number | undefined =>\n descriptor?.kind === \"ref\" ? sizedArrayLengthIndex(descriptor.innerDescriptor) : undefined;\n\nconst effectiveArgIndex = (argIndex: number | undefined, userDataIndex: number | undefined): number | undefined => {\n if (argIndex === undefined || userDataIndex === undefined || argIndex < userDataIndex) {\n return argIndex;\n }\n\n return argIndex === userDataIndex ? undefined : argIndex - 1;\n};\n\nconst addLengthSource = (sources: LengthSources, index: number | undefined, source: LengthSource): void => {\n if (index === undefined) {\n return;\n }\n\n sources.getOrInsertComputed(index, () => []).push(source);\n};\n\nconst addOutArgLengthSources = (sources: LengthSources, spec: FoldedLengthSpec): void => {\n const { userDataIndex } = spec;\n\n for (const [declaredIndex, descriptor] of spec.argDescriptors.entries()) {\n const argIndex = effectiveArgIndex(declaredIndex, userDataIndex);\n\n if (argIndex !== undefined) {\n const lengthIndex = effectiveArgIndex(outArgLengthIndex(descriptor), userDataIndex);\n addLengthSource(sources, lengthIndex, { kind: \"outArg\", argIndex });\n }\n }\n};\n\nconst foldedLengthArgIndices = (spec: FoldedLengthSpec): ReadonlySet<number> => {\n const indices: Set<number> = new Set();\n\n const add = (declaredIndex: number | undefined): void => {\n const argIndex = effectiveArgIndex(declaredIndex, spec.userDataIndex);\n\n if (argIndex !== undefined) {\n indices.add(argIndex);\n }\n };\n\n add(sizedArrayLengthIndex(spec.returnDescriptor));\n\n for (const descriptor of spec.argDescriptors) {\n add(sizedArrayLengthIndex(descriptor));\n add(outArgLengthIndex(descriptor));\n }\n\n return indices;\n};\n\nconst foldedLengthSources = (spec: FoldedLengthSpec): LengthSources => {\n const sources: LengthSources = new Map();\n const returnLengthIndex = effectiveArgIndex(sizedArrayLengthIndex(spec.returnDescriptor), spec.userDataIndex);\n addLengthSource(sources, returnLengthIndex, { kind: \"return\" });\n addOutArgLengthSources(sources, spec);\n\n return sources;\n};\n\nexport { foldedLengthArgIndices, foldedLengthSources, type LengthSource, type LengthSources };\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,48 +1,26 @@
|
|
|
1
1
|
import "./exit-hook.js";
|
|
2
|
-
/** @public */
|
|
3
2
|
export { type ApplicationClass, type CommandLineApplication, createApplication } from "./application-class.js";
|
|
4
|
-
|
|
3
|
+
export { CallbackMarshalError } from "./callback.js";
|
|
5
4
|
export { type ClosureCallback, ClosureMarshalError, toClosure, tryToClosure } from "./closure.js";
|
|
6
|
-
/** @public */
|
|
7
5
|
export { createErrorDomain, type ErrorDomain } from "./error.js";
|
|
8
|
-
/** @public */
|
|
9
6
|
export { type Field, type StridedField } from "./field.js";
|
|
10
|
-
/** @public */
|
|
11
7
|
export { onExit, quit, quitApplication, runApplication, type RunApplicationResult } from "./lifecycle.js";
|
|
12
|
-
/** @public */
|
|
13
8
|
export { offSignal, onceSignal, onSignal } from "./listeners.js";
|
|
14
|
-
/** @public */
|
|
15
9
|
export { installMixins, type Mixin } from "./mixin.js";
|
|
16
|
-
|
|
17
|
-
export { fromNative, toNative } from "./native-value.js";
|
|
18
|
-
/** @public */
|
|
10
|
+
export { fromNative, toHashTableEntries, toNative } from "./native-value.js";
|
|
19
11
|
export { type ConstructBinding, type ConstructBindings, getObjectProperty, newObjectWithProperties, registerConstructProperties, setObjectProperty, } from "./object.js";
|
|
20
|
-
/** @public */
|
|
21
12
|
export { getParamSpecFlags, getParamSpecOwnerType, getParamSpecValueType } from "./param-spec.js";
|
|
22
|
-
/** @public */
|
|
23
13
|
export { promisify, trimFinish } from "./promisify.js";
|
|
24
|
-
/** @public */
|
|
25
14
|
export { coerceObjectProperty, getDeclaredPropertyName, isReadableProperty, newParamSpecOverride, } from "./properties.js";
|
|
26
|
-
/** @public */
|
|
27
15
|
export { matchAllRegex, matchRegex } from "./regex.js";
|
|
28
|
-
/** @public */
|
|
29
16
|
export { type Interface, registerClass, type SignalGType, type SignalSpec } from "./register-class.js";
|
|
30
|
-
/** @public */
|
|
31
17
|
export { getClassType, getHandle, getInstanceType, getWrapperClass, installInterfaces, peekTypeClass, registerClassStruct, registerInterface, registerWrapperClass, registerWrapperClassResolver, type StaticBase, setHandle, wrapHandle, type WrapperClass, type WrapperClassResolver, } from "./registry.js";
|
|
32
|
-
/** @public */
|
|
33
18
|
export { connectSignal, disconnectSignal, emitSignal, getSignalBaseName, type SignalHandler, signalForHandlerName, } from "./signal.js";
|
|
34
|
-
/** @public */
|
|
35
19
|
export { t } from "./t.js";
|
|
36
|
-
/** @public */
|
|
37
20
|
export { resolveType, TYPE_BOOLEAN, TYPE_BOXED, TYPE_CHAR, TYPE_DOUBLE, TYPE_ENUM, TYPE_FLAGS, TYPE_FLOAT, TYPE_GTYPE, TYPE_INT, TYPE_INT64, TYPE_INTERFACE, TYPE_INVALID, TYPE_LONG, TYPE_NONE, TYPE_OBJECT, TYPE_PARAM, TYPE_POINTER, TYPE_STRING, TYPE_UCHAR, TYPE_UINT, TYPE_UINT64, TYPE_ULONG, TYPE_UNICHAR, TYPE_VARIANT, type TypedClass, retainWrapperClasses, typeFromName, typeInterfaces, typeIsA, typeName, typeParent, valueIsA, } from "./type.js";
|
|
38
|
-
/** @public */
|
|
39
21
|
export { fromValue, getBoxedValue, type JsValue, setBoxedValue, toValueHandle, tryToValueHandle, ValueMarshalError, } from "./value.js";
|
|
40
|
-
/** @public */
|
|
41
22
|
export { type ByteArray, type FromVariantOptions, fromVariant, type RecursiveFromVariantOptions, type RecursiveVariantValue, toVariant, type VariantInput, type VariantValue, } from "./variant.js";
|
|
42
|
-
/** @public */
|
|
43
23
|
export { callParent, callVfunc } from "./vfunc-call.js";
|
|
44
|
-
/** @public */
|
|
45
24
|
export { alloc, type ExternalObject, type Handle, read, write } from "@gtkx/native";
|
|
46
|
-
/** @public */
|
|
47
25
|
export { type AnyClass } from "@gtkx/utils";
|
|
48
26
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AAExB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,48 +1,26 @@
|
|
|
1
1
|
import "./exit-hook.js";
|
|
2
|
-
/** @public */
|
|
3
2
|
export { createApplication } from "./application-class.js";
|
|
4
|
-
|
|
3
|
+
export { CallbackMarshalError } from "./callback.js";
|
|
5
4
|
export { ClosureMarshalError, toClosure, tryToClosure } from "./closure.js";
|
|
6
|
-
/** @public */
|
|
7
5
|
export { createErrorDomain } from "./error.js";
|
|
8
|
-
/** @public */
|
|
9
6
|
export {} from "./field.js";
|
|
10
|
-
/** @public */
|
|
11
7
|
export { onExit, quit, quitApplication, runApplication } from "./lifecycle.js";
|
|
12
|
-
/** @public */
|
|
13
8
|
export { offSignal, onceSignal, onSignal } from "./listeners.js";
|
|
14
|
-
/** @public */
|
|
15
9
|
export { installMixins } from "./mixin.js";
|
|
16
|
-
|
|
17
|
-
export { fromNative, toNative } from "./native-value.js";
|
|
18
|
-
/** @public */
|
|
10
|
+
export { fromNative, toHashTableEntries, toNative } from "./native-value.js";
|
|
19
11
|
export { getObjectProperty, newObjectWithProperties, registerConstructProperties, setObjectProperty, } from "./object.js";
|
|
20
|
-
/** @public */
|
|
21
12
|
export { getParamSpecFlags, getParamSpecOwnerType, getParamSpecValueType } from "./param-spec.js";
|
|
22
|
-
/** @public */
|
|
23
13
|
export { promisify, trimFinish } from "./promisify.js";
|
|
24
|
-
/** @public */
|
|
25
14
|
export { coerceObjectProperty, getDeclaredPropertyName, isReadableProperty, newParamSpecOverride, } from "./properties.js";
|
|
26
|
-
/** @public */
|
|
27
15
|
export { matchAllRegex, matchRegex } from "./regex.js";
|
|
28
|
-
/** @public */
|
|
29
16
|
export { registerClass } from "./register-class.js";
|
|
30
|
-
/** @public */
|
|
31
17
|
export { getClassType, getHandle, getInstanceType, getWrapperClass, installInterfaces, peekTypeClass, registerClassStruct, registerInterface, registerWrapperClass, registerWrapperClassResolver, setHandle, wrapHandle, } from "./registry.js";
|
|
32
|
-
/** @public */
|
|
33
18
|
export { connectSignal, disconnectSignal, emitSignal, getSignalBaseName, signalForHandlerName, } from "./signal.js";
|
|
34
|
-
/** @public */
|
|
35
19
|
export { t } from "./t.js";
|
|
36
|
-
/** @public */
|
|
37
20
|
export { resolveType, TYPE_BOOLEAN, TYPE_BOXED, TYPE_CHAR, TYPE_DOUBLE, TYPE_ENUM, TYPE_FLAGS, TYPE_FLOAT, TYPE_GTYPE, TYPE_INT, TYPE_INT64, TYPE_INTERFACE, TYPE_INVALID, TYPE_LONG, TYPE_NONE, TYPE_OBJECT, TYPE_PARAM, TYPE_POINTER, TYPE_STRING, TYPE_UCHAR, TYPE_UINT, TYPE_UINT64, TYPE_ULONG, TYPE_UNICHAR, TYPE_VARIANT, retainWrapperClasses, typeFromName, typeInterfaces, typeIsA, typeName, typeParent, valueIsA, } from "./type.js";
|
|
38
|
-
/** @public */
|
|
39
21
|
export { fromValue, getBoxedValue, setBoxedValue, toValueHandle, tryToValueHandle, ValueMarshalError, } from "./value.js";
|
|
40
|
-
/** @public */
|
|
41
22
|
export { fromVariant, toVariant, } from "./variant.js";
|
|
42
|
-
/** @public */
|
|
43
23
|
export { callParent, callVfunc } from "./vfunc-call.js";
|
|
44
|
-
/** @public */
|
|
45
24
|
export { alloc, read, write } from "@gtkx/native";
|
|
46
|
-
/** @public */
|
|
47
25
|
export {} from "@gtkx/utils";
|
|
48
26
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AAExB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AAExB,OAAO,EAAsD,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC/G,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAwB,mBAAmB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAoB,MAAM,YAAY,CAAC;AACjE,OAAO,EAAiC,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,cAAc,EAA6B,MAAM,gBAAgB,CAAC;AAC1G,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAGH,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,iBAAiB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EACH,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAkB,aAAa,EAAqC,MAAM,qBAAqB,CAAC;AACvG,OAAO,EACH,YAAY,EACZ,SAAS,EACT,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,4BAA4B,EAE5B,SAAS,EACT,UAAU,GAGb,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EAEjB,oBAAoB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EACH,WAAW,EACX,YAAY,EACZ,UAAU,EACV,SAAS,EACT,WAAW,EACX,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,cAAc,EACd,YAAY,EACZ,SAAS,EACT,SAAS,EACT,WAAW,EACX,UAAU,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,YAAY,EACZ,YAAY,EAEZ,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,OAAO,EACP,QAAQ,EACR,UAAU,EACV,QAAQ,GACX,MAAM,WAAW,CAAC;AACnB,OAAO,EACH,SAAS,EACT,aAAa,EAEb,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAGH,WAAW,EAGX,SAAS,GAGZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAoC,IAAI,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAiB,MAAM,aAAa,CAAC","sourcesContent":["import \"./exit-hook.js\";\n\nexport { type ApplicationClass, type CommandLineApplication, createApplication } from \"./application-class.js\";\nexport { CallbackMarshalError } from \"./callback.js\";\nexport { type ClosureCallback, ClosureMarshalError, toClosure, tryToClosure } from \"./closure.js\";\nexport { createErrorDomain, type ErrorDomain } from \"./error.js\";\nexport { type Field, type StridedField } from \"./field.js\";\nexport { onExit, quit, quitApplication, runApplication, type RunApplicationResult } from \"./lifecycle.js\";\nexport { offSignal, onceSignal, onSignal } from \"./listeners.js\";\nexport { installMixins, type Mixin } from \"./mixin.js\";\nexport { fromNative, toHashTableEntries, toNative } from \"./native-value.js\";\nexport {\n type ConstructBinding,\n type ConstructBindings,\n getObjectProperty,\n newObjectWithProperties,\n registerConstructProperties,\n setObjectProperty,\n} from \"./object.js\";\nexport { getParamSpecFlags, getParamSpecOwnerType, getParamSpecValueType } from \"./param-spec.js\";\nexport { promisify, trimFinish } from \"./promisify.js\";\nexport {\n coerceObjectProperty,\n getDeclaredPropertyName,\n isReadableProperty,\n newParamSpecOverride,\n} from \"./properties.js\";\nexport { matchAllRegex, matchRegex } from \"./regex.js\";\nexport { type Interface, registerClass, type SignalGType, type SignalSpec } from \"./register-class.js\";\nexport {\n getClassType,\n getHandle,\n getInstanceType,\n getWrapperClass,\n installInterfaces,\n peekTypeClass,\n registerClassStruct,\n registerInterface,\n registerWrapperClass,\n registerWrapperClassResolver,\n type StaticBase,\n setHandle,\n wrapHandle,\n type WrapperClass,\n type WrapperClassResolver,\n} from \"./registry.js\";\nexport {\n connectSignal,\n disconnectSignal,\n emitSignal,\n getSignalBaseName,\n type SignalHandler,\n signalForHandlerName,\n} from \"./signal.js\";\nexport { t } from \"./t.js\";\nexport {\n resolveType,\n TYPE_BOOLEAN,\n TYPE_BOXED,\n TYPE_CHAR,\n TYPE_DOUBLE,\n TYPE_ENUM,\n TYPE_FLAGS,\n TYPE_FLOAT,\n TYPE_GTYPE,\n TYPE_INT,\n TYPE_INT64,\n TYPE_INTERFACE,\n TYPE_INVALID,\n TYPE_LONG,\n TYPE_NONE,\n TYPE_OBJECT,\n TYPE_PARAM,\n TYPE_POINTER,\n TYPE_STRING,\n TYPE_UCHAR,\n TYPE_UINT,\n TYPE_UINT64,\n TYPE_ULONG,\n TYPE_UNICHAR,\n TYPE_VARIANT,\n type TypedClass,\n retainWrapperClasses,\n typeFromName,\n typeInterfaces,\n typeIsA,\n typeName,\n typeParent,\n valueIsA,\n} from \"./type.js\";\nexport {\n fromValue,\n getBoxedValue,\n type JsValue,\n setBoxedValue,\n toValueHandle,\n tryToValueHandle,\n ValueMarshalError,\n} from \"./value.js\";\nexport {\n type ByteArray,\n type FromVariantOptions,\n fromVariant,\n type RecursiveFromVariantOptions,\n type RecursiveVariantValue,\n toVariant,\n type VariantInput,\n type VariantValue,\n} from \"./variant.js\";\nexport { callParent, callVfunc } from \"./vfunc-call.js\";\nexport { alloc, type ExternalObject, type Handle, read, write } from \"@gtkx/native\";\nexport { type AnyClass } from \"@gtkx/utils\";\n"]}
|
package/dist/internal.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/** @internal */
|
|
2
2
|
export { registerElementMetadata } from "./element-metadata.js";
|
|
3
3
|
export { elementMetadataVersion, registeredElementProperties, registeredElementSignals, } from "./element-metadata.js";
|
|
4
|
-
export {
|
|
4
|
+
export { createErrorDomain } from "./error.js";
|
|
5
5
|
export { type ApplicationInstance, getApplicationInstance } from "./lifecycle.js";
|
|
6
|
-
export { getExactWrapperClass,
|
|
6
|
+
export { getExactWrapperClass, resolveWrapperClass } from "./registry.js";
|
|
7
7
|
export { hasSignalListener } from "./signal.js";
|
|
8
8
|
export { resolveType } from "./type.js";
|
|
9
9
|
export { fromValue, getBoxedValue, getValueType, inoutValueForBoxedDescriptor, newValueForDescriptor, outValueForBoxedDescriptor, toValue, } from "./value.js";
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EACH,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EACH,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,KAAK,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EACH,SAAS,EACT,aAAa,EACb,YAAY,EACZ,4BAA4B,EAC5B,qBAAqB,EACrB,0BAA0B,EAC1B,OAAO,GACV,MAAM,YAAY,CAAC"}
|
package/dist/internal.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/** @internal */
|
|
2
2
|
export { registerElementMetadata } from "./element-metadata.js";
|
|
3
3
|
export { elementMetadataVersion, registeredElementProperties, registeredElementSignals, } from "./element-metadata.js";
|
|
4
|
-
export {
|
|
4
|
+
export { createErrorDomain } from "./error.js";
|
|
5
5
|
export { getApplicationInstance } from "./lifecycle.js";
|
|
6
|
-
export { getExactWrapperClass,
|
|
6
|
+
export { getExactWrapperClass, resolveWrapperClass } from "./registry.js";
|
|
7
7
|
export { hasSignalListener } from "./signal.js";
|
|
8
8
|
export { resolveType } from "./type.js";
|
|
9
9
|
export { fromValue, getBoxedValue, getValueType, inoutValueForBoxedDescriptor, newValueForDescriptor, outValueForBoxedDescriptor, toValue, } from "./value.js";
|
package/dist/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EACH,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EACH,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAA4B,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EACH,SAAS,EACT,aAAa,EACb,YAAY,EACZ,4BAA4B,EAC5B,qBAAqB,EACrB,0BAA0B,EAC1B,OAAO,GACV,MAAM,YAAY,CAAC","sourcesContent":["/** @internal */\nexport { registerElementMetadata } from \"./element-metadata.js\";\nexport {\n elementMetadataVersion,\n registeredElementProperties,\n registeredElementSignals,\n} from \"./element-metadata.js\";\nexport { createErrorDomain } from \"./error.js\";\nexport { type ApplicationInstance, getApplicationInstance } from \"./lifecycle.js\";\nexport { getExactWrapperClass, resolveWrapperClass } from \"./registry.js\";\nexport { hasSignalListener } from \"./signal.js\";\nexport { resolveType } from \"./type.js\";\nexport {\n fromValue,\n getBoxedValue,\n getValueType,\n inoutValueForBoxedDescriptor,\n newValueForDescriptor,\n outValueForBoxedDescriptor,\n toValue,\n} from \"./value.js\";\n"]}
|
package/dist/native-value.d.ts
CHANGED
|
@@ -13,6 +13,14 @@ import { type Descriptor } from "@gtkx/native";
|
|
|
13
13
|
* @param value The raw native value to convert.
|
|
14
14
|
*/
|
|
15
15
|
declare function fromNative(descriptor: Descriptor, value: unknown): unknown;
|
|
16
|
+
/**
|
|
17
|
+
* Normalises the JavaScript form of a hash table argument into its entry list. A `Map` is the
|
|
18
|
+
* expected form and any other iterable of pairs is accepted; anything else is rejected, a plain
|
|
19
|
+
* object above all, which `Array.from` would quietly flatten into an empty table.
|
|
20
|
+
*
|
|
21
|
+
* @param value The JavaScript value passed for a hash table argument.
|
|
22
|
+
*/
|
|
23
|
+
declare function toHashTableEntries(value: unknown): [unknown, unknown][] | null;
|
|
16
24
|
/**
|
|
17
25
|
* Converts a JavaScript value into the raw form native code expects, unwrapping
|
|
18
26
|
* object, struct, boxed, and fundamental wrappers back to their handles,
|
|
@@ -23,5 +31,5 @@ declare function fromNative(descriptor: Descriptor, value: unknown): unknown;
|
|
|
23
31
|
* @param value The JavaScript value to convert.
|
|
24
32
|
*/
|
|
25
33
|
declare function toNative(descriptor: Descriptor, value: unknown): unknown;
|
|
26
|
-
export { fromNative, toNative };
|
|
34
|
+
export { fromNative, toHashTableEntries, toNative };
|
|
27
35
|
//# sourceMappingURL=native-value.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-value.d.ts","sourceRoot":"","sources":["../src/native-value.ts"],"names":[],"mappings":"AACA,OAAO,EAIH,KAAK,UAAU,EAKlB,MAAM,cAAc,CAAC;AAmMtB;;;;;;;;;;;;GAYG;AACH,iBAAS,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAiCnE;
|
|
1
|
+
{"version":3,"file":"native-value.d.ts","sourceRoot":"","sources":["../src/native-value.ts"],"names":[],"mappings":"AACA,OAAO,EAIH,KAAK,UAAU,EAKlB,MAAM,cAAc,CAAC;AAmMtB;;;;;;;;;;;;GAYG;AACH,iBAAS,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAiCnE;AAMD;;;;;;GAMG;AACH,iBAAS,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAUvE;AAeD;;;;;;;;GAQG;AACH,iBAAS,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAyBjE;AAED,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC"}
|
package/dist/native-value.js
CHANGED
|
@@ -165,11 +165,28 @@ function fromNative(descriptor, value) {
|
|
|
165
165
|
function collectionToNative(descriptor, value) {
|
|
166
166
|
return value == null ? null : mapCollection(descriptor, value, toNative);
|
|
167
167
|
}
|
|
168
|
-
|
|
168
|
+
/**
|
|
169
|
+
* Normalises the JavaScript form of a hash table argument into its entry list. A `Map` is the
|
|
170
|
+
* expected form and any other iterable of pairs is accepted; anything else is rejected, a plain
|
|
171
|
+
* object above all, which `Array.from` would quietly flatten into an empty table.
|
|
172
|
+
*
|
|
173
|
+
* @param value The JavaScript value passed for a hash table argument.
|
|
174
|
+
*/
|
|
175
|
+
function toHashTableEntries(value) {
|
|
169
176
|
if (value == null) {
|
|
170
177
|
return null;
|
|
171
178
|
}
|
|
172
|
-
|
|
179
|
+
if (typeof value[Symbol.iterator] !== "function") {
|
|
180
|
+
throw new TypeError("A hash table argument must be a Map or an iterable of [key, value] pairs");
|
|
181
|
+
}
|
|
182
|
+
return [...value];
|
|
183
|
+
}
|
|
184
|
+
function hashTableToNative(descriptor, value) {
|
|
185
|
+
const entries = toHashTableEntries(value);
|
|
186
|
+
if (entries === null) {
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
return entries.map(([key, val]) => [
|
|
173
190
|
toNative(descriptor.keyDescriptor, key),
|
|
174
191
|
toNative(descriptor.valueDescriptor, val),
|
|
175
192
|
]);
|
|
@@ -206,5 +223,5 @@ function toNative(descriptor, value) {
|
|
|
206
223
|
}
|
|
207
224
|
}
|
|
208
225
|
}
|
|
209
|
-
export { fromNative, toNative };
|
|
226
|
+
export { fromNative, toHashTableEntries, toNative };
|
|
210
227
|
//# sourceMappingURL=native-value.js.map
|
package/dist/native-value.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-value.js","sourceRoot":"","sources":["../src/native-value.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AnyClass } from \"@gtkx/utils\";\nimport {\n bindFunctionPointer,\n call,\n type CallDescriptor,\n type Descriptor,\n type ExternalObject,\n getType,\n type Handle,\n type Ref,\n} from \"@gtkx/native\";\nimport {\n type ArrayDescriptor,\n type BoxedDescriptor,\n boxedT,\n type CallbackDescriptor,\n type FundamentalDescriptor,\n type HashTableDescriptor,\n isGtypeDescriptor,\n type ObjectDescriptor,\n refT,\n type StructDescriptor,\n} from \"./descriptors.js\";\nimport { checkError } from \"./error.js\";\nimport { LIB } from \"./library.js\";\nimport {\n coerceGType,\n getHandle,\n getWrapperClass,\n resolveWrapperClass,\n wrapCallScopedObject,\n wrapFundamentalHandle,\n wrapHandle,\n wrapObject,\n} from \"./registry.js\";\nimport { resolveDescriptorType } from \"./type.js\";\n\ntype MarshalledKind = \"object\" | \"struct\" | \"boxed\" | \"fundamental\" | \"array\" | \"hashtable\";\ntype MarshalledDescriptor = Extract<Descriptor, { kind: MarshalledKind }>;\ntype DecodedCallbackTarget = { fnPtr: bigint; userData?: bigint | undefined };\n\nconst MARSHALLED_KINDS: Set<Descriptor[\"kind\"]> = new Set<MarshalledKind>([\n \"object\",\n \"struct\",\n \"boxed\",\n \"fundamental\",\n \"array\",\n \"hashtable\",\n]);\n\nconst NULL_POINTER = 0n;\n\nfunction isMarshalledDescriptor(descriptor: Descriptor): descriptor is MarshalledDescriptor {\n return MARSHALLED_KINDS.has(descriptor.kind);\n}\n\nfunction mapCollection(\n descriptor: ArrayDescriptor,\n value: unknown,\n convert: (itemDescriptor: Descriptor, item: unknown) => unknown,\n): unknown[] {\n return (value as unknown[]).map((item) => convert(descriptor.itemDescriptor, item));\n}\n\nfunction collectionFromNative(descriptor: ArrayDescriptor, value: unknown): unknown {\n return value === null ? null : mapCollection(descriptor, value, fromNative);\n}\n\nfunction boxedFromNative(descriptor: Descriptor, value: unknown): unknown {\n if (value == null) {\n return null;\n }\n\n const handle = value as ExternalObject<Handle>;\n const type = resolveDescriptorType(descriptor);\n const registered = resolveWrapperClass(type);\n\n if (registered !== null) {\n return wrapHandle(handle, registered);\n }\n\n const fallback = (descriptor as BoxedDescriptor).fallbackClass?.();\n\n if (fallback !== undefined) {\n return wrapHandle(handle, fallback);\n }\n\n return wrapHandle(handle, getWrapperClass(type));\n}\n\nfunction fundamentalWrapperClass(descriptor: FundamentalDescriptor, handle: ExternalObject<Handle>): AnyClass {\n if (descriptor.wrapperClass !== undefined) {\n return descriptor.wrapperClass;\n }\n\n const declaredType = resolveDescriptorType(descriptor);\n const registered = resolveWrapperClass(getType(handle, declaredType));\n\n if (registered !== null) {\n return registered;\n }\n\n const fallback = descriptor.fallbackClass?.();\n\n if (fallback !== undefined) {\n return fallback;\n }\n\n return getWrapperClass(declaredType);\n}\n\nfunction fundamentalFromNative(descriptor: FundamentalDescriptor, value: unknown): unknown {\n if (value == null) {\n return null;\n }\n\n const handle = value as ExternalObject<Handle>;\n\n return wrapFundamentalHandle(handle, fundamentalWrapperClass(descriptor, handle));\n}\n\nconst errorRefDescriptor = (): Descriptor =>\n refT(boxedT(\"GError\", { ownership: \"full\", sharedLibrary: LIB, getTypeFnName: \"g_error_get_type\" }));\n\nfunction decodedCallbackValues(\n descriptor: CallbackDescriptor,\n target: DecodedCallbackTarget,\n inputs: unknown[],\n): unknown[] {\n const values: unknown[] = [];\n let cursor = 0;\n\n for (const [index, argDescriptor] of descriptor.argDescriptors.entries()) {\n if (index === descriptor.userDataIndex) {\n values.push(target.userData ?? NULL_POINTER);\n } else {\n values.push(toNative(argDescriptor, inputs[cursor]));\n cursor += 1;\n }\n }\n\n return values;\n}\n\nfunction decodedCallbackCallable(\n descriptor: CallbackDescriptor,\n target: DecodedCallbackTarget,\n): (...inputs: unknown[]) => unknown {\n const canThrow = descriptor.canThrow === true;\n const isOneShot = descriptor.scope === \"async\";\n const argDescriptors = canThrow ? [...descriptor.argDescriptors, errorRefDescriptor()] : descriptor.argDescriptors;\n let bound: ExternalObject<CallDescriptor> | undefined;\n let isSpent = false;\n\n return (...inputs) => {\n if (isSpent) {\n throw new Error(\"An async-scoped callback was already invoked; its native caller has released it\");\n }\n\n bound ??= bindFunctionPointer(target.fnPtr, argDescriptors, descriptor.returnDescriptor, \"decoded callback\");\n const values = decodedCallbackValues(descriptor, target, inputs);\n isSpent = isOneShot;\n\n if (!canThrow) {\n return fromNative(descriptor.returnDescriptor, call(bound, values));\n }\n\n const errorRef: Ref = { value: null };\n values.push(errorRef);\n const result = call(bound, values);\n checkError(errorRef);\n\n return fromNative(descriptor.returnDescriptor, result);\n };\n}\n\nfunction callbackFromNative(descriptor: CallbackDescriptor, value: unknown): unknown {\n if (value == null) {\n return value;\n }\n\n const target = value as Partial<DecodedCallbackTarget>;\n\n if (typeof target.fnPtr !== \"bigint\") {\n return value;\n }\n\n return decodedCallbackCallable(descriptor, { fnPtr: target.fnPtr, userData: target.userData });\n}\n\nfunction hashTableFromNative(descriptor: HashTableDescriptor, value: unknown): unknown {\n if (value === null) {\n return null;\n }\n\n const entries = value as [unknown, unknown][];\n\n return new Map(\n entries.map(([key, val]): [unknown, unknown] => [\n fromNative(descriptor.keyDescriptor, key),\n fromNative(descriptor.valueDescriptor, val),\n ]),\n );\n}\n\n/**\n * Converts a raw value returned from native code into its JavaScript form,\n * wrapping object, struct, boxed, and fundamental handles and recursively\n * converting arrays and hash tables according to the descriptor. A callback\n * decoded from a native function pointer and its bound user data becomes a\n * callable function that invokes the native callback; it stays valid only as\n * long as the native caller keeps the pointer pair alive, which for an\n * async-scoped callback means until the first invocation — calling one a\n * second time throws instead of reaching the released native closure.\n *\n * @param descriptor Describes the native type of the value.\n * @param value The raw native value to convert.\n */\nfunction fromNative(descriptor: Descriptor, value: unknown): unknown {\n if (descriptor.kind === \"callback\") {\n return callbackFromNative(descriptor, value);\n }\n\n if (!isMarshalledDescriptor(descriptor)) {\n return value;\n }\n\n switch (descriptor.kind) {\n case \"object\": {\n const fallbackClass = (descriptor as ObjectDescriptor).fallbackClass;\n\n return descriptor.isCallScoped === true\n ? wrapCallScopedObject(value, fallbackClass)\n : wrapObject(value, fallbackClass);\n }\n case \"struct\": {\n return wrapHandle(value as ExternalObject<Handle> | null, (descriptor as StructDescriptor).wrapperClass);\n }\n case \"boxed\": {\n return boxedFromNative(descriptor, value);\n }\n case \"fundamental\": {\n return fundamentalFromNative(descriptor, value);\n }\n case \"array\": {\n return collectionFromNative(descriptor, value);\n }\n case \"hashtable\": {\n return hashTableFromNative(descriptor, value);\n }\n }\n}\n\nfunction collectionToNative(descriptor: ArrayDescriptor, value: unknown): unknown {\n return value == null ? null : mapCollection(descriptor, value, toNative);\n}\n\nfunction hashTableToNative(descriptor: HashTableDescriptor, value: unknown): unknown {\n if (value == null) {\n return null;\n }\n\n return [...(value as Map<unknown, unknown>)].map(([key, val]): [unknown, unknown] => [\n toNative(descriptor.keyDescriptor, key),\n toNative(descriptor.valueDescriptor, val),\n ]);\n}\n\n/**\n * Converts a JavaScript value into the raw form native code expects, unwrapping\n * object, struct, boxed, and fundamental wrappers back to their handles,\n * resolving a class passed for a GType to the GType it was registered under, and\n * recursively converting arrays and maps according to the descriptor.\n *\n * @param descriptor Describes the native type to convert to.\n * @param value The JavaScript value to convert.\n */\nfunction toNative(descriptor: Descriptor, value: unknown): unknown {\n if (isGtypeDescriptor(descriptor)) {\n return coerceGType(value);\n }\n\n if (!isMarshalledDescriptor(descriptor)) {\n return value;\n }\n\n switch (descriptor.kind) {\n case \"object\":\n case \"struct\":\n case \"boxed\":\n case \"fundamental\": {\n const instance = value as object | null | undefined;\n\n return instance == null ? null : getHandle(instance);\n }\n case \"array\": {\n return collectionToNative(descriptor, value);\n }\n case \"hashtable\": {\n return hashTableToNative(descriptor, value);\n }\n }\n}\n\nexport { fromNative, toNative };\n"]}
|
|
1
|
+
{"version":3,"file":"native-value.js","sourceRoot":"","sources":["../src/native-value.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AnyClass } from \"@gtkx/utils\";\nimport {\n bindFunctionPointer,\n call,\n type CallDescriptor,\n type Descriptor,\n type ExternalObject,\n getType,\n type Handle,\n type Ref,\n} from \"@gtkx/native\";\nimport {\n type ArrayDescriptor,\n type BoxedDescriptor,\n boxedT,\n type CallbackDescriptor,\n type FundamentalDescriptor,\n type HashTableDescriptor,\n isGtypeDescriptor,\n type ObjectDescriptor,\n refT,\n type StructDescriptor,\n} from \"./descriptors.js\";\nimport { checkError } from \"./error.js\";\nimport { LIB } from \"./library.js\";\nimport {\n coerceGType,\n getHandle,\n getWrapperClass,\n resolveWrapperClass,\n wrapCallScopedObject,\n wrapFundamentalHandle,\n wrapHandle,\n wrapObject,\n} from \"./registry.js\";\nimport { resolveDescriptorType } from \"./type.js\";\n\ntype MarshalledKind = \"object\" | \"struct\" | \"boxed\" | \"fundamental\" | \"array\" | \"hashtable\";\ntype MarshalledDescriptor = Extract<Descriptor, { kind: MarshalledKind }>;\ntype DecodedCallbackTarget = { fnPtr: bigint; userData?: bigint | undefined };\n\nconst MARSHALLED_KINDS: Set<Descriptor[\"kind\"]> = new Set<MarshalledKind>([\n \"object\",\n \"struct\",\n \"boxed\",\n \"fundamental\",\n \"array\",\n \"hashtable\",\n]);\n\nconst NULL_POINTER = 0n;\n\nfunction isMarshalledDescriptor(descriptor: Descriptor): descriptor is MarshalledDescriptor {\n return MARSHALLED_KINDS.has(descriptor.kind);\n}\n\nfunction mapCollection(\n descriptor: ArrayDescriptor,\n value: unknown,\n convert: (itemDescriptor: Descriptor, item: unknown) => unknown,\n): unknown[] {\n return (value as unknown[]).map((item) => convert(descriptor.itemDescriptor, item));\n}\n\nfunction collectionFromNative(descriptor: ArrayDescriptor, value: unknown): unknown {\n return value === null ? null : mapCollection(descriptor, value, fromNative);\n}\n\nfunction boxedFromNative(descriptor: Descriptor, value: unknown): unknown {\n if (value == null) {\n return null;\n }\n\n const handle = value as ExternalObject<Handle>;\n const type = resolveDescriptorType(descriptor);\n const registered = resolveWrapperClass(type);\n\n if (registered !== null) {\n return wrapHandle(handle, registered);\n }\n\n const fallback = (descriptor as BoxedDescriptor).fallbackClass?.();\n\n if (fallback !== undefined) {\n return wrapHandle(handle, fallback);\n }\n\n return wrapHandle(handle, getWrapperClass(type));\n}\n\nfunction fundamentalWrapperClass(descriptor: FundamentalDescriptor, handle: ExternalObject<Handle>): AnyClass {\n if (descriptor.wrapperClass !== undefined) {\n return descriptor.wrapperClass;\n }\n\n const declaredType = resolveDescriptorType(descriptor);\n const registered = resolveWrapperClass(getType(handle, declaredType));\n\n if (registered !== null) {\n return registered;\n }\n\n const fallback = descriptor.fallbackClass?.();\n\n if (fallback !== undefined) {\n return fallback;\n }\n\n return getWrapperClass(declaredType);\n}\n\nfunction fundamentalFromNative(descriptor: FundamentalDescriptor, value: unknown): unknown {\n if (value == null) {\n return null;\n }\n\n const handle = value as ExternalObject<Handle>;\n\n return wrapFundamentalHandle(handle, fundamentalWrapperClass(descriptor, handle));\n}\n\nconst errorRefDescriptor = (): Descriptor =>\n refT(boxedT(\"GError\", { ownership: \"full\", sharedLibrary: LIB, getTypeFnName: \"g_error_get_type\" }));\n\nfunction decodedCallbackValues(\n descriptor: CallbackDescriptor,\n target: DecodedCallbackTarget,\n inputs: unknown[],\n): unknown[] {\n const values: unknown[] = [];\n let cursor = 0;\n\n for (const [index, argDescriptor] of descriptor.argDescriptors.entries()) {\n if (index === descriptor.userDataIndex) {\n values.push(target.userData ?? NULL_POINTER);\n } else {\n values.push(toNative(argDescriptor, inputs[cursor]));\n cursor += 1;\n }\n }\n\n return values;\n}\n\nfunction decodedCallbackCallable(\n descriptor: CallbackDescriptor,\n target: DecodedCallbackTarget,\n): (...inputs: unknown[]) => unknown {\n const canThrow = descriptor.canThrow === true;\n const isOneShot = descriptor.scope === \"async\";\n const argDescriptors = canThrow ? [...descriptor.argDescriptors, errorRefDescriptor()] : descriptor.argDescriptors;\n let bound: ExternalObject<CallDescriptor> | undefined;\n let isSpent = false;\n\n return (...inputs) => {\n if (isSpent) {\n throw new Error(\"An async-scoped callback was already invoked; its native caller has released it\");\n }\n\n bound ??= bindFunctionPointer(target.fnPtr, argDescriptors, descriptor.returnDescriptor, \"decoded callback\");\n const values = decodedCallbackValues(descriptor, target, inputs);\n isSpent = isOneShot;\n\n if (!canThrow) {\n return fromNative(descriptor.returnDescriptor, call(bound, values));\n }\n\n const errorRef: Ref = { value: null };\n values.push(errorRef);\n const result = call(bound, values);\n checkError(errorRef);\n\n return fromNative(descriptor.returnDescriptor, result);\n };\n}\n\nfunction callbackFromNative(descriptor: CallbackDescriptor, value: unknown): unknown {\n if (value == null) {\n return value;\n }\n\n const target = value as Partial<DecodedCallbackTarget>;\n\n if (typeof target.fnPtr !== \"bigint\") {\n return value;\n }\n\n return decodedCallbackCallable(descriptor, { fnPtr: target.fnPtr, userData: target.userData });\n}\n\nfunction hashTableFromNative(descriptor: HashTableDescriptor, value: unknown): unknown {\n if (value === null) {\n return null;\n }\n\n const entries = value as [unknown, unknown][];\n\n return new Map(\n entries.map(([key, val]): [unknown, unknown] => [\n fromNative(descriptor.keyDescriptor, key),\n fromNative(descriptor.valueDescriptor, val),\n ]),\n );\n}\n\n/**\n * Converts a raw value returned from native code into its JavaScript form,\n * wrapping object, struct, boxed, and fundamental handles and recursively\n * converting arrays and hash tables according to the descriptor. A callback\n * decoded from a native function pointer and its bound user data becomes a\n * callable function that invokes the native callback; it stays valid only as\n * long as the native caller keeps the pointer pair alive, which for an\n * async-scoped callback means until the first invocation — calling one a\n * second time throws instead of reaching the released native closure.\n *\n * @param descriptor Describes the native type of the value.\n * @param value The raw native value to convert.\n */\nfunction fromNative(descriptor: Descriptor, value: unknown): unknown {\n if (descriptor.kind === \"callback\") {\n return callbackFromNative(descriptor, value);\n }\n\n if (!isMarshalledDescriptor(descriptor)) {\n return value;\n }\n\n switch (descriptor.kind) {\n case \"object\": {\n const fallbackClass = (descriptor as ObjectDescriptor).fallbackClass;\n\n return descriptor.isCallScoped === true\n ? wrapCallScopedObject(value, fallbackClass)\n : wrapObject(value, fallbackClass);\n }\n case \"struct\": {\n return wrapHandle(value as ExternalObject<Handle> | null, (descriptor as StructDescriptor).wrapperClass);\n }\n case \"boxed\": {\n return boxedFromNative(descriptor, value);\n }\n case \"fundamental\": {\n return fundamentalFromNative(descriptor, value);\n }\n case \"array\": {\n return collectionFromNative(descriptor, value);\n }\n case \"hashtable\": {\n return hashTableFromNative(descriptor, value);\n }\n }\n}\n\nfunction collectionToNative(descriptor: ArrayDescriptor, value: unknown): unknown {\n return value == null ? null : mapCollection(descriptor, value, toNative);\n}\n\n/**\n * Normalises the JavaScript form of a hash table argument into its entry list. A `Map` is the\n * expected form and any other iterable of pairs is accepted; anything else is rejected, a plain\n * object above all, which `Array.from` would quietly flatten into an empty table.\n *\n * @param value The JavaScript value passed for a hash table argument.\n */\nfunction toHashTableEntries(value: unknown): [unknown, unknown][] | null {\n if (value == null) {\n return null;\n }\n\n if (typeof (value as Partial<Iterable<unknown>>)[Symbol.iterator] !== \"function\") {\n throw new TypeError(\"A hash table argument must be a Map or an iterable of [key, value] pairs\");\n }\n\n return [...(value as Iterable<[unknown, unknown]>)];\n}\n\nfunction hashTableToNative(descriptor: HashTableDescriptor, value: unknown): unknown {\n const entries = toHashTableEntries(value);\n\n if (entries === null) {\n return null;\n }\n\n return entries.map(([key, val]): [unknown, unknown] => [\n toNative(descriptor.keyDescriptor, key),\n toNative(descriptor.valueDescriptor, val),\n ]);\n}\n\n/**\n * Converts a JavaScript value into the raw form native code expects, unwrapping\n * object, struct, boxed, and fundamental wrappers back to their handles,\n * resolving a class passed for a GType to the GType it was registered under, and\n * recursively converting arrays and maps according to the descriptor.\n *\n * @param descriptor Describes the native type to convert to.\n * @param value The JavaScript value to convert.\n */\nfunction toNative(descriptor: Descriptor, value: unknown): unknown {\n if (isGtypeDescriptor(descriptor)) {\n return coerceGType(value);\n }\n\n if (!isMarshalledDescriptor(descriptor)) {\n return value;\n }\n\n switch (descriptor.kind) {\n case \"object\":\n case \"struct\":\n case \"boxed\":\n case \"fundamental\": {\n const instance = value as object | null | undefined;\n\n return instance == null ? null : getHandle(instance);\n }\n case \"array\": {\n return collectionToNative(descriptor, value);\n }\n case \"hashtable\": {\n return hashTableToNative(descriptor, value);\n }\n }\n}\n\nexport { fromNative, toHashTableEntries, toNative };\n"]}
|
package/dist/properties.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ExternalObject, Handle, RegisterClassProperty } from "@gtkx/native";
|
|
2
|
-
import type
|
|
2
|
+
import { type AnyClass } from "@gtkx/utils";
|
|
3
3
|
import { type ValueGuard } from "./param-spec.js";
|
|
4
4
|
import { type InterfaceProperty } from "./registry.js";
|
|
5
5
|
import { type ValueNarrower, type ValueWriter } from "./value.js";
|
package/dist/properties.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":"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"}
|
package/dist/properties.js
CHANGED
|
@@ -198,17 +198,8 @@ function lookupCoercionCheck(gtype, name) {
|
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
200
|
function coercionCheckFor(gtype, name) {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
checks = new Map();
|
|
204
|
-
coercionChecks.set(gtype, checks);
|
|
205
|
-
}
|
|
206
|
-
let check = checks.get(name);
|
|
207
|
-
if (check === undefined) {
|
|
208
|
-
check = lookupCoercionCheck(gtype, name);
|
|
209
|
-
checks.set(name, check);
|
|
210
|
-
}
|
|
211
|
-
return check;
|
|
201
|
+
const checks = coercionChecks.getOrInsertComputed(gtype, () => new Map());
|
|
202
|
+
return checks.getOrInsertComputed(name, () => lookupCoercionCheck(gtype, name));
|
|
212
203
|
}
|
|
213
204
|
function truncateToWhole(check, value) {
|
|
214
205
|
const range = WHOLE_NUMBER_RANGES.get(typeFundamental(check.valueType));
|