@gtkx/runtime 1.2.2 → 1.3.0
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 +2 -1
- package/dist/arg.d.ts +6 -1
- package/dist/arg.d.ts.map +1 -1
- package/dist/arg.js +2 -1
- package/dist/arg.js.map +1 -1
- package/dist/closure.d.ts.map +1 -1
- package/dist/closure.js +2 -11
- package/dist/closure.js.map +1 -1
- package/dist/descriptors.d.ts +21 -3
- package/dist/descriptors.d.ts.map +1 -1
- package/dist/descriptors.js +50 -21
- package/dist/descriptors.js.map +1 -1
- package/dist/fn.d.ts +2 -0
- package/dist/fn.d.ts.map +1 -1
- package/dist/fn.js +50 -10
- package/dist/fn.js.map +1 -1
- package/dist/index.d.ts +11 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -4
- package/dist/index.js.map +1 -1
- package/dist/mixin.d.ts +2 -1
- package/dist/mixin.d.ts.map +1 -1
- package/dist/mixin.js +1 -1
- package/dist/mixin.js.map +1 -1
- package/dist/native-value.d.ts +9 -3
- package/dist/native-value.d.ts.map +1 -1
- package/dist/native-value.js +86 -9
- package/dist/native-value.js.map +1 -1
- package/dist/object.d.ts +14 -6
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +21 -10
- package/dist/object.js.map +1 -1
- package/dist/param-spec.d.ts +31 -1
- package/dist/param-spec.d.ts.map +1 -1
- package/dist/param-spec.js +66 -5
- package/dist/param-spec.js.map +1 -1
- package/dist/promisify.d.ts +13 -1
- package/dist/promisify.d.ts.map +1 -1
- package/dist/promisify.js +14 -1
- package/dist/promisify.js.map +1 -1
- package/dist/properties.d.ts +28 -1
- package/dist/properties.d.ts.map +1 -1
- package/dist/properties.js +139 -8
- package/dist/properties.js.map +1 -1
- package/dist/regex.d.ts +25 -0
- package/dist/regex.d.ts.map +1 -0
- package/dist/regex.js +59 -0
- package/dist/regex.js.map +1 -0
- package/dist/register-class.d.ts +154 -11
- package/dist/register-class.d.ts.map +1 -1
- package/dist/register-class.js +157 -19
- package/dist/register-class.js.map +1 -1
- package/dist/registry.d.ts +48 -4
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +147 -3
- package/dist/registry.js.map +1 -1
- package/dist/signal.d.ts +8 -1
- package/dist/signal.d.ts.map +1 -1
- package/dist/signal.js +41 -3
- package/dist/signal.js.map +1 -1
- package/dist/type.d.ts +2 -1
- package/dist/type.d.ts.map +1 -1
- package/dist/type.js +5 -1
- package/dist/type.js.map +1 -1
- package/dist/value.d.ts +48 -4
- package/dist/value.d.ts.map +1 -1
- package/dist/value.js +172 -16
- package/dist/value.js.map +1 -1
- package/dist/variant.d.ts +75 -26
- package/dist/variant.d.ts.map +1 -1
- package/dist/variant.js +44 -29
- package/dist/variant.js.map +1 -1
- package/package.json +4 -4
- package/src/arg.ts +6 -1
- package/src/closure.ts +2 -14
- package/src/descriptors.ts +74 -21
- package/src/fn.ts +73 -17
- package/src/index.ts +31 -4
- package/src/mixin.ts +1 -1
- package/src/native-value.ts +146 -14
- package/src/object.ts +23 -11
- package/src/param-spec.ts +94 -8
- package/src/promisify.ts +27 -1
- package/src/properties.ts +184 -5
- package/src/regex.ts +92 -0
- package/src/register-class.ts +446 -38
- package/src/registry.ts +219 -4
- package/src/signal.ts +77 -0
- package/src/type.ts +7 -0
- package/src/value.ts +268 -14
- package/src/variant.ts +184 -53
package/dist/value.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
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, 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, 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
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { INT32_MAXIMUM, INT32_MINIMUM, INT64_MAXIMUM, INT64_MINIMUM, isStringArray, resolveGtype, UINT64_MAXIMUM, } from "./param-spec.js";
|
|
7
|
+
import { coerceGType, describeValueKind, getHandle, getWrapperClass, wrapFundamentalHandle, wrapHandle, wrapObject, } from "./registry.js";
|
|
8
|
+
import { getByteArrayType, getStrvType, isResolvableDescriptor, resolveBoxedType, resolveDescriptorType, resolveFundamentalType, 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_OBJECT, TYPE_PARAM, TYPE_POINTER, TYPE_STRING, TYPE_UCHAR, TYPE_UINT, TYPE_UINT64, TYPE_ULONG, TYPE_VARIANT, typeFundamental, typeIsA, typeName, } from "./type.js";
|
|
8
9
|
const setBoxedCache = createBindCache();
|
|
9
10
|
const setStaticBoxedCache = createBindCache();
|
|
10
11
|
const dupBoxedCache = createBindCache();
|
|
@@ -13,7 +14,13 @@ const peekPointerCache = createBindCache();
|
|
|
13
14
|
const gValueInit = bind(LIB, "g_value_init", [VALUE_T, biguint64T], voidT);
|
|
14
15
|
const gValueCopy = bind(LIB, "g_value_copy", [VALUE_T, VALUE_T], voidT);
|
|
15
16
|
const booleanValueType = bindValueType("boolean", booleanT);
|
|
16
|
-
const
|
|
17
|
+
const boundTypeValueType = bindValueType("gtype", biguint64T);
|
|
18
|
+
const typeValueType = {
|
|
19
|
+
set: (value, jsValue) => {
|
|
20
|
+
boundTypeValueType.set(value, coerceGType(jsValue));
|
|
21
|
+
},
|
|
22
|
+
get: boundTypeValueType.get,
|
|
23
|
+
};
|
|
17
24
|
const scharValueType = bindValueType("schar", int8T);
|
|
18
25
|
const ucharValueType = bindValueType("uchar", uint8T);
|
|
19
26
|
const intValueType = bindValueType("int", int32T);
|
|
@@ -36,6 +43,10 @@ const strvValueType = {
|
|
|
36
43
|
set: setStrvValue,
|
|
37
44
|
get: bind(LIB, "g_value_get_boxed", [VALUE_T], arrayT(stringT("borrowed"))),
|
|
38
45
|
};
|
|
46
|
+
const setByteArrayBoxed = bind(LIB, "g_value_set_boxed", [VALUE_T, byteArrayT()], voidT);
|
|
47
|
+
const getBoxedPointer = bind(LIB, "g_value_get_boxed", [VALUE_T], uint64T);
|
|
48
|
+
const getBytesBoxed = bind(LIB, "g_value_get_boxed", [VALUE_T], byteArrayT());
|
|
49
|
+
const getByteItemsBoxed = bind(LIB, "g_value_get_boxed", [VALUE_T], arrayT(uint8T, "gbytearray"));
|
|
39
50
|
const PLAIN_VALUE_TYPES = {
|
|
40
51
|
boolean: booleanValueType,
|
|
41
52
|
string: stringValueType,
|
|
@@ -53,6 +64,18 @@ const PLAIN_VALUE_TYPES = {
|
|
|
53
64
|
float64: doubleValueType,
|
|
54
65
|
object: objectValueType,
|
|
55
66
|
};
|
|
67
|
+
const WHOLE_NUMBER_KINDS = new Set([
|
|
68
|
+
"int8",
|
|
69
|
+
"int16",
|
|
70
|
+
"int32",
|
|
71
|
+
"uint8",
|
|
72
|
+
"uint16",
|
|
73
|
+
"uint32",
|
|
74
|
+
"int64",
|
|
75
|
+
"uint64",
|
|
76
|
+
"enum",
|
|
77
|
+
"flags",
|
|
78
|
+
]);
|
|
56
79
|
const PLAIN_VALUE_GETTERS = new Map([
|
|
57
80
|
[TYPE_BOOLEAN, booleanValueType.get],
|
|
58
81
|
[TYPE_CHAR, scharValueType.get],
|
|
@@ -107,6 +130,15 @@ const boxedValueType = (type) => {
|
|
|
107
130
|
const name = getBoxedTypeName(type);
|
|
108
131
|
return { set: setBoxedBind(name), get: dupBoxedBind(name) };
|
|
109
132
|
};
|
|
133
|
+
const byteArrayValueGetterFor = (isBytes) => {
|
|
134
|
+
const get = isBytes ? getBytesBoxed : getByteItemsBoxed;
|
|
135
|
+
return (value) => (getBoxedPointer(value) ? get(value) : null);
|
|
136
|
+
};
|
|
137
|
+
const byteArrayValueType = (descriptor) => ({
|
|
138
|
+
set: setByteArrayValue,
|
|
139
|
+
get: byteArrayValueGetterFor(descriptor.isBytes === true),
|
|
140
|
+
});
|
|
141
|
+
const isByteArraySource = (jsValue) => jsValue instanceof Uint8Array || Array.isArray(jsValue);
|
|
110
142
|
const enumOrFlagsValueType = (type) => typeFundamental(type) === TYPE_FLAGS ? flagsValueType : enumValueType;
|
|
111
143
|
function unsupportedFundamental(type) {
|
|
112
144
|
throw new Error(`Unsupported fundamental type '${typeName(type) ?? String(type)}' for value`);
|
|
@@ -173,26 +205,57 @@ const newBoxedValue = (descriptor, boxed, resolveSetBind) => {
|
|
|
173
205
|
};
|
|
174
206
|
/**
|
|
175
207
|
* Duplicates the boxed value held by a GValue and returns the copy wrapped in the
|
|
176
|
-
* class
|
|
208
|
+
* class its GType resolves to, or null when the GValue holds no boxed type.
|
|
209
|
+
* A `GByteArray` payload is copied into a `Uint8Array` instead of being wrapped.
|
|
177
210
|
*/
|
|
178
211
|
function getBoxedValue(value) {
|
|
179
212
|
const type = getValueType(value);
|
|
180
213
|
if (typeFundamental(type) !== TYPE_BOXED) {
|
|
181
214
|
return null;
|
|
182
215
|
}
|
|
183
|
-
|
|
216
|
+
if (type === getByteArrayType()) {
|
|
217
|
+
return byteArrayValueGetterFor(true)(value);
|
|
218
|
+
}
|
|
184
219
|
const boxed = dupBoxedBind(getBoxedTypeName(type))(value);
|
|
185
|
-
|
|
220
|
+
if (boxed === null) {
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
223
|
+
return wrapHandle(boxed, getWrapperClass(type));
|
|
186
224
|
}
|
|
187
|
-
/**
|
|
225
|
+
/**
|
|
226
|
+
* Stores a boxed object, or null, into a GValue that holds a boxed type. A GValue holding
|
|
227
|
+
* `G_TYPE_VALUE` also takes any other {@link JsValue}, which is boxed into a nested `GObject.Value`
|
|
228
|
+
* of the GType inferred from it, and one holding a `GByteArray` also takes the bytes as a
|
|
229
|
+
* `Uint8Array` or an array of byte values.
|
|
230
|
+
* @param value Handle of an initialized value to write into.
|
|
231
|
+
* @param boxed The boxed instance, bytes, or {@link JsValue} to store.
|
|
232
|
+
* @throws {ValueMarshalError} When the value cannot hold what was passed.
|
|
233
|
+
*/
|
|
188
234
|
function setBoxedValue(value, boxed) {
|
|
189
|
-
const
|
|
190
|
-
|
|
235
|
+
const type = getValueType(value);
|
|
236
|
+
if (type === resolveBoxedType(VALUE_T)) {
|
|
237
|
+
setBoxedBind("GValue")(value, boxed === null ? null : toValueHandle(boxed));
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
if (type === getByteArrayType() && isByteArraySource(boxed)) {
|
|
241
|
+
setByteArrayBoxed(value, boxed);
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
setWrappedBoxedValue(value, type, boxed);
|
|
245
|
+
}
|
|
246
|
+
function setWrappedBoxedValue(value, type, boxed) {
|
|
247
|
+
if (boxed !== null && typeof boxed !== "object") {
|
|
248
|
+
throw new ValueMarshalError(`Cannot marshal ${describeValueKind(boxed)} into a '${getBoxedTypeName(type)}' value`);
|
|
249
|
+
}
|
|
250
|
+
setBoxedBind(getBoxedTypeName(type))(value, boxed === null ? null : getHandle(boxed));
|
|
191
251
|
}
|
|
192
252
|
const arrayValueType = (descriptor) => {
|
|
193
253
|
if (descriptor.itemDescriptor.kind === "string" && descriptor.arrayKind === "array") {
|
|
194
254
|
return strvValueType;
|
|
195
255
|
}
|
|
256
|
+
if (descriptor.arrayKind === "gbytearray") {
|
|
257
|
+
return byteArrayValueType(descriptor);
|
|
258
|
+
}
|
|
196
259
|
throw new Error(`Unsupported array type ${descriptor.arrayKind} of ${descriptor.itemDescriptor.kind}`);
|
|
197
260
|
};
|
|
198
261
|
const resolveValueType = (descriptor) => {
|
|
@@ -232,10 +295,10 @@ const wrappedValueGetter = (fundamental) => {
|
|
|
232
295
|
return (value) => wrapObject(objectValueType.get(value));
|
|
233
296
|
}
|
|
234
297
|
case TYPE_PARAM: {
|
|
235
|
-
return (value) =>
|
|
298
|
+
return (value) => wrapFundamentalHandle(paramValueType.get(value), getWrapperClass(TYPE_PARAM));
|
|
236
299
|
}
|
|
237
300
|
case TYPE_VARIANT: {
|
|
238
|
-
return (value) =>
|
|
301
|
+
return (value) => wrapFundamentalHandle(variantValueType.get(value), getWrapperClass(TYPE_VARIANT));
|
|
239
302
|
}
|
|
240
303
|
case TYPE_BOXED: {
|
|
241
304
|
return getBoxedValue;
|
|
@@ -259,6 +322,9 @@ function setStringValue(value, nativeValue) {
|
|
|
259
322
|
function setStrvValue(value, nativeValue) {
|
|
260
323
|
setStrvBoxed(value, nativeValue ?? null);
|
|
261
324
|
}
|
|
325
|
+
function setByteArrayValue(value, nativeValue) {
|
|
326
|
+
setByteArrayBoxed(value, nativeValue ?? null);
|
|
327
|
+
}
|
|
262
328
|
function setPointerValue(value, nativeValue) {
|
|
263
329
|
if (nativeValue != null) {
|
|
264
330
|
throw new Error("G_TYPE_POINTER non-null values cannot be marshalled from JS");
|
|
@@ -278,7 +344,7 @@ const customFundamentalGetter = (type) => {
|
|
|
278
344
|
if (valueType === undefined) {
|
|
279
345
|
return undefined;
|
|
280
346
|
}
|
|
281
|
-
return (value) =>
|
|
347
|
+
return (value) => wrapFundamentalHandle(valueType.get(value), getWrapperClass(type));
|
|
282
348
|
};
|
|
283
349
|
const customFundamentalSetter = (type) => {
|
|
284
350
|
const valueType = customFundamentalValueType(type);
|
|
@@ -309,12 +375,76 @@ function valueWriterFor(type) {
|
|
|
309
375
|
function intoValue(value, jsValue) {
|
|
310
376
|
valueWriterFor(getValueType(value))(value, jsValue);
|
|
311
377
|
}
|
|
378
|
+
const numberValueGType = (jsValue) => Number.isSafeInteger(jsValue) && jsValue >= INT32_MINIMUM && jsValue <= INT32_MAXIMUM ? TYPE_INT : TYPE_DOUBLE;
|
|
379
|
+
const arrayValueGType = (jsValue) => (isStringArray(jsValue) ? getStrvType() : TYPE_INVALID);
|
|
380
|
+
const wideValueGType = (jsValue) => (jsValue > INT64_MAXIMUM ? TYPE_UINT64 : TYPE_INT64);
|
|
381
|
+
const bigintValueGType = (jsValue) => jsValue < INT64_MINIMUM || jsValue > UINT64_MAXIMUM ? TYPE_INVALID : wideValueGType(jsValue);
|
|
382
|
+
const objectValueGType = (jsValue, wrapperType) => {
|
|
383
|
+
if (jsValue === null) {
|
|
384
|
+
return TYPE_POINTER;
|
|
385
|
+
}
|
|
386
|
+
return Array.isArray(jsValue) ? arrayValueGType(jsValue) : wrapperType;
|
|
387
|
+
};
|
|
388
|
+
function inferValueGType(jsValue, wrapperType) {
|
|
389
|
+
switch (typeof jsValue) {
|
|
390
|
+
case "string": {
|
|
391
|
+
return TYPE_STRING;
|
|
392
|
+
}
|
|
393
|
+
case "boolean": {
|
|
394
|
+
return TYPE_BOOLEAN;
|
|
395
|
+
}
|
|
396
|
+
case "number": {
|
|
397
|
+
return numberValueGType(jsValue);
|
|
398
|
+
}
|
|
399
|
+
case "bigint": {
|
|
400
|
+
return bigintValueGType(jsValue);
|
|
401
|
+
}
|
|
402
|
+
case "object": {
|
|
403
|
+
return objectValueGType(jsValue, wrapperType);
|
|
404
|
+
}
|
|
405
|
+
case "function":
|
|
406
|
+
case "symbol":
|
|
407
|
+
case "undefined": {
|
|
408
|
+
return TYPE_INVALID;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
const marshalFailure = (jsValue) => typeof jsValue === "bigint"
|
|
413
|
+
? `Cannot marshal ${String(jsValue)} into a GObject.Value: outside the range of gint64 and guint64`
|
|
414
|
+
: `Cannot marshal ${describeValueKind(jsValue)} into a GObject.Value`;
|
|
415
|
+
const wrapperGType = (jsValue) => typeof jsValue === "object" && jsValue !== null ? resolveGtype(jsValue) : TYPE_INVALID;
|
|
416
|
+
/**
|
|
417
|
+
* Marshals a value passed where a `GObject.Value` is expected into a value handle: an already-built
|
|
418
|
+
* value yields its own handle, and any other {@link JsValue} is stored in a new one initialized to the
|
|
419
|
+
* GType inferred from it.
|
|
420
|
+
* @param jsValue Value to store, or an already-built `GObject.Value`.
|
|
421
|
+
* @throws {ValueMarshalError} When no GType can be inferred from the value.
|
|
422
|
+
*/
|
|
423
|
+
function toValueHandle(jsValue) {
|
|
424
|
+
const wrapperType = wrapperGType(jsValue);
|
|
425
|
+
if (typeIsA(wrapperType, resolveBoxedType(VALUE_T))) {
|
|
426
|
+
return getHandle(jsValue);
|
|
427
|
+
}
|
|
428
|
+
const type = inferValueGType(jsValue, wrapperType);
|
|
429
|
+
if (type === TYPE_INVALID) {
|
|
430
|
+
throw new ValueMarshalError(marshalFailure(jsValue));
|
|
431
|
+
}
|
|
432
|
+
const value = newValueForType(type);
|
|
433
|
+
intoValue(value, jsValue);
|
|
434
|
+
return value;
|
|
435
|
+
}
|
|
436
|
+
/** Same as {@link toValueHandle}, but passes a null or undefined value through as no value at all. */
|
|
437
|
+
const tryToValueHandle = (jsValue) => jsValue == null ? undefined : toValueHandle(jsValue);
|
|
438
|
+
const isValueDescriptor = (descriptor) => descriptor.kind === "boxed" && descriptor.typeName === "GValue";
|
|
312
439
|
const resolveNativeValue = (descriptor, value) => {
|
|
313
440
|
const isHandleKind = descriptor.kind === "object" || descriptor.kind === "boxed";
|
|
314
441
|
if (!isHandleKind) {
|
|
315
442
|
return toNative(descriptor, value);
|
|
316
443
|
}
|
|
317
|
-
|
|
444
|
+
if (value == null) {
|
|
445
|
+
return null;
|
|
446
|
+
}
|
|
447
|
+
return isValueDescriptor(descriptor) ? toValueHandle(value) : getHandle(value);
|
|
318
448
|
};
|
|
319
449
|
const resolveValueGType = (descriptor, nativeValue) => {
|
|
320
450
|
if (descriptor.kind !== "object") {
|
|
@@ -322,13 +452,23 @@ const resolveValueGType = (descriptor, nativeValue) => {
|
|
|
322
452
|
}
|
|
323
453
|
return nativeValue == null ? TYPE_OBJECT : getType(nativeValue);
|
|
324
454
|
};
|
|
455
|
+
const toWholeNumber = (descriptor, value) => typeof value === "number" && Number.isFinite(value) && WHOLE_NUMBER_KINDS.has(descriptor.kind)
|
|
456
|
+
? Math.trunc(value)
|
|
457
|
+
: value;
|
|
325
458
|
function toValue(descriptor, value) {
|
|
326
|
-
const nativeValue = resolveNativeValue(descriptor, value);
|
|
459
|
+
const nativeValue = resolveNativeValue(descriptor, toWholeNumber(descriptor, value));
|
|
327
460
|
const type = resolveValueGType(descriptor, nativeValue);
|
|
328
461
|
const gValue = newValueForType(type);
|
|
329
462
|
resolveValueType(descriptor).set(gValue, nativeValue);
|
|
330
463
|
return gValue;
|
|
331
464
|
}
|
|
465
|
+
/**
|
|
466
|
+
* Reads what a `GObject.Value` holds as its JavaScript form, wrapping an object, boxed, param, variant,
|
|
467
|
+
* or fundamental payload in the class registered for its GType, and handing back a string, number,
|
|
468
|
+
* `bigint`, boolean, or array of strings for the rest.
|
|
469
|
+
* @param value Handle of an initialized value to read.
|
|
470
|
+
* @throws {Error} When the GType it holds has no JavaScript form, such as a non-null `gpointer`.
|
|
471
|
+
*/
|
|
332
472
|
function fromValue(value) {
|
|
333
473
|
const type = getValueType(value);
|
|
334
474
|
const get = resolveValueGetter(type);
|
|
@@ -337,6 +477,17 @@ function fromValue(value) {
|
|
|
337
477
|
}
|
|
338
478
|
return get(value);
|
|
339
479
|
}
|
|
480
|
+
const fromValueForDescriptor = (descriptor, value) => descriptor.kind === "array" && descriptor.arrayKind === "gbytearray"
|
|
481
|
+
? byteArrayValueGetterFor(descriptor.isBytes === true)(value)
|
|
482
|
+
: fromValue(value);
|
|
483
|
+
const inferredValueGuard = (jsValue) => inferValueGType(jsValue, wrapperGType(jsValue)) !== TYPE_INVALID;
|
|
484
|
+
const byteArrayValueGuard = (jsValue) => jsValue == null || isByteArraySource(jsValue) || typeIsA(resolveGtype(jsValue), getByteArrayType());
|
|
485
|
+
const valueGuardOverrideFor = (valueType) => {
|
|
486
|
+
if (valueType === resolveBoxedType(VALUE_T)) {
|
|
487
|
+
return inferredValueGuard;
|
|
488
|
+
}
|
|
489
|
+
return valueType === getByteArrayType() ? byteArrayValueGuard : undefined;
|
|
490
|
+
};
|
|
340
491
|
function newValueForDescriptor(descriptor) {
|
|
341
492
|
return newValueForType(resolveDescriptorType(descriptor));
|
|
342
493
|
}
|
|
@@ -356,5 +507,10 @@ function outValueForBoxedDescriptor(descriptor, boxed) {
|
|
|
356
507
|
function inoutValueForBoxedDescriptor(descriptor, boxed) {
|
|
357
508
|
return newBoxedValue(descriptor, boxed, setStaticBoxedBind);
|
|
358
509
|
}
|
|
359
|
-
|
|
510
|
+
/** Thrown when a value passed where a `GObject.Value` is expected holds no GType one can be built from. */
|
|
511
|
+
class ValueMarshalError extends TypeError {
|
|
512
|
+
/** Name callers match on when the error is caught as a plain `TypeError`. */
|
|
513
|
+
name = "ValueMarshalError";
|
|
514
|
+
}
|
|
515
|
+
export { getValueType, intoValue, copyValue, getBoxedValue, setBoxedValue, toValue, toValueHandle, tryToValueHandle, ValueMarshalError, fromValue, fromValueForDescriptor, valueGuardOverrideFor, newValueForDescriptor, newValueForType, outValueForDescriptor, outValueForBoxedDescriptor, inoutValueForBoxedDescriptor, valueNarrowerFor, valueWriterFor, };
|
|
360
516
|
//# 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 float32T,\n float64T,\n type FundamentalDescriptor,\n fundamentalLifecycleFor,\n fundamentalT,\n int8T,\n int32T,\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 { getHandle, getWrapperClass, wrapHandle, wrapObject } from \"./registry.js\";\nimport {\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 typeFundamental,\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\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 typeValueType = bindValueType(\"gtype\", biguint64T);\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 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 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 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 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 registered for its GType, or null when the GValue holds no boxed type.\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 const cls = getWrapperClass(type);\n const boxed = dupBoxedBind(getBoxedTypeName(type))(value) as ExternalObject<Handle> | null;\n\n return wrapHandle(boxed, cls);\n}\n\n/** Stores a boxed object, or null, into a GValue that holds a boxed type. */\nfunction setBoxedValue(value: ExternalObject<Handle>, boxed: object | null): void {\n const name = getBoxedTypeName(getValueType(value));\n setBoxedBind(name)(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 throw new Error(`Unsupported array type ${descriptor.arrayKind} of ${descriptor.itemDescriptor.kind}`);\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 enumOrFlagsValueType(resolveType(descriptor.sharedLibrary, descriptor.getTypeFnName));\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 wrapHandle(paramValueType.get(value) as ExternalObject<Handle> | null, getWrapperClass(TYPE_PARAM));\n }\n case TYPE_VARIANT: {\n return (value) =>\n wrapHandle(variantValueType.get(value) as ExternalObject<Handle> | null, getWrapperClass(TYPE_VARIANT));\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 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) => wrapHandle(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 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 return value == null ? null : 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\nfunction toValue(descriptor: Descriptor, value: unknown): ExternalObject<Handle> {\n const nativeValue = resolveNativeValue(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\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\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\nexport {\n getValueType,\n intoValue,\n copyValue,\n getBoxedValue,\n setBoxedValue,\n toValue,\n fromValue,\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 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 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 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 enumOrFlagsValueType(resolveType(descriptor.sharedLibrary, descriptor.getTypeFnName));\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 fromValueForDescriptor = (descriptor: Descriptor, value: ExternalObject<Handle>): unknown =>\n descriptor.kind === \"array\" && descriptor.arrayKind === \"gbytearray\"\n ? byteArrayValueGetterFor(descriptor.isBytes === true)(value)\n : fromValue(value);\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"]}
|