@workglow/util 0.0.102 → 0.0.103
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +314 -44
- package/dist/browser.js.map +9 -5
- package/dist/bun.js +314 -44
- package/dist/bun.js.map +9 -5
- package/dist/common.d.ts +2 -0
- package/dist/common.d.ts.map +1 -1
- package/dist/json-schema/JsonSchema.d.ts +2 -1
- package/dist/json-schema/JsonSchema.d.ts.map +1 -1
- package/dist/json-schema/parsePartialJson.d.ts +21 -0
- package/dist/json-schema/parsePartialJson.d.ts.map +1 -0
- package/dist/logging/ConsoleLogger.d.ts +27 -0
- package/dist/logging/ConsoleLogger.d.ts.map +1 -0
- package/dist/logging/ILogger.d.ts +22 -0
- package/dist/logging/ILogger.d.ts.map +1 -0
- package/dist/logging/LoggerRegistry.d.ts +19 -0
- package/dist/logging/LoggerRegistry.d.ts.map +1 -0
- package/dist/logging/NullLogger.d.ts +23 -0
- package/dist/logging/NullLogger.d.ts.map +1 -0
- package/dist/logging/index.d.ts +10 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/node.js +314 -44
- package/dist/node.js.map +9 -5
- package/dist/worker/WorkerManager.d.ts +4 -0
- package/dist/worker/WorkerManager.d.ts.map +1 -1
- package/dist/worker/WorkerServer.d.ts +6 -0
- package/dist/worker/WorkerServer.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/common.d.ts
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export * from "./di";
|
|
7
7
|
export * from "./events/EventEmitter";
|
|
8
|
+
export * from "./logging";
|
|
8
9
|
export * from "./graph";
|
|
9
10
|
export * from "./json-schema/DataPortSchema";
|
|
10
11
|
export * from "./json-schema/FromSchema";
|
|
11
12
|
export * from "./json-schema/JsonSchema";
|
|
12
13
|
export * from "./json-schema/SchemaUtils";
|
|
13
14
|
export * from "./json-schema/SchemaValidation";
|
|
15
|
+
export * from "./json-schema/parsePartialJson";
|
|
14
16
|
export * from "./utilities/BaseError";
|
|
15
17
|
export * from "./utilities/Misc";
|
|
16
18
|
export * from "./utilities/objectOfArraysAsArrayOfObjects";
|
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,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,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,WAAW,CAAC;AAC1B,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,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,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC"}
|
|
@@ -19,7 +19,8 @@ export type JsonSchemaCustomProps = {
|
|
|
19
19
|
"x-ui"?: unknown;
|
|
20
20
|
"x-ui-iteration"?: boolean;
|
|
21
21
|
"x-auto-generated"?: boolean;
|
|
22
|
-
"x-stream"?: "append" | "replace";
|
|
22
|
+
"x-stream"?: "append" | "replace" | "object";
|
|
23
|
+
"x-structured-output"?: boolean;
|
|
23
24
|
};
|
|
24
25
|
export type JsonSchema<EXTENSION extends JSONSchemaExtension = JsonSchemaCustomProps> = ExtendedJSONSchema<EXTENSION>;
|
|
25
26
|
//# sourceMappingURL=JsonSchema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonSchema.d.ts","sourceRoot":"","sources":["../../src/json-schema/JsonSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAE3F,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"JsonSchema.d.ts","sourceRoot":"","sources":["../../src/json-schema/JsonSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAE3F,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC7C,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,SAAS,SAAS,mBAAmB,GAAG,qBAAqB,IAClF,kBAAkB,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Attempts to parse a potentially incomplete JSON string into a partial object.
|
|
8
|
+
*
|
|
9
|
+
* Useful for progressive rendering of streamed JSON output from AI providers.
|
|
10
|
+
* Each call returns the most complete object that can be parsed from the
|
|
11
|
+
* accumulated text so far.
|
|
12
|
+
*
|
|
13
|
+
* Strategy:
|
|
14
|
+
* 1. Try JSON.parse directly (handles complete JSON)
|
|
15
|
+
* 2. If that fails, attempt to close open delimiters and re-parse
|
|
16
|
+
*
|
|
17
|
+
* @param text - The (possibly incomplete) JSON string
|
|
18
|
+
* @returns The parsed partial object, or undefined if text is too incomplete
|
|
19
|
+
*/
|
|
20
|
+
export declare function parsePartialJson(text: string): Record<string, unknown> | undefined;
|
|
21
|
+
//# sourceMappingURL=parsePartialJson.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsePartialJson.d.ts","sourceRoot":"","sources":["../../src/json-schema/parsePartialJson.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CA8BlF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { ILogger } from "./ILogger";
|
|
7
|
+
/**
|
|
8
|
+
* Default logger that delegates to the global `console` object.
|
|
9
|
+
* When created via {@link child}, accumulated bindings are passed
|
|
10
|
+
* as a second argument to every console call.
|
|
11
|
+
*/
|
|
12
|
+
export declare class ConsoleLogger implements ILogger {
|
|
13
|
+
private readonly bindings;
|
|
14
|
+
constructor(bindings?: Record<string, unknown>);
|
|
15
|
+
info(message: string, meta?: Record<string, unknown>): void;
|
|
16
|
+
warn(message: string, meta?: Record<string, unknown>): void;
|
|
17
|
+
error(message: string, meta?: Record<string, unknown>): void;
|
|
18
|
+
debug(message: string, meta?: Record<string, unknown>): void;
|
|
19
|
+
fatal(err: Error, message: string, meta?: Record<string, unknown>): void;
|
|
20
|
+
time(label: string, meta?: Record<string, unknown>): void;
|
|
21
|
+
timeEnd(label: string, meta?: Record<string, unknown>): void;
|
|
22
|
+
group(label: string, meta?: Record<string, unknown>): void;
|
|
23
|
+
groupEnd(): void;
|
|
24
|
+
child(bindings: Record<string, unknown>): ILogger;
|
|
25
|
+
private merge;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=ConsoleLogger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsoleLogger.d.ts","sourceRoot":"","sources":["../../src/logging/ConsoleLogger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;GAIG;AACH,qBAAa,aAAc,YAAW,OAAO;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;gBAEvC,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAIlD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAS3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAS3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAS5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAS5D,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IASxE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAQzD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAQ5D,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAS1D,QAAQ,IAAI,IAAI;IAIhB,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAIjD,OAAO,CAAC,KAAK;CAOd"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Structured logger interface for use across all workglow packages.
|
|
8
|
+
* Implementations are swapped via DI ({@link LoggerRegistry}).
|
|
9
|
+
*/
|
|
10
|
+
export interface ILogger {
|
|
11
|
+
debug(message: string, meta?: Record<string, unknown>): void;
|
|
12
|
+
info(message: string, meta?: Record<string, unknown>): void;
|
|
13
|
+
warn(message: string, meta?: Record<string, unknown>): void;
|
|
14
|
+
error(message: string, meta?: Record<string, unknown>): void;
|
|
15
|
+
fatal(err: Error, message: string, meta?: Record<string, unknown>): void;
|
|
16
|
+
child(bindings: Record<string, unknown>): ILogger;
|
|
17
|
+
time(label: string, meta?: Record<string, unknown>): void;
|
|
18
|
+
timeEnd(label: string, meta?: Record<string, unknown>): void;
|
|
19
|
+
group(label: string, meta?: Record<string, unknown>): void;
|
|
20
|
+
groupEnd(): void;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=ILogger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ILogger.d.ts","sourceRoot":"","sources":["../../src/logging/ILogger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzE,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IAClD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1D,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3D,QAAQ,IAAI,IAAI,CAAC;CAClB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { ILogger } from "./ILogger";
|
|
7
|
+
/**
|
|
8
|
+
* Service token for the global logger instance.
|
|
9
|
+
*/
|
|
10
|
+
export declare const LOGGER: import("../di").ServiceToken<ILogger>;
|
|
11
|
+
/**
|
|
12
|
+
* Returns the current global logger.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getLogger(): ILogger;
|
|
15
|
+
/**
|
|
16
|
+
* Replaces the global logger instance.
|
|
17
|
+
*/
|
|
18
|
+
export declare function setLogger(logger: ILogger): void;
|
|
19
|
+
//# sourceMappingURL=LoggerRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoggerRegistry.d.ts","sourceRoot":"","sources":["../../src/logging/LoggerRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,MAAM,uCAAwC,CAAC;AAO5D;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAE/C"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { ILogger } from "./ILogger";
|
|
7
|
+
/**
|
|
8
|
+
* Silent logger that discards all output.
|
|
9
|
+
* Useful for suppressing log noise in tests.
|
|
10
|
+
*/
|
|
11
|
+
export declare class NullLogger implements ILogger {
|
|
12
|
+
info(_message: string, _meta?: Record<string, unknown>): void;
|
|
13
|
+
error(_message: string, _meta?: Record<string, unknown>): void;
|
|
14
|
+
warn(_message: string, _meta?: Record<string, unknown>): void;
|
|
15
|
+
debug(_message: string, _meta?: Record<string, unknown>): void;
|
|
16
|
+
fatal(_err: Error, _message: string, _meta?: Record<string, unknown>): void;
|
|
17
|
+
time(_label: string, _meta?: Record<string, unknown>): void;
|
|
18
|
+
timeEnd(_label: string, _meta?: Record<string, unknown>): void;
|
|
19
|
+
group(_label: string, _meta?: Record<string, unknown>): void;
|
|
20
|
+
groupEnd(): void;
|
|
21
|
+
child(_bindings: Record<string, unknown>): ILogger;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=NullLogger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NullLogger.d.ts","sourceRoot":"","sources":["../../src/logging/NullLogger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;;GAGG;AACH,qBAAa,UAAW,YAAW,OAAO;IACxC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAC7D,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAC9D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAC7D,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAC9D,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAC3E,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAC3D,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAC9D,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAC5D,QAAQ,IAAI,IAAI;IAChB,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;CAGnD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export * from "./ILogger";
|
|
7
|
+
export * from "./ConsoleLogger";
|
|
8
|
+
export * from "./NullLogger";
|
|
9
|
+
export * from "./LoggerRegistry";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC"}
|
package/dist/node.js
CHANGED
|
@@ -143,6 +143,117 @@ class EventEmitter {
|
|
|
143
143
|
return () => this.off(event, listener);
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
|
+
// src/logging/ConsoleLogger.ts
|
|
147
|
+
class ConsoleLogger {
|
|
148
|
+
bindings;
|
|
149
|
+
constructor(bindings = {}) {
|
|
150
|
+
this.bindings = bindings;
|
|
151
|
+
}
|
|
152
|
+
info(message, meta) {
|
|
153
|
+
const merged = this.merge(meta);
|
|
154
|
+
if (merged) {
|
|
155
|
+
console.info(message, merged);
|
|
156
|
+
} else {
|
|
157
|
+
console.info(message);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
warn(message, meta) {
|
|
161
|
+
const merged = this.merge(meta);
|
|
162
|
+
if (merged) {
|
|
163
|
+
console.warn(message, merged);
|
|
164
|
+
} else {
|
|
165
|
+
console.warn(message);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
error(message, meta) {
|
|
169
|
+
const merged = this.merge(meta);
|
|
170
|
+
if (merged) {
|
|
171
|
+
console.error(message, merged);
|
|
172
|
+
} else {
|
|
173
|
+
console.error(message);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
debug(message, meta) {
|
|
177
|
+
const merged = this.merge(meta);
|
|
178
|
+
if (merged) {
|
|
179
|
+
console.debug(message, merged);
|
|
180
|
+
} else {
|
|
181
|
+
console.debug(message);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
fatal(err, message, meta) {
|
|
185
|
+
const merged = this.merge(meta);
|
|
186
|
+
if (merged) {
|
|
187
|
+
console.error(message, { ...merged, error: err });
|
|
188
|
+
} else {
|
|
189
|
+
console.error(message, { error: err });
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
time(label, meta) {
|
|
193
|
+
const merged = this.merge(meta);
|
|
194
|
+
if (merged) {
|
|
195
|
+
console.info(`[time] ${label}`, merged);
|
|
196
|
+
}
|
|
197
|
+
console.time(label);
|
|
198
|
+
}
|
|
199
|
+
timeEnd(label, meta) {
|
|
200
|
+
console.timeEnd(label);
|
|
201
|
+
const merged = this.merge(meta);
|
|
202
|
+
if (merged) {
|
|
203
|
+
console.info(`[timeEnd] ${label}`, merged);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
group(label, meta) {
|
|
207
|
+
const merged = this.merge(meta);
|
|
208
|
+
if (merged) {
|
|
209
|
+
console.group(label, merged);
|
|
210
|
+
} else {
|
|
211
|
+
console.group(label);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
groupEnd() {
|
|
215
|
+
console.groupEnd();
|
|
216
|
+
}
|
|
217
|
+
child(bindings) {
|
|
218
|
+
return new ConsoleLogger({ ...this.bindings, ...bindings });
|
|
219
|
+
}
|
|
220
|
+
merge(meta) {
|
|
221
|
+
const hasBindings = Object.keys(this.bindings).length > 0;
|
|
222
|
+
if (!hasBindings && !meta)
|
|
223
|
+
return;
|
|
224
|
+
if (!hasBindings)
|
|
225
|
+
return meta;
|
|
226
|
+
if (!meta)
|
|
227
|
+
return this.bindings;
|
|
228
|
+
return { ...this.bindings, ...meta };
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// src/logging/NullLogger.ts
|
|
232
|
+
class NullLogger {
|
|
233
|
+
info(_message, _meta) {}
|
|
234
|
+
error(_message, _meta) {}
|
|
235
|
+
warn(_message, _meta) {}
|
|
236
|
+
debug(_message, _meta) {}
|
|
237
|
+
fatal(_err, _message, _meta) {}
|
|
238
|
+
time(_label, _meta) {}
|
|
239
|
+
timeEnd(_label, _meta) {}
|
|
240
|
+
group(_label, _meta) {}
|
|
241
|
+
groupEnd() {}
|
|
242
|
+
child(_bindings) {
|
|
243
|
+
return this;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// src/logging/LoggerRegistry.ts
|
|
247
|
+
var LOGGER = createServiceToken("logger");
|
|
248
|
+
if (!globalServiceRegistry.has(LOGGER)) {
|
|
249
|
+
globalServiceRegistry.register(LOGGER, () => new ConsoleLogger, true);
|
|
250
|
+
}
|
|
251
|
+
function getLogger() {
|
|
252
|
+
return globalServiceRegistry.get(LOGGER);
|
|
253
|
+
}
|
|
254
|
+
function setLogger(logger) {
|
|
255
|
+
globalServiceRegistry.registerInstance(LOGGER, logger);
|
|
256
|
+
}
|
|
146
257
|
// src/utilities/BaseError.ts
|
|
147
258
|
class BaseError {
|
|
148
259
|
static type = "BaseError";
|
|
@@ -977,6 +1088,169 @@ function areObjectSchemasSemanticallyCompatible(sourceSchema, targetSchema) {
|
|
|
977
1088
|
}
|
|
978
1089
|
// src/json-schema/SchemaValidation.ts
|
|
979
1090
|
import { compileSchema } from "@sroussey/json-schema-library";
|
|
1091
|
+
// src/json-schema/parsePartialJson.ts
|
|
1092
|
+
function parsePartialJson(text) {
|
|
1093
|
+
const trimmed = text.trim();
|
|
1094
|
+
if (!trimmed)
|
|
1095
|
+
return;
|
|
1096
|
+
try {
|
|
1097
|
+
const result = JSON.parse(trimmed);
|
|
1098
|
+
if (typeof result === "object" && result !== null && !Array.isArray(result)) {
|
|
1099
|
+
return result;
|
|
1100
|
+
}
|
|
1101
|
+
return;
|
|
1102
|
+
} catch {}
|
|
1103
|
+
if (trimmed[0] !== "{")
|
|
1104
|
+
return;
|
|
1105
|
+
const repaired = repairJson(trimmed);
|
|
1106
|
+
if (repaired === undefined)
|
|
1107
|
+
return;
|
|
1108
|
+
try {
|
|
1109
|
+
const result = JSON.parse(repaired);
|
|
1110
|
+
if (typeof result === "object" && result !== null && !Array.isArray(result)) {
|
|
1111
|
+
return result;
|
|
1112
|
+
}
|
|
1113
|
+
return;
|
|
1114
|
+
} catch {
|
|
1115
|
+
return;
|
|
1116
|
+
}
|
|
1117
|
+
}
|
|
1118
|
+
function repairJson(text) {
|
|
1119
|
+
let result = "";
|
|
1120
|
+
let i = 0;
|
|
1121
|
+
const len = text.length;
|
|
1122
|
+
const stack = [];
|
|
1123
|
+
let inString = false;
|
|
1124
|
+
let escaped = false;
|
|
1125
|
+
let lastSafeEnd = 0;
|
|
1126
|
+
while (i < len) {
|
|
1127
|
+
const ch = text[i];
|
|
1128
|
+
if (escaped) {
|
|
1129
|
+
escaped = false;
|
|
1130
|
+
result += ch;
|
|
1131
|
+
i++;
|
|
1132
|
+
continue;
|
|
1133
|
+
}
|
|
1134
|
+
if (ch === "\\") {
|
|
1135
|
+
escaped = true;
|
|
1136
|
+
result += ch;
|
|
1137
|
+
i++;
|
|
1138
|
+
continue;
|
|
1139
|
+
}
|
|
1140
|
+
if (inString) {
|
|
1141
|
+
if (ch === '"') {
|
|
1142
|
+
inString = false;
|
|
1143
|
+
result += ch;
|
|
1144
|
+
i++;
|
|
1145
|
+
lastSafeEnd = result.length;
|
|
1146
|
+
continue;
|
|
1147
|
+
}
|
|
1148
|
+
result += ch;
|
|
1149
|
+
i++;
|
|
1150
|
+
continue;
|
|
1151
|
+
}
|
|
1152
|
+
switch (ch) {
|
|
1153
|
+
case '"':
|
|
1154
|
+
inString = true;
|
|
1155
|
+
result += ch;
|
|
1156
|
+
i++;
|
|
1157
|
+
break;
|
|
1158
|
+
case "{":
|
|
1159
|
+
stack.push("}");
|
|
1160
|
+
result += ch;
|
|
1161
|
+
i++;
|
|
1162
|
+
break;
|
|
1163
|
+
case "[":
|
|
1164
|
+
stack.push("]");
|
|
1165
|
+
result += ch;
|
|
1166
|
+
i++;
|
|
1167
|
+
break;
|
|
1168
|
+
case "}":
|
|
1169
|
+
if (stack.length > 0 && stack[stack.length - 1] === "}") {
|
|
1170
|
+
stack.pop();
|
|
1171
|
+
result += ch;
|
|
1172
|
+
i++;
|
|
1173
|
+
lastSafeEnd = result.length;
|
|
1174
|
+
} else {
|
|
1175
|
+
return closeStack(result, stack);
|
|
1176
|
+
}
|
|
1177
|
+
break;
|
|
1178
|
+
case "]":
|
|
1179
|
+
if (stack.length > 0 && stack[stack.length - 1] === "]") {
|
|
1180
|
+
stack.pop();
|
|
1181
|
+
result += ch;
|
|
1182
|
+
i++;
|
|
1183
|
+
lastSafeEnd = result.length;
|
|
1184
|
+
} else {
|
|
1185
|
+
return closeStack(result, stack);
|
|
1186
|
+
}
|
|
1187
|
+
break;
|
|
1188
|
+
default:
|
|
1189
|
+
result += ch;
|
|
1190
|
+
i++;
|
|
1191
|
+
break;
|
|
1192
|
+
}
|
|
1193
|
+
}
|
|
1194
|
+
if (inString) {
|
|
1195
|
+
result += '"';
|
|
1196
|
+
}
|
|
1197
|
+
if (stack.length === 0) {
|
|
1198
|
+
return result;
|
|
1199
|
+
}
|
|
1200
|
+
return closeStack(cleanTrailing(result), stack);
|
|
1201
|
+
}
|
|
1202
|
+
function cleanTrailing(text) {
|
|
1203
|
+
let s = text.trimEnd();
|
|
1204
|
+
let changed = true;
|
|
1205
|
+
while (changed) {
|
|
1206
|
+
changed = false;
|
|
1207
|
+
const trimmed = s.trimEnd();
|
|
1208
|
+
if (trimmed.endsWith(",")) {
|
|
1209
|
+
s = trimmed.slice(0, -1);
|
|
1210
|
+
changed = true;
|
|
1211
|
+
continue;
|
|
1212
|
+
}
|
|
1213
|
+
if (trimmed.endsWith(":")) {
|
|
1214
|
+
const withoutColon = trimmed.slice(0, -1).trimEnd();
|
|
1215
|
+
if (withoutColon.endsWith('"')) {
|
|
1216
|
+
const keyStart = withoutColon.lastIndexOf('"', withoutColon.length - 2);
|
|
1217
|
+
if (keyStart >= 0) {
|
|
1218
|
+
let before = withoutColon.slice(0, keyStart).trimEnd();
|
|
1219
|
+
if (before.endsWith(",")) {
|
|
1220
|
+
before = before.slice(0, -1);
|
|
1221
|
+
}
|
|
1222
|
+
s = before;
|
|
1223
|
+
changed = true;
|
|
1224
|
+
continue;
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
s = withoutColon;
|
|
1228
|
+
changed = true;
|
|
1229
|
+
continue;
|
|
1230
|
+
}
|
|
1231
|
+
const bareTokenMatch = trimmed.match(/,\s*"[^"]*"\s*:\s*(?:tru|fal|nul|true|false|null|[\d.eE+-]+)$/);
|
|
1232
|
+
if (bareTokenMatch) {
|
|
1233
|
+
const valueStr = trimmed.slice(trimmed.lastIndexOf(":") + 1).trim();
|
|
1234
|
+
try {
|
|
1235
|
+
JSON.parse(valueStr);
|
|
1236
|
+
} catch {
|
|
1237
|
+
s = trimmed.slice(0, bareTokenMatch.index).trimEnd();
|
|
1238
|
+
if (s.endsWith(","))
|
|
1239
|
+
s = s.slice(0, -1);
|
|
1240
|
+
changed = true;
|
|
1241
|
+
continue;
|
|
1242
|
+
}
|
|
1243
|
+
}
|
|
1244
|
+
}
|
|
1245
|
+
return s;
|
|
1246
|
+
}
|
|
1247
|
+
function closeStack(text, stack) {
|
|
1248
|
+
let result = text;
|
|
1249
|
+
for (let i = stack.length - 1;i >= 0; i--) {
|
|
1250
|
+
result += stack[i];
|
|
1251
|
+
}
|
|
1252
|
+
return result;
|
|
1253
|
+
}
|
|
980
1254
|
// src/utilities/Misc.ts
|
|
981
1255
|
function forceArray(input) {
|
|
982
1256
|
if (Array.isArray(input))
|
|
@@ -1581,43 +1855,12 @@ function normalizeNumberArray(values, throwOnZero = false) {
|
|
|
1581
1855
|
return values.map((v) => v / norm);
|
|
1582
1856
|
}
|
|
1583
1857
|
// src/worker/WorkerManager.ts
|
|
1584
|
-
function extractTransferables(obj) {
|
|
1585
|
-
const transferables = [];
|
|
1586
|
-
const seen = new WeakSet;
|
|
1587
|
-
function findTransferables(value) {
|
|
1588
|
-
if (value && typeof value === "object" && seen.has(value)) {
|
|
1589
|
-
return;
|
|
1590
|
-
}
|
|
1591
|
-
if (value && typeof value === "object") {
|
|
1592
|
-
seen.add(value);
|
|
1593
|
-
}
|
|
1594
|
-
if (value instanceof Float32Array || value instanceof Int16Array) {
|
|
1595
|
-
transferables.push(value.buffer);
|
|
1596
|
-
} else if (value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array || value instanceof Uint16Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Float64Array || value instanceof BigInt64Array || value instanceof BigUint64Array) {
|
|
1597
|
-
transferables.push(value.buffer);
|
|
1598
|
-
} else if (typeof OffscreenCanvas !== "undefined" && value instanceof OffscreenCanvas) {
|
|
1599
|
-
transferables.push(value);
|
|
1600
|
-
} else if (typeof ImageBitmap !== "undefined" && value instanceof ImageBitmap) {
|
|
1601
|
-
transferables.push(value);
|
|
1602
|
-
} else if (typeof VideoFrame !== "undefined" && value instanceof VideoFrame) {
|
|
1603
|
-
transferables.push(value);
|
|
1604
|
-
} else if (typeof MessagePort !== "undefined" && value instanceof MessagePort) {
|
|
1605
|
-
transferables.push(value);
|
|
1606
|
-
} else if (value instanceof ArrayBuffer) {
|
|
1607
|
-
transferables.push(value);
|
|
1608
|
-
} else if (Array.isArray(value)) {
|
|
1609
|
-
value.forEach(findTransferables);
|
|
1610
|
-
} else if (value && typeof value === "object") {
|
|
1611
|
-
Object.values(value).forEach(findTransferables);
|
|
1612
|
-
}
|
|
1613
|
-
}
|
|
1614
|
-
findTransferables(obj);
|
|
1615
|
-
return transferables;
|
|
1616
|
-
}
|
|
1617
|
-
|
|
1618
1858
|
class WorkerManager {
|
|
1619
1859
|
workers = new Map;
|
|
1620
1860
|
readyWorkers = new Map;
|
|
1861
|
+
workerFunctions = new Map;
|
|
1862
|
+
workerStreamFunctions = new Map;
|
|
1863
|
+
workerReactiveFunctions = new Map;
|
|
1621
1864
|
registerWorker(name, worker) {
|
|
1622
1865
|
if (this.workers.has(name))
|
|
1623
1866
|
throw new Error(`Worker ${name} is already registered.`);
|
|
@@ -1633,6 +1876,9 @@ class WorkerManager {
|
|
|
1633
1876
|
const handleReady = (event) => {
|
|
1634
1877
|
if (event.data?.type === "ready") {
|
|
1635
1878
|
worker.removeEventListener("message", handleReady);
|
|
1879
|
+
this.workerFunctions.set(name, new Set(event.data.functions ?? []));
|
|
1880
|
+
this.workerStreamFunctions.set(name, new Set(event.data.streamFunctions ?? []));
|
|
1881
|
+
this.workerReactiveFunctions.set(name, new Set(event.data.reactiveFunctions ?? []));
|
|
1636
1882
|
resolve();
|
|
1637
1883
|
}
|
|
1638
1884
|
};
|
|
@@ -1651,6 +1897,10 @@ class WorkerManager {
|
|
|
1651
1897
|
if (!worker)
|
|
1652
1898
|
throw new Error(`Worker ${workerName} not found.`);
|
|
1653
1899
|
await this.readyWorkers.get(workerName);
|
|
1900
|
+
const knownFunctions = this.workerFunctions.get(workerName);
|
|
1901
|
+
if (knownFunctions && !knownFunctions.has(functionName)) {
|
|
1902
|
+
throw new Error(`Function "${functionName}" is not registered on worker "${workerName}".`);
|
|
1903
|
+
}
|
|
1654
1904
|
return new Promise((resolve, reject) => {
|
|
1655
1905
|
const requestId = crypto.randomUUID();
|
|
1656
1906
|
const handleMessage = (event) => {
|
|
@@ -1679,8 +1929,7 @@ class WorkerManager {
|
|
|
1679
1929
|
options.signal.addEventListener("abort", handleAbort, { once: true });
|
|
1680
1930
|
}
|
|
1681
1931
|
const message = { id: requestId, type: "call", functionName, args };
|
|
1682
|
-
|
|
1683
|
-
worker.postMessage(message, transferables);
|
|
1932
|
+
worker.postMessage(message);
|
|
1684
1933
|
});
|
|
1685
1934
|
}
|
|
1686
1935
|
async callWorkerReactiveFunction(workerName, functionName, args) {
|
|
@@ -1688,6 +1937,9 @@ class WorkerManager {
|
|
|
1688
1937
|
if (!worker)
|
|
1689
1938
|
return;
|
|
1690
1939
|
await this.readyWorkers.get(workerName);
|
|
1940
|
+
const knownReactive = this.workerReactiveFunctions.get(workerName);
|
|
1941
|
+
if (knownReactive && !knownReactive.has(functionName))
|
|
1942
|
+
return;
|
|
1691
1943
|
return new Promise((resolve) => {
|
|
1692
1944
|
const requestId = crypto.randomUUID();
|
|
1693
1945
|
const handleMessage = (event) => {
|
|
@@ -1707,8 +1959,7 @@ class WorkerManager {
|
|
|
1707
1959
|
};
|
|
1708
1960
|
worker.addEventListener("message", handleMessage);
|
|
1709
1961
|
const message = { id: requestId, type: "call", functionName, args, reactive: true };
|
|
1710
|
-
|
|
1711
|
-
worker.postMessage(message, transferables);
|
|
1962
|
+
worker.postMessage(message);
|
|
1712
1963
|
});
|
|
1713
1964
|
}
|
|
1714
1965
|
async* callWorkerStreamFunction(workerName, functionName, args, options) {
|
|
@@ -1716,6 +1967,11 @@ class WorkerManager {
|
|
|
1716
1967
|
if (!worker)
|
|
1717
1968
|
throw new Error(`Worker ${workerName} not found.`);
|
|
1718
1969
|
await this.readyWorkers.get(workerName);
|
|
1970
|
+
const knownStream = this.workerStreamFunctions.get(workerName);
|
|
1971
|
+
const knownFns = this.workerFunctions.get(workerName);
|
|
1972
|
+
if (knownStream && knownFns && !knownStream.has(functionName) && !knownFns.has(functionName)) {
|
|
1973
|
+
throw new Error(`Function "${functionName}" is not registered on worker "${workerName}".`);
|
|
1974
|
+
}
|
|
1719
1975
|
const requestId = crypto.randomUUID();
|
|
1720
1976
|
const queue = [];
|
|
1721
1977
|
let waiting = null;
|
|
@@ -1757,8 +2013,7 @@ class WorkerManager {
|
|
|
1757
2013
|
options.signal.addEventListener("abort", handleAbort, { once: true });
|
|
1758
2014
|
}
|
|
1759
2015
|
const message = { id: requestId, type: "call", functionName, args, stream: true };
|
|
1760
|
-
|
|
1761
|
-
worker.postMessage(message, transferables);
|
|
2016
|
+
worker.postMessage(message);
|
|
1762
2017
|
let completedNormally = false;
|
|
1763
2018
|
try {
|
|
1764
2019
|
while (true) {
|
|
@@ -1790,7 +2045,7 @@ var WORKER_MANAGER = createServiceToken("worker.manager");
|
|
|
1790
2045
|
globalServiceRegistry.register(WORKER_MANAGER, () => new WorkerManager, true);
|
|
1791
2046
|
// src/worker/WorkerServer.ts
|
|
1792
2047
|
import { parentPort } from "@workglow/util";
|
|
1793
|
-
function
|
|
2048
|
+
function extractTransferables(obj) {
|
|
1794
2049
|
const transferables = [];
|
|
1795
2050
|
const seen = new WeakSet;
|
|
1796
2051
|
function findTransferables(value) {
|
|
@@ -1844,8 +2099,9 @@ class WorkerServer {
|
|
|
1844
2099
|
return;
|
|
1845
2100
|
}
|
|
1846
2101
|
this.completedRequests.add(id);
|
|
1847
|
-
const transferables =
|
|
1848
|
-
|
|
2102
|
+
const transferables = extractTransferables(result);
|
|
2103
|
+
const uniqueTransferables = [...new Set(transferables)];
|
|
2104
|
+
postMessage({ id, type: "complete", data: result }, uniqueTransferables);
|
|
1849
2105
|
};
|
|
1850
2106
|
postError = (id, errorMessage) => {
|
|
1851
2107
|
if (this.completedRequests.has(id)) {
|
|
@@ -1860,6 +2116,14 @@ class WorkerServer {
|
|
|
1860
2116
|
}
|
|
1861
2117
|
postMessage({ id, type: "stream_chunk", data: event });
|
|
1862
2118
|
};
|
|
2119
|
+
sendReady() {
|
|
2120
|
+
postMessage({
|
|
2121
|
+
type: "ready",
|
|
2122
|
+
functions: Object.keys(this.functions),
|
|
2123
|
+
streamFunctions: Object.keys(this.streamFunctions),
|
|
2124
|
+
reactiveFunctions: Object.keys(this.reactiveFunctions)
|
|
2125
|
+
});
|
|
2126
|
+
}
|
|
1863
2127
|
registerFunction(name, fn) {
|
|
1864
2128
|
this.functions[name] = fn;
|
|
1865
2129
|
}
|
|
@@ -2152,8 +2416,10 @@ export {
|
|
|
2152
2416
|
sortObject,
|
|
2153
2417
|
sleep,
|
|
2154
2418
|
sha256,
|
|
2419
|
+
setLogger,
|
|
2155
2420
|
serialize,
|
|
2156
2421
|
registerInputResolver,
|
|
2422
|
+
parsePartialJson,
|
|
2157
2423
|
parseDataUri,
|
|
2158
2424
|
parentPort2 as parentPort,
|
|
2159
2425
|
objectOfArraysAsArrayOfObjects,
|
|
@@ -2171,6 +2437,7 @@ export {
|
|
|
2171
2437
|
hammingDistance,
|
|
2172
2438
|
globalServiceRegistry,
|
|
2173
2439
|
globalContainer,
|
|
2440
|
+
getLogger,
|
|
2174
2441
|
getInputResolvers,
|
|
2175
2442
|
forceArray,
|
|
2176
2443
|
deepEqual,
|
|
@@ -2194,8 +2461,10 @@ export {
|
|
|
2194
2461
|
TensorType,
|
|
2195
2462
|
TensorSchema,
|
|
2196
2463
|
ServiceRegistry,
|
|
2464
|
+
NullLogger,
|
|
2197
2465
|
NodeDoesntExistError,
|
|
2198
2466
|
NodeAlreadyExistsError,
|
|
2467
|
+
LOGGER,
|
|
2199
2468
|
INPUT_RESOLVERS,
|
|
2200
2469
|
Graph,
|
|
2201
2470
|
FromSchemaDefaultOptions,
|
|
@@ -2204,7 +2473,8 @@ export {
|
|
|
2204
2473
|
DirectedAcyclicGraph,
|
|
2205
2474
|
CycleError,
|
|
2206
2475
|
Container,
|
|
2476
|
+
ConsoleLogger,
|
|
2207
2477
|
BaseError
|
|
2208
2478
|
};
|
|
2209
2479
|
|
|
2210
|
-
//# debugId=
|
|
2480
|
+
//# debugId=B4EF66B1A6B9B24664756E2164756E21
|