@gtkx/runtime 1.2.2 → 1.4.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 +6 -4
- 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/field.d.ts +42 -0
- package/dist/field.d.ts.map +1 -0
- package/dist/field.js +41 -0
- package/dist/field.js.map +1 -0
- 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 +14 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -5
- 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 +32 -1
- package/dist/param-spec.d.ts.map +1 -1
- package/dist/param-spec.js +67 -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 +48 -5
- package/dist/properties.d.ts.map +1 -1
- package/dist/properties.js +191 -20
- 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 +165 -15
- package/dist/register-class.d.ts.map +1 -1
- package/dist/register-class.js +175 -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 +11 -1
- package/dist/signal.d.ts.map +1 -1
- package/dist/signal.js +66 -6
- package/dist/signal.js.map +1 -1
- package/dist/t.d.ts +11 -0
- package/dist/t.d.ts.map +1 -1
- package/dist/t.js +3 -0
- package/dist/t.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 +5 -5
- package/src/arg.ts +6 -1
- package/src/closure.ts +2 -14
- package/src/descriptors.ts +74 -21
- package/src/field.ts +76 -0
- package/src/fn.ts +73 -17
- package/src/index.ts +46 -5
- package/src/mixin.ts +1 -1
- package/src/native-value.ts +146 -14
- package/src/object.ts +23 -11
- package/src/param-spec.ts +96 -8
- package/src/promisify.ts +27 -1
- package/src/properties.ts +280 -32
- package/src/regex.ts +92 -0
- package/src/register-class.ts +485 -42
- package/src/registry.ts +219 -4
- package/src/signal.ts +117 -4
- package/src/t.ts +13 -0
- package/src/type.ts +7 -0
- package/src/value.ts +268 -14
- package/src/variant.ts +184 -53
package/dist/properties.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExternalObject, Handle, RegisterClassProperty } from \"@gtkx/native\";\nimport type { AnyClass } from \"@gtkx/utils\";\nimport { camelCase, kebabCase } from \"@gtkx/utils\";\nimport { bind } from \"./bind.js\";\nimport { biguint64T, stringT, structT, voidT } from \"./descriptors.js\";\nimport { LIB, PARAM_T, VALUE_T } from \"./library.js\";\nimport {\n getParamFlags,\n getParamValueType,\n isParamConstructOnly,\n isParamLaxlyValidated,\n isParamWritable,\n type ValueGuard,\n valueGuardFor,\n wasParamValueModified,\n} from \"./param-spec.js\";\nimport { getHandle, getInterfaceProperties, instanceClassName, type InterfaceProperty } from \"./registry.js\";\nimport { typeName } from \"./type.js\";\nimport {\n fromValue,\n newValueForType,\n type ValueNarrower,\n valueNarrowerFor,\n type ValueWriter,\n valueWriterFor,\n} from \"./value.js\";\n\ntype PropertyCheck = {\n name: string;\n propertyName: string;\n handle: ExternalObject<Handle>;\n flags: number;\n valueType: bigint;\n canHoldValue: ValueGuard;\n narrowValue: ValueNarrower;\n write?: ValueWriter;\n scratch?: ExternalObject<Handle>;\n};\n\ntype PropertyAccessor = PropertyCheck & {\n memberName: string;\n storage: symbol;\n hasGeneratedMember: boolean;\n isInterfaceProperty?: boolean;\n delegate?: InterfaceProperty;\n};\n\n/** A `GObject.ParamSpec` wrapper describing one property's name, type, flags and default. */\ntype PropertySpec = object;\n\ntype PropertyDispatch = {\n accessors: PropertyAccessor[];\n delegates: Map<string, InterfaceProperty>;\n};\n\ntype PropertyDispatchSource = {\n klass: AnyClass;\n properties: Record<string, PropertySpec>;\n adoptedTypes: bigint[];\n};\n\ntype ConstructProperty = {\n name: string;\n value: ExternalObject<Handle>;\n};\n\ntype NotifyingObject = { notify?: (propertyName: string) => void };\n\nconst FIRST_PROPERTY_ID = 1;\nconst GET_PROPERTY_VFUNC = \"vfuncGetProperty\";\nconst SET_PROPERTY_VFUNC = \"vfuncSetProperty\";\nconst READ_ONLY_REASON = \"the property is read-only\";\nconst CONSTRUCT_ONLY_REASON = \"the property can only be set when the object is constructed\";\nconst CLASS_T = structT(\"borrowed\");\nconst interfaceStorages: Map<string, symbol> = new Map();\nconst paramSpecDefaultValue = bind(LIB, \"g_param_spec_get_default_value\", [PARAM_T], VALUE_T);\nconst paramSpecName = bind(LIB, \"g_param_spec_get_name\", [PARAM_T], stringT(\"borrowed\"));\nconst typeClassRef = bind(LIB, \"g_type_class_ref\", [biguint64T], CLASS_T);\nconst typeClassUnref = bind(LIB, \"g_type_class_unref\", [CLASS_T], voidT);\nconst classFindProperty = bind(LIB, \"g_object_class_find_property\", [CLASS_T, stringT(\"borrowed\")], PARAM_T);\n\nconst getPropertyName = (pspec: PropertySpec): string => paramSpecName(getHandle(pspec)) as string;\nconst underscoreCase = (name: string): string => name.replaceAll(\"-\", \"_\");\nconst canonicalCase = (name: string): string => kebabCase(name).replaceAll(\"_\", \"-\");\nconst accessorNames = (name: string): string[] => [...new Set([name, underscoreCase(name), camelCase(name)])];\nconst typeLabel = (type: bigint): string => typeName(type) ?? String(type);\n\nconst defaultValueFor = (handle: ExternalObject<Handle>): ExternalObject<Handle> =>\n paramSpecDefaultValue(handle) as ExternalObject<Handle>;\n\nconst heldValue = (value: unknown): unknown => value ?? null;\n\nconst holdsReason = (check: PropertyCheck): string =>\n `the property holds values of type '${typeLabel(check.valueType)}'`;\n\nfunction checkFor(handle: ExternalObject<Handle>, name: string): PropertyCheck {\n const valueType = getParamValueType(handle);\n\n return {\n name,\n propertyName: paramSpecName(handle) as string,\n handle,\n flags: getParamFlags(handle),\n valueType,\n canHoldValue: valueGuardFor(valueType),\n narrowValue: valueNarrowerFor(valueType),\n };\n}\n\nfunction findPropertySpec(klass: ExternalObject<Handle>, name: string): ExternalObject<Handle> | null {\n const found = classFindProperty(klass, name) as ExternalObject<Handle> | null;\n\n return found ?? (classFindProperty(klass, canonicalCase(name)) as ExternalObject<Handle> | null);\n}\n\nfunction describeValue(value: unknown): string {\n if (typeof value === \"string\") {\n return JSON.stringify(value);\n }\n\n if (typeof value === \"object\" && value !== null) {\n return instanceClassName(value);\n }\n\n return String(value);\n}\n\nfunction propertyMessage(instance: object, check: PropertyCheck, tail: string): string {\n return `${instanceClassName(instance)}.${check.name}: ${tail}`;\n}\n\nfunction refusalTail(check: PropertyCheck, value: unknown, reason: string): string {\n return `cannot set property '${check.propertyName}' to ${describeValue(value)}; ${reason}`;\n}\n\nfunction serveTail(check: PropertyCheck, value: unknown): string {\n return `cannot serve property '${check.propertyName}' from ${describeValue(value)}; ${holdsReason(check)}`;\n}\n\nfunction assertValueFits(instance: object, check: PropertyCheck, value: unknown): void {\n if (check.canHoldValue(value)) {\n return;\n }\n\n const tail = refusalTail(check, value, holdsReason(check));\n throw new TypeError(propertyMessage(instance, check, tail));\n}\n\nfunction assertValueServes(instance: object, check: PropertyCheck, value: unknown): void {\n if (check.canHoldValue(value)) {\n return;\n }\n\n throw new TypeError(propertyMessage(instance, check, serveTail(check, value)));\n}\n\nfunction assertValueValidates(\n instance: object,\n check: PropertyCheck,\n value: unknown,\n gValue: ExternalObject<Handle>,\n): void {\n if (!wasParamValueModified(check.handle, gValue) || isParamLaxlyValidated(check.flags)) {\n return;\n }\n\n const reason =\n `the value is invalid or out of range for type '${typeLabel(check.valueType)}', ` +\n `and GObject would put ${describeValue(fromValue(gValue))} in its place`;\n\n throw new RangeError(propertyMessage(instance, check, refusalTail(check, value, reason)));\n}\n\nfunction assertWritable(instance: object, check: PropertyCheck, value: unknown): void {\n if (isParamWritable(check.flags)) {\n return;\n }\n\n throw new TypeError(propertyMessage(instance, check, refusalTail(check, value, READ_ONLY_REASON)));\n}\n\nfunction writeHeld(check: PropertyCheck, gValue: ExternalObject<Handle>, value: unknown): void {\n check.write ??= valueWriterFor(check.valueType);\n check.write(gValue, check.narrowValue(value));\n}\n\nfunction fillCheckedValue(\n instance: object,\n check: PropertyCheck,\n gValue: ExternalObject<Handle>,\n value: unknown,\n): void {\n assertValueFits(instance, check, value);\n writeHeld(check, gValue, value);\n assertValueValidates(instance, check, value, gValue);\n}\n\nfunction checkedValueFor(instance: object, check: PropertyCheck, value: unknown): ExternalObject<Handle> {\n const gValue = newValueForType(check.valueType);\n fillCheckedValue(instance, check, gValue, value);\n\n return gValue;\n}\n\nfunction assertValueAccepted(instance: object, check: PropertyCheck, value: unknown): void {\n check.scratch ??= newValueForType(check.valueType);\n fillCheckedValue(instance, check, check.scratch, value);\n}\n\nfunction constructValueFor(wrapper: object, check: PropertyCheck, value: unknown): ConstructProperty {\n assertWritable(wrapper, check, value);\n\n return { name: check.propertyName, value: checkedValueFor(wrapper, check, value) };\n}\n\nfunction constructPropertyFor(\n gtype: bigint,\n name: string,\n value: unknown,\n wrapper: object,\n): ConstructProperty | undefined {\n const klass = typeClassRef(gtype) as ExternalObject<Handle>;\n\n try {\n const pspec = findPropertySpec(klass, name);\n\n return pspec === null ? undefined : constructValueFor(wrapper, checkFor(pspec, name), value);\n } finally {\n typeClassUnref(klass);\n }\n}\n\nfunction readStored(instance: Record<symbol, unknown>, accessor: PropertyAccessor): unknown {\n if (!Object.hasOwn(instance, accessor.storage)) {\n instance[accessor.storage] = fromValue(defaultValueFor(accessor.handle));\n }\n\n return instance[accessor.storage];\n}\n\nfunction storeValue(instance: Record<symbol, unknown>, accessor: PropertyAccessor, value: unknown): void {\n instance[accessor.storage] = heldValue(value);\n}\n\nfunction writeStored(instance: Record<symbol, unknown>, accessor: PropertyAccessor, value: unknown): void {\n if (readStored(instance, accessor) === heldValue(value)) {\n return;\n }\n\n storeValue(instance, accessor, value);\n (instance as NotifyingObject).notify?.(accessor.propertyName);\n}\n\nfunction writeProperty(instance: object, accessor: PropertyAccessor, value: unknown): void {\n const stored = instance as Record<symbol, unknown>;\n\n if (readStored(stored, accessor) === heldValue(value)) {\n return;\n }\n\n assertValueAccepted(instance, accessor, value);\n writeStored(stored, accessor, accessor.narrowValue(value));\n}\n\nfunction storedGetter(accessor: PropertyAccessor): (this: object) => unknown {\n return function get(this: object) {\n return readStored(this as Record<symbol, unknown>, accessor);\n };\n}\n\nfunction memberGetter(accessor: PropertyAccessor): (this: object) => unknown {\n return function get(this: object) {\n return (this as Record<string, unknown>)[accessor.memberName];\n };\n}\n\nfunction memberSetter(accessor: PropertyAccessor): (this: object, value: unknown) => void {\n return function set(this: object, value: unknown) {\n (this as Record<string, unknown>)[accessor.memberName] = value;\n };\n}\n\nfunction refusalFor(accessor: PropertyAccessor, reason: string): (this: object, value: unknown) => void {\n return function set(this: object, value: unknown) {\n throw new TypeError(propertyMessage(this, accessor, refusalTail(accessor, value, reason)));\n };\n}\n\nfunction checkedSetter(accessor: PropertyAccessor): (this: object, value: unknown) => void {\n if (!isParamWritable(accessor.flags)) {\n return refusalFor(accessor, READ_ONLY_REASON);\n }\n\n if (isParamConstructOnly(accessor.flags)) {\n return refusalFor(accessor, CONSTRUCT_ONLY_REASON);\n }\n\n return function set(this: object, value: unknown) {\n writeProperty(this, accessor, value);\n };\n}\n\nfunction hasOwnMember(prototype: object, alias: string): boolean {\n return Object.getOwnPropertyDescriptor(prototype, alias) !== undefined;\n}\n\nfunction defineAccessor(prototype: object, descriptor: PropertyDescriptor, alias: string): void {\n if (hasOwnMember(prototype, alias)) {\n return;\n }\n\n Object.defineProperty(prototype, alias, descriptor);\n}\n\nfunction installAccessors(klass: AnyClass, accessor: PropertyAccessor): void {\n const prototype = (klass as { prototype: object }).prototype;\n accessor.hasGeneratedMember = !hasOwnMember(prototype, accessor.memberName);\n\n const descriptor: PropertyDescriptor = {\n configurable: true,\n enumerable: true,\n get: accessor.hasGeneratedMember ? storedGetter(accessor) : memberGetter(accessor),\n set: accessor.hasGeneratedMember ? checkedSetter(accessor) : memberSetter(accessor),\n };\n\n for (const alias of accessorNames(accessor.name)) {\n defineAccessor(prototype, descriptor, alias);\n }\n}\n\nfunction storageFor(propertyName: string): symbol {\n const existing = interfaceStorages.get(propertyName);\n\n if (existing !== undefined) {\n return existing;\n }\n\n const created = Symbol(`gtkx:property:${propertyName}`);\n interfaceStorages.set(propertyName, created);\n\n return created;\n}\n\nfunction interfaceAccessorFor(dispatch: PropertyDispatch, pspec: PropertySpec): PropertyAccessor {\n const handle = getHandle(pspec);\n const propertyName = paramSpecName(handle) as string;\n const delegate = dispatch.delegates.get(propertyName);\n\n const accessor: PropertyAccessor = {\n ...checkFor(handle, propertyName),\n memberName: camelCase(propertyName),\n storage: storageFor(propertyName),\n hasGeneratedMember: false,\n isInterfaceProperty: true,\n };\n\n if (delegate !== undefined) {\n accessor.delegate = delegate;\n }\n\n return accessor;\n}\n\nfunction resolveAccessor(\n dispatch: PropertyDispatch,\n propertyId: number,\n pspec: PropertySpec,\n): PropertyAccessor {\n const accessor = dispatch.accessors[propertyId - FIRST_PROPERTY_ID];\n\n if (accessor !== undefined) {\n return accessor;\n }\n\n const created = interfaceAccessorFor(dispatch, pspec);\n dispatch.accessors[propertyId - FIRST_PROPERTY_ID] = created;\n\n return created;\n}\n\nfunction callMember(instance: object, member: string, args: unknown[]): unknown {\n const fn: unknown = (instance as Record<string, unknown>)[member];\n\n if (typeof fn !== \"function\") {\n throw new TypeError(`registerClass: ${instanceClassName(instance)} has no '${member}' member`);\n }\n\n return (fn as (...values: unknown[]) => unknown).apply(instance, args);\n}\n\nfunction backingMemberFor(instance: object, accessor: PropertyAccessor): string | undefined {\n if (accessor.hasGeneratedMember && !Object.hasOwn(instance, accessor.memberName)) {\n return undefined;\n }\n\n return accessor.memberName;\n}\n\nfunction readCurrent(instance: object, accessor: PropertyAccessor): unknown {\n const getter = accessor.delegate?.getter;\n\n if (getter !== undefined) {\n return callMember(instance, getter, []);\n }\n\n if (accessor.isInterfaceProperty === true) {\n return readStored(instance as Record<symbol, unknown>, accessor);\n }\n\n const member = backingMemberFor(instance, accessor);\n\n return member === undefined\n ? readStored(instance as Record<symbol, unknown>, accessor)\n : (instance as Record<string, unknown>)[member];\n}\n\nfunction writeCurrent(instance: object, accessor: PropertyAccessor, value: unknown): void {\n const setter = accessor.delegate?.setter;\n\n if (setter !== undefined) {\n callMember(instance, setter, [value]);\n\n return;\n }\n\n if (accessor.isInterfaceProperty === true) {\n writeStored(instance as Record<symbol, unknown>, accessor, value);\n\n return;\n }\n\n const member = backingMemberFor(instance, accessor);\n\n if (member === undefined) {\n storeValue(instance as Record<symbol, unknown>, accessor, value);\n\n return;\n }\n\n (instance as Record<string, unknown>)[member] = value;\n}\n\nfunction makeGetProperty(dispatch: PropertyDispatch) {\n return function getProperty(this: object, propertyId: number, value: object, pspec: PropertySpec): void {\n const accessor = resolveAccessor(dispatch, propertyId, pspec);\n const current = readCurrent(this, accessor);\n assertValueServes(this, accessor, current);\n writeHeld(accessor, getHandle(value), current);\n };\n}\n\nfunction makeSetProperty(dispatch: PropertyDispatch) {\n return function setProperty(this: object, propertyId: number, value: object, pspec: PropertySpec): void {\n const accessor = resolveAccessor(dispatch, propertyId, pspec);\n writeCurrent(this, accessor, fromValue(getHandle(value)));\n };\n}\n\nfunction assertCanonicalName(klass: AnyClass, name: string, propertyName: string): void {\n const canonical = canonicalCase(name);\n\n if (propertyName === canonical) {\n return;\n }\n\n throw new TypeError(\n `registerClass: ${klass.name} keys the property '${name}' to a GObject.ParamSpec named ` +\n `'${propertyName}', which is the name GObject notifies under; name the ParamSpec '${canonical}'`,\n );\n}\n\nfunction assertCanonicalNames(klass: AnyClass, properties: Record<string, PropertySpec>): void {\n for (const [name, pspec] of Object.entries(properties)) {\n assertCanonicalName(klass, name, getPropertyName(pspec));\n }\n}\n\nfunction buildAccessor(klass: AnyClass, name: string, pspec: PropertySpec): PropertyAccessor {\n const accessor: PropertyAccessor = {\n ...checkFor(getHandle(pspec), name),\n memberName: camelCase(name),\n storage: Symbol(`gtkx:property:${name}`),\n hasGeneratedMember: false,\n };\n\n installAccessors(klass, accessor);\n\n return accessor;\n}\n\nfunction buildAccessors(source: PropertyDispatchSource): PropertyAccessor[] {\n const { klass, properties } = source;\n assertCanonicalNames(klass, properties);\n\n return Object.entries(properties).map(([name, pspec]) => buildAccessor(klass, name, pspec));\n}\n\nfunction addInterfaceDelegates(delegates: Map<string, InterfaceProperty>, gtype: bigint): void {\n const properties = getInterfaceProperties(gtype) ?? {};\n\n for (const [name, delegate] of Object.entries(properties)) {\n if (!delegates.has(name)) {\n delegates.set(name, delegate);\n }\n }\n}\n\nfunction interfaceDelegatesFor(adoptedTypes: bigint[]): Map<string, InterfaceProperty> {\n const delegates: Map<string, InterfaceProperty> = new Map();\n\n for (const gtype of adoptedTypes) {\n addInterfaceDelegates(delegates, gtype);\n }\n\n return delegates;\n}\n\nfunction buildPropertyDispatch(source: PropertyDispatchSource): PropertyDispatch {\n return {\n accessors: buildAccessors(source),\n delegates: interfaceDelegatesFor(source.adoptedTypes),\n };\n}\n\nfunction toNativeProperties(properties: Record<string, PropertySpec>): RegisterClassProperty[] {\n return Object.values(properties).map((pspec, index) => ({\n id: index + FIRST_PROPERTY_ID,\n pspec: getHandle(pspec),\n }));\n}\n\nexport {\n buildPropertyDispatch,\n constructPropertyFor,\n GET_PROPERTY_VFUNC,\n makeGetProperty,\n makeSetProperty,\n SET_PROPERTY_VFUNC,\n toNativeProperties,\n type ConstructProperty,\n type PropertyDispatch,\n type PropertySpec,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACjH,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EACH,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,eAAe,EACf,eAAe,EAEf,aAAa,EACb,qBAAqB,EACrB,mBAAmB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,YAAY,EACZ,SAAS,EACT,eAAe,EACf,sBAAsB,EACtB,iBAAiB,GAEpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1G,OAAO,EACH,SAAS,EACT,eAAe,EACf,qBAAqB,EAErB,gBAAgB,EAEhB,cAAc,GACjB,MAAM,YAAY,CAAC;AAgDpB,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AAC9C,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AAC9C,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AACrD,MAAM,qBAAqB,GAAG,6DAA6D,CAAC;AAC5F,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACpC,MAAM,sBAAsB,GAAG,iCAAiC,CAAC;AACjE,MAAM,cAAc,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAE5D,MAAM,gBAAgB,GAAG,YAAY,CAAC,GAAG,EAAE,uBAAuB,EAAE,oBAAoB,EAAE;IACtF,SAAS,EAAE,UAAU;IACrB,QAAQ,EAAE,QAAQ;CACrB,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAwB,IAAI,GAAG,EAAE,CAAC;AACzD,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,EAAE,gCAAgC,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9F,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,uBAAuB,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACzF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,kBAAkB,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1E,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;AACzE,MAAM,cAAc,GAAmD,IAAI,GAAG,EAAE,CAAC;AACjF,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,8BAA8B,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAE7G,MAAM,mBAAmB,GAAG,IAAI,CAC5B,GAAG,EACH,gCAAgC,EAChC,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EACxB,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAClC,CAAC;AAEF,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,8BAA8B,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7F,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,EAAE,gCAAgC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;AAC5F,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,EAAE,kCAAkC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrH,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,uBAAuB,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAElH,MAAM,eAAe,GAAG,CAAC,KAAmB,EAAU,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAW,CAAC;AACnG,MAAM,cAAc,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3E,MAAM,aAAa,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrF,MAAM,aAAa,GAAG,CAAC,IAAY,EAAY,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9G,MAAM,SAAS,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;AAE3E,MAAM,eAAe,GAAG,CAAC,MAA8B,EAA0B,EAAE,CAC/E,qBAAqB,CAAC,MAAM,CAA2B,CAAC;AAE5D,MAAM,SAAS,GAAG,CAAC,KAAc,EAAW,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC;AAE7D,MAAM,WAAW,GAAG,CAAC,KAAoB,EAAU,EAAE,CACjD,sCAAsC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;AAExE,SAAS,QAAQ,CAAC,MAA8B,EAAE,IAAY;IAC1D,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE5C,OAAO;QACH,IAAI;QACJ,YAAY,EAAE,aAAa,CAAC,MAAM,CAAW;QAC7C,MAAM;QACN,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC;QAC5B,SAAS;QACT,YAAY,EAAE,qBAAqB,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC;QAC1E,WAAW,EAAE,gBAAgB,CAAC,SAAS,CAAC;KAC3C,CAAC;AACN,CAAC;AAED,SAAS,aAAa,CAAC,KAA6B;IAChD,MAAM,KAAK,GAAwC,IAAI,GAAG,EAAE,CAAC;IAC7D,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAE9B,KAAK,MAAM,KAAK,IAAI,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAA6B,EAAE,CAAC;QACnF,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAW,CAAC,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA6B,EAAE,IAAY;IACjE,MAAM,KAAK,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;QACzC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAkC,CAAC;IAEpF,OAAO,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;AAC9E,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,MAAyB,EAAE,KAAa,EAAU,EAAE,CACrE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAErF,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAE,IAAY,EAAiC,EAAE;IACrF,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAA2B,CAAC;IAEpE,IAAI,CAAC;QACD,OAAO,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAkC,CAAC;IAChF,CAAC;YAAS,CAAC;QACP,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,IAAY,EAAiC,EAAE;IACjF,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAA2B,CAAC;IAE5D,IAAI,CAAC;QACD,OAAO,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAkC,CAAC;IAC3E,CAAC;YAAS,CAAC;QACP,cAAc,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,MAAyB,EAAE,IAAY,EAA0B,EAAE;IACvF,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAEnD,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,SAAS,CACf,uBAAuB,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,yDAAyD,CAC7G,CAAC;IACN,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAExF,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,SAAS,CAAC,4BAA4B,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,4BAA4B,IAAI,GAAG,CAAC,CAAC;IACnH,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,MAAyB,EAA0B,EAAE,CAC7F,oBAAoB,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAA2B,CAAC;AAEvF,SAAS,aAAa,CAAC,KAAc;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB,EAAE,KAAoB,EAAE,IAAY;IACzE,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;AACnE,CAAC;AAED,SAAS,WAAW,CAAC,KAAoB,EAAE,KAAc,EAAE,MAAc;IACrE,OAAO,wBAAwB,KAAK,CAAC,YAAY,QAAQ,aAAa,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;AAC/F,CAAC;AAED,SAAS,SAAS,CAAC,KAAoB,EAAE,KAAc;IACnD,OAAO,0BAA0B,KAAK,CAAC,YAAY,UAAU,aAAa,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;AAC/G,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB,EAAE,KAAoB,EAAE,KAAc;IAC3E,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;IACX,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3D,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB,EAAE,KAAoB,EAAE,KAAc;IAC7E,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;IACX,CAAC;IAED,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,oBAAoB,CACzB,QAAgB,EAChB,KAAoB,EACpB,KAAc,EACd,MAA8B;IAE9B,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACrF,OAAO;IACX,CAAC;IAED,MAAM,MAAM,GACR,kDAAkD,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK;QACjF,yBAAyB,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC;IAE7E,MAAM,IAAI,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,KAAoB,EAAE,KAAc;IAC1E,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO;IACX,CAAC;IAED,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACvG,CAAC;AAED,SAAS,SAAS,CAAC,KAAoB,EAAE,MAA8B,EAAE,KAAc;IACnF,KAAK,CAAC,KAAK,KAAK,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAChD,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,gBAAgB,CACrB,QAAgB,EAChB,KAAoB,EACpB,MAA8B,EAC9B,KAAc;IAEd,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACxC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,oBAAoB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB,EAAE,KAAoB,EAAE,KAAc;IAC3E,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAChD,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAEjD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB,EAAE,KAAoB,EAAE,KAAc;IAC/E,KAAK,CAAC,OAAO,KAAK,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACnD,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe,EAAE,KAAoB,EAAE,KAAc;IAC5E,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAEtC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;AACvF,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,KAAa,EAAE,YAAoB;IAC3D,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAA2B,CAAC;IAE5D,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAEpD,OAAO,KAAK,KAAK,IAAI,IAAI,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;YAAS,CAAC;QACP,cAAc,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa,EAAE,IAAY;IACpD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAA2B,CAAC;IAE5D,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE5C,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;YAAS,CAAC;QACP,cAAc,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,IAAY;IACjD,IAAI,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACnB,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAE7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,KAAoB,EAAE,KAAa;IACxD,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAExE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,eAAe,CAAC,KAAoB,EAAE,MAAc;IACzD,KAAK,CAAC,OAAO,KAAK,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEnD,IAAI,CAAC;QACD,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,OAAO,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,SAAS,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9G,CAAC;AAED,SAAS,YAAY,CAAC,KAAoB,EAAE,KAAa;IACrD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAE7C,OAAO,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/E,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa,EAAE,YAAoB,EAAE,KAAc;IAC5E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAEpD,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,oBAAoB,CAAC,GAAW,EAAE,YAAoB,EAAE,KAAc;IAC3E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAEnC,OAAO,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,oBAAoB,CACzB,KAAa,EACb,IAAY,EACZ,KAAc,EACd,OAAe;IAEf,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAA2B,CAAC;IAE5D,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE5C,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACjG,CAAC;YAAS,CAAC;QACP,cAAc,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,QAAiC,EAAE,QAA0B;IAC7E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,UAAU,CAAC,QAAiC,EAAE,QAA0B,EAAE,KAAc;IAC7F,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,WAAW,CAAC,QAAiC,EAAE,QAA0B,EAAE,KAAc;IAC9F,IAAI,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO;IACX,CAAC;IAED,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACrC,QAA4B,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB,EAAE,QAA0B,EAAE,KAAc;IAC/E,MAAM,MAAM,GAAG,QAAmC,CAAC;IAEnD,IAAI,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO;IACX,CAAC;IAED,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/C,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,YAAY,CAAC,QAA0B;IAC5C,OAAO,SAAS,GAAG;QACf,OAAO,UAAU,CAAC,IAA+B,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC,CAAC;AACN,CAAC;AAED,SAAS,YAAY,CAAC,QAA0B;IAC5C,OAAO,SAAS,GAAG;QACf,OAAQ,IAAgC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC,CAAC;AACN,CAAC;AAED,SAAS,YAAY,CAAC,QAA0B;IAC5C,OAAO,SAAS,GAAG,CAAe,KAAc;QAC3C,IAAgC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;IACnE,CAAC,CAAC;AACN,CAAC;AAED,SAAS,UAAU,CAAC,QAA0B,EAAE,MAAc;IAC1D,OAAO,SAAS,GAAG,CAAe,KAAc;QAC5C,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC,CAAC;AACN,CAAC;AAED,SAAS,aAAa,CAAC,QAA0B;IAC7C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,UAAU,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,SAAS,GAAG,CAAe,KAAc;QAC5C,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB,EAAE,KAAa;IAClD,OAAO,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,SAAS,CAAC;AAC3E,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,UAA8B,EAAE,KAAa;IACpF,IAAI,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO;IACX,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe,EAAE,QAA0B;IACjE,MAAM,SAAS,GAAI,KAA+B,CAAC,SAAS,CAAC;IAC7D,QAAQ,CAAC,kBAAkB,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE5E,MAAM,UAAU,GAAuB;QACnC,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,GAAG,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC;QAClF,GAAG,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC;KACtF,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,YAAoB;IACpC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAErD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,YAAY,EAAE,CAAC,CAAC;IACxD,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAE7C,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAS,oBAAoB,CAAC,QAA0B,EAAE,KAAmB;IACzE,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAW,CAAC;IACrD,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAEtD,MAAM,QAAQ,GAAsB;QAChC,GAAG,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;QACjC,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC;QACjC,mBAAmB,EAAE,IAAI;KAC5B,CAAC;IAEF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACjC,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,SAAS,eAAe,CACpB,QAA0B,EAC1B,UAAkB,EAClB,KAAmB;IAEnB,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,iBAAiB,CAAC,CAAC;IAEpE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACtD,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,iBAAiB,CAAC,GAAG,OAAO,CAAC;IAE7D,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB,EAAE,MAAc,EAAE,IAAe;IACjE,MAAM,EAAE,GAAa,QAAoC,CAAC,MAAM,CAAC,CAAC;IAElE,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,SAAS,CAAC,kBAAkB,iBAAiB,CAAC,QAAQ,CAAC,YAAY,MAAM,UAAU,CAAC,CAAC;IACnG,CAAC;IAED,OAAQ,EAAwC,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB,EAAE,QAA0B;IAClE,IAAI,QAAQ,CAAC,kBAAkB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/E,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,QAAQ,CAAC,UAAU,CAAC;AAC/B,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,QAA0B;IAC7D,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAEzC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,QAAQ,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;QACxC,OAAO,UAAU,CAAC,QAAmC,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEpD,OAAO,MAAM,KAAK,SAAS;QACvB,CAAC,CAAC,UAAU,CAAC,QAAmC,EAAE,QAAQ,CAAC;QAC3D,CAAC,CAAE,QAAoC,CAAC,MAAM,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,YAAY,CAAC,QAAiC,EAAE,QAA0B,EAAE,KAAc;IAC/F,IAAI,yBAAyB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACJ,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB,EAAE,QAA0B,EAAE,KAAc;IAC9E,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAEzC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAEtC,OAAO;IACX,CAAC;IAED,IAAI,QAAQ,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;QACxC,WAAW,CAAC,QAAmC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAElE,OAAO;IACX,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEpD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,YAAY,CAAC,QAAmC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEnE,OAAO;IACX,CAAC;IAEA,QAAoC,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AAC1D,CAAC;AAED,SAAS,eAAe,CAAC,QAA0B;IAC/C,OAAO,SAAS,WAAW,CAAe,UAAkB,EAAE,KAAa,EAAE,KAAmB;QAC5F,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC5C,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3C,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC,CAAC;AACN,CAAC;AAED,SAAS,eAAe,CAAC,QAA0B;IAC/C,OAAO,SAAS,WAAW,CAAe,UAAkB,EAAE,KAAa,EAAE,KAAmB;QAC5F,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAC9D,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC;AACN,CAAC;AAED,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,YAAoB,EAAW,EAAE,CACpE,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,iBAAiB,CAAC,YAAY,CAAC,KAAK,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAE7G,SAAS,mBAAmB,CAAC,KAAe,EAAE,IAAY,EAAE,YAAoB;IAC5E,IAAI,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC;QACtC,OAAO;IACX,CAAC;IAED,MAAM,IAAI,SAAS,CACf,kBAAkB,KAAK,CAAC,IAAI,uBAAuB,IAAI,iCAAiC;QACxF,IAAI,YAAY,oEAAoE,aAAa,CAAC,IAAI,CAAC,GAAG,CAC7G,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAe,EAAE,UAAwC;IACnF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,KAAe,EAAE,IAAY,EAAE,KAAmB;IACrE,MAAM,QAAQ,GAAqB;QAC/B,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;QACnC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC;QACxC,kBAAkB,EAAE,KAAK;KAC5B,CAAC;IAEF,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAElC,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,SAAS,cAAc,CAAC,MAA8B;IAClD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACrC,oBAAoB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAExC,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAyC,EAAE,KAAa;IACnF,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAEvD,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,YAAsB;IACjD,MAAM,SAAS,GAAmC,IAAI,GAAG,EAAE,CAAC;IAE5D,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QAC/B,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAe,EAAE,SAA6B;IACvE,MAAM,KAAK,GAAG,KAAK,CAAC,SAAyC,CAAC;IAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAuC,CAAC;IAC9E,MAAM,GAAG,GAA2B,EAAE,CAAC;IAEvC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,SAAS,EAAE,GAAG,GAAG,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AACzG,CAAC;AAED,SAAS,qBAAqB,CAAC,MAA8B;IACzD,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE5C,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,qBAAqB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;AAC/F,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAAC,MAAc,EAAE,QAAgB;IAC7D,MAAM,QAAQ,GAAI,MAAuC,CAAC,cAAc,CAE3D,CAAC;IAEd,OAAO,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAwC;IAChE,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACpD,EAAE,EAAE,KAAK,GAAG,iBAAiB;QAC7B,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;KAC1B,CAAC,CAAC,CAAC;AACR,CAAC;AAED,OAAO,EACH,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,GAIrB,CAAC","sourcesContent":["import type { ExternalObject, Handle, RegisterClassProperty } from \"@gtkx/native\";\nimport type { AnyClass } from \"@gtkx/utils\";\nimport { camelCase, kebabCase, toCamelIdentifier } from \"@gtkx/utils\";\nimport { bind } from \"./bind.js\";\nimport { biguint64T, fundamentalT, refT, sizedArrayT, stringT, structT, uint32T, voidT } from \"./descriptors.js\";\nimport { LIB, PARAM_T, VALUE_T } from \"./library.js\";\nimport {\n getParamFlags,\n getParamValueType,\n isParamConstructOnly,\n isParamExplicitlyNotified,\n isParamLaxlyValidated,\n isParamReadable,\n isParamWritable,\n type ValueGuard,\n valueGuardFor,\n wasParamValueModified,\n WHOLE_NUMBER_RANGES,\n} from \"./param-spec.js\";\nimport {\n getClassType,\n getHandle,\n getInstanceType,\n getInterfaceProperties,\n instanceClassName,\n type InterfaceProperty,\n} from \"./registry.js\";\nimport { TYPE_INTERFACE, TYPE_INVALID, TYPE_OBJECT, typeFundamental, typeIsA, typeName } from \"./type.js\";\nimport {\n fromValue,\n newValueForType,\n valueGuardOverrideFor,\n type ValueNarrower,\n valueNarrowerFor,\n type ValueWriter,\n valueWriterFor,\n} from \"./value.js\";\n\ntype PropertyCheck = {\n name: string;\n propertyName: string;\n handle: ExternalObject<Handle>;\n flags: number;\n valueType: bigint;\n canHoldValue: ValueGuard;\n narrowValue: ValueNarrower;\n write?: ValueWriter;\n scratch?: ExternalObject<Handle>;\n};\n\ntype AccessorBase = PropertyCheck & {\n storage: symbol;\n delegate?: InterfaceProperty;\n};\n\ntype DeclaredAccessor = AccessorBase & {\n isInterfaceProperty?: false;\n memberName: string;\n hasGeneratedMember: boolean;\n};\n\ntype InterfaceAccessor = AccessorBase & { isInterfaceProperty: true };\ntype PropertyAccessor = DeclaredAccessor | InterfaceAccessor;\n/** A `GObject.ParamSpec` wrapper describing one property's name, type, flags and default. */\ntype PropertySpec = object;\n\ntype PropertyDispatch = {\n accessors: PropertyAccessor[];\n delegates: Map<string, InterfaceProperty>;\n};\n\ntype PropertyDispatchSource = {\n klass: AnyClass;\n properties: Record<string, PropertySpec>;\n adoptedTypes: bigint[];\n};\n\ntype ConstructProperty = {\n name: string;\n value: ExternalObject<Handle>;\n};\n\ntype NotifyingObject = { notify?: (propertyName: string) => void };\n\nconst FIRST_PROPERTY_ID = 1;\nconst GET_PROPERTY_VFUNC = \"vfuncGetProperty\";\nconst SET_PROPERTY_VFUNC = \"vfuncSetProperty\";\nconst READ_ONLY_REASON = \"the property is read-only\";\nconst CONSTRUCT_ONLY_REASON = \"the property can only be set when the object is constructed\";\nconst CLASS_T = structT(\"borrowed\");\nconst CANONICAL_NAME_PATTERN = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;\nconst DECLARED_NAMES = Symbol(\"gtkx:declaredPropertyNames\");\n\nconst OVERRIDE_PARAM_T = fundamentalT(LIB, \"g_param_spec_ref_sink\", \"g_param_spec_unref\", {\n ownership: \"borrowed\",\n typeName: \"GParam\",\n});\n\nconst interfaceStorages: Map<string, symbol> = new Map();\nconst paramSpecDefaultValue = bind(LIB, \"g_param_spec_get_default_value\", [PARAM_T], VALUE_T);\nconst paramSpecName = bind(LIB, \"g_param_spec_get_name\", [PARAM_T], stringT(\"borrowed\"));\nconst typeClassRef = bind(LIB, \"g_type_class_ref\", [biguint64T], CLASS_T);\nconst typeClassUnref = bind(LIB, \"g_type_class_unref\", [CLASS_T], voidT);\nconst coercionChecks: Map<bigint, Map<string, PropertyCheck | null>> = new Map();\nconst classFindProperty = bind(LIB, \"g_object_class_find_property\", [CLASS_T, stringT(\"borrowed\")], PARAM_T);\n\nconst classListProperties = bind(\n LIB,\n \"g_object_class_list_properties\",\n [CLASS_T, refT(uint32T)],\n sizedArrayT(PARAM_T, 1, \"full\"),\n);\n\nconst defaultInterfaceRef = bind(LIB, \"g_type_default_interface_ref\", [biguint64T], CLASS_T);\nconst defaultInterfaceUnref = bind(LIB, \"g_type_default_interface_unref\", [CLASS_T], voidT);\nconst interfaceFindProperty = bind(LIB, \"g_object_interface_find_property\", [CLASS_T, stringT(\"borrowed\")], PARAM_T);\nconst paramSpecOverrideNew = bind(LIB, \"g_param_spec_override\", [stringT(\"borrowed\"), PARAM_T], OVERRIDE_PARAM_T);\n\nconst getPropertyName = (pspec: PropertySpec): string => paramSpecName(getHandle(pspec)) as string;\nconst underscoreCase = (name: string): string => name.replaceAll(\"-\", \"_\");\nconst canonicalCase = (name: string): string => kebabCase(name).replaceAll(\"_\", \"-\");\nconst accessorNames = (name: string): string[] => [...new Set([name, underscoreCase(name), camelCase(name)])];\nconst typeLabel = (type: bigint): string => typeName(type) ?? String(type);\n\nconst defaultValueFor = (handle: ExternalObject<Handle>): ExternalObject<Handle> =>\n paramSpecDefaultValue(handle) as ExternalObject<Handle>;\n\nconst heldValue = (value: unknown): unknown => value ?? null;\n\nconst holdsReason = (check: PropertyCheck): string =>\n `the property holds values of type '${typeLabel(check.valueType)}'`;\n\nfunction checkFor(handle: ExternalObject<Handle>, name: string): PropertyCheck {\n const valueType = getParamValueType(handle);\n\n return {\n name,\n propertyName: paramSpecName(handle) as string,\n handle,\n flags: getParamFlags(handle),\n valueType,\n canHoldValue: valueGuardOverrideFor(valueType) ?? valueGuardFor(valueType),\n narrowValue: valueNarrowerFor(valueType),\n };\n}\n\nfunction accessorSpecs(klass: ExternalObject<Handle>): Map<string, ExternalObject<Handle>> {\n const specs: Map<string, ExternalObject<Handle>> = new Map();\n const countRef = { value: 0 };\n\n for (const pspec of classListProperties(klass, countRef) as ExternalObject<Handle>[]) {\n specs.set(toCamelIdentifier(paramSpecName(pspec) as string), pspec);\n }\n\n return specs;\n}\n\nfunction findPropertySpec(klass: ExternalObject<Handle>, name: string): ExternalObject<Handle> | null {\n const found = (classFindProperty(klass, name) ??\n classFindProperty(klass, canonicalCase(name))) as ExternalObject<Handle> | null;\n\n return found ?? accessorSpecs(klass).get(toCamelIdentifier(name)) ?? null;\n}\n\nconst sourceLabel = (source: bigint | AnyClass, gtype: bigint): string =>\n typeName(gtype) ?? (typeof source === \"function\" ? source.name : String(source));\n\nconst findInterfaceSpec = (gtype: bigint, name: string): ExternalObject<Handle> | null => {\n const vtable = defaultInterfaceRef(gtype) as ExternalObject<Handle>;\n\n try {\n return interfaceFindProperty(vtable, name) as ExternalObject<Handle> | null;\n } finally {\n defaultInterfaceUnref(vtable);\n }\n};\n\nconst findClassSpec = (gtype: bigint, name: string): ExternalObject<Handle> | null => {\n const klass = typeClassRef(gtype) as ExternalObject<Handle>;\n\n try {\n return classFindProperty(klass, name) as ExternalObject<Handle> | null;\n } finally {\n typeClassUnref(klass);\n }\n};\n\nconst findSourceSpec = (source: bigint | AnyClass, name: string): ExternalObject<Handle> => {\n const gtype = typeof source === \"bigint\" ? source : getClassType(source);\n const isInterface = typeIsA(gtype, TYPE_INTERFACE);\n\n if (!isInterface && !typeIsA(gtype, TYPE_OBJECT)) {\n throw new TypeError(\n `paramSpecOverride: '${sourceLabel(source, gtype)}' is neither a registered object class nor an interface`,\n );\n }\n\n const pspec = isInterface ? findInterfaceSpec(gtype, name) : findClassSpec(gtype, name);\n\n if (pspec === null) {\n throw new TypeError(`paramSpecOverride: type '${sourceLabel(source, gtype)}' has no property named '${name}'`);\n }\n\n return pspec;\n};\n\n/**\n * Creates the handle of a `GParamSpec` that redirects to the property `source` declares under\n * `name` — the equivalent of `g_param_spec_override`, which introspection does not expose.\n *\n * Throws when `source` is neither a GType nor a registered class or interface, and when it\n * declares no property under `name`.\n *\n * @param name Canonical name of the property to override.\n * @param source The GType, wrapper class or interface declaring the property.\n * @returns Handle of the override spec.\n */\nconst newParamSpecOverride = (name: string, source: bigint | AnyClass): ExternalObject<Handle> =>\n paramSpecOverrideNew(name, findSourceSpec(source, name)) as ExternalObject<Handle>;\n\nfunction describeValue(value: unknown): string {\n if (typeof value === \"string\") {\n return JSON.stringify(value);\n }\n\n if (typeof value === \"object\" && value !== null) {\n return instanceClassName(value);\n }\n\n return String(value);\n}\n\nfunction propertyMessage(instance: object, check: PropertyCheck, tail: string): string {\n return `${instanceClassName(instance)}.${check.name}: ${tail}`;\n}\n\nfunction refusalTail(check: PropertyCheck, value: unknown, reason: string): string {\n return `cannot set property '${check.propertyName}' to ${describeValue(value)}; ${reason}`;\n}\n\nfunction serveTail(check: PropertyCheck, value: unknown): string {\n return `cannot serve property '${check.propertyName}' from ${describeValue(value)}; ${holdsReason(check)}`;\n}\n\nfunction assertValueFits(instance: object, check: PropertyCheck, value: unknown): void {\n if (check.canHoldValue(value)) {\n return;\n }\n\n const tail = refusalTail(check, value, holdsReason(check));\n throw new TypeError(propertyMessage(instance, check, tail));\n}\n\nfunction assertValueServes(instance: object, check: PropertyCheck, value: unknown): void {\n if (check.canHoldValue(value)) {\n return;\n }\n\n throw new TypeError(propertyMessage(instance, check, serveTail(check, value)));\n}\n\nfunction assertValueValidates(\n instance: object,\n check: PropertyCheck,\n value: unknown,\n gValue: ExternalObject<Handle>,\n): void {\n if (!wasParamValueModified(check.handle, gValue) || isParamLaxlyValidated(check.flags)) {\n return;\n }\n\n const reason =\n `the value is invalid or out of range for type '${typeLabel(check.valueType)}', ` +\n `and GObject would put ${describeValue(fromValue(gValue))} in its place`;\n\n throw new RangeError(propertyMessage(instance, check, refusalTail(check, value, reason)));\n}\n\nfunction assertWritable(instance: object, check: PropertyCheck, value: unknown): void {\n if (isParamWritable(check.flags)) {\n return;\n }\n\n throw new TypeError(propertyMessage(instance, check, refusalTail(check, value, READ_ONLY_REASON)));\n}\n\nfunction writeHeld(check: PropertyCheck, gValue: ExternalObject<Handle>, value: unknown): void {\n check.write ??= valueWriterFor(check.valueType);\n check.write(gValue, check.narrowValue(value));\n}\n\nfunction fillCheckedValue(\n instance: object,\n check: PropertyCheck,\n gValue: ExternalObject<Handle>,\n value: unknown,\n): void {\n assertValueFits(instance, check, value);\n writeHeld(check, gValue, value);\n assertValueValidates(instance, check, value, gValue);\n}\n\nfunction checkedValueFor(instance: object, check: PropertyCheck, value: unknown): ExternalObject<Handle> {\n const gValue = newValueForType(check.valueType);\n fillCheckedValue(instance, check, gValue, value);\n\n return gValue;\n}\n\nfunction assertValueAccepted(instance: object, check: PropertyCheck, value: unknown): void {\n check.scratch ??= newValueForType(check.valueType);\n fillCheckedValue(instance, check, check.scratch, value);\n}\n\nfunction constructValueFor(wrapper: object, check: PropertyCheck, value: unknown): ConstructProperty {\n assertWritable(wrapper, check, value);\n\n return { name: check.propertyName, value: checkedValueFor(wrapper, check, value) };\n}\n\n/**\n * Whether the type declares a readable GObject property under `propertyName`, asking GObject itself\n * rather than looking for a generated accessor, which codegen omits when a method shares the name.\n */\nfunction isReadableProperty(gtype: bigint, propertyName: string): boolean {\n const klass = typeClassRef(gtype) as ExternalObject<Handle>;\n\n try {\n const pspec = findPropertySpec(klass, propertyName);\n\n return pspec !== null && isParamReadable(getParamFlags(pspec));\n } finally {\n typeClassUnref(klass);\n }\n}\n\nfunction lookupCoercionCheck(gtype: bigint, name: string): PropertyCheck | null {\n const klass = typeClassRef(gtype) as ExternalObject<Handle>;\n\n try {\n const pspec = findPropertySpec(klass, name);\n\n return pspec === null ? null : checkFor(pspec, name);\n } finally {\n typeClassUnref(klass);\n }\n}\n\nfunction coercionCheckFor(gtype: bigint, name: string): PropertyCheck | null {\n let checks = coercionChecks.get(gtype);\n\n if (checks === undefined) {\n checks = new Map();\n coercionChecks.set(gtype, checks);\n }\n\n let check = checks.get(name);\n\n if (check === undefined) {\n check = lookupCoercionCheck(gtype, name);\n checks.set(name, check);\n }\n\n return check;\n}\n\nfunction truncateToWhole(check: PropertyCheck, value: number): number {\n const range = WHOLE_NUMBER_RANGES.get(typeFundamental(check.valueType));\n\n if (range === undefined) {\n return value;\n }\n\n return Math.min(range[1], Math.max(range[0], Math.trunc(value)));\n}\n\nfunction validatedNumber(check: PropertyCheck, number: number): number {\n check.scratch ??= newValueForType(check.valueType);\n\n try {\n writeHeld(check, check.scratch, number);\n } catch {\n return number;\n }\n\n return wasParamValueModified(check.handle, check.scratch) ? (fromValue(check.scratch) as number) : number;\n}\n\nfunction coerceNumber(check: PropertyCheck, value: number): number {\n const number = truncateToWhole(check, value);\n\n return check.canHoldValue(number) ? validatedNumber(check, number) : value;\n}\n\nfunction coercePropertyValue(gtype: bigint, propertyName: string, value: unknown): unknown {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n return value;\n }\n\n const check = coercionCheckFor(gtype, propertyName);\n\n return check === null ? value : coerceNumber(check, value);\n}\n\n/**\n * Fits a number to what a GObject property accepts, the way an animation writing a value on every\n * frame needs: a fractional number headed for a property that holds whole numbers, such as a\n * `gint`, an enum, or flags, is truncated toward zero, and a number outside the range the\n * property's `GObject.ParamSpec` allows is clamped to it, so the write that follows never trips\n * GObject's range check. Anything that is not a finite number, a number the property cannot hold\n * at all, and a name the object installs no property under come back unchanged.\n *\n * @param obj The object the value is about to be written to.\n * @param propertyName The property name, dashed or camelCased.\n * @param value The value about to be written.\n * @returns The value as the property accepts it.\n */\nfunction coerceObjectProperty(obj: object, propertyName: string, value: unknown): unknown {\n if (typeof value !== \"number\") {\n return value;\n }\n\n const gtype = getInstanceType(obj);\n\n return gtype === TYPE_INVALID ? value : coercePropertyValue(gtype, propertyName, value);\n}\n\nfunction constructPropertyFor(\n gtype: bigint,\n name: string,\n value: unknown,\n wrapper: object,\n): ConstructProperty | undefined {\n const klass = typeClassRef(gtype) as ExternalObject<Handle>;\n\n try {\n const pspec = findPropertySpec(klass, name);\n\n return pspec === null ? undefined : constructValueFor(wrapper, checkFor(pspec, name), value);\n } finally {\n typeClassUnref(klass);\n }\n}\n\nfunction readStored(instance: Record<symbol, unknown>, accessor: PropertyAccessor): unknown {\n if (!Object.hasOwn(instance, accessor.storage)) {\n instance[accessor.storage] = fromValue(defaultValueFor(accessor.handle));\n }\n\n return instance[accessor.storage];\n}\n\nfunction storeValue(instance: Record<symbol, unknown>, accessor: PropertyAccessor, value: unknown): void {\n instance[accessor.storage] = heldValue(value);\n}\n\nfunction writeStored(instance: Record<symbol, unknown>, accessor: PropertyAccessor, value: unknown): void {\n if (readStored(instance, accessor) === heldValue(value)) {\n return;\n }\n\n storeValue(instance, accessor, value);\n (instance as NotifyingObject).notify?.(accessor.propertyName);\n}\n\nfunction writeProperty(instance: object, accessor: PropertyAccessor, value: unknown): void {\n const stored = instance as Record<symbol, unknown>;\n\n if (readStored(stored, accessor) === heldValue(value)) {\n return;\n }\n\n assertValueAccepted(instance, accessor, value);\n writeStored(stored, accessor, accessor.narrowValue(value));\n}\n\nfunction storedGetter(accessor: PropertyAccessor): (this: object) => unknown {\n return function get(this: object) {\n return readStored(this as Record<symbol, unknown>, accessor);\n };\n}\n\nfunction memberGetter(accessor: DeclaredAccessor): (this: object) => unknown {\n return function get(this: object) {\n return (this as Record<string, unknown>)[accessor.memberName];\n };\n}\n\nfunction memberSetter(accessor: DeclaredAccessor): (this: object, value: unknown) => void {\n return function set(this: object, value: unknown) {\n (this as Record<string, unknown>)[accessor.memberName] = value;\n };\n}\n\nfunction refusalFor(accessor: PropertyAccessor, reason: string): (this: object, value: unknown) => void {\n return function set(this: object, value: unknown) {\n throw new TypeError(propertyMessage(this, accessor, refusalTail(accessor, value, reason)));\n };\n}\n\nfunction checkedSetter(accessor: DeclaredAccessor): (this: object, value: unknown) => void {\n if (!isParamWritable(accessor.flags)) {\n return refusalFor(accessor, READ_ONLY_REASON);\n }\n\n if (isParamConstructOnly(accessor.flags)) {\n return refusalFor(accessor, CONSTRUCT_ONLY_REASON);\n }\n\n return function set(this: object, value: unknown) {\n writeProperty(this, accessor, value);\n };\n}\n\nfunction hasOwnMember(prototype: object, alias: string): boolean {\n return Object.getOwnPropertyDescriptor(prototype, alias) !== undefined;\n}\n\nfunction defineAccessor(prototype: object, descriptor: PropertyDescriptor, alias: string): void {\n if (hasOwnMember(prototype, alias)) {\n return;\n }\n\n Object.defineProperty(prototype, alias, descriptor);\n}\n\nfunction installAccessors(klass: AnyClass, accessor: DeclaredAccessor): void {\n const prototype = (klass as { prototype: object }).prototype;\n accessor.hasGeneratedMember = !hasOwnMember(prototype, accessor.memberName);\n\n const descriptor: PropertyDescriptor = {\n configurable: true,\n enumerable: true,\n get: accessor.hasGeneratedMember ? storedGetter(accessor) : memberGetter(accessor),\n set: accessor.hasGeneratedMember ? checkedSetter(accessor) : memberSetter(accessor),\n };\n\n for (const alias of accessorNames(accessor.name)) {\n defineAccessor(prototype, descriptor, alias);\n }\n}\n\nfunction storageFor(propertyName: string): symbol {\n const existing = interfaceStorages.get(propertyName);\n\n if (existing !== undefined) {\n return existing;\n }\n\n const created = Symbol(`gtkx:property:${propertyName}`);\n interfaceStorages.set(propertyName, created);\n\n return created;\n}\n\nfunction interfaceAccessorFor(dispatch: PropertyDispatch, pspec: PropertySpec): InterfaceAccessor {\n const handle = getHandle(pspec);\n const propertyName = paramSpecName(handle) as string;\n const delegate = dispatch.delegates.get(propertyName);\n\n const accessor: InterfaceAccessor = {\n ...checkFor(handle, propertyName),\n storage: storageFor(propertyName),\n isInterfaceProperty: true,\n };\n\n if (delegate !== undefined) {\n accessor.delegate = delegate;\n }\n\n return accessor;\n}\n\nfunction resolveAccessor(\n dispatch: PropertyDispatch,\n propertyId: number,\n pspec: PropertySpec,\n): PropertyAccessor {\n const accessor = dispatch.accessors[propertyId - FIRST_PROPERTY_ID];\n\n if (accessor !== undefined) {\n return accessor;\n }\n\n const created = interfaceAccessorFor(dispatch, pspec);\n dispatch.accessors[propertyId - FIRST_PROPERTY_ID] = created;\n\n return created;\n}\n\nfunction callMember(instance: object, member: string, args: unknown[]): unknown {\n const fn: unknown = (instance as Record<string, unknown>)[member];\n\n if (typeof fn !== \"function\") {\n throw new TypeError(`registerClass: ${instanceClassName(instance)} has no '${member}' member`);\n }\n\n return (fn as (...values: unknown[]) => unknown).apply(instance, args);\n}\n\nfunction backingMemberFor(instance: object, accessor: DeclaredAccessor): string | undefined {\n if (accessor.hasGeneratedMember && !Object.hasOwn(instance, accessor.memberName)) {\n return undefined;\n }\n\n return accessor.memberName;\n}\n\nfunction readCurrent(instance: object, accessor: PropertyAccessor): unknown {\n const getter = accessor.delegate?.getter;\n\n if (getter !== undefined) {\n return callMember(instance, getter, []);\n }\n\n if (accessor.isInterfaceProperty === true) {\n return readStored(instance as Record<symbol, unknown>, accessor);\n }\n\n const member = backingMemberFor(instance, accessor);\n\n return member === undefined\n ? readStored(instance as Record<symbol, unknown>, accessor)\n : (instance as Record<string, unknown>)[member];\n}\n\nfunction storeCurrent(instance: Record<symbol, unknown>, accessor: PropertyAccessor, value: unknown): void {\n if (isParamExplicitlyNotified(accessor.flags)) {\n writeStored(instance, accessor, value);\n } else {\n storeValue(instance, accessor, value);\n }\n}\n\nfunction writeCurrent(instance: object, accessor: PropertyAccessor, value: unknown): void {\n const setter = accessor.delegate?.setter;\n\n if (setter !== undefined) {\n callMember(instance, setter, [value]);\n\n return;\n }\n\n if (accessor.isInterfaceProperty === true) {\n writeStored(instance as Record<symbol, unknown>, accessor, value);\n\n return;\n }\n\n const member = backingMemberFor(instance, accessor);\n\n if (member === undefined) {\n storeCurrent(instance as Record<symbol, unknown>, accessor, value);\n\n return;\n }\n\n (instance as Record<string, unknown>)[member] = value;\n}\n\nfunction makeGetProperty(dispatch: PropertyDispatch) {\n return function getProperty(this: object, propertyId: number, value: object, pspec: PropertySpec): void {\n const accessor = resolveAccessor(dispatch, propertyId, pspec);\n const current = readCurrent(this, accessor);\n assertValueServes(this, accessor, current);\n writeHeld(accessor, getHandle(value), current);\n };\n}\n\nfunction makeSetProperty(dispatch: PropertyDispatch) {\n return function setProperty(this: object, propertyId: number, value: object, pspec: PropertySpec): void {\n const accessor = resolveAccessor(dispatch, propertyId, pspec);\n writeCurrent(this, accessor, fromValue(getHandle(value)));\n };\n}\n\nconst isCanonicalName = (name: string, propertyName: string): boolean =>\n CANONICAL_NAME_PATTERN.test(propertyName) && toCamelIdentifier(propertyName) === toCamelIdentifier(name);\n\nfunction assertCanonicalName(klass: AnyClass, name: string, propertyName: string): void {\n if (isCanonicalName(name, propertyName)) {\n return;\n }\n\n throw new TypeError(\n `registerClass: ${klass.name} keys the property '${name}' to a GObject.ParamSpec named ` +\n `'${propertyName}', which is the name GObject notifies under; name the ParamSpec '${canonicalCase(name)}'`,\n );\n}\n\nfunction assertCanonicalNames(klass: AnyClass, properties: Record<string, PropertySpec>): void {\n for (const [name, pspec] of Object.entries(properties)) {\n assertCanonicalName(klass, name, getPropertyName(pspec));\n }\n}\n\nfunction buildAccessor(klass: AnyClass, name: string, pspec: PropertySpec): DeclaredAccessor {\n const accessor: DeclaredAccessor = {\n ...checkFor(getHandle(pspec), name),\n memberName: camelCase(name),\n storage: Symbol(`gtkx:property:${name}`),\n hasGeneratedMember: false,\n };\n\n installAccessors(klass, accessor);\n\n return accessor;\n}\n\nfunction buildAccessors(source: PropertyDispatchSource): DeclaredAccessor[] {\n const { klass, properties } = source;\n assertCanonicalNames(klass, properties);\n\n return Object.entries(properties).map(([name, pspec]) => buildAccessor(klass, name, pspec));\n}\n\nfunction addInterfaceDelegates(delegates: Map<string, InterfaceProperty>, gtype: bigint): void {\n const properties = getInterfaceProperties(gtype) ?? {};\n\n for (const [name, delegate] of Object.entries(properties)) {\n if (!delegates.has(name)) {\n delegates.set(name, delegate);\n }\n }\n}\n\nfunction interfaceDelegatesFor(adoptedTypes: bigint[]): Map<string, InterfaceProperty> {\n const delegates: Map<string, InterfaceProperty> = new Map();\n\n for (const gtype of adoptedTypes) {\n addInterfaceDelegates(delegates, gtype);\n }\n\n return delegates;\n}\n\nfunction recordDeclaredNames(klass: AnyClass, accessors: DeclaredAccessor[]): void {\n const proto = klass.prototype as Record<PropertyKey, unknown>;\n const inherited = proto[DECLARED_NAMES] as Record<string, string> | undefined;\n const own: Record<string, string> = {};\n\n for (const accessor of accessors) {\n own[accessor.memberName] = accessor.propertyName;\n }\n\n Object.defineProperty(proto, DECLARED_NAMES, { value: { ...inherited, ...own }, enumerable: false });\n}\n\nfunction buildPropertyDispatch(source: PropertyDispatchSource): PropertyDispatch {\n const declared = buildAccessors(source);\n recordDeclaredNames(source.klass, declared);\n\n return { accessors: [...declared], delegates: interfaceDelegatesFor(source.adoptedTypes) };\n}\n\n/**\n * The GObject name a class registered with `registerClass` installed an accessor under, or\n * `undefined` when the accessor names no property the class declared itself.\n */\nfunction getDeclaredPropertyName(object: object, accessor: string): string | undefined {\n const declared = (object as Record<PropertyKey, unknown>)[DECLARED_NAMES] as\n | Record<string, string> |\n undefined;\n\n return declared?.[accessor];\n}\n\nfunction toNativeProperties(properties: Record<string, PropertySpec>): RegisterClassProperty[] {\n return Object.values(properties).map((pspec, index) => ({\n id: index + FIRST_PROPERTY_ID,\n pspec: getHandle(pspec),\n }));\n}\n\nexport {\n buildPropertyDispatch,\n coerceObjectProperty,\n getDeclaredPropertyName,\n isReadableProperty,\n coercePropertyValue,\n constructPropertyFor,\n GET_PROPERTY_VFUNC,\n makeGetProperty,\n makeSetProperty,\n newParamSpecOverride,\n SET_PROPERTY_VFUNC,\n toNativeProperties,\n type ConstructProperty,\n type PropertyDispatch,\n type PropertySpec,\n};\n"]}
|
package/dist/regex.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scans for a match of a compiled `GRegex` in the subject string, keeping the subject's bytes
|
|
3
|
+
* alive so the returned match info's fetch methods stay valid for as long as it is reachable.
|
|
4
|
+
*
|
|
5
|
+
* @param regex The compiled regex to scan with.
|
|
6
|
+
* @param subject The string to scan for matches.
|
|
7
|
+
* @param startPosition Starting index of the subject to match, in bytes.
|
|
8
|
+
* @param matchOptions Match options to apply.
|
|
9
|
+
* @returns Whether the subject matched, and the match info describing the match.
|
|
10
|
+
*/
|
|
11
|
+
declare function matchRegex<MatchInfo extends object>(regex: object, subject: string | string[], startPosition: number, matchOptions: number): [boolean, MatchInfo];
|
|
12
|
+
/**
|
|
13
|
+
* Scans for all possible matches of a compiled `GRegex` in the subject string using the DFA
|
|
14
|
+
* algorithm, including overlapping matches, keeping the subject's bytes alive so the returned
|
|
15
|
+
* match info's fetch methods stay valid for as long as it is reachable.
|
|
16
|
+
*
|
|
17
|
+
* @param regex The compiled regex to scan with.
|
|
18
|
+
* @param subject The string to scan for matches.
|
|
19
|
+
* @param startPosition Starting index of the subject to match, in bytes.
|
|
20
|
+
* @param matchOptions Match options to apply.
|
|
21
|
+
* @returns Whether the subject matched, and the match info describing the matches.
|
|
22
|
+
*/
|
|
23
|
+
declare function matchAllRegex<MatchInfo extends object>(regex: object, subject: string | string[], startPosition: number, matchOptions: number): [boolean, MatchInfo];
|
|
24
|
+
export { matchAllRegex, matchRegex };
|
|
25
|
+
//# sourceMappingURL=regex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex.d.ts","sourceRoot":"","sources":["../src/regex.ts"],"names":[],"mappings":"AAoDA;;;;;;;;;GASG;AACH,iBAAS,UAAU,CAAC,SAAS,SAAS,MAAM,EACxC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACrB,CAAC,OAAO,EAAE,SAAS,CAAC,CAEtB;AAED;;;;;;;;;;GAUG;AACH,iBAAS,aAAa,CAAC,SAAS,SAAS,MAAM,EAC3C,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACrB,CAAC,OAAO,EAAE,SAAS,CAAC,CAEtB;AAED,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/regex.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import {} from "./arg.js";
|
|
2
|
+
import { booleanT, boxedT, bufferT, int32T, int64T, uint32T } from "./descriptors.js";
|
|
3
|
+
import { fn } from "./fn.js";
|
|
4
|
+
import { LIB } from "./library.js";
|
|
5
|
+
import { getHandle } from "./registry.js";
|
|
6
|
+
const MATCH_ARGS = [
|
|
7
|
+
{
|
|
8
|
+
type: boxedT("GRegex", { ownership: "borrowed", sharedLibrary: LIB, getTypeFnName: "g_regex_get_type" }),
|
|
9
|
+
},
|
|
10
|
+
{ type: bufferT },
|
|
11
|
+
{ type: int64T },
|
|
12
|
+
{ type: int32T },
|
|
13
|
+
{ type: uint32T },
|
|
14
|
+
{
|
|
15
|
+
type: boxedT("GMatchInfo", { ownership: "full", sharedLibrary: LIB, getTypeFnName: "g_match_info_get_type" }),
|
|
16
|
+
direction: "out",
|
|
17
|
+
},
|
|
18
|
+
];
|
|
19
|
+
const gRegexMatchFull = fn(LIB, "g_regex_match_full", { args: MATCH_ARGS, returns: booleanT, canThrow: true });
|
|
20
|
+
const gRegexMatchAllFull = fn(LIB, "g_regex_match_all_full", { args: MATCH_ARGS, returns: booleanT, canThrow: true });
|
|
21
|
+
/* eslint-disable-next-line sonarjs/no-unused-collection -- keeps each subject's bytes alive alongside its match info */
|
|
22
|
+
const subjectBytes = new WeakMap();
|
|
23
|
+
const encoder = new TextEncoder();
|
|
24
|
+
const flattenSubject = (subject) => Array.isArray(subject) ? subject.join("") : subject;
|
|
25
|
+
const matchWithSubject = (boundFn, { regex, subject, startPosition, matchOptions }) => {
|
|
26
|
+
const bytes = encoder.encode(`${flattenSubject(subject)}\0`);
|
|
27
|
+
const result = boundFn(getHandle(regex), bytes, bytes.length - 1, startPosition, matchOptions);
|
|
28
|
+
subjectBytes.set(result[1], bytes);
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Scans for a match of a compiled `GRegex` in the subject string, keeping the subject's bytes
|
|
33
|
+
* alive so the returned match info's fetch methods stay valid for as long as it is reachable.
|
|
34
|
+
*
|
|
35
|
+
* @param regex The compiled regex to scan with.
|
|
36
|
+
* @param subject The string to scan for matches.
|
|
37
|
+
* @param startPosition Starting index of the subject to match, in bytes.
|
|
38
|
+
* @param matchOptions Match options to apply.
|
|
39
|
+
* @returns Whether the subject matched, and the match info describing the match.
|
|
40
|
+
*/
|
|
41
|
+
function matchRegex(regex, subject, startPosition, matchOptions) {
|
|
42
|
+
return matchWithSubject(gRegexMatchFull, { regex, subject, startPosition, matchOptions });
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Scans for all possible matches of a compiled `GRegex` in the subject string using the DFA
|
|
46
|
+
* algorithm, including overlapping matches, keeping the subject's bytes alive so the returned
|
|
47
|
+
* match info's fetch methods stay valid for as long as it is reachable.
|
|
48
|
+
*
|
|
49
|
+
* @param regex The compiled regex to scan with.
|
|
50
|
+
* @param subject The string to scan for matches.
|
|
51
|
+
* @param startPosition Starting index of the subject to match, in bytes.
|
|
52
|
+
* @param matchOptions Match options to apply.
|
|
53
|
+
* @returns Whether the subject matched, and the match info describing the matches.
|
|
54
|
+
*/
|
|
55
|
+
function matchAllRegex(regex, subject, startPosition, matchOptions) {
|
|
56
|
+
return matchWithSubject(gRegexMatchAllFull, { regex, subject, startPosition, matchOptions });
|
|
57
|
+
}
|
|
58
|
+
export { matchAllRegex, matchRegex };
|
|
59
|
+
//# sourceMappingURL=regex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex.js","sourceRoot":"","sources":["../src/regex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAS1C,MAAM,UAAU,GAAU;IACtB;QACI,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC;KAC3G;IACD,EAAE,IAAI,EAAE,OAAO,EAAE;IACjB,EAAE,IAAI,EAAE,MAAM,EAAE;IAChB,EAAE,IAAI,EAAE,MAAM,EAAE;IAChB,EAAE,IAAI,EAAE,OAAO,EAAE;IACjB;QACI,IAAI,EAAE,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC;QAC7G,SAAS,EAAE,KAAK;KACnB;CACJ,CAAC;AAEF,MAAM,eAAe,GAAG,EAAE,CAAC,GAAG,EAAE,oBAAoB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/G,MAAM,kBAAkB,GAAG,EAAE,CAAC,GAAG,EAAE,wBAAwB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACtH,wHAAwH;AACxH,MAAM,YAAY,GAAgC,IAAI,OAAO,EAAE,CAAC;AAChE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,MAAM,cAAc,GAAG,CAAC,OAA0B,EAAU,EAAE,CAC1D,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAExD,MAAM,gBAAgB,GAAG,CACrB,OAA0C,EAC1C,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAe,EACxC,EAAE;IACtB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,aAAa,EAAE,YAAY,CAG5F,CAAC;IAEF,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEnC,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,SAAS,UAAU,CACf,KAAa,EACb,OAA0B,EAC1B,aAAqB,EACrB,YAAoB;IAEpB,OAAO,gBAAgB,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;AAC9F,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,aAAa,CAClB,KAAa,EACb,OAA0B,EAC1B,aAAqB,EACrB,YAAoB;IAEpB,OAAO,gBAAgB,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;AACjG,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC","sourcesContent":["import { type Arg } from \"./arg.js\";\nimport { booleanT, boxedT, bufferT, int32T, int64T, uint32T } from \"./descriptors.js\";\nimport { fn } from \"./fn.js\";\nimport { LIB } from \"./library.js\";\nimport { getHandle } from \"./registry.js\";\n\ntype MatchParams = {\n regex: object;\n subject: string | string[];\n startPosition: number;\n matchOptions: number;\n};\n\nconst MATCH_ARGS: Arg[] = [\n {\n type: boxedT(\"GRegex\", { ownership: \"borrowed\", sharedLibrary: LIB, getTypeFnName: \"g_regex_get_type\" }),\n },\n { type: bufferT },\n { type: int64T },\n { type: int32T },\n { type: uint32T },\n {\n type: boxedT(\"GMatchInfo\", { ownership: \"full\", sharedLibrary: LIB, getTypeFnName: \"g_match_info_get_type\" }),\n direction: \"out\",\n },\n];\n\nconst gRegexMatchFull = fn(LIB, \"g_regex_match_full\", { args: MATCH_ARGS, returns: booleanT, canThrow: true });\nconst gRegexMatchAllFull = fn(LIB, \"g_regex_match_all_full\", { args: MATCH_ARGS, returns: booleanT, canThrow: true });\n/* eslint-disable-next-line sonarjs/no-unused-collection -- keeps each subject's bytes alive alongside its match info */\nconst subjectBytes: WeakMap<object, Uint8Array> = new WeakMap();\nconst encoder = new TextEncoder();\n\nconst flattenSubject = (subject: string | string[]): string =>\n Array.isArray(subject) ? subject.join(\"\") : subject;\n\nconst matchWithSubject = <MatchInfo extends object>(\n boundFn: (...inputs: unknown[]) => unknown,\n { regex, subject, startPosition, matchOptions }: MatchParams,\n): [boolean, MatchInfo] => {\n const bytes = encoder.encode(`${flattenSubject(subject)}\\0`);\n\n const result = boundFn(getHandle(regex), bytes, bytes.length - 1, startPosition, matchOptions) as [\n boolean,\n MatchInfo,\n ];\n\n subjectBytes.set(result[1], bytes);\n\n return result;\n};\n\n/**\n * Scans for a match of a compiled `GRegex` in the subject string, keeping the subject's bytes\n * alive so the returned match info's fetch methods stay valid for as long as it is reachable.\n *\n * @param regex The compiled regex to scan with.\n * @param subject The string to scan for matches.\n * @param startPosition Starting index of the subject to match, in bytes.\n * @param matchOptions Match options to apply.\n * @returns Whether the subject matched, and the match info describing the match.\n */\nfunction matchRegex<MatchInfo extends object>(\n regex: object,\n subject: string | string[],\n startPosition: number,\n matchOptions: number,\n): [boolean, MatchInfo] {\n return matchWithSubject(gRegexMatchFull, { regex, subject, startPosition, matchOptions });\n}\n\n/**\n * Scans for all possible matches of a compiled `GRegex` in the subject string using the DFA\n * algorithm, including overlapping matches, keeping the subject's bytes alive so the returned\n * match info's fetch methods stay valid for as long as it is reachable.\n *\n * @param regex The compiled regex to scan with.\n * @param subject The string to scan for matches.\n * @param startPosition Starting index of the subject to match, in bytes.\n * @param matchOptions Match options to apply.\n * @returns Whether the subject matched, and the match info describing the matches.\n */\nfunction matchAllRegex<MatchInfo extends object>(\n regex: object,\n subject: string | string[],\n startPosition: number,\n matchOptions: number,\n): [boolean, MatchInfo] {\n return matchWithSubject(gRegexMatchAllFull, { regex, subject, startPosition, matchOptions });\n}\n\nexport { matchAllRegex, matchRegex };\n"]}
|
package/dist/register-class.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type AnyClass } from "@gtkx/utils";
|
|
2
2
|
import { type PropertySpec } from "./properties.js";
|
|
3
|
+
import { type TypedClass } from "./type.js";
|
|
3
4
|
/**
|
|
4
5
|
* A generated interface value, such as `Gio.ListModel`, in the form {@link registerClass} takes it.
|
|
5
6
|
* `__impl__` exists only in the type system: it carries the interface's `Impl` type, of which a class
|
|
@@ -31,13 +32,48 @@ type Camelized<TName extends string> = TName extends `${infer THead}-${infer TTa
|
|
|
31
32
|
* type and names nothing, because a name only known as `string` addresses no member in particular.
|
|
32
33
|
*/
|
|
33
34
|
type InstalledNames<TProperties> = string extends keyof TProperties ? never : Camelized<Dashed<keyof TProperties & string>>;
|
|
35
|
+
/**
|
|
36
|
+
* The base names the signal surface takes for the signals `RegisterClassOptions.signals` declares:
|
|
37
|
+
* each name as written, plus its canonical spelling with underscores turned into dashes, which
|
|
38
|
+
* GObject knows the signal by too.
|
|
39
|
+
*/
|
|
40
|
+
type DeclaredSignalBase<TSignals> = (keyof TSignals & string) | Dashed<keyof TSignals & string>;
|
|
41
|
+
/**
|
|
42
|
+
* The names `connect` and `emit` take for one of the signals `RegisterClassOptions.signals`
|
|
43
|
+
* declares: each spelling of each name, plus its detailed form for a signal emitted with a
|
|
44
|
+
* `::detail` suffix.
|
|
45
|
+
*/
|
|
46
|
+
type DeclaredSignalName<TSignals> = DeclaredSignalBase<TSignals> | `${DeclaredSignalBase<TSignals>}::${string}`;
|
|
47
|
+
/**
|
|
48
|
+
* The `connect` and `emit` signatures instances gain for the signals
|
|
49
|
+
* `RegisterClassOptions.signals` declares, widening the inherited ones, which take only the names
|
|
50
|
+
* introspection knows. A class declaring no signals gains nothing, since no name reaches the
|
|
51
|
+
* added signatures.
|
|
52
|
+
*/
|
|
53
|
+
type DeclaredSignalMethods<TSignals> = {
|
|
54
|
+
/**
|
|
55
|
+
* Type-level map from declared signal name to handler signature, feeding the hooks that
|
|
56
|
+
* address a signal by name, such as `useSignal` from `@gtkx/react`; no value ever carries it.
|
|
57
|
+
*/
|
|
58
|
+
__signals__?: Record<DeclaredSignalBase<TSignals>, (...args: never[]) => unknown>;
|
|
59
|
+
/** Connects a handler to a signal `RegisterClassOptions.signals` declared. */
|
|
60
|
+
connect(signal: DeclaredSignalName<TSignals>, handler: (...args: never[]) => unknown, isAfter?: boolean): number;
|
|
61
|
+
/** Emits a signal `RegisterClassOptions.signals` declared. */
|
|
62
|
+
emit(sigName: DeclaredSignalName<TSignals>, ...args: unknown[]): unknown;
|
|
63
|
+
/** Connects a handler to a signal `RegisterClassOptions.signals` declared, for `off` to take off. */
|
|
64
|
+
on(sigName: DeclaredSignalName<TSignals>, callback: (...args: unknown[]) => unknown, isAfter?: boolean): unknown;
|
|
65
|
+
/** Connects a handler to a signal `RegisterClassOptions.signals` declared for one emission. */
|
|
66
|
+
once(sigName: DeclaredSignalName<TSignals>, callback: (...args: unknown[]) => unknown, isAfter?: boolean): unknown;
|
|
67
|
+
/** Disconnects a handler `on` or `once` connected to a signal `RegisterClassOptions.signals` declared. */
|
|
68
|
+
off(sigName: DeclaredSignalName<TSignals>, callback: (...args: unknown[]) => unknown): unknown;
|
|
69
|
+
};
|
|
34
70
|
/**
|
|
35
71
|
* An instance of a registered class: everything the class itself declares, plus the property map the
|
|
36
72
|
* hooks that address a property by name, such as `useProperty` from `@gtkx/react`, read the installed
|
|
37
73
|
* names off. Each name is typed with the value type the class declares for the member of that name,
|
|
38
74
|
* so a property the class does not `declare` contributes nothing.
|
|
39
75
|
*/
|
|
40
|
-
type RegisteredInstance<TInstance, TProperties> = TInstance & {
|
|
76
|
+
type RegisteredInstance<TInstance, TProperties, TSignals> = TInstance & DeclaredSignalMethods<TSignals> & {
|
|
41
77
|
/** Type-level map from installed property name to value type; no value ever carries it. */
|
|
42
78
|
__properties__: Pick<TInstance, InstalledNames<TProperties> & keyof TInstance>;
|
|
43
79
|
};
|
|
@@ -50,16 +86,79 @@ type RegisteredConstructor<TClass, TArgs extends unknown[], TInstance> = {
|
|
|
50
86
|
/** Object the class's instances inherit from. */
|
|
51
87
|
prototype: TInstance;
|
|
52
88
|
} & (TClass extends new (...args: never) => unknown ? new (...args: TArgs) => TInstance : abstract new (...args: TArgs) => TInstance);
|
|
89
|
+
/** The statics a registered class keeps from the class it was, joined with {@link RegisteredConstructor}. */
|
|
90
|
+
type RegisteredParts<TClass, TArgs extends unknown[], TInstance> = Omit<TClass, "prototype"> & RegisteredConstructor<TClass, TArgs, TInstance>;
|
|
53
91
|
/**
|
|
54
92
|
* The class {@link registerClass} hands back: the same class, with the same statics, whose instances
|
|
55
|
-
* carry the properties `RegisterClassOptions.properties` installed
|
|
56
|
-
*
|
|
93
|
+
* carry the properties `RegisterClassOptions.properties` installed and take the signals
|
|
94
|
+
* `RegisterClassOptions.signals` declares by name. Binding the call to a name, rather than
|
|
95
|
+
* discarding it, is what carries those names into the type system.
|
|
96
|
+
*/
|
|
97
|
+
type RegisteredClass<TClass extends AnyClass, TProperties, TSignals> = TClass extends abstract new (...args: infer TArgs) => infer TInstance ? RegisteredParts<TClass, TArgs, RegisteredInstance<TInstance, TProperties, TSignals>> : never;
|
|
98
|
+
/**
|
|
99
|
+
* A GType in the form `RegisterClassOptions.signals` takes one: the numeric GType itself, such as
|
|
100
|
+
* `TYPE_STRING` from `@gtkx/gi/gobject`, or a class carrying one, which is any generated wrapper
|
|
101
|
+
* class and any class an earlier {@link registerClass} call registered.
|
|
102
|
+
*/
|
|
103
|
+
type SignalGType = bigint | AnyClass<TypedClass>;
|
|
104
|
+
/**
|
|
105
|
+
* One signal `RegisterClassOptions.signals` creates on the new type, sitting under the signal's
|
|
106
|
+
* name. Every part is optional: `{}` declares a signal with no arguments and no return value that
|
|
107
|
+
* runs its handlers in the default `RUN_FIRST` stage.
|
|
57
108
|
*/
|
|
58
|
-
type
|
|
109
|
+
type SignalSpec = {
|
|
110
|
+
/**
|
|
111
|
+
* `GObject.SignalFlags` bit mask for the signal, defaulting to `RUN_FIRST`. `DETAILED` lets
|
|
112
|
+
* handlers connect to and emissions name a `::detail` suffix.
|
|
113
|
+
*/
|
|
114
|
+
flags?: number;
|
|
115
|
+
/** GType of each argument an emission carries, defaulting to none. */
|
|
116
|
+
paramTypes?: SignalGType[];
|
|
117
|
+
/** GType of the value an emission returns, defaulting to none. */
|
|
118
|
+
returnType?: SignalGType;
|
|
119
|
+
/**
|
|
120
|
+
* How the emission combines what its handlers return, limited to the two accumulators GObject
|
|
121
|
+
* ships: `"first-wins"` stops the emission at the first handler and keeps its result, and
|
|
122
|
+
* `"true-handled"` runs handlers until one returns `true`, which requires a boolean
|
|
123
|
+
* `returnType`. Without one, every handler runs and the last result stands.
|
|
124
|
+
*/
|
|
125
|
+
accumulator?: "first-wins" | "true-handled";
|
|
126
|
+
};
|
|
59
127
|
/** What {@link registerClass} adds to the new GType beyond the vtable slots it discovers on the class. */
|
|
60
|
-
type RegisterClassOptions<TInstance extends object, TProperties extends Record<string, PropertySpec>> = {
|
|
61
|
-
/**
|
|
128
|
+
type RegisterClassOptions<TInstance extends object, TProperties extends Record<string, PropertySpec>, TSignals extends Record<string, SignalSpec>> = {
|
|
129
|
+
/**
|
|
130
|
+
* Name to register the new GType under, defaulting to the class's own name. Either way the
|
|
131
|
+
* name has to be a valid GType name: at least three characters, starting with a letter or
|
|
132
|
+
* underscore, the rest letters, digits, `-`, `_` or `+`. Any other name throws a `TypeError`.
|
|
133
|
+
*/
|
|
62
134
|
typeName?: string;
|
|
135
|
+
/**
|
|
136
|
+
* Registers the new GType abstract, the way `G_TYPE_FLAG_ABSTRACT` marks a C type: the class
|
|
137
|
+
* still serves as a parent for further registered subclasses, which instantiate as usual, but
|
|
138
|
+
* constructing it directly throws, whether from JavaScript or from a native caller.
|
|
139
|
+
*/
|
|
140
|
+
abstract?: boolean;
|
|
141
|
+
/**
|
|
142
|
+
* Name instances of the new type carry in CSS, applied through `gtk_widget_class_set_css_name`
|
|
143
|
+
* from inside the type's `class_init`, so every instance is born with it, wherever it is
|
|
144
|
+
* created from. Requires the class to extend `Gtk.Widget`; registering a non-widget with a
|
|
145
|
+
* `cssName` throws.
|
|
146
|
+
*/
|
|
147
|
+
cssName?: string;
|
|
148
|
+
/**
|
|
149
|
+
* Hook run once, synchronously, while `registerClass` registers the type, after its
|
|
150
|
+
* `class_init` has installed the vfuncs, properties and signals declared here. It receives the
|
|
151
|
+
* new type's class struct wrapped in its generated GTypeStruct wrapper, so class-level setup
|
|
152
|
+
* calls such as `Gtk.WidgetClass.installAction`, `Gtk.WidgetClass.addShortcut` and
|
|
153
|
+
* `Gtk.WidgetClass.setLayoutManagerType` have somewhere to land. The wrapper serves the
|
|
154
|
+
* members of every struct in the parent chain on one object: a widget subclass sees
|
|
155
|
+
* `Gtk.WidgetClass` and `GObject.ObjectClass` members alike, so the parameter can be declared
|
|
156
|
+
* as whichever of those types the hook needs. The class struct belongs to the type system for
|
|
157
|
+
* the life of the process, so keeping the wrapper around past the hook is safe, if rarely
|
|
158
|
+
* useful. An exception the hook throws propagates out of `registerClass`, with the type
|
|
159
|
+
* already registered: GObject offers no way to unregister a static type.
|
|
160
|
+
*/
|
|
161
|
+
classInit?(typeStruct: object): void;
|
|
63
162
|
/**
|
|
64
163
|
* Interfaces the new type implements on top of the ones it inherits, given as the interface values
|
|
65
164
|
* themselves, such as `Gio.ListModel`. Their vtable slots are filled from the `vfunc`-prefixed methods on
|
|
@@ -71,10 +170,15 @@ type RegisterClassOptions<TInstance extends object, TProperties extends Record<s
|
|
|
71
170
|
* Properties to install on the new type, keyed by the name JavaScript addresses each one by and
|
|
72
171
|
* valued with the `GObject.ParamSpec` describing it. A key is read in camelCase however it is
|
|
73
172
|
* written, so `dewPoint`, `dew_point` and `dew-point` all name the same member, and the ParamSpec
|
|
74
|
-
* has to carry
|
|
75
|
-
* ParamSpec's name is the one GObject emits `notify` with, and a name the key does
|
|
76
|
-
* reaches nothing that listens for it.
|
|
77
|
-
*
|
|
173
|
+
* has to carry a name that reads back as that same member, such as `dew-point`, or registration
|
|
174
|
+
* throws: the ParamSpec's name is the one GObject emits `notify` with, and a name the key does
|
|
175
|
+
* not spell reaches nothing that listens for it. A word starting with a digit is a word of its
|
|
176
|
+
* own on either side of that reading, so `level2Depth` takes a ParamSpec named `level-2-depth`
|
|
177
|
+
* as readily as one named `level2-depth`, the way `WebKit.Settings` names
|
|
178
|
+
* `enable-2d-canvas-acceleration` for its `enable2dCanvasAcceleration` member. An uppercase
|
|
179
|
+
* letter in the ParamSpec's own name is refused, since GObject notifies under that spelling
|
|
180
|
+
* and nothing else reads it back. Every property gains prototype accessors, one for the key as
|
|
181
|
+
* written, one for it with dashes turned into underscores and one for it in camelCase, each
|
|
78
182
|
* unless the class already defines that name. They serve the value from storage of their own on
|
|
79
183
|
* the instance, which is also what the type's `get_property` and `set_property` slots read and
|
|
80
184
|
* write, so a value set from JavaScript, from `g_object_set_property` and at construction all
|
|
@@ -123,6 +227,30 @@ type RegisterClassOptions<TInstance extends object, TProperties extends Record<s
|
|
|
123
227
|
* and write it rather than the generated storage.
|
|
124
228
|
*/
|
|
125
229
|
properties?: TProperties;
|
|
230
|
+
/**
|
|
231
|
+
* Signals to create on the new type, keyed by signal name and valued with the
|
|
232
|
+
* {@link SignalSpec} describing each one. A name has to start with a lowercase letter, continue
|
|
233
|
+
* in lowercase letters, digits, `-` and `_`, and be new to the type: one an ancestor type or a
|
|
234
|
+
* listed interface already carries throws, and so does one carrying an uppercase letter, which
|
|
235
|
+
* GObject would carry under that exact spelling, out of reach of both its dashed spelling and
|
|
236
|
+
* its `on<SignalName>` default handler. The two word separators spell the same signal, so a
|
|
237
|
+
* signal declared as `data_changed` is connected to and emitted as `data-changed` too.
|
|
238
|
+
*
|
|
239
|
+
* Instances connect and emit by name through the same `connect`, `on`, `once`, `off` and
|
|
240
|
+
* `emit` surface inherited signals use: `registerClass` wraps `connect` and `emit` on the
|
|
241
|
+
* class's prototype to serve the declared names, unless the class defines the member itself,
|
|
242
|
+
* and hands every other name to the inherited implementation. A handler receives the
|
|
243
|
+
* emission's arguments without the leading emitter, matching a generated signal, and what it
|
|
244
|
+
* returns becomes the emission's return value when the signal declares one.
|
|
245
|
+
*
|
|
246
|
+
* The declared parameter GTypes rule the emission: `emit` takes exactly one argument per
|
|
247
|
+
* declared parameter, throwing a `TypeError` for any other count, and converts each argument
|
|
248
|
+
* into a `GValue` of the declared type, throwing for a value that type cannot hold. The signals
|
|
249
|
+
* are created with no class closure of their own, but a method named `on<SignalName>`
|
|
250
|
+
* becomes the signal's default handler, the way every `on`-prefixed method that names a
|
|
251
|
+
* signal the type carries does; see {@link registerClass}.
|
|
252
|
+
*/
|
|
253
|
+
signals?: TSignals;
|
|
126
254
|
};
|
|
127
255
|
/**
|
|
128
256
|
* Registers a subclass of a wrapper class as a new GType, wiring up any class and interface
|
|
@@ -130,10 +258,19 @@ type RegisterClassOptions<TInstance extends object, TProperties extends Record<s
|
|
|
130
258
|
* `RegisterClassOptions.implements` names.
|
|
131
259
|
*
|
|
132
260
|
* Throws when the class does not extend a registered wrapper class, when it has no derivable type
|
|
133
|
-
* name
|
|
261
|
+
* name or the name is not a valid GType name, when an entry in
|
|
262
|
+
* `RegisterClassOptions.implements` is not a registered interface, when a
|
|
134
263
|
* listed interface has a prerequisite that neither the parent type nor another listed interface meets,
|
|
135
|
-
*
|
|
136
|
-
*
|
|
264
|
+
* when the list names `Gio.AsyncInitable` as an interface the parent type does not already
|
|
265
|
+
* implement and no method on the chain fills `vfuncInitAsync`, since the default `init_async`
|
|
266
|
+
* would run `vfuncInit` on a worker thread, when an entry in
|
|
267
|
+
* `RegisterClassOptions.properties` names its `GObject.ParamSpec` something the key it sits under
|
|
268
|
+
* does not spell, when an entry in `RegisterClassOptions.signals` carries an invalid name, a name
|
|
269
|
+
* spelled with an uppercase letter rather than dashed, a name the type already knows, a GType
|
|
270
|
+
* that cannot hold a value, or an accumulator the spec does not admit, and when
|
|
271
|
+
* `RegisterClassOptions.cssName` is
|
|
272
|
+
* given for a class that does not extend `Gtk.Widget`. An exception thrown by
|
|
273
|
+
* `RegisterClassOptions.classInit` also propagates, after the type has already been registered.
|
|
137
274
|
*
|
|
138
275
|
* A slot is filled from the `vfunc`-prefixed methods on the class's prototype chain, up to but not
|
|
139
276
|
* including the registered ancestor the class extends, so a method an intermediate base class
|
|
@@ -143,6 +280,19 @@ type RegisterClassOptions<TInstance extends object, TProperties extends Record<s
|
|
|
143
280
|
* Declare every slot as a method: a class field holding a function, such as `vfuncGetNItems = () => 1`,
|
|
144
281
|
* is assigned to each instance after registration and never reaches the vtable.
|
|
145
282
|
*
|
|
283
|
+
* A method named `on<SignalName>` — the signal's name in camelCase after the `on`, so `onClicked`
|
|
284
|
+
* for `clicked` and `onItemsChanged` for `items-changed` — becomes that signal's default handler
|
|
285
|
+
* when the type carries the signal, whether an ancestor type or an implemented interface brings it
|
|
286
|
+
* or `RegisterClassOptions.signals` declares it. The method is installed as a class-closure
|
|
287
|
+
* override, so it runs on every emission, on the instances a native caller creates included, in
|
|
288
|
+
* the stage the signal's flags name rather than alongside connected handlers. It receives the
|
|
289
|
+
* emission's arguments without the leading emitter, with `this` bound to the emitter, and what it
|
|
290
|
+
* returns becomes the emission's result when the signal declares one. The same discovery walks the
|
|
291
|
+
* prototype chain vfunc discovery walks, and a subclass registering its own `on<SignalName>`
|
|
292
|
+
* replaces the handler for its instances, where `super.on<SignalName>()` reaches the replaced one.
|
|
293
|
+
* An `on`-prefixed method naming no signal the type carries is left alone as the ordinary method
|
|
294
|
+
* it is.
|
|
295
|
+
*
|
|
146
296
|
* An override of `vfuncConstructed` runs from inside the base constructor, before JavaScript
|
|
147
297
|
* installs the subclass's field initializers and runs its constructor body, so a field still
|
|
148
298
|
* reads `undefined` there and reading a `#private` field throws. Declare state the override
|
|
@@ -155,6 +305,6 @@ type RegisterClassOptions<TInstance extends object, TProperties extends Record<s
|
|
|
155
305
|
* @param options What the new GType gains beyond the vtable slots the class overrides.
|
|
156
306
|
* @returns The same class, now registered, with every name in `options.properties` in its property map.
|
|
157
307
|
*/
|
|
158
|
-
declare function registerClass<T extends AnyClass, TProperties extends Record<string, PropertySpec> = Record<never, PropertySpec>>(klass: T, options?: RegisterClassOptions<T["prototype"], TProperties>): RegisteredClass<T, TProperties>;
|
|
159
|
-
export { type Interface, registerClass };
|
|
308
|
+
declare function registerClass<T extends AnyClass, TProperties extends Record<string, PropertySpec> = Record<never, PropertySpec>, TSignals extends Record<string, SignalSpec> = Record<never, SignalSpec>>(klass: T, options?: RegisterClassOptions<T["prototype"], TProperties, TSignals>): RegisteredClass<T, TProperties, TSignals>;
|
|
309
|
+
export { type Interface, registerClass, type SignalGType, type SignalSpec };
|
|
160
310
|
//# sourceMappingURL=register-class.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-class.d.ts","sourceRoot":"","sources":["../src/register-class.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"register-class.d.ts","sourceRoot":"","sources":["../src/register-class.ts"],"names":[],"mappings":"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"}
|