@gtkx/runtime 2.0.0-beta.2 → 2.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/descriptors.d.ts +2 -1
- package/dist/descriptors.d.ts.map +1 -1
- package/dist/descriptors.js +5 -1
- package/dist/descriptors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +4 -3
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +3 -2
- package/dist/internal.js.map +1 -1
- package/dist/object.d.ts +5 -5
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +6 -6
- package/dist/object.js.map +1 -1
- package/dist/value.d.ts +2 -1
- package/dist/value.d.ts.map +1 -1
- package/dist/value.js +28 -7
- package/dist/value.js.map +1 -1
- package/package.json +4 -4
- package/src/descriptors.ts +7 -0
- package/src/index.ts +2 -2
- package/src/internal.ts +4 -3
- package/src/object.ts +11 -11
- package/src/value.ts +40 -5
package/dist/value.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../src/value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,UAAU,EAAE,KAAK,cAAc,EAAW,KAAK,MAAM,EAAe,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../src/value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,UAAU,EAAE,KAAK,cAAc,EAAW,KAAK,MAAM,EAAe,MAAM,cAAc,CAAC;AA4B9G,OAAO,EAQH,KAAK,UAAU,EAClB,MAAM,iBAAiB,CAAC;AAUzB,OAAO,EA8BH,KAAK,UAAU,EAIlB,MAAM,WAAW,CAAC;AAEnB,KAAK,SAAS,GAAG;IACb,GAAG,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IACnE,GAAG,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC;CACnD,CAAC;AAGF,KAAK,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AACpC,KAAK,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;AACnD;;;;;;;GAOG;AACH,KAAK,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC;AA2OjF,iBAAS,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,CAE3D;AAED,iBAAS,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAMlF;AAED,QAAA,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,cAAc,CAAC,MAAM,CAK5D,CAAC;AAcF;;;;GAIG;AACH,iBAAS,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAkBnE;AAED;;;;;;;;GAQG;AACH,iBAAS,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAgBnF;AA+KD,iBAAS,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAErD;AAED,iBAAS,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAQjD;AAED,iBAAS,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAExE;AAoDD;;;;;;GAMG;AACH,iBAAS,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAiB/D;AAED,sGAAsG;AACtG,QAAA,MAAM,gBAAgB,GAAI,SAAS,OAAO,KAAG,cAAc,CAAC,MAAM,CAAC,GAAG,SACd,CAAC;AAgCzD,iBAAS,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAO/E;AAED;;;;;;GAMG;AACH,iBAAS,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,OAAO,CASzD;AAED,QAAA,MAAM,uBAAuB,GAAI,OAAO,cAAc,CAAC,MAAM,CAAC,KAAG,OAC8B,CAAC;AA6BhG,QAAA,MAAM,sBAAsB,GAAI,YAAY,UAAU,EAAE,OAAO,cAAc,CAAC,MAAM,CAAC,KAAG,OAcvF,CAAC;AAOF,QAAA,MAAM,qBAAqB,GAAI,WAAW,MAAM,KAAG,UAAU,GAAG,SAM/D,CAAC;AAEF,iBAAS,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAE7E;AAED,iBAAS,qBAAqB,CAC1B,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,OAAO,GAClB;IAAE,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,OAAO,CAAA;CAAE,CAYxD;AAED,iBAAS,0BAA0B,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAEjG;AAED,iBAAS,4BAA4B,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAEnG;AAED,2GAA2G;AAC3G,cAAM,iBAAkB,SAAQ,SAAS;IACrC,6EAA6E;IAC7D,IAAI,SAAuB;CAC9C;AAED,OAAO,EACH,YAAY,EACZ,SAAS,EACT,SAAS,EACT,aAAa,EACb,aAAa,EACb,KAAK,OAAO,EACZ,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,0BAA0B,EAC1B,4BAA4B,EAC5B,KAAK,aAAa,EAClB,gBAAgB,EAChB,KAAK,WAAW,EAChB,cAAc,GACjB,CAAC"}
|
package/dist/value.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { alloc, getType, read, write } from "@gtkx/native";
|
|
2
2
|
import { bind, createBindCache } from "./bind.js";
|
|
3
|
-
import { arrayT, bigint64T, biguint64T, booleanT, boxedT, byteArrayT, float32T, float64T, fundamentalLifecycleFor, fundamentalT, int8T, int32T, objectT, stringT, uint8T, uint32T, uint64T, voidT, } from "./descriptors.js";
|
|
3
|
+
import { arrayT, bigint64T, biguint64T, booleanT, boxedT, byteArrayT, float32T, float64T, fundamentalLifecycleFor, fundamentalT, int8T, int32T, objectT, preserveArrayNull, stringT, uint8T, uint32T, uint64T, voidT, } from "./descriptors.js";
|
|
4
4
|
import { LIB, PARAM_T, VALUE_SIZE, VALUE_T, VARIANT_T } from "./library.js";
|
|
5
5
|
import { toNative } from "./native-value.js";
|
|
6
6
|
import { INT32_MAXIMUM, INT32_MINIMUM, INT64_MAXIMUM, INT64_MINIMUM, isStringArray, resolveGtype, UINT64_MAXIMUM, } from "./param-spec.js";
|
|
@@ -39,10 +39,18 @@ const objectValueFundamentals = new Set([TYPE_OBJECT, TYPE_INTERFACE]);
|
|
|
39
39
|
const paramValueType = bindValueType("param", PARAM_T);
|
|
40
40
|
const variantValueType = bindValueType("variant", VARIANT_T);
|
|
41
41
|
const pointerValueType = bindValueType("pointer", uint64T);
|
|
42
|
-
const
|
|
42
|
+
const strvDescriptor = arrayT(stringT("borrowed"));
|
|
43
|
+
const nullableStrvDescriptor = preserveArrayNull(arrayT(stringT("borrowed")));
|
|
44
|
+
const setStrvBoxed = bind(LIB, "g_value_set_boxed", [VALUE_T, strvDescriptor], voidT);
|
|
45
|
+
const getStrvBoxed = bind(LIB, "g_value_get_boxed", [VALUE_T], strvDescriptor);
|
|
46
|
+
const getNullableStrvBoxed = bind(LIB, "g_value_get_boxed", [VALUE_T], nullableStrvDescriptor);
|
|
43
47
|
const strvValueType = {
|
|
44
48
|
set: setStrvValue,
|
|
45
|
-
get:
|
|
49
|
+
get: getStrvBoxed,
|
|
50
|
+
};
|
|
51
|
+
const nullableStrvValueType = {
|
|
52
|
+
set: setStrvValue,
|
|
53
|
+
get: getNullableStrvBoxed,
|
|
46
54
|
};
|
|
47
55
|
const setByteArrayBoxed = bind(LIB, "g_value_set_boxed", [VALUE_T, byteArrayT()], voidT);
|
|
48
56
|
const getBoxedPointer = bind(LIB, "g_value_get_boxed", [VALUE_T], uint64T);
|
|
@@ -252,7 +260,7 @@ function setWrappedBoxedValue(value, type, boxed) {
|
|
|
252
260
|
}
|
|
253
261
|
const arrayValueType = (descriptor) => {
|
|
254
262
|
if (descriptor.itemDescriptor.kind === "string" && descriptor.arrayKind === "array") {
|
|
255
|
-
return strvValueType;
|
|
263
|
+
return descriptor.preserveNull === true ? nullableStrvValueType : strvValueType;
|
|
256
264
|
}
|
|
257
265
|
if (descriptor.arrayKind === "gbytearray") {
|
|
258
266
|
return byteArrayValueType(descriptor);
|
|
@@ -484,15 +492,28 @@ function fromValue(value) {
|
|
|
484
492
|
}
|
|
485
493
|
return get(value);
|
|
486
494
|
}
|
|
495
|
+
const fromObjectPropertyValue = (value) => getValueType(value) === getStrvType() ? nullableStrvValueType.get(value) : fromValue(value);
|
|
487
496
|
const objectValueWithFallback = (descriptor, value) => {
|
|
488
497
|
if (descriptor.fallbackClass === undefined || !objectValueFundamentals.has(typeFundamental(getValueType(value)))) {
|
|
489
498
|
return null;
|
|
490
499
|
}
|
|
491
500
|
return { wrapped: wrapObject(objectValueType.get(value), descriptor.fallbackClass) };
|
|
492
501
|
};
|
|
502
|
+
const arrayValueGetterForDescriptor = (descriptor) => {
|
|
503
|
+
if (descriptor.arrayKind === "gbytearray") {
|
|
504
|
+
return byteArrayValueGetterFor(descriptor.isBytes === true);
|
|
505
|
+
}
|
|
506
|
+
return descriptor.itemDescriptor.kind === "string" && descriptor.arrayKind === "array"
|
|
507
|
+
? arrayValueType(descriptor).get
|
|
508
|
+
: undefined;
|
|
509
|
+
};
|
|
510
|
+
const fromArrayValueForDescriptor = (descriptor, value) => {
|
|
511
|
+
const get = arrayValueGetterForDescriptor(descriptor);
|
|
512
|
+
return get === undefined ? fromValue(value) : get(value);
|
|
513
|
+
};
|
|
493
514
|
const fromValueForDescriptor = (descriptor, value) => {
|
|
494
|
-
if (descriptor.kind === "array"
|
|
495
|
-
return
|
|
515
|
+
if (descriptor.kind === "array") {
|
|
516
|
+
return fromArrayValueForDescriptor(descriptor, value);
|
|
496
517
|
}
|
|
497
518
|
if (descriptor.kind === "object") {
|
|
498
519
|
const withFallback = objectValueWithFallback(descriptor, value);
|
|
@@ -534,5 +555,5 @@ class ValueMarshalError extends TypeError {
|
|
|
534
555
|
/** Name callers match on when the error is caught as a plain `TypeError`. */
|
|
535
556
|
name = "ValueMarshalError";
|
|
536
557
|
}
|
|
537
|
-
export { getValueType, intoValue, copyValue, getBoxedValue, setBoxedValue, toValue, toValueHandle, tryToValueHandle, ValueMarshalError, fromValue, fromValueForDescriptor, valueGuardOverrideFor, newValueForDescriptor, newValueForType, outValueForDescriptor, outValueForBoxedDescriptor, inoutValueForBoxedDescriptor, valueNarrowerFor, valueWriterFor, };
|
|
558
|
+
export { getValueType, intoValue, copyValue, getBoxedValue, setBoxedValue, toValue, toValueHandle, tryToValueHandle, ValueMarshalError, fromValue, fromObjectPropertyValue, fromValueForDescriptor, valueGuardOverrideFor, newValueForDescriptor, newValueForType, outValueForDescriptor, outValueForBoxedDescriptor, inoutValueForBoxedDescriptor, valueNarrowerFor, valueWriterFor, };
|
|
538
559
|
//# sourceMappingURL=value.js.map
|
package/dist/value.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value.js","sourceRoot":"","sources":["../src/value.ts"],"names":[],"mappings":"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","sourcesContent":["import { alloc, type Descriptor, type ExternalObject, getType, type Handle, read, write } from \"@gtkx/native\";\nimport { bind, createBindCache } from \"./bind.js\";\nimport {\n type ArrayDescriptor,\n arrayT,\n bigint64T,\n biguint64T,\n booleanT,\n boxedT,\n byteArrayT,\n float32T,\n float64T,\n type FundamentalDescriptor,\n fundamentalLifecycleFor,\n fundamentalT,\n int8T,\n int32T,\n type ObjectDescriptor,\n objectT,\n stringT,\n uint8T,\n uint32T,\n uint64T,\n voidT,\n} from \"./descriptors.js\";\nimport { LIB, PARAM_T, VALUE_SIZE, VALUE_T, VARIANT_T } from \"./library.js\";\nimport { toNative } from \"./native-value.js\";\nimport {\n INT32_MAXIMUM,\n INT32_MINIMUM,\n INT64_MAXIMUM,\n INT64_MINIMUM,\n isStringArray,\n resolveGtype,\n UINT64_MAXIMUM,\n type ValueGuard,\n} from \"./param-spec.js\";\nimport {\n coerceGType,\n describeValueKind,\n getHandle,\n getWrapperClass,\n wrapFundamentalHandle,\n wrapHandle,\n wrapObject,\n} from \"./registry.js\";\nimport {\n getByteArrayType,\n getStrvType,\n isResolvableDescriptor,\n resolveBoxedType,\n resolveDescriptorType,\n resolveFundamentalType,\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_OBJECT,\n TYPE_PARAM,\n TYPE_POINTER,\n TYPE_STRING,\n TYPE_UCHAR,\n TYPE_UINT,\n TYPE_UINT64,\n TYPE_ULONG,\n TYPE_VARIANT,\n type TypedClass,\n typeFundamental,\n typeIsA,\n typeName,\n} from \"./type.js\";\n\ntype ValueType = {\n set: (value: ExternalObject<Handle>, nativeValue: unknown) => void;\n get: (value: ExternalObject<Handle>) => unknown;\n};\n\ntype ValueGetter = (value: ExternalObject<Handle>) => unknown;\ntype ValueWriter = ValueType[\"set\"];\ntype ValueNarrower = (jsValue: unknown) => unknown;\n/**\n * JavaScript value a `GObject.Value` can be built from without being told which GType to hold, for the\n * parameters that take one. A string holds `gchararray`, a boolean `gboolean`, an integer within `gint`\n * range `gint` and any other number `gdouble`, a `bigint` `gint64` or `guint64` past its range, an array\n * of strings `GStrv`, a wrapper instance the GType it carries, and `null` a NULL `gpointer`, which is\n * what GJS infers for it and which few callees accept. Reaching a GType inference cannot name, such as\n * `guchar` or an enumeration, takes an explicitly initialized `GObject.Value` instead.\n */\ntype JsValue = string | number | bigint | boolean | string[] | TypedClass | null;\n\nconst setBoxedCache = createBindCache();\nconst setStaticBoxedCache = createBindCache();\nconst dupBoxedCache = createBindCache();\nconst setInstanceCache = createBindCache();\nconst peekPointerCache = createBindCache();\nconst gValueInit = bind(LIB, \"g_value_init\", [VALUE_T, biguint64T], voidT);\nconst gValueCopy = bind(LIB, \"g_value_copy\", [VALUE_T, VALUE_T], voidT);\nconst booleanValueType = bindValueType(\"boolean\", booleanT);\nconst boundTypeValueType = bindValueType(\"gtype\", biguint64T);\n\nconst typeValueType: ValueType = {\n set: (value, jsValue) => {\n boundTypeValueType.set(value, coerceGType(jsValue));\n },\n get: boundTypeValueType.get,\n};\n\nconst scharValueType = bindValueType(\"schar\", int8T);\nconst ucharValueType = bindValueType(\"uchar\", uint8T);\nconst intValueType = bindValueType(\"int\", int32T);\nconst uintValueType = bindValueType(\"uint\", uint32T);\nconst longValueType = bindValueType(\"long\", bigint64T);\nconst ulongValueType = bindValueType(\"ulong\", biguint64T);\nconst int64ValueType = bindValueType(\"int64\", bigint64T);\nconst uint64ValueType = bindValueType(\"uint64\", biguint64T);\nconst floatValueType = bindValueType(\"float\", float32T);\nconst doubleValueType = bindValueType(\"double\", float64T);\nconst stringValueType = bindValueType(\"string\", stringT(\"borrowed\"));\nconst enumValueType = bindValueType(\"enum\", int32T);\nconst flagsValueType = bindValueType(\"flags\", uint32T);\nconst objectValueType = bindValueType(\"object\", objectT(\"borrowed\"));\nconst objectValueFundamentals: Set<bigint> = new Set([TYPE_OBJECT, TYPE_INTERFACE]);\nconst paramValueType = bindValueType(\"param\", PARAM_T);\nconst variantValueType = bindValueType(\"variant\", VARIANT_T);\nconst pointerValueType = bindValueType(\"pointer\", uint64T);\nconst setStrvBoxed = bind(LIB, \"g_value_set_boxed\", [VALUE_T, arrayT(stringT(\"borrowed\"))], voidT);\n\nconst strvValueType: ValueType = {\n set: setStrvValue,\n get: bind(LIB, \"g_value_get_boxed\", [VALUE_T], arrayT(stringT(\"borrowed\"))),\n};\n\nconst setByteArrayBoxed = bind(LIB, \"g_value_set_boxed\", [VALUE_T, byteArrayT()], voidT);\nconst getBoxedPointer = bind(LIB, \"g_value_get_boxed\", [VALUE_T], uint64T);\nconst getBytesBoxed = bind(LIB, \"g_value_get_boxed\", [VALUE_T], byteArrayT());\nconst getByteItemsBoxed = bind(LIB, \"g_value_get_boxed\", [VALUE_T], arrayT(uint8T, \"gbytearray\"));\n\nconst PLAIN_VALUE_TYPES: Partial<Record<Descriptor[\"kind\"], ValueType>> = {\n boolean: booleanValueType,\n string: stringValueType,\n int8: intValueType,\n int16: intValueType,\n int32: intValueType,\n uint8: uintValueType,\n uint16: uintValueType,\n uint32: uintValueType,\n int64: int64ValueType,\n bigint64: int64ValueType,\n uint64: uint64ValueType,\n biguint64: uint64ValueType,\n float32: floatValueType,\n float64: doubleValueType,\n object: objectValueType,\n};\n\nconst WHOLE_NUMBER_KINDS: Set<Descriptor[\"kind\"]> = new Set([\n \"int8\",\n \"int16\",\n \"int32\",\n \"uint8\",\n \"uint16\",\n \"uint32\",\n \"int64\",\n \"uint64\",\n \"enum\",\n \"flags\",\n]);\n\nconst PLAIN_VALUE_GETTERS: Map<bigint, ValueGetter> = new Map([\n [TYPE_BOOLEAN, booleanValueType.get],\n [TYPE_CHAR, scharValueType.get],\n [TYPE_UCHAR, ucharValueType.get],\n [TYPE_INT, intValueType.get],\n [TYPE_UINT, uintValueType.get],\n [TYPE_LONG, longValueType.get],\n [TYPE_ULONG, ulongValueType.get],\n [TYPE_INT64, int64ValueType.get],\n [TYPE_UINT64, uint64ValueType.get],\n [TYPE_FLOAT, floatValueType.get],\n [TYPE_DOUBLE, doubleValueType.get],\n [TYPE_ENUM, enumValueType.get],\n [TYPE_FLAGS, flagsValueType.get],\n]);\n\nconst PLAIN_VALUE_SETTERS: Map<bigint, ValueType[\"set\"]> = new Map([\n [TYPE_BOOLEAN, booleanValueType.set],\n [TYPE_CHAR, scharValueType.set],\n [TYPE_UCHAR, ucharValueType.set],\n [TYPE_INT, intValueType.set],\n [TYPE_UINT, uintValueType.set],\n [TYPE_LONG, longValueType.set],\n [TYPE_ULONG, ulongValueType.set],\n [TYPE_INT64, int64ValueType.set],\n [TYPE_UINT64, uint64ValueType.set],\n [TYPE_FLOAT, floatValueType.set],\n [TYPE_DOUBLE, doubleValueType.set],\n [TYPE_ENUM, enumValueType.set],\n [TYPE_FLAGS, flagsValueType.set],\n]);\n\nconst WRAPPED_VALUE_SETTERS: Map<bigint, ValueType[\"set\"]> = new Map([\n [TYPE_STRING, setStringValue],\n [TYPE_OBJECT, handleSetter(objectValueType)],\n [TYPE_INTERFACE, handleSetter(objectValueType)],\n [TYPE_PARAM, handleSetter(paramValueType)],\n [TYPE_VARIANT, handleSetter(variantValueType)],\n [TYPE_BOXED, setBoxedFromValue],\n [TYPE_POINTER, setPointerValue],\n]);\n\nconst getBoxedTypeName = (type: bigint): string => typeName(type) ?? \"GBoxed\";\nconst newValue = (): ExternalObject<Handle> => alloc(VALUE_SIZE, resolveBoxedType(VALUE_T));\n\nfunction bindValueType(symbol: string, descriptor: Descriptor): ValueType {\n return {\n set: bind(LIB, `g_value_set_${symbol}`, [VALUE_T, descriptor], voidT),\n get: bind(LIB, `g_value_get_${symbol}`, [VALUE_T], descriptor),\n };\n}\n\nconst setBoxedBind = (name: string) =>\n setBoxedCache(name, LIB, \"g_value_set_boxed\", [VALUE_T, boxedT(name, { sharedLibrary: LIB })], voidT);\n\nconst setStaticBoxedBind = (name: string) =>\n setStaticBoxedCache(name, LIB, \"g_value_set_static_boxed\", [VALUE_T, boxedT(name, { sharedLibrary: LIB })], voidT);\n\nconst dupBoxedBind = (name: string) =>\n dupBoxedCache(name, LIB, \"g_value_dup_boxed\", [VALUE_T], boxedT(name, { ownership: \"full\", sharedLibrary: LIB }));\n\nconst boxedValueType = (type: bigint): ValueType => {\n const name = getBoxedTypeName(type);\n\n return { set: setBoxedBind(name), get: dupBoxedBind(name) };\n};\n\nconst byteArrayValueGetterFor = (isBytes: boolean): ValueGetter => {\n const get = isBytes ? getBytesBoxed : getByteItemsBoxed;\n\n return (value) => (getBoxedPointer(value) ? get(value) : null);\n};\n\nconst byteArrayValueType = (descriptor: ArrayDescriptor): ValueType => ({\n set: setByteArrayValue,\n get: byteArrayValueGetterFor(descriptor.isBytes === true),\n});\n\nconst isByteArraySource = (jsValue: unknown): jsValue is Uint8Array | number[] =>\n jsValue instanceof Uint8Array || Array.isArray(jsValue);\n\nconst enumOrFlagsValueType = (type: bigint): ValueType =>\n typeFundamental(type) === TYPE_FLAGS ? flagsValueType : enumValueType;\n\nfunction unsupportedFundamental(type: bigint): never {\n throw new Error(`Unsupported fundamental type '${typeName(type) ?? String(type)}' for value`);\n}\n\nconst setInstanceBind = (fundamental: bigint, descriptor: FundamentalDescriptor) =>\n setInstanceCache(String(fundamental), LIB, \"g_value_set_instance\", [VALUE_T, descriptor], voidT);\n\nconst peekPointerBind = (fundamental: bigint, descriptor: FundamentalDescriptor) =>\n peekPointerCache(String(fundamental), LIB, \"g_value_peek_pointer\", [VALUE_T], descriptor);\n\nconst customFundamentalDescriptor = (fundamental: bigint): FundamentalDescriptor | undefined => {\n const name = typeName(fundamental);\n\n if (name === null) {\n return undefined;\n }\n\n const lifecycle = fundamentalLifecycleFor(name);\n\n if (lifecycle === undefined) {\n return undefined;\n }\n\n return fundamentalT(lifecycle.sharedLibrary, lifecycle.refFnName, lifecycle.unrefFnName, {\n ownership: \"borrowed\",\n typeName: name,\n });\n};\n\nconst customFundamentalValueType = (type: bigint): ValueType | undefined => {\n const fundamental = typeFundamental(type);\n const descriptor = customFundamentalDescriptor(fundamental);\n\n if (descriptor === undefined) {\n return undefined;\n }\n\n return { set: setInstanceBind(fundamental, descriptor), get: peekPointerBind(fundamental, descriptor) };\n};\n\nconst fundamentalValueType = (type: bigint): ValueType => {\n switch (typeFundamental(type)) {\n case TYPE_PARAM: {\n return paramValueType;\n }\n case TYPE_VARIANT: {\n return variantValueType;\n }\n case TYPE_BOXED: {\n return boxedValueType(type);\n }\n default: {\n return customFundamentalValueType(type) ?? unsupportedFundamental(type);\n }\n }\n};\n\nfunction getValueType(value: ExternalObject<Handle>): bigint {\n return read(value, biguint64T, 0) as bigint;\n}\n\nfunction copyValue(dest: ExternalObject<Handle>, src: ExternalObject<Handle>): void {\n if (getValueType(dest) === TYPE_INVALID) {\n gValueInit(dest, getValueType(src));\n }\n\n gValueCopy(src, dest);\n}\n\nconst newValueForType = (type: bigint): ExternalObject<Handle> => {\n const value = newValue();\n gValueInit(value, type);\n\n return value;\n};\n\nconst newBoxedValue = (\n descriptor: Descriptor,\n boxed: object,\n resolveSetBind: (name: string) => ValueType[\"set\"],\n): ExternalObject<Handle> => {\n const type = resolveDescriptorType(descriptor);\n const value = newValueForType(type);\n resolveSetBind(getBoxedTypeName(type))(value, getHandle(boxed));\n\n return value;\n};\n\n/**\n * Duplicates the boxed value held by a GValue and returns the copy wrapped in the\n * class its GType resolves to, or null when the GValue holds no boxed type.\n * A `GByteArray` payload is copied into a `Uint8Array` instead of being wrapped.\n */\nfunction getBoxedValue(value: ExternalObject<Handle>): object | null {\n const type = getValueType(value);\n\n if (typeFundamental(type) !== TYPE_BOXED) {\n return null;\n }\n\n if (type === getByteArrayType()) {\n return byteArrayValueGetterFor(true)(value) as Uint8Array | null;\n }\n\n const boxed = dupBoxedBind(getBoxedTypeName(type))(value) as ExternalObject<Handle> | null;\n\n if (boxed === null) {\n return null;\n }\n\n return wrapHandle(boxed, getWrapperClass(type));\n}\n\n/**\n * Stores a boxed object, or null, into a GValue that holds a boxed type. A GValue holding\n * `G_TYPE_VALUE` also takes any other {@link JsValue}, which is boxed into a nested `GObject.Value`\n * of the GType inferred from it, and one holding a `GByteArray` also takes the bytes as a\n * `Uint8Array` or an array of byte values.\n * @param value Handle of an initialized value to write into.\n * @param boxed The boxed instance, bytes, or {@link JsValue} to store.\n * @throws {ValueMarshalError} When the value cannot hold what was passed.\n */\nfunction setBoxedValue(value: ExternalObject<Handle>, boxed: JsValue | object): void {\n const type = getValueType(value);\n\n if (type === resolveBoxedType(VALUE_T)) {\n setBoxedBind(\"GValue\")(value, boxed === null ? null : toValueHandle(boxed));\n\n return;\n }\n\n if (type === getByteArrayType() && isByteArraySource(boxed)) {\n setByteArrayBoxed(value, boxed);\n\n return;\n }\n\n setWrappedBoxedValue(value, type, boxed);\n}\n\nfunction setWrappedBoxedValue(value: ExternalObject<Handle>, type: bigint, boxed: JsValue | object): void {\n if (boxed !== null && typeof boxed !== \"object\") {\n throw new ValueMarshalError(\n `Cannot marshal ${describeValueKind(boxed)} into a '${getBoxedTypeName(type)}' value`,\n );\n }\n\n setBoxedBind(getBoxedTypeName(type))(value, boxed === null ? null : getHandle(boxed));\n}\n\nconst arrayValueType = (descriptor: ArrayDescriptor): ValueType => {\n if (descriptor.itemDescriptor.kind === \"string\" && descriptor.arrayKind === \"array\") {\n return strvValueType;\n }\n\n if (descriptor.arrayKind === \"gbytearray\") {\n return byteArrayValueType(descriptor);\n }\n\n throw new Error(`Unsupported array type ${descriptor.arrayKind} of ${descriptor.itemDescriptor.kind}`);\n};\n\nconst resolveEnumOrFlagsValueType = (descriptor: Extract<Descriptor, { kind: \"enum\" | \"flags\" }>): ValueType => {\n if (descriptor.getTypeFnName === \"\") {\n return descriptor.kind === \"flags\" ? flagsValueType : enumValueType;\n }\n\n return enumOrFlagsValueType(resolveType(descriptor.sharedLibrary, descriptor.getTypeFnName));\n};\n\nconst resolveValueType = (descriptor: Descriptor): ValueType => {\n if (descriptor.kind === \"biguint64\" && \"type\" in descriptor) {\n return typeValueType;\n }\n\n const plain = PLAIN_VALUE_TYPES[descriptor.kind];\n\n if (plain !== undefined) {\n return plain;\n }\n\n if (!isResolvableDescriptor(descriptor)) {\n throw new Error(`Unsupported type descriptor '${descriptor.kind}'`);\n }\n\n switch (descriptor.kind) {\n case \"enum\":\n case \"flags\": {\n return resolveEnumOrFlagsValueType(descriptor);\n }\n case \"boxed\": {\n return boxedValueType(resolveBoxedType(descriptor));\n }\n case \"fundamental\": {\n return fundamentalValueType(resolveFundamentalType(descriptor));\n }\n case \"array\": {\n return arrayValueType(descriptor);\n }\n }\n};\n\nconst wrappedValueGetter = (fundamental: bigint): ValueGetter | undefined => {\n switch (fundamental) {\n case TYPE_STRING: {\n return (value) => stringValueType.get(value) ?? null;\n }\n case TYPE_INTERFACE:\n case TYPE_OBJECT: {\n return (value) => wrapObject(objectValueType.get(value));\n }\n case TYPE_PARAM: {\n return (value) =>\n wrapFundamentalHandle(\n paramValueType.get(value) as ExternalObject<Handle> | null,\n getWrapperClass(TYPE_PARAM),\n );\n }\n case TYPE_VARIANT: {\n return (value) =>\n wrapFundamentalHandle(\n variantValueType.get(value) as ExternalObject<Handle> | null,\n getWrapperClass(TYPE_VARIANT),\n );\n }\n case TYPE_BOXED: {\n return getBoxedValue;\n }\n case TYPE_POINTER: {\n return (value) => {\n if (pointerValueType.get(value)) {\n throw new Error(\"G_TYPE_POINTER non-null values cannot be marshalled to JS\");\n }\n\n return null;\n };\n }\n default: {\n return undefined;\n }\n }\n};\n\nfunction setStringValue(value: ExternalObject<Handle>, nativeValue: unknown): void {\n stringValueType.set(value, nativeValue ?? null);\n}\n\nfunction setStrvValue(value: ExternalObject<Handle>, nativeValue: unknown): void {\n setStrvBoxed(value, nativeValue ?? null);\n}\n\nfunction setByteArrayValue(value: ExternalObject<Handle>, nativeValue: unknown): void {\n setByteArrayBoxed(value, nativeValue ?? null);\n}\n\nfunction setPointerValue(value: ExternalObject<Handle>, nativeValue: unknown): void {\n if (nativeValue != null) {\n throw new Error(\"G_TYPE_POINTER non-null values cannot be marshalled from JS\");\n }\n\n pointerValueType.set(value, 0);\n}\n\nfunction handleSetter(target: ValueType): ValueType[\"set\"] {\n return (value, nativeValue) => {\n target.set(value, nativeValue == null ? null : getHandle(nativeValue));\n };\n}\n\nfunction setBoxedFromValue(value: ExternalObject<Handle>, nativeValue: unknown): void {\n setBoxedValue(value, nativeValue ?? null);\n}\n\nconst customFundamentalGetter = (type: bigint): ValueGetter | undefined => {\n const valueType = customFundamentalValueType(type);\n\n if (valueType === undefined) {\n return undefined;\n }\n\n return (value) =>\n wrapFundamentalHandle(valueType.get(value) as ExternalObject<Handle> | null, getWrapperClass(type));\n};\n\nconst customFundamentalSetter = (type: bigint): ValueType[\"set\"] | undefined => {\n const valueType = customFundamentalValueType(type);\n\n return valueType === undefined ? undefined : handleSetter(valueType);\n};\n\nconst builtInValueGetter = (fundamental: bigint): ValueGetter | undefined =>\n PLAIN_VALUE_GETTERS.get(fundamental) ?? wrappedValueGetter(fundamental);\n\nconst builtInValueSetter = (fundamental: bigint): ValueType[\"set\"] | undefined =>\n PLAIN_VALUE_SETTERS.get(fundamental) ?? WRAPPED_VALUE_SETTERS.get(fundamental);\n\nconst exactValueType = (type: bigint): ValueType | undefined => {\n if (type === TYPE_GTYPE) {\n return typeValueType;\n }\n\n return type === getStrvType() ? strvValueType : undefined;\n};\n\nconst resolveValueGetter = (type: bigint): ValueGetter | undefined =>\n exactValueType(type)?.get ?? builtInValueGetter(typeFundamental(type)) ?? customFundamentalGetter(type);\n\nconst resolveValueSetter = (type: bigint): ValueType[\"set\"] | undefined =>\n exactValueType(type)?.set ?? builtInValueSetter(typeFundamental(type)) ?? customFundamentalSetter(type);\n\nconst holdsUnchanged: ValueNarrower = (jsValue) => jsValue;\nconst holdsAsFloat: ValueNarrower = (jsValue) => Math.fround(jsValue as number);\n\nfunction valueNarrowerFor(type: bigint): ValueNarrower {\n return typeFundamental(type) === TYPE_FLOAT ? holdsAsFloat : holdsUnchanged;\n}\n\nfunction valueWriterFor(type: bigint): ValueWriter {\n const set = resolveValueSetter(type);\n\n if (set === undefined) {\n throw new Error(`Unsupported type for intoValue: ${typeName(type) ?? String(type)}`);\n }\n\n return set;\n}\n\nfunction intoValue(value: ExternalObject<Handle>, jsValue: unknown): void {\n valueWriterFor(getValueType(value))(value, jsValue);\n}\n\nconst numberValueGType = (jsValue: number): bigint =>\n Number.isSafeInteger(jsValue) && jsValue >= INT32_MINIMUM && jsValue <= INT32_MAXIMUM ? TYPE_INT : TYPE_DOUBLE;\n\nconst arrayValueGType = (jsValue: unknown[]): bigint => (isStringArray(jsValue) ? getStrvType() : TYPE_INVALID);\nconst wideValueGType = (jsValue: bigint): bigint => (jsValue > INT64_MAXIMUM ? TYPE_UINT64 : TYPE_INT64);\n\nconst bigintValueGType = (jsValue: bigint): bigint =>\n jsValue < INT64_MINIMUM || jsValue > UINT64_MAXIMUM ? TYPE_INVALID : wideValueGType(jsValue);\n\nconst objectValueGType = (jsValue: object | null, wrapperType: bigint): bigint => {\n if (jsValue === null) {\n return TYPE_POINTER;\n }\n\n return Array.isArray(jsValue) ? arrayValueGType(jsValue) : wrapperType;\n};\n\nfunction inferValueGType(jsValue: unknown, wrapperType: bigint): bigint {\n switch (typeof jsValue) {\n case \"string\": {\n return TYPE_STRING;\n }\n case \"boolean\": {\n return TYPE_BOOLEAN;\n }\n case \"number\": {\n return numberValueGType(jsValue);\n }\n case \"bigint\": {\n return bigintValueGType(jsValue);\n }\n case \"object\": {\n return objectValueGType(jsValue, wrapperType);\n }\n case \"function\":\n case \"symbol\":\n case \"undefined\": {\n return TYPE_INVALID;\n }\n }\n}\n\nconst marshalFailure = (jsValue: unknown): string =>\n typeof jsValue === \"bigint\"\n ? `Cannot marshal ${String(jsValue)} into a GObject.Value: outside the range of gint64 and guint64`\n : `Cannot marshal ${describeValueKind(jsValue)} into a GObject.Value`;\n\nconst wrapperGType = (jsValue: unknown): bigint =>\n typeof jsValue === \"object\" && jsValue !== null ? resolveGtype(jsValue) : TYPE_INVALID;\n\n/**\n * Marshals a value passed where a `GObject.Value` is expected into a value handle: an already-built\n * value yields its own handle, and any other {@link JsValue} is stored in a new one initialized to the\n * GType inferred from it.\n * @param jsValue Value to store, or an already-built `GObject.Value`.\n * @throws {ValueMarshalError} When no GType can be inferred from the value.\n */\nfunction toValueHandle(jsValue: unknown): ExternalObject<Handle> {\n const wrapperType = wrapperGType(jsValue);\n\n if (typeIsA(wrapperType, resolveBoxedType(VALUE_T))) {\n return getHandle(jsValue as object);\n }\n\n const type = inferValueGType(jsValue, wrapperType);\n\n if (type === TYPE_INVALID) {\n throw new ValueMarshalError(marshalFailure(jsValue));\n }\n\n const value = newValueForType(type);\n intoValue(value, jsValue);\n\n return value;\n}\n\n/** Same as {@link toValueHandle}, but passes a null or undefined value through as no value at all. */\nconst tryToValueHandle = (jsValue: unknown): ExternalObject<Handle> | undefined =>\n jsValue == null ? undefined : toValueHandle(jsValue);\n\nconst isValueDescriptor = (descriptor: Descriptor): boolean =>\n descriptor.kind === \"boxed\" && descriptor.typeName === \"GValue\";\n\nconst resolveNativeValue = (descriptor: Descriptor, value: unknown): unknown => {\n const isHandleKind = descriptor.kind === \"object\" || descriptor.kind === \"boxed\";\n\n if (!isHandleKind) {\n return toNative(descriptor, value);\n }\n\n if (value == null) {\n return null;\n }\n\n return isValueDescriptor(descriptor) ? toValueHandle(value) : getHandle(value);\n};\n\nconst resolveValueGType = (descriptor: Descriptor, nativeValue: unknown): bigint => {\n if (descriptor.kind !== \"object\") {\n return resolveDescriptorType(descriptor);\n }\n\n return nativeValue == null ? TYPE_OBJECT : getType(nativeValue as ExternalObject<Handle>);\n};\n\nconst toWholeNumber = (descriptor: Descriptor, value: unknown): unknown =>\n typeof value === \"number\" && Number.isFinite(value) && WHOLE_NUMBER_KINDS.has(descriptor.kind)\n ? Math.trunc(value)\n : value;\n\nfunction toValue(descriptor: Descriptor, value: unknown): ExternalObject<Handle> {\n const nativeValue = resolveNativeValue(descriptor, toWholeNumber(descriptor, value));\n const type = resolveValueGType(descriptor, nativeValue);\n const gValue = newValueForType(type);\n resolveValueType(descriptor).set(gValue, nativeValue);\n\n return gValue;\n}\n\n/**\n * Reads what a `GObject.Value` holds as its JavaScript form, wrapping an object, boxed, param, variant,\n * or fundamental payload in the class registered for its GType, and handing back a string, number,\n * `bigint`, boolean, or array of strings for the rest.\n * @param value Handle of an initialized value to read.\n * @throws {Error} When the GType it holds has no JavaScript form, such as a non-null `gpointer`.\n */\nfunction fromValue(value: ExternalObject<Handle>): unknown {\n const type = getValueType(value);\n const get = resolveValueGetter(type);\n\n if (get === undefined) {\n throw new Error(`Unsupported type for fromValue: ${typeName(type) ?? String(type)}`);\n }\n\n return get(value);\n}\n\nconst objectValueWithFallback = (\n descriptor: ObjectDescriptor,\n value: ExternalObject<Handle>,\n): { wrapped: unknown } | null => {\n if (descriptor.fallbackClass === undefined || !objectValueFundamentals.has(typeFundamental(getValueType(value)))) {\n return null;\n }\n\n return { wrapped: wrapObject(objectValueType.get(value), descriptor.fallbackClass) };\n};\n\nconst fromValueForDescriptor = (descriptor: Descriptor, value: ExternalObject<Handle>): unknown => {\n if (descriptor.kind === \"array\" && descriptor.arrayKind === \"gbytearray\") {\n return byteArrayValueGetterFor(descriptor.isBytes === true)(value);\n }\n\n if (descriptor.kind === \"object\") {\n const withFallback = objectValueWithFallback(descriptor, value);\n\n if (withFallback !== null) {\n return withFallback.wrapped;\n }\n }\n\n return fromValue(value);\n};\n\nconst inferredValueGuard: ValueGuard = (jsValue) => inferValueGType(jsValue, wrapperGType(jsValue)) !== TYPE_INVALID;\n\nconst byteArrayValueGuard: ValueGuard = (jsValue) =>\n jsValue == null || isByteArraySource(jsValue) || typeIsA(resolveGtype(jsValue), getByteArrayType());\n\nconst valueGuardOverrideFor = (valueType: bigint): ValueGuard | undefined => {\n if (valueType === resolveBoxedType(VALUE_T)) {\n return inferredValueGuard;\n }\n\n return valueType === getByteArrayType() ? byteArrayValueGuard : undefined;\n};\n\nfunction newValueForDescriptor(descriptor: Descriptor): ExternalObject<Handle> {\n return newValueForType(resolveDescriptorType(descriptor));\n}\n\nfunction outValueForDescriptor(\n descriptor: Descriptor,\n initial?: unknown,\n): { value: ExternalObject<Handle>; read: () => unknown } {\n const storage = alloc(8);\n write(storage, uint64T, 0, 0);\n\n if (initial !== undefined) {\n write(storage, descriptor, 0, initial);\n }\n\n const value = newValueForType(TYPE_POINTER);\n pointerValueType.set(value, storage);\n\n return { value, read: () => read(storage, descriptor, 0) };\n}\n\nfunction outValueForBoxedDescriptor(descriptor: Descriptor, boxed: object): ExternalObject<Handle> {\n return newBoxedValue(descriptor, boxed, setBoxedBind);\n}\n\nfunction inoutValueForBoxedDescriptor(descriptor: Descriptor, boxed: object): ExternalObject<Handle> {\n return newBoxedValue(descriptor, boxed, setStaticBoxedBind);\n}\n\n/** Thrown when a value passed where a `GObject.Value` is expected holds no GType one can be built from. */\nclass ValueMarshalError extends TypeError {\n /** Name callers match on when the error is caught as a plain `TypeError`. */\n public override name = \"ValueMarshalError\";\n}\n\nexport {\n getValueType,\n intoValue,\n copyValue,\n getBoxedValue,\n setBoxedValue,\n type JsValue,\n toValue,\n toValueHandle,\n tryToValueHandle,\n ValueMarshalError,\n fromValue,\n fromValueForDescriptor,\n valueGuardOverrideFor,\n newValueForDescriptor,\n newValueForType,\n outValueForDescriptor,\n outValueForBoxedDescriptor,\n inoutValueForBoxedDescriptor,\n type ValueNarrower,\n valueNarrowerFor,\n type ValueWriter,\n valueWriterFor,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"value.js","sourceRoot":"","sources":["../src/value.ts"],"names":[],"mappings":"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","sourcesContent":["import { alloc, type Descriptor, type ExternalObject, getType, type Handle, read, write } from \"@gtkx/native\";\nimport { bind, createBindCache } from \"./bind.js\";\nimport {\n type ArrayDescriptor,\n arrayT,\n bigint64T,\n biguint64T,\n booleanT,\n boxedT,\n byteArrayT,\n float32T,\n float64T,\n type FundamentalDescriptor,\n fundamentalLifecycleFor,\n fundamentalT,\n int8T,\n int32T,\n type ObjectDescriptor,\n objectT,\n preserveArrayNull,\n stringT,\n uint8T,\n uint32T,\n uint64T,\n voidT,\n} from \"./descriptors.js\";\nimport { LIB, PARAM_T, VALUE_SIZE, VALUE_T, VARIANT_T } from \"./library.js\";\nimport { toNative } from \"./native-value.js\";\nimport {\n INT32_MAXIMUM,\n INT32_MINIMUM,\n INT64_MAXIMUM,\n INT64_MINIMUM,\n isStringArray,\n resolveGtype,\n UINT64_MAXIMUM,\n type ValueGuard,\n} from \"./param-spec.js\";\nimport {\n coerceGType,\n describeValueKind,\n getHandle,\n getWrapperClass,\n wrapFundamentalHandle,\n wrapHandle,\n wrapObject,\n} from \"./registry.js\";\nimport {\n getByteArrayType,\n getStrvType,\n isResolvableDescriptor,\n resolveBoxedType,\n resolveDescriptorType,\n resolveFundamentalType,\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_OBJECT,\n TYPE_PARAM,\n TYPE_POINTER,\n TYPE_STRING,\n TYPE_UCHAR,\n TYPE_UINT,\n TYPE_UINT64,\n TYPE_ULONG,\n TYPE_VARIANT,\n type TypedClass,\n typeFundamental,\n typeIsA,\n typeName,\n} from \"./type.js\";\n\ntype ValueType = {\n set: (value: ExternalObject<Handle>, nativeValue: unknown) => void;\n get: (value: ExternalObject<Handle>) => unknown;\n};\n\ntype ValueGetter = (value: ExternalObject<Handle>) => unknown;\ntype ValueWriter = ValueType[\"set\"];\ntype ValueNarrower = (jsValue: unknown) => unknown;\n/**\n * JavaScript value a `GObject.Value` can be built from without being told which GType to hold, for the\n * parameters that take one. A string holds `gchararray`, a boolean `gboolean`, an integer within `gint`\n * range `gint` and any other number `gdouble`, a `bigint` `gint64` or `guint64` past its range, an array\n * of strings `GStrv`, a wrapper instance the GType it carries, and `null` a NULL `gpointer`, which is\n * what GJS infers for it and which few callees accept. Reaching a GType inference cannot name, such as\n * `guchar` or an enumeration, takes an explicitly initialized `GObject.Value` instead.\n */\ntype JsValue = string | number | bigint | boolean | string[] | TypedClass | null;\n\nconst setBoxedCache = createBindCache();\nconst setStaticBoxedCache = createBindCache();\nconst dupBoxedCache = createBindCache();\nconst setInstanceCache = createBindCache();\nconst peekPointerCache = createBindCache();\nconst gValueInit = bind(LIB, \"g_value_init\", [VALUE_T, biguint64T], voidT);\nconst gValueCopy = bind(LIB, \"g_value_copy\", [VALUE_T, VALUE_T], voidT);\nconst booleanValueType = bindValueType(\"boolean\", booleanT);\nconst boundTypeValueType = bindValueType(\"gtype\", biguint64T);\n\nconst typeValueType: ValueType = {\n set: (value, jsValue) => {\n boundTypeValueType.set(value, coerceGType(jsValue));\n },\n get: boundTypeValueType.get,\n};\n\nconst scharValueType = bindValueType(\"schar\", int8T);\nconst ucharValueType = bindValueType(\"uchar\", uint8T);\nconst intValueType = bindValueType(\"int\", int32T);\nconst uintValueType = bindValueType(\"uint\", uint32T);\nconst longValueType = bindValueType(\"long\", bigint64T);\nconst ulongValueType = bindValueType(\"ulong\", biguint64T);\nconst int64ValueType = bindValueType(\"int64\", bigint64T);\nconst uint64ValueType = bindValueType(\"uint64\", biguint64T);\nconst floatValueType = bindValueType(\"float\", float32T);\nconst doubleValueType = bindValueType(\"double\", float64T);\nconst stringValueType = bindValueType(\"string\", stringT(\"borrowed\"));\nconst enumValueType = bindValueType(\"enum\", int32T);\nconst flagsValueType = bindValueType(\"flags\", uint32T);\nconst objectValueType = bindValueType(\"object\", objectT(\"borrowed\"));\nconst objectValueFundamentals: Set<bigint> = new Set([TYPE_OBJECT, TYPE_INTERFACE]);\nconst paramValueType = bindValueType(\"param\", PARAM_T);\nconst variantValueType = bindValueType(\"variant\", VARIANT_T);\nconst pointerValueType = bindValueType(\"pointer\", uint64T);\nconst strvDescriptor = arrayT(stringT(\"borrowed\"));\nconst nullableStrvDescriptor = preserveArrayNull(arrayT(stringT(\"borrowed\")));\nconst setStrvBoxed = bind(LIB, \"g_value_set_boxed\", [VALUE_T, strvDescriptor], voidT);\nconst getStrvBoxed = bind(LIB, \"g_value_get_boxed\", [VALUE_T], strvDescriptor);\nconst getNullableStrvBoxed = bind(\n LIB,\n \"g_value_get_boxed\",\n [VALUE_T],\n nullableStrvDescriptor,\n);\n\nconst strvValueType: ValueType = {\n set: setStrvValue,\n get: getStrvBoxed,\n};\n\nconst nullableStrvValueType: ValueType = {\n set: setStrvValue,\n get: getNullableStrvBoxed,\n};\n\nconst setByteArrayBoxed = bind(LIB, \"g_value_set_boxed\", [VALUE_T, byteArrayT()], voidT);\nconst getBoxedPointer = bind(LIB, \"g_value_get_boxed\", [VALUE_T], uint64T);\nconst getBytesBoxed = bind(LIB, \"g_value_get_boxed\", [VALUE_T], byteArrayT());\nconst getByteItemsBoxed = bind(LIB, \"g_value_get_boxed\", [VALUE_T], arrayT(uint8T, \"gbytearray\"));\n\nconst PLAIN_VALUE_TYPES: Partial<Record<Descriptor[\"kind\"], ValueType>> = {\n boolean: booleanValueType,\n string: stringValueType,\n int8: intValueType,\n int16: intValueType,\n int32: intValueType,\n uint8: uintValueType,\n uint16: uintValueType,\n uint32: uintValueType,\n int64: int64ValueType,\n bigint64: int64ValueType,\n uint64: uint64ValueType,\n biguint64: uint64ValueType,\n float32: floatValueType,\n float64: doubleValueType,\n object: objectValueType,\n};\n\nconst WHOLE_NUMBER_KINDS: Set<Descriptor[\"kind\"]> = new Set([\n \"int8\",\n \"int16\",\n \"int32\",\n \"uint8\",\n \"uint16\",\n \"uint32\",\n \"int64\",\n \"uint64\",\n \"enum\",\n \"flags\",\n]);\n\nconst PLAIN_VALUE_GETTERS: Map<bigint, ValueGetter> = new Map([\n [TYPE_BOOLEAN, booleanValueType.get],\n [TYPE_CHAR, scharValueType.get],\n [TYPE_UCHAR, ucharValueType.get],\n [TYPE_INT, intValueType.get],\n [TYPE_UINT, uintValueType.get],\n [TYPE_LONG, longValueType.get],\n [TYPE_ULONG, ulongValueType.get],\n [TYPE_INT64, int64ValueType.get],\n [TYPE_UINT64, uint64ValueType.get],\n [TYPE_FLOAT, floatValueType.get],\n [TYPE_DOUBLE, doubleValueType.get],\n [TYPE_ENUM, enumValueType.get],\n [TYPE_FLAGS, flagsValueType.get],\n]);\n\nconst PLAIN_VALUE_SETTERS: Map<bigint, ValueType[\"set\"]> = new Map([\n [TYPE_BOOLEAN, booleanValueType.set],\n [TYPE_CHAR, scharValueType.set],\n [TYPE_UCHAR, ucharValueType.set],\n [TYPE_INT, intValueType.set],\n [TYPE_UINT, uintValueType.set],\n [TYPE_LONG, longValueType.set],\n [TYPE_ULONG, ulongValueType.set],\n [TYPE_INT64, int64ValueType.set],\n [TYPE_UINT64, uint64ValueType.set],\n [TYPE_FLOAT, floatValueType.set],\n [TYPE_DOUBLE, doubleValueType.set],\n [TYPE_ENUM, enumValueType.set],\n [TYPE_FLAGS, flagsValueType.set],\n]);\n\nconst WRAPPED_VALUE_SETTERS: Map<bigint, ValueType[\"set\"]> = new Map([\n [TYPE_STRING, setStringValue],\n [TYPE_OBJECT, handleSetter(objectValueType)],\n [TYPE_INTERFACE, handleSetter(objectValueType)],\n [TYPE_PARAM, handleSetter(paramValueType)],\n [TYPE_VARIANT, handleSetter(variantValueType)],\n [TYPE_BOXED, setBoxedFromValue],\n [TYPE_POINTER, setPointerValue],\n]);\n\nconst getBoxedTypeName = (type: bigint): string => typeName(type) ?? \"GBoxed\";\nconst newValue = (): ExternalObject<Handle> => alloc(VALUE_SIZE, resolveBoxedType(VALUE_T));\n\nfunction bindValueType(symbol: string, descriptor: Descriptor): ValueType {\n return {\n set: bind(LIB, `g_value_set_${symbol}`, [VALUE_T, descriptor], voidT),\n get: bind(LIB, `g_value_get_${symbol}`, [VALUE_T], descriptor),\n };\n}\n\nconst setBoxedBind = (name: string) =>\n setBoxedCache(name, LIB, \"g_value_set_boxed\", [VALUE_T, boxedT(name, { sharedLibrary: LIB })], voidT);\n\nconst setStaticBoxedBind = (name: string) =>\n setStaticBoxedCache(name, LIB, \"g_value_set_static_boxed\", [VALUE_T, boxedT(name, { sharedLibrary: LIB })], voidT);\n\nconst dupBoxedBind = (name: string) =>\n dupBoxedCache(name, LIB, \"g_value_dup_boxed\", [VALUE_T], boxedT(name, { ownership: \"full\", sharedLibrary: LIB }));\n\nconst boxedValueType = (type: bigint): ValueType => {\n const name = getBoxedTypeName(type);\n\n return { set: setBoxedBind(name), get: dupBoxedBind(name) };\n};\n\nconst byteArrayValueGetterFor = (isBytes: boolean): ValueGetter => {\n const get = isBytes ? getBytesBoxed : getByteItemsBoxed;\n\n return (value) => (getBoxedPointer(value) ? get(value) : null);\n};\n\nconst byteArrayValueType = (descriptor: ArrayDescriptor): ValueType => ({\n set: setByteArrayValue,\n get: byteArrayValueGetterFor(descriptor.isBytes === true),\n});\n\nconst isByteArraySource = (jsValue: unknown): jsValue is Uint8Array | number[] =>\n jsValue instanceof Uint8Array || Array.isArray(jsValue);\n\nconst enumOrFlagsValueType = (type: bigint): ValueType =>\n typeFundamental(type) === TYPE_FLAGS ? flagsValueType : enumValueType;\n\nfunction unsupportedFundamental(type: bigint): never {\n throw new Error(`Unsupported fundamental type '${typeName(type) ?? String(type)}' for value`);\n}\n\nconst setInstanceBind = (fundamental: bigint, descriptor: FundamentalDescriptor) =>\n setInstanceCache(String(fundamental), LIB, \"g_value_set_instance\", [VALUE_T, descriptor], voidT);\n\nconst peekPointerBind = (fundamental: bigint, descriptor: FundamentalDescriptor) =>\n peekPointerCache(String(fundamental), LIB, \"g_value_peek_pointer\", [VALUE_T], descriptor);\n\nconst customFundamentalDescriptor = (fundamental: bigint): FundamentalDescriptor | undefined => {\n const name = typeName(fundamental);\n\n if (name === null) {\n return undefined;\n }\n\n const lifecycle = fundamentalLifecycleFor(name);\n\n if (lifecycle === undefined) {\n return undefined;\n }\n\n return fundamentalT(lifecycle.sharedLibrary, lifecycle.refFnName, lifecycle.unrefFnName, {\n ownership: \"borrowed\",\n typeName: name,\n });\n};\n\nconst customFundamentalValueType = (type: bigint): ValueType | undefined => {\n const fundamental = typeFundamental(type);\n const descriptor = customFundamentalDescriptor(fundamental);\n\n if (descriptor === undefined) {\n return undefined;\n }\n\n return { set: setInstanceBind(fundamental, descriptor), get: peekPointerBind(fundamental, descriptor) };\n};\n\nconst fundamentalValueType = (type: bigint): ValueType => {\n switch (typeFundamental(type)) {\n case TYPE_PARAM: {\n return paramValueType;\n }\n case TYPE_VARIANT: {\n return variantValueType;\n }\n case TYPE_BOXED: {\n return boxedValueType(type);\n }\n default: {\n return customFundamentalValueType(type) ?? unsupportedFundamental(type);\n }\n }\n};\n\nfunction getValueType(value: ExternalObject<Handle>): bigint {\n return read(value, biguint64T, 0) as bigint;\n}\n\nfunction copyValue(dest: ExternalObject<Handle>, src: ExternalObject<Handle>): void {\n if (getValueType(dest) === TYPE_INVALID) {\n gValueInit(dest, getValueType(src));\n }\n\n gValueCopy(src, dest);\n}\n\nconst newValueForType = (type: bigint): ExternalObject<Handle> => {\n const value = newValue();\n gValueInit(value, type);\n\n return value;\n};\n\nconst newBoxedValue = (\n descriptor: Descriptor,\n boxed: object,\n resolveSetBind: (name: string) => ValueType[\"set\"],\n): ExternalObject<Handle> => {\n const type = resolveDescriptorType(descriptor);\n const value = newValueForType(type);\n resolveSetBind(getBoxedTypeName(type))(value, getHandle(boxed));\n\n return value;\n};\n\n/**\n * Duplicates the boxed value held by a GValue and returns the copy wrapped in the\n * class its GType resolves to, or null when the GValue holds no boxed type.\n * A `GByteArray` payload is copied into a `Uint8Array` instead of being wrapped.\n */\nfunction getBoxedValue(value: ExternalObject<Handle>): object | null {\n const type = getValueType(value);\n\n if (typeFundamental(type) !== TYPE_BOXED) {\n return null;\n }\n\n if (type === getByteArrayType()) {\n return byteArrayValueGetterFor(true)(value) as Uint8Array | null;\n }\n\n const boxed = dupBoxedBind(getBoxedTypeName(type))(value) as ExternalObject<Handle> | null;\n\n if (boxed === null) {\n return null;\n }\n\n return wrapHandle(boxed, getWrapperClass(type));\n}\n\n/**\n * Stores a boxed object, or null, into a GValue that holds a boxed type. A GValue holding\n * `G_TYPE_VALUE` also takes any other {@link JsValue}, which is boxed into a nested `GObject.Value`\n * of the GType inferred from it, and one holding a `GByteArray` also takes the bytes as a\n * `Uint8Array` or an array of byte values.\n * @param value Handle of an initialized value to write into.\n * @param boxed The boxed instance, bytes, or {@link JsValue} to store.\n * @throws {ValueMarshalError} When the value cannot hold what was passed.\n */\nfunction setBoxedValue(value: ExternalObject<Handle>, boxed: JsValue | object): void {\n const type = getValueType(value);\n\n if (type === resolveBoxedType(VALUE_T)) {\n setBoxedBind(\"GValue\")(value, boxed === null ? null : toValueHandle(boxed));\n\n return;\n }\n\n if (type === getByteArrayType() && isByteArraySource(boxed)) {\n setByteArrayBoxed(value, boxed);\n\n return;\n }\n\n setWrappedBoxedValue(value, type, boxed);\n}\n\nfunction setWrappedBoxedValue(value: ExternalObject<Handle>, type: bigint, boxed: JsValue | object): void {\n if (boxed !== null && typeof boxed !== \"object\") {\n throw new ValueMarshalError(\n `Cannot marshal ${describeValueKind(boxed)} into a '${getBoxedTypeName(type)}' value`,\n );\n }\n\n setBoxedBind(getBoxedTypeName(type))(value, boxed === null ? null : getHandle(boxed));\n}\n\nconst arrayValueType = (descriptor: ArrayDescriptor): ValueType => {\n if (descriptor.itemDescriptor.kind === \"string\" && descriptor.arrayKind === \"array\") {\n return descriptor.preserveNull === true ? nullableStrvValueType : strvValueType;\n }\n\n if (descriptor.arrayKind === \"gbytearray\") {\n return byteArrayValueType(descriptor);\n }\n\n throw new Error(`Unsupported array type ${descriptor.arrayKind} of ${descriptor.itemDescriptor.kind}`);\n};\n\nconst resolveEnumOrFlagsValueType = (descriptor: Extract<Descriptor, { kind: \"enum\" | \"flags\" }>): ValueType => {\n if (descriptor.getTypeFnName === \"\") {\n return descriptor.kind === \"flags\" ? flagsValueType : enumValueType;\n }\n\n return enumOrFlagsValueType(resolveType(descriptor.sharedLibrary, descriptor.getTypeFnName));\n};\n\nconst resolveValueType = (descriptor: Descriptor): ValueType => {\n if (descriptor.kind === \"biguint64\" && \"type\" in descriptor) {\n return typeValueType;\n }\n\n const plain = PLAIN_VALUE_TYPES[descriptor.kind];\n\n if (plain !== undefined) {\n return plain;\n }\n\n if (!isResolvableDescriptor(descriptor)) {\n throw new Error(`Unsupported type descriptor '${descriptor.kind}'`);\n }\n\n switch (descriptor.kind) {\n case \"enum\":\n case \"flags\": {\n return resolveEnumOrFlagsValueType(descriptor);\n }\n case \"boxed\": {\n return boxedValueType(resolveBoxedType(descriptor));\n }\n case \"fundamental\": {\n return fundamentalValueType(resolveFundamentalType(descriptor));\n }\n case \"array\": {\n return arrayValueType(descriptor);\n }\n }\n};\n\nconst wrappedValueGetter = (fundamental: bigint): ValueGetter | undefined => {\n switch (fundamental) {\n case TYPE_STRING: {\n return (value) => stringValueType.get(value) ?? null;\n }\n case TYPE_INTERFACE:\n case TYPE_OBJECT: {\n return (value) => wrapObject(objectValueType.get(value));\n }\n case TYPE_PARAM: {\n return (value) =>\n wrapFundamentalHandle(\n paramValueType.get(value) as ExternalObject<Handle> | null,\n getWrapperClass(TYPE_PARAM),\n );\n }\n case TYPE_VARIANT: {\n return (value) =>\n wrapFundamentalHandle(\n variantValueType.get(value) as ExternalObject<Handle> | null,\n getWrapperClass(TYPE_VARIANT),\n );\n }\n case TYPE_BOXED: {\n return getBoxedValue;\n }\n case TYPE_POINTER: {\n return (value) => {\n if (pointerValueType.get(value)) {\n throw new Error(\"G_TYPE_POINTER non-null values cannot be marshalled to JS\");\n }\n\n return null;\n };\n }\n default: {\n return undefined;\n }\n }\n};\n\nfunction setStringValue(value: ExternalObject<Handle>, nativeValue: unknown): void {\n stringValueType.set(value, nativeValue ?? null);\n}\n\nfunction setStrvValue(value: ExternalObject<Handle>, nativeValue: unknown): void {\n setStrvBoxed(value, nativeValue ?? null);\n}\n\nfunction setByteArrayValue(value: ExternalObject<Handle>, nativeValue: unknown): void {\n setByteArrayBoxed(value, nativeValue ?? null);\n}\n\nfunction setPointerValue(value: ExternalObject<Handle>, nativeValue: unknown): void {\n if (nativeValue != null) {\n throw new Error(\"G_TYPE_POINTER non-null values cannot be marshalled from JS\");\n }\n\n pointerValueType.set(value, 0);\n}\n\nfunction handleSetter(target: ValueType): ValueType[\"set\"] {\n return (value, nativeValue) => {\n target.set(value, nativeValue == null ? null : getHandle(nativeValue));\n };\n}\n\nfunction setBoxedFromValue(value: ExternalObject<Handle>, nativeValue: unknown): void {\n setBoxedValue(value, nativeValue ?? null);\n}\n\nconst customFundamentalGetter = (type: bigint): ValueGetter | undefined => {\n const valueType = customFundamentalValueType(type);\n\n if (valueType === undefined) {\n return undefined;\n }\n\n return (value) =>\n wrapFundamentalHandle(valueType.get(value) as ExternalObject<Handle> | null, getWrapperClass(type));\n};\n\nconst customFundamentalSetter = (type: bigint): ValueType[\"set\"] | undefined => {\n const valueType = customFundamentalValueType(type);\n\n return valueType === undefined ? undefined : handleSetter(valueType);\n};\n\nconst builtInValueGetter = (fundamental: bigint): ValueGetter | undefined =>\n PLAIN_VALUE_GETTERS.get(fundamental) ?? wrappedValueGetter(fundamental);\n\nconst builtInValueSetter = (fundamental: bigint): ValueType[\"set\"] | undefined =>\n PLAIN_VALUE_SETTERS.get(fundamental) ?? WRAPPED_VALUE_SETTERS.get(fundamental);\n\nconst exactValueType = (type: bigint): ValueType | undefined => {\n if (type === TYPE_GTYPE) {\n return typeValueType;\n }\n\n return type === getStrvType() ? strvValueType : undefined;\n};\n\nconst resolveValueGetter = (type: bigint): ValueGetter | undefined =>\n exactValueType(type)?.get ?? builtInValueGetter(typeFundamental(type)) ?? customFundamentalGetter(type);\n\nconst resolveValueSetter = (type: bigint): ValueType[\"set\"] | undefined =>\n exactValueType(type)?.set ?? builtInValueSetter(typeFundamental(type)) ?? customFundamentalSetter(type);\n\nconst holdsUnchanged: ValueNarrower = (jsValue) => jsValue;\nconst holdsAsFloat: ValueNarrower = (jsValue) => Math.fround(jsValue as number);\n\nfunction valueNarrowerFor(type: bigint): ValueNarrower {\n return typeFundamental(type) === TYPE_FLOAT ? holdsAsFloat : holdsUnchanged;\n}\n\nfunction valueWriterFor(type: bigint): ValueWriter {\n const set = resolveValueSetter(type);\n\n if (set === undefined) {\n throw new Error(`Unsupported type for intoValue: ${typeName(type) ?? String(type)}`);\n }\n\n return set;\n}\n\nfunction intoValue(value: ExternalObject<Handle>, jsValue: unknown): void {\n valueWriterFor(getValueType(value))(value, jsValue);\n}\n\nconst numberValueGType = (jsValue: number): bigint =>\n Number.isSafeInteger(jsValue) && jsValue >= INT32_MINIMUM && jsValue <= INT32_MAXIMUM ? TYPE_INT : TYPE_DOUBLE;\n\nconst arrayValueGType = (jsValue: unknown[]): bigint => (isStringArray(jsValue) ? getStrvType() : TYPE_INVALID);\nconst wideValueGType = (jsValue: bigint): bigint => (jsValue > INT64_MAXIMUM ? TYPE_UINT64 : TYPE_INT64);\n\nconst bigintValueGType = (jsValue: bigint): bigint =>\n jsValue < INT64_MINIMUM || jsValue > UINT64_MAXIMUM ? TYPE_INVALID : wideValueGType(jsValue);\n\nconst objectValueGType = (jsValue: object | null, wrapperType: bigint): bigint => {\n if (jsValue === null) {\n return TYPE_POINTER;\n }\n\n return Array.isArray(jsValue) ? arrayValueGType(jsValue) : wrapperType;\n};\n\nfunction inferValueGType(jsValue: unknown, wrapperType: bigint): bigint {\n switch (typeof jsValue) {\n case \"string\": {\n return TYPE_STRING;\n }\n case \"boolean\": {\n return TYPE_BOOLEAN;\n }\n case \"number\": {\n return numberValueGType(jsValue);\n }\n case \"bigint\": {\n return bigintValueGType(jsValue);\n }\n case \"object\": {\n return objectValueGType(jsValue, wrapperType);\n }\n case \"function\":\n case \"symbol\":\n case \"undefined\": {\n return TYPE_INVALID;\n }\n }\n}\n\nconst marshalFailure = (jsValue: unknown): string =>\n typeof jsValue === \"bigint\"\n ? `Cannot marshal ${String(jsValue)} into a GObject.Value: outside the range of gint64 and guint64`\n : `Cannot marshal ${describeValueKind(jsValue)} into a GObject.Value`;\n\nconst wrapperGType = (jsValue: unknown): bigint =>\n typeof jsValue === \"object\" && jsValue !== null ? resolveGtype(jsValue) : TYPE_INVALID;\n\n/**\n * Marshals a value passed where a `GObject.Value` is expected into a value handle: an already-built\n * value yields its own handle, and any other {@link JsValue} is stored in a new one initialized to the\n * GType inferred from it.\n * @param jsValue Value to store, or an already-built `GObject.Value`.\n * @throws {ValueMarshalError} When no GType can be inferred from the value.\n */\nfunction toValueHandle(jsValue: unknown): ExternalObject<Handle> {\n const wrapperType = wrapperGType(jsValue);\n\n if (typeIsA(wrapperType, resolveBoxedType(VALUE_T))) {\n return getHandle(jsValue as object);\n }\n\n const type = inferValueGType(jsValue, wrapperType);\n\n if (type === TYPE_INVALID) {\n throw new ValueMarshalError(marshalFailure(jsValue));\n }\n\n const value = newValueForType(type);\n intoValue(value, jsValue);\n\n return value;\n}\n\n/** Same as {@link toValueHandle}, but passes a null or undefined value through as no value at all. */\nconst tryToValueHandle = (jsValue: unknown): ExternalObject<Handle> | undefined =>\n jsValue == null ? undefined : toValueHandle(jsValue);\n\nconst isValueDescriptor = (descriptor: Descriptor): boolean =>\n descriptor.kind === \"boxed\" && descriptor.typeName === \"GValue\";\n\nconst resolveNativeValue = (descriptor: Descriptor, value: unknown): unknown => {\n const isHandleKind = descriptor.kind === \"object\" || descriptor.kind === \"boxed\";\n\n if (!isHandleKind) {\n return toNative(descriptor, value);\n }\n\n if (value == null) {\n return null;\n }\n\n return isValueDescriptor(descriptor) ? toValueHandle(value) : getHandle(value);\n};\n\nconst resolveValueGType = (descriptor: Descriptor, nativeValue: unknown): bigint => {\n if (descriptor.kind !== \"object\") {\n return resolveDescriptorType(descriptor);\n }\n\n return nativeValue == null ? TYPE_OBJECT : getType(nativeValue as ExternalObject<Handle>);\n};\n\nconst toWholeNumber = (descriptor: Descriptor, value: unknown): unknown =>\n typeof value === \"number\" && Number.isFinite(value) && WHOLE_NUMBER_KINDS.has(descriptor.kind)\n ? Math.trunc(value)\n : value;\n\nfunction toValue(descriptor: Descriptor, value: unknown): ExternalObject<Handle> {\n const nativeValue = resolveNativeValue(descriptor, toWholeNumber(descriptor, value));\n const type = resolveValueGType(descriptor, nativeValue);\n const gValue = newValueForType(type);\n resolveValueType(descriptor).set(gValue, nativeValue);\n\n return gValue;\n}\n\n/**\n * Reads what a `GObject.Value` holds as its JavaScript form, wrapping an object, boxed, param, variant,\n * or fundamental payload in the class registered for its GType, and handing back a string, number,\n * `bigint`, boolean, or array of strings for the rest.\n * @param value Handle of an initialized value to read.\n * @throws {Error} When the GType it holds has no JavaScript form, such as a non-null `gpointer`.\n */\nfunction fromValue(value: ExternalObject<Handle>): unknown {\n const type = getValueType(value);\n const get = resolveValueGetter(type);\n\n if (get === undefined) {\n throw new Error(`Unsupported type for fromValue: ${typeName(type) ?? String(type)}`);\n }\n\n return get(value);\n}\n\nconst fromObjectPropertyValue = (value: ExternalObject<Handle>): unknown =>\n getValueType(value) === getStrvType() ? nullableStrvValueType.get(value) : fromValue(value);\n\nconst objectValueWithFallback = (\n descriptor: ObjectDescriptor,\n value: ExternalObject<Handle>,\n): { wrapped: unknown } | null => {\n if (descriptor.fallbackClass === undefined || !objectValueFundamentals.has(typeFundamental(getValueType(value)))) {\n return null;\n }\n\n return { wrapped: wrapObject(objectValueType.get(value), descriptor.fallbackClass) };\n};\n\nconst arrayValueGetterForDescriptor = (descriptor: ArrayDescriptor): ValueGetter | undefined => {\n if (descriptor.arrayKind === \"gbytearray\") {\n return byteArrayValueGetterFor(descriptor.isBytes === true);\n }\n\n return descriptor.itemDescriptor.kind === \"string\" && descriptor.arrayKind === \"array\"\n ? arrayValueType(descriptor).get\n : undefined;\n};\n\nconst fromArrayValueForDescriptor = (descriptor: ArrayDescriptor, value: ExternalObject<Handle>): unknown => {\n const get = arrayValueGetterForDescriptor(descriptor);\n\n return get === undefined ? fromValue(value) : get(value);\n};\n\nconst fromValueForDescriptor = (descriptor: Descriptor, value: ExternalObject<Handle>): unknown => {\n if (descriptor.kind === \"array\") {\n return fromArrayValueForDescriptor(descriptor, value);\n }\n\n if (descriptor.kind === \"object\") {\n const withFallback = objectValueWithFallback(descriptor, value);\n\n if (withFallback !== null) {\n return withFallback.wrapped;\n }\n }\n\n return fromValue(value);\n};\n\nconst inferredValueGuard: ValueGuard = (jsValue) => inferValueGType(jsValue, wrapperGType(jsValue)) !== TYPE_INVALID;\n\nconst byteArrayValueGuard: ValueGuard = (jsValue) =>\n jsValue == null || isByteArraySource(jsValue) || typeIsA(resolveGtype(jsValue), getByteArrayType());\n\nconst valueGuardOverrideFor = (valueType: bigint): ValueGuard | undefined => {\n if (valueType === resolveBoxedType(VALUE_T)) {\n return inferredValueGuard;\n }\n\n return valueType === getByteArrayType() ? byteArrayValueGuard : undefined;\n};\n\nfunction newValueForDescriptor(descriptor: Descriptor): ExternalObject<Handle> {\n return newValueForType(resolveDescriptorType(descriptor));\n}\n\nfunction outValueForDescriptor(\n descriptor: Descriptor,\n initial?: unknown,\n): { value: ExternalObject<Handle>; read: () => unknown } {\n const storage = alloc(8);\n write(storage, uint64T, 0, 0);\n\n if (initial !== undefined) {\n write(storage, descriptor, 0, initial);\n }\n\n const value = newValueForType(TYPE_POINTER);\n pointerValueType.set(value, storage);\n\n return { value, read: () => read(storage, descriptor, 0) };\n}\n\nfunction outValueForBoxedDescriptor(descriptor: Descriptor, boxed: object): ExternalObject<Handle> {\n return newBoxedValue(descriptor, boxed, setBoxedBind);\n}\n\nfunction inoutValueForBoxedDescriptor(descriptor: Descriptor, boxed: object): ExternalObject<Handle> {\n return newBoxedValue(descriptor, boxed, setStaticBoxedBind);\n}\n\n/** Thrown when a value passed where a `GObject.Value` is expected holds no GType one can be built from. */\nclass ValueMarshalError extends TypeError {\n /** Name callers match on when the error is caught as a plain `TypeError`. */\n public override name = \"ValueMarshalError\";\n}\n\nexport {\n getValueType,\n intoValue,\n copyValue,\n getBoxedValue,\n setBoxedValue,\n type JsValue,\n toValue,\n toValueHandle,\n tryToValueHandle,\n ValueMarshalError,\n fromValue,\n fromObjectPropertyValue,\n fromValueForDescriptor,\n valueGuardOverrideFor,\n newValueForDescriptor,\n newValueForType,\n outValueForDescriptor,\n outValueForBoxedDescriptor,\n inoutValueForBoxedDescriptor,\n type ValueNarrower,\n valueNarrowerFor,\n type ValueWriter,\n valueWriterFor,\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gtkx/runtime",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.4",
|
|
4
4
|
"description": "FFI runtime for the generated GTK bindings: types, GValues, signals.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"gtkx",
|
|
@@ -64,11 +64,11 @@
|
|
|
64
64
|
"node": ">=26.7.0"
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@gtkx/native": "2.0.0-beta.
|
|
68
|
-
"@gtkx/utils": "2.0.0-beta.
|
|
67
|
+
"@gtkx/native": "2.0.0-beta.4",
|
|
68
|
+
"@gtkx/utils": "2.0.0-beta.4"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
|
-
"@gtkx/vitest": "2.0.0-beta.
|
|
71
|
+
"@gtkx/vitest": "2.0.0-beta.4"
|
|
72
72
|
},
|
|
73
73
|
"scripts": {
|
|
74
74
|
"release": "tsx ../../scripts/release-package.ts"
|
package/src/descriptors.ts
CHANGED
|
@@ -497,6 +497,12 @@ const arrayT = (
|
|
|
497
497
|
return result;
|
|
498
498
|
};
|
|
499
499
|
|
|
500
|
+
const preserveArrayNull = (descriptor: ArrayDescriptor): ArrayDescriptor => {
|
|
501
|
+
Reflect.set(descriptor, "preserveNull", true);
|
|
502
|
+
|
|
503
|
+
return descriptor;
|
|
504
|
+
};
|
|
505
|
+
|
|
500
506
|
/** Builds a descriptor for a `GList` of items. */
|
|
501
507
|
const listT = (
|
|
502
508
|
itemDescriptor: Descriptor,
|
|
@@ -630,6 +636,7 @@ export {
|
|
|
630
636
|
fundamentalLifecycleFor,
|
|
631
637
|
fundamentalT,
|
|
632
638
|
arrayT,
|
|
639
|
+
preserveArrayNull,
|
|
633
640
|
listT,
|
|
634
641
|
slistT,
|
|
635
642
|
ptrArrayT,
|
package/src/index.ts
CHANGED
|
@@ -12,10 +12,10 @@ export { fromNative, toHashTableEntries, toNative } from "./native-value.js";
|
|
|
12
12
|
export {
|
|
13
13
|
type ConstructBinding,
|
|
14
14
|
type ConstructBindings,
|
|
15
|
-
|
|
15
|
+
getProperty,
|
|
16
16
|
newObjectWithProperties,
|
|
17
17
|
registerConstructProperties,
|
|
18
|
-
|
|
18
|
+
setProperty,
|
|
19
19
|
} from "./object.js";
|
|
20
20
|
export { getParamSpecFlags, getParamSpecOwnerType, getParamSpecValueType } from "./param-spec.js";
|
|
21
21
|
export { promisify, trimFinish } from "./promisify.js";
|
package/src/internal.ts
CHANGED
|
@@ -19,6 +19,7 @@ type SignalMethodReceiver<T, K extends PropertyKey> = T extends {
|
|
|
19
19
|
: unknown
|
|
20
20
|
: unknown;
|
|
21
21
|
|
|
22
|
+
export { preserveArrayNull } from "./descriptors.js";
|
|
22
23
|
/** @internal */
|
|
23
24
|
export { registerElementMetadata } from "./element-metadata.js";
|
|
24
25
|
export {
|
|
@@ -27,29 +28,29 @@ export {
|
|
|
27
28
|
registeredElementSignals,
|
|
28
29
|
} from "./element-metadata.js";
|
|
29
30
|
export { createErrorDomain } from "./error.js";
|
|
30
|
-
export { type ApplicationInstance, getApplicationInstance } from "./lifecycle.js";
|
|
31
31
|
export { markSyntheticSignalMembers };
|
|
32
|
+
export { type ApplicationInstance, getApplicationInstance } from "./lifecycle.js";
|
|
32
33
|
export {
|
|
33
34
|
descriptorFreePropertySpec,
|
|
34
35
|
propertyMapOverride,
|
|
35
36
|
writablePropertyMapOverride,
|
|
36
37
|
} from "./property-brand.js";
|
|
37
38
|
export { getExactWrapperClass, resolveWrapperClass } from "./registry.js";
|
|
39
|
+
export type { SignalMethodReceiver };
|
|
38
40
|
export {
|
|
39
41
|
classSignalMember,
|
|
40
42
|
naturalSignalMember,
|
|
41
43
|
signalEmitMapOverride,
|
|
42
44
|
signalMapOverride,
|
|
43
45
|
} from "./signal-brand.js";
|
|
44
|
-
export type { SignalMethodReceiver };
|
|
45
46
|
export { hasSignalListener } from "./signal.js";
|
|
47
|
+
export { emitSignalByName, signalConnect, signalEmit };
|
|
46
48
|
export {
|
|
47
49
|
canonicalDetailedSignalName,
|
|
48
50
|
canonicalSignalName,
|
|
49
51
|
connectSignalByName,
|
|
50
52
|
installSignalDispatch,
|
|
51
53
|
} from "./signal.js";
|
|
52
|
-
export { emitSignalByName, signalConnect, signalEmit };
|
|
53
54
|
export { resolveType } from "./type.js";
|
|
54
55
|
export {
|
|
55
56
|
fromValue,
|
package/src/object.ts
CHANGED
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
} from "./properties.js";
|
|
13
13
|
import { propertyMapOverride, writablePropertyMapOverride } from "./property-brand.js";
|
|
14
14
|
import { getHandle, registerWrapper } from "./registry.js";
|
|
15
|
-
import {
|
|
15
|
+
import { fromObjectPropertyValue, fromValueForDescriptor, newValueForDescriptor, toValue } from "./value.js";
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* One construct property a wrapper class accepts: the canonical `GObject` name it is set under,
|
|
@@ -179,7 +179,7 @@ function newObjectWithProperties<T extends object>(gtype: bigint, props: object,
|
|
|
179
179
|
* @param propertyName The property name.
|
|
180
180
|
* @param descriptor Describes the property's type.
|
|
181
181
|
*/
|
|
182
|
-
function
|
|
182
|
+
function getProperty<
|
|
183
183
|
TObject extends { __properties__: object },
|
|
184
184
|
TPropertyMap extends object = TObject extends { [propertyMapOverride]?: infer TResolver }
|
|
185
185
|
? TResolver extends () => infer TMap
|
|
@@ -188,17 +188,17 @@ function getObjectProperty<
|
|
|
188
188
|
: TObject["__properties__"],
|
|
189
189
|
TName extends Extract<keyof NoInfer<TPropertyMap>, string> = Extract<keyof NoInfer<TPropertyMap>, string>,
|
|
190
190
|
>(obj: TObject, propertyName: TName): NoInfer<TPropertyMap>[TName];
|
|
191
|
-
function
|
|
192
|
-
function
|
|
191
|
+
function getProperty(obj: object, propertyName: string, descriptor: Descriptor): unknown;
|
|
192
|
+
function getProperty(obj: object, propertyName: string, descriptor?: Descriptor): unknown {
|
|
193
193
|
if (arguments.length === 2) {
|
|
194
194
|
const property = readableObjectPropertyFor(obj, propertyName);
|
|
195
195
|
gObjectGetProperty(getHandle(obj), property.name, property.value);
|
|
196
196
|
|
|
197
|
-
return
|
|
197
|
+
return fromObjectPropertyValue(property.value);
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
if (descriptor === undefined) {
|
|
201
|
-
throw new TypeError("
|
|
201
|
+
throw new TypeError("getProperty requires a property descriptor when called with three arguments");
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
const value = newValueForDescriptor(descriptor);
|
|
@@ -220,7 +220,7 @@ function getObjectProperty(obj: object, propertyName: string, descriptor?: Descr
|
|
|
220
220
|
* @param descriptor Describes the property's type.
|
|
221
221
|
* @param jsValue The value to set.
|
|
222
222
|
*/
|
|
223
|
-
function
|
|
223
|
+
function setProperty<
|
|
224
224
|
TObject extends { __writableProperties__: object },
|
|
225
225
|
TPropertyMap extends object = TObject extends { [writablePropertyMapOverride]?: infer TResolver }
|
|
226
226
|
? TResolver extends () => infer TMap
|
|
@@ -229,8 +229,8 @@ function setObjectProperty<
|
|
|
229
229
|
: TObject["__writableProperties__"],
|
|
230
230
|
TName extends Extract<keyof NoInfer<TPropertyMap>, string> = Extract<keyof NoInfer<TPropertyMap>, string>,
|
|
231
231
|
>(obj: TObject, propertyName: TName, jsValue: NoInfer<TPropertyMap>[TName]): void;
|
|
232
|
-
function
|
|
233
|
-
function
|
|
232
|
+
function setProperty(obj: object, propertyName: string, descriptor: Descriptor, jsValue: unknown): void;
|
|
233
|
+
function setProperty(
|
|
234
234
|
obj: object,
|
|
235
235
|
propertyName: string,
|
|
236
236
|
descriptorOrValue: unknown,
|
|
@@ -248,9 +248,9 @@ function setObjectProperty(
|
|
|
248
248
|
|
|
249
249
|
export {
|
|
250
250
|
newObjectWithProperties,
|
|
251
|
-
|
|
251
|
+
getProperty,
|
|
252
252
|
registerConstructProperties,
|
|
253
|
-
|
|
253
|
+
setProperty,
|
|
254
254
|
type ConstructBinding,
|
|
255
255
|
type ConstructBindings,
|
|
256
256
|
};
|
package/src/value.ts
CHANGED
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
int32T,
|
|
18
18
|
type ObjectDescriptor,
|
|
19
19
|
objectT,
|
|
20
|
+
preserveArrayNull,
|
|
20
21
|
stringT,
|
|
21
22
|
uint8T,
|
|
22
23
|
uint32T,
|
|
@@ -133,11 +134,25 @@ const objectValueFundamentals: Set<bigint> = new Set([TYPE_OBJECT, TYPE_INTERFAC
|
|
|
133
134
|
const paramValueType = bindValueType("param", PARAM_T);
|
|
134
135
|
const variantValueType = bindValueType("variant", VARIANT_T);
|
|
135
136
|
const pointerValueType = bindValueType("pointer", uint64T);
|
|
136
|
-
const
|
|
137
|
+
const strvDescriptor = arrayT(stringT("borrowed"));
|
|
138
|
+
const nullableStrvDescriptor = preserveArrayNull(arrayT(stringT("borrowed")));
|
|
139
|
+
const setStrvBoxed = bind(LIB, "g_value_set_boxed", [VALUE_T, strvDescriptor], voidT);
|
|
140
|
+
const getStrvBoxed = bind(LIB, "g_value_get_boxed", [VALUE_T], strvDescriptor);
|
|
141
|
+
const getNullableStrvBoxed = bind(
|
|
142
|
+
LIB,
|
|
143
|
+
"g_value_get_boxed",
|
|
144
|
+
[VALUE_T],
|
|
145
|
+
nullableStrvDescriptor,
|
|
146
|
+
);
|
|
137
147
|
|
|
138
148
|
const strvValueType: ValueType = {
|
|
139
149
|
set: setStrvValue,
|
|
140
|
-
get:
|
|
150
|
+
get: getStrvBoxed,
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
const nullableStrvValueType: ValueType = {
|
|
154
|
+
set: setStrvValue,
|
|
155
|
+
get: getNullableStrvBoxed,
|
|
141
156
|
};
|
|
142
157
|
|
|
143
158
|
const setByteArrayBoxed = bind(LIB, "g_value_set_boxed", [VALUE_T, byteArrayT()], voidT);
|
|
@@ -412,7 +427,7 @@ function setWrappedBoxedValue(value: ExternalObject<Handle>, type: bigint, boxed
|
|
|
412
427
|
|
|
413
428
|
const arrayValueType = (descriptor: ArrayDescriptor): ValueType => {
|
|
414
429
|
if (descriptor.itemDescriptor.kind === "string" && descriptor.arrayKind === "array") {
|
|
415
|
-
return strvValueType;
|
|
430
|
+
return descriptor.preserveNull === true ? nullableStrvValueType : strvValueType;
|
|
416
431
|
}
|
|
417
432
|
|
|
418
433
|
if (descriptor.arrayKind === "gbytearray") {
|
|
@@ -728,6 +743,9 @@ function fromValue(value: ExternalObject<Handle>): unknown {
|
|
|
728
743
|
return get(value);
|
|
729
744
|
}
|
|
730
745
|
|
|
746
|
+
const fromObjectPropertyValue = (value: ExternalObject<Handle>): unknown =>
|
|
747
|
+
getValueType(value) === getStrvType() ? nullableStrvValueType.get(value) : fromValue(value);
|
|
748
|
+
|
|
731
749
|
const objectValueWithFallback = (
|
|
732
750
|
descriptor: ObjectDescriptor,
|
|
733
751
|
value: ExternalObject<Handle>,
|
|
@@ -739,9 +757,25 @@ const objectValueWithFallback = (
|
|
|
739
757
|
return { wrapped: wrapObject(objectValueType.get(value), descriptor.fallbackClass) };
|
|
740
758
|
};
|
|
741
759
|
|
|
760
|
+
const arrayValueGetterForDescriptor = (descriptor: ArrayDescriptor): ValueGetter | undefined => {
|
|
761
|
+
if (descriptor.arrayKind === "gbytearray") {
|
|
762
|
+
return byteArrayValueGetterFor(descriptor.isBytes === true);
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
return descriptor.itemDescriptor.kind === "string" && descriptor.arrayKind === "array"
|
|
766
|
+
? arrayValueType(descriptor).get
|
|
767
|
+
: undefined;
|
|
768
|
+
};
|
|
769
|
+
|
|
770
|
+
const fromArrayValueForDescriptor = (descriptor: ArrayDescriptor, value: ExternalObject<Handle>): unknown => {
|
|
771
|
+
const get = arrayValueGetterForDescriptor(descriptor);
|
|
772
|
+
|
|
773
|
+
return get === undefined ? fromValue(value) : get(value);
|
|
774
|
+
};
|
|
775
|
+
|
|
742
776
|
const fromValueForDescriptor = (descriptor: Descriptor, value: ExternalObject<Handle>): unknown => {
|
|
743
|
-
if (descriptor.kind === "array"
|
|
744
|
-
return
|
|
777
|
+
if (descriptor.kind === "array") {
|
|
778
|
+
return fromArrayValueForDescriptor(descriptor, value);
|
|
745
779
|
}
|
|
746
780
|
|
|
747
781
|
if (descriptor.kind === "object") {
|
|
@@ -815,6 +849,7 @@ export {
|
|
|
815
849
|
tryToValueHandle,
|
|
816
850
|
ValueMarshalError,
|
|
817
851
|
fromValue,
|
|
852
|
+
fromObjectPropertyValue,
|
|
818
853
|
fromValueForDescriptor,
|
|
819
854
|
valueGuardOverrideFor,
|
|
820
855
|
newValueForDescriptor,
|