@workglow/util 0.0.84 → 0.0.86
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 +32 -0
- package/dist/browser.js +232 -2
- package/dist/browser.js.map +10 -5
- package/dist/bun.js +232 -2
- package/dist/bun.js.map +10 -5
- package/dist/common.d.ts +4 -0
- package/dist/common.d.ts.map +1 -1
- package/dist/di/InputResolverRegistry.d.ts +58 -0
- package/dist/di/InputResolverRegistry.d.ts.map +1 -0
- package/dist/di/ServiceRegistry.d.ts +1 -1
- package/dist/di/ServiceRegistry.d.ts.map +1 -1
- package/dist/di/index.d.ts +1 -0
- package/dist/di/index.d.ts.map +1 -1
- package/dist/json-schema/JsonSchema.d.ts +1 -0
- package/dist/json-schema/JsonSchema.d.ts.map +1 -1
- package/dist/json-schema/SchemaValidation.d.ts +2 -2
- package/dist/json-schema/SchemaValidation.d.ts.map +1 -1
- package/dist/node.js +232 -2
- package/dist/node.js.map +10 -5
- package/dist/vector/Tensor.d.ts +59 -0
- package/dist/vector/Tensor.d.ts.map +1 -0
- package/dist/vector/TypedArray.d.ts +85 -0
- package/dist/vector/TypedArray.d.ts.map +1 -0
- package/dist/vector/VectorSimilarityUtils.d.ts +30 -0
- package/dist/vector/VectorSimilarityUtils.d.ts.map +1 -0
- package/dist/vector/VectorUtils.d.ts +31 -0
- package/dist/vector/VectorUtils.d.ts.map +1 -0
- package/package.json +3 -3
package/dist/bun.js.map
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/di/Container.ts", "../src/di/ServiceRegistry.ts", "../src/events/EventEmitter.ts", "../src/utilities/BaseError.ts", "../src/graph/errors.ts", "../src/graph/graph.ts", "../src/graph/directedGraph.ts", "../src/graph/directedAcyclicGraph.ts", "../src/json-schema/FromSchema.ts", "../src/json-schema/SchemaUtils.ts", "../src/json-schema/SchemaValidation.ts", "../src/utilities/Misc.ts", "../src/utilities/objectOfArraysAsArrayOfObjects.ts", "../src/worker/WorkerManager.ts", "../src/worker/WorkerServer.ts", "../src/compress/compress.node.ts", "../src/crypto/Crypto.bun.ts", "../src/media/image.ts", "../src/media/image.node.ts", "../src/worker/Worker.bun.ts"],
|
|
3
|
+
"sources": ["../src/di/Container.ts", "../src/di/ServiceRegistry.ts", "../src/di/InputResolverRegistry.ts", "../src/events/EventEmitter.ts", "../src/utilities/BaseError.ts", "../src/graph/errors.ts", "../src/graph/graph.ts", "../src/graph/directedGraph.ts", "../src/graph/directedAcyclicGraph.ts", "../src/json-schema/FromSchema.ts", "../src/json-schema/SchemaUtils.ts", "../src/json-schema/SchemaValidation.ts", "../src/utilities/Misc.ts", "../src/utilities/objectOfArraysAsArrayOfObjects.ts", "../src/vector/TypedArray.ts", "../src/vector/Tensor.ts", "../src/vector/VectorSimilarityUtils.ts", "../src/vector/VectorUtils.ts", "../src/worker/WorkerManager.ts", "../src/worker/WorkerServer.ts", "../src/compress/compress.node.ts", "../src/crypto/Crypto.bun.ts", "../src/media/image.ts", "../src/media/image.node.ts", "../src/worker/Worker.bun.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Simple dependency injection container for managing service instances and dependencies\n */\nexport class Container {\n private services: Map<string, any> = new Map();\n private factories: Map<string, () => any> = new Map();\n private singletons: Set<string> = new Set();\n\n /**\n * Register a service factory\n * @param token The identifier token for the service\n * @param factory A factory function that creates the service\n * @param singleton Whether the service should be a singleton (created once)\n */\n register<T>(token: string, factory: () => T, singleton = true): void {\n this.factories.set(token, factory);\n if (singleton) {\n this.singletons.add(token);\n }\n }\n\n /**\n * Register an instance as a service\n * @param token The identifier token for the service\n * @param instance The instance to register\n */\n registerInstance<T>(token: string, instance: T): void {\n this.services.set(token, instance);\n this.singletons.add(token);\n }\n\n /**\n * Get a service by its token\n * @param token The identifier token for the service\n * @returns The service instance\n */\n get<T>(token: string): T {\n // Return existing instance if available\n if (this.services.has(token)) {\n return this.services.get(token) as T;\n }\n\n // Create new instance\n const factory = this.factories.get(token);\n if (!factory) {\n throw new Error(`Service not registered: ${String(token)}`);\n }\n\n const instance = factory();\n\n // Store singleton instances\n if (this.singletons.has(token)) {\n this.services.set(token, instance);\n }\n\n return instance as T;\n }\n\n /**\n * Check if a service is registered\n * @param token The identifier token for the service\n * @returns True if the service is registered\n */\n has(token: string): boolean {\n return this.services.has(token) || this.factories.has(token);\n }\n\n /**\n * Remove a service registration\n * @param token The identifier token for the service\n */\n remove(token: string): void {\n this.services.delete(token);\n this.factories.delete(token);\n this.singletons.delete(token);\n }\n\n /**\n * Create a child container that inherits registrations from the parent\n * @returns A new child container\n */\n createChildContainer(): Container {\n const child = new Container();\n\n // Copy all registrations to the child\n this.factories.forEach((factory, token) => {\n child.factories.set(token, factory);\n if (this.singletons.has(token)) {\n child.singletons.add(token);\n }\n });\n\n // Copy all singleton instances to the child\n this.services.forEach((service, token) => {\n if (this.singletons.has(token)) {\n child.services.set(token, service);\n child.singletons.add(token);\n }\n });\n\n return child;\n }\n}\n\n/**\n * Global container instance\n */\nexport const globalContainer = new Container();\n",
|
|
6
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Container, globalContainer } from \"./Container\";\n\n/**\n * Service token type for type-safe dependency injection\n */\nexport interface ServiceToken<T> {\n readonly _type: T;\n readonly id: string;\n}\n\n/**\n * Create a typed service token\n * @param id Unique identifier for the service\n * @returns A typed service token\n */\nexport function createServiceToken<T>(id: string): ServiceToken<T> {\n return { id, _type: null as any };\n}\n\n/**\n * Service registry for managing and accessing services\n */\nexport class ServiceRegistry {\n
|
|
6
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Container, globalContainer } from \"./Container\";\n\n/**\n * Service token type for type-safe dependency injection\n */\nexport interface ServiceToken<T> {\n readonly _type: T;\n readonly id: string;\n}\n\n/**\n * Create a typed service token\n * @param id Unique identifier for the service\n * @returns A typed service token\n */\nexport function createServiceToken<T>(id: string): ServiceToken<T> {\n return { id, _type: null as any };\n}\n\n/**\n * Service registry for managing and accessing services\n */\nexport class ServiceRegistry {\n public container: Container;\n\n /**\n * Create a new service registry\n * @param container Optional container to use (defaults to global container)\n */\n constructor(container: Container = globalContainer) {\n this.container = container;\n }\n\n /**\n * Register a service factory\n * @param token Service token\n * @param factory Factory function to create the service\n * @param singleton Whether the service should be a singleton\n */\n register<T>(token: ServiceToken<T>, factory: () => T, singleton = true): void {\n this.container.register(token.id, factory, singleton);\n }\n\n /**\n * Register a service instance\n * @param token Service token\n * @param instance Service instance to register\n */\n registerInstance<T>(token: ServiceToken<T>, instance: T): void {\n this.container.registerInstance(token.id, instance);\n }\n\n /**\n * Get a service by its token\n * @param token Service token\n * @returns The service instance\n */\n get<T>(token: ServiceToken<T>): T {\n return this.container.get<T>(token.id);\n }\n\n /**\n * Check if a service is registered\n * @param token Service token\n * @returns True if the service is registered\n */\n has<T>(token: ServiceToken<T>): boolean {\n return this.container.has(token.id);\n }\n}\n\n/**\n * Global service registry instance\n */\nexport const globalServiceRegistry = new ServiceRegistry(globalContainer);\n",
|
|
7
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ServiceRegistry } from \"./ServiceRegistry\";\nimport { createServiceToken, globalServiceRegistry } from \"./ServiceRegistry\";\n\n/**\n * A resolver function that converts a string ID to an instance.\n * Returns undefined if the resolver cannot handle this format.\n * Throws an error if the ID is not found.\n *\n * @param id The string ID to resolve\n * @param format The full format string (e.g., \"model:TextEmbedding\", \"storage:tabular\")\n * @param registry The service registry to use for lookups\n */\nexport type InputResolverFn = (\n id: string,\n format: string,\n registry: ServiceRegistry\n) => unknown | Promise<unknown>;\n\n/**\n * Service token for the input resolver registry.\n * Maps format prefixes to resolver functions.\n */\nexport const INPUT_RESOLVERS =\n createServiceToken<Map<string, InputResolverFn>>(\"task.input.resolvers\");\n\n// Register default factory if not already registered\nif (!globalServiceRegistry.has(INPUT_RESOLVERS)) {\n globalServiceRegistry.register(\n INPUT_RESOLVERS,\n (): Map<string, InputResolverFn> => new Map(),\n true\n );\n}\n\n/**\n * Gets the global input resolver registry\n * @returns Map of format prefix to resolver function\n */\nexport function getInputResolvers(): Map<string, InputResolverFn> {\n return globalServiceRegistry.get(INPUT_RESOLVERS);\n}\n\n/**\n * Registers an input resolver for a format prefix.\n * The resolver will be called for any format that starts with this prefix.\n *\n * @param formatPrefix The format prefix to match (e.g., \"model\", \"dataset\")\n * @param resolver The resolver function\n *\n * @example\n * ```typescript\n * // Register model resolver\n * registerInputResolver(\"model\", async (id, format, registry) => {\n * const modelRepo = registry.get(MODEL_REPOSITORY);\n * const model = await modelRepo.findByName(id);\n * if (!model) throw new Error(`Model \"${id}\" not found`);\n * return model;\n * });\n *\n * // Register dataset resolver\n * registerInputResolver(\"dataset\", (id, format, registry) => {\n * const datasetType = format.split(\":\")[1]; // \"tabular\", \"vector\", etc.\n * if (datasetType === \"tabular\") {\n * const datasets = registry.get(TABULAR_DATASETS);\n * const dataset = datasets.get(id);\n * if (!dataset) throw new Error(`Dataset \"${id}\" not found`);\n * return dataset;\n * }\n * throw new Error(`Unknown dataset type: ${datasetType}`);\n * });\n * ```\n */\nexport function registerInputResolver(formatPrefix: string, resolver: InputResolverFn): void {\n const resolvers = getInputResolvers();\n resolvers.set(formatPrefix, resolver);\n}\n",
|
|
7
8
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * A type that represents a listener function for an event.\n * @template Events - A record of event names and their corresponding listener functions\n * @template EventType - The name of the event\n */\ntype EventListener<Events, EventType extends keyof Events> = Events[EventType];\n\n/**\n * A type that represents a list of listener functions for an event.\n * @template Events - A record of event names and their corresponding listener functions\n * @template EventType - The name of the event\n */\ntype EventListeners<Events, EventType extends keyof Events> = Array<{\n listener: EventListener<Events, EventType>;\n once?: boolean;\n}>;\n\n/**\n * A type that represents the parameters of an event.\n * @template Events - A record of event names and their corresponding listener functions\n * @template EventType - The name of the event\n */\nexport type EventParameters<Events, EventType extends keyof Events> = {\n [Event in EventType]: EventListener<Events, EventType> extends (...args: infer P) => any\n ? P\n : never;\n}[EventType];\n\n/**\n * A type that represents the return type of the emitted method.\n * @template Events - A record of event names and their corresponding listener functions\n * @template EventType - The name of the event\n */\nexport type EmittedReturnType<Events, EventType extends keyof Events> = EventParameters<\n Events,\n EventType\n>;\n\n/**\n * A class that implements an event emitter pattern.\n * @template EventListenerTypes - A record of event names and their corresponding listener functions\n */\nexport class EventEmitter<EventListenerTypes extends Record<string, (...args: any) => any>> {\n private listeners: {\n [Event in keyof EventListenerTypes]?: EventListeners<EventListenerTypes, Event>;\n } = {};\n\n /**\n * Remove all listeners for a specific event or all events\n * @param event - Optional event name. If not provided, removes all listeners for all events\n * @returns this, so that calls can be chained\n */\n removeAllListeners<Event extends keyof EventListenerTypes>(event?: Event): this {\n if (event) {\n delete this.listeners[event];\n } else {\n this.listeners = {};\n }\n return this;\n }\n\n /**\n * Adds a listener function for the event\n * @param event - The event name to listen for\n * @param listener - The listener function to add\n * @returns this, so that calls can be chained\n */\n on<Event extends keyof EventListenerTypes>(\n event: Event,\n listener: EventListener<EventListenerTypes, Event>\n ): this {\n const listeners: EventListeners<EventListenerTypes, Event> =\n this.listeners[event] || (this.listeners[event] = []);\n listeners.push({ listener });\n return this;\n }\n\n /**\n * Removes a listener function for the event\n * @param event - The event name to remove the listener from\n * @param listener - The listener function to remove\n * @returns this, so that calls can be chained\n */\n off<Event extends keyof EventListenerTypes>(\n event: Event,\n listener: EventListener<EventListenerTypes, Event>\n ): this {\n const listeners = this.listeners[event];\n if (!listeners) return this;\n\n const index = listeners.findIndex((l) => l.listener === listener);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n return this;\n }\n\n /**\n * Adds a listener function for the event that will be called only once\n * @param event - The event name to listen for\n * @param listener - The listener function to add\n * @returns this, so that calls can be chained\n */\n once<Event extends keyof EventListenerTypes>(\n event: Event,\n listener: EventListener<EventListenerTypes, Event>\n ): this {\n const listeners: EventListeners<EventListenerTypes, Event> =\n this.listeners[event] || (this.listeners[event] = []);\n listeners.push({ listener, once: true });\n return this;\n }\n\n /**\n * Returns a promise that resolves when the event is emitted\n * @param event - The event name to listen for\n * @returns a promise that resolves to an array of all parameters of the event (empty array for events with no parameters)\n */\n waitOn<Event extends keyof EventListenerTypes>(\n event: Event\n ): Promise<EmittedReturnType<EventListenerTypes, Event>> {\n return new Promise((resolve, reject) => {\n // Create an anonymous function that captures all arguments and passes them to resolve\n const listener = ((...args: any[]) => {\n // Always resolve with the array of arguments (which may be empty)\n resolve(args as any);\n }) as EventListener<EventListenerTypes, Event>;\n\n this.once(event, listener);\n });\n }\n\n /**\n * Emits an event with the specified name and arguments\n * @param event - The event name to emit\n * @param args - Arguments to pass to the event listeners\n */\n public emit<Event extends keyof EventListenerTypes>(\n this: EventEmitter<EventListenerTypes>,\n event: Event,\n ...args: EventParameters<EventListenerTypes, Event>\n ) {\n const listeners: EventListeners<EventListenerTypes, Event> | undefined = this.listeners[event];\n if (listeners) {\n listeners.forEach(({ listener, once }) => {\n listener(...args);\n });\n // Remove once listeners we just called\n this.listeners[event] = listeners.filter((l) => !l.once);\n }\n }\n\n /**\n * Subscribes to an event and returns a function to unsubscribe\n * @param event - The event name to subscribe to\n * @param listener - The listener function to add\n * @returns a function to unsubscribe from the event\n */\n public subscribe<Event extends keyof EventListenerTypes>(\n event: Event,\n listener: EventListener<EventListenerTypes, Event>\n ): () => void {\n this.on(event, listener);\n return () => this.off(event, listener);\n }\n}\n",
|
|
8
9
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport class BaseError {\n public static type: string = \"BaseError\";\n public message: string;\n public name: string;\n public stack?: string;\n\n constructor(message: string = \"\") {\n this.message = message;\n const constructor = this.constructor as any;\n this.name = constructor.type ?? this.constructor.name;\n\n // Capture stack trace if available\n if (typeof Error !== \"undefined\" && Error.captureStackTrace) {\n const temp = { stack: \"\" };\n Error.captureStackTrace(temp, this.constructor);\n this.stack = temp.stack;\n } else {\n try {\n throw new Error(message);\n } catch (err) {\n if (err instanceof Error) {\n this.stack = err.stack;\n }\n }\n }\n }\n\n toString(): string {\n return `${this.name}: ${this.message}`;\n }\n}\n",
|
|
9
10
|
"// original source: https://github.com/SegFaultx64/typescript-graph\n// previous fork: https://github.com/sroussey/typescript-graph\n// license: MIT\n\nimport { BaseError } from \"../utilities/BaseError\";\n\n/**\n * # NodeAlreadyExistsError\n *\n * This error is thrown when trying to create a node with the same identity as an existing node.\n *\n * @category Errors\n */\nexport class NodeAlreadyExistsError<T> extends BaseError {\n public static type: string = \"NodeAlreadyExistsError\";\n public newNode: T;\n public oldNode: T;\n public identity: unknown;\n\n constructor(newNode: T, oldNode: T, identity: unknown) {\n super(\n `${JSON.stringify(newNode)} shares an identity (${String(identity)}) with ${JSON.stringify(\n oldNode\n )}`\n );\n this.newNode = newNode;\n this.oldNode = oldNode;\n this.identity = identity;\n this.name = \"NodeAlreadyExistsError\";\n\n // This bs is due to a limitation of Typescript: https://github.com/facebook/jest/issues/8279\n Object.setPrototypeOf(this, NodeAlreadyExistsError.prototype);\n }\n}\n\n/**\n * # NodeDoesntExistError\n * This error is thrown when trying to access a node in a graph by it's identity when that node doesn't exist\n *\n * @category Errors\n */\nexport class NodeDoesntExistError extends BaseError {\n public static type: string = \"NodeDoesntExistError\";\n public identity: unknown;\n\n constructor(identity: unknown) {\n super(`A node with identity ${String(identity)} doesn't exist in the graph`);\n this.identity = identity;\n this.name = \"NodeDoesntExistError\";\n\n // This bs is due to a limitation of Typescript: https://github.com/facebook/jest/issues/8279\n Object.setPrototypeOf(this, NodeDoesntExistError.prototype);\n }\n}\n\n/**\n * # CycleError\n *\n * This error is thrown when attempting to create or update a Directed Acyclic Graph that contains a cycle.\n *\n * @category Errors\n */\nexport class CycleError extends BaseError {\n public static type: string = \"CycleError\";\n constructor(message: string) {\n super(message);\n this.name = \"CycleError\";\n\n // This bs is due to a limitation of Typescript: https://github.com/facebook/jest/issues/8279\n Object.setPrototypeOf(this, CycleError.prototype);\n }\n}\n",
|
|
@@ -12,9 +13,13 @@
|
|
|
12
13
|
"// original source: https://github.com/SegFaultx64/typescript-graph\n// previous fork: https://github.com/sroussey/typescript-graph\n// license: MIT\n\nimport { DirectedGraph } from \"./directedGraph\";\nimport { CycleError } from \"./errors\";\n\n/**\n * # DirectedAcyclicGraph\n *\n * A DirectedAcyclicGraph is builds on a [[`DirectedGraph`]] but enforces acyclicality. You cannot add an edge to a DirectedAcyclicGraph that would create a cycle.\n *\n * @typeParam Node `Node` is the node type of the graph. Nodes can be anything in all the included examples they are simple objects.\n * @typeParam Edge `Edge` is the edge type of the graph. Edges can be of any type, but must be truethy and by default they are `true` which is a simple boolean.\n * @typeParam NodeId `NodeId` is the identity type of the node, by default it is a `unknown`, though most will use `string` or `number`.\n * @typeParam EdgeId `EdgeId` is the identity type of the edge, by default it is a `unknown`, though most will use `string` or `number`.\n */\nexport class DirectedAcyclicGraph<\n Node,\n Edge = true,\n NodeId = unknown,\n EdgeId = unknown,\n> extends DirectedGraph<Node, Edge, NodeId, EdgeId> {\n private _topologicallySortedNodes?: Node[];\n\n /**\n * Converts an existing directed graph into a directed acyclic graph.\n * Throws a {@linkcode CycleError} if the graph attempting to be converted contains a cycle.\n * @param graph The source directed graph to convert into a DAG\n */\n static fromDirectedGraph<Node, Edge, NodeId, EdgeId>(\n graph: DirectedGraph<Node, Edge, NodeId, EdgeId>\n ): DirectedAcyclicGraph<Node, Edge, NodeId, EdgeId> {\n if (!graph.isAcyclic()) {\n throw new CycleError(\"Can't convert that graph to a DAG because it contains a cycle\");\n }\n const toRet = new DirectedAcyclicGraph<Node, Edge, NodeId, EdgeId>(\n // @ts-expect-error\n graph.nodeIdentity,\n // @ts-expect-error\n graph.edgeIdentity\n );\n\n toRet.nodes = (graph as any).nodes;\n toRet.adjacency = (graph as any).adjacency;\n\n return toRet;\n }\n\n /**\n * Adds an edge to the graph similarly to [[`DirectedGraph.addEdge`]] but maintains correctness of the acyclic graph.\n * Thows a [[`CycleError`]] if adding the requested edge would create a cycle.\n * Adding an edge invalidates the cache of topologically sorted nodes, rather than updating it.\n *\n * @param sourceNodeIdentity The identity string of the node the edge should run from.\n * @param targetNodeIdentity The identity string of the node the edge should run to.\n * @param edge The edge to add to the graph. If not provided it defaults to `true`.\n */\n addEdge(sourceNodeIdentity: NodeId, targetNodeIdentity: NodeId, edge?: Edge): EdgeId {\n if (edge === undefined) {\n edge = true as Edge;\n }\n if (this.wouldAddingEdgeCreateCycle(sourceNodeIdentity, targetNodeIdentity)) {\n throw new CycleError(\n `Can't add edge from ${String(sourceNodeIdentity)} to ${String(\n targetNodeIdentity\n )} it would create a cycle`\n );\n }\n\n // Invalidate cache of toposorted nodes\n this._topologicallySortedNodes = undefined;\n return super.addEdge(sourceNodeIdentity, targetNodeIdentity, edge, true);\n }\n\n /**\n * Inserts a node into the graph and maintains topologic sort cache by prepending the node\n * (since all newly created nodes have an [[ indegreeOfNode | indegree ]] of zero.)\n *\n * @param node The node to insert\n */\n insert(node: Node): NodeId {\n if (this._topologicallySortedNodes !== undefined) {\n this._topologicallySortedNodes = [node, ...this._topologicallySortedNodes];\n }\n\n return super.insert(node);\n }\n\n /**\n * Topologically sort the nodes using Kahn's algorithm. Uses a cache which means that repeated calls should be O(1) after the first call.\n * Non-cached calls are potentially expensive, Kahn's algorithim is O(|EdgeCount| + |NodeCount|).\n * There may be more than one valid topological sort order for a single graph,\n * so just because two graphs are the same does not mean that order of the resultant arrays will be.\n *\n * @returns An array of nodes sorted by the topological order.\n */\n topologicallySortedNodes(): Node[] {\n if (this._topologicallySortedNodes !== undefined) {\n return this._topologicallySortedNodes;\n }\n\n const nodeIndices = Array.from(this.nodes.keys());\n const nodeInDegrees = new Map(\n Array.from(this.nodes.keys()).map((n) => [n, this.indegreeOfNode(n)])\n );\n\n const adjCopy = this.adjacency.map((a) => [...a]);\n\n const toSearch = Array.from(nodeInDegrees).filter((pair) => pair[1] === 0);\n\n if (toSearch.length === this.nodes.size) {\n const arrayOfNodes = Array.from(this.nodes.values());\n this._topologicallySortedNodes = arrayOfNodes;\n return arrayOfNodes;\n }\n\n const toReturn: Node[] = [];\n\n while (toSearch.length > 0) {\n const n = toSearch.pop();\n if (n === undefined) {\n throw new Error(\"Unexpected empty array\");\n }\n const curNode = this.nodes.get(n[0]);\n if (curNode == null) {\n throw new Error(\"This should never happen\");\n }\n toReturn.push(curNode);\n\n adjCopy[nodeIndices.indexOf(n[0])]?.forEach((edge, index) => {\n if (edge !== null) {\n adjCopy[nodeIndices.indexOf(n[0])][index] = null;\n const target = nodeInDegrees.get(nodeIndices[index]);\n if (target !== undefined) {\n nodeInDegrees.set(nodeIndices[index], target - 1);\n if (target - 1 === 0) {\n toSearch.push([nodeIndices[index], 0]);\n }\n } else {\n throw new Error(\"This should never happen\");\n }\n }\n });\n }\n\n // Update cache\n this._topologicallySortedNodes = toReturn;\n\n // we shouldn't need to account for the error case of there being a cycle because it shouldn't\n // be possible to instantiate this class in a state (or put it in a state) where there is a cycle.\n\n return toReturn;\n }\n\n /**\n * Given a starting node this returns a new [[`DirectedA`]] containing all the nodes that can be reached.\n * Throws a [[`NodeDoesntExistError`]] if the start node does not exist.\n *\n * @param startNodeIdentity The string identity of the node from which the subgraph search should start.\n */\n getSubGraphStartingFrom(\n startNodeIdentity: NodeId\n ): DirectedAcyclicGraph<Node, Edge, NodeId, EdgeId> {\n return DirectedAcyclicGraph.fromDirectedGraph(super.getSubGraphStartingFrom(startNodeIdentity));\n }\n\n /**\n * Deletes an edge between two nodes in the graph.\n * Throws a [[`NodeDoesNotExistsError`]] if either of the nodes do not exist.\n *\n * @param sourceNodeIdentity The identity of the source node\n * @param targetNodeIdentity The identity of the target node\n * @param edgeIdentity The identity of the edge to be deleted. If not provided, all edges between the two nodes will be deleted.\n */\n removeEdge(sourceNodeIdentity: NodeId, targetNodeIdentity: NodeId, edgeIdentity?: EdgeId): void {\n super.removeEdge(sourceNodeIdentity, targetNodeIdentity, edgeIdentity);\n\n // Invalidate the topologically sorted nodes cache\n this._topologicallySortedNodes = undefined;\n }\n\n /**\n * Deletes a node from the graph, along with any edges associated with it.\n * Throws a [[`NodeDoesNotExistsError`]] if the node does not exist.\n *\n * @param nodeIdentity The identity of the node to be deleted.\n */\n remove(nodeIdentity: NodeId): void {\n super.remove(nodeIdentity);\n\n // Invalidate the topologically sorted nodes cache\n this._topologicallySortedNodes = undefined;\n }\n}\n",
|
|
13
14
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n FromExtendedSchema,\n FromExtendedSchemaOptions,\n FromSchemaOptions,\n} from \"@sroussey/json-schema-to-ts\";\nimport type { JsonSchema, JsonSchemaCustomProps } from \"./JsonSchema\";\n\nexport { FromSchemaOptions };\n\n/**\n * Removes the [$JSONSchema] symbol property from a type\n * This is needed because json-schema-to-ts adds this property which cannot be serialized\n */\nexport type StripJSONSchema<T> = T extends object\n ? {\n [K in keyof T as K extends symbol ? never : K]: T[K];\n }\n : T;\n\nexport const FromSchemaDefaultOptions = {\n parseNotKeyword: true,\n parseIfThenElseKeywords: true,\n keepDefaultedPropertiesOptional: true,\n references: false,\n deserialize: false,\n} as const satisfies FromSchemaOptions;\n\nexport type FromSchema<\n SCHEMA extends JsonSchema<EXTENSION>,\n OPTIONS extends FromExtendedSchemaOptions<EXTENSION> = typeof FromSchemaDefaultOptions,\n EXTENSION extends JsonSchemaCustomProps = JsonSchemaCustomProps,\n> = StripJSONSchema<FromExtendedSchema<EXTENSION, SCHEMA, OPTIONS>>;\n\n/**\n * IncludeProps - Returns a new schema with only the specified properties\n *\n * This is a schema transformer that returns a new schema object.\n * Use with FromSchema like: FromSchema<IncludeProps<typeof schema, typeof [\"prop1\", \"prop2\"]>>\n *\n * @template Schema - The JSON schema object (with 'as const')\n * @template Keys - Readonly array type of property keys to include (use typeof [\"key1\", \"key2\"] as const)\n *\n * @example\n * const schema = {\n * type: \"object\",\n * properties: {\n * name: { type: \"string\" },\n * age: { type: \"number\" },\n * email: { type: \"string\" }\n * },\n * required: [\"name\"],\n * additionalProperties: false\n * } as const;\n *\n * type Filtered = FromSchema<IncludeProps<typeof schema, typeof [\"name\", \"age\"]>>;\n * // => { name: string, age?: number }\n */\nexport type IncludeProps<\n Schema extends { readonly type: \"object\"; readonly properties: Record<string, unknown> },\n Keys extends readonly (keyof Schema[\"properties\"])[],\n> = Omit<Schema, \"properties\" | \"required\"> & {\n readonly properties: {\n readonly [K in Extract<keyof Schema[\"properties\"], Keys[number]>]: Schema[\"properties\"][K];\n };\n} & (Schema extends { readonly required: readonly (infer R extends string)[] }\n ? { readonly required: readonly Extract<R, Keys[number]>[] }\n : {});\n\n/**\n * ExcludeProps - Returns a new schema without the specified properties\n *\n * This is a schema transformer that returns a new schema object.\n * Use with FromSchema like: FromSchema<ExcludeProps<typeof schema, typeof [\"prop1\", \"prop2\"]>>\n *\n * @template Schema - The JSON schema object (with 'as const')\n * @template Keys - Readonly array type of property keys to exclude (use typeof [\"key1\", \"key2\"] as const)\n *\n * @example\n * const schema = {\n * type: \"object\",\n * properties: {\n * name: { type: \"string\" },\n * age: { type: \"number\" },\n * email: { type: \"string\" }\n * },\n * required: [\"name\"],\n * additionalProperties: false\n * } as const;\n *\n * type Filtered = FromSchema<ExcludeProps<typeof schema, typeof [\"email\"]>>;\n * // => { name: string, age?: number }\n */\nexport type ExcludeProps<\n Schema extends { readonly type: \"object\"; readonly properties: Record<string, unknown> },\n Keys extends readonly (keyof Schema[\"properties\"])[],\n> = Omit<Schema, \"properties\" | \"required\"> & {\n readonly properties: {\n readonly [K in Exclude<keyof Schema[\"properties\"], Keys[number]>]: Schema[\"properties\"][K];\n };\n} & (Schema extends { readonly required: readonly (infer R extends string)[] }\n ? { readonly required: readonly Exclude<R, Keys[number]>[] }\n : {});\n",
|
|
14
15
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Semantic Compatibility Utilities for Task Graph Dataflows\n *\n * In this project, task graphs have connections between tasks called dataflows.\n * These dataflows have different kinds of compatibility checks:\n *\n * **Static Compatibility:**\n * Static rules help decide if an edge should be connected at all. A connection\n * is statically compatible if:\n * - The source and target are the same exact type\n * - The source connects to the equivalent of \"any\" (target accepts anything)\n * - The source type is acceptable to the target (e.g., a string to something\n * that accepts oneOf[string[], string])\n *\n * **Runtime Compatibility:**\n * Assuming the connection is allowed at design time (passes static check),\n * runtime rules determine if they are compatible during execution.\n *\n * Currently, there is one runtime compatibility check:\n * - If both input and output schemas have 'format' annotations attached,\n * the format annotation has the format /\\w+(:\\w+)?/ where the first part\n * is the \"name\" and if alone matches any other with the same \"name\".\n * If there is a second part, then that narrows the type.\n * - Format checks apply to all types (strings, arrays, etc.), not just strings\n * - A schema with format can connect to a schema with no format (source has format, target doesn't)\n * - A schema with no format cannot connect to a schema with format (source doesn't have format, target does)\n *\n * Example: In the AI package, 'format':'model' and 'format': 'model:EmbeddingTask'\n * are used on string types. An input with property `model` and 'format':'model'\n * connects to a target with property `model` and 'format':'model:EmbeddingTask' --\n * this compatibility is called \"runtime\". It first passes the static check as\n * compatible and then notices a difference in format runtime.\n *\n * Format is also used on array types, e.g., 'format':'Float64Array' on arrays\n * containing Float64 numbers.\n *\n * Only connections that pass the runtime check will pass data at runtime.\n */\n\nimport type { JsonSchema } from \"./JsonSchema\";\n\n/**\n * Checks if two format strings are compatible.\n * Format: /\\w+(:\\w+)?/ where first part is the \"name\" and optional second part narrows the type.\n * - Same name without narrowing: static compatible\n * - Source name matches target narrowed name: runtime compatible\n * - Different names or incompatible narrowing: incompatible\n */\nfunction areFormatStringsCompatible(\n sourceFormat: string,\n targetFormat: string\n): \"static\" | \"runtime\" | \"incompatible\" {\n // Allow letters (must start), numbers, underscore, and dash; e.g., my-type:another_type\n const formatPattern = /^[a-zA-Z][a-zA-Z0-9_-]*(?::[a-zA-Z][a-zA-Z0-9_-]*)?$/;\n if (!formatPattern.test(sourceFormat) || !formatPattern.test(targetFormat)) {\n return \"incompatible\";\n }\n\n const [sourceName, sourceNarrow] = sourceFormat.split(\":\");\n const [targetName, targetNarrow] = targetFormat.split(\":\");\n\n // Different base names are incompatible\n if (sourceName !== targetName) {\n return \"incompatible\";\n }\n\n // Same name, no narrowing on either: static compatible\n if (!sourceNarrow && !targetNarrow) {\n return \"static\";\n }\n\n // Source has narrowing, target doesn't: static compatible (source is more specific)\n if (sourceNarrow && !targetNarrow) {\n return \"static\";\n }\n\n // Target has narrowing, source doesn't: runtime compatible (target is more specific)\n if (!sourceNarrow && targetNarrow) {\n return \"runtime\";\n }\n\n // Both have narrowing: must match exactly for static, otherwise incompatible\n if (sourceNarrow === targetNarrow) {\n return \"static\";\n }\n\n return \"incompatible\";\n}\n\n/**\n * Checks if a source type is statically compatible with a target type.\n * Handles cases like string to oneOf[string[], string] or string to any.\n */\nfunction isTypeStaticallyCompatible(sourceType: unknown, targetType: unknown): boolean {\n // Target accepts any type (no type constraint)\n if (!targetType) {\n return true;\n }\n\n // Source has no type constraint\n if (!sourceType) {\n return false;\n }\n\n // Convert to arrays for comparison\n const sourceTypes = Array.isArray(sourceType) ? sourceType : [sourceType];\n const targetTypes = Array.isArray(targetType) ? targetType : [targetType];\n\n // Check if any source type matches any target type\n return sourceTypes.some((st) => targetTypes.includes(st as any));\n}\n\n/**\n * Merges allOf schemas into a single schema representing their intersection.\n * For example: allOf: [{ type: \"string\", format: \"model\" }, { type: \"string\" }]\n * becomes: { type: \"string\", format: \"model\" }\n */\nfunction mergeAllOfSchemas(schemas: JsonSchema[]): JsonSchema | null {\n if (schemas.length === 0) return null;\n if (schemas.length === 1) return schemas[0] as JsonSchema;\n\n let merged: Record<string, unknown> = {};\n\n for (const schema of schemas) {\n if (typeof schema === \"boolean\") {\n if (schema === false) return false; // false in allOf makes the whole thing false\n // true in allOf doesn't add constraints, so we can skip it\n continue;\n }\n\n // At this point, schema is an object\n const schemaObj = schema as Record<string, unknown>;\n\n // Merge type\n if (schemaObj.type !== undefined) {\n if (merged.type === undefined) {\n merged.type = schemaObj.type;\n } else if (merged.type !== schemaObj.type) {\n // Types must be compatible - if they're different primitives, it's incompatible\n const mergedTypes = Array.isArray(merged.type) ? merged.type : [merged.type];\n const schemaTypes = Array.isArray(schemaObj.type) ? schemaObj.type : [schemaObj.type];\n const commonTypes = mergedTypes.filter((t: unknown) => schemaTypes.includes(t));\n if (commonTypes.length === 0) {\n return false; // Incompatible types\n }\n merged.type = commonTypes.length === 1 ? commonTypes[0] : commonTypes;\n }\n }\n\n // Merge format - use the most specific one (the one with narrowing if any)\n const schemaFormat = schemaObj.format as string | undefined;\n const mergedFormat = merged.format as string | undefined;\n if (schemaFormat) {\n if (!mergedFormat) {\n merged.format = schemaFormat;\n } else {\n // Both have formats - check if they're compatible\n const formatCompat = areFormatStringsCompatible(mergedFormat, schemaFormat);\n if (formatCompat === \"incompatible\") {\n return false; // Incompatible formats\n }\n // Use the more specific format (the one with narrowing, or either if both same)\n const mergedHasNarrow = mergedFormat.includes(\":\");\n const schemaHasNarrow = schemaFormat.includes(\":\");\n if (schemaHasNarrow && !mergedHasNarrow) {\n merged.format = schemaFormat;\n } else if (!schemaHasNarrow && mergedHasNarrow) {\n // Keep merged format (it's more specific)\n } else if (mergedFormat !== schemaFormat) {\n // Both have narrowing and they're different - should be caught by areFormatStringsCompatible\n return false;\n }\n }\n }\n\n // Merge properties for objects\n if (schemaObj.properties && typeof schemaObj.properties === \"object\") {\n if (!merged.properties) {\n merged.properties = {};\n }\n const mergedProps = merged.properties as Record<string, JsonSchema>;\n const schemaProps = schemaObj.properties as Record<string, JsonSchema>;\n for (const [key, value] of Object.entries(schemaProps)) {\n if (mergedProps[key]) {\n // Recursively merge nested schemas\n const nestedMerged = mergeAllOfSchemas([mergedProps[key], value]);\n if (nestedMerged === null || nestedMerged === false) {\n return false;\n }\n mergedProps[key] = nestedMerged as JsonSchema;\n } else {\n mergedProps[key] = value;\n }\n }\n }\n\n // Merge required arrays\n if (schemaObj.required && Array.isArray(schemaObj.required)) {\n if (!merged.required) {\n merged.required = [];\n }\n const mergedRequired = merged.required as string[];\n const schemaRequired = schemaObj.required as string[];\n // Intersection of required arrays\n merged.required = mergedRequired.filter((r) => schemaRequired.includes(r));\n }\n\n // Merge additionalProperties - most restrictive wins\n if (schemaObj.additionalProperties !== undefined) {\n if (merged.additionalProperties === undefined) {\n merged.additionalProperties = schemaObj.additionalProperties;\n } else if (merged.additionalProperties === true && schemaObj.additionalProperties === false) {\n merged.additionalProperties = false; // false is more restrictive\n }\n }\n\n // Merge items for arrays\n if (schemaObj.items !== undefined) {\n if (merged.items === undefined) {\n merged.items = schemaObj.items;\n } else {\n // Recursively merge item schemas\n const mergedItems = mergeAllOfSchemas([\n merged.items as JsonSchema,\n schemaObj.items as JsonSchema,\n ]);\n if (mergedItems === null || mergedItems === false) {\n return false;\n }\n merged.items = mergedItems;\n }\n }\n }\n\n return merged as JsonSchema;\n}\n\n/**\n * Checks if a source schema is compatible with a target schema in a oneOf/anyOf union.\n */\nfunction isCompatibleWithUnion(\n sourceSchema: JsonSchema,\n unionSchemas: JsonSchema[]\n): \"static\" | \"runtime\" | \"incompatible\" {\n let hasStatic = false;\n let hasRuntime = false;\n\n for (const unionSchema of unionSchemas) {\n const compatibility = areSemanticallyCompatible(sourceSchema, unionSchema);\n if (compatibility === \"static\") {\n hasStatic = true;\n } else if (compatibility === \"runtime\") {\n hasRuntime = true;\n }\n }\n\n if (hasStatic) return \"static\";\n if (hasRuntime) return \"runtime\";\n return \"incompatible\";\n}\n\n/**\n * Checks if two JSON schemas are semantically compatible.\n * Returns:\n * - \"static\": Compatible at design time, no runtime check needed\n * - \"runtime\": Compatible at design time, but needs runtime semantic check\n * - \"incompatible\": Not compatible\n */\nexport function areSemanticallyCompatible(\n sourceSchema: JsonSchema,\n targetSchema: JsonSchema\n): \"static\" | \"runtime\" | \"incompatible\" {\n // Handle undefined schemas (non-existent ports)\n if (sourceSchema === undefined || targetSchema === undefined) {\n return \"incompatible\";\n }\n\n // Handle boolean schemas\n if (typeof targetSchema === \"boolean\") {\n if (targetSchema === false) return \"incompatible\";\n if (targetSchema === true) return \"static\"; // target accepts anything\n return \"incompatible\";\n }\n\n if (typeof sourceSchema === \"boolean\") {\n if (sourceSchema === false) return \"incompatible\";\n // sourceSchema === true means source can be anything, which is compatible with any target, but may not be at runtime\n if (sourceSchema === true) return \"runtime\";\n }\n\n // Handle allOf in source (intersection types - merge all schemas first)\n if (sourceSchema.allOf && Array.isArray(sourceSchema.allOf)) {\n const mergedSchema = mergeAllOfSchemas(sourceSchema.allOf);\n if (mergedSchema === null || mergedSchema === false) {\n return \"incompatible\";\n }\n // Check compatibility of the merged schema against the target\n return areSemanticallyCompatible(mergedSchema, targetSchema);\n }\n\n // Check type compatibility first\n const sourceType = sourceSchema.type;\n const targetType = targetSchema.type;\n\n // Handle oneOf/anyOf in source first\n if (sourceSchema.oneOf && Array.isArray(sourceSchema.oneOf)) {\n let hasStatic = false;\n let hasRuntime = false;\n\n for (const sourceOption of sourceSchema.oneOf) {\n const compatibility = areSemanticallyCompatible(sourceOption as JsonSchema, targetSchema);\n if (compatibility === \"static\") {\n hasStatic = true;\n } else if (compatibility === \"runtime\") {\n hasRuntime = true;\n }\n }\n\n // If any option requires runtime check, the whole thing requires runtime check\n if (hasRuntime) return \"runtime\";\n if (hasStatic) return \"static\";\n return \"incompatible\";\n }\n\n if (sourceSchema.anyOf && Array.isArray(sourceSchema.anyOf)) {\n let hasStatic = false;\n let hasRuntime = false;\n\n for (const sourceOption of sourceSchema.anyOf) {\n const compatibility = areSemanticallyCompatible(sourceOption as JsonSchema, targetSchema);\n if (compatibility === \"static\") {\n hasStatic = true;\n } else if (compatibility === \"runtime\") {\n hasRuntime = true;\n }\n }\n\n // If any option requires runtime check, the whole thing requires runtime check\n if (hasRuntime) return \"runtime\";\n if (hasStatic) return \"static\";\n return \"incompatible\";\n }\n\n // Handle oneOf/anyOf in target (e.g., oneOf[string[], string])\n if (targetSchema.oneOf && Array.isArray(targetSchema.oneOf)) {\n return isCompatibleWithUnion(sourceSchema, targetSchema.oneOf);\n }\n\n if (targetSchema.anyOf && Array.isArray(targetSchema.anyOf)) {\n return isCompatibleWithUnion(sourceSchema, targetSchema.anyOf);\n }\n\n // Handle allOf in target (intersection types - source must be compatible with all)\n if (targetSchema.allOf && Array.isArray(targetSchema.allOf)) {\n let hasStatic = false;\n let hasRuntime = false;\n\n for (const allOfSchema of targetSchema.allOf) {\n const compatibility = areSemanticallyCompatible(sourceSchema, allOfSchema as JsonSchema);\n if (compatibility === \"incompatible\") {\n return \"incompatible\";\n } else if (compatibility === \"static\") {\n hasStatic = true;\n } else if (compatibility === \"runtime\") {\n hasRuntime = true;\n }\n }\n\n if (hasRuntime) return \"runtime\";\n if (hasStatic) return \"static\";\n return \"incompatible\";\n }\n\n // Handle object types - check if properties are compatible\n if (sourceType === \"object\" && targetType === \"object\") {\n const sourceProperties = sourceSchema.properties;\n const targetProperties = targetSchema.properties;\n\n // If target has no properties constraint, it accepts any object\n if (!targetProperties) {\n return \"static\";\n }\n\n // If source has no properties but target does, check if target allows additional properties\n if (!sourceProperties) {\n // If target doesn't allow additional properties, incompatible\n if (targetSchema.additionalProperties === false) {\n return \"incompatible\";\n }\n // Otherwise, source (any object) is compatible with target that allows additional properties\n return \"static\";\n }\n\n // Check if all required target properties are present and compatible in source\n const targetRequired = targetSchema.required || [];\n let hasStatic = true;\n let hasRuntime = false;\n\n for (const propName of targetRequired) {\n const targetProp = (targetProperties as Record<string, JsonSchema>)?.[propName];\n const sourceProp = (sourceProperties as Record<string, JsonSchema>)?.[propName];\n\n // If target requires a property that source doesn't have, incompatible\n if (!sourceProp) {\n return \"incompatible\";\n }\n\n // Check compatibility of the property\n if (targetProp) {\n const propCompatibility = areSemanticallyCompatible(sourceProp, targetProp);\n if (propCompatibility === \"incompatible\") {\n return \"incompatible\";\n } else if (propCompatibility === \"runtime\") {\n hasRuntime = true;\n hasStatic = false;\n }\n }\n }\n\n // Check if target allows additional properties\n if (targetSchema.additionalProperties === false) {\n // Target doesn't allow additional properties, so source can't have extra properties\n const sourcePropNames = Object.keys(sourceProperties as Record<string, JsonSchema>);\n const targetPropNames = Object.keys(targetProperties as Record<string, JsonSchema>);\n const extraProps = sourcePropNames.filter((name) => !targetPropNames.includes(name));\n if (extraProps.length > 0) {\n return \"incompatible\";\n }\n }\n\n if (hasRuntime) return \"runtime\";\n return \"static\";\n }\n\n // Handle array types - check compatibility of array items and array format\n if (sourceType === \"array\" && targetType === \"array\") {\n // First check format on the array schema itself (e.g., format: \"Float64Array\")\n const sourceFormat = (sourceSchema as any)?.format;\n const targetFormat = (targetSchema as any)?.format;\n\n let formatCompatibility: \"static\" | \"runtime\" | \"incompatible\" | null = null;\n\n // Both have format: check compatibility using prefix matching\n if (sourceFormat && targetFormat) {\n formatCompatibility = areFormatStringsCompatible(sourceFormat, targetFormat);\n // If formats are incompatible, the arrays are incompatible\n if (formatCompatibility === \"incompatible\") {\n return \"incompatible\";\n }\n }\n\n // Source has format, target doesn't: static compatible (source is more specific)\n if (sourceFormat && !targetFormat) {\n return \"static\";\n }\n\n // Source doesn't have format, target does: incompatible (target requires format)\n if (!sourceFormat && targetFormat) {\n return \"incompatible\";\n }\n\n // Now check array items compatibility\n const sourceItems = sourceSchema.items;\n const targetItems = targetSchema.items;\n\n // If both have items schemas, recursively check compatibility\n if (\n sourceItems &&\n typeof sourceItems === \"object\" &&\n !Array.isArray(sourceItems) &&\n targetItems &&\n typeof targetItems === \"object\" &&\n !Array.isArray(targetItems)\n ) {\n const itemsCompatibility = areSemanticallyCompatible(\n sourceItems as JsonSchema,\n targetItems as JsonSchema\n );\n // If format requires runtime check, return runtime (more restrictive)\n if (formatCompatibility === \"runtime\") {\n return \"runtime\";\n }\n return itemsCompatibility;\n }\n\n // If target accepts any array items, it's statically compatible\n if (!targetItems) {\n return \"static\";\n }\n\n // If source has no items but target does, incompatible\n if (!sourceItems) {\n return \"incompatible\";\n }\n\n // If target items is an array (tuple), check if source is compatible with any item\n if (Array.isArray(targetItems)) {\n return isCompatibleWithUnion(sourceItems as JsonSchema, targetItems as JsonSchema[]);\n }\n\n // Fallback to static if we can't determine\n return \"static\";\n }\n\n // If source has no type constraint, it can be anything (compatible with any target)\n // But we need to check if target has constraints that might require runtime checks\n if (!sourceType) {\n // Source accepts any type, but target might have format requiring runtime check\n const targetFormat = (targetSchema as any)?.format;\n if (targetFormat) {\n return \"runtime\";\n }\n return \"static\";\n }\n\n // Check if types are statically compatible\n if (!targetType) {\n // Target has no type constraint, it accepts anything\n // But we still need to check format - if target requires format, source must have it\n const targetFormat = (targetSchema as any)?.format;\n if (targetFormat) {\n // Target requires format, check if source has it\n const sourceFormat = (sourceSchema as any)?.format;\n if (!sourceFormat) {\n return \"incompatible\";\n }\n // Both have format, check compatibility\n return areFormatStringsCompatible(sourceFormat, targetFormat);\n }\n return \"static\";\n }\n\n if (!isTypeStaticallyCompatible(sourceType, targetType)) {\n return \"incompatible\";\n }\n\n // If types are compatible, check format compatibility\n // Format checks apply to all types, not just strings\n // Access format field directly (it's a standard JSON Schema field)\n const sourceFormat = (sourceSchema as any)?.format;\n const targetFormat = (targetSchema as any)?.format;\n\n // Both have format: check compatibility using prefix matching\n if (sourceFormat && targetFormat) {\n return areFormatStringsCompatible(sourceFormat, targetFormat);\n }\n\n // Source has format, target doesn't: static compatible (source is more specific)\n if (sourceFormat && !targetFormat) {\n return \"static\";\n }\n\n // Source doesn't have format, target does: incompatible (target requires format)\n if (!sourceFormat && targetFormat) {\n return \"incompatible\";\n }\n\n // Neither has format: static compatible\n return \"static\";\n}\n\n/**\n * Checks if two object schemas are semantically compatible.\n * This is a helper function for checking object-level schema compatibility.\n */\nexport function areObjectSchemasSemanticallyCompatible(\n sourceSchema: JsonSchema,\n targetSchema: JsonSchema\n): \"static\" | \"runtime\" | \"incompatible\" {\n return areSemanticallyCompatible(sourceSchema, targetSchema);\n}\n",
|
|
15
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { compileSchema } from \"json-schema-library\";\nexport type { SchemaNode } from \"json-schema-library\";\n",
|
|
16
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { compileSchema } from \"@sroussey/json-schema-library\";\nexport type { SchemaNode } from \"@sroussey/json-schema-library\";\n",
|
|
16
17
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport function forceArray<T = any>(input: T | T[]): T[] {\n if (Array.isArray(input)) return input;\n return [input];\n}\n\nexport async function sleep(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Takes an array of objects and collects values for each property into arrays\n * @param input Array of objects to process\n * @returns Object with arrays of values for each property\n */\nexport function collectPropertyValues<Input>(input: Input[]): { [K in keyof Input]: Input[K][] } {\n const output = {} as { [K in keyof Input]: Input[K][] };\n\n (input || []).forEach((item) => {\n Object.keys(item as object).forEach((key) => {\n const value = item[key as keyof Input];\n if (output[key as keyof Input]) {\n output[key as keyof Input].push(value);\n } else {\n output[key as keyof Input] = [value];\n }\n });\n });\n\n return output;\n}\n\nexport function toSQLiteTimestamp(date: Date | null | undefined) {\n if (!date) return null;\n const pad = (number: number) => (number < 10 ? \"0\" + number : number);\n\n const year = date.getUTCFullYear();\n const month = pad(date.getUTCMonth() + 1); // getUTCMonth() returns months from 0-11\n const day = pad(date.getUTCDate());\n const hours = pad(date.getUTCHours());\n const minutes = pad(date.getUTCMinutes());\n const seconds = pad(date.getUTCSeconds());\n\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n}\n\nexport function deepEqual(a: any, b: any): boolean {\n if (a === b) {\n return true;\n }\n\n if (typeof a !== \"object\" || typeof b !== \"object\" || a == null || b == null) {\n return false;\n }\n\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n for (const key of keysA) {\n if (!keysB.includes(key)) {\n return false;\n }\n\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function sortObject(obj: Record<string, any>): Record<string, any> {\n return Object.keys(obj)\n .sort()\n .reduce(\n (result, key) => {\n result[key] = obj[key];\n return result;\n },\n {} as Record<string, any>\n );\n}\n\nexport function serialize(obj: Record<string, any>): string {\n const sortedObj = sortObject(obj);\n return JSON.stringify(sortedObj);\n}\n",
|
|
17
18
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport type Cursor<T> = {\n length: number;\n next: () => IteratorResult<T>;\n [Symbol.iterator]: () => Iterator<T>;\n};\n/**\n * Creates a proxy that treats an object-of-arrays as an array-of-objects.\n * It lazily computes each row when accessed and lets you update or add new rows.\n *\n * When adding a new object (either via .push or assignment to the next index),\n * the underlying arrays are updated accordingly.\n *\n * @param data An object whose properties are arrays (assumed to have equal lengths)\n * @returns A proxy that behaves like an array of objects backed by the input arrays\n */\nexport function objectOfArraysAsArrayOfObjects<T extends Record<string, any>>(data: {\n [K in keyof T]: T[K][];\n}): Array<T> & { cursor: () => Cursor<T> } {\n // Get all keys from the object-of-arrays.\n const keys = Object.keys(data) as (keyof T)[];\n // confirm that all arrays have the same length\n const length = data[keys[0]].length;\n for (const key of keys) {\n if (data[key].length !== length) {\n console.error(\"All arrays must have the same length\", key, data[key].length, length, data);\n throw new Error(\"All arrays must have the same length\");\n }\n }\n\n const indexSymbol = Symbol(\"index\");\n\n /**\n * Creates a live row proxy for the given index.\n * The proxy intercepts get/set operations so that reads and writes\n * go directly to data[key][index].\n */\n function createRowProxy(index: number): T & { [indexSymbol]: number } {\n let currentIndex = index;\n return new Proxy({} as T & { [indexSymbol]: number }, {\n get(_target, prop, receiver) {\n if (currentIndex < 0 || currentIndex >= data[keys[0]].length) {\n return undefined;\n }\n if (typeof prop === \"string\" && keys.includes(prop as keyof T)) {\n return data[prop as keyof T][currentIndex];\n }\n if (prop === indexSymbol) {\n return currentIndex;\n }\n return Reflect.get(_target, prop, receiver);\n },\n set(_target, prop, value, receiver) {\n if (currentIndex < 0 || currentIndex >= data[keys[0]].length) {\n return false;\n }\n if (typeof prop === \"string\" && keys.includes(prop as keyof T)) {\n data[prop as keyof T][currentIndex] = value;\n return true;\n }\n if (prop === indexSymbol) {\n currentIndex = value;\n return true;\n }\n return Reflect.set(_target, prop, value, receiver);\n },\n ownKeys(_target) {\n return keys as string[];\n },\n getOwnPropertyDescriptor(_target, prop) {\n if (typeof prop === \"string\" && keys.includes(prop as keyof T)) {\n return { enumerable: true, configurable: true };\n }\n return undefined;\n },\n });\n }\n\n function createCursor(): Cursor<T> {\n // Determine the keys and the effective number of rows.\n let currentIndex = 0;\n\n // The cursor object that will be updated for each row.\n const cursor = createRowProxy(0);\n\n const obj = {\n get length() {\n return data[keys[0]].length;\n },\n /**\n * Returns the next row via the cursor.\n */\n next(): IteratorResult<T> {\n if (currentIndex < length) {\n cursor[indexSymbol] = currentIndex;\n currentIndex++;\n return { done: false, value: cursor };\n } else {\n return { done: true, value: undefined as any };\n }\n },\n /**\n * Makes the object iterable.\n */\n [Symbol.iterator](): Iterator<T> {\n // Reset the cursor for a fresh iteration.\n currentIndex = 0;\n cursor[indexSymbol] = currentIndex;\n return obj;\n },\n };\n return obj as Cursor<T>;\n }\n\n // Helper: shallow equality comparison between two rows.\n function shallowEqual(index: number, row: T): boolean {\n for (const key of keys) {\n if (data[key][index] !== row[key]) return false;\n }\n return true;\n }\n\n return new Proxy([] as Array<T>, {\n get(target, prop, receiver) {\n // Always return the current length dynamically.\n if (prop === \"length\") {\n return data[keys[0]].length;\n }\n\n // Create a cursor iterator.\n if (prop === \"cursor\") {\n return function () {\n return createCursor();\n };\n }\n\n // Override reverse to reverse the underlying arrays.\n if (prop === \"reverse\") {\n return function () {\n for (const key of keys) {\n data[key].reverse();\n }\n return receiver;\n };\n }\n\n // Override push to add a new object to the underlying arrays.\n if (prop === \"push\") {\n return function (...args: T[]) {\n for (const item of args) {\n for (const key of keys) {\n data[key].push(item[key]);\n }\n }\n return data[keys[0]].length;\n };\n }\n\n // Override pop to remove the last row from the underlying arrays and return it.\n if (prop === \"pop\") {\n return function () {\n const len = data[keys[0]].length;\n if (len === 0) return undefined;\n const poppedRow = {} as T;\n // Remove last element from each array and assemble the row to return.\n for (const key of keys) {\n poppedRow[key] = data[key].pop() as T[keyof T];\n }\n return poppedRow;\n };\n }\n\n // Override unshift to add a new row (or rows) at the beginning.\n if (prop === \"unshift\") {\n return function (...args: T[]) {\n // To preserve order, iterate from the last argument to the first.\n for (let i = args.length - 1; i >= 0; i--) {\n const item = args[i];\n for (const key of keys) {\n data[key].unshift(item[key]);\n }\n }\n return data[keys[0]].length;\n };\n }\n\n // Override shift to remove the first row from the underlying arrays and return it.\n if (prop === \"shift\") {\n return function () {\n if (data[keys[0]].length === 0) return undefined;\n const shiftedRow = {} as T;\n for (const key of keys) {\n shiftedRow[key] = data[key].shift() as T[keyof T];\n }\n return shiftedRow;\n };\n }\n\n // Override splice to remove or replace elements at a specific index.\n if (prop === \"splice\") {\n return function (start: number, deleteCount?: number, ...items: T[]) {\n const len = data[keys[0]].length;\n // Normalize start index.\n if (start < 0) {\n start = len + start;\n if (start < 0) start = 0;\n }\n if (deleteCount === undefined) {\n deleteCount = len - start;\n }\n // For each key, perform splice and capture removed elements.\n const removedByKey: { [K in keyof T]: T[K][] } = {} as any;\n for (const key of keys) {\n removedByKey[key] = data[key].splice(\n start,\n deleteCount,\n ...items.map((item) => item[key])\n );\n }\n // Combine removed elements into an array of objects.\n const removed: T[] = [];\n for (let i = 0; i < deleteCount; i++) {\n const row = {} as T;\n for (const key of keys) {\n row[key] = removedByKey[key][i];\n }\n removed.push(row);\n }\n return removed;\n };\n }\n\n // Override sort to sort the underlying arrays.\n // TODO(str): This is a bit of a hack. We should probably use a more efficient\n // way to do this.\n if (prop === \"sort\") {\n return function (compareFn?: (a: T, b: T) => number) {\n // Build an array of rows.\n const rows = [...receiver];\n // Sort rows.\n rows.sort(compareFn);\n // Write back sorted rows.\n for (const key of keys) {\n data[key] = rows.map((row) => row[key]);\n }\n return receiver;\n };\n }\n\n // Non-mutating Methods: now rewritten as follows.\n if (prop === \"includes\") {\n return function (searchElement: T, fromIndex?: number) {\n const len = data[keys[0]].length;\n let start = fromIndex ?? 0;\n if (start < 0) {\n start = Math.max(0, len + start);\n }\n for (let i = start; i < len; i++) {\n if (shallowEqual(i, searchElement)) return true;\n }\n return false;\n };\n }\n if (prop === \"indexOf\") {\n return function (searchElement: T, fromIndex?: number) {\n const len = data[keys[0]].length;\n let start = fromIndex ?? 0;\n if (start < 0) {\n start = Math.max(0, len + start);\n }\n for (let i = start; i < len; i++) {\n if (shallowEqual(i, searchElement)) return i;\n }\n return -1;\n };\n }\n if (prop === \"lastIndexOf\") {\n return function (searchElement: T, fromIndex?: number) {\n const len = data[keys[0]].length;\n // Default start index is the last element.\n let start = fromIndex ?? len - 1;\n if (start < 0) {\n start = len + start;\n }\n for (let i = start; i >= 0; i--) {\n if (shallowEqual(i, searchElement)) return i;\n }\n return -1;\n };\n }\n\n // Non-mutating methods implemented via an array of object row proxies.\n if (prop === \"forEach\") {\n return function (callback: (value: T, index: number, array: T[]) => void, thisArg?: any) {\n return [...receiver].forEach(callback, thisArg);\n };\n }\n if (prop === \"map\") {\n return function (callback: (value: T, index: number, array: T[]) => any, thisArg?: any) {\n return [...receiver].map(callback, thisArg);\n };\n }\n if (prop === \"filter\") {\n return function (\n callback: (value: T, index: number, array: T[]) => boolean,\n thisArg?: any\n ) {\n return [...receiver].filter(callback, thisArg);\n };\n }\n if (prop === \"reduce\") {\n return function (\n callback: (accumulator: any, currentValue: T, currentIndex: number, array: T[]) => any,\n initialValue?: any\n ) {\n return [...receiver].reduce(callback, initialValue);\n };\n }\n if (prop === \"find\") {\n return function (\n callback: (value: T, index: number, array: T[]) => boolean,\n thisArg?: any\n ) {\n return [...receiver].find(callback, thisArg);\n };\n }\n if (prop === \"every\") {\n return function (\n callback: (value: T, index: number, array: T[]) => boolean,\n thisArg?: any\n ) {\n return [...receiver].every(callback, thisArg);\n };\n }\n if (prop === \"some\") {\n return function (\n callback: (value: T, index: number, array: T[]) => boolean,\n thisArg?: any\n ) {\n return [...receiver].some(callback, thisArg);\n };\n }\n\n // When a numeric index is accessed, build and return the corresponding row.\n if (typeof prop === \"string\" && !isNaN(Number(prop))) {\n const index = Number(prop);\n if (index < 0 || index >= data[keys[0]].length) {\n return undefined;\n }\n return createRowProxy(index);\n }\n\n // Allow iteration over the rows.\n if (prop === Symbol.iterator) {\n return function* () {\n for (let i = 0; i < data[keys[0]].length; i++) {\n yield createRowProxy(i);\n }\n };\n }\n\n // Delegate any other property access.\n return Reflect.get(target, prop, receiver);\n },\n set(target, prop, value, receiver) {\n // Intercept numeric index assignments.\n if (typeof prop === \"string\" && !isNaN(Number(prop))) {\n const index = Number(prop);\n if (index === data[keys[0]].length) {\n // Appending a new row.\n for (const key of keys) {\n data[key].push(value[key]);\n }\n return true;\n } else if (index < data[keys[0]].length) {\n // Updating an existing row.\n for (const key of keys) {\n if (value.hasOwnProperty(key)) {\n data[key][index] = value[key];\n }\n }\n return true;\n }\n }\n return Reflect.set(target, prop, value, receiver);\n },\n // Intercept deletion of properties to remove a row from each underlying array.\n deleteProperty(target, prop) {\n if (typeof prop === \"string\" && !isNaN(Number(prop))) {\n const index = Number(prop);\n if (index >= 0 && index < data[keys[0]].length) {\n // Remove the element at this index from every underlying array.\n for (const key of keys) {\n // slice mutates the array in place\n data[key].splice(index, 1);\n }\n return true;\n }\n }\n return Reflect.deleteProperty(target, prop);\n },\n }) as Array<T> & { cursor: () => Cursor<T> };\n}\n",
|
|
19
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FromSchema, FromSchemaDefaultOptions, FromSchemaOptions } from \"../json-schema/FromSchema\";\nimport { JsonSchema } from \"../json-schema/JsonSchema\";\n\n/**\n * Supported typed array types\n * - Float16Array: 16-bit floating point (medium precision)\n * - Float32Array: Standard 32-bit floating point (most common)\n * - Float64Array: 64-bit floating point (high precision)\n * - Int8Array: 8-bit signed integer (binary quantization)\n * - Uint8Array: 8-bit unsigned integer (quantization)\n * - Int16Array: 16-bit signed integer (quantization)\n * - Uint16Array: 16-bit unsigned integer (quantization)\n */\nexport type TypedArray =\n | Float32Array\n | Float16Array\n | Float64Array\n | Int8Array\n | Uint8Array\n | Int16Array\n | Uint16Array;\n\nexport type TypedArrayString =\n | \"TypedArray\"\n | \"TypedArray:Float16Array\"\n | \"TypedArray:Float32Array\"\n | \"TypedArray:Float64Array\"\n | \"TypedArray:Int8Array\"\n | \"TypedArray:Uint8Array\"\n | \"TypedArray:Int16Array\"\n | \"TypedArray:Uint16Array\";\n\nexport function isTypedArray(value: unknown): value is TypedArray {\n return ArrayBuffer.isView(value) && !(value instanceof DataView);\n}\n\n// Type-only value for use in deserialize patterns\nconst TypedArrayType = null as any as TypedArray;\n\nconst TypedArraySchemaOptions = {\n ...FromSchemaDefaultOptions,\n deserialize: [\n {\n pattern: { type: \"array\", format: \"TypedArray:Float64Array\" },\n output: Float64Array,\n },\n {\n pattern: { type: \"array\", format: \"TypedArray:Float32Array\" },\n output: Float32Array,\n },\n {\n pattern: { type: \"array\", format: \"TypedArray:Float16Array\" },\n output: Float16Array,\n },\n {\n pattern: { type: \"array\", format: \"TypedArray:Int16Array\" },\n output: Int16Array,\n },\n {\n pattern: { type: \"array\", format: \"TypedArray:Int8Array\" },\n output: Int8Array,\n },\n {\n pattern: { type: \"array\", format: \"TypedArray:Uint8Array\" },\n output: Uint8Array,\n },\n {\n pattern: { type: \"array\", format: \"TypedArray:Uint16Array\" },\n output: Uint16Array,\n },\n {\n pattern: { type: \"array\", format: \"TypedArray\" },\n output: TypedArrayType,\n },\n ],\n} as const satisfies FromSchemaOptions;\n\nexport type TypedArraySchemaOptions = typeof TypedArraySchemaOptions;\n\nexport type VectorFromSchema<SCHEMA extends JsonSchema> = FromSchema<\n SCHEMA,\n TypedArraySchemaOptions\n>;\n\nexport const TypedArraySchema = (annotations: Record<string, unknown> = {}) => {\n return {\n type: \"array\",\n format: \"TypedArray\",\n title: \"Typed Array\",\n description: \"A typed array (Float32Array, Int8Array, etc.)\",\n ...annotations,\n } as const satisfies JsonSchema;\n};\n",
|
|
20
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FromSchema } from \"../json-schema/FromSchema\";\nimport { JsonSchema } from \"../json-schema/JsonSchema\";\nimport { TypedArraySchema, TypedArraySchemaOptions } from \"./TypedArray\";\n\nexport const TensorType = {\n FLOAT16: \"float16\",\n FLOAT32: \"float32\",\n FLOAT64: \"float64\",\n INT8: \"int8\",\n UINT8: \"uint8\",\n INT16: \"int16\",\n UINT16: \"uint16\",\n} as const;\n\nexport type TensorType = (typeof TensorType)[keyof typeof TensorType];\n\n/**\n * Tensor schema for representing tensors as arrays of numbers\n * @param annotations - Additional annotations for the schema\n * @returns The tensor schema\n */\nexport const TensorSchema = (annotations: Record<string, unknown> = {}) =>\n ({\n type: \"object\",\n properties: {\n type: {\n type: \"string\",\n enum: Object.values(TensorType),\n title: \"Type\",\n description: \"The type of the tensor\",\n },\n data: TypedArraySchema({\n title: \"Data\",\n description: \"The data of the tensor\",\n }),\n shape: {\n type: \"array\",\n items: { type: \"number\" },\n title: \"Shape\",\n description: \"The shape of the tensor (dimensions)\",\n minItems: 1,\n default: [1],\n },\n normalized: {\n type: \"boolean\",\n title: \"Normalized\",\n description: \"Whether the tensor data is normalized\",\n default: false,\n },\n },\n required: [\"data\"],\n additionalProperties: false,\n ...annotations,\n }) as const satisfies JsonSchema;\n\nexport type Tensor = FromSchema<ReturnType<typeof TensorSchema>, TypedArraySchemaOptions>;\n",
|
|
21
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TypedArray } from \"./TypedArray\";\n\n/**\n * Calculates cosine similarity between two vectors\n * Returns a value between -1 and 1, where 1 means identical direction\n */\nexport function cosineSimilarity(a: TypedArray, b: TypedArray): number {\n if (a.length !== b.length) {\n throw new Error(\"Vectors must have the same length\");\n }\n let dotProduct = 0;\n let normA = 0;\n let normB = 0;\n for (let i = 0; i < a.length; i++) {\n dotProduct += a[i] * b[i];\n normA += a[i] * a[i];\n normB += b[i] * b[i];\n }\n const denominator = Math.sqrt(normA) * Math.sqrt(normB);\n if (denominator === 0) {\n return 0;\n }\n return dotProduct / denominator;\n}\n\n/**\n * Calculates Jaccard similarity between two vectors\n * Uses the formula: sum(min(a[i], b[i])) / sum(max(a[i], b[i]))\n * Returns a value between 0 and 1\n * For negative values, normalizes by finding the global min and shifting to non-negative range\n */\nexport function jaccardSimilarity(a: TypedArray, b: TypedArray): number {\n if (a.length !== b.length) {\n throw new Error(\"Vectors must have the same length\");\n }\n\n // Find global min across both vectors to handle negative values\n let globalMin = a[0];\n for (let i = 0; i < a.length; i++) {\n globalMin = Math.min(globalMin, a[i], b[i]);\n }\n\n // Shift values to non-negative range if needed\n const shift = globalMin < 0 ? -globalMin : 0;\n\n let minSum = 0;\n let maxSum = 0;\n\n for (let i = 0; i < a.length; i++) {\n const shiftedA = a[i] + shift;\n const shiftedB = b[i] + shift;\n minSum += Math.min(shiftedA, shiftedB);\n maxSum += Math.max(shiftedA, shiftedB);\n }\n\n return maxSum === 0 ? 0 : minSum / maxSum;\n}\n\n/**\n * Calculates Hamming distance between two vectors (normalized)\n * Counts the number of positions where vectors differ\n * Returns a value between 0 and 1 (0 = identical, 1 = completely different)\n */\nexport function hammingDistance(a: TypedArray, b: TypedArray): number {\n if (a.length !== b.length) {\n throw new Error(\"Vectors must have the same length\");\n }\n\n let differences = 0;\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n differences++;\n }\n }\n\n return differences / a.length;\n}\n\n/**\n * Calculates Hamming similarity (inverse of distance)\n * Returns a value between 0 and 1 (1 = identical, 0 = completely different)\n */\nexport function hammingSimilarity(a: TypedArray, b: TypedArray): number {\n return 1 - hammingDistance(a, b);\n}\n",
|
|
22
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TypedArray } from \"./TypedArray\";\n\n/**\n * Calculates the magnitude (L2 norm) of a vector\n */\nexport function magnitude(arr: TypedArray | number[]): number {\n // @ts-ignore - Vector reduce works but TS doesn't recognize it\n return Math.sqrt(arr.reduce((acc, val) => acc + val * val, 0));\n}\n\n/**\n * Calculates the inner (dot) product of two vectors\n */\nexport function inner(arr1: TypedArray, arr2: TypedArray): number {\n if (arr1.length !== arr2.length) {\n throw new Error(\"Vectors must have the same length to compute inner product.\");\n }\n // @ts-ignore - Vector reduce works but TS doesn't recognize it\n return arr1.reduce((acc, val, i) => acc + val * arr2[i], 0);\n}\n\n/**\n * Normalizes a vector to unit length (L2 normalization)\n *\n * @param vector - The vector to normalize\n * @param throwOnZero - If true, throws an error for zero vectors. If false, returns the original vector.\n * @returns Normalized vector with the same type as input\n */\nexport function normalize(vector: TypedArray, throwOnZero = true, float32 = false): TypedArray {\n const mag = magnitude(vector);\n\n if (mag === 0) {\n if (throwOnZero) {\n throw new Error(\"Cannot normalize a zero vector.\");\n }\n return vector;\n }\n\n const normalized = Array.from(vector).map((val) => Number(val) / mag);\n\n if (float32) {\n return new Float32Array(normalized);\n }\n\n // Preserve the original Vector type\n if (vector instanceof Float64Array) {\n return new Float64Array(normalized);\n }\n if (vector instanceof Float16Array) {\n return new Float16Array(normalized);\n }\n if (vector instanceof Float32Array) {\n return new Float32Array(normalized);\n }\n if (vector instanceof Int8Array) {\n return new Int8Array(normalized);\n }\n if (vector instanceof Uint8Array) {\n return new Uint8Array(normalized);\n }\n if (vector instanceof Int16Array) {\n return new Int16Array(normalized);\n }\n if (vector instanceof Uint16Array) {\n return new Uint16Array(normalized);\n }\n // For other integer arrays, use Float32Array since normalization produces floats\n return new Float32Array(normalized);\n}\n\n/**\n * Normalizes an array of numbers to unit length (L2 normalization)\n *\n * @param values - The array of numbers to normalize\n * @param throwOnZero - If true, throws an error for zero vectors. If false, returns the original array.\n * @returns Normalized array of numbers\n */\nexport function normalizeNumberArray(values: number[], throwOnZero = false): number[] {\n const norm = magnitude(values);\n\n if (norm === 0) {\n if (throwOnZero) {\n throw new Error(\"Cannot normalize a zero vector.\");\n }\n return values;\n }\n\n return values.map((v) => v / norm);\n}\n",
|
|
18
23
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createServiceToken, globalServiceRegistry } from \"../di\";\n\n/**\n * Extracts transferables from an object.\n * @param obj - The object to extract transferables from.\n * @returns An array of transferables.\n */\nfunction extractTransferables(obj: any): Transferable[] {\n const transferables: Transferable[] = [];\n const seen = new WeakSet();\n\n function findTransferables(value: any) {\n // Avoid infinite recursion\n if (value && typeof value === \"object\" && seen.has(value)) {\n return;\n }\n if (value && typeof value === \"object\") {\n seen.add(value);\n }\n\n // Handle TypedArrays\n if (value instanceof Float32Array || value instanceof Int16Array) {\n transferables.push(value.buffer);\n }\n // Handle other TypedArrays\n else if (\n value instanceof Uint8Array ||\n value instanceof Uint8ClampedArray ||\n value instanceof Int8Array ||\n value instanceof Uint16Array ||\n value instanceof Int32Array ||\n value instanceof Uint32Array ||\n value instanceof Float64Array ||\n value instanceof BigInt64Array ||\n value instanceof BigUint64Array\n ) {\n transferables.push(value.buffer);\n }\n // Handle OffscreenCanvas\n else if (typeof OffscreenCanvas !== \"undefined\" && value instanceof OffscreenCanvas) {\n transferables.push(value);\n }\n // Handle ImageBitmap\n else if (typeof ImageBitmap !== \"undefined\" && value instanceof ImageBitmap) {\n transferables.push(value);\n }\n // Handle VideoFrame\n else if (typeof VideoFrame !== \"undefined\" && value instanceof VideoFrame) {\n transferables.push(value);\n }\n // Handle MessagePort\n else if (typeof MessagePort !== \"undefined\" && value instanceof MessagePort) {\n transferables.push(value);\n }\n // Handle ArrayBuffer\n else if (value instanceof ArrayBuffer) {\n transferables.push(value);\n }\n // Recursively search arrays and objects\n else if (Array.isArray(value)) {\n value.forEach(findTransferables);\n } else if (value && typeof value === \"object\") {\n Object.values(value).forEach(findTransferables);\n }\n }\n\n findTransferables(obj);\n return transferables;\n}\n\nexport class WorkerManager {\n private workers: Map<string, Worker> = new Map();\n private readyWorkers: Map<string, Promise<void>> = new Map();\n\n registerWorker(name: string, worker: Worker) {\n if (this.workers.has(name)) throw new Error(`Worker ${name} is already registered.`);\n this.workers.set(name, worker);\n\n this.workers.set(name, worker);\n worker.addEventListener(\"error\", (event) => {\n console.error(\"Worker Error:\", event.message, \"at\", event.filename, \"line:\", event.lineno);\n });\n worker.addEventListener(\"messageerror\", (event) => {\n console.error(\"Worker message error:\", event);\n });\n\n const readyPromise = new Promise<void>((resolve) => {\n const handleReady = (event: MessageEvent) => {\n if (event.data?.type === \"ready\") {\n worker.removeEventListener(\"message\", handleReady);\n resolve();\n }\n };\n\n worker.addEventListener(\"message\", handleReady);\n });\n\n this.readyWorkers.set(name, readyPromise);\n }\n\n getWorker(name: string): Worker {\n const worker = this.workers.get(name);\n if (!worker) throw new Error(`Worker ${name} not found.`);\n return worker;\n }\n\n async callWorkerFunction<T>(\n workerName: string,\n functionName: string,\n args: any[],\n options?: {\n signal?: AbortSignal;\n onProgress?: (progress: number, message?: string, details?: any) => void;\n }\n ): Promise<T> {\n const worker = this.workers.get(workerName);\n if (!worker) throw new Error(`Worker ${workerName} not found.`);\n await this.readyWorkers.get(workerName);\n\n return new Promise((resolve, reject) => {\n const requestId = crypto.randomUUID();\n\n const handleMessage = (event: MessageEvent) => {\n const { id, type, data } = event.data;\n if (id !== requestId) return;\n if (type === \"progress\" && options?.onProgress) {\n options.onProgress(data.progress, data.message, data.details);\n } else if (type === \"complete\") {\n cleanup();\n resolve(data);\n } else if (type === \"error\") {\n cleanup();\n reject(new Error(data));\n }\n };\n\n const handleAbort = () => {\n worker.postMessage({ id: requestId, type: \"abort\" });\n };\n\n const cleanup = () => {\n worker.removeEventListener(\"message\", handleMessage);\n options?.signal?.removeEventListener(\"abort\", handleAbort);\n };\n\n worker.addEventListener(\"message\", handleMessage);\n\n if (options?.signal) {\n options.signal.addEventListener(\"abort\", handleAbort, { once: true });\n }\n\n const message = { id: requestId, type: \"call\", functionName, args };\n const transferables = extractTransferables(message);\n worker.postMessage(message, transferables);\n });\n }\n}\n\nexport const WORKER_MANAGER = createServiceToken<WorkerManager>(\"worker.manager\");\n\nglobalServiceRegistry.register(WORKER_MANAGER, () => new WorkerManager(), true);\n",
|
|
19
24
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { parentPort } from \"@workglow/util\";\nimport { createServiceToken, globalServiceRegistry } from \"../di\";\n\n/**\n * Extracts transferables from an object.\n * @param obj - The object to extract transferables from.\n * @returns An array of transferables.\n */\nfunction extractTransferables(obj: any) {\n const transferables: Transferable[] = [];\n const seen = new WeakSet();\n\n function findTransferables(value: any) {\n // Avoid infinite recursion\n if (value && typeof value === \"object\" && seen.has(value)) {\n return;\n }\n if (value && typeof value === \"object\") {\n seen.add(value);\n }\n\n // Handle TypedArrays\n if (value instanceof Float32Array || value instanceof Int16Array) {\n transferables.push(value.buffer);\n }\n // Handle other TypedArrays\n else if (\n value instanceof Uint8Array ||\n value instanceof Uint8ClampedArray ||\n value instanceof Int8Array ||\n value instanceof Uint16Array ||\n value instanceof Int32Array ||\n value instanceof Uint32Array ||\n value instanceof Float64Array ||\n value instanceof BigInt64Array ||\n value instanceof BigUint64Array\n ) {\n transferables.push(value.buffer);\n }\n // Handle OffscreenCanvas\n else if (typeof OffscreenCanvas !== \"undefined\" && value instanceof OffscreenCanvas) {\n transferables.push(value);\n }\n // Handle ImageBitmap\n else if (typeof ImageBitmap !== \"undefined\" && value instanceof ImageBitmap) {\n transferables.push(value);\n }\n // Handle VideoFrame\n else if (typeof VideoFrame !== \"undefined\" && value instanceof VideoFrame) {\n transferables.push(value);\n }\n // Handle MessagePort\n else if (typeof MessagePort !== \"undefined\" && value instanceof MessagePort) {\n transferables.push(value);\n }\n // Handle ArrayBuffer\n else if (value instanceof ArrayBuffer) {\n transferables.push(value);\n }\n // Recursively search arrays and objects\n else if (Array.isArray(value)) {\n value.forEach(findTransferables);\n } else if (value && typeof value === \"object\") {\n Object.values(value).forEach(findTransferables);\n }\n }\n\n findTransferables(obj);\n return transferables;\n}\n\n/**\n * WorkerServer is a class that handles messages from the main thread to the worker.\n * It is used to register functions that can be called from the main thread.\n * It also handles the transfer of transferables to the main thread.\n */\nexport class WorkerServer {\n constructor() {\n parentPort?.addEventListener(\"message\", async (event) => {\n const msg = {\n type: event.type,\n // @ts-ignore - Ignore type mismatch between standard MessageEvent and our message type\n data: event.data,\n };\n await this.handleMessage(msg);\n });\n }\n\n private functions: Record<string, (...args: any[]) => Promise<any>> = {};\n\n // Keep track of each request's AbortController\n private requestControllers = new Map<string, AbortController>();\n // Keep track of requests that have already been responded to\n private completedRequests = new Set<string>();\n\n private postResult = (id: string, result: any) => {\n if (this.completedRequests.has(id)) {\n return; // Already responded to this request\n }\n this.completedRequests.add(id);\n const transferables = extractTransferables(result);\n // @ts-ignore - Ignore type mismatch between standard Transferable and Bun.Transferable\n postMessage({ id, type: \"complete\", data: result }, transferables);\n };\n\n private postError = (id: string, errorMessage: string) => {\n if (this.completedRequests.has(id)) {\n return; // Already responded to this request\n }\n this.completedRequests.add(id);\n postMessage({ id, type: \"error\", data: errorMessage });\n };\n\n registerFunction(name: string, fn: (...args: any[]) => Promise<any>) {\n this.functions[name] = fn;\n }\n\n // Handle messages from the main thread\n async handleMessage(event: { type: string; data: any }) {\n const { id, type, functionName, args } = event.data;\n if (type === \"abort\") {\n return await this.handleAbort(id);\n }\n if (type === \"call\") {\n return await this.handleCall(id, functionName, args);\n }\n }\n\n async handleAbort(id: string) {\n if (this.requestControllers.has(id)) {\n const controller = this.requestControllers.get(id);\n controller?.abort();\n this.requestControllers.delete(id);\n // Send error response back to main thread so the promise rejects\n this.postError(id, \"Operation aborted\");\n }\n }\n\n async handleCall(id: string, functionName: string, [input, model]: [any, any]) {\n if (!(functionName in this.functions)) {\n this.postError(id, `Function ${functionName} not found`);\n return;\n }\n\n try {\n const abortController = new AbortController();\n this.requestControllers.set(id, abortController);\n\n const fn = this.functions[functionName];\n const postProgress = (progress: number, message?: string, details?: any) => {\n // Don't send progress updates after the request is completed/aborted\n if (!this.completedRequests.has(id)) {\n postMessage({ id, type: \"progress\", data: { progress, message, details } });\n }\n };\n const result = await fn(input, model, postProgress, abortController.signal);\n this.postResult(id, result);\n } catch (error: any) {\n this.postError(id, error.message);\n } finally {\n this.requestControllers.delete(id);\n // Clean up completed requests set after a delay to handle any race conditions\n // where abort message might arrive shortly after completion\n setTimeout(() => {\n this.completedRequests.delete(id);\n }, 1000);\n }\n }\n}\n\nexport const WORKER_SERVER = createServiceToken<WorkerServer>(\"worker.server\");\n\nglobalServiceRegistry.register(WORKER_SERVER, () => new WorkerServer(), true);\n",
|
|
20
25
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Node environment\n\nimport { promisify } from \"util\";\nimport zlib from \"zlib\";\n\nexport async function compress(\n input: string | Buffer,\n algorithm: \"gzip\" | \"br\" = \"gzip\"\n): Promise<Uint8Array> {\n const compressFn = algorithm === \"br\" ? zlib.brotliCompress : zlib.gzip;\n const compressAsync = promisify(compressFn);\n const compressAsyncTyped = compressAsync as unknown as (\n source: Buffer | Uint8Array | DataView\n ) => Promise<Buffer>;\n const sourceBuffer = Buffer.isBuffer(input) ? input : Buffer.from(input);\n const result: Buffer = await compressAsyncTyped(sourceBuffer);\n // Create a Uint8Array view over the Buffer without copying\n return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);\n}\n\nexport async function decompress(\n input: Uint8Array,\n algorithm: \"gzip\" | \"br\" = \"gzip\"\n): Promise<string> {\n const decompressFn = algorithm === \"br\" ? zlib.brotliDecompress : zlib.gunzip;\n const decompressAsync = promisify(decompressFn);\n const decompressAsyncTyped = decompressAsync as unknown as (\n source: Buffer | Uint8Array | DataView\n ) => Promise<Buffer>;\n const sourceBuffer = Buffer.isBuffer(input) ? (input as unknown as Buffer) : Buffer.from(input);\n const resultBuffer: Buffer = await decompressAsyncTyped(sourceBuffer);\n return resultBuffer.toString();\n}\n",
|
|
@@ -23,7 +28,7 @@
|
|
|
23
28
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ImageBinary, ImageChannels, ImageDataSupport } from \"./image\";\nimport { parseDataUri } from \"./image\";\n\nexport { parseDataUri };\nexport type { ImageBinary, ImageChannels, ImageDataSupport };\n\nasync function dataUriToBlob(string: string): Promise<Blob> {\n const { mimeType, base64 } = parseDataUri(string);\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return new Blob([bytes], { type: mimeType });\n}\n\nexport async function convertImageDataToUseableForm(\n imageData: unknown,\n supports: ImageDataSupport[]\n): Promise<unknown> {\n if (imageData === null || imageData === undefined) {\n throw new Error(\"Image data is null or undefined\");\n }\n\n // first check if the image data is already in the supported format\n if (supports.includes(\"Blob\") && imageData instanceof Blob) {\n return imageData;\n }\n\n if (\n supports.includes(\"ImageBinary\") &&\n typeof imageData === \"object\" &&\n \"data\" in imageData &&\n \"width\" in imageData &&\n \"height\" in imageData &&\n \"channels\" in imageData\n ) {\n return {\n data: imageData.data,\n width: imageData.width,\n height: imageData.height,\n channels: imageData.channels,\n };\n }\n\n // if not, convert it to the first supported format\n if (supports.includes(\"Blob\") && typeof imageData === \"string\") {\n return await dataUriToBlob(imageData);\n }\n\n if (\n supports.includes(\"DataUri\") &&\n typeof imageData === \"string\" &&\n imageData.startsWith(\"data:\")\n ) {\n return imageData;\n }\n\n throw new Error(`Unsupported image data type: ${typeof imageData}`);\n}\n",
|
|
24
29
|
"const Worker = globalThis.Worker;\nconst parentPort = self;\nexport { Worker, parentPort };\n"
|
|
25
30
|
],
|
|
26
|
-
"mappings": "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",
|
|
27
|
-
"debugId": "
|
|
31
|
+
"mappings": "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",
|
|
32
|
+
"debugId": "5C29A628C26F3F6064756E2164756E21",
|
|
28
33
|
"names": []
|
|
29
34
|
}
|
package/dist/common.d.ts
CHANGED
|
@@ -15,6 +15,10 @@ export * from "./utilities/BaseError";
|
|
|
15
15
|
export * from "./utilities/Misc";
|
|
16
16
|
export * from "./utilities/objectOfArraysAsArrayOfObjects";
|
|
17
17
|
export * from "./utilities/TypeUtilities";
|
|
18
|
+
export * from "./vector/Tensor";
|
|
19
|
+
export * from "./vector/TypedArray";
|
|
20
|
+
export * from "./vector/VectorSimilarityUtils";
|
|
21
|
+
export * from "./vector/VectorUtils";
|
|
18
22
|
export * from "./worker/WorkerManager";
|
|
19
23
|
export * from "./worker/WorkerServer";
|
|
20
24
|
//# sourceMappingURL=common.d.ts.map
|
package/dist/common.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,MAAM,CAAC;AACrB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,MAAM,CAAC;AACrB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { ServiceRegistry } from "./ServiceRegistry";
|
|
7
|
+
/**
|
|
8
|
+
* A resolver function that converts a string ID to an instance.
|
|
9
|
+
* Returns undefined if the resolver cannot handle this format.
|
|
10
|
+
* Throws an error if the ID is not found.
|
|
11
|
+
*
|
|
12
|
+
* @param id The string ID to resolve
|
|
13
|
+
* @param format The full format string (e.g., "model:TextEmbedding", "storage:tabular")
|
|
14
|
+
* @param registry The service registry to use for lookups
|
|
15
|
+
*/
|
|
16
|
+
export type InputResolverFn = (id: string, format: string, registry: ServiceRegistry) => unknown | Promise<unknown>;
|
|
17
|
+
/**
|
|
18
|
+
* Service token for the input resolver registry.
|
|
19
|
+
* Maps format prefixes to resolver functions.
|
|
20
|
+
*/
|
|
21
|
+
export declare const INPUT_RESOLVERS: import("./ServiceRegistry").ServiceToken<Map<string, InputResolverFn>>;
|
|
22
|
+
/**
|
|
23
|
+
* Gets the global input resolver registry
|
|
24
|
+
* @returns Map of format prefix to resolver function
|
|
25
|
+
*/
|
|
26
|
+
export declare function getInputResolvers(): Map<string, InputResolverFn>;
|
|
27
|
+
/**
|
|
28
|
+
* Registers an input resolver for a format prefix.
|
|
29
|
+
* The resolver will be called for any format that starts with this prefix.
|
|
30
|
+
*
|
|
31
|
+
* @param formatPrefix The format prefix to match (e.g., "model", "dataset")
|
|
32
|
+
* @param resolver The resolver function
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* // Register model resolver
|
|
37
|
+
* registerInputResolver("model", async (id, format, registry) => {
|
|
38
|
+
* const modelRepo = registry.get(MODEL_REPOSITORY);
|
|
39
|
+
* const model = await modelRepo.findByName(id);
|
|
40
|
+
* if (!model) throw new Error(`Model "${id}" not found`);
|
|
41
|
+
* return model;
|
|
42
|
+
* });
|
|
43
|
+
*
|
|
44
|
+
* // Register dataset resolver
|
|
45
|
+
* registerInputResolver("dataset", (id, format, registry) => {
|
|
46
|
+
* const datasetType = format.split(":")[1]; // "tabular", "vector", etc.
|
|
47
|
+
* if (datasetType === "tabular") {
|
|
48
|
+
* const datasets = registry.get(TABULAR_DATASETS);
|
|
49
|
+
* const dataset = datasets.get(id);
|
|
50
|
+
* if (!dataset) throw new Error(`Dataset "${id}" not found`);
|
|
51
|
+
* return dataset;
|
|
52
|
+
* }
|
|
53
|
+
* throw new Error(`Unknown dataset type: ${datasetType}`);
|
|
54
|
+
* });
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare function registerInputResolver(formatPrefix: string, resolver: InputResolverFn): void;
|
|
58
|
+
//# sourceMappingURL=InputResolverRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputResolverRegistry.d.ts","sourceRoot":"","sources":["../../src/di/InputResolverRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,eAAe,KACtB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,eAAe,wEAC8C,CAAC;AAW3E;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAEhE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CAG3F"}
|
|
@@ -21,7 +21,7 @@ export declare function createServiceToken<T>(id: string): ServiceToken<T>;
|
|
|
21
21
|
* Service registry for managing and accessing services
|
|
22
22
|
*/
|
|
23
23
|
export declare class ServiceRegistry {
|
|
24
|
-
|
|
24
|
+
container: Container;
|
|
25
25
|
/**
|
|
26
26
|
* Create a new service registry
|
|
27
27
|
* @param container Optional container to use (defaults to global container)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceRegistry.d.ts","sourceRoot":"","sources":["../../src/di/ServiceRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAEjE;AAED;;GAEG;AACH,qBAAa,eAAe;
|
|
1
|
+
{"version":3,"file":"ServiceRegistry.d.ts","sourceRoot":"","sources":["../../src/di/ServiceRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAEjE;AAED;;GAEG;AACH,qBAAa,eAAe;IACnB,SAAS,EAAE,SAAS,CAAC;IAE5B;;;OAGG;gBACS,SAAS,GAAE,SAA2B;IAIlD;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,SAAS,UAAO,GAAG,IAAI;IAI7E;;;;OAIG;IACH,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI;IAI9D;;;;OAIG;IACH,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;IAIjC;;;;OAIG;IACH,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;CAGxC;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,iBAAuC,CAAC"}
|
package/dist/di/index.d.ts
CHANGED
package/dist/di/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/di/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/di/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC"}
|
|
@@ -17,6 +17,7 @@ export type JsonSchemaCustomProps = {
|
|
|
17
17
|
"x-ui-group-priority"?: number;
|
|
18
18
|
"x-ui-group-open"?: boolean;
|
|
19
19
|
"x-ui"?: unknown;
|
|
20
|
+
"x-auto-generated"?: boolean;
|
|
20
21
|
};
|
|
21
22
|
export type JsonSchema<EXTENSION extends JSONSchemaExtension = JsonSchemaCustomProps> = ExtendedJSONSchema<EXTENSION>;
|
|
22
23
|
//# sourceMappingURL=JsonSchema.d.ts.map
|