@powerlines/engine 0.49.29 → 0.49.30
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/api/build.cjs +9 -2
- package/dist/api/build.d.cts.map +1 -1
- package/dist/api/build.d.mts.map +1 -1
- package/dist/api/build.mjs +3 -1
- package/dist/api/build.mjs.map +1 -1
- package/dist/api/build.test.cjs +15 -0
- package/dist/api/build.test.d.cts +1 -0
- package/dist/api/build.test.d.mts +1 -0
- package/dist/api/build.test.mjs +17 -0
- package/dist/api/build.test.mjs.map +1 -0
- package/dist/api/clean.cjs +9 -1
- package/dist/api/clean.d.cts.map +1 -1
- package/dist/api/clean.d.mts.map +1 -1
- package/dist/api/clean.mjs +3 -1
- package/dist/api/clean.mjs.map +1 -1
- package/dist/api/clean.test.cjs +15 -0
- package/dist/api/clean.test.d.cts +1 -0
- package/dist/api/clean.test.d.mts +1 -0
- package/dist/api/clean.test.mjs +17 -0
- package/dist/api/clean.test.mjs.map +1 -0
- package/dist/api/create.cjs +9 -2
- package/dist/api/create.d.cts.map +1 -1
- package/dist/api/create.d.mts.map +1 -1
- package/dist/api/create.mjs +3 -1
- package/dist/api/create.mjs.map +1 -1
- package/dist/api/create.test.cjs +15 -0
- package/dist/api/create.test.d.cts +1 -0
- package/dist/api/create.test.d.mts +1 -0
- package/dist/api/create.test.mjs +17 -0
- package/dist/api/create.test.mjs.map +1 -0
- package/dist/api/deploy.cjs +9 -1
- package/dist/api/deploy.d.cts.map +1 -1
- package/dist/api/deploy.d.mts.map +1 -1
- package/dist/api/deploy.mjs +3 -1
- package/dist/api/deploy.mjs.map +1 -1
- package/dist/api/deploy.test.cjs +15 -0
- package/dist/api/deploy.test.d.cts +1 -0
- package/dist/api/deploy.test.d.mts +1 -0
- package/dist/api/deploy.test.mjs +17 -0
- package/dist/api/deploy.test.mjs.map +1 -0
- package/dist/api/docs.cjs +9 -1
- package/dist/api/docs.d.cts.map +1 -1
- package/dist/api/docs.d.mts.map +1 -1
- package/dist/api/docs.mjs +3 -1
- package/dist/api/docs.mjs.map +1 -1
- package/dist/api/docs.test.cjs +15 -0
- package/dist/api/docs.test.d.cts +1 -0
- package/dist/api/docs.test.d.mts +1 -0
- package/dist/api/docs.test.mjs +17 -0
- package/dist/api/docs.test.mjs.map +1 -0
- package/dist/api/lint.cjs +9 -1
- package/dist/api/lint.d.cts.map +1 -1
- package/dist/api/lint.d.mts.map +1 -1
- package/dist/api/lint.mjs +3 -1
- package/dist/api/lint.mjs.map +1 -1
- package/dist/api/lint.test.cjs +15 -0
- package/dist/api/lint.test.d.cts +1 -0
- package/dist/api/lint.test.d.mts +1 -0
- package/dist/api/lint.test.mjs +17 -0
- package/dist/api/lint.test.mjs.map +1 -0
- package/dist/api/prepare.cjs +9 -1
- package/dist/api/prepare.d.cts.map +1 -1
- package/dist/api/prepare.d.mts.map +1 -1
- package/dist/api/prepare.mjs +3 -1
- package/dist/api/prepare.mjs.map +1 -1
- package/dist/api/prepare.test.cjs +15 -0
- package/dist/api/prepare.test.d.cts +1 -0
- package/dist/api/prepare.test.d.mts +1 -0
- package/dist/api/prepare.test.mjs +17 -0
- package/dist/api/prepare.test.mjs.map +1 -0
- package/dist/api/test.cjs +9 -1
- package/dist/api/test.d.cts.map +1 -1
- package/dist/api/test.d.mts.map +1 -1
- package/dist/api/test.mjs +3 -1
- package/dist/api/test.mjs.map +1 -1
- package/dist/api/test.test.cjs +15 -0
- package/dist/api/test.test.d.cts +1 -0
- package/dist/api/test.test.d.mts +1 -0
- package/dist/api/test.test.mjs +17 -0
- package/dist/api/test.test.mjs.map +1 -0
- package/dist/api/types.cjs +9 -1
- package/dist/api/types.d.cts.map +1 -1
- package/dist/api/types.d.mts.map +1 -1
- package/dist/api/types.mjs +3 -1
- package/dist/api/types.mjs.map +1 -1
- package/dist/api/types.test.cjs +15 -0
- package/dist/api/types.test.d.cts +1 -0
- package/dist/api/types.test.d.mts +1 -0
- package/dist/api/types.test.mjs +17 -0
- package/dist/api/types.test.mjs.map +1 -0
- package/dist/api.cjs +10 -1
- package/dist/api.mjs +3 -1
- package/dist/api.mjs.map +1 -1
- package/dist/api.test.cjs +15 -0
- package/dist/api.test.d.cts +1 -0
- package/dist/api.test.d.mts +1 -0
- package/dist/api.test.mjs +17 -0
- package/dist/api.test.mjs.map +1 -0
- package/dist/{chunk-C_NdSu1c.cjs → chunk-CEeaYzDW.cjs} +19 -0
- package/dist/chunk-w6R9maHv.mjs +18 -0
- package/dist/context/engine-context.cjs +9 -2
- package/dist/context/engine-context.mjs +3 -1
- package/dist/context/engine-context.mjs.map +1 -1
- package/dist/context/engine-context.test.cjs +15 -0
- package/dist/context/engine-context.test.d.cts +1 -0
- package/dist/context/engine-context.test.d.mts +1 -0
- package/dist/context/engine-context.test.mjs +17 -0
- package/dist/context/engine-context.test.mjs.map +1 -0
- package/dist/engine-B5pbfMyg.d.cts.map +1 -1
- package/dist/{engine-DRAFIm5M.mjs → engine-CQbIlCXR.mjs} +8 -2
- package/dist/{engine-DRAFIm5M.mjs.map → engine-CQbIlCXR.mjs.map} +1 -1
- package/dist/engine-CeWEM0TT.d.mts.map +1 -1
- package/dist/{engine-BKEDCOCb.cjs → engine-D_B_s_Ai.cjs} +12 -1
- package/dist/engine-context-CaPJFek0.d.mts.map +1 -1
- package/dist/engine-context-DDbpdZHC.d.cts.map +1 -1
- package/dist/engine.cjs +1 -1
- package/dist/engine.mjs +1 -1
- package/dist/engine.test.cjs +15 -0
- package/dist/engine.test.d.cts +1 -0
- package/dist/engine.test.d.mts +1 -0
- package/dist/engine.test.mjs +17 -0
- package/dist/engine.test.mjs.map +1 -0
- package/dist/finalize-CuV0r3jg.d.cts.map +1 -1
- package/dist/finalize-CuV0r3jg.d.mts.map +1 -1
- package/dist/helpers/create-api.cjs +9 -1
- package/dist/helpers/create-api.mjs +3 -1
- package/dist/helpers/create-api.mjs.map +1 -1
- package/dist/helpers/create-api.test.cjs +15 -0
- package/dist/helpers/create-api.test.d.cts +1 -0
- package/dist/helpers/create-api.test.d.mts +1 -0
- package/dist/helpers/create-api.test.mjs +17 -0
- package/dist/helpers/create-api.test.mjs.map +1 -0
- package/dist/helpers/finalize.cjs +9 -1
- package/dist/helpers/finalize.mjs +3 -1
- package/dist/helpers/finalize.mjs.map +1 -1
- package/dist/helpers/finalize.test.cjs +15 -0
- package/dist/helpers/finalize.test.d.cts +1 -0
- package/dist/helpers/finalize.test.d.mts +1 -0
- package/dist/helpers/finalize.test.mjs +17 -0
- package/dist/helpers/finalize.test.mjs.map +1 -0
- package/dist/helpers/rpc.cjs +9 -1
- package/dist/helpers/rpc.mjs +3 -1
- package/dist/helpers/rpc.mjs.map +1 -1
- package/dist/helpers/rpc.test.cjs +15 -0
- package/dist/helpers/rpc.test.d.cts +1 -0
- package/dist/helpers/rpc.test.d.mts +1 -0
- package/dist/helpers/rpc.test.mjs +17 -0
- package/dist/helpers/rpc.test.mjs.map +1 -0
- package/dist/helpers/stream.cjs +13 -1
- package/dist/helpers/stream.mjs +7 -1
- package/dist/helpers/stream.mjs.map +1 -1
- package/dist/helpers/stream.test.cjs +15 -0
- package/dist/helpers/stream.test.d.cts +1 -0
- package/dist/helpers/stream.test.d.mts +1 -0
- package/dist/helpers/stream.test.mjs +17 -0
- package/dist/helpers/stream.test.mjs.map +1 -0
- package/dist/helpers/type-checks.test.cjs +28 -0
- package/dist/helpers/type-checks.test.d.cts +1 -0
- package/dist/helpers/type-checks.test.d.mts +1 -0
- package/dist/helpers/type-checks.test.mjs +30 -0
- package/dist/helpers/type-checks.test.mjs.map +1 -0
- package/dist/index-CBobV6Wm.d.mts.map +1 -1
- package/dist/index-QuLZgb8w.d.cts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/stream-B9jffNbk.d.cts.map +1 -1
- package/dist/stream-B9jffNbk.d.mts.map +1 -1
- package/package.json +19 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalize-CuV0r3jg.d.mts","names":[],"sources":["../src/helpers/finalize.ts"],"mappings":";;;;;AA+BA;;;iBAAsB,QAAA,yBACI,cAAA,GAAiB,cAAA,
|
|
1
|
+
{"version":3,"file":"finalize-CuV0r3jg.d.mts","names":[],"sources":["../src/helpers/finalize.ts"],"mappings":";;;;;AA+BA;;;iBAAsB,QAAA,yBACI,cAAA,GAAiB,cAAA,EACzC,OAAA,EAAS,gBAAA,CAAiB,eAAA,IAAgB,OAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_chunk = require('../chunk-CEeaYzDW.cjs');
|
|
2
3
|
const require_helpers_rpc = require('./rpc.cjs');
|
|
3
4
|
const require_helpers_stream = require('./stream.cjs');
|
|
4
5
|
const require_helpers_type_checks = require('./type-checks.cjs');
|
|
@@ -13,6 +14,7 @@ let _stryke_unique_id_uuid = require("@stryke/unique-id/uuid");
|
|
|
13
14
|
let defu = require("defu");
|
|
14
15
|
|
|
15
16
|
//#region src/helpers/create-api.ts
|
|
17
|
+
var create_api_exports = /* @__PURE__ */ require_chunk.__exportAll({ createApi: () => createApi });
|
|
16
18
|
/**
|
|
17
19
|
* Creates an execution API with the provided methods. Each method will be wrapped to create an execution context and handle errors appropriately.
|
|
18
20
|
*
|
|
@@ -62,4 +64,10 @@ function createApi(handlers, inlineConfig = {}) {
|
|
|
62
64
|
}
|
|
63
65
|
|
|
64
66
|
//#endregion
|
|
65
|
-
exports.createApi = createApi;
|
|
67
|
+
exports.createApi = createApi;
|
|
68
|
+
Object.defineProperty(exports, 'create_api_exports', {
|
|
69
|
+
enumerable: true,
|
|
70
|
+
get: function () {
|
|
71
|
+
return create_api_exports;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { t as __exportAll } from "../chunk-w6R9maHv.mjs";
|
|
1
2
|
import { createRpcClient } from "./rpc.mjs";
|
|
2
3
|
import { MessagePortDuplex } from "./stream.mjs";
|
|
3
4
|
import { isEngineExecutionOptions } from "./type-checks.mjs";
|
|
@@ -12,6 +13,7 @@ import { uuid } from "@stryke/unique-id/uuid";
|
|
|
12
13
|
import { defu } from "defu";
|
|
13
14
|
|
|
14
15
|
//#region src/helpers/create-api.ts
|
|
16
|
+
var create_api_exports = /* @__PURE__ */ __exportAll({ createApi: () => createApi });
|
|
15
17
|
/**
|
|
16
18
|
* Creates an execution API with the provided methods. Each method will be wrapped to create an execution context and handle errors appropriately.
|
|
17
19
|
*
|
|
@@ -61,5 +63,5 @@ function createApi(handlers, inlineConfig = {}) {
|
|
|
61
63
|
}
|
|
62
64
|
|
|
63
65
|
//#endregion
|
|
64
|
-
export { createApi };
|
|
66
|
+
export { createApi, create_api_exports as t };
|
|
65
67
|
//# sourceMappingURL=create-api.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-api.mjs","names":[],"sources":["../../src/helpers/create-api.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type {\n ExecutionContext,\n ExecutionOptions,\n InlineConfig,\n LogFnMeta\n} from \"@powerlines/core\";\nimport { PowerlinesExecutionContext } from \"@powerlines/core/context/execution-context\";\nimport { resolvePluginConfig } from \"@powerlines/core/lib/context-helpers\";\nimport {\n consoleLogger,\n formatExecutionId\n} from \"@powerlines/core/plugin-utils\";\nimport { list } from \"@stryke/string-format/list\";\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport { isFunction } from \"@stryke/type-checks/is-function\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport type { DeepPartial, MaybePromise } from \"@stryke/types/base\";\nimport { uuid } from \"@stryke/unique-id/uuid\";\nimport { defu } from \"defu\";\nimport type { RpcClient } from \"../types\";\nimport type { ExecutionApiParams } from \"../types/api\";\nimport type { EngineResolvedConfig } from \"../types/config\";\nimport type { EngineSystemContext } from \"../types/context\";\nimport { createRpcClient } from \"./rpc\";\nimport { MessagePortDuplex } from \"./stream\";\nimport { isEngineExecutionOptions } from \"./type-checks\";\n\n/**\n * Creates an execution API with the provided methods. Each method will be wrapped to create an execution context and handle errors appropriately.\n *\n * @param handlers - An object where keys are command names and values are functions that take an execution context and return a promise.\n * @param inlineConfig - An optional partial inline configuration object that will be merged with the context's options when creating the execution context for each command.\n * @returns A function that can be used as an execution API handler, which takes execution parameters and invokes the appropriate command handler with a properly constructed execution context.\n */\nexport function createApi<\n TContext extends ExecutionContext<EngineResolvedConfig, EngineSystemContext> =\n ExecutionContext<EngineResolvedConfig, EngineSystemContext>,\n TOptions extends ExecutionOptions = ExecutionOptions,\n THandlers extends Record<string, (context: TContext) => Promise<void>> =\n Record<string, (context: TContext) => Promise<void>>\n>(\n handlers: THandlers,\n inlineConfig:\n | DeepPartial<InlineConfig>\n | ((prev: InlineConfig) => MaybePromise<InlineConfig>) = {}\n): (\n params: ExecutionApiParams<TOptions, keyof THandlers & string>\n) => Promise<void> {\n return async (\n params: ExecutionApiParams<TOptions, keyof THandlers & string>\n ) => {\n const { command, options } = params;\n\n if (!handlers[command]) {\n throw new Error(\n `No API handler function could be found for the command \"${\n command\n }\". Please ensure that a handler function for this command is defined in the \\`handlers\\` parameter provided to \\`createApi\\`. The commands available with the current \\`handlers\\` include: ${list(\n Object.keys(handlers)\n )}.`\n );\n }\n\n options.configIndex ??= 0;\n options.executionId ??= formatExecutionId(\n params.inlineConfig.name || options.root,\n command,\n options.configIndex\n );\n\n let rpc: RpcClient | undefined;\n if (isEngineExecutionOptions(options) && options.channel) {\n const duplex = new MessagePortDuplex(options.channel);\n duplex.setEncoding(\"utf8\");\n duplex.on(\"data\", (chunk: string) => duplex.write(chunk.toUpperCase()));\n duplex.on(\"end\", () => {\n duplex.end();\n });\n\n if (options.baseURL && options.connection) {\n rpc = createRpcClient(options);\n } else {\n throw new Error(\n `Execution RPC client could not be created - Missing ${\n !options.baseURL\n ? `baseURL${options.connection ? ` and connection information` : \"\"}`\n : \"connection\"\n } or connection information.`\n );\n }\n }\n\n const logFn = (meta: LogFnMeta, message: string) => {\n if (rpc) {\n void rpc.callEvent(\"powerlines:log\", {\n meta: {\n category: \"general\",\n ...options,\n ...(isSetObject(meta) ? meta : { type: meta }),\n logId: uuid(),\n timestamp: Date.now()\n },\n message\n });\n } else {\n consoleLogger(meta, message);\n }\n };\n\n const context = (await PowerlinesExecutionContext.from<\n EngineResolvedConfig,\n EngineSystemContext\n >(\n { ...options, logFn },\n isFunction(inlineConfig)\n ? await Promise.resolve(inlineConfig(params.inlineConfig ?? {}))\n : (defu(inlineConfig, params.inlineConfig ?? {}) as InlineConfig),\n {\n rpc: rpc!\n }\n )) as TContext;\n\n context.logger.info(\n `Starting ${\n titleCase(options.framework?.name) || \"Powerlines\"\n } - ${titleCase(command)} execution (${options.executionId})`\n );\n\n await resolvePluginConfig<EngineResolvedConfig, EngineSystemContext>(\n context\n );\n\n if (!context.config.input) {\n throw new Error(\n `No input defined in configuration for ${\n command\n } execution. Please ensure that the configuration file defines an input for this execution, or provide an inline configuration with the necessary input.`\n );\n }\n\n await handlers[command](context);\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-api.mjs","names":[],"sources":["../../src/helpers/create-api.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type {\n ExecutionContext,\n ExecutionOptions,\n InlineConfig,\n LogFnMeta\n} from \"@powerlines/core\";\nimport { PowerlinesExecutionContext } from \"@powerlines/core/context/execution-context\";\nimport { resolvePluginConfig } from \"@powerlines/core/lib/context-helpers\";\nimport {\n consoleLogger,\n formatExecutionId\n} from \"@powerlines/core/plugin-utils\";\nimport { list } from \"@stryke/string-format/list\";\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport { isFunction } from \"@stryke/type-checks/is-function\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport type { DeepPartial, MaybePromise } from \"@stryke/types/base\";\nimport { uuid } from \"@stryke/unique-id/uuid\";\nimport { defu } from \"defu\";\nimport type { RpcClient } from \"../types\";\nimport type { ExecutionApiParams } from \"../types/api\";\nimport type { EngineResolvedConfig } from \"../types/config\";\nimport type { EngineSystemContext } from \"../types/context\";\nimport { createRpcClient } from \"./rpc\";\nimport { MessagePortDuplex } from \"./stream\";\nimport { isEngineExecutionOptions } from \"./type-checks\";\n\n/**\n * Creates an execution API with the provided methods. Each method will be wrapped to create an execution context and handle errors appropriately.\n *\n * @param handlers - An object where keys are command names and values are functions that take an execution context and return a promise.\n * @param inlineConfig - An optional partial inline configuration object that will be merged with the context's options when creating the execution context for each command.\n * @returns A function that can be used as an execution API handler, which takes execution parameters and invokes the appropriate command handler with a properly constructed execution context.\n */\nexport function createApi<\n TContext extends ExecutionContext<EngineResolvedConfig, EngineSystemContext> =\n ExecutionContext<EngineResolvedConfig, EngineSystemContext>,\n TOptions extends ExecutionOptions = ExecutionOptions,\n THandlers extends Record<string, (context: TContext) => Promise<void>> =\n Record<string, (context: TContext) => Promise<void>>\n>(\n handlers: THandlers,\n inlineConfig:\n | DeepPartial<InlineConfig>\n | ((prev: InlineConfig) => MaybePromise<InlineConfig>) = {}\n): (\n params: ExecutionApiParams<TOptions, keyof THandlers & string>\n) => Promise<void> {\n return async (\n params: ExecutionApiParams<TOptions, keyof THandlers & string>\n ) => {\n const { command, options } = params;\n\n if (!handlers[command]) {\n throw new Error(\n `No API handler function could be found for the command \"${\n command\n }\". Please ensure that a handler function for this command is defined in the \\`handlers\\` parameter provided to \\`createApi\\`. The commands available with the current \\`handlers\\` include: ${list(\n Object.keys(handlers)\n )}.`\n );\n }\n\n options.configIndex ??= 0;\n options.executionId ??= formatExecutionId(\n params.inlineConfig.name || options.root,\n command,\n options.configIndex\n );\n\n let rpc: RpcClient | undefined;\n if (isEngineExecutionOptions(options) && options.channel) {\n const duplex = new MessagePortDuplex(options.channel);\n duplex.setEncoding(\"utf8\");\n duplex.on(\"data\", (chunk: string) => duplex.write(chunk.toUpperCase()));\n duplex.on(\"end\", () => {\n duplex.end();\n });\n\n if (options.baseURL && options.connection) {\n rpc = createRpcClient(options);\n } else {\n throw new Error(\n `Execution RPC client could not be created - Missing ${\n !options.baseURL\n ? `baseURL${options.connection ? ` and connection information` : \"\"}`\n : \"connection\"\n } or connection information.`\n );\n }\n }\n\n const logFn = (meta: LogFnMeta, message: string) => {\n if (rpc) {\n void rpc.callEvent(\"powerlines:log\", {\n meta: {\n category: \"general\",\n ...options,\n ...(isSetObject(meta) ? meta : { type: meta }),\n logId: uuid(),\n timestamp: Date.now()\n },\n message\n });\n } else {\n consoleLogger(meta, message);\n }\n };\n\n const context = (await PowerlinesExecutionContext.from<\n EngineResolvedConfig,\n EngineSystemContext\n >(\n { ...options, logFn },\n isFunction(inlineConfig)\n ? await Promise.resolve(inlineConfig(params.inlineConfig ?? {}))\n : (defu(inlineConfig, params.inlineConfig ?? {}) as InlineConfig),\n {\n rpc: rpc!\n }\n )) as TContext;\n\n context.logger.info(\n `Starting ${\n titleCase(options.framework?.name) || \"Powerlines\"\n } - ${titleCase(command)} execution (${options.executionId})`\n );\n\n await resolvePluginConfig<EngineResolvedConfig, EngineSystemContext>(\n context\n );\n\n if (!context.config.input) {\n throw new Error(\n `No input defined in configuration for ${\n command\n } execution. Please ensure that the configuration file defines an input for this execution, or provide an inline configuration with the necessary input.`\n );\n }\n\n await handlers[command](context);\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAoDA,SAAgB,UAOd,UACA,eAE2D,CAAC,GAG3C;CACjB,OAAO,OACL,WACG;EACH,MAAM,EAAE,SAAS,YAAY;EAE7B,IAAI,CAAC,SAAS,UACZ,MAAM,IAAI,MACR,2DACE,QACD,8LAA8L,KAC7L,OAAO,KAAK,QAAQ,CACtB,EAAE,EACJ;EAGF,QAAQ,gBAAgB;EACxB,QAAQ,gBAAgB,kBACtB,OAAO,aAAa,QAAQ,QAAQ,MACpC,SACA,QAAQ,WACV;EAEA,IAAI;EACJ,IAAI,yBAAyB,OAAO,KAAK,QAAQ,SAAS;GACxD,MAAM,SAAS,IAAI,kBAAkB,QAAQ,OAAO;GACpD,OAAO,YAAY,MAAM;GACzB,OAAO,GAAG,SAAS,UAAkB,OAAO,MAAM,MAAM,YAAY,CAAC,CAAC;GACtE,OAAO,GAAG,aAAa;IACrB,OAAO,IAAI;GACb,CAAC;GAED,IAAI,QAAQ,WAAW,QAAQ,YAC7B,MAAM,gBAAgB,OAAO;QAE7B,MAAM,IAAI,MACR,uDACE,CAAC,QAAQ,UACL,UAAU,QAAQ,aAAa,gCAAgC,OAC/D,aACL,4BACH;EAEJ;EAEA,MAAM,SAAS,MAAiB,YAAoB;GAClD,IAAI,KACF,AAAK,IAAI,UAAU,kBAAkB;IACnC,MAAM;KACJ,UAAU;KACV,GAAG;KACH,GAAI,YAAY,IAAI,IAAI,OAAO,EAAE,MAAM,KAAK;KAC5C,OAAO,KAAK;KACZ,WAAW,KAAK,IAAI;IACtB;IACA;GACF,CAAC;QAED,cAAc,MAAM,OAAO;EAE/B;EAEA,MAAM,UAAW,MAAM,2BAA2B,KAIhD;GAAE,GAAG;GAAS;EAAM,GACpB,WAAW,YAAY,IACnB,MAAM,QAAQ,QAAQ,aAAa,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAC5D,KAAK,cAAc,OAAO,gBAAgB,CAAC,CAAC,GACjD,EACO,IACP,CACF;EAEA,QAAQ,OAAO,KACb,YACE,UAAU,QAAQ,WAAW,IAAI,KAAK,aACvC,KAAK,UAAU,OAAO,EAAE,cAAc,QAAQ,YAAY,EAC7D;EAEA,MAAM,oBACJ,OACF;EAEA,IAAI,CAAC,QAAQ,OAAO,OAClB,MAAM,IAAI,MACR,yCACE,QACD,wJACH;EAGF,MAAM,SAAS,SAAS,OAAO;CACjC;AACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const require_helpers_create_api = require('./create-api.cjs');
|
|
2
|
+
let vitest = require("vitest");
|
|
3
|
+
|
|
4
|
+
//#region src/helpers/create-api.test.ts
|
|
5
|
+
(0, vitest.describe)("base/engine/src/helpers/create-api.ts", () => {
|
|
6
|
+
(0, vitest.it)("loads module exports", () => {
|
|
7
|
+
(0, vitest.expect)(require_helpers_create_api.create_api_exports).toBeDefined();
|
|
8
|
+
(0, vitest.expect)(typeof require_helpers_create_api.create_api_exports).toBe("object");
|
|
9
|
+
});
|
|
10
|
+
(0, vitest.it)("has at least one runtime export", () => {
|
|
11
|
+
(0, vitest.expect)(Object.keys(require_helpers_create_api.create_api_exports).length).toBeGreaterThan(0);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { t as create_api_exports } from "./create-api.mjs";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
|
|
4
|
+
//#region src/helpers/create-api.test.ts
|
|
5
|
+
describe("base/engine/src/helpers/create-api.ts", () => {
|
|
6
|
+
it("loads module exports", () => {
|
|
7
|
+
expect(create_api_exports).toBeDefined();
|
|
8
|
+
expect(typeof create_api_exports).toBe("object");
|
|
9
|
+
});
|
|
10
|
+
it("has at least one runtime export", () => {
|
|
11
|
+
expect(Object.keys(create_api_exports).length).toBeGreaterThan(0);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { };
|
|
17
|
+
//# sourceMappingURL=create-api.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-api.test.mjs","names":["moduleExports"],"sources":["../../src/helpers/create-api.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport * as moduleExports from \"./create-api\";\n\ndescribe(\"base/engine/src/helpers/create-api.ts\", () => {\n it(\"loads module exports\", () => {\n expect(moduleExports).toBeDefined();\n expect(typeof moduleExports).toBe(\"object\");\n });\n\n it(\"has at least one runtime export\", () => {\n expect(Object.keys(moduleExports).length).toBeGreaterThan(0);\n });\n});\n"],"mappings":";;;;AAGA,SAAS,+CAA+C;CACtD,GAAG,8BAA8B;EAC/B,OAAOA,kBAAa,EAAE,YAAY;EAClC,OAAO,OAAOA,kBAAa,EAAE,KAAK,QAAQ;CAC5C,CAAC;CAED,GAAG,yCAAyC;EAC1C,OAAO,OAAO,KAAKA,kBAAa,EAAE,MAAM,EAAE,gBAAgB,CAAC;CAC7D,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_chunk = require('../chunk-CEeaYzDW.cjs');
|
|
2
3
|
let _powerlines_core_lib_environment = require("@powerlines/core/lib/environment");
|
|
3
4
|
let node_fs = require("node:fs");
|
|
4
5
|
let _stryke_fs_helpers = require("@stryke/fs/helpers");
|
|
@@ -7,6 +8,7 @@ let _stryke_fs_list_files = require("@stryke/fs/list-files");
|
|
|
7
8
|
let _powerlines_core_lib_hooks = require("@powerlines/core/lib/hooks");
|
|
8
9
|
|
|
9
10
|
//#region src/helpers/finalize.ts
|
|
11
|
+
var finalize_exports = /* @__PURE__ */ require_chunk.__exportAll({ finalize: () => finalize });
|
|
10
12
|
/**
|
|
11
13
|
* Finalize the execution context by disposing resources and cleaning up.
|
|
12
14
|
*
|
|
@@ -23,4 +25,10 @@ async function finalize(context) {
|
|
|
23
25
|
}
|
|
24
26
|
|
|
25
27
|
//#endregion
|
|
26
|
-
exports.finalize = finalize;
|
|
28
|
+
exports.finalize = finalize;
|
|
29
|
+
Object.defineProperty(exports, 'finalize_exports', {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
get: function () {
|
|
32
|
+
return finalize_exports;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { t as __exportAll } from "../chunk-w6R9maHv.mjs";
|
|
1
2
|
import { executeEnvironments } from "@powerlines/core/lib/environment";
|
|
2
3
|
import { existsSync } from "node:fs";
|
|
3
4
|
import { removeDirectory } from "@stryke/fs/helpers";
|
|
@@ -6,6 +7,7 @@ import { listFiles } from "@stryke/fs/list-files";
|
|
|
6
7
|
import { callHook } from "@powerlines/core/lib/hooks";
|
|
7
8
|
|
|
8
9
|
//#region src/helpers/finalize.ts
|
|
10
|
+
var finalize_exports = /* @__PURE__ */ __exportAll({ finalize: () => finalize });
|
|
9
11
|
/**
|
|
10
12
|
* Finalize the execution context by disposing resources and cleaning up.
|
|
11
13
|
*
|
|
@@ -22,5 +24,5 @@ async function finalize(context) {
|
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
//#endregion
|
|
25
|
-
export { finalize };
|
|
27
|
+
export { finalize, finalize_exports as t };
|
|
26
28
|
//# sourceMappingURL=finalize.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalize.mjs","names":[],"sources":["../../src/helpers/finalize.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type { ExecutionContext, ResolvedConfig } from \"@powerlines/core\";\nimport { executeEnvironments } from \"@powerlines/core/lib/environment\";\nimport { callHook } from \"@powerlines/core/lib/hooks\";\nimport { removeDirectory } from \"@stryke/fs/helpers\";\nimport { listFiles } from \"@stryke/fs/list-files\";\nimport { joinPaths } from \"@stryke/path/join\";\nimport { existsSync } from \"node:fs\";\n\n/**\n * Finalize the execution context by disposing resources and cleaning up.\n *\n * @param context - The execution context to finalize\n */\nexport async function finalize<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n>(context: ExecutionContext<TResolvedConfig>) {\n const timer = context.timer(\"Finalization\");\n\n await executeEnvironments(context, async env => {\n await callHook(context, \"finalize\", { environment: env });\n await env.fs.dispose();\n\n if (\n existsSync(env.cachePath) &&\n !(await listFiles(joinPaths(env.cachePath, \"**/*\")))?.length\n ) {\n await removeDirectory(env.cachePath);\n }\n });\n\n timer();\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"finalize.mjs","names":[],"sources":["../../src/helpers/finalize.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type { ExecutionContext, ResolvedConfig } from \"@powerlines/core\";\nimport { executeEnvironments } from \"@powerlines/core/lib/environment\";\nimport { callHook } from \"@powerlines/core/lib/hooks\";\nimport { removeDirectory } from \"@stryke/fs/helpers\";\nimport { listFiles } from \"@stryke/fs/list-files\";\nimport { joinPaths } from \"@stryke/path/join\";\nimport { existsSync } from \"node:fs\";\n\n/**\n * Finalize the execution context by disposing resources and cleaning up.\n *\n * @param context - The execution context to finalize\n */\nexport async function finalize<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n>(context: ExecutionContext<TResolvedConfig>) {\n const timer = context.timer(\"Finalization\");\n\n await executeEnvironments(context, async env => {\n await callHook(context, \"finalize\", { environment: env });\n await env.fs.dispose();\n\n if (\n existsSync(env.cachePath) &&\n !(await listFiles(joinPaths(env.cachePath, \"**/*\")))?.length\n ) {\n await removeDirectory(env.cachePath);\n }\n });\n\n timer();\n}\n"],"mappings":";;;;;;;;;;;;;;;AA+BA,eAAsB,SAEpB,SAA4C;CAC5C,MAAM,QAAQ,QAAQ,MAAM,cAAc;CAE1C,MAAM,oBAAoB,SAAS,OAAM,QAAO;EAC9C,MAAM,SAAS,SAAS,YAAY,EAAE,aAAa,IAAI,CAAC;EACxD,MAAM,IAAI,GAAG,QAAQ;EAErB,IACE,WAAW,IAAI,SAAS,KACxB,EAAE,MAAM,UAAU,UAAU,IAAI,WAAW,MAAM,CAAC,IAAI,QAEtD,MAAM,gBAAgB,IAAI,SAAS;CAEvC,CAAC;CAED,MAAM;AACR"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const require_helpers_finalize = require('./finalize.cjs');
|
|
2
|
+
let vitest = require("vitest");
|
|
3
|
+
|
|
4
|
+
//#region src/helpers/finalize.test.ts
|
|
5
|
+
(0, vitest.describe)("base/engine/src/helpers/finalize.ts", () => {
|
|
6
|
+
(0, vitest.it)("loads module exports", () => {
|
|
7
|
+
(0, vitest.expect)(require_helpers_finalize.finalize_exports).toBeDefined();
|
|
8
|
+
(0, vitest.expect)(typeof require_helpers_finalize.finalize_exports).toBe("object");
|
|
9
|
+
});
|
|
10
|
+
(0, vitest.it)("has at least one runtime export", () => {
|
|
11
|
+
(0, vitest.expect)(Object.keys(require_helpers_finalize.finalize_exports).length).toBeGreaterThan(0);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { t as finalize_exports } from "./finalize.mjs";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
|
|
4
|
+
//#region src/helpers/finalize.test.ts
|
|
5
|
+
describe("base/engine/src/helpers/finalize.ts", () => {
|
|
6
|
+
it("loads module exports", () => {
|
|
7
|
+
expect(finalize_exports).toBeDefined();
|
|
8
|
+
expect(typeof finalize_exports).toBe("object");
|
|
9
|
+
});
|
|
10
|
+
it("has at least one runtime export", () => {
|
|
11
|
+
expect(Object.keys(finalize_exports).length).toBeGreaterThan(0);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { };
|
|
17
|
+
//# sourceMappingURL=finalize.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finalize.test.mjs","names":["moduleExports"],"sources":["../../src/helpers/finalize.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport * as moduleExports from \"./finalize\";\n\ndescribe(\"base/engine/src/helpers/finalize.ts\", () => {\n it(\"loads module exports\", () => {\n expect(moduleExports).toBeDefined();\n expect(typeof moduleExports).toBe(\"object\");\n });\n\n it(\"has at least one runtime export\", () => {\n expect(Object.keys(moduleExports).length).toBeGreaterThan(0);\n });\n});\n"],"mappings":";;;;AAGA,SAAS,6CAA6C;CACpD,GAAG,8BAA8B;EAC/B,OAAOA,gBAAa,EAAE,YAAY;EAClC,OAAO,OAAOA,gBAAa,EAAE,KAAK,QAAQ;CAC5C,CAAC;CAED,GAAG,yCAAyC;EAC1C,OAAO,OAAO,KAAKA,gBAAa,EAAE,MAAM,EAAE,gBAAgB,CAAC;CAC7D,CAAC;AACH,CAAC"}
|
package/dist/helpers/rpc.cjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_chunk = require('../chunk-CEeaYzDW.cjs');
|
|
2
3
|
let _powerlines_core_lib_events = require("@powerlines/core/lib/events");
|
|
3
4
|
let _stryke_type_checks_is_number = require("@stryke/type-checks/is-number");
|
|
4
5
|
let _stryke_type_checks_is_set = require("@stryke/type-checks/is-set");
|
|
@@ -12,6 +13,7 @@ let human_id = require("human-id");
|
|
|
12
13
|
let node_events = require("node:events");
|
|
13
14
|
|
|
14
15
|
//#region src/helpers/rpc.ts
|
|
16
|
+
var rpc_exports = /* @__PURE__ */ require_chunk.__exportAll({ createRpcClient: () => createRpcClient });
|
|
15
17
|
function createWsRpcClientMode(baseURL, connectionMeta, events, clientRpc, authToken = (0, human_id.humanId)({
|
|
16
18
|
separator: "-",
|
|
17
19
|
capitalize: false
|
|
@@ -136,4 +138,10 @@ function createRpcClient(options) {
|
|
|
136
138
|
}
|
|
137
139
|
|
|
138
140
|
//#endregion
|
|
139
|
-
exports.createRpcClient = createRpcClient;
|
|
141
|
+
exports.createRpcClient = createRpcClient;
|
|
142
|
+
Object.defineProperty(exports, 'rpc_exports', {
|
|
143
|
+
enumerable: true,
|
|
144
|
+
get: function () {
|
|
145
|
+
return rpc_exports;
|
|
146
|
+
}
|
|
147
|
+
});
|
package/dist/helpers/rpc.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { t as __exportAll } from "../chunk-w6R9maHv.mjs";
|
|
1
2
|
import { createEventEmitter } from "@powerlines/core/lib/events";
|
|
2
3
|
import { isNumber } from "@stryke/type-checks/is-number";
|
|
3
4
|
import { isSet } from "@stryke/type-checks/is-set";
|
|
@@ -11,6 +12,7 @@ import { humanId } from "human-id";
|
|
|
11
12
|
import { EventEmitter } from "node:events";
|
|
12
13
|
|
|
13
14
|
//#region src/helpers/rpc.ts
|
|
15
|
+
var rpc_exports = /* @__PURE__ */ __exportAll({ createRpcClient: () => createRpcClient });
|
|
14
16
|
function createWsRpcClientMode(baseURL, connectionMeta, events, clientRpc, authToken = humanId({
|
|
15
17
|
separator: "-",
|
|
16
18
|
capitalize: false
|
|
@@ -135,5 +137,5 @@ function createRpcClient(options) {
|
|
|
135
137
|
}
|
|
136
138
|
|
|
137
139
|
//#endregion
|
|
138
|
-
export { createRpcClient };
|
|
140
|
+
export { createRpcClient, rpc_exports as t };
|
|
139
141
|
//# sourceMappingURL=rpc.mjs.map
|
package/dist/helpers/rpc.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.mjs","names":["createDevframeRpcClient"],"sources":["../../src/helpers/rpc.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { createEventEmitter } from \"@powerlines/core/lib/events\";\nimport { isNumber } from \"@stryke/type-checks/is-number\";\nimport { isSet } from \"@stryke/type-checks/is-set\";\nimport { StormURL } from \"@stryke/url\";\nimport { BirpcOptions } from \"birpc\";\nimport {\n createRpcStreamingClientHost,\n DevToolsClientRpcHost,\n DevToolsRpcClientMode,\n RpcClientEvents\n} from \"devframe/client\";\nimport { RpcCacheManager, RpcFunctionsCollectorBase } from \"devframe/rpc\";\nimport { createRpcClient as createDevframeRpcClient } from \"devframe/rpc/client\";\nimport {\n createWsRpcChannel,\n WsRpcChannelOptions\n} from \"devframe/rpc/transports/ws-client\";\nimport {\n ConnectionMeta,\n EventEmitter as DevFrameEventEmitter\n} from \"devframe/types\";\nimport { promiseWithResolver } from \"devframe/utils/promise\";\nimport { humanId } from \"human-id\";\nimport { EventEmitter } from \"node:events\";\nimport { RpcClientOptions } from \"../types/config\";\nimport {\n RpcClient,\n RpcClientFunctions,\n RpcContext,\n RpcServerFunctions\n} from \"../types/rpc\";\n\nfunction createWsRpcClientMode(\n baseURL: StormURL,\n connectionMeta: ConnectionMeta,\n events: DevFrameEventEmitter<RpcClientEvents>,\n clientRpc: DevToolsClientRpcHost,\n authToken: string = humanId({ separator: \"-\", capitalize: false }),\n rpcOptions: Partial<\n BirpcOptions<RpcServerFunctions, RpcClientFunctions, boolean>\n > = {},\n wsOptions: Partial<WsRpcChannelOptions> = {}\n): DevToolsRpcClientMode {\n let isTrusted = false;\n const trustedPromise = promiseWithResolver<boolean>();\n const url =\n isNumber(connectionMeta.websocket) ||\n (isSet(connectionMeta.websocket) &&\n `${+connectionMeta.websocket}` === `${connectionMeta.websocket}`)\n ? `${baseURL.protocol.replace(\"http\", \"ws\")}//${baseURL.hostname}:${connectionMeta.websocket}`\n : (connectionMeta.websocket as string);\n\n // Build a minimal `defs` map from the connection meta so the per-call\n // wire serializer dispatches outgoing requests with the correct\n // encoding (JSON for `jsonSerializable: true` methods; structured-\n // clone for the rest).\n const definitions = new Map<string, { jsonSerializable: true }>();\n for (const name of connectionMeta.jsonSerializableMethods ?? [])\n definitions.set(name, { jsonSerializable: true });\n\n const serverRpc = createDevframeRpcClient<\n RpcServerFunctions,\n RpcClientFunctions\n >(clientRpc.functions, {\n channel: createWsRpcChannel({\n url,\n authToken,\n definitions,\n ...wsOptions\n }),\n rpcOptions\n });\n\n // Handle server-initiated auth revocation\n clientRpc.register({\n name: \"devframe:auth:revoked\",\n type: \"event\",\n handler: () => {\n isTrusted = false;\n events.emit(\"rpc:is-trusted:updated\", false);\n }\n });\n\n let currentAuthToken = authToken;\n\n async function requestTrustWithToken(token: string) {\n currentAuthToken = token;\n\n // const info = parseUA(navigator.userAgent);\n // const ua = [\n // \"powerlines\",\n // \"1.0\",\n // \"|\",\n // info.os.name,\n // info.os.version,\n // info.device.type\n // ]\n // .filter(i => i)\n // .join(\" \");\n\n // const result = await serverRpc.$call(\"vite:anonymous:auth\", {\n // authToken: token,\n // ua,\n // origin: baseURL.origin\n // });\n\n // isTrusted = result.isTrusted;\n // trustedPromise.resolve(isTrusted);\n // events.emit(\"rpc:is-trusted:updated\", isTrusted);\n // return result.isTrusted;\n\n return true;\n }\n\n async function requestTrust() {\n if (isTrusted) return true;\n return requestTrustWithToken(currentAuthToken);\n }\n\n async function ensureTrusted(timeout = 60_000): Promise<boolean> {\n if (isTrusted) trustedPromise.resolve(true);\n\n if (timeout <= 0) return trustedPromise.promise;\n\n let clear = () => {};\n await Promise.race([\n trustedPromise.promise.then(clear),\n new Promise((resolve, reject) => {\n const id = setTimeout(() => {\n reject(new Error(\"Timeout waiting for rpc to be trusted\"));\n }, timeout);\n clear = () => clearTimeout(id);\n })\n ]);\n\n return isTrusted;\n }\n\n return {\n get isTrusted() {\n return isTrusted;\n },\n requestTrust,\n requestTrustWithToken,\n ensureTrusted,\n call: (...args: any): any => {\n return serverRpc.$call(\n // @ts-expect-error casting\n ...args\n );\n },\n callEvent: (...args: any): any => {\n return serverRpc.$callEvent(\n // @ts-expect-error casting\n ...args\n );\n },\n callOptional: (...args: any): any => {\n return serverRpc.$callOptional(\n // @ts-expect-error casting\n ...args\n );\n }\n };\n}\n\nconst CONNECTION_AUTH_TOKEN_KEY = \"__DEVTOOLS_CONNECTION_AUTH_TOKEN__\";\n\nexport function createRpcClient(options: RpcClientOptions) {\n const baseURL = new StormURL(options.baseURL);\n\n const cacheManager = new RpcCacheManager({\n functions: [],\n ...(typeof options.cacheOptions === \"object\" ? options.cacheOptions : {})\n });\n const context: RpcContext = {\n rpc: undefined!\n };\n\n const clientRpc: DevToolsClientRpcHost = new RpcFunctionsCollectorBase<\n RpcClientFunctions,\n RpcContext\n >(context);\n\n EventEmitter.setMaxListeners(100);\n const events = createEventEmitter<RpcClientEvents>();\n\n const mode = createWsRpcClientMode(\n baseURL,\n options.connection,\n events,\n clientRpc,\n undefined,\n {\n ...options.rpcOptions,\n async onRequest(req, next, resolve) {\n await options.rpcOptions?.onRequest?.call(this, req, next, resolve);\n if (options.cacheOptions && cacheManager?.validate(req.m)) {\n const cached = cacheManager.cached(req.m, req.a);\n if (cached) {\n return resolve(cached);\n } else {\n const res = await next(req);\n cacheManager?.apply(req, res);\n }\n } else {\n await next(req);\n }\n }\n },\n options.wsOptions\n );\n\n const rpc: RpcClient = {\n events,\n get isTrusted() {\n return mode.isTrusted;\n },\n connectionMeta: options.connection,\n ensureTrusted: mode.ensureTrusted,\n requestTrust: mode.requestTrust,\n requestTrustWithToken: async (token: string) => {\n // Update stored token for future reconnections\n localStorage.setItem(CONNECTION_AUTH_TOKEN_KEY, token);\n (globalThis as any)[CONNECTION_AUTH_TOKEN_KEY] = token;\n return mode.requestTrustWithToken(token);\n },\n call: mode.call,\n callEvent: mode.callEvent,\n callOptional: mode.callOptional,\n client: clientRpc,\n sharedState: undefined!,\n streaming: undefined!,\n cacheManager\n };\n\n // rpc.sharedState = createRpcSharedStateClientHost(rpc);\n rpc.streaming = createRpcStreamingClientHost(rpc);\n\n // @ts-expect-error assign to readonly property\n context.rpc = rpc;\n void mode.requestTrust();\n\n // Listen for auth updates from other tabs (e.g., auth URL page)\n try {\n const bc = new BroadcastChannel(\"vite-devtools-auth\");\n bc.onmessage = event => {\n if (event.data?.type === \"auth-update\" && event.data.authToken) {\n void rpc.requestTrustWithToken(event.data.authToken);\n }\n };\n } catch {\n // BroadcastChannel is not supported in all environments, so we can safely ignore errors here\n }\n\n return rpc;\n}\n"],"mappings":";;;;;;;;;;;;;AAkDA,SAAS,sBACP,SACA,gBACA,QACA,WACA,YAAoB,QAAQ;CAAE,WAAW;CAAK,YAAY;AAAM,CAAC,GACjE,aAEI,CAAC,GACL,YAA0C,CAAC,GACpB;CACvB,IAAI,YAAY;CAChB,MAAM,iBAAiB,oBAA6B;CACpD,MAAM,MACJ,SAAS,eAAe,SAAS,KAChC,MAAM,eAAe,SAAS,KAC7B,GAAG,CAAC,eAAe,gBAAgB,GAAG,eAAe,cACnD,GAAG,QAAQ,SAAS,QAAQ,QAAQ,IAAI,EAAE,IAAI,QAAQ,SAAS,GAAG,eAAe,cAChF,eAAe;CAMtB,MAAM,8BAAc,IAAI,IAAwC;CAChE,KAAK,MAAM,QAAQ,eAAe,2BAA2B,CAAC,GAC5D,YAAY,IAAI,MAAM,EAAE,kBAAkB,KAAK,CAAC;CAElD,MAAM,YAAYA,kBAGhB,UAAU,WAAW;EACrB,SAAS,mBAAmB;GAC1B;GACA;GACA;GACA,GAAG;EACL,CAAC;EACD;CACF,CAAC;CAGD,UAAU,SAAS;EACjB,MAAM;EACN,MAAM;EACN,eAAe;GACb,YAAY;GACZ,OAAO,KAAK,0BAA0B,KAAK;EAC7C;CACF,CAAC;CAED,IAAI,mBAAmB;CAEvB,eAAe,sBAAsB,OAAe;EAClD,mBAAmB;EAyBnB,OAAO;CACT;CAEA,eAAe,eAAe;EAC5B,IAAI,WAAW,OAAO;EACtB,OAAO,sBAAsB,gBAAgB;CAC/C;CAEA,eAAe,cAAc,UAAU,KAA0B;EAC/D,IAAI,WAAW,eAAe,QAAQ,IAAI;EAE1C,IAAI,WAAW,GAAG,OAAO,eAAe;EAExC,IAAI,cAAc,CAAC;EACnB,MAAM,QAAQ,KAAK,CACjB,eAAe,QAAQ,KAAK,KAAK,GACjC,IAAI,SAAS,SAAS,WAAW;GAC/B,MAAM,KAAK,iBAAiB;IAC1B,uBAAO,IAAI,MAAM,uCAAuC,CAAC;GAC3D,GAAG,OAAO;GACV,cAAc,aAAa,EAAE;EAC/B,CAAC,CACH,CAAC;EAED,OAAO;CACT;CAEA,OAAO;EACL,IAAI,YAAY;GACd,OAAO;EACT;EACA;EACA;EACA;EACA,OAAO,GAAG,SAAmB;GAC3B,OAAO,UAAU,MAEf,GAAG,IACL;EACF;EACA,YAAY,GAAG,SAAmB;GAChC,OAAO,UAAU,WAEf,GAAG,IACL;EACF;EACA,eAAe,GAAG,SAAmB;GACnC,OAAO,UAAU,cAEf,GAAG,IACL;EACF;CACF;AACF;AAEA,MAAM,4BAA4B;AAElC,SAAgB,gBAAgB,SAA2B;CACzD,MAAM,UAAU,IAAI,SAAS,QAAQ,OAAO;CAE5C,MAAM,eAAe,IAAI,gBAAgB;EACvC,WAAW,CAAC;EACZ,GAAI,OAAO,QAAQ,iBAAiB,WAAW,QAAQ,eAAe,CAAC;CACzE,CAAC;CACD,MAAM,UAAsB,EAC1B,KAAK,OACP;CAEA,MAAM,YAAmC,IAAI,0BAG3C,OAAO;CAET,aAAa,gBAAgB,GAAG;CAChC,MAAM,SAAS,mBAAoC;CAEnD,MAAM,OAAO,sBACX,SACA,QAAQ,YACR,QACA,WACA,QACA;EACE,GAAG,QAAQ;EACX,MAAM,UAAU,KAAK,MAAM,SAAS;GAClC,MAAM,QAAQ,YAAY,WAAW,KAAK,MAAM,KAAK,MAAM,OAAO;GAClE,IAAI,QAAQ,gBAAgB,cAAc,SAAS,IAAI,CAAC,GAAG;IACzD,MAAM,SAAS,aAAa,OAAO,IAAI,GAAG,IAAI,CAAC;IAC/C,IAAI,QACF,OAAO,QAAQ,MAAM;SAChB;KACL,MAAM,MAAM,MAAM,KAAK,GAAG;KAC1B,cAAc,MAAM,KAAK,GAAG;IAC9B;GACF,OACE,MAAM,KAAK,GAAG;EAElB;CACF,GACA,QAAQ,SACV;CAEA,MAAM,MAAiB;EACrB;EACA,IAAI,YAAY;GACd,OAAO,KAAK;EACd;EACA,gBAAgB,QAAQ;EACxB,eAAe,KAAK;EACpB,cAAc,KAAK;EACnB,uBAAuB,OAAO,UAAkB;GAE9C,aAAa,QAAQ,2BAA2B,KAAK;GACrD,AAAC,WAAmB,6BAA6B;GACjD,OAAO,KAAK,sBAAsB,KAAK;EACzC;EACA,MAAM,KAAK;EACX,WAAW,KAAK;EAChB,cAAc,KAAK;EACnB,QAAQ;EACR,aAAa;EACb,WAAW;EACX;CACF;CAGA,IAAI,YAAY,6BAA6B,GAAG;CAGhD,QAAQ,MAAM;CACd,AAAK,KAAK,aAAa;CAGvB,IAAI;EACF,MAAM,KAAK,IAAI,iBAAiB,oBAAoB;EACpD,GAAG,aAAY,UAAS;GACtB,IAAI,MAAM,MAAM,SAAS,iBAAiB,MAAM,KAAK,WACnD,AAAK,IAAI,sBAAsB,MAAM,KAAK,SAAS;EAEvD;CACF,QAAQ,CAER;CAEA,OAAO;AACT"}
|
|
1
|
+
{"version":3,"file":"rpc.mjs","names":["createDevframeRpcClient"],"sources":["../../src/helpers/rpc.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { createEventEmitter } from \"@powerlines/core/lib/events\";\nimport { isNumber } from \"@stryke/type-checks/is-number\";\nimport { isSet } from \"@stryke/type-checks/is-set\";\nimport { StormURL } from \"@stryke/url\";\nimport { BirpcOptions } from \"birpc\";\nimport {\n createRpcStreamingClientHost,\n DevToolsClientRpcHost,\n DevToolsRpcClientMode,\n RpcClientEvents\n} from \"devframe/client\";\nimport { RpcCacheManager, RpcFunctionsCollectorBase } from \"devframe/rpc\";\nimport { createRpcClient as createDevframeRpcClient } from \"devframe/rpc/client\";\nimport {\n createWsRpcChannel,\n WsRpcChannelOptions\n} from \"devframe/rpc/transports/ws-client\";\nimport {\n ConnectionMeta,\n EventEmitter as DevFrameEventEmitter\n} from \"devframe/types\";\nimport { promiseWithResolver } from \"devframe/utils/promise\";\nimport { humanId } from \"human-id\";\nimport { EventEmitter } from \"node:events\";\nimport { RpcClientOptions } from \"../types/config\";\nimport {\n RpcClient,\n RpcClientFunctions,\n RpcContext,\n RpcServerFunctions\n} from \"../types/rpc\";\n\nfunction createWsRpcClientMode(\n baseURL: StormURL,\n connectionMeta: ConnectionMeta,\n events: DevFrameEventEmitter<RpcClientEvents>,\n clientRpc: DevToolsClientRpcHost,\n authToken: string = humanId({ separator: \"-\", capitalize: false }),\n rpcOptions: Partial<\n BirpcOptions<RpcServerFunctions, RpcClientFunctions, boolean>\n > = {},\n wsOptions: Partial<WsRpcChannelOptions> = {}\n): DevToolsRpcClientMode {\n let isTrusted = false;\n const trustedPromise = promiseWithResolver<boolean>();\n const url =\n isNumber(connectionMeta.websocket) ||\n (isSet(connectionMeta.websocket) &&\n `${+connectionMeta.websocket}` === `${connectionMeta.websocket}`)\n ? `${baseURL.protocol.replace(\"http\", \"ws\")}//${baseURL.hostname}:${connectionMeta.websocket}`\n : (connectionMeta.websocket as string);\n\n // Build a minimal `defs` map from the connection meta so the per-call\n // wire serializer dispatches outgoing requests with the correct\n // encoding (JSON for `jsonSerializable: true` methods; structured-\n // clone for the rest).\n const definitions = new Map<string, { jsonSerializable: true }>();\n for (const name of connectionMeta.jsonSerializableMethods ?? [])\n definitions.set(name, { jsonSerializable: true });\n\n const serverRpc = createDevframeRpcClient<\n RpcServerFunctions,\n RpcClientFunctions\n >(clientRpc.functions, {\n channel: createWsRpcChannel({\n url,\n authToken,\n definitions,\n ...wsOptions\n }),\n rpcOptions\n });\n\n // Handle server-initiated auth revocation\n clientRpc.register({\n name: \"devframe:auth:revoked\",\n type: \"event\",\n handler: () => {\n isTrusted = false;\n events.emit(\"rpc:is-trusted:updated\", false);\n }\n });\n\n let currentAuthToken = authToken;\n\n async function requestTrustWithToken(token: string) {\n currentAuthToken = token;\n\n // const info = parseUA(navigator.userAgent);\n // const ua = [\n // \"powerlines\",\n // \"1.0\",\n // \"|\",\n // info.os.name,\n // info.os.version,\n // info.device.type\n // ]\n // .filter(i => i)\n // .join(\" \");\n\n // const result = await serverRpc.$call(\"vite:anonymous:auth\", {\n // authToken: token,\n // ua,\n // origin: baseURL.origin\n // });\n\n // isTrusted = result.isTrusted;\n // trustedPromise.resolve(isTrusted);\n // events.emit(\"rpc:is-trusted:updated\", isTrusted);\n // return result.isTrusted;\n\n return true;\n }\n\n async function requestTrust() {\n if (isTrusted) return true;\n return requestTrustWithToken(currentAuthToken);\n }\n\n async function ensureTrusted(timeout = 60_000): Promise<boolean> {\n if (isTrusted) trustedPromise.resolve(true);\n\n if (timeout <= 0) return trustedPromise.promise;\n\n let clear = () => {};\n await Promise.race([\n trustedPromise.promise.then(clear),\n new Promise((resolve, reject) => {\n const id = setTimeout(() => {\n reject(new Error(\"Timeout waiting for rpc to be trusted\"));\n }, timeout);\n clear = () => clearTimeout(id);\n })\n ]);\n\n return isTrusted;\n }\n\n return {\n get isTrusted() {\n return isTrusted;\n },\n requestTrust,\n requestTrustWithToken,\n ensureTrusted,\n call: (...args: any): any => {\n return serverRpc.$call(\n // @ts-expect-error casting\n ...args\n );\n },\n callEvent: (...args: any): any => {\n return serverRpc.$callEvent(\n // @ts-expect-error casting\n ...args\n );\n },\n callOptional: (...args: any): any => {\n return serverRpc.$callOptional(\n // @ts-expect-error casting\n ...args\n );\n }\n };\n}\n\nconst CONNECTION_AUTH_TOKEN_KEY = \"__DEVTOOLS_CONNECTION_AUTH_TOKEN__\";\n\nexport function createRpcClient(options: RpcClientOptions) {\n const baseURL = new StormURL(options.baseURL);\n\n const cacheManager = new RpcCacheManager({\n functions: [],\n ...(typeof options.cacheOptions === \"object\" ? options.cacheOptions : {})\n });\n const context: RpcContext = {\n rpc: undefined!\n };\n\n const clientRpc: DevToolsClientRpcHost = new RpcFunctionsCollectorBase<\n RpcClientFunctions,\n RpcContext\n >(context);\n\n EventEmitter.setMaxListeners(100);\n const events = createEventEmitter<RpcClientEvents>();\n\n const mode = createWsRpcClientMode(\n baseURL,\n options.connection,\n events,\n clientRpc,\n undefined,\n {\n ...options.rpcOptions,\n async onRequest(req, next, resolve) {\n await options.rpcOptions?.onRequest?.call(this, req, next, resolve);\n if (options.cacheOptions && cacheManager?.validate(req.m)) {\n const cached = cacheManager.cached(req.m, req.a);\n if (cached) {\n return resolve(cached);\n } else {\n const res = await next(req);\n cacheManager?.apply(req, res);\n }\n } else {\n await next(req);\n }\n }\n },\n options.wsOptions\n );\n\n const rpc: RpcClient = {\n events,\n get isTrusted() {\n return mode.isTrusted;\n },\n connectionMeta: options.connection,\n ensureTrusted: mode.ensureTrusted,\n requestTrust: mode.requestTrust,\n requestTrustWithToken: async (token: string) => {\n // Update stored token for future reconnections\n localStorage.setItem(CONNECTION_AUTH_TOKEN_KEY, token);\n (globalThis as any)[CONNECTION_AUTH_TOKEN_KEY] = token;\n return mode.requestTrustWithToken(token);\n },\n call: mode.call,\n callEvent: mode.callEvent,\n callOptional: mode.callOptional,\n client: clientRpc,\n sharedState: undefined!,\n streaming: undefined!,\n cacheManager\n };\n\n // rpc.sharedState = createRpcSharedStateClientHost(rpc);\n rpc.streaming = createRpcStreamingClientHost(rpc);\n\n // @ts-expect-error assign to readonly property\n context.rpc = rpc;\n void mode.requestTrust();\n\n // Listen for auth updates from other tabs (e.g., auth URL page)\n try {\n const bc = new BroadcastChannel(\"vite-devtools-auth\");\n bc.onmessage = event => {\n if (event.data?.type === \"auth-update\" && event.data.authToken) {\n void rpc.requestTrustWithToken(event.data.authToken);\n }\n };\n } catch {\n // BroadcastChannel is not supported in all environments, so we can safely ignore errors here\n }\n\n return rpc;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const require_helpers_rpc = require('./rpc.cjs');
|
|
2
|
+
let vitest = require("vitest");
|
|
3
|
+
|
|
4
|
+
//#region src/helpers/rpc.test.ts
|
|
5
|
+
(0, vitest.describe)("base/engine/src/helpers/rpc.ts", () => {
|
|
6
|
+
(0, vitest.it)("loads module exports", () => {
|
|
7
|
+
(0, vitest.expect)(require_helpers_rpc.rpc_exports).toBeDefined();
|
|
8
|
+
(0, vitest.expect)(typeof require_helpers_rpc.rpc_exports).toBe("object");
|
|
9
|
+
});
|
|
10
|
+
(0, vitest.it)("has at least one runtime export", () => {
|
|
11
|
+
(0, vitest.expect)(Object.keys(require_helpers_rpc.rpc_exports).length).toBeGreaterThan(0);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { t as rpc_exports } from "./rpc.mjs";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
|
|
4
|
+
//#region src/helpers/rpc.test.ts
|
|
5
|
+
describe("base/engine/src/helpers/rpc.ts", () => {
|
|
6
|
+
it("loads module exports", () => {
|
|
7
|
+
expect(rpc_exports).toBeDefined();
|
|
8
|
+
expect(typeof rpc_exports).toBe("object");
|
|
9
|
+
});
|
|
10
|
+
it("has at least one runtime export", () => {
|
|
11
|
+
expect(Object.keys(rpc_exports).length).toBeGreaterThan(0);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { };
|
|
17
|
+
//# sourceMappingURL=rpc.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.test.mjs","names":["moduleExports"],"sources":["../../src/helpers/rpc.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport * as moduleExports from \"./rpc\";\n\ndescribe(\"base/engine/src/helpers/rpc.ts\", () => {\n it(\"loads module exports\", () => {\n expect(moduleExports).toBeDefined();\n expect(typeof moduleExports).toBe(\"object\");\n });\n\n it(\"has at least one runtime export\", () => {\n expect(Object.keys(moduleExports).length).toBeGreaterThan(0);\n });\n});\n"],"mappings":";;;;AAGA,SAAS,wCAAwC;CAC/C,GAAG,8BAA8B;EAC/B,OAAOA,WAAa,EAAE,YAAY;EAClC,OAAO,OAAOA,WAAa,EAAE,KAAK,QAAQ;CAC5C,CAAC;CAED,GAAG,yCAAyC;EAC1C,OAAO,OAAO,KAAKA,WAAa,EAAE,MAAM,EAAE,gBAAgB,CAAC;CAC7D,CAAC;AACH,CAAC"}
|
package/dist/helpers/stream.cjs
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_chunk = require('../chunk-CEeaYzDW.cjs');
|
|
2
3
|
let node_stream = require("node:stream");
|
|
3
4
|
|
|
4
5
|
//#region src/helpers/stream.ts
|
|
6
|
+
var stream_exports = /* @__PURE__ */ require_chunk.__exportAll({
|
|
7
|
+
MessagePortDuplex: () => MessagePortDuplex,
|
|
8
|
+
MessagePortReadable: () => MessagePortReadable,
|
|
9
|
+
MessagePortWritable: () => MessagePortWritable
|
|
10
|
+
});
|
|
5
11
|
const kPort = Symbol("kPort");
|
|
6
12
|
function toTransferable(chunk) {
|
|
7
13
|
if (ArrayBuffer.isView(chunk)) return chunk.buffer instanceof ArrayBuffer ? chunk.buffer : void 0;
|
|
@@ -116,4 +122,10 @@ var MessagePortDuplex = class extends node_stream.Duplex {
|
|
|
116
122
|
//#endregion
|
|
117
123
|
exports.MessagePortDuplex = MessagePortDuplex;
|
|
118
124
|
exports.MessagePortReadable = MessagePortReadable;
|
|
119
|
-
exports.MessagePortWritable = MessagePortWritable;
|
|
125
|
+
exports.MessagePortWritable = MessagePortWritable;
|
|
126
|
+
Object.defineProperty(exports, 'stream_exports', {
|
|
127
|
+
enumerable: true,
|
|
128
|
+
get: function () {
|
|
129
|
+
return stream_exports;
|
|
130
|
+
}
|
|
131
|
+
});
|
package/dist/helpers/stream.mjs
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
import { t as __exportAll } from "../chunk-w6R9maHv.mjs";
|
|
1
2
|
import { Duplex, Readable, Writable } from "node:stream";
|
|
2
3
|
|
|
3
4
|
//#region src/helpers/stream.ts
|
|
5
|
+
var stream_exports = /* @__PURE__ */ __exportAll({
|
|
6
|
+
MessagePortDuplex: () => MessagePortDuplex,
|
|
7
|
+
MessagePortReadable: () => MessagePortReadable,
|
|
8
|
+
MessagePortWritable: () => MessagePortWritable
|
|
9
|
+
});
|
|
4
10
|
const kPort = Symbol("kPort");
|
|
5
11
|
function toTransferable(chunk) {
|
|
6
12
|
if (ArrayBuffer.isView(chunk)) return chunk.buffer instanceof ArrayBuffer ? chunk.buffer : void 0;
|
|
@@ -113,5 +119,5 @@ var MessagePortDuplex = class extends Duplex {
|
|
|
113
119
|
};
|
|
114
120
|
|
|
115
121
|
//#endregion
|
|
116
|
-
export { MessagePortDuplex, MessagePortReadable, MessagePortWritable };
|
|
122
|
+
export { MessagePortDuplex, MessagePortReadable, MessagePortWritable, stream_exports as t };
|
|
117
123
|
//# sourceMappingURL=stream.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.mjs","names":[],"sources":["../../src/helpers/stream.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type {\n DuplexOptions,\n ReadableOptions,\n WritableOptions\n} from \"node:stream\";\nimport { Duplex, Readable, Writable } from \"node:stream\";\nimport type { MessagePort, Transferable } from \"node:worker_threads\";\n\nconst kPort = Symbol(\"kPort\");\n\ntype PortLike = MessagePort & {\n close: (callback?: () => void) => void;\n};\n\ninterface WritevChunk {\n chunk: unknown;\n encoding: BufferEncoding;\n}\n\nfunction toTransferable(chunk: unknown): Transferable | undefined {\n if (ArrayBuffer.isView(chunk)) {\n return chunk.buffer instanceof ArrayBuffer ? chunk.buffer : undefined;\n }\n\n if (chunk instanceof ArrayBuffer) {\n return chunk;\n }\n\n return undefined;\n}\n\nexport class MessagePortWritable extends Writable {\n private [kPort]: PortLike;\n\n public constructor(port: MessagePort, options?: WritableOptions) {\n super(options);\n this[kPort] = port;\n }\n\n public override _write(\n chunk: unknown,\n _encoding: BufferEncoding,\n callback: (error?: Error | null) => void\n ): void {\n const transfer = toTransferable(chunk);\n this[kPort].postMessage(chunk, transfer ? [transfer] : []);\n callback();\n }\n\n public override _writev(\n data: WritevChunk[],\n callback: (error?: Error | null) => void\n ): void {\n const chunks = data.map(entry => entry.chunk);\n const transfers = data\n .map(entry => toTransferable(entry.chunk))\n .filter((value): value is Transferable => Boolean(value));\n\n this[kPort].postMessage(chunks, transfers);\n callback();\n }\n\n public override _final(callback: (error?: Error | null) => void): void {\n this[kPort].postMessage(null);\n callback();\n }\n\n public override _destroy(\n error: Error | null,\n callback: (error?: Error | null) => void\n ): void {\n this[kPort].close(() => callback(error));\n }\n\n public unref(): this {\n this[kPort].unref();\n return this;\n }\n\n public ref(): this {\n this[kPort].ref();\n return this;\n }\n}\n\nexport class MessagePortReadable extends Readable {\n private [kPort]: PortLike;\n\n public constructor(port: MessagePort, options?: ReadableOptions) {\n super(options);\n this[kPort] = port;\n port.onmessage = ({ data }) => {\n this.push(data);\n };\n }\n\n public override _read(_size: number): void {\n this[kPort].start();\n }\n\n public override _destroy(\n error: Error | null,\n callback: (error?: Error | null) => void\n ): void {\n this[kPort].close(() => {\n this[kPort].onmessage = null;\n callback(error);\n });\n }\n\n public unref(): this {\n this[kPort].unref();\n return this;\n }\n\n public ref(): this {\n this[kPort].ref();\n return this;\n }\n}\n\nexport interface MessagePortDuplexOptions extends DuplexOptions {\n onActivityAbort?: () => void;\n}\n\nexport class MessagePortDuplex extends Duplex {\n private [kPort]: PortLike;\n\n private _activityAbortHandler?: () => void;\n\n public constructor(port: MessagePort, options?: MessagePortDuplexOptions) {\n super(options);\n this[kPort] = port;\n this._activityAbortHandler = options?.onActivityAbort;\n\n port.onmessage = ({ data }) => {\n this.push(data);\n };\n }\n\n public override _read(_size: number): void {\n this[kPort].start();\n }\n\n public override _write(\n chunk: unknown,\n _encoding: BufferEncoding,\n callback: (error?: Error | null) => void\n ): void {\n if (this._activityAbortHandler) {\n this._activityAbortHandler();\n }\n const transfer = toTransferable(chunk);\n this[kPort].postMessage(chunk, transfer ? [transfer] : []);\n callback();\n }\n\n public override _writev(\n data: WritevChunk[],\n callback: (error?: Error | null) => void\n ): void {\n const chunks = data.map(entry => entry.chunk);\n const transfers = data\n .map(entry => toTransferable(entry.chunk))\n .filter((value): value is Transferable => Boolean(value));\n\n this[kPort].postMessage(chunks, transfers);\n callback();\n }\n\n public override _final(callback: (error?: Error | null) => void): void {\n this[kPort].postMessage(null);\n callback();\n }\n\n public override _destroy(\n error: Error | null,\n callback: (error?: Error | null) => void\n ): void {\n this[kPort].close(() => {\n this[kPort].onmessage = null;\n callback(error);\n });\n }\n\n public unref(): this {\n this[kPort].unref();\n return this;\n }\n\n public ref(): this {\n this[kPort].ref();\n return this;\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"stream.mjs","names":[],"sources":["../../src/helpers/stream.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type {\n DuplexOptions,\n ReadableOptions,\n WritableOptions\n} from \"node:stream\";\nimport { Duplex, Readable, Writable } from \"node:stream\";\nimport type { MessagePort, Transferable } from \"node:worker_threads\";\n\nconst kPort = Symbol(\"kPort\");\n\ntype PortLike = MessagePort & {\n close: (callback?: () => void) => void;\n};\n\ninterface WritevChunk {\n chunk: unknown;\n encoding: BufferEncoding;\n}\n\nfunction toTransferable(chunk: unknown): Transferable | undefined {\n if (ArrayBuffer.isView(chunk)) {\n return chunk.buffer instanceof ArrayBuffer ? chunk.buffer : undefined;\n }\n\n if (chunk instanceof ArrayBuffer) {\n return chunk;\n }\n\n return undefined;\n}\n\nexport class MessagePortWritable extends Writable {\n private [kPort]: PortLike;\n\n public constructor(port: MessagePort, options?: WritableOptions) {\n super(options);\n this[kPort] = port;\n }\n\n public override _write(\n chunk: unknown,\n _encoding: BufferEncoding,\n callback: (error?: Error | null) => void\n ): void {\n const transfer = toTransferable(chunk);\n this[kPort].postMessage(chunk, transfer ? [transfer] : []);\n callback();\n }\n\n public override _writev(\n data: WritevChunk[],\n callback: (error?: Error | null) => void\n ): void {\n const chunks = data.map(entry => entry.chunk);\n const transfers = data\n .map(entry => toTransferable(entry.chunk))\n .filter((value): value is Transferable => Boolean(value));\n\n this[kPort].postMessage(chunks, transfers);\n callback();\n }\n\n public override _final(callback: (error?: Error | null) => void): void {\n this[kPort].postMessage(null);\n callback();\n }\n\n public override _destroy(\n error: Error | null,\n callback: (error?: Error | null) => void\n ): void {\n this[kPort].close(() => callback(error));\n }\n\n public unref(): this {\n this[kPort].unref();\n return this;\n }\n\n public ref(): this {\n this[kPort].ref();\n return this;\n }\n}\n\nexport class MessagePortReadable extends Readable {\n private [kPort]: PortLike;\n\n public constructor(port: MessagePort, options?: ReadableOptions) {\n super(options);\n this[kPort] = port;\n port.onmessage = ({ data }) => {\n this.push(data);\n };\n }\n\n public override _read(_size: number): void {\n this[kPort].start();\n }\n\n public override _destroy(\n error: Error | null,\n callback: (error?: Error | null) => void\n ): void {\n this[kPort].close(() => {\n this[kPort].onmessage = null;\n callback(error);\n });\n }\n\n public unref(): this {\n this[kPort].unref();\n return this;\n }\n\n public ref(): this {\n this[kPort].ref();\n return this;\n }\n}\n\nexport interface MessagePortDuplexOptions extends DuplexOptions {\n onActivityAbort?: () => void;\n}\n\nexport class MessagePortDuplex extends Duplex {\n private [kPort]: PortLike;\n\n private _activityAbortHandler?: () => void;\n\n public constructor(port: MessagePort, options?: MessagePortDuplexOptions) {\n super(options);\n this[kPort] = port;\n this._activityAbortHandler = options?.onActivityAbort;\n\n port.onmessage = ({ data }) => {\n this.push(data);\n };\n }\n\n public override _read(_size: number): void {\n this[kPort].start();\n }\n\n public override _write(\n chunk: unknown,\n _encoding: BufferEncoding,\n callback: (error?: Error | null) => void\n ): void {\n if (this._activityAbortHandler) {\n this._activityAbortHandler();\n }\n const transfer = toTransferable(chunk);\n this[kPort].postMessage(chunk, transfer ? [transfer] : []);\n callback();\n }\n\n public override _writev(\n data: WritevChunk[],\n callback: (error?: Error | null) => void\n ): void {\n const chunks = data.map(entry => entry.chunk);\n const transfers = data\n .map(entry => toTransferable(entry.chunk))\n .filter((value): value is Transferable => Boolean(value));\n\n this[kPort].postMessage(chunks, transfers);\n callback();\n }\n\n public override _final(callback: (error?: Error | null) => void): void {\n this[kPort].postMessage(null);\n callback();\n }\n\n public override _destroy(\n error: Error | null,\n callback: (error?: Error | null) => void\n ): void {\n this[kPort].close(() => {\n this[kPort].onmessage = null;\n callback(error);\n });\n }\n\n public unref(): this {\n this[kPort].unref();\n return this;\n }\n\n public ref(): this {\n this[kPort].ref();\n return this;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const require_helpers_stream = require('./stream.cjs');
|
|
2
|
+
let vitest = require("vitest");
|
|
3
|
+
|
|
4
|
+
//#region src/helpers/stream.test.ts
|
|
5
|
+
(0, vitest.describe)("base/engine/src/helpers/stream.ts", () => {
|
|
6
|
+
(0, vitest.it)("loads module exports", () => {
|
|
7
|
+
(0, vitest.expect)(require_helpers_stream.stream_exports).toBeDefined();
|
|
8
|
+
(0, vitest.expect)(typeof require_helpers_stream.stream_exports).toBe("object");
|
|
9
|
+
});
|
|
10
|
+
(0, vitest.it)("has at least one runtime export", () => {
|
|
11
|
+
(0, vitest.expect)(Object.keys(require_helpers_stream.stream_exports).length).toBeGreaterThan(0);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { t as stream_exports } from "./stream.mjs";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
|
|
4
|
+
//#region src/helpers/stream.test.ts
|
|
5
|
+
describe("base/engine/src/helpers/stream.ts", () => {
|
|
6
|
+
it("loads module exports", () => {
|
|
7
|
+
expect(stream_exports).toBeDefined();
|
|
8
|
+
expect(typeof stream_exports).toBe("object");
|
|
9
|
+
});
|
|
10
|
+
it("has at least one runtime export", () => {
|
|
11
|
+
expect(Object.keys(stream_exports).length).toBeGreaterThan(0);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { };
|
|
17
|
+
//# sourceMappingURL=stream.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.test.mjs","names":["moduleExports"],"sources":["../../src/helpers/stream.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport * as moduleExports from \"./stream\";\n\ndescribe(\"base/engine/src/helpers/stream.ts\", () => {\n it(\"loads module exports\", () => {\n expect(moduleExports).toBeDefined();\n expect(typeof moduleExports).toBe(\"object\");\n });\n\n it(\"has at least one runtime export\", () => {\n expect(Object.keys(moduleExports).length).toBeGreaterThan(0);\n });\n});\n"],"mappings":";;;;AAGA,SAAS,2CAA2C;CAClD,GAAG,8BAA8B;EAC/B,OAAOA,cAAa,EAAE,YAAY;EAClC,OAAO,OAAOA,cAAa,EAAE,KAAK,QAAQ;CAC5C,CAAC;CAED,GAAG,yCAAyC;EAC1C,OAAO,OAAO,KAAKA,cAAa,EAAE,MAAM,EAAE,gBAAgB,CAAC;CAC7D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const require_helpers_type_checks = require('./type-checks.cjs');
|
|
2
|
+
let vitest = require("vitest");
|
|
3
|
+
|
|
4
|
+
//#region src/helpers/type-checks.test.ts
|
|
5
|
+
(0, vitest.describe)("isEngineExecutionOptions", () => {
|
|
6
|
+
(0, vitest.it)("returns true when channel property is present", () => {
|
|
7
|
+
(0, vitest.expect)(require_helpers_type_checks.isEngineExecutionOptions({ channel: "some-channel" })).toBe(true);
|
|
8
|
+
});
|
|
9
|
+
(0, vitest.it)("returns false when channel property is absent", () => {
|
|
10
|
+
(0, vitest.expect)(require_helpers_type_checks.isEngineExecutionOptions({ cwd: "/some/path" })).toBe(false);
|
|
11
|
+
});
|
|
12
|
+
(0, vitest.it)("returns false for an empty object", () => {
|
|
13
|
+
(0, vitest.expect)(require_helpers_type_checks.isEngineExecutionOptions({})).toBe(false);
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
(0, vitest.describe)("isApiExecutionOptions", () => {
|
|
17
|
+
(0, vitest.it)("returns true when channel property is absent", () => {
|
|
18
|
+
(0, vitest.expect)(require_helpers_type_checks.isApiExecutionOptions({ cwd: "/some/path" })).toBe(true);
|
|
19
|
+
});
|
|
20
|
+
(0, vitest.it)("returns false when channel property is present", () => {
|
|
21
|
+
(0, vitest.expect)(require_helpers_type_checks.isApiExecutionOptions({ channel: "some-channel" })).toBe(false);
|
|
22
|
+
});
|
|
23
|
+
(0, vitest.it)("returns true for an empty object", () => {
|
|
24
|
+
(0, vitest.expect)(require_helpers_type_checks.isApiExecutionOptions({})).toBe(true);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { isApiExecutionOptions, isEngineExecutionOptions } from "./type-checks.mjs";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
|
|
4
|
+
//#region src/helpers/type-checks.test.ts
|
|
5
|
+
describe("isEngineExecutionOptions", () => {
|
|
6
|
+
it("returns true when channel property is present", () => {
|
|
7
|
+
expect(isEngineExecutionOptions({ channel: "some-channel" })).toBe(true);
|
|
8
|
+
});
|
|
9
|
+
it("returns false when channel property is absent", () => {
|
|
10
|
+
expect(isEngineExecutionOptions({ cwd: "/some/path" })).toBe(false);
|
|
11
|
+
});
|
|
12
|
+
it("returns false for an empty object", () => {
|
|
13
|
+
expect(isEngineExecutionOptions({})).toBe(false);
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
describe("isApiExecutionOptions", () => {
|
|
17
|
+
it("returns true when channel property is absent", () => {
|
|
18
|
+
expect(isApiExecutionOptions({ cwd: "/some/path" })).toBe(true);
|
|
19
|
+
});
|
|
20
|
+
it("returns false when channel property is present", () => {
|
|
21
|
+
expect(isApiExecutionOptions({ channel: "some-channel" })).toBe(false);
|
|
22
|
+
});
|
|
23
|
+
it("returns true for an empty object", () => {
|
|
24
|
+
expect(isApiExecutionOptions({})).toBe(true);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
export { };
|
|
30
|
+
//# sourceMappingURL=type-checks.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-checks.test.mjs","names":[],"sources":["../../src/helpers/type-checks.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { isApiExecutionOptions, isEngineExecutionOptions } from \"./type-checks\";\n\ndescribe(\"isEngineExecutionOptions\", () => {\n it(\"returns true when channel property is present\", () => {\n const options = { channel: \"some-channel\" } as any;\n expect(isEngineExecutionOptions(options)).toBe(true);\n });\n\n it(\"returns false when channel property is absent\", () => {\n const options = { cwd: \"/some/path\" } as any;\n expect(isEngineExecutionOptions(options)).toBe(false);\n });\n\n it(\"returns false for an empty object\", () => {\n expect(isEngineExecutionOptions({} as any)).toBe(false);\n });\n});\n\ndescribe(\"isApiExecutionOptions\", () => {\n it(\"returns true when channel property is absent\", () => {\n const options = { cwd: \"/some/path\" } as any;\n expect(isApiExecutionOptions(options)).toBe(true);\n });\n\n it(\"returns false when channel property is present\", () => {\n const options = { channel: \"some-channel\" } as any;\n expect(isApiExecutionOptions(options)).toBe(false);\n });\n\n it(\"returns true for an empty object\", () => {\n expect(isApiExecutionOptions({} as any)).toBe(true);\n });\n});\n"],"mappings":";;;;AAGA,SAAS,kCAAkC;CACzC,GAAG,uDAAuD;EAExD,OAAO,yBAAyB,EADd,SAAS,eACW,CAAC,CAAC,EAAE,KAAK,IAAI;CACrD,CAAC;CAED,GAAG,uDAAuD;EAExD,OAAO,yBAAyB,EADd,KAAK,aACe,CAAC,CAAC,EAAE,KAAK,KAAK;CACtD,CAAC;CAED,GAAG,2CAA2C;EAC5C,OAAO,yBAAyB,CAAC,CAAQ,CAAC,EAAE,KAAK,KAAK;CACxD,CAAC;AACH,CAAC;AAED,SAAS,+BAA+B;CACtC,GAAG,sDAAsD;EAEvD,OAAO,sBAAsB,EADX,KAAK,aACY,CAAC,CAAC,EAAE,KAAK,IAAI;CAClD,CAAC;CAED,GAAG,wDAAwD;EAEzD,OAAO,sBAAsB,EADX,SAAS,eACQ,CAAC,CAAC,EAAE,KAAK,KAAK;CACnD,CAAC;CAED,GAAG,0CAA0C;EAC3C,OAAO,sBAAsB,CAAC,CAAQ,CAAC,EAAE,KAAK,IAAI;CACpD,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-CBobV6Wm.d.mts","names":[],"sources":["../src/helpers/create-api.ts","../src/helpers/type-checks.ts","../src/types/api.ts"],"mappings":";;;;;;;;;AAoDA;;;;iBAAgB,SAAA,kBACG,gBAAA,CAAiB,oBAAA,EAAsB,mBAAA,IACtD,gBAAA,CAAiB,oBAAA,EAAsB,mBAAA,oBACxB,gBAAA,GAAmB,gBAAA,oBAClB,MAAA,UAAgB,OAAA,EAAS,QAAA,KAAa,OAAA,UACtD,MAAA,UAAgB,OAAA,EAAS,QAAA,KAAa,OAAA,
|
|
1
|
+
{"version":3,"file":"index-CBobV6Wm.d.mts","names":[],"sources":["../src/helpers/create-api.ts","../src/helpers/type-checks.ts","../src/types/api.ts"],"mappings":";;;;;;;;;AAoDA;;;;iBAAgB,SAAA,kBACG,gBAAA,CAAiB,oBAAA,EAAsB,mBAAA,IACtD,gBAAA,CAAiB,oBAAA,EAAsB,mBAAA,oBACxB,gBAAA,GAAmB,gBAAA,oBAClB,MAAA,UAAgB,OAAA,EAAS,QAAA,KAAa,OAAA,UACtD,MAAA,UAAgB,OAAA,EAAS,QAAA,KAAa,OAAA,SAExC,QAAA,EAAU,SAAA,EACV,YAAA,GACI,WAAA,CAAY,YAAA,MACV,IAAA,EAAM,YAAA,KAAiB,YAAA,CAAa,YAAA,MAE1C,MAAA,EAAQ,kBAAA,CAAmB,QAAA,QAAgB,SAAA,eACxC,OAAA;;;;;;;;;iBCvCW,wBAAA,CACd,OAAA,EAAS,mBAAA,GAAsB,sBAAA,GAC9B,OAAA,IAAW,sBAAA;ADwBd;;;;;;AAAA,iBCdgB,qBAAA,CACd,OAAA,EAAS,mBAAA,GAAsB,sBAAA,GAC9B,OAAA,IAAW,mBAAA;;;;;;;ADYd;;UEViB,kBAAA;EFWmB;;;;;;;;EEFlC,OAAA,GAAU,YAAA,EAAc,mBAAA,KAAwB,OAAA;EFKQ;;;;;;;;EEKxD,KAAA,GAAQ,YAAA,EAAc,iBAAA,KAAsB,OAAA;EFCF;;;;;;;;;EEU1C,MAAA,GAAS,YAAA,EAAc,kBAAA,KAAuB,OAAA;EFnBZ;;;;;;;;;EE8BlC,KAAA,GAAQ,YAAA,EAAc,iBAAA,KAAsB,OAAA;EF3BD;;;;;;EEmC3C,IAAA,GAAO,YAAA,EAAc,gBAAA,KAAqB,OAAA;EFhChC;;;;;;EEwCV,IAAA,GAAO,YAAA,EAAc,gBAAA,KAAqB,OAAA;EFrCA;;;;;;;;AAGhC;EE6CV,KAAA,GAAQ,YAAA,EAAc,iBAAA,KAAsB,OAAA;;;ADpF9C;;;;EC4FE,IAAA,GAAO,YAAA,EAAc,gBAAA,KAAqB,OAAA;ED1F9B;;;;;;;;ECoGZ,MAAA,GAAS,YAAA,EAAc,kBAAA,KAAuB,OAAA;EDpGZ;AAUpC;;;;;;;ECoGE,QAAA,QAAgB,OAAA;AAAA;AAAA,UAGD,kBAAA,kBACE,gBAAA,GAAmB,gBAAA;EDvGpC;;;EC6GA,OAAA,EAAS,QAAA;ED5GsB;;;ECiH/B,OAAA,EAAS,QAAA;EA/GM;;;EAoHf,YAAA,EAAc,YAAA;AAAA;AAAA,UAGC,2BAAA;EACf,OAAA,GACE,OAAA,UACA,OAAA,EAAS,sBAAA,EACT,YAAA,EAAc,YAAA,KACX,OAAA;EACL,QAAA,QAAgB,OAAA;AAAA;;;;UAMD,MAAA,SAAe,kBAAA;EA1ET;;;EA8ErB,OAAA,EAAS,aAAA;EA3DY;;;EAgErB,GAAA,EAAK,2BAAA;AAAA;AAAA,KAGK,YAAA,GAAe,UAAA,QAClB,SAAA,CACL,gBAAA,CAAiB,oBAAA,EAAsB,mBAAA,GACvC,gBAAA"}
|