@ricsam/quickjs-core 0.2.13 → 0.2.14

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.
@@ -44,6 +44,25 @@ module.exports = __toCommonJS(exports_class_builder);
44
44
  var import_unmarshal = require("./unmarshal.cjs");
45
45
  var import_marshal = require("./marshal.cjs");
46
46
  var import_instance_state = require("./instance-state.cjs");
47
+ var ERROR_TYPES = ["TypeError", "RangeError", "SyntaxError", "ReferenceError", "URIError", "EvalError"];
48
+ function createTypedError(context, error) {
49
+ if (ERROR_TYPES.includes(error.name)) {
50
+ const ctor = context.getProp(context.global, error.name);
51
+ if (context.typeof(ctor) === "function") {
52
+ const messageHandle = context.newString(error.message);
53
+ const result = context.callFunction(ctor, context.undefined, messageHandle);
54
+ messageHandle.dispose();
55
+ ctor.dispose();
56
+ if (!result.error) {
57
+ return result.value;
58
+ }
59
+ result.error.dispose();
60
+ } else {
61
+ ctor.dispose();
62
+ }
63
+ }
64
+ return context.newError(error.message);
65
+ }
47
66
  function createStateMap() {
48
67
  return new WeakMap;
49
68
  }
@@ -119,7 +138,10 @@ function defineClass(context, stateMap, definition) {
119
138
  }
120
139
  return import_marshal.marshal(context, result2);
121
140
  } catch (error) {
122
- throw context.newError(error instanceof Error ? error.message : String(error));
141
+ if (error instanceof Error) {
142
+ throw createTypedError(context, error);
143
+ }
144
+ throw context.newError(String(error));
123
145
  }
124
146
  });
125
147
  context.setProp(context.global, "__hostCall__", hostCallFn);
@@ -245,4 +267,4 @@ function clearAllInstanceState() {
245
267
  }
246
268
  })
247
269
 
248
- //# debugId=61342FF6ED70C98864756E2164756E21
270
+ //# debugId=78C1167D606D614964756E2164756E21
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/class-builder.ts"],
4
4
  "sourcesContent": [
5
- "import type { QuickJSContext, QuickJSHandle } from \"quickjs-emscripten\";\nimport type { ClassDefinition, StateMap } from \"./types.cjs\";\nimport { unmarshal } from \"./unmarshal.cjs\";\nimport { marshal } from \"./marshal.cjs\";\nimport {\n nextInstanceId,\n registerInstance,\n getInstanceStateById as getStateById,\n setInstanceStateById,\n cleanupInstanceState as cleanupState,\n clearAllInstanceState as clearAllState,\n} from \"./instance-state.cjs\";\n\n/**\n * Create a new StateMap for tracking object internal states\n */\nexport function createStateMap(): StateMap {\n return new WeakMap();\n}\n\n/**\n * Get the internal state associated with a QuickJS object handle\n */\nexport function getState<T extends object>(\n stateMap: StateMap,\n handle: QuickJSHandle\n): T | undefined {\n return stateMap.get(handle) as T | undefined;\n}\n\n/**\n * Set the internal state associated with a QuickJS object handle\n */\nexport function setState<T extends object>(\n stateMap: StateMap,\n handle: QuickJSHandle,\n state: T\n): void {\n stateMap.set(handle, state);\n}\n\n// Instance state is now managed by instance-state.ts\n\n/**\n * Define a class in the QuickJS context\n *\n * Uses evalCode to create a proper JavaScript class that can be called with 'new'.\n * Host-side callbacks are registered and invoked by the JavaScript class.\n *\n * @returns Handle to the class constructor (caller must manage disposal)\n *\n * @example\n * const Point = defineClass(context, stateMap, {\n * name: \"Point\",\n * construct: ([x, y]) => ({ x: Number(x), y: Number(y) }),\n * methods: {\n * distance(this: { x: number; y: number }) {\n * return Math.sqrt(this.x ** 2 + this.y ** 2);\n * }\n * },\n * properties: {\n * x: {\n * get(this: { x: number }) { return this.x; },\n * set(this: { x: number }, v: unknown) { this.x = Number(v); }\n * }\n * }\n * });\n * context.setProp(context.global, \"Point\", Point);\n */\nexport function defineClass<TState extends object>(\n context: QuickJSContext,\n stateMap: StateMap,\n definition: ClassDefinition<TState>\n): QuickJSHandle {\n const className = definition.name;\n\n // Create the __hostCall__ function if it doesn't exist\n const existingHostCall = context.getProp(context.global, \"__hostCall__\");\n const hasHostCall = context.typeof(existingHostCall) === \"function\";\n existingHostCall.dispose();\n\n if (!hasHostCall) {\n const hostCallFn = context.newFunction(\"__hostCall__\", (classNameHandle, actionHandle, instanceIdHandle, ...argHandles) => {\n const classNameStr = context.getString(classNameHandle);\n const action = context.getString(actionHandle);\n const instanceId = context.getNumber(instanceIdHandle);\n const args = argHandles.map((h) => unmarshal(context, h));\n\n const callbacks = classCallbackRegistry.get(classNameStr);\n if (!callbacks) {\n throw context.newError(`No callbacks registered for class ${classNameStr}`);\n }\n\n const state = getStateById<TState>(instanceId);\n\n try {\n let result: unknown;\n\n if (action === \"__construct__\") {\n // Constructor call\n if (callbacks.construct) {\n const newState = callbacks.construct(args);\n // Register instance with className for cross-class access\n registerInstance(instanceId, classNameStr, newState);\n result = undefined;\n }\n } else if (action.startsWith(\"get:\")) {\n // Getter call\n const propName = action.slice(4);\n const getter = callbacks.properties?.[propName]?.get;\n if (getter && state) {\n result = getter.call(state);\n }\n } else if (action.startsWith(\"set:\")) {\n // Setter call\n const propName = action.slice(4);\n const setter = callbacks.properties?.[propName]?.set;\n if (setter && state) {\n setter.call(state, args[0]);\n }\n result = undefined;\n } else if (action.startsWith(\"static:\")) {\n // Static method call\n const methodName = action.slice(7);\n const staticMethod = callbacks.staticMethods?.[methodName];\n if (staticMethod) {\n result = staticMethod(...args);\n }\n } else {\n // Instance method call\n const method = callbacks.methods?.[action];\n if (method && state) {\n result = method.call(state, ...args);\n }\n }\n\n // Handle promises\n if (result instanceof Promise) {\n const deferred = context.newPromise();\n result\n .then((resolved) => {\n const resolvedHandle = marshal(context, resolved);\n deferred.resolve(resolvedHandle);\n resolvedHandle.dispose();\n context.runtime.executePendingJobs();\n })\n .catch((error) => {\n const errorHandle = marshal(\n context,\n error instanceof Error\n ? { name: error.name, message: error.message }\n : { message: String(error) }\n );\n deferred.reject(errorHandle);\n errorHandle.dispose();\n context.runtime.executePendingJobs();\n });\n return deferred.handle;\n }\n\n return marshal(context, result);\n } catch (error) {\n throw context.newError(\n error instanceof Error ? error.message : String(error)\n );\n }\n });\n context.setProp(context.global, \"__hostCall__\", hostCallFn);\n hostCallFn.dispose();\n }\n\n // Create __nextInstanceId__ function if it doesn't exist\n const existingNextId = context.getProp(context.global, \"__nextInstanceId__\");\n const hasNextId = context.typeof(existingNextId) === \"function\";\n existingNextId.dispose();\n\n if (!hasNextId) {\n const nextIdFn = context.newFunction(\"__nextInstanceId__\", () => {\n return context.newNumber(nextInstanceId());\n });\n context.setProp(context.global, \"__nextInstanceId__\", nextIdFn);\n nextIdFn.dispose();\n }\n\n // Register callbacks for this class\n const callbacks: ClassCallbacks<TState> = {\n construct: definition.construct,\n methods: definition.methods,\n properties: definition.properties,\n staticMethods: definition.staticMethods,\n };\n classCallbackRegistry.set(className, callbacks as unknown as ClassCallbacks<object>);\n\n // Build the JavaScript class code\n let classCode = `(function() {\n const __className__ = ${JSON.stringify(className)};\n\n class ${className} {\n constructor(...args) {\n Object.defineProperty(this, '__instanceId__', {\n value: __nextInstanceId__(),\n enumerable: false,\n writable: false,\n configurable: false\n });\n __hostCall__(__className__, \"__construct__\", this.__instanceId__, ...args);\n }\n`;\n\n // Add methods\n if (definition.methods) {\n for (const methodName of Object.keys(definition.methods)) {\n classCode += `\n ${methodName}(...args) {\n return __hostCall__(__className__, ${JSON.stringify(methodName)}, this.__instanceId__, ...args);\n }\n`;\n }\n }\n\n // Add properties (getters/setters)\n if (definition.properties) {\n for (const [propName, descriptor] of Object.entries(definition.properties)) {\n if (descriptor.get) {\n classCode += `\n get ${propName}() {\n return __hostCall__(__className__, \"get:${propName}\", this.__instanceId__);\n }\n`;\n }\n if (descriptor.set) {\n classCode += `\n set ${propName}(value) {\n __hostCall__(__className__, \"set:${propName}\", this.__instanceId__, value);\n }\n`;\n }\n }\n }\n\n // Close the class definition\n classCode += ` }\n`;\n\n // Add static methods\n if (definition.staticMethods) {\n for (const methodName of Object.keys(definition.staticMethods)) {\n classCode += `\n ${className}.${methodName} = function(...args) {\n return __hostCall__(__className__, \"static:${methodName}\", 0, ...args);\n };\n`;\n }\n }\n\n // Add static properties\n if (definition.staticProperties) {\n for (const [propName, value] of Object.entries(definition.staticProperties)) {\n classCode += `\n ${className}.${propName} = ${JSON.stringify(value)};\n`;\n }\n }\n\n classCode += `\n return ${className};\n})()`;\n\n // Evaluate the class definition\n const result = context.evalCode(classCode);\n if (result.error) {\n const error = context.dump(result.error);\n result.error.dispose();\n throw new Error(`Failed to define class ${className}: ${JSON.stringify(error)}`);\n }\n\n // Store reference to instance state in stateMap for backwards compatibility\n // When an instance handle is accessed, we can look up its state via __instanceId__\n const classHandle = result.value;\n\n return classHandle;\n}\n\n// Registry for class callbacks\ninterface ClassCallbacks<TState extends object> {\n construct?: (args: unknown[]) => TState;\n methods?: Record<string, (this: TState, ...args: unknown[]) => unknown>;\n properties?: Record<string, { get?: (this: TState) => unknown; set?: (this: TState, value: unknown) => void }>;\n staticMethods?: Record<string, (...args: unknown[]) => unknown>;\n}\n\nconst classCallbackRegistry = new Map<string, ClassCallbacks<object>>();\n\n/**\n * Get internal state for a QuickJS instance by extracting its __instanceId__\n */\nexport function getInstanceState<T>(\n context: QuickJSContext,\n instanceHandle: QuickJSHandle\n): T | undefined {\n const idHandle = context.getProp(instanceHandle, \"__instanceId__\");\n if (context.typeof(idHandle) !== \"number\") {\n idHandle.dispose();\n return undefined;\n }\n const id = context.getNumber(idHandle);\n idHandle.dispose();\n return getStateById<T>(id);\n}\n\n/**\n * Set internal state for a QuickJS instance by extracting its __instanceId__\n */\nexport function setInstanceState<T>(\n context: QuickJSContext,\n instanceHandle: QuickJSHandle,\n state: T\n): void {\n const idHandle = context.getProp(instanceHandle, \"__instanceId__\");\n if (context.typeof(idHandle) !== \"number\") {\n idHandle.dispose();\n throw new Error(\"Cannot set state: instance has no __instanceId__\");\n }\n const id = context.getNumber(idHandle);\n idHandle.dispose();\n setInstanceStateById(id, state);\n}\n\n/**\n * Get internal state by instance ID directly\n * Useful when you have the instanceId from an unmarshaled object\n */\nexport function getInstanceStateById<T>(instanceId: number): T | undefined {\n return getStateById<T>(instanceId);\n}\n\n/**\n * Clean up instance state when an instance is no longer needed\n */\nexport function cleanupInstanceState(instanceId: number): void {\n cleanupState(instanceId);\n}\n\n/**\n * Clear all instance state (useful for context disposal or testing cleanup)\n */\nexport function clearAllInstanceState(): void {\n clearAllState();\n}\n"
5
+ "import type { QuickJSContext, QuickJSHandle } from \"quickjs-emscripten\";\nimport type { ClassDefinition, StateMap } from \"./types.cjs\";\nimport { unmarshal } from \"./unmarshal.cjs\";\nimport { marshal } from \"./marshal.cjs\";\nimport {\n nextInstanceId,\n registerInstance,\n getInstanceStateById as getStateById,\n setInstanceStateById,\n cleanupInstanceState as cleanupState,\n clearAllInstanceState as clearAllState,\n} from \"./instance-state.cjs\";\n\n// ============================================\n// Error Type Preservation\n// ============================================\n\n/**\n * Supported error types for typed error creation.\n */\nconst ERROR_TYPES = [\"TypeError\", \"RangeError\", \"SyntaxError\", \"ReferenceError\", \"URIError\", \"EvalError\"] as const;\n\n/**\n * Create a typed error in the QuickJS context.\n * Gets the error constructor fresh each time to avoid handle lifecycle issues.\n */\nfunction createTypedError(\n context: QuickJSContext,\n error: Error\n): QuickJSHandle {\n if ((ERROR_TYPES as readonly string[]).includes(error.name)) {\n const ctor = context.getProp(context.global, error.name);\n if (context.typeof(ctor) === \"function\") {\n const messageHandle = context.newString(error.message);\n const result = context.callFunction(ctor, context.undefined, messageHandle);\n messageHandle.dispose();\n ctor.dispose();\n\n if (!result.error) {\n return result.value;\n }\n result.error.dispose();\n } else {\n ctor.dispose();\n }\n }\n\n // Fallback to generic Error\n return context.newError(error.message);\n}\n\n/**\n * Create a new StateMap for tracking object internal states\n */\nexport function createStateMap(): StateMap {\n return new WeakMap();\n}\n\n/**\n * Get the internal state associated with a QuickJS object handle\n */\nexport function getState<T extends object>(\n stateMap: StateMap,\n handle: QuickJSHandle\n): T | undefined {\n return stateMap.get(handle) as T | undefined;\n}\n\n/**\n * Set the internal state associated with a QuickJS object handle\n */\nexport function setState<T extends object>(\n stateMap: StateMap,\n handle: QuickJSHandle,\n state: T\n): void {\n stateMap.set(handle, state);\n}\n\n// Instance state is now managed by instance-state.ts\n\n/**\n * Define a class in the QuickJS context\n *\n * Uses evalCode to create a proper JavaScript class that can be called with 'new'.\n * Host-side callbacks are registered and invoked by the JavaScript class.\n *\n * @returns Handle to the class constructor (caller must manage disposal)\n *\n * @example\n * const Point = defineClass(context, stateMap, {\n * name: \"Point\",\n * construct: ([x, y]) => ({ x: Number(x), y: Number(y) }),\n * methods: {\n * distance(this: { x: number; y: number }) {\n * return Math.sqrt(this.x ** 2 + this.y ** 2);\n * }\n * },\n * properties: {\n * x: {\n * get(this: { x: number }) { return this.x; },\n * set(this: { x: number }, v: unknown) { this.x = Number(v); }\n * }\n * }\n * });\n * context.setProp(context.global, \"Point\", Point);\n */\nexport function defineClass<TState extends object>(\n context: QuickJSContext,\n stateMap: StateMap,\n definition: ClassDefinition<TState>\n): QuickJSHandle {\n const className = definition.name;\n\n // Create the __hostCall__ function if it doesn't exist\n const existingHostCall = context.getProp(context.global, \"__hostCall__\");\n const hasHostCall = context.typeof(existingHostCall) === \"function\";\n existingHostCall.dispose();\n\n if (!hasHostCall) {\n const hostCallFn = context.newFunction(\"__hostCall__\", (classNameHandle, actionHandle, instanceIdHandle, ...argHandles) => {\n const classNameStr = context.getString(classNameHandle);\n const action = context.getString(actionHandle);\n const instanceId = context.getNumber(instanceIdHandle);\n const args = argHandles.map((h) => unmarshal(context, h));\n\n const callbacks = classCallbackRegistry.get(classNameStr);\n if (!callbacks) {\n throw context.newError(`No callbacks registered for class ${classNameStr}`);\n }\n\n const state = getStateById<TState>(instanceId);\n\n try {\n let result: unknown;\n\n if (action === \"__construct__\") {\n // Constructor call\n if (callbacks.construct) {\n const newState = callbacks.construct(args);\n // Register instance with className for cross-class access\n registerInstance(instanceId, classNameStr, newState);\n result = undefined;\n }\n } else if (action.startsWith(\"get:\")) {\n // Getter call\n const propName = action.slice(4);\n const getter = callbacks.properties?.[propName]?.get;\n if (getter && state) {\n result = getter.call(state);\n }\n } else if (action.startsWith(\"set:\")) {\n // Setter call\n const propName = action.slice(4);\n const setter = callbacks.properties?.[propName]?.set;\n if (setter && state) {\n setter.call(state, args[0]);\n }\n result = undefined;\n } else if (action.startsWith(\"static:\")) {\n // Static method call\n const methodName = action.slice(7);\n const staticMethod = callbacks.staticMethods?.[methodName];\n if (staticMethod) {\n result = staticMethod(...args);\n }\n } else {\n // Instance method call\n const method = callbacks.methods?.[action];\n if (method && state) {\n result = method.call(state, ...args);\n }\n }\n\n // Handle promises\n if (result instanceof Promise) {\n const deferred = context.newPromise();\n result\n .then((resolved) => {\n const resolvedHandle = marshal(context, resolved);\n deferred.resolve(resolvedHandle);\n resolvedHandle.dispose();\n context.runtime.executePendingJobs();\n })\n .catch((error) => {\n const errorHandle = marshal(\n context,\n error instanceof Error\n ? { name: error.name, message: error.message }\n : { message: String(error) }\n );\n deferred.reject(errorHandle);\n errorHandle.dispose();\n context.runtime.executePendingJobs();\n });\n return deferred.handle;\n }\n\n return marshal(context, result);\n } catch (error) {\n // Preserve error type (TypeError, RangeError, etc.) when re-throwing\n if (error instanceof Error) {\n throw createTypedError(context, error);\n }\n throw context.newError(String(error));\n }\n });\n context.setProp(context.global, \"__hostCall__\", hostCallFn);\n hostCallFn.dispose();\n }\n\n // Create __nextInstanceId__ function if it doesn't exist\n const existingNextId = context.getProp(context.global, \"__nextInstanceId__\");\n const hasNextId = context.typeof(existingNextId) === \"function\";\n existingNextId.dispose();\n\n if (!hasNextId) {\n const nextIdFn = context.newFunction(\"__nextInstanceId__\", () => {\n return context.newNumber(nextInstanceId());\n });\n context.setProp(context.global, \"__nextInstanceId__\", nextIdFn);\n nextIdFn.dispose();\n }\n\n // Register callbacks for this class\n const callbacks: ClassCallbacks<TState> = {\n construct: definition.construct,\n methods: definition.methods,\n properties: definition.properties,\n staticMethods: definition.staticMethods,\n };\n classCallbackRegistry.set(className, callbacks as unknown as ClassCallbacks<object>);\n\n // Build the JavaScript class code\n let classCode = `(function() {\n const __className__ = ${JSON.stringify(className)};\n\n class ${className} {\n constructor(...args) {\n Object.defineProperty(this, '__instanceId__', {\n value: __nextInstanceId__(),\n enumerable: false,\n writable: false,\n configurable: false\n });\n __hostCall__(__className__, \"__construct__\", this.__instanceId__, ...args);\n }\n`;\n\n // Add methods\n if (definition.methods) {\n for (const methodName of Object.keys(definition.methods)) {\n classCode += `\n ${methodName}(...args) {\n return __hostCall__(__className__, ${JSON.stringify(methodName)}, this.__instanceId__, ...args);\n }\n`;\n }\n }\n\n // Add properties (getters/setters)\n if (definition.properties) {\n for (const [propName, descriptor] of Object.entries(definition.properties)) {\n if (descriptor.get) {\n classCode += `\n get ${propName}() {\n return __hostCall__(__className__, \"get:${propName}\", this.__instanceId__);\n }\n`;\n }\n if (descriptor.set) {\n classCode += `\n set ${propName}(value) {\n __hostCall__(__className__, \"set:${propName}\", this.__instanceId__, value);\n }\n`;\n }\n }\n }\n\n // Close the class definition\n classCode += ` }\n`;\n\n // Add static methods\n if (definition.staticMethods) {\n for (const methodName of Object.keys(definition.staticMethods)) {\n classCode += `\n ${className}.${methodName} = function(...args) {\n return __hostCall__(__className__, \"static:${methodName}\", 0, ...args);\n };\n`;\n }\n }\n\n // Add static properties\n if (definition.staticProperties) {\n for (const [propName, value] of Object.entries(definition.staticProperties)) {\n classCode += `\n ${className}.${propName} = ${JSON.stringify(value)};\n`;\n }\n }\n\n classCode += `\n return ${className};\n})()`;\n\n // Evaluate the class definition\n const result = context.evalCode(classCode);\n if (result.error) {\n const error = context.dump(result.error);\n result.error.dispose();\n throw new Error(`Failed to define class ${className}: ${JSON.stringify(error)}`);\n }\n\n // Store reference to instance state in stateMap for backwards compatibility\n // When an instance handle is accessed, we can look up its state via __instanceId__\n const classHandle = result.value;\n\n return classHandle;\n}\n\n// Registry for class callbacks\ninterface ClassCallbacks<TState extends object> {\n construct?: (args: unknown[]) => TState;\n methods?: Record<string, (this: TState, ...args: unknown[]) => unknown>;\n properties?: Record<string, { get?: (this: TState) => unknown; set?: (this: TState, value: unknown) => void }>;\n staticMethods?: Record<string, (...args: unknown[]) => unknown>;\n}\n\nconst classCallbackRegistry = new Map<string, ClassCallbacks<object>>();\n\n/**\n * Get internal state for a QuickJS instance by extracting its __instanceId__\n */\nexport function getInstanceState<T>(\n context: QuickJSContext,\n instanceHandle: QuickJSHandle\n): T | undefined {\n const idHandle = context.getProp(instanceHandle, \"__instanceId__\");\n if (context.typeof(idHandle) !== \"number\") {\n idHandle.dispose();\n return undefined;\n }\n const id = context.getNumber(idHandle);\n idHandle.dispose();\n return getStateById<T>(id);\n}\n\n/**\n * Set internal state for a QuickJS instance by extracting its __instanceId__\n */\nexport function setInstanceState<T>(\n context: QuickJSContext,\n instanceHandle: QuickJSHandle,\n state: T\n): void {\n const idHandle = context.getProp(instanceHandle, \"__instanceId__\");\n if (context.typeof(idHandle) !== \"number\") {\n idHandle.dispose();\n throw new Error(\"Cannot set state: instance has no __instanceId__\");\n }\n const id = context.getNumber(idHandle);\n idHandle.dispose();\n setInstanceStateById(id, state);\n}\n\n/**\n * Get internal state by instance ID directly\n * Useful when you have the instanceId from an unmarshaled object\n */\nexport function getInstanceStateById<T>(instanceId: number): T | undefined {\n return getStateById<T>(instanceId);\n}\n\n/**\n * Clean up instance state when an instance is no longer needed\n */\nexport function cleanupInstanceState(instanceId: number): void {\n cleanupState(instanceId);\n}\n\n/**\n * Clear all instance state (useful for context disposal or testing cleanup)\n */\nexport function clearAllInstanceState(): void {\n clearAllState();\n}\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "61342FF6ED70C98864756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "78C1167D606D614964756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -30,11 +30,16 @@ var __export = (target, all) => {
30
30
  // packages/core/src/class-helpers.ts
31
31
  var exports_class_helpers = {};
32
32
  __export(exports_class_helpers, {
33
+ isUnmarshalledResponse: () => isUnmarshalledResponse,
34
+ isUnmarshalledRequest: () => isUnmarshalledRequest,
35
+ isUnmarshalledHeaders: () => isUnmarshalledHeaders,
36
+ isUnmarshalledFormData: () => isUnmarshalledFormData,
33
37
  isInstanceOf: () => isInstanceOf,
34
38
  isDefineClassInstance: () => isDefineClassInstance,
35
39
  getInstanceId: () => getInstanceId,
36
40
  getClassName: () => getClassName,
37
- getClassInstanceState: () => getClassInstanceState
41
+ getClassInstanceState: () => getClassInstanceState,
42
+ createClassTypeGuard: () => createClassTypeGuard
38
43
  });
39
44
  module.exports = __toCommonJS(exports_class_helpers);
40
45
  var import_instance_state = require("./instance-state.cjs");
@@ -62,6 +67,15 @@ function getClassName(value) {
62
67
  }
63
68
  return;
64
69
  }
70
+ function createClassTypeGuard(className) {
71
+ return (value) => {
72
+ return isDefineClassInstance(value) && value.__className__ === className;
73
+ };
74
+ }
75
+ var isUnmarshalledRequest = createClassTypeGuard("Request");
76
+ var isUnmarshalledResponse = createClassTypeGuard("Response");
77
+ var isUnmarshalledHeaders = createClassTypeGuard("Headers");
78
+ var isUnmarshalledFormData = createClassTypeGuard("FormData");
65
79
  })
66
80
 
67
- //# debugId=D9173CA5B729846964756E2164756E21
81
+ //# debugId=A73BCCB5F8467BBE64756E2164756E21
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/class-helpers.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * Helper functions for working with defineClass instances\n *\n * These helpers enable cross-class state access when class instances\n * are passed between methods (e.g., File to FormData.append).\n */\n\nimport { getInstanceStateById } from \"./instance-state.cjs\";\n\n/**\n * Represents an unmarshalled defineClass instance\n */\nexport interface DefineClassInstance {\n __instanceId__: number;\n __className__: string;\n __isDefineClassInstance__: true;\n}\n\n/**\n * Type guard to check if a value is a defineClass instance\n */\nexport function isDefineClassInstance(\n value: unknown\n): value is DefineClassInstance {\n return (\n value !== null &&\n typeof value === \"object\" &&\n \"__isDefineClassInstance__\" in value &&\n (value as DefineClassInstance).__isDefineClassInstance__ === true &&\n \"__instanceId__\" in value &&\n typeof (value as DefineClassInstance).__instanceId__ === \"number\" &&\n \"__className__\" in value &&\n typeof (value as DefineClassInstance).__className__ === \"string\"\n );\n}\n\n/**\n * Check if an unmarshalled value is an instance of a specific class\n *\n * @example\n * if (isInstanceOf(value, \"File\")) {\n * const fileState = getClassInstanceState<FileState>(value);\n * }\n */\nexport function isInstanceOf(value: unknown, className: string): boolean {\n return isDefineClassInstance(value) && value.__className__ === className;\n}\n\n/**\n * Get the internal state of a defineClass instance\n *\n * @example\n * const fileState = getClassInstanceState<FileInternalState>(value);\n * if (fileState) {\n * console.log(fileState.parts, fileState.name);\n * }\n */\nexport function getClassInstanceState<T>(value: unknown): T | undefined {\n if (!isDefineClassInstance(value)) {\n return undefined;\n }\n return getInstanceStateById<T>(value.__instanceId__);\n}\n\n/**\n * Get the instance ID from an unmarshalled value if it's a defineClass instance\n */\nexport function getInstanceId(value: unknown): number | undefined {\n if (isDefineClassInstance(value)) {\n return value.__instanceId__;\n }\n return undefined;\n}\n\n/**\n * Get the class name from an unmarshalled value if it's a defineClass instance\n */\nexport function getClassName(value: unknown): string | undefined {\n if (isDefineClassInstance(value)) {\n return value.__className__;\n }\n return undefined;\n}\n"
5
+ "/**\n * Helper functions for working with defineClass instances\n *\n * These helpers enable cross-class state access when class instances\n * are passed between methods (e.g., File to FormData.append).\n */\n\nimport { getInstanceStateById } from \"./instance-state.cjs\";\n\n/**\n * Represents an unmarshalled defineClass instance\n */\nexport interface DefineClassInstance {\n __instanceId__: number;\n __className__: string;\n __isDefineClassInstance__: true;\n}\n\n/**\n * Type guard to check if a value is a defineClass instance\n */\nexport function isDefineClassInstance(\n value: unknown\n): value is DefineClassInstance {\n return (\n value !== null &&\n typeof value === \"object\" &&\n \"__isDefineClassInstance__\" in value &&\n (value as DefineClassInstance).__isDefineClassInstance__ === true &&\n \"__instanceId__\" in value &&\n typeof (value as DefineClassInstance).__instanceId__ === \"number\" &&\n \"__className__\" in value &&\n typeof (value as DefineClassInstance).__className__ === \"string\"\n );\n}\n\n/**\n * Check if an unmarshalled value is an instance of a specific class\n *\n * @example\n * if (isInstanceOf(value, \"File\")) {\n * const fileState = getClassInstanceState<FileState>(value);\n * }\n */\nexport function isInstanceOf(value: unknown, className: string): boolean {\n return isDefineClassInstance(value) && value.__className__ === className;\n}\n\n/**\n * Get the internal state of a defineClass instance\n *\n * @example\n * const fileState = getClassInstanceState<FileInternalState>(value);\n * if (fileState) {\n * console.log(fileState.parts, fileState.name);\n * }\n */\nexport function getClassInstanceState<T>(value: unknown): T | undefined {\n if (!isDefineClassInstance(value)) {\n return undefined;\n }\n return getInstanceStateById<T>(value.__instanceId__);\n}\n\n/**\n * Get the instance ID from an unmarshalled value if it's a defineClass instance\n */\nexport function getInstanceId(value: unknown): number | undefined {\n if (isDefineClassInstance(value)) {\n return value.__instanceId__;\n }\n return undefined;\n}\n\n/**\n * Get the class name from an unmarshalled value if it's a defineClass instance\n */\nexport function getClassName(value: unknown): string | undefined {\n if (isDefineClassInstance(value)) {\n return value.__className__;\n }\n return undefined;\n}\n\n/**\n * Interface for typed class instance with specific class name\n */\nexport interface TypedClassInstance<T extends string> extends DefineClassInstance {\n __className__: T;\n}\n\n/**\n * Create a type guard for a specific class name\n *\n * @example\n * const isRequest = createClassTypeGuard<\"Request\">(\"Request\");\n * if (isRequest(value)) {\n * // value is TypedClassInstance<\"Request\">\n * }\n */\nexport function createClassTypeGuard<T extends string>(\n className: T\n): (value: unknown) => value is TypedClassInstance<T> {\n return (value: unknown): value is TypedClassInstance<T> => {\n return isDefineClassInstance(value) && value.__className__ === className;\n };\n}\n\n/**\n * Pre-built type guard for Request instances\n */\nexport const isUnmarshalledRequest = createClassTypeGuard(\"Request\");\n\n/**\n * Pre-built type guard for Response instances\n */\nexport const isUnmarshalledResponse = createClassTypeGuard(\"Response\");\n\n/**\n * Pre-built type guard for Headers instances\n */\nexport const isUnmarshalledHeaders = createClassTypeGuard(\"Headers\");\n\n/**\n * Pre-built type guard for FormData instances\n */\nexport const isUnmarshalledFormData = createClassTypeGuard(\"FormData\");\n"
6
6
  ],
7
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOqC,IAArC;AAcO,SAAS,qBAAqB,CACnC,OAC8B;AAAA,EAC9B,OACE,UAAU,QACV,OAAO,UAAU,YACjB,+BAA+B,SAC9B,MAA8B,8BAA8B,QAC7D,oBAAoB,SACpB,OAAQ,MAA8B,mBAAmB,YACzD,mBAAmB,SACnB,OAAQ,MAA8B,kBAAkB;AAAA;AAYrD,SAAS,YAAY,CAAC,OAAgB,WAA4B;AAAA,EACvE,OAAO,sBAAsB,KAAK,KAAK,MAAM,kBAAkB;AAAA;AAY1D,SAAS,qBAAwB,CAAC,OAA+B;AAAA,EACtE,IAAI,CAAC,sBAAsB,KAAK,GAAG;AAAA,IACjC;AAAA,EACF;AAAA,EACA,OAAO,2CAAwB,MAAM,cAAc;AAAA;AAM9C,SAAS,aAAa,CAAC,OAAoC;AAAA,EAChE,IAAI,sBAAsB,KAAK,GAAG;AAAA,IAChC,OAAO,MAAM;AAAA,EACf;AAAA,EACA;AAAA;AAMK,SAAS,YAAY,CAAC,OAAoC;AAAA,EAC/D,IAAI,sBAAsB,KAAK,GAAG;AAAA,IAChC,OAAO,MAAM;AAAA,EACf;AAAA,EACA;AAAA;",
8
- "debugId": "D9173CA5B729846964756E2164756E21",
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOqC,IAArC;AAcO,SAAS,qBAAqB,CACnC,OAC8B;AAAA,EAC9B,OACE,UAAU,QACV,OAAO,UAAU,YACjB,+BAA+B,SAC9B,MAA8B,8BAA8B,QAC7D,oBAAoB,SACpB,OAAQ,MAA8B,mBAAmB,YACzD,mBAAmB,SACnB,OAAQ,MAA8B,kBAAkB;AAAA;AAYrD,SAAS,YAAY,CAAC,OAAgB,WAA4B;AAAA,EACvE,OAAO,sBAAsB,KAAK,KAAK,MAAM,kBAAkB;AAAA;AAY1D,SAAS,qBAAwB,CAAC,OAA+B;AAAA,EACtE,IAAI,CAAC,sBAAsB,KAAK,GAAG;AAAA,IACjC;AAAA,EACF;AAAA,EACA,OAAO,2CAAwB,MAAM,cAAc;AAAA;AAM9C,SAAS,aAAa,CAAC,OAAoC;AAAA,EAChE,IAAI,sBAAsB,KAAK,GAAG;AAAA,IAChC,OAAO,MAAM;AAAA,EACf;AAAA,EACA;AAAA;AAMK,SAAS,YAAY,CAAC,OAAoC;AAAA,EAC/D,IAAI,sBAAsB,KAAK,GAAG;AAAA,IAChC,OAAO,MAAM;AAAA,EACf;AAAA,EACA;AAAA;AAmBK,SAAS,oBAAsC,CACpD,WACoD;AAAA,EACpD,OAAO,CAAC,UAAmD;AAAA,IACzD,OAAO,sBAAsB,KAAK,KAAK,MAAM,kBAAkB;AAAA;AAAA;AAO5D,IAAM,wBAAwB,qBAAqB,SAAS;AAK5D,IAAM,yBAAyB,qBAAqB,UAAU;AAK9D,IAAM,wBAAwB,qBAAqB,SAAS;AAK5D,IAAM,yBAAyB,qBAAqB,UAAU;",
8
+ "debugId": "A73BCCB5F8467BBE64756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -0,0 +1,320 @@
1
+ // @bun @bun-cjs
2
+ (function(exports, require, module, __filename, __dirname) {var __defProp = Object.defineProperty;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
7
+ var __toCommonJS = (from) => {
8
+ var entry = __moduleCache.get(from), desc;
9
+ if (entry)
10
+ return entry;
11
+ entry = __defProp({}, "__esModule", { value: true });
12
+ if (from && typeof from === "object" || typeof from === "function")
13
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ }));
17
+ __moduleCache.set(from, entry);
18
+ return entry;
19
+ };
20
+ var __export = (target, all) => {
21
+ for (var name in all)
22
+ __defProp(target, name, {
23
+ get: all[name],
24
+ enumerable: true,
25
+ configurable: true,
26
+ set: (newValue) => all[name] = () => newValue
27
+ });
28
+ };
29
+
30
+ // packages/core/src/coerce.ts
31
+ var exports_coerce = {};
32
+ __export(exports_coerce, {
33
+ instanceOrShape: () => instanceOrShape,
34
+ createCoercer: () => createCoercer,
35
+ coerceURL: () => coerceURL,
36
+ coerceToURLString: () => coerceToURLString,
37
+ coerceResponseInit: () => coerceResponseInit,
38
+ coerceRequestInit: () => coerceRequestInit,
39
+ coerceHeaders: () => coerceHeaders,
40
+ coerceBody: () => coerceBody,
41
+ classCoercer: () => classCoercer
42
+ });
43
+ module.exports = __toCommonJS(exports_coerce);
44
+ var import_class_helpers = require("./class-helpers.cjs");
45
+ function createCoercer(name, detect, extract) {
46
+ const coercer = {
47
+ name,
48
+ safeParse(value) {
49
+ if (!detect(value)) {
50
+ return {
51
+ success: false,
52
+ error: `Expected ${name}, got ${typeof value}`
53
+ };
54
+ }
55
+ try {
56
+ return { success: true, value: extract(value) };
57
+ } catch (e) {
58
+ return {
59
+ success: false,
60
+ error: e instanceof Error ? e.message : String(e)
61
+ };
62
+ }
63
+ },
64
+ parse(value) {
65
+ const result = this.safeParse(value);
66
+ if (!result.success) {
67
+ throw new TypeError(result.error);
68
+ }
69
+ return result.value;
70
+ },
71
+ is(value) {
72
+ return detect(value);
73
+ },
74
+ or(other) {
75
+ return createCoercer(`${name} | ${other.name}`, (v) => detect(v) || other.is(v), (v) => detect(v) ? extract(v) : other.parse(v));
76
+ },
77
+ transform(fn) {
78
+ return createCoercer(`${name}.transform`, detect, (v) => fn(extract(v)));
79
+ },
80
+ optional() {
81
+ return createCoercer(`${name}?`, (v) => v === undefined || v === null || detect(v), (v) => v === undefined || v === null ? undefined : extract(v));
82
+ }
83
+ };
84
+ return coercer;
85
+ }
86
+ function classCoercer(className) {
87
+ return createCoercer(className, (value) => import_class_helpers.isInstanceOf(value, className), (value) => {
88
+ const state = import_class_helpers.getClassInstanceState(value);
89
+ if (!state) {
90
+ throw new Error(`Failed to get state for ${className} instance`);
91
+ }
92
+ return state;
93
+ });
94
+ }
95
+ function instanceOrShape(className, shapeCheck, shapeToState) {
96
+ return createCoercer(`${className} | ${className}Shape`, (value) => import_class_helpers.isInstanceOf(value, className) || shapeCheck(value), (value) => {
97
+ if (import_class_helpers.isInstanceOf(value, className)) {
98
+ const state = import_class_helpers.getClassInstanceState(value);
99
+ if (!state) {
100
+ throw new Error(`Failed to get state for ${className} instance`);
101
+ }
102
+ return state;
103
+ }
104
+ return shapeToState(value);
105
+ });
106
+ }
107
+ function isURLShape(value) {
108
+ return value !== null && typeof value === "object" && "href" in value && typeof value.href === "string";
109
+ }
110
+ function extractURLData(url) {
111
+ return {
112
+ href: url.href,
113
+ protocol: url.protocol,
114
+ host: url.host,
115
+ hostname: url.hostname,
116
+ port: url.port,
117
+ pathname: url.pathname,
118
+ search: url.search,
119
+ hash: url.hash,
120
+ origin: url.origin,
121
+ username: url.username,
122
+ password: url.password
123
+ };
124
+ }
125
+ var coerceURL = createCoercer("URL", (value) => {
126
+ if (typeof value === "string")
127
+ return true;
128
+ if (import_class_helpers.isInstanceOf(value, "URL"))
129
+ return true;
130
+ if (isURLShape(value))
131
+ return true;
132
+ return false;
133
+ }, (value) => {
134
+ if (typeof value === "string") {
135
+ const url = new globalThis.URL(value);
136
+ return extractURLData(url);
137
+ }
138
+ if (import_class_helpers.isInstanceOf(value, "URL")) {
139
+ const state = import_class_helpers.getClassInstanceState(value);
140
+ if (state)
141
+ return state;
142
+ }
143
+ if (isURLShape(value)) {
144
+ const url = new globalThis.URL(value.href);
145
+ return extractURLData(url);
146
+ }
147
+ throw new Error("Cannot coerce to URL");
148
+ });
149
+ function coerceToURLString(value) {
150
+ const result = coerceURL.safeParse(value);
151
+ if (result.success) {
152
+ return result.value.href;
153
+ }
154
+ return String(value);
155
+ }
156
+ function isHeadersState(value) {
157
+ return value !== null && typeof value === "object" && "headers" in value && value.headers instanceof Map;
158
+ }
159
+ var coerceHeaders = createCoercer("Headers", (value) => {
160
+ if (value === null || value === undefined)
161
+ return true;
162
+ if (import_class_helpers.isInstanceOf(value, "Headers"))
163
+ return true;
164
+ if (isHeadersState(value))
165
+ return true;
166
+ if (Array.isArray(value))
167
+ return true;
168
+ if (typeof value === "object")
169
+ return true;
170
+ return false;
171
+ }, (value) => {
172
+ if (value === null || value === undefined) {
173
+ return { headers: new Map };
174
+ }
175
+ if (import_class_helpers.isInstanceOf(value, "Headers")) {
176
+ const state = import_class_helpers.getClassInstanceState(value);
177
+ if (state) {
178
+ return { headers: new Map(state.headers) };
179
+ }
180
+ }
181
+ if (isHeadersState(value)) {
182
+ return { headers: new Map(value.headers) };
183
+ }
184
+ if (Array.isArray(value)) {
185
+ const headers = new Map;
186
+ for (const pair of value) {
187
+ if (Array.isArray(pair) && pair.length >= 2) {
188
+ const key = String(pair[0]).toLowerCase();
189
+ const existing = headers.get(key) || [];
190
+ existing.push(String(pair[1]));
191
+ headers.set(key, existing);
192
+ }
193
+ }
194
+ return { headers };
195
+ }
196
+ if (typeof value === "object" && value !== null) {
197
+ const headers = new Map;
198
+ for (const [key, val] of Object.entries(value)) {
199
+ if (key === "__instanceId__" || key === "__className__" || key === "__isDefineClassInstance__") {
200
+ continue;
201
+ }
202
+ const normalizedKey = key.toLowerCase();
203
+ if (Array.isArray(val)) {
204
+ headers.set(normalizedKey, val.map(String));
205
+ } else if (val !== undefined && val !== null) {
206
+ headers.set(normalizedKey, [String(val)]);
207
+ }
208
+ }
209
+ return { headers };
210
+ }
211
+ throw new Error("Cannot coerce to Headers");
212
+ });
213
+ function coerceBody(value) {
214
+ if (value === null || value === undefined)
215
+ return null;
216
+ if (typeof value === "string")
217
+ return new TextEncoder().encode(value);
218
+ if (value instanceof ArrayBuffer)
219
+ return new Uint8Array(value);
220
+ if (value instanceof Uint8Array)
221
+ return value;
222
+ if (ArrayBuffer.isView(value)) {
223
+ return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
224
+ }
225
+ return null;
226
+ }
227
+ var coerceRequestInit = createCoercer("RequestInit", (value) => {
228
+ if (value === null || value === undefined)
229
+ return true;
230
+ if (import_class_helpers.isInstanceOf(value, "Request"))
231
+ return true;
232
+ if (typeof value === "object")
233
+ return true;
234
+ return false;
235
+ }, (value) => {
236
+ if (value === null || value === undefined) {
237
+ return {};
238
+ }
239
+ if (import_class_helpers.isInstanceOf(value, "Request")) {
240
+ const state = import_class_helpers.getClassInstanceState(value);
241
+ if (state) {
242
+ return {
243
+ method: state.method,
244
+ headersState: state.headersState ? { headers: new Map(state.headersState.headers) } : undefined,
245
+ body: state.body ? new Uint8Array(state.body) : null,
246
+ cache: state.cache,
247
+ credentials: state.credentials,
248
+ integrity: state.integrity,
249
+ keepalive: state.keepalive,
250
+ mode: state.mode,
251
+ redirect: state.redirect,
252
+ referrer: state.referrer,
253
+ referrerPolicy: state.referrerPolicy,
254
+ signal: state.signal
255
+ };
256
+ }
257
+ }
258
+ const obj = value;
259
+ const result = {};
260
+ if ("method" in obj && typeof obj.method === "string") {
261
+ result.method = obj.method.toUpperCase();
262
+ }
263
+ if ("headers" in obj && obj.headers !== undefined) {
264
+ const headersResult = coerceHeaders.safeParse(obj.headers);
265
+ if (headersResult.success) {
266
+ result.headersState = headersResult.value;
267
+ }
268
+ }
269
+ if ("body" in obj) {
270
+ result.body = coerceBody(obj.body);
271
+ }
272
+ if ("cache" in obj)
273
+ result.cache = String(obj.cache);
274
+ if ("credentials" in obj)
275
+ result.credentials = String(obj.credentials);
276
+ if ("integrity" in obj)
277
+ result.integrity = String(obj.integrity);
278
+ if ("keepalive" in obj)
279
+ result.keepalive = Boolean(obj.keepalive);
280
+ if ("mode" in obj)
281
+ result.mode = String(obj.mode);
282
+ if ("redirect" in obj)
283
+ result.redirect = String(obj.redirect);
284
+ if ("referrer" in obj)
285
+ result.referrer = String(obj.referrer);
286
+ if ("referrerPolicy" in obj)
287
+ result.referrerPolicy = String(obj.referrerPolicy);
288
+ if ("signal" in obj)
289
+ result.signal = obj.signal;
290
+ return result;
291
+ });
292
+ var coerceResponseInit = createCoercer("ResponseInit", (value) => {
293
+ if (value === null || value === undefined)
294
+ return true;
295
+ if (typeof value === "object")
296
+ return true;
297
+ return false;
298
+ }, (value) => {
299
+ if (value === null || value === undefined) {
300
+ return {};
301
+ }
302
+ const obj = value;
303
+ const result = {};
304
+ if ("status" in obj && typeof obj.status === "number") {
305
+ result.status = obj.status;
306
+ }
307
+ if ("statusText" in obj && typeof obj.statusText === "string") {
308
+ result.statusText = obj.statusText;
309
+ }
310
+ if ("headers" in obj && obj.headers !== undefined) {
311
+ const headersResult = coerceHeaders.safeParse(obj.headers);
312
+ if (headersResult.success) {
313
+ result.headersState = headersResult.value;
314
+ }
315
+ }
316
+ return result;
317
+ });
318
+ })
319
+
320
+ //# debugId=09DF3CA7BD85C86F64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/coerce.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Coercion system for QuickJS class instances\n *\n * Provides a Zod-like API for detecting and extracting values from\n * class instances, plain objects, and primitive values.\n *\n * This enables consistent handling of class instances across the codebase,\n * reducing duplication and ensuring reliable type detection.\n */\n\nimport {\n isDefineClassInstance,\n isInstanceOf,\n getClassInstanceState,\n} from \"./class-helpers.cjs\";\nimport { getInstanceStateById } from \"./instance-state.cjs\";\n\n/**\n * Result of a coercion attempt\n */\nexport type CoercionResult<T> =\n | { success: true; value: T }\n | { success: false; error: string };\n\n/**\n * A coercer that can transform unknown values into a specific type\n */\nexport interface Coercer<T> {\n /** The name of this coercer (for error messages) */\n readonly name: string;\n\n /** Attempt to coerce a value, returning a result object */\n safeParse(value: unknown): CoercionResult<T>;\n\n /** Coerce a value, throwing on failure */\n parse(value: unknown): T;\n\n /** Check if a value can be coerced without actually coercing */\n is(value: unknown): boolean;\n\n /** Create a new coercer with a fallback */\n or<U>(other: Coercer<U>): Coercer<T | U>;\n\n /** Transform the coerced value */\n transform<U>(fn: (value: T) => U): Coercer<U>;\n\n /** Make the coercer optional (allows undefined/null) */\n optional(): Coercer<T | undefined>;\n}\n\n/**\n * Create a base coercer from detection and extraction functions\n */\nexport function createCoercer<T>(\n name: string,\n detect: (value: unknown) => boolean,\n extract: (value: unknown) => T\n): Coercer<T> {\n const coercer: Coercer<T> = {\n name,\n\n safeParse(value: unknown): CoercionResult<T> {\n if (!detect(value)) {\n return {\n success: false,\n error: `Expected ${name}, got ${typeof value}`,\n };\n }\n try {\n return { success: true, value: extract(value) };\n } catch (e) {\n return {\n success: false,\n error: e instanceof Error ? e.message : String(e),\n };\n }\n },\n\n parse(value: unknown): T {\n const result = this.safeParse(value);\n if (!result.success) {\n throw new TypeError(result.error);\n }\n return result.value;\n },\n\n is(value: unknown): boolean {\n return detect(value);\n },\n\n or<U>(other: Coercer<U>): Coercer<T | U> {\n return createCoercer<T | U>(\n `${name} | ${other.name}`,\n (v) => detect(v) || other.is(v),\n (v) => (detect(v) ? extract(v) : other.parse(v))\n );\n },\n\n transform<U>(fn: (value: T) => U): Coercer<U> {\n return createCoercer<U>(`${name}.transform`, detect, (v) =>\n fn(extract(v))\n );\n },\n\n optional(): Coercer<T | undefined> {\n return createCoercer<T | undefined>(\n `${name}?`,\n (v) => v === undefined || v === null || detect(v),\n (v) => (v === undefined || v === null ? undefined : extract(v))\n );\n },\n };\n\n return coercer;\n}\n\n/**\n * Create a coercer for a QuickJS class instance\n */\nexport function classCoercer<TState>(className: string): Coercer<TState> {\n return createCoercer<TState>(\n className,\n (value) => isInstanceOf(value, className),\n (value) => {\n const state = getClassInstanceState<TState>(value);\n if (!state) {\n throw new Error(`Failed to get state for ${className} instance`);\n }\n return state;\n }\n );\n}\n\n/**\n * Coerce a value that could be a class instance OR have a specific shape\n */\nexport function instanceOrShape<TState, TShape>(\n className: string,\n shapeCheck: (value: unknown) => value is TShape,\n shapeToState: (value: TShape) => TState\n): Coercer<TState> {\n return createCoercer<TState>(\n `${className} | ${className}Shape`,\n (value) => isInstanceOf(value, className) || shapeCheck(value),\n (value) => {\n if (isInstanceOf(value, className)) {\n const state = getClassInstanceState<TState>(value);\n if (!state) {\n throw new Error(`Failed to get state for ${className} instance`);\n }\n return state;\n }\n return shapeToState(value as TShape);\n }\n );\n}\n\n// ============================================\n// URL Coercion\n// ============================================\n\nexport interface URLCoerced {\n href: string;\n protocol: string;\n host: string;\n hostname: string;\n port: string;\n pathname: string;\n search: string;\n hash: string;\n origin: string;\n username: string;\n password: string;\n}\n\n/** Check if value has URL-like shape */\nfunction isURLShape(value: unknown): value is { href: string } {\n return (\n value !== null &&\n typeof value === \"object\" &&\n \"href\" in value &&\n typeof (value as { href: unknown }).href === \"string\"\n );\n}\n\nfunction extractURLData(url: globalThis.URL): URLCoerced {\n return {\n href: url.href,\n protocol: url.protocol,\n host: url.host,\n hostname: url.hostname,\n port: url.port,\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n origin: url.origin,\n username: url.username,\n password: url.password,\n };\n}\n\n/** Coerce a value to URL data */\nexport const coerceURL = createCoercer<URLCoerced>(\n \"URL\",\n (value) => {\n if (typeof value === \"string\") return true;\n if (isInstanceOf(value, \"URL\")) return true;\n if (isURLShape(value)) return true;\n return false;\n },\n (value) => {\n // String - parse as URL\n if (typeof value === \"string\") {\n const url = new globalThis.URL(value);\n return extractURLData(url);\n }\n\n // QuickJS URL instance - get state\n if (isInstanceOf(value, \"URL\")) {\n const state = getClassInstanceState<URLCoerced>(value);\n if (state) return state;\n }\n\n // URL-like shape (has href)\n if (isURLShape(value)) {\n const url = new globalThis.URL(value.href);\n return extractURLData(url);\n }\n\n throw new Error(\"Cannot coerce to URL\");\n }\n);\n\n/** Get just the href string from a URL-like value */\nexport function coerceToURLString(value: unknown): string {\n const result = coerceURL.safeParse(value);\n if (result.success) {\n return result.value.href;\n }\n return String(value);\n}\n\n// ============================================\n// Headers Coercion\n// ============================================\n\nexport interface HeadersCoerced {\n headers: Map<string, string[]>;\n}\n\n/** Check if value is HeadersState shape */\nfunction isHeadersState(value: unknown): value is HeadersCoerced {\n return (\n value !== null &&\n typeof value === \"object\" &&\n \"headers\" in value &&\n (value as { headers: unknown }).headers instanceof Map\n );\n}\n\n/** Coerce a value to Headers data */\nexport const coerceHeaders = createCoercer<HeadersCoerced>(\n \"Headers\",\n (value) => {\n if (value === null || value === undefined) return true; // Empty headers\n if (isInstanceOf(value, \"Headers\")) return true;\n if (isHeadersState(value)) return true;\n if (Array.isArray(value)) return true;\n if (typeof value === \"object\") return true;\n return false;\n },\n (value) => {\n // Null/undefined - empty headers\n if (value === null || value === undefined) {\n return { headers: new Map() };\n }\n\n // QuickJS Headers instance\n if (isInstanceOf(value, \"Headers\")) {\n const state = getClassInstanceState<HeadersCoerced>(value);\n if (state) {\n return { headers: new Map(state.headers) };\n }\n }\n\n // Already HeadersState shape\n if (isHeadersState(value)) {\n return { headers: new Map(value.headers) };\n }\n\n // Array of [key, value] pairs\n if (Array.isArray(value)) {\n const headers = new Map<string, string[]>();\n for (const pair of value) {\n if (Array.isArray(pair) && pair.length >= 2) {\n const key = String(pair[0]).toLowerCase();\n const existing = headers.get(key) || [];\n existing.push(String(pair[1]));\n headers.set(key, existing);\n }\n }\n return { headers };\n }\n\n // Plain object - but skip defineClass marker properties\n if (typeof value === \"object\" && value !== null) {\n const headers = new Map<string, string[]>();\n for (const [key, val] of Object.entries(value)) {\n // Skip internal properties\n if (\n key === \"__instanceId__\" ||\n key === \"__className__\" ||\n key === \"__isDefineClassInstance__\"\n ) {\n continue;\n }\n const normalizedKey = key.toLowerCase();\n if (Array.isArray(val)) {\n headers.set(normalizedKey, val.map(String));\n } else if (val !== undefined && val !== null) {\n headers.set(normalizedKey, [String(val)]);\n }\n }\n return { headers };\n }\n\n throw new Error(\"Cannot coerce to Headers\");\n }\n);\n\n// ============================================\n// Body Coercion\n// ============================================\n\n/** Coerce body to Uint8Array */\nexport function coerceBody(value: unknown): Uint8Array | null {\n if (value === null || value === undefined) return null;\n if (typeof value === \"string\") return new TextEncoder().encode(value);\n if (value instanceof ArrayBuffer) return new Uint8Array(value);\n if (value instanceof Uint8Array) return value;\n if (ArrayBuffer.isView(value)) {\n return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n }\n return null;\n}\n\n// ============================================\n// Request Init Coercion\n// ============================================\n\nexport interface RequestInitCoerced {\n method?: string;\n headersState?: HeadersCoerced;\n body?: Uint8Array | null;\n cache?: string;\n credentials?: string;\n destination?: string;\n integrity?: string;\n keepalive?: boolean;\n mode?: string;\n redirect?: string;\n referrer?: string;\n referrerPolicy?: string;\n signal?: unknown;\n}\n\n/** Coerce a value to Request init data (for use as RequestInit second arg) */\nexport const coerceRequestInit = createCoercer<RequestInitCoerced>(\n \"RequestInit\",\n (value) => {\n if (value === null || value === undefined) return true;\n if (isInstanceOf(value, \"Request\")) return true;\n if (typeof value === \"object\") return true;\n return false;\n },\n (value) => {\n if (value === null || value === undefined) {\n return {};\n }\n\n // QuickJS Request instance - extract state (excluding url)\n if (isInstanceOf(value, \"Request\")) {\n const state = getClassInstanceState<{\n method: string;\n headersState: HeadersCoerced;\n body: Uint8Array | null;\n cache: string;\n credentials: string;\n integrity: string;\n keepalive: boolean;\n mode: string;\n redirect: string;\n referrer: string;\n referrerPolicy: string;\n signal: unknown;\n }>(value);\n if (state) {\n // Return all properties EXCEPT url (let caller decide if they want it)\n return {\n method: state.method,\n headersState: state.headersState\n ? { headers: new Map(state.headersState.headers) }\n : undefined,\n body: state.body ? new Uint8Array(state.body) : null,\n cache: state.cache,\n credentials: state.credentials,\n integrity: state.integrity,\n keepalive: state.keepalive,\n mode: state.mode,\n redirect: state.redirect,\n referrer: state.referrer,\n referrerPolicy: state.referrerPolicy,\n signal: state.signal,\n };\n }\n }\n\n // Plain object with potential Request-like properties\n const obj = value as Record<string, unknown>;\n const result: RequestInitCoerced = {};\n\n if (\"method\" in obj && typeof obj.method === \"string\") {\n result.method = obj.method.toUpperCase();\n }\n if (\"headers\" in obj && obj.headers !== undefined) {\n const headersResult = coerceHeaders.safeParse(obj.headers);\n if (headersResult.success) {\n result.headersState = headersResult.value;\n }\n }\n if (\"body\" in obj) {\n result.body = coerceBody(obj.body);\n }\n if (\"cache\" in obj) result.cache = String(obj.cache);\n if (\"credentials\" in obj) result.credentials = String(obj.credentials);\n if (\"integrity\" in obj) result.integrity = String(obj.integrity);\n if (\"keepalive\" in obj) result.keepalive = Boolean(obj.keepalive);\n if (\"mode\" in obj) result.mode = String(obj.mode);\n if (\"redirect\" in obj) result.redirect = String(obj.redirect);\n if (\"referrer\" in obj) result.referrer = String(obj.referrer);\n if (\"referrerPolicy\" in obj)\n result.referrerPolicy = String(obj.referrerPolicy);\n if (\"signal\" in obj) result.signal = obj.signal;\n\n return result;\n }\n);\n\n// ============================================\n// Response Init Coercion\n// ============================================\n\nexport interface ResponseInitCoerced {\n status?: number;\n statusText?: string;\n headersState?: HeadersCoerced;\n}\n\n/** Coerce a value to Response init data */\nexport const coerceResponseInit = createCoercer<ResponseInitCoerced>(\n \"ResponseInit\",\n (value) => {\n if (value === null || value === undefined) return true;\n if (typeof value === \"object\") return true;\n return false;\n },\n (value) => {\n if (value === null || value === undefined) {\n return {};\n }\n\n const obj = value as Record<string, unknown>;\n const result: ResponseInitCoerced = {};\n\n if (\"status\" in obj && typeof obj.status === \"number\") {\n result.status = obj.status;\n }\n if (\"statusText\" in obj && typeof obj.statusText === \"string\") {\n result.statusText = obj.statusText;\n }\n if (\"headers\" in obj && obj.headers !== undefined) {\n const headersResult = coerceHeaders.safeParse(obj.headers);\n if (headersResult.success) {\n result.headersState = headersResult.value;\n }\n }\n\n return result;\n }\n);\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "09DF3CA7BD85C86F64756E2164756E21",
9
+ "names": []
10
+ }
@@ -39,9 +39,14 @@ __export(exports_src, {
39
39
  registerInstance: () => import_instance_state.registerInstance,
40
40
  nextInstanceId: () => import_instance_state.nextInstanceId,
41
41
  marshal: () => import_marshal.marshal,
42
+ isUnmarshalledResponse: () => import_class_helpers.isUnmarshalledResponse,
43
+ isUnmarshalledRequest: () => import_class_helpers.isUnmarshalledRequest,
44
+ isUnmarshalledHeaders: () => import_class_helpers.isUnmarshalledHeaders,
45
+ isUnmarshalledFormData: () => import_class_helpers.isUnmarshalledFormData,
42
46
  isInstanceOf: () => import_class_helpers.isInstanceOf,
43
47
  isHandle: () => import_marshal.isHandle,
44
48
  isDefineClassInstance: () => import_class_helpers.isDefineClassInstance,
49
+ instanceOrShape: () => import_coerce.instanceOrShape,
45
50
  getState: () => import_class_builder2.getState,
46
51
  getInstanceStateById: () => import_class_builder2.getInstanceStateById,
47
52
  getInstanceState: () => import_class_builder2.getInstanceState,
@@ -60,12 +65,22 @@ __export(exports_src, {
60
65
  createStateMap: () => import_class_builder2.createStateMap,
61
66
  createReadableStream: () => import_readable_stream2.createReadableStream,
62
67
  createFile: () => import_file2.createFile,
68
+ createCoercer: () => import_coerce.createCoercer,
69
+ createClassTypeGuard: () => import_class_helpers.createClassTypeGuard,
63
70
  createBlob: () => import_blob2.createBlob,
64
71
  consumeReadableStream: () => import_readable_stream2.consumeReadableStream,
72
+ coerceURL: () => import_coerce.coerceURL,
73
+ coerceToURLString: () => import_coerce.coerceToURLString,
74
+ coerceResponseInit: () => import_coerce.coerceResponseInit,
75
+ coerceRequestInit: () => import_coerce.coerceRequestInit,
76
+ coerceHeaders: () => import_coerce.coerceHeaders,
77
+ coerceBody: () => import_coerce.coerceBody,
65
78
  clearAllInstanceState: () => import_class_builder2.clearAllInstanceState,
66
79
  cleanupUnmarshaledHandles: () => import_unmarshal.cleanupUnmarshaledHandles,
67
80
  cleanupInstanceStateById: () => import_instance_state.cleanupInstanceState,
68
81
  cleanupInstanceState: () => import_class_builder2.cleanupInstanceState,
82
+ classCoercer: () => import_coerce.classCoercer,
83
+ addURLSearchParamsLinkage: () => import_url2.addURLSearchParamsLinkage,
69
84
  addURLSearchParamsGetter: () => import_url2.addURLSearchParamsGetter,
70
85
  INTERNAL_STATE: () => import_types.INTERNAL_STATE
71
86
  });
@@ -93,6 +108,7 @@ var import_blob2 = require("./blob.cjs");
93
108
  var import_file2 = require("./file.cjs");
94
109
  var import_url_search_params2 = require("./url-search-params.cjs");
95
110
  var import_url2 = require("./url.cjs");
111
+ var import_coerce = require("./coerce.cjs");
96
112
  function setupCore(context, options) {
97
113
  const stateMap = options?.stateMap ?? import_class_builder.createStateMap();
98
114
  const handles = [];
@@ -142,7 +158,7 @@ function setupCore(context, options) {
142
158
  const URLClass = import_url.createURLClass(context, stateMap);
143
159
  context.setProp(context.global, "URL", URLClass);
144
160
  URLClass.dispose();
145
- import_url.addURLSearchParamsGetter(context);
161
+ import_url.addURLSearchParamsLinkage(context);
146
162
  const textEncodingCode = `
147
163
  (function() {
148
164
  class TextEncoder {
@@ -269,4 +285,4 @@ function setupCore(context, options) {
269
285
  }
270
286
  })
271
287
 
272
- //# debugId=009CAAFE3527D16B64756E2164756E21
288
+ //# debugId=AAC8B5BEA5BE896D64756E2164756E21