@milaboratories/pl-model-common 1.31.1 → 1.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_rolldown/runtime.cjs +7 -13
- package/dist/author_marker.d.ts.map +1 -0
- package/dist/base32_encode.cjs +1 -2
- package/dist/base32_encode.cjs.map +1 -1
- package/dist/base32_encode.js +1 -1
- package/dist/base32_encode.js.map +1 -1
- package/dist/base64.cjs +1 -2
- package/dist/base64.cjs.map +1 -1
- package/dist/base64.d.ts.map +1 -0
- package/dist/base64.js +1 -1
- package/dist/block_state.d.ts.map +1 -0
- package/dist/bmodel/block_config.cjs +1 -2
- package/dist/bmodel/block_config.cjs.map +1 -1
- package/dist/bmodel/block_config.d.ts +0 -1
- package/dist/bmodel/block_config.d.ts.map +1 -0
- package/dist/bmodel/block_config.js +1 -1
- package/dist/bmodel/block_config.js.map +1 -1
- package/dist/bmodel/code.cjs +2 -3
- package/dist/bmodel/code.cjs.map +1 -1
- package/dist/bmodel/code.d.ts +0 -1
- package/dist/bmodel/code.d.ts.map +1 -0
- package/dist/bmodel/code.js +1 -2
- package/dist/bmodel/code.js.map +1 -1
- package/dist/bmodel/container.d.ts.map +1 -0
- package/dist/bmodel/index.cjs +3 -3
- package/dist/bmodel/index.js +3 -3
- package/dist/bmodel/normalization.cjs +2 -4
- package/dist/bmodel/normalization.cjs.map +1 -1
- package/dist/bmodel/normalization.d.ts.map +1 -0
- package/dist/bmodel/normalization.js +2 -3
- package/dist/bmodel/normalization.js.map +1 -1
- package/dist/bmodel/types.d.ts.map +1 -0
- package/dist/branding.d.ts.map +1 -0
- package/dist/common_types.d.ts.map +1 -0
- package/dist/driver_kit.d.ts +0 -1
- package/dist/driver_kit.d.ts.map +1 -0
- package/dist/drivers/ChunkedStreamReader.cjs +1 -2
- package/dist/drivers/ChunkedStreamReader.cjs.map +1 -1
- package/dist/drivers/ChunkedStreamReader.d.ts.map +1 -0
- package/dist/drivers/ChunkedStreamReader.js +1 -1
- package/dist/drivers/ChunkedStreamReader.js.map +1 -1
- package/dist/drivers/blob.cjs +2 -3
- package/dist/drivers/blob.cjs.map +1 -1
- package/dist/drivers/blob.d.ts.map +1 -0
- package/dist/drivers/blob.js +1 -2
- package/dist/drivers/blob.js.map +1 -1
- package/dist/drivers/index.cjs +18 -18
- package/dist/drivers/index.d.ts +5 -6
- package/dist/drivers/index.js +17 -17
- package/dist/drivers/interfaces.d.ts.map +1 -0
- package/dist/drivers/log.cjs +11 -4
- package/dist/drivers/log.cjs.map +1 -1
- package/dist/drivers/log.d.ts +14 -7
- package/dist/drivers/log.d.ts.map +1 -0
- package/dist/drivers/log.js +11 -4
- package/dist/drivers/log.js.map +1 -1
- package/dist/drivers/ls.cjs +2 -3
- package/dist/drivers/ls.cjs.map +1 -1
- package/dist/drivers/ls.d.ts +0 -2
- package/dist/drivers/ls.d.ts.map +1 -0
- package/dist/drivers/ls.js +1 -2
- package/dist/drivers/ls.js.map +1 -1
- package/dist/drivers/pframe/column_filter.d.ts.map +1 -0
- package/dist/drivers/pframe/data_info.cjs +2 -3
- package/dist/drivers/pframe/data_info.cjs.map +1 -1
- package/dist/drivers/pframe/data_info.d.ts.map +1 -0
- package/dist/drivers/pframe/data_info.js +1 -2
- package/dist/drivers/pframe/data_info.js.map +1 -1
- package/dist/drivers/pframe/data_types.cjs +4 -5
- package/dist/drivers/pframe/data_types.cjs.map +1 -1
- package/dist/drivers/pframe/data_types.d.ts.map +1 -0
- package/dist/drivers/pframe/data_types.js +3 -4
- package/dist/drivers/pframe/data_types.js.map +1 -1
- package/dist/drivers/pframe/driver.cjs +1 -2
- package/dist/drivers/pframe/driver.cjs.map +1 -1
- package/dist/drivers/pframe/driver.d.ts +0 -1
- package/dist/drivers/pframe/driver.d.ts.map +1 -0
- package/dist/drivers/pframe/driver.js +1 -1
- package/dist/drivers/pframe/filter_spec.d.ts.map +1 -0
- package/dist/drivers/pframe/find_columns.d.ts.map +1 -0
- package/dist/drivers/pframe/index.cjs +15 -15
- package/dist/drivers/pframe/index.d.ts +4 -6
- package/dist/drivers/pframe/index.js +12 -12
- package/dist/drivers/pframe/linker_columns.cjs +3 -4
- package/dist/drivers/pframe/linker_columns.cjs.map +1 -1
- package/dist/drivers/pframe/linker_columns.d.ts.map +1 -0
- package/dist/drivers/pframe/linker_columns.js +1 -2
- package/dist/drivers/pframe/linker_columns.js.map +1 -1
- package/dist/drivers/pframe/pframe.d.ts +0 -2
- package/dist/drivers/pframe/pframe.d.ts.map +1 -0
- package/dist/drivers/pframe/query/index.cjs +1 -1
- package/dist/drivers/pframe/query/index.d.ts +2 -2
- package/dist/drivers/pframe/query/index.js +1 -1
- package/dist/drivers/pframe/query/query_common.d.ts +39 -4
- package/dist/drivers/pframe/query/query_common.d.ts.map +1 -0
- package/dist/drivers/pframe/query/query_data.d.ts +18 -5
- package/dist/drivers/pframe/query/query_data.d.ts.map +1 -0
- package/dist/drivers/pframe/query/query_spec.d.ts +14 -6
- package/dist/drivers/pframe/query/query_spec.d.ts.map +1 -0
- package/dist/drivers/pframe/query/utils.cjs +30 -4
- package/dist/drivers/pframe/query/utils.cjs.map +1 -1
- package/dist/drivers/pframe/query/utils.d.ts.map +1 -0
- package/dist/drivers/pframe/query/utils.js +28 -2
- package/dist/drivers/pframe/query/utils.js.map +1 -1
- package/dist/drivers/pframe/spec/anchored.cjs +4 -5
- package/dist/drivers/pframe/spec/anchored.cjs.map +1 -1
- package/dist/drivers/pframe/spec/anchored.d.ts +3 -3
- package/dist/drivers/pframe/spec/anchored.d.ts.map +1 -0
- package/dist/drivers/pframe/spec/anchored.js +1 -2
- package/dist/drivers/pframe/spec/anchored.js.map +1 -1
- package/dist/drivers/pframe/spec/filtered_column.cjs +1 -2
- package/dist/drivers/pframe/spec/filtered_column.cjs.map +1 -1
- package/dist/drivers/pframe/spec/filtered_column.d.ts.map +1 -0
- package/dist/drivers/pframe/spec/filtered_column.js +1 -1
- package/dist/drivers/pframe/spec/ids.cjs +2 -3
- package/dist/drivers/pframe/spec/ids.cjs.map +1 -1
- package/dist/drivers/pframe/spec/ids.d.ts +0 -2
- package/dist/drivers/pframe/spec/ids.d.ts.map +1 -0
- package/dist/drivers/pframe/spec/ids.js +1 -2
- package/dist/drivers/pframe/spec/ids.js.map +1 -1
- package/dist/drivers/pframe/spec/index.cjs +6 -6
- package/dist/drivers/pframe/spec/index.d.ts +1 -1
- package/dist/drivers/pframe/spec/index.js +6 -6
- package/dist/drivers/pframe/spec/native_id.cjs +4 -5
- package/dist/drivers/pframe/spec/native_id.cjs.map +1 -1
- package/dist/drivers/pframe/spec/native_id.d.ts +0 -2
- package/dist/drivers/pframe/spec/native_id.d.ts.map +1 -0
- package/dist/drivers/pframe/spec/native_id.js +1 -2
- package/dist/drivers/pframe/spec/native_id.js.map +1 -1
- package/dist/drivers/pframe/spec/selectors.cjs +3 -4
- package/dist/drivers/pframe/spec/selectors.cjs.map +1 -1
- package/dist/drivers/pframe/spec/selectors.d.ts +0 -2
- package/dist/drivers/pframe/spec/selectors.d.ts.map +1 -0
- package/dist/drivers/pframe/spec/selectors.js +1 -2
- package/dist/drivers/pframe/spec/selectors.js.map +1 -1
- package/dist/drivers/pframe/spec/spec.cjs +12 -8
- package/dist/drivers/pframe/spec/spec.cjs.map +1 -1
- package/dist/drivers/pframe/spec/spec.d.ts +15 -3
- package/dist/drivers/pframe/spec/spec.d.ts.map +1 -0
- package/dist/drivers/pframe/spec/spec.js +9 -5
- package/dist/drivers/pframe/spec/spec.js.map +1 -1
- package/dist/drivers/pframe/spec_driver.d.ts +37 -4
- package/dist/drivers/pframe/spec_driver.d.ts.map +1 -0
- package/dist/drivers/pframe/table.d.ts.map +1 -0
- package/dist/drivers/pframe/table_calculate.cjs +6 -7
- package/dist/drivers/pframe/table_calculate.cjs.map +1 -1
- package/dist/drivers/pframe/table_calculate.d.ts +0 -2
- package/dist/drivers/pframe/table_calculate.d.ts.map +1 -0
- package/dist/drivers/pframe/table_calculate.js +1 -2
- package/dist/drivers/pframe/table_calculate.js.map +1 -1
- package/dist/drivers/pframe/table_common.cjs +1 -2
- package/dist/drivers/pframe/table_common.cjs.map +1 -1
- package/dist/drivers/pframe/table_common.d.ts +0 -2
- package/dist/drivers/pframe/table_common.d.ts.map +1 -0
- package/dist/drivers/pframe/table_common.js +1 -1
- package/dist/drivers/pframe/unique_values.d.ts +0 -2
- package/dist/drivers/pframe/unique_values.d.ts.map +1 -0
- package/dist/drivers/upload.d.ts.map +1 -0
- package/dist/drivers/urls.cjs +1 -2
- package/dist/drivers/urls.cjs.map +1 -1
- package/dist/drivers/urls.d.ts.map +1 -0
- package/dist/drivers/urls.js +1 -1
- package/dist/errors.cjs +1 -2
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/flags/block_flags.cjs +1 -2
- package/dist/flags/block_flags.cjs.map +1 -1
- package/dist/flags/block_flags.d.ts +0 -2
- package/dist/flags/block_flags.d.ts.map +1 -0
- package/dist/flags/block_flags.js +1 -1
- package/dist/flags/flag_utils.cjs +1 -2
- package/dist/flags/flag_utils.cjs.map +1 -1
- package/dist/flags/flag_utils.d.ts.map +1 -0
- package/dist/flags/flag_utils.js +1 -1
- package/dist/flags/flag_utils.js.map +1 -1
- package/dist/flags/type_utils.d.ts.map +1 -0
- package/dist/httpAuth.cjs +1 -2
- package/dist/httpAuth.cjs.map +1 -1
- package/dist/httpAuth.d.ts.map +1 -0
- package/dist/httpAuth.js +1 -1
- package/dist/index.cjs +47 -47
- package/dist/index.d.ts +6 -11
- package/dist/index.js +2 -3
- package/dist/json.cjs +2 -3
- package/dist/json.cjs.map +1 -1
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +1 -2
- package/dist/json.js.map +1 -1
- package/dist/navigation.cjs +1 -2
- package/dist/navigation.cjs.map +1 -1
- package/dist/navigation.d.ts.map +1 -0
- package/dist/navigation.js +1 -1
- package/dist/plid.cjs +6 -7
- package/dist/plid.cjs.map +1 -1
- package/dist/plid.d.ts.map +1 -0
- package/dist/plid.js +4 -5
- package/dist/plid.js.map +1 -1
- package/dist/pool/entry.d.ts.map +1 -0
- package/dist/pool/query.cjs +2 -3
- package/dist/pool/query.cjs.map +1 -1
- package/dist/pool/query.d.ts +0 -1
- package/dist/pool/query.d.ts.map +1 -0
- package/dist/pool/query.js +1 -2
- package/dist/pool/query.js.map +1 -1
- package/dist/pool/spec.cjs +2 -3
- package/dist/pool/spec.cjs.map +1 -1
- package/dist/pool/spec.d.ts +0 -2
- package/dist/pool/spec.d.ts.map +1 -0
- package/dist/pool/spec.js +1 -2
- package/dist/pool/spec.js.map +1 -1
- package/dist/pool_entry.cjs +1 -2
- package/dist/pool_entry.cjs.map +1 -1
- package/dist/pool_entry.d.ts.map +1 -0
- package/dist/pool_entry.js +1 -1
- package/dist/pool_entry.js.map +1 -1
- package/dist/ref.cjs +2 -3
- package/dist/ref.cjs.map +1 -1
- package/dist/ref.d.ts.map +1 -0
- package/dist/ref.js +1 -2
- package/dist/ref.js.map +1 -1
- package/dist/resource_types.cjs +1 -2
- package/dist/resource_types.cjs.map +1 -1
- package/dist/resource_types.d.ts.map +1 -0
- package/dist/resource_types.js +1 -1
- package/dist/services/index.cjs +6 -6
- package/dist/services/index.js +6 -6
- package/dist/services/service_capabilities.cjs +2 -3
- package/dist/services/service_capabilities.cjs.map +1 -1
- package/dist/services/service_capabilities.d.ts.map +1 -0
- package/dist/services/service_capabilities.js +1 -2
- package/dist/services/service_capabilities.js.map +1 -1
- package/dist/services/service_declarations.cjs +2 -3
- package/dist/services/service_declarations.cjs.map +1 -1
- package/dist/services/service_declarations.d.ts +0 -2
- package/dist/services/service_declarations.d.ts.map +1 -0
- package/dist/services/service_declarations.js +1 -2
- package/dist/services/service_declarations.js.map +1 -1
- package/dist/services/service_injector_factory.cjs +1 -2
- package/dist/services/service_injector_factory.cjs.map +1 -1
- package/dist/services/service_injector_factory.d.ts.map +1 -0
- package/dist/services/service_injector_factory.js +1 -1
- package/dist/services/service_injectors.cjs +4 -5
- package/dist/services/service_injectors.cjs.map +1 -1
- package/dist/services/service_injectors.d.ts.map +1 -0
- package/dist/services/service_injectors.js +1 -2
- package/dist/services/service_injectors.js.map +1 -1
- package/dist/services/service_registry.cjs +2 -3
- package/dist/services/service_registry.cjs.map +1 -1
- package/dist/services/service_registry.d.ts.map +1 -0
- package/dist/services/service_registry.js +1 -2
- package/dist/services/service_registry.js.map +1 -1
- package/dist/services/service_types.cjs +2 -3
- package/dist/services/service_types.cjs.map +1 -1
- package/dist/services/service_types.d.ts +7 -7
- package/dist/services/service_types.d.ts.map +1 -0
- package/dist/services/service_types.js +1 -2
- package/dist/services/service_types.js.map +1 -1
- package/dist/utag.d.ts.map +1 -0
- package/dist/util.cjs +1 -2
- package/dist/util.cjs.map +1 -1
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +1 -1
- package/dist/value_or_error.cjs +1 -2
- package/dist/value_or_error.cjs.map +1 -1
- package/dist/value_or_error.d.ts.map +1 -0
- package/dist/value_or_error.js +1 -1
- package/package.json +9 -9
- package/src/drivers/log.ts +21 -7
- package/src/drivers/pframe/query/query_common.ts +39 -0
- package/src/drivers/pframe/query/query_data.ts +20 -0
- package/src/drivers/pframe/query/query_spec.ts +17 -0
- package/src/drivers/pframe/query/utils.test.ts +37 -0
- package/src/drivers/pframe/query/utils.ts +25 -0
- package/src/drivers/pframe/spec/anchored.ts +8 -3
- package/src/drivers/pframe/spec/spec.ts +19 -6
- package/src/drivers/pframe/spec_driver.ts +42 -1
- package/src/services/service_types.ts +1 -6
package/dist/pool_entry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool_entry.js","names":[],"sources":["../src/pool_entry.ts"],"sourcesContent":["export interface PoolEntry<K extends string = string, R extends {} = {}> extends Disposable {\n /** Resource key, calculated using provided `calculateParamsKey` function */\n readonly key: K;\n\n /** Resource itself created by `createNewResource` function */\n readonly resource: R;\n\n /**\n * Release the reference. Idempotent.\n * Same as `[Symbol.dispose]()` — provided as a named function\n * for use in callbacks (e.g. `addOnDestroy(entry.unref)`).\n */\n readonly unref: () => void;\n}\n\n/**\n * Wraps a PoolEntry for use with `using`. Auto-calls `unref()` at end of scope\n * unless `keep()` is called to transfer ownership to the caller.\n */\nexport class PoolEntryGuard<K extends string = string, R extends {} = {}> implements Disposable {\n private kept = false;\n\n constructor(readonly entry: PoolEntry<K, R>) {}\n\n get key(): K {\n return this.entry.key;\n }\n\n get resource(): R {\n return this.entry.resource;\n }\n\n /** Disarm the guard — caller takes ownership of the entry. */\n keep(): PoolEntry<K, R> {\n this.kept = true;\n return this.entry;\n }\n\n [Symbol.dispose](): void {\n if (!this.kept) this.entry.unref();\n }\n}\n"],"mappings":";;;;;AAmBA,IAAa,iBAAb,MAAgG;CAC9F,
|
|
1
|
+
{"version":3,"file":"pool_entry.js","names":[],"sources":["../src/pool_entry.ts"],"sourcesContent":["export interface PoolEntry<K extends string = string, R extends {} = {}> extends Disposable {\n /** Resource key, calculated using provided `calculateParamsKey` function */\n readonly key: K;\n\n /** Resource itself created by `createNewResource` function */\n readonly resource: R;\n\n /**\n * Release the reference. Idempotent.\n * Same as `[Symbol.dispose]()` — provided as a named function\n * for use in callbacks (e.g. `addOnDestroy(entry.unref)`).\n */\n readonly unref: () => void;\n}\n\n/**\n * Wraps a PoolEntry for use with `using`. Auto-calls `unref()` at end of scope\n * unless `keep()` is called to transfer ownership to the caller.\n */\nexport class PoolEntryGuard<K extends string = string, R extends {} = {}> implements Disposable {\n private kept = false;\n\n constructor(readonly entry: PoolEntry<K, R>) {}\n\n get key(): K {\n return this.entry.key;\n }\n\n get resource(): R {\n return this.entry.resource;\n }\n\n /** Disarm the guard — caller takes ownership of the entry. */\n keep(): PoolEntry<K, R> {\n this.kept = true;\n return this.entry;\n }\n\n [Symbol.dispose](): void {\n if (!this.kept) this.entry.unref();\n }\n}\n"],"mappings":";;;;;AAmBA,IAAa,iBAAb,MAAgG;CAC9F,OAAe;CAEf,YAAY,OAAiC;AAAxB,OAAA,QAAA;;CAErB,IAAI,MAAS;AACX,SAAO,KAAK,MAAM;;CAGpB,IAAI,WAAc;AAChB,SAAO,KAAK,MAAM;;;CAIpB,OAAwB;AACtB,OAAK,OAAO;AACZ,SAAO,KAAK;;CAGd,CAAC,OAAO,WAAiB;AACvB,MAAI,CAAC,KAAK,KAAM,MAAK,MAAM,OAAO"}
|
package/dist/ref.cjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
require("./_virtual/_rolldown/runtime.cjs");
|
|
2
2
|
let zod = require("zod");
|
|
3
|
-
|
|
4
3
|
//#region src/ref.ts
|
|
5
4
|
const PlRef = zod.z.object({
|
|
6
5
|
__isRef: zod.z.literal(true).describe("Crucial marker for the block dependency tree reconstruction"),
|
|
@@ -60,11 +59,11 @@ function withEnrichments(ref, requireEnrichments = true) {
|
|
|
60
59
|
function plRefsEqual(ref1, ref2, ignoreEnrichments = false) {
|
|
61
60
|
return ref1.blockId === ref2.blockId && ref1.name === ref2.name && (ignoreEnrichments || ref1.requireEnrichments === ref2.requireEnrichments);
|
|
62
61
|
}
|
|
63
|
-
|
|
64
62
|
//#endregion
|
|
65
63
|
exports.PlRef = PlRef;
|
|
66
64
|
exports.createPlRef = createPlRef;
|
|
67
65
|
exports.isPlRef = isPlRef;
|
|
68
66
|
exports.plRefsEqual = plRefsEqual;
|
|
69
67
|
exports.withEnrichments = withEnrichments;
|
|
68
|
+
|
|
70
69
|
//# sourceMappingURL=ref.cjs.map
|
package/dist/ref.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref.cjs","names":["z"],"sources":["../src/ref.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const PlRef = z\n .object({\n __isRef: z\n .literal(true)\n .describe(\"Crucial marker for the block dependency tree reconstruction\"),\n blockId: z.string().describe(\"Upstream block id\"),\n name: z.string().describe(\"Name of the output provided to the upstream block's output context\"),\n requireEnrichments: z\n .literal(true)\n .optional()\n .describe(\n \"True if current block that stores this reference in its args, may need enrichments \" +\n \"for the references value originating from the blocks in between current and referenced block\",\n ),\n })\n .describe(\n \"Universal reference type, allowing to set block connections. It is crucial that \" +\n \"{@link __isRef} is present and equal to true, internal logic relies on this marker \" +\n \"to build block dependency trees.\",\n )\n .readonly();\nexport type PlRef = z.infer<typeof PlRef>;\n/** @deprecated use {@link PlRef} */\nexport type Ref = PlRef;\n\n/**\n * Type guard to check if a value is a PlRef.\n *\n * @param value - The value to check.\n * @returns True if the value is a PlRef, false otherwise.\n */\nexport function isPlRef(value: unknown): value is PlRef {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"__isRef\" in value &&\n (value as { __isRef: unknown }).__isRef === true &&\n \"blockId\" in value &&\n \"name\" in value\n );\n}\n\n/** Standard way how to communicate possible connections given specific\n * requirements for incoming data. */\nexport type Option = {\n /** Fully rendered reference to be assigned for the intended field in block's\n * args */\n readonly ref: PlRef;\n\n /** Label to be present for the user in i.e. drop-down list */\n readonly label: string;\n};\n\n/**\n * Creates a PlRef with the given blockId and name.\n *\n * @param blockId - The blockId of the reference.\n * @param name - The name of the reference.\n * @param requireEnrichments - Whether the reference requires enrichments.\n */\nexport function createPlRef(blockId: string, name: string, requireEnrichments: boolean = false) {\n if (requireEnrichments)\n return {\n __isRef: true,\n blockId,\n name,\n requireEnrichments: true,\n };\n else\n return {\n __isRef: true,\n blockId,\n name,\n };\n}\n\n/**\n * Creates a new PlRef based on an existing one, explicitly setting (default) or removing the\n * requireEnrichments property.\n *\n * @param ref - The original PlRef object.\n * @param requireEnrichments - If true, the `requireEnrichments: true` property is added\n * to the returned PlRef. If false, the `requireEnrichments` property is removed. Defaults to true.\n * @returns A new PlRef object with the `requireEnrichments` property set or removed accordingly.\n */\nexport function withEnrichments(ref: PlRef, requireEnrichments: boolean = true): PlRef {\n if (requireEnrichments)\n return {\n ...ref,\n requireEnrichments: true,\n };\n else {\n const { requireEnrichments: _, ...rest } = ref;\n return rest;\n }\n}\n\n/** Compare two PlRefs and returns true if they are qual */\nexport function plRefsEqual(ref1: PlRef, ref2: PlRef, ignoreEnrichments: boolean = false) {\n return (\n ref1.blockId === ref2.blockId &&\n ref1.name === ref2.name &&\n (ignoreEnrichments || ref1.requireEnrichments === ref2.requireEnrichments)\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ref.cjs","names":["z"],"sources":["../src/ref.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const PlRef = z\n .object({\n __isRef: z\n .literal(true)\n .describe(\"Crucial marker for the block dependency tree reconstruction\"),\n blockId: z.string().describe(\"Upstream block id\"),\n name: z.string().describe(\"Name of the output provided to the upstream block's output context\"),\n requireEnrichments: z\n .literal(true)\n .optional()\n .describe(\n \"True if current block that stores this reference in its args, may need enrichments \" +\n \"for the references value originating from the blocks in between current and referenced block\",\n ),\n })\n .describe(\n \"Universal reference type, allowing to set block connections. It is crucial that \" +\n \"{@link __isRef} is present and equal to true, internal logic relies on this marker \" +\n \"to build block dependency trees.\",\n )\n .readonly();\nexport type PlRef = z.infer<typeof PlRef>;\n/** @deprecated use {@link PlRef} */\nexport type Ref = PlRef;\n\n/**\n * Type guard to check if a value is a PlRef.\n *\n * @param value - The value to check.\n * @returns True if the value is a PlRef, false otherwise.\n */\nexport function isPlRef(value: unknown): value is PlRef {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"__isRef\" in value &&\n (value as { __isRef: unknown }).__isRef === true &&\n \"blockId\" in value &&\n \"name\" in value\n );\n}\n\n/** Standard way how to communicate possible connections given specific\n * requirements for incoming data. */\nexport type Option = {\n /** Fully rendered reference to be assigned for the intended field in block's\n * args */\n readonly ref: PlRef;\n\n /** Label to be present for the user in i.e. drop-down list */\n readonly label: string;\n};\n\n/**\n * Creates a PlRef with the given blockId and name.\n *\n * @param blockId - The blockId of the reference.\n * @param name - The name of the reference.\n * @param requireEnrichments - Whether the reference requires enrichments.\n */\nexport function createPlRef(blockId: string, name: string, requireEnrichments: boolean = false) {\n if (requireEnrichments)\n return {\n __isRef: true,\n blockId,\n name,\n requireEnrichments: true,\n };\n else\n return {\n __isRef: true,\n blockId,\n name,\n };\n}\n\n/**\n * Creates a new PlRef based on an existing one, explicitly setting (default) or removing the\n * requireEnrichments property.\n *\n * @param ref - The original PlRef object.\n * @param requireEnrichments - If true, the `requireEnrichments: true` property is added\n * to the returned PlRef. If false, the `requireEnrichments` property is removed. Defaults to true.\n * @returns A new PlRef object with the `requireEnrichments` property set or removed accordingly.\n */\nexport function withEnrichments(ref: PlRef, requireEnrichments: boolean = true): PlRef {\n if (requireEnrichments)\n return {\n ...ref,\n requireEnrichments: true,\n };\n else {\n const { requireEnrichments: _, ...rest } = ref;\n return rest;\n }\n}\n\n/** Compare two PlRefs and returns true if they are qual */\nexport function plRefsEqual(ref1: PlRef, ref2: PlRef, ignoreEnrichments: boolean = false) {\n return (\n ref1.blockId === ref2.blockId &&\n ref1.name === ref2.name &&\n (ignoreEnrichments || ref1.requireEnrichments === ref2.requireEnrichments)\n );\n}\n"],"mappings":";;;AAEA,MAAa,QAAQA,IAAAA,EAClB,OAAO;CACN,SAASA,IAAAA,EACN,QAAQ,KAAK,CACb,SAAS,8DAA8D;CAC1E,SAASA,IAAAA,EAAE,QAAQ,CAAC,SAAS,oBAAoB;CACjD,MAAMA,IAAAA,EAAE,QAAQ,CAAC,SAAS,qEAAqE;CAC/F,oBAAoBA,IAAAA,EACjB,QAAQ,KAAK,CACb,UAAU,CACV,SACC,kLAED;CACJ,CAAC,CACD,SACC,sMAGD,CACA,UAAU;;;;;;;AAWb,SAAgB,QAAQ,OAAgC;AACtD,QACE,OAAO,UAAU,YACjB,UAAU,QACV,aAAa,SACZ,MAA+B,YAAY,QAC5C,aAAa,SACb,UAAU;;;;;;;;;AAsBd,SAAgB,YAAY,SAAiB,MAAc,qBAA8B,OAAO;AAC9F,KAAI,mBACF,QAAO;EACL,SAAS;EACT;EACA;EACA,oBAAoB;EACrB;KAED,QAAO;EACL,SAAS;EACT;EACA;EACD;;;;;;;;;;;AAYL,SAAgB,gBAAgB,KAAY,qBAA8B,MAAa;AACrF,KAAI,mBACF,QAAO;EACL,GAAG;EACH,oBAAoB;EACrB;MACE;EACH,MAAM,EAAE,oBAAoB,GAAG,GAAG,SAAS;AAC3C,SAAO;;;;AAKX,SAAgB,YAAY,MAAa,MAAa,oBAA6B,OAAO;AACxF,QACE,KAAK,YAAY,KAAK,WACtB,KAAK,SAAS,KAAK,SAClB,qBAAqB,KAAK,uBAAuB,KAAK"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ref.d.ts","names":[],"sources":["../src/ref.ts"],"mappings":";;;cAEa,KAAA,EAAK,CAAA,CAAA,WAAA,CAAA,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;KAqBN,KAAA,GAAQ,CAAA,CAAE,KAAA,QAAa,KAAA;;KAEvB,GAAA,GAAM,KAAA;;;;;;;iBAQF,OAAA,CAAQ,KAAA,YAAiB,KAAA,IAAS,KAAA;;;KAatC,MAAA;;;WAGD,GAAA,EAAK,KAAA;WAGL,KAAA;AAAA;;;;;;;;iBAUK,WAAA,CAAY,OAAA,UAAiB,IAAA,UAAc,kBAAA;;;;;;;;;;;;AArC3D;;;;;AAQA;;;iBAsDgB,eAAA,CAAgB,GAAA,EAAK,KAAA,EAAO,kBAAA,aAAqC,KAAA;;iBAajE,WAAA,CAAY,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,iBAAA"}
|
package/dist/ref.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
|
|
3
2
|
//#region src/ref.ts
|
|
4
3
|
const PlRef = z.object({
|
|
5
4
|
__isRef: z.literal(true).describe("Crucial marker for the block dependency tree reconstruction"),
|
|
@@ -59,7 +58,7 @@ function withEnrichments(ref, requireEnrichments = true) {
|
|
|
59
58
|
function plRefsEqual(ref1, ref2, ignoreEnrichments = false) {
|
|
60
59
|
return ref1.blockId === ref2.blockId && ref1.name === ref2.name && (ignoreEnrichments || ref1.requireEnrichments === ref2.requireEnrichments);
|
|
61
60
|
}
|
|
62
|
-
|
|
63
61
|
//#endregion
|
|
64
62
|
export { PlRef, createPlRef, isPlRef, plRefsEqual, withEnrichments };
|
|
63
|
+
|
|
65
64
|
//# sourceMappingURL=ref.js.map
|
package/dist/ref.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref.js","names":[],"sources":["../src/ref.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const PlRef = z\n .object({\n __isRef: z\n .literal(true)\n .describe(\"Crucial marker for the block dependency tree reconstruction\"),\n blockId: z.string().describe(\"Upstream block id\"),\n name: z.string().describe(\"Name of the output provided to the upstream block's output context\"),\n requireEnrichments: z\n .literal(true)\n .optional()\n .describe(\n \"True if current block that stores this reference in its args, may need enrichments \" +\n \"for the references value originating from the blocks in between current and referenced block\",\n ),\n })\n .describe(\n \"Universal reference type, allowing to set block connections. It is crucial that \" +\n \"{@link __isRef} is present and equal to true, internal logic relies on this marker \" +\n \"to build block dependency trees.\",\n )\n .readonly();\nexport type PlRef = z.infer<typeof PlRef>;\n/** @deprecated use {@link PlRef} */\nexport type Ref = PlRef;\n\n/**\n * Type guard to check if a value is a PlRef.\n *\n * @param value - The value to check.\n * @returns True if the value is a PlRef, false otherwise.\n */\nexport function isPlRef(value: unknown): value is PlRef {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"__isRef\" in value &&\n (value as { __isRef: unknown }).__isRef === true &&\n \"blockId\" in value &&\n \"name\" in value\n );\n}\n\n/** Standard way how to communicate possible connections given specific\n * requirements for incoming data. */\nexport type Option = {\n /** Fully rendered reference to be assigned for the intended field in block's\n * args */\n readonly ref: PlRef;\n\n /** Label to be present for the user in i.e. drop-down list */\n readonly label: string;\n};\n\n/**\n * Creates a PlRef with the given blockId and name.\n *\n * @param blockId - The blockId of the reference.\n * @param name - The name of the reference.\n * @param requireEnrichments - Whether the reference requires enrichments.\n */\nexport function createPlRef(blockId: string, name: string, requireEnrichments: boolean = false) {\n if (requireEnrichments)\n return {\n __isRef: true,\n blockId,\n name,\n requireEnrichments: true,\n };\n else\n return {\n __isRef: true,\n blockId,\n name,\n };\n}\n\n/**\n * Creates a new PlRef based on an existing one, explicitly setting (default) or removing the\n * requireEnrichments property.\n *\n * @param ref - The original PlRef object.\n * @param requireEnrichments - If true, the `requireEnrichments: true` property is added\n * to the returned PlRef. If false, the `requireEnrichments` property is removed. Defaults to true.\n * @returns A new PlRef object with the `requireEnrichments` property set or removed accordingly.\n */\nexport function withEnrichments(ref: PlRef, requireEnrichments: boolean = true): PlRef {\n if (requireEnrichments)\n return {\n ...ref,\n requireEnrichments: true,\n };\n else {\n const { requireEnrichments: _, ...rest } = ref;\n return rest;\n }\n}\n\n/** Compare two PlRefs and returns true if they are qual */\nexport function plRefsEqual(ref1: PlRef, ref2: PlRef, ignoreEnrichments: boolean = false) {\n return (\n ref1.blockId === ref2.blockId &&\n ref1.name === ref2.name &&\n (ignoreEnrichments || ref1.requireEnrichments === ref2.requireEnrichments)\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ref.js","names":[],"sources":["../src/ref.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const PlRef = z\n .object({\n __isRef: z\n .literal(true)\n .describe(\"Crucial marker for the block dependency tree reconstruction\"),\n blockId: z.string().describe(\"Upstream block id\"),\n name: z.string().describe(\"Name of the output provided to the upstream block's output context\"),\n requireEnrichments: z\n .literal(true)\n .optional()\n .describe(\n \"True if current block that stores this reference in its args, may need enrichments \" +\n \"for the references value originating from the blocks in between current and referenced block\",\n ),\n })\n .describe(\n \"Universal reference type, allowing to set block connections. It is crucial that \" +\n \"{@link __isRef} is present and equal to true, internal logic relies on this marker \" +\n \"to build block dependency trees.\",\n )\n .readonly();\nexport type PlRef = z.infer<typeof PlRef>;\n/** @deprecated use {@link PlRef} */\nexport type Ref = PlRef;\n\n/**\n * Type guard to check if a value is a PlRef.\n *\n * @param value - The value to check.\n * @returns True if the value is a PlRef, false otherwise.\n */\nexport function isPlRef(value: unknown): value is PlRef {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"__isRef\" in value &&\n (value as { __isRef: unknown }).__isRef === true &&\n \"blockId\" in value &&\n \"name\" in value\n );\n}\n\n/** Standard way how to communicate possible connections given specific\n * requirements for incoming data. */\nexport type Option = {\n /** Fully rendered reference to be assigned for the intended field in block's\n * args */\n readonly ref: PlRef;\n\n /** Label to be present for the user in i.e. drop-down list */\n readonly label: string;\n};\n\n/**\n * Creates a PlRef with the given blockId and name.\n *\n * @param blockId - The blockId of the reference.\n * @param name - The name of the reference.\n * @param requireEnrichments - Whether the reference requires enrichments.\n */\nexport function createPlRef(blockId: string, name: string, requireEnrichments: boolean = false) {\n if (requireEnrichments)\n return {\n __isRef: true,\n blockId,\n name,\n requireEnrichments: true,\n };\n else\n return {\n __isRef: true,\n blockId,\n name,\n };\n}\n\n/**\n * Creates a new PlRef based on an existing one, explicitly setting (default) or removing the\n * requireEnrichments property.\n *\n * @param ref - The original PlRef object.\n * @param requireEnrichments - If true, the `requireEnrichments: true` property is added\n * to the returned PlRef. If false, the `requireEnrichments` property is removed. Defaults to true.\n * @returns A new PlRef object with the `requireEnrichments` property set or removed accordingly.\n */\nexport function withEnrichments(ref: PlRef, requireEnrichments: boolean = true): PlRef {\n if (requireEnrichments)\n return {\n ...ref,\n requireEnrichments: true,\n };\n else {\n const { requireEnrichments: _, ...rest } = ref;\n return rest;\n }\n}\n\n/** Compare two PlRefs and returns true if they are qual */\nexport function plRefsEqual(ref1: PlRef, ref2: PlRef, ignoreEnrichments: boolean = false) {\n return (\n ref1.blockId === ref2.blockId &&\n ref1.name === ref2.name &&\n (ignoreEnrichments || ref1.requireEnrichments === ref2.requireEnrichments)\n );\n}\n"],"mappings":";;AAEA,MAAa,QAAQ,EAClB,OAAO;CACN,SAAS,EACN,QAAQ,KAAK,CACb,SAAS,8DAA8D;CAC1E,SAAS,EAAE,QAAQ,CAAC,SAAS,oBAAoB;CACjD,MAAM,EAAE,QAAQ,CAAC,SAAS,qEAAqE;CAC/F,oBAAoB,EACjB,QAAQ,KAAK,CACb,UAAU,CACV,SACC,kLAED;CACJ,CAAC,CACD,SACC,sMAGD,CACA,UAAU;;;;;;;AAWb,SAAgB,QAAQ,OAAgC;AACtD,QACE,OAAO,UAAU,YACjB,UAAU,QACV,aAAa,SACZ,MAA+B,YAAY,QAC5C,aAAa,SACb,UAAU;;;;;;;;;AAsBd,SAAgB,YAAY,SAAiB,MAAc,qBAA8B,OAAO;AAC9F,KAAI,mBACF,QAAO;EACL,SAAS;EACT;EACA;EACA,oBAAoB;EACrB;KAED,QAAO;EACL,SAAS;EACT;EACA;EACD;;;;;;;;;;;AAYL,SAAgB,gBAAgB,KAAY,qBAA8B,MAAa;AACrF,KAAI,mBACF,QAAO;EACL,GAAG;EACH,oBAAoB;EACrB;MACE;EACH,MAAM,EAAE,oBAAoB,GAAG,GAAG,SAAS;AAC3C,SAAO;;;;AAKX,SAAgB,YAAY,MAAa,MAAa,oBAA6B,OAAO;AACxF,QACE,KAAK,YAAY,KAAK,WACtB,KAAK,SAAS,KAAK,SAClB,qBAAqB,KAAK,uBAAuB,KAAK"}
|
package/dist/resource_types.cjs
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
//#region src/resource_types.ts
|
|
3
2
|
/** Well-known resource type names used across the platform. */
|
|
4
3
|
const ResourceTypeName = {
|
|
@@ -46,8 +45,8 @@ const ResourceTypePrefix = {
|
|
|
46
45
|
PColumnData: "PColumnData/",
|
|
47
46
|
StreamWorkdir: "StreamWorkdir/"
|
|
48
47
|
};
|
|
49
|
-
|
|
50
48
|
//#endregion
|
|
51
49
|
exports.ResourceTypeName = ResourceTypeName;
|
|
52
50
|
exports.ResourceTypePrefix = ResourceTypePrefix;
|
|
51
|
+
|
|
53
52
|
//# sourceMappingURL=resource_types.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource_types.cjs","names":[],"sources":["../src/resource_types.ts"],"sourcesContent":["/** Well-known resource type names used across the platform. */\nexport const ResourceTypeName = {\n StreamManager: \"StreamManager\",\n StdMap: \"StdMap\",\n StdMapSlash: \"std/map\",\n EphStdMap: \"EphStdMap\",\n PFrame: \"PFrame\",\n ParquetChunk: \"ParquetChunk\",\n BContext: \"BContext\",\n BlockPackCustom: \"BlockPackCustom\",\n BinaryMap: \"BinaryMap\",\n BinaryValue: \"BinaryValue\",\n BlobMap: \"BlobMap\",\n BResolveSingle: \"BResolveSingle\",\n BResolveSingleNoResult: \"BResolveSingleNoResult\",\n BQueryResult: \"BQueryResult\",\n TengoTemplate: \"TengoTemplate\",\n TengoLib: \"TengoLib\",\n SoftwareInfo: \"SoftwareInfo\",\n Dummy: \"Dummy\",\n JsonResourceError: \"json/resourceError\",\n JsonObject: \"json/object\",\n JsonGzObject: \"json-gz/object\",\n JsonString: \"json/string\",\n JsonArray: \"json/array\",\n JsonNumber: \"json/number\",\n BContextEnd: \"BContextEnd\",\n FrontendFromUrl: \"Frontend/FromUrl\",\n FrontendFromFolder: \"Frontend/FromFolder\",\n BObjectSpec: \"BObjectSpec\",\n Blob: \"Blob\",\n Null: \"Null\",\n Binary: \"binary\",\n LSProvider: \"LSProvider\",\n UserProject: \"UserProject\",\n Projects: \"Projects\",\n ClientRoot: \"ClientRoot\",\n} as const;\n\n/** Resource type name prefix constants. */\nexport const ResourceTypePrefix = {\n Blob: \"Blob/\",\n BlobUpload: \"BlobUpload/\",\n BlobIndex: \"BlobIndex/\",\n PColumnData: \"PColumnData/\",\n StreamWorkdir: \"StreamWorkdir/\",\n} as const;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"resource_types.cjs","names":[],"sources":["../src/resource_types.ts"],"sourcesContent":["/** Well-known resource type names used across the platform. */\nexport const ResourceTypeName = {\n StreamManager: \"StreamManager\",\n StdMap: \"StdMap\",\n StdMapSlash: \"std/map\",\n EphStdMap: \"EphStdMap\",\n PFrame: \"PFrame\",\n ParquetChunk: \"ParquetChunk\",\n BContext: \"BContext\",\n BlockPackCustom: \"BlockPackCustom\",\n BinaryMap: \"BinaryMap\",\n BinaryValue: \"BinaryValue\",\n BlobMap: \"BlobMap\",\n BResolveSingle: \"BResolveSingle\",\n BResolveSingleNoResult: \"BResolveSingleNoResult\",\n BQueryResult: \"BQueryResult\",\n TengoTemplate: \"TengoTemplate\",\n TengoLib: \"TengoLib\",\n SoftwareInfo: \"SoftwareInfo\",\n Dummy: \"Dummy\",\n JsonResourceError: \"json/resourceError\",\n JsonObject: \"json/object\",\n JsonGzObject: \"json-gz/object\",\n JsonString: \"json/string\",\n JsonArray: \"json/array\",\n JsonNumber: \"json/number\",\n BContextEnd: \"BContextEnd\",\n FrontendFromUrl: \"Frontend/FromUrl\",\n FrontendFromFolder: \"Frontend/FromFolder\",\n BObjectSpec: \"BObjectSpec\",\n Blob: \"Blob\",\n Null: \"Null\",\n Binary: \"binary\",\n LSProvider: \"LSProvider\",\n UserProject: \"UserProject\",\n Projects: \"Projects\",\n ClientRoot: \"ClientRoot\",\n} as const;\n\n/** Resource type name prefix constants. */\nexport const ResourceTypePrefix = {\n Blob: \"Blob/\",\n BlobUpload: \"BlobUpload/\",\n BlobIndex: \"BlobIndex/\",\n PColumnData: \"PColumnData/\",\n StreamWorkdir: \"StreamWorkdir/\",\n} as const;\n"],"mappings":";;AACA,MAAa,mBAAmB;CAC9B,eAAe;CACf,QAAQ;CACR,aAAa;CACb,WAAW;CACX,QAAQ;CACR,cAAc;CACd,UAAU;CACV,iBAAiB;CACjB,WAAW;CACX,aAAa;CACb,SAAS;CACT,gBAAgB;CAChB,wBAAwB;CACxB,cAAc;CACd,eAAe;CACf,UAAU;CACV,cAAc;CACd,OAAO;CACP,mBAAmB;CACnB,YAAY;CACZ,cAAc;CACd,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,aAAa;CACb,iBAAiB;CACjB,oBAAoB;CACpB,aAAa;CACb,MAAM;CACN,MAAM;CACN,QAAQ;CACR,YAAY;CACZ,aAAa;CACb,UAAU;CACV,YAAY;CACb;;AAGD,MAAa,qBAAqB;CAChC,MAAM;CACN,YAAY;CACZ,WAAW;CACX,aAAa;CACb,eAAe;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource_types.d.ts","names":[],"sources":["../src/resource_types.ts"],"mappings":";;cACa,gBAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAuCA,kBAAA;EAAA"}
|
package/dist/resource_types.js
CHANGED
package/dist/services/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
require("./service_types.cjs");
|
|
2
|
+
require("./service_registry.cjs");
|
|
3
|
+
require("./service_declarations.cjs");
|
|
4
|
+
require("./service_capabilities.cjs");
|
|
5
|
+
require("./service_injector_factory.cjs");
|
|
6
|
+
require("./service_injectors.cjs");
|
package/dist/services/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
1
|
+
import "./service_types.js";
|
|
2
|
+
import "./service_registry.js";
|
|
3
|
+
import "./service_declarations.js";
|
|
4
|
+
import "./service_capabilities.js";
|
|
5
|
+
import "./service_injector_factory.js";
|
|
6
|
+
import "./service_injectors.js";
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
const require_service_declarations = require(
|
|
2
|
-
|
|
1
|
+
const require_service_declarations = require("./service_declarations.cjs");
|
|
3
2
|
//#region src/services/service_capabilities.ts
|
|
4
3
|
/**
|
|
5
4
|
* All service-related `requires*` capability flag names, auto-derived from Services.
|
|
@@ -40,7 +39,6 @@ function getMethodNames(instance) {
|
|
|
40
39
|
}
|
|
41
40
|
return [...methods];
|
|
42
41
|
}
|
|
43
|
-
|
|
44
42
|
//#endregion
|
|
45
43
|
exports.SERVICE_CAPABILITY_FLAGS = SERVICE_CAPABILITY_FLAGS;
|
|
46
44
|
exports.SERVICE_FEATURE_FLAGS = SERVICE_FEATURE_FLAGS;
|
|
@@ -48,4 +46,5 @@ exports.getMethodNames = getMethodNames;
|
|
|
48
46
|
exports.isKnownServiceName = isKnownServiceName;
|
|
49
47
|
exports.registerServiceCapabilities = registerServiceCapabilities;
|
|
50
48
|
exports.resolveRequiredServices = resolveRequiredServices;
|
|
49
|
+
|
|
51
50
|
//# sourceMappingURL=service_capabilities.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service_capabilities.cjs","names":["Services"],"sources":["../../src/services/service_capabilities.ts"],"sourcesContent":["import type { ServiceName, ServiceRequireFlags } from \"./service_types\";\nimport { Services } from \"./service_declarations\";\nimport type { SupportedRequirement } from \"../flags/flag_utils\";\n\n/**\n * All service-related `requires*` capability flag names, auto-derived from Services.\n * Single source of truth — use this everywhere runtime capabilities are registered.\n */\nexport const SERVICE_CAPABILITY_FLAGS: readonly SupportedRequirement[] = Object.keys(Services).map(\n (key) => `requires${key}` as SupportedRequirement,\n);\n\n/**\n * Register all service capability flags with the given callback.\n * Works with both `RuntimeCapabilities.addSupportedRequirement`\n * and `MiddleLayer.addRuntimeCapability`.\n */\nexport function registerServiceCapabilities(\n register: (flag: SupportedRequirement, value: true) => void,\n): void {\n for (const flag of SERVICE_CAPABILITY_FLAGS) {\n register(flag, true);\n }\n}\n\n/**\n * Resolve which services are required by the given feature flags.\n * Accepts Record<string, unknown> so it works with both BlockCodeKnownFeatureFlags\n * (from middle layer) and Zod-parsed records (from preload).\n */\nexport function resolveRequiredServices(flags: Record<string, unknown> | undefined): ServiceName[] {\n if (!flags) return [];\n return (Object.keys(Services) as (keyof typeof Services)[])\n .filter((key) => flags[`requires${key}`] === true)\n .map((key) => Services[key]);\n}\n\nexport type KnownServiceName = (typeof Services)[keyof typeof Services] & string;\n\nexport function isKnownServiceName(name: string): name is KnownServiceName {\n return Object.values(Services).some((v) => v === name);\n}\n\n/** All service require flags set to true, auto-generated from Services.\n * Used to distinguish service-related feature flags from non-service flags. */\nexport const SERVICE_FEATURE_FLAGS: { readonly [K in keyof ServiceRequireFlags]-?: true } =\n Object.fromEntries(Object.keys(Services).map((key) => [`requires${key}`, true])) as any;\n\n/** Introspect method names on an instance (including prototype chain).\n * Uses Object.getOwnPropertyDescriptor to avoid triggering getters. */\nexport function getMethodNames<T extends object>(instance: T): string[] {\n const methods = new Set<string>();\n let proto: object | null = instance;\n while (proto && proto !== Object.prototype) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, key);\n if (key !== \"constructor\" && typeof descriptor?.value === \"function\") {\n methods.add(key);\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n return [...methods];\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"service_capabilities.cjs","names":["Services"],"sources":["../../src/services/service_capabilities.ts"],"sourcesContent":["import type { ServiceName, ServiceRequireFlags } from \"./service_types\";\nimport { Services } from \"./service_declarations\";\nimport type { SupportedRequirement } from \"../flags/flag_utils\";\n\n/**\n * All service-related `requires*` capability flag names, auto-derived from Services.\n * Single source of truth — use this everywhere runtime capabilities are registered.\n */\nexport const SERVICE_CAPABILITY_FLAGS: readonly SupportedRequirement[] = Object.keys(Services).map(\n (key) => `requires${key}` as SupportedRequirement,\n);\n\n/**\n * Register all service capability flags with the given callback.\n * Works with both `RuntimeCapabilities.addSupportedRequirement`\n * and `MiddleLayer.addRuntimeCapability`.\n */\nexport function registerServiceCapabilities(\n register: (flag: SupportedRequirement, value: true) => void,\n): void {\n for (const flag of SERVICE_CAPABILITY_FLAGS) {\n register(flag, true);\n }\n}\n\n/**\n * Resolve which services are required by the given feature flags.\n * Accepts Record<string, unknown> so it works with both BlockCodeKnownFeatureFlags\n * (from middle layer) and Zod-parsed records (from preload).\n */\nexport function resolveRequiredServices(flags: Record<string, unknown> | undefined): ServiceName[] {\n if (!flags) return [];\n return (Object.keys(Services) as (keyof typeof Services)[])\n .filter((key) => flags[`requires${key}`] === true)\n .map((key) => Services[key]);\n}\n\nexport type KnownServiceName = (typeof Services)[keyof typeof Services] & string;\n\nexport function isKnownServiceName(name: string): name is KnownServiceName {\n return Object.values(Services).some((v) => v === name);\n}\n\n/** All service require flags set to true, auto-generated from Services.\n * Used to distinguish service-related feature flags from non-service flags. */\nexport const SERVICE_FEATURE_FLAGS: { readonly [K in keyof ServiceRequireFlags]-?: true } =\n Object.fromEntries(Object.keys(Services).map((key) => [`requires${key}`, true])) as any;\n\n/** Introspect method names on an instance (including prototype chain).\n * Uses Object.getOwnPropertyDescriptor to avoid triggering getters. */\nexport function getMethodNames<T extends object>(instance: T): string[] {\n const methods = new Set<string>();\n let proto: object | null = instance;\n while (proto && proto !== Object.prototype) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, key);\n if (key !== \"constructor\" && typeof descriptor?.value === \"function\") {\n methods.add(key);\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n return [...methods];\n}\n"],"mappings":";;;;;;AAQA,MAAa,2BAA4D,OAAO,KAAKA,6BAAAA,SAAS,CAAC,KAC5F,QAAQ,WAAW,MACrB;;;;;;AAOD,SAAgB,4BACd,UACM;AACN,MAAK,MAAM,QAAQ,yBACjB,UAAS,MAAM,KAAK;;;;;;;AASxB,SAAgB,wBAAwB,OAA2D;AACjG,KAAI,CAAC,MAAO,QAAO,EAAE;AACrB,QAAQ,OAAO,KAAKA,6BAAAA,SAAS,CAC1B,QAAQ,QAAQ,MAAM,WAAW,WAAW,KAAK,CACjD,KAAK,QAAQA,6BAAAA,SAAS,KAAK;;AAKhC,SAAgB,mBAAmB,MAAwC;AACzE,QAAO,OAAO,OAAOA,6BAAAA,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK;;;;AAKxD,MAAa,wBACX,OAAO,YAAY,OAAO,KAAKA,6BAAAA,SAAS,CAAC,KAAK,QAAQ,CAAC,WAAW,OAAO,KAAK,CAAC,CAAC;;;AAIlF,SAAgB,eAAiC,UAAuB;CACtE,MAAM,0BAAU,IAAI,KAAa;CACjC,IAAI,QAAuB;AAC3B,QAAO,SAAS,UAAU,OAAO,WAAW;AAC1C,OAAK,MAAM,OAAO,OAAO,oBAAoB,MAAM,CAEjD,KAAI,QAAQ,iBAAiB,OADV,OAAO,yBAAyB,OAAO,IAAI,EACd,UAAU,WACxD,SAAQ,IAAI,IAAI;AAGpB,UAAQ,OAAO,eAAe,MAAM;;AAEtC,QAAO,CAAC,GAAG,QAAQ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service_capabilities.d.ts","names":[],"sources":["../../src/services/service_capabilities.ts"],"mappings":";;;;;;;AAQA;;cAAa,wBAAA,WAAmC,oBAAA;;;AAShD;;;iBAAgB,2BAAA,CACd,QAAA,GAAW,IAAA,EAAM,oBAAA,EAAsB,KAAA;;;;;;iBAYzB,uBAAA,CAAwB,KAAA,EAAO,MAAA,gCAAsC,WAAA;AAAA,KAOzE,gBAAA,WAA2B,QAAA,eAAuB,QAAA;AAAA,iBAE9C,kBAAA,CAAmB,IAAA,WAAe,IAAA,IAAQ,gBAAA;;;cAM7C,qBAAA,yBAA8C,mBAAA;;;iBAK3C,cAAA,kBAAA,CAAiC,QAAA,EAAU,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Services } from "./service_declarations.js";
|
|
2
|
-
|
|
3
2
|
//#region src/services/service_capabilities.ts
|
|
4
3
|
/**
|
|
5
4
|
* All service-related `requires*` capability flag names, auto-derived from Services.
|
|
@@ -40,7 +39,7 @@ function getMethodNames(instance) {
|
|
|
40
39
|
}
|
|
41
40
|
return [...methods];
|
|
42
41
|
}
|
|
43
|
-
|
|
44
42
|
//#endregion
|
|
45
43
|
export { SERVICE_CAPABILITY_FLAGS, SERVICE_FEATURE_FLAGS, getMethodNames, isKnownServiceName, registerServiceCapabilities, resolveRequiredServices };
|
|
44
|
+
|
|
46
45
|
//# sourceMappingURL=service_capabilities.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service_capabilities.js","names":[],"sources":["../../src/services/service_capabilities.ts"],"sourcesContent":["import type { ServiceName, ServiceRequireFlags } from \"./service_types\";\nimport { Services } from \"./service_declarations\";\nimport type { SupportedRequirement } from \"../flags/flag_utils\";\n\n/**\n * All service-related `requires*` capability flag names, auto-derived from Services.\n * Single source of truth — use this everywhere runtime capabilities are registered.\n */\nexport const SERVICE_CAPABILITY_FLAGS: readonly SupportedRequirement[] = Object.keys(Services).map(\n (key) => `requires${key}` as SupportedRequirement,\n);\n\n/**\n * Register all service capability flags with the given callback.\n * Works with both `RuntimeCapabilities.addSupportedRequirement`\n * and `MiddleLayer.addRuntimeCapability`.\n */\nexport function registerServiceCapabilities(\n register: (flag: SupportedRequirement, value: true) => void,\n): void {\n for (const flag of SERVICE_CAPABILITY_FLAGS) {\n register(flag, true);\n }\n}\n\n/**\n * Resolve which services are required by the given feature flags.\n * Accepts Record<string, unknown> so it works with both BlockCodeKnownFeatureFlags\n * (from middle layer) and Zod-parsed records (from preload).\n */\nexport function resolveRequiredServices(flags: Record<string, unknown> | undefined): ServiceName[] {\n if (!flags) return [];\n return (Object.keys(Services) as (keyof typeof Services)[])\n .filter((key) => flags[`requires${key}`] === true)\n .map((key) => Services[key]);\n}\n\nexport type KnownServiceName = (typeof Services)[keyof typeof Services] & string;\n\nexport function isKnownServiceName(name: string): name is KnownServiceName {\n return Object.values(Services).some((v) => v === name);\n}\n\n/** All service require flags set to true, auto-generated from Services.\n * Used to distinguish service-related feature flags from non-service flags. */\nexport const SERVICE_FEATURE_FLAGS: { readonly [K in keyof ServiceRequireFlags]-?: true } =\n Object.fromEntries(Object.keys(Services).map((key) => [`requires${key}`, true])) as any;\n\n/** Introspect method names on an instance (including prototype chain).\n * Uses Object.getOwnPropertyDescriptor to avoid triggering getters. */\nexport function getMethodNames<T extends object>(instance: T): string[] {\n const methods = new Set<string>();\n let proto: object | null = instance;\n while (proto && proto !== Object.prototype) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, key);\n if (key !== \"constructor\" && typeof descriptor?.value === \"function\") {\n methods.add(key);\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n return [...methods];\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"service_capabilities.js","names":[],"sources":["../../src/services/service_capabilities.ts"],"sourcesContent":["import type { ServiceName, ServiceRequireFlags } from \"./service_types\";\nimport { Services } from \"./service_declarations\";\nimport type { SupportedRequirement } from \"../flags/flag_utils\";\n\n/**\n * All service-related `requires*` capability flag names, auto-derived from Services.\n * Single source of truth — use this everywhere runtime capabilities are registered.\n */\nexport const SERVICE_CAPABILITY_FLAGS: readonly SupportedRequirement[] = Object.keys(Services).map(\n (key) => `requires${key}` as SupportedRequirement,\n);\n\n/**\n * Register all service capability flags with the given callback.\n * Works with both `RuntimeCapabilities.addSupportedRequirement`\n * and `MiddleLayer.addRuntimeCapability`.\n */\nexport function registerServiceCapabilities(\n register: (flag: SupportedRequirement, value: true) => void,\n): void {\n for (const flag of SERVICE_CAPABILITY_FLAGS) {\n register(flag, true);\n }\n}\n\n/**\n * Resolve which services are required by the given feature flags.\n * Accepts Record<string, unknown> so it works with both BlockCodeKnownFeatureFlags\n * (from middle layer) and Zod-parsed records (from preload).\n */\nexport function resolveRequiredServices(flags: Record<string, unknown> | undefined): ServiceName[] {\n if (!flags) return [];\n return (Object.keys(Services) as (keyof typeof Services)[])\n .filter((key) => flags[`requires${key}`] === true)\n .map((key) => Services[key]);\n}\n\nexport type KnownServiceName = (typeof Services)[keyof typeof Services] & string;\n\nexport function isKnownServiceName(name: string): name is KnownServiceName {\n return Object.values(Services).some((v) => v === name);\n}\n\n/** All service require flags set to true, auto-generated from Services.\n * Used to distinguish service-related feature flags from non-service flags. */\nexport const SERVICE_FEATURE_FLAGS: { readonly [K in keyof ServiceRequireFlags]-?: true } =\n Object.fromEntries(Object.keys(Services).map((key) => [`requires${key}`, true])) as any;\n\n/** Introspect method names on an instance (including prototype chain).\n * Uses Object.getOwnPropertyDescriptor to avoid triggering getters. */\nexport function getMethodNames<T extends object>(instance: T): string[] {\n const methods = new Set<string>();\n let proto: object | null = instance;\n while (proto && proto !== Object.prototype) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, key);\n if (key !== \"constructor\" && typeof descriptor?.value === \"function\") {\n methods.add(key);\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n return [...methods];\n}\n"],"mappings":";;;;;;AAQA,MAAa,2BAA4D,OAAO,KAAK,SAAS,CAAC,KAC5F,QAAQ,WAAW,MACrB;;;;;;AAOD,SAAgB,4BACd,UACM;AACN,MAAK,MAAM,QAAQ,yBACjB,UAAS,MAAM,KAAK;;;;;;;AASxB,SAAgB,wBAAwB,OAA2D;AACjG,KAAI,CAAC,MAAO,QAAO,EAAE;AACrB,QAAQ,OAAO,KAAK,SAAS,CAC1B,QAAQ,QAAQ,MAAM,WAAW,WAAW,KAAK,CACjD,KAAK,QAAQ,SAAS,KAAK;;AAKhC,SAAgB,mBAAmB,MAAwC;AACzE,QAAO,OAAO,OAAO,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK;;;;AAKxD,MAAa,wBACX,OAAO,YAAY,OAAO,KAAK,SAAS,CAAC,KAAK,QAAQ,CAAC,WAAW,OAAO,KAAK,CAAC,CAAC;;;AAIlF,SAAgB,eAAiC,UAAuB;CACtE,MAAM,0BAAU,IAAI,KAAa;CACjC,IAAI,QAAuB;AAC3B,QAAO,SAAS,UAAU,OAAO,WAAW;AAC1C,OAAK,MAAM,OAAO,OAAO,oBAAoB,MAAM,CAEjD,KAAI,QAAQ,iBAAiB,OADV,OAAO,yBAAyB,OAAO,IAAI,EACd,UAAU,WACxD,SAAQ,IAAI,IAAI;AAGpB,UAAQ,OAAO,eAAe,MAAM;;AAEtC,QAAO,CAAC,GAAG,QAAQ"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
const require_service_types = require(
|
|
2
|
-
|
|
1
|
+
const require_service_types = require("./service_types.cjs");
|
|
3
2
|
//#region src/services/service_declarations.ts
|
|
4
3
|
const Services = {
|
|
5
4
|
PFrameSpec: require_service_types.service()({
|
|
@@ -11,7 +10,7 @@ const Services = {
|
|
|
11
10
|
name: "pframe"
|
|
12
11
|
})
|
|
13
12
|
};
|
|
14
|
-
|
|
15
13
|
//#endregion
|
|
16
14
|
exports.Services = Services;
|
|
15
|
+
|
|
17
16
|
//# sourceMappingURL=service_declarations.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service_declarations.cjs","names":["service"],"sources":["../../src/services/service_declarations.ts"],"sourcesContent":["/**\n * Service declarations — add new services here.\n *\n * After adding a service, fix type errors in these files:\n *\n * Model side:\n * - lib/node/pl-middle-layer/src/js_render/service_injectors.ts — VM bridge for workflow scripts\n * - lib/node/pl-middle-layer/src/middle_layer/middle_layer.ts — ModelServiceRegistry factory\n *\n * UI side:\n * - lib/model/common/src/services/service_injector_factory.ts — driver method wrappers (node services only)\n * - sdk/ui-vue/src/internal/createAppV3.ts — UiServiceRegistry factory\n *\n * Optional:\n * - sdk/model/src/services/block_service_flags.ts — only if default-required by all blocks\n */\n\nimport type { PFrameDriver, PFrameModelDriver } from \"../drivers/pframe/driver\";\nimport type { PFrameSpecDriver } from \"../drivers/pframe/spec_driver\";\nimport { service } from \"./service_types\";\n\nexport const Services = {\n PFrameSpec: service<PFrameSpecDriver, PFrameSpecDriver>()({ type: \"wasm\", name: \"pframeSpec\" }),\n PFrame: service<PFrameModelDriver, PFrameDriver>()({ type: \"node\", name: \"pframe\" }),\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"service_declarations.cjs","names":["service"],"sources":["../../src/services/service_declarations.ts"],"sourcesContent":["/**\n * Service declarations — add new services here.\n *\n * After adding a service, fix type errors in these files:\n *\n * Model side:\n * - lib/node/pl-middle-layer/src/js_render/service_injectors.ts — VM bridge for workflow scripts\n * - lib/node/pl-middle-layer/src/middle_layer/middle_layer.ts — ModelServiceRegistry factory\n *\n * UI side:\n * - lib/model/common/src/services/service_injector_factory.ts — driver method wrappers (node services only)\n * - sdk/ui-vue/src/internal/createAppV3.ts — UiServiceRegistry factory\n *\n * Optional:\n * - sdk/model/src/services/block_service_flags.ts — only if default-required by all blocks\n */\n\nimport type { PFrameDriver, PFrameModelDriver } from \"../drivers/pframe/driver\";\nimport type { PFrameSpecDriver } from \"../drivers/pframe/spec_driver\";\nimport { service } from \"./service_types\";\n\nexport const Services = {\n PFrameSpec: service<PFrameSpecDriver, PFrameSpecDriver>()({ type: \"wasm\", name: \"pframeSpec\" }),\n PFrame: service<PFrameModelDriver, PFrameDriver>()({ type: \"node\", name: \"pframe\" }),\n};\n"],"mappings":";;AAqBA,MAAa,WAAW;CACtB,YAAYA,sBAAAA,SAA6C,CAAC;EAAE,MAAM;EAAQ,MAAM;EAAc,CAAC;CAC/F,QAAQA,sBAAAA,SAA0C,CAAC;EAAE,MAAM;EAAQ,MAAM;EAAU,CAAC;CACrF"}
|
|
@@ -4,8 +4,6 @@ import { DataInfo, PColumnValues } from "../drivers/pframe/data_info.js";
|
|
|
4
4
|
import { PFrameSpecDriver } from "../drivers/pframe/spec_driver.js";
|
|
5
5
|
import { PFrameDriver, PFrameModelDriver } from "../drivers/pframe/driver.js";
|
|
6
6
|
import { ServiceTypesLike } from "./service_types.js";
|
|
7
|
-
import "../index.js";
|
|
8
|
-
|
|
9
7
|
//#region src/services/service_declarations.d.ts
|
|
10
8
|
declare const Services: {
|
|
11
9
|
PFrameSpec: Branded<"pframeSpec", ServiceTypesLike<PFrameSpecDriver, PFrameSpecDriver, "wasm">>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service_declarations.d.ts","names":[],"sources":["../../src/services/service_declarations.ts"],"mappings":";;;;;;;cAqBa,QAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { service } from "./service_types.js";
|
|
2
|
-
|
|
3
2
|
//#region src/services/service_declarations.ts
|
|
4
3
|
const Services = {
|
|
5
4
|
PFrameSpec: service()({
|
|
@@ -11,7 +10,7 @@ const Services = {
|
|
|
11
10
|
name: "pframe"
|
|
12
11
|
})
|
|
13
12
|
};
|
|
14
|
-
|
|
15
13
|
//#endregion
|
|
16
14
|
export { Services };
|
|
15
|
+
|
|
17
16
|
//# sourceMappingURL=service_declarations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service_declarations.js","names":[],"sources":["../../src/services/service_declarations.ts"],"sourcesContent":["/**\n * Service declarations — add new services here.\n *\n * After adding a service, fix type errors in these files:\n *\n * Model side:\n * - lib/node/pl-middle-layer/src/js_render/service_injectors.ts — VM bridge for workflow scripts\n * - lib/node/pl-middle-layer/src/middle_layer/middle_layer.ts — ModelServiceRegistry factory\n *\n * UI side:\n * - lib/model/common/src/services/service_injector_factory.ts — driver method wrappers (node services only)\n * - sdk/ui-vue/src/internal/createAppV3.ts — UiServiceRegistry factory\n *\n * Optional:\n * - sdk/model/src/services/block_service_flags.ts — only if default-required by all blocks\n */\n\nimport type { PFrameDriver, PFrameModelDriver } from \"../drivers/pframe/driver\";\nimport type { PFrameSpecDriver } from \"../drivers/pframe/spec_driver\";\nimport { service } from \"./service_types\";\n\nexport const Services = {\n PFrameSpec: service<PFrameSpecDriver, PFrameSpecDriver>()({ type: \"wasm\", name: \"pframeSpec\" }),\n PFrame: service<PFrameModelDriver, PFrameDriver>()({ type: \"node\", name: \"pframe\" }),\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"service_declarations.js","names":[],"sources":["../../src/services/service_declarations.ts"],"sourcesContent":["/**\n * Service declarations — add new services here.\n *\n * After adding a service, fix type errors in these files:\n *\n * Model side:\n * - lib/node/pl-middle-layer/src/js_render/service_injectors.ts — VM bridge for workflow scripts\n * - lib/node/pl-middle-layer/src/middle_layer/middle_layer.ts — ModelServiceRegistry factory\n *\n * UI side:\n * - lib/model/common/src/services/service_injector_factory.ts — driver method wrappers (node services only)\n * - sdk/ui-vue/src/internal/createAppV3.ts — UiServiceRegistry factory\n *\n * Optional:\n * - sdk/model/src/services/block_service_flags.ts — only if default-required by all blocks\n */\n\nimport type { PFrameDriver, PFrameModelDriver } from \"../drivers/pframe/driver\";\nimport type { PFrameSpecDriver } from \"../drivers/pframe/spec_driver\";\nimport { service } from \"./service_types\";\n\nexport const Services = {\n PFrameSpec: service<PFrameSpecDriver, PFrameSpecDriver>()({ type: \"wasm\", name: \"pframeSpec\" }),\n PFrame: service<PFrameModelDriver, PFrameDriver>()({ type: \"node\", name: \"pframe\" }),\n};\n"],"mappings":";;AAqBA,MAAa,WAAW;CACtB,YAAY,SAA6C,CAAC;EAAE,MAAM;EAAQ,MAAM;EAAc,CAAC;CAC/F,QAAQ,SAA0C,CAAC;EAAE,MAAM;EAAQ,MAAM;EAAU,CAAC;CACrF"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
//#region src/services/service_injector_factory.ts
|
|
3
2
|
function createUiServiceInjectors(driverKit) {
|
|
4
3
|
const { pFrameDriver } = driverKit;
|
|
@@ -13,7 +12,7 @@ function createUiServiceInjectors(driverKit) {
|
|
|
13
12
|
getData: (handle, columnIndices, range) => pFrameDriver.getData(handle, columnIndices, range)
|
|
14
13
|
} };
|
|
15
14
|
}
|
|
16
|
-
|
|
17
15
|
//#endregion
|
|
18
16
|
exports.createUiServiceInjectors = createUiServiceInjectors;
|
|
17
|
+
|
|
19
18
|
//# sourceMappingURL=service_injector_factory.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service_injector_factory.cjs","names":[],"sources":["../../src/services/service_injector_factory.ts"],"sourcesContent":["/**\n * UI service injector factory.\n *\n * When adding a new node service, add its method wrappers here.\n * Everything else (SERVICE_METHOD_MAP, buildServiceInfo, UiServiceInjectorMap)\n * auto-derives from this factory + Services in service_declarations.ts.\n */\n\nimport type { DriverKit } from \"../driver_kit\";\nimport type { UiServiceInjectorMap } from \"./service_injectors\";\n\nexport function createUiServiceInjectors(driverKit: DriverKit): UiServiceInjectorMap {\n const { pFrameDriver } = driverKit;\n return {\n PFrame: {\n findColumns: (handle, request) => pFrameDriver.findColumns(handle, request),\n getColumnSpec: (handle, columnId) => pFrameDriver.getColumnSpec(handle, columnId),\n listColumns: (handle) => pFrameDriver.listColumns(handle),\n calculateTableData: (handle, request, range) =>\n pFrameDriver.calculateTableData(handle, request, range),\n getUniqueValues: (handle, request) => pFrameDriver.getUniqueValues(handle, request),\n getShape: (handle) => pFrameDriver.getShape(handle),\n getSpec: (handle) => pFrameDriver.getSpec(handle),\n getData: (handle, columnIndices, range) => pFrameDriver.getData(handle, columnIndices, range),\n },\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"service_injector_factory.cjs","names":[],"sources":["../../src/services/service_injector_factory.ts"],"sourcesContent":["/**\n * UI service injector factory.\n *\n * When adding a new node service, add its method wrappers here.\n * Everything else (SERVICE_METHOD_MAP, buildServiceInfo, UiServiceInjectorMap)\n * auto-derives from this factory + Services in service_declarations.ts.\n */\n\nimport type { DriverKit } from \"../driver_kit\";\nimport type { UiServiceInjectorMap } from \"./service_injectors\";\n\nexport function createUiServiceInjectors(driverKit: DriverKit): UiServiceInjectorMap {\n const { pFrameDriver } = driverKit;\n return {\n PFrame: {\n findColumns: (handle, request) => pFrameDriver.findColumns(handle, request),\n getColumnSpec: (handle, columnId) => pFrameDriver.getColumnSpec(handle, columnId),\n listColumns: (handle) => pFrameDriver.listColumns(handle),\n calculateTableData: (handle, request, range) =>\n pFrameDriver.calculateTableData(handle, request, range),\n getUniqueValues: (handle, request) => pFrameDriver.getUniqueValues(handle, request),\n getShape: (handle) => pFrameDriver.getShape(handle),\n getSpec: (handle) => pFrameDriver.getSpec(handle),\n getData: (handle, columnIndices, range) => pFrameDriver.getData(handle, columnIndices, range),\n },\n };\n}\n"],"mappings":";AAWA,SAAgB,yBAAyB,WAA4C;CACnF,MAAM,EAAE,iBAAiB;AACzB,QAAO,EACL,QAAQ;EACN,cAAc,QAAQ,YAAY,aAAa,YAAY,QAAQ,QAAQ;EAC3E,gBAAgB,QAAQ,aAAa,aAAa,cAAc,QAAQ,SAAS;EACjF,cAAc,WAAW,aAAa,YAAY,OAAO;EACzD,qBAAqB,QAAQ,SAAS,UACpC,aAAa,mBAAmB,QAAQ,SAAS,MAAM;EACzD,kBAAkB,QAAQ,YAAY,aAAa,gBAAgB,QAAQ,QAAQ;EACnF,WAAW,WAAW,aAAa,SAAS,OAAO;EACnD,UAAU,WAAW,aAAa,QAAQ,OAAO;EACjD,UAAU,QAAQ,eAAe,UAAU,aAAa,QAAQ,QAAQ,eAAe,MAAM;EAC9F,EACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service_injector_factory.d.ts","names":[],"sources":["../../src/services/service_injector_factory.ts"],"mappings":";;;;iBAWgB,wBAAA,CAAyB,SAAA,EAAW,SAAA,GAAY,oBAAA"}
|
|
@@ -12,7 +12,7 @@ function createUiServiceInjectors(driverKit) {
|
|
|
12
12
|
getData: (handle, columnIndices, range) => pFrameDriver.getData(handle, columnIndices, range)
|
|
13
13
|
} };
|
|
14
14
|
}
|
|
15
|
-
|
|
16
15
|
//#endregion
|
|
17
16
|
export { createUiServiceInjectors };
|
|
17
|
+
|
|
18
18
|
//# sourceMappingURL=service_injector_factory.js.map
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
const require_service_declarations = require(
|
|
2
|
-
const require_service_capabilities = require(
|
|
3
|
-
const require_service_injector_factory = require(
|
|
4
|
-
|
|
1
|
+
const require_service_declarations = require("./service_declarations.cjs");
|
|
2
|
+
const require_service_capabilities = require("./service_capabilities.cjs");
|
|
3
|
+
const require_service_injector_factory = require("./service_injector_factory.cjs");
|
|
5
4
|
//#region src/services/service_injectors.ts
|
|
6
5
|
let cachedKit;
|
|
7
6
|
let cachedInjectors;
|
|
@@ -40,9 +39,9 @@ function buildServiceInfo(featureFlags) {
|
|
|
40
39
|
const serviceIds = require_service_capabilities.resolveRequiredServices(featureFlags);
|
|
41
40
|
return Object.fromEntries(serviceIds.map((id) => [id, SERVICE_METHOD_MAP[id] ?? []]));
|
|
42
41
|
}
|
|
43
|
-
|
|
44
42
|
//#endregion
|
|
45
43
|
exports.SERVICE_METHOD_MAP = SERVICE_METHOD_MAP;
|
|
46
44
|
exports.buildServiceInfo = buildServiceInfo;
|
|
47
45
|
exports.resolveUiInjector = resolveUiInjector;
|
|
46
|
+
|
|
48
47
|
//# sourceMappingURL=service_injectors.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service_injectors.cjs","names":["createUiServiceInjectors","Services","getMethodNames","resolveRequiredServices"],"sources":["../../src/services/service_injectors.ts"],"sourcesContent":["/**\n * UI service injectors — auto-derived types, method map, and service info builder.\n *\n * The factory (createUiServiceInjectors) lives in service_injector_factory.ts —\n * that's the only file to edit when adding a new node service.\n */\n\nimport type { InferServiceKind, InferServiceUi, ServiceBrand, ServiceName } from \"./service_types\";\nimport type { DriverKit } from \"../driver_kit\";\nimport { Services } from \"./service_declarations\";\nimport { getMethodNames, resolveRequiredServices } from \"./service_capabilities\";\nimport { createUiServiceInjectors } from \"./service_injector_factory\";\n\nexport { createUiServiceInjectors } from \"./service_injector_factory\";\n\ntype NodeServiceKeys = {\n [K in keyof typeof Services]: InferServiceKind<ServiceBrand<(typeof Services)[K]>> extends \"node\"\n ? K\n : never;\n}[keyof typeof Services];\n\n/** Auto-derived map of node service keys to their UI-side driver interfaces. */\nexport type UiServiceInjectorMap = {\n [K in NodeServiceKeys]: InferServiceUi<ServiceBrand<(typeof Services)[K]>>;\n};\n\nlet cachedKit: DriverKit | undefined;\nlet cachedInjectors: UiServiceInjectorMap | undefined;\n\nfunction getOrCreateInjectors(driverKit: DriverKit): UiServiceInjectorMap {\n if (!cachedInjectors || cachedKit !== driverKit) {\n cachedKit = driverKit;\n cachedInjectors = createUiServiceInjectors(driverKit);\n }\n return cachedInjectors;\n}\n\n/** Resolve the injector for a given service ID. Caches injectors per DriverKit reference. */\nexport function resolveUiInjector(\n driverKit: DriverKit,\n serviceId: ServiceName,\n): UiServiceInjectorMap[keyof UiServiceInjectorMap] | null {\n const injectors = getOrCreateInjectors(driverKit);\n const key = Object.keys(Services).find(\n (k) => Services[k as keyof typeof Services] === serviceId,\n ) as NodeServiceKeys | undefined;\n if (!key) return null;\n return injectors[key];\n}\n\n/**\n * Static map of ServiceName → method names, auto-derived from the injector shape.\n * Computed once at module load. The stub DriverKit is never called — it only\n * provides a target so the closures in createUiServiceInjectors have own-property\n * keys that getMethodNames can introspect.\n */\nexport const SERVICE_METHOD_MAP: Readonly<Record<string, string[]>> = (() => {\n const stubKit = new Proxy({} as DriverKit, {\n get: () => new Proxy({}, { get: () => () => {} }),\n });\n const injectors = createUiServiceInjectors(stubKit);\n const result: Record<string, string[]> = {};\n for (const key of Object.keys(Services) as (keyof typeof Services)[]) {\n const serviceId = Services[key];\n const injector = injectors[key as NodeServiceKeys];\n result[serviceId] = injector ? getMethodNames(injector) : [];\n }\n return result;\n})();\n\n/** Build service info for a block from its feature flags. */\nexport function buildServiceInfo(\n featureFlags: Record<string, unknown>,\n): Record<ServiceName, string[]> {\n const serviceIds = resolveRequiredServices(featureFlags);\n return Object.fromEntries(\n serviceIds.map((id) => [id, SERVICE_METHOD_MAP[id as string] ?? []]),\n ) as Record<ServiceName, string[]>;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"service_injectors.cjs","names":["createUiServiceInjectors","Services","getMethodNames","resolveRequiredServices"],"sources":["../../src/services/service_injectors.ts"],"sourcesContent":["/**\n * UI service injectors — auto-derived types, method map, and service info builder.\n *\n * The factory (createUiServiceInjectors) lives in service_injector_factory.ts —\n * that's the only file to edit when adding a new node service.\n */\n\nimport type { InferServiceKind, InferServiceUi, ServiceBrand, ServiceName } from \"./service_types\";\nimport type { DriverKit } from \"../driver_kit\";\nimport { Services } from \"./service_declarations\";\nimport { getMethodNames, resolveRequiredServices } from \"./service_capabilities\";\nimport { createUiServiceInjectors } from \"./service_injector_factory\";\n\nexport { createUiServiceInjectors } from \"./service_injector_factory\";\n\ntype NodeServiceKeys = {\n [K in keyof typeof Services]: InferServiceKind<ServiceBrand<(typeof Services)[K]>> extends \"node\"\n ? K\n : never;\n}[keyof typeof Services];\n\n/** Auto-derived map of node service keys to their UI-side driver interfaces. */\nexport type UiServiceInjectorMap = {\n [K in NodeServiceKeys]: InferServiceUi<ServiceBrand<(typeof Services)[K]>>;\n};\n\nlet cachedKit: DriverKit | undefined;\nlet cachedInjectors: UiServiceInjectorMap | undefined;\n\nfunction getOrCreateInjectors(driverKit: DriverKit): UiServiceInjectorMap {\n if (!cachedInjectors || cachedKit !== driverKit) {\n cachedKit = driverKit;\n cachedInjectors = createUiServiceInjectors(driverKit);\n }\n return cachedInjectors;\n}\n\n/** Resolve the injector for a given service ID. Caches injectors per DriverKit reference. */\nexport function resolveUiInjector(\n driverKit: DriverKit,\n serviceId: ServiceName,\n): UiServiceInjectorMap[keyof UiServiceInjectorMap] | null {\n const injectors = getOrCreateInjectors(driverKit);\n const key = Object.keys(Services).find(\n (k) => Services[k as keyof typeof Services] === serviceId,\n ) as NodeServiceKeys | undefined;\n if (!key) return null;\n return injectors[key];\n}\n\n/**\n * Static map of ServiceName → method names, auto-derived from the injector shape.\n * Computed once at module load. The stub DriverKit is never called — it only\n * provides a target so the closures in createUiServiceInjectors have own-property\n * keys that getMethodNames can introspect.\n */\nexport const SERVICE_METHOD_MAP: Readonly<Record<string, string[]>> = (() => {\n const stubKit = new Proxy({} as DriverKit, {\n get: () => new Proxy({}, { get: () => () => {} }),\n });\n const injectors = createUiServiceInjectors(stubKit);\n const result: Record<string, string[]> = {};\n for (const key of Object.keys(Services) as (keyof typeof Services)[]) {\n const serviceId = Services[key];\n const injector = injectors[key as NodeServiceKeys];\n result[serviceId] = injector ? getMethodNames(injector) : [];\n }\n return result;\n})();\n\n/** Build service info for a block from its feature flags. */\nexport function buildServiceInfo(\n featureFlags: Record<string, unknown>,\n): Record<ServiceName, string[]> {\n const serviceIds = resolveRequiredServices(featureFlags);\n return Object.fromEntries(\n serviceIds.map((id) => [id, SERVICE_METHOD_MAP[id as string] ?? []]),\n ) as Record<ServiceName, string[]>;\n}\n"],"mappings":";;;;AA0BA,IAAI;AACJ,IAAI;AAEJ,SAAS,qBAAqB,WAA4C;AACxE,KAAI,CAAC,mBAAmB,cAAc,WAAW;AAC/C,cAAY;AACZ,oBAAkBA,iCAAAA,yBAAyB,UAAU;;AAEvD,QAAO;;;AAIT,SAAgB,kBACd,WACA,WACyD;CACzD,MAAM,YAAY,qBAAqB,UAAU;CACjD,MAAM,MAAM,OAAO,KAAKC,6BAAAA,SAAS,CAAC,MAC/B,MAAMA,6BAAAA,SAAS,OAAgC,UACjD;AACD,KAAI,CAAC,IAAK,QAAO;AACjB,QAAO,UAAU;;;;;;;;AASnB,MAAa,4BAAgE;CAI3E,MAAM,YAAYD,iCAAAA,yBAHF,IAAI,MAAM,EAAE,EAAe,EACzC,WAAW,IAAI,MAAM,EAAE,EAAE,EAAE,iBAAiB,IAAI,CAAC,EAClD,CAAC,CACiD;CACnD,MAAM,SAAmC,EAAE;AAC3C,MAAK,MAAM,OAAO,OAAO,KAAKC,6BAAAA,SAAS,EAA+B;EACpE,MAAM,YAAYA,6BAAAA,SAAS;EAC3B,MAAM,WAAW,UAAU;AAC3B,SAAO,aAAa,WAAWC,6BAAAA,eAAe,SAAS,GAAG,EAAE;;AAE9D,QAAO;IACL;;AAGJ,SAAgB,iBACd,cAC+B;CAC/B,MAAM,aAAaC,6BAAAA,wBAAwB,aAAa;AACxD,QAAO,OAAO,YACZ,WAAW,KAAK,OAAO,CAAC,IAAI,mBAAmB,OAAiB,EAAE,CAAC,CAAC,CACrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service_injectors.d.ts","names":[],"sources":["../../src/services/service_injectors.ts"],"mappings":";;;;;;KAeK,eAAA,wBACgB,QAAA,GAAW,gBAAA,CAAiB,YAAA,SAAqB,QAAA,EAAU,CAAA,qBAC1E,CAAA,wBAES,QAAA;;KAGH,oBAAA,WACJ,eAAA,GAAkB,cAAA,CAAe,YAAA,SAAqB,QAAA,EAAU,CAAA;;iBAexD,iBAAA,CACd,SAAA,EAAW,SAAA,EACX,SAAA,EAAW,WAAA,GACV,oBAAA,OAA2B,oBAAA;;;;;;;cAejB,kBAAA,EAAoB,QAAA,CAAS,MAAA;;iBAe1B,gBAAA,CACd,YAAA,EAAc,MAAA,oBACb,MAAA,CAAO,WAAA"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Services } from "./service_declarations.js";
|
|
2
2
|
import { getMethodNames, resolveRequiredServices } from "./service_capabilities.js";
|
|
3
3
|
import { createUiServiceInjectors } from "./service_injector_factory.js";
|
|
4
|
-
|
|
5
4
|
//#region src/services/service_injectors.ts
|
|
6
5
|
let cachedKit;
|
|
7
6
|
let cachedInjectors;
|
|
@@ -40,7 +39,7 @@ function buildServiceInfo(featureFlags) {
|
|
|
40
39
|
const serviceIds = resolveRequiredServices(featureFlags);
|
|
41
40
|
return Object.fromEntries(serviceIds.map((id) => [id, SERVICE_METHOD_MAP[id] ?? []]));
|
|
42
41
|
}
|
|
43
|
-
|
|
44
42
|
//#endregion
|
|
45
43
|
export { SERVICE_METHOD_MAP, buildServiceInfo, resolveUiInjector };
|
|
44
|
+
|
|
46
45
|
//# sourceMappingURL=service_injectors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service_injectors.js","names":[],"sources":["../../src/services/service_injectors.ts"],"sourcesContent":["/**\n * UI service injectors — auto-derived types, method map, and service info builder.\n *\n * The factory (createUiServiceInjectors) lives in service_injector_factory.ts —\n * that's the only file to edit when adding a new node service.\n */\n\nimport type { InferServiceKind, InferServiceUi, ServiceBrand, ServiceName } from \"./service_types\";\nimport type { DriverKit } from \"../driver_kit\";\nimport { Services } from \"./service_declarations\";\nimport { getMethodNames, resolveRequiredServices } from \"./service_capabilities\";\nimport { createUiServiceInjectors } from \"./service_injector_factory\";\n\nexport { createUiServiceInjectors } from \"./service_injector_factory\";\n\ntype NodeServiceKeys = {\n [K in keyof typeof Services]: InferServiceKind<ServiceBrand<(typeof Services)[K]>> extends \"node\"\n ? K\n : never;\n}[keyof typeof Services];\n\n/** Auto-derived map of node service keys to their UI-side driver interfaces. */\nexport type UiServiceInjectorMap = {\n [K in NodeServiceKeys]: InferServiceUi<ServiceBrand<(typeof Services)[K]>>;\n};\n\nlet cachedKit: DriverKit | undefined;\nlet cachedInjectors: UiServiceInjectorMap | undefined;\n\nfunction getOrCreateInjectors(driverKit: DriverKit): UiServiceInjectorMap {\n if (!cachedInjectors || cachedKit !== driverKit) {\n cachedKit = driverKit;\n cachedInjectors = createUiServiceInjectors(driverKit);\n }\n return cachedInjectors;\n}\n\n/** Resolve the injector for a given service ID. Caches injectors per DriverKit reference. */\nexport function resolveUiInjector(\n driverKit: DriverKit,\n serviceId: ServiceName,\n): UiServiceInjectorMap[keyof UiServiceInjectorMap] | null {\n const injectors = getOrCreateInjectors(driverKit);\n const key = Object.keys(Services).find(\n (k) => Services[k as keyof typeof Services] === serviceId,\n ) as NodeServiceKeys | undefined;\n if (!key) return null;\n return injectors[key];\n}\n\n/**\n * Static map of ServiceName → method names, auto-derived from the injector shape.\n * Computed once at module load. The stub DriverKit is never called — it only\n * provides a target so the closures in createUiServiceInjectors have own-property\n * keys that getMethodNames can introspect.\n */\nexport const SERVICE_METHOD_MAP: Readonly<Record<string, string[]>> = (() => {\n const stubKit = new Proxy({} as DriverKit, {\n get: () => new Proxy({}, { get: () => () => {} }),\n });\n const injectors = createUiServiceInjectors(stubKit);\n const result: Record<string, string[]> = {};\n for (const key of Object.keys(Services) as (keyof typeof Services)[]) {\n const serviceId = Services[key];\n const injector = injectors[key as NodeServiceKeys];\n result[serviceId] = injector ? getMethodNames(injector) : [];\n }\n return result;\n})();\n\n/** Build service info for a block from its feature flags. */\nexport function buildServiceInfo(\n featureFlags: Record<string, unknown>,\n): Record<ServiceName, string[]> {\n const serviceIds = resolveRequiredServices(featureFlags);\n return Object.fromEntries(\n serviceIds.map((id) => [id, SERVICE_METHOD_MAP[id as string] ?? []]),\n ) as Record<ServiceName, string[]>;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"service_injectors.js","names":[],"sources":["../../src/services/service_injectors.ts"],"sourcesContent":["/**\n * UI service injectors — auto-derived types, method map, and service info builder.\n *\n * The factory (createUiServiceInjectors) lives in service_injector_factory.ts —\n * that's the only file to edit when adding a new node service.\n */\n\nimport type { InferServiceKind, InferServiceUi, ServiceBrand, ServiceName } from \"./service_types\";\nimport type { DriverKit } from \"../driver_kit\";\nimport { Services } from \"./service_declarations\";\nimport { getMethodNames, resolveRequiredServices } from \"./service_capabilities\";\nimport { createUiServiceInjectors } from \"./service_injector_factory\";\n\nexport { createUiServiceInjectors } from \"./service_injector_factory\";\n\ntype NodeServiceKeys = {\n [K in keyof typeof Services]: InferServiceKind<ServiceBrand<(typeof Services)[K]>> extends \"node\"\n ? K\n : never;\n}[keyof typeof Services];\n\n/** Auto-derived map of node service keys to their UI-side driver interfaces. */\nexport type UiServiceInjectorMap = {\n [K in NodeServiceKeys]: InferServiceUi<ServiceBrand<(typeof Services)[K]>>;\n};\n\nlet cachedKit: DriverKit | undefined;\nlet cachedInjectors: UiServiceInjectorMap | undefined;\n\nfunction getOrCreateInjectors(driverKit: DriverKit): UiServiceInjectorMap {\n if (!cachedInjectors || cachedKit !== driverKit) {\n cachedKit = driverKit;\n cachedInjectors = createUiServiceInjectors(driverKit);\n }\n return cachedInjectors;\n}\n\n/** Resolve the injector for a given service ID. Caches injectors per DriverKit reference. */\nexport function resolveUiInjector(\n driverKit: DriverKit,\n serviceId: ServiceName,\n): UiServiceInjectorMap[keyof UiServiceInjectorMap] | null {\n const injectors = getOrCreateInjectors(driverKit);\n const key = Object.keys(Services).find(\n (k) => Services[k as keyof typeof Services] === serviceId,\n ) as NodeServiceKeys | undefined;\n if (!key) return null;\n return injectors[key];\n}\n\n/**\n * Static map of ServiceName → method names, auto-derived from the injector shape.\n * Computed once at module load. The stub DriverKit is never called — it only\n * provides a target so the closures in createUiServiceInjectors have own-property\n * keys that getMethodNames can introspect.\n */\nexport const SERVICE_METHOD_MAP: Readonly<Record<string, string[]>> = (() => {\n const stubKit = new Proxy({} as DriverKit, {\n get: () => new Proxy({}, { get: () => () => {} }),\n });\n const injectors = createUiServiceInjectors(stubKit);\n const result: Record<string, string[]> = {};\n for (const key of Object.keys(Services) as (keyof typeof Services)[]) {\n const serviceId = Services[key];\n const injector = injectors[key as NodeServiceKeys];\n result[serviceId] = injector ? getMethodNames(injector) : [];\n }\n return result;\n})();\n\n/** Build service info for a block from its feature flags. */\nexport function buildServiceInfo(\n featureFlags: Record<string, unknown>,\n): Record<ServiceName, string[]> {\n const serviceIds = resolveRequiredServices(featureFlags);\n return Object.fromEntries(\n serviceIds.map((id) => [id, SERVICE_METHOD_MAP[id as string] ?? []]),\n ) as Record<ServiceName, string[]>;\n}\n"],"mappings":";;;;AA0BA,IAAI;AACJ,IAAI;AAEJ,SAAS,qBAAqB,WAA4C;AACxE,KAAI,CAAC,mBAAmB,cAAc,WAAW;AAC/C,cAAY;AACZ,oBAAkB,yBAAyB,UAAU;;AAEvD,QAAO;;;AAIT,SAAgB,kBACd,WACA,WACyD;CACzD,MAAM,YAAY,qBAAqB,UAAU;CACjD,MAAM,MAAM,OAAO,KAAK,SAAS,CAAC,MAC/B,MAAM,SAAS,OAAgC,UACjD;AACD,KAAI,CAAC,IAAK,QAAO;AACjB,QAAO,UAAU;;;;;;;;AASnB,MAAa,4BAAgE;CAI3E,MAAM,YAAY,yBAHF,IAAI,MAAM,EAAE,EAAe,EACzC,WAAW,IAAI,MAAM,EAAE,EAAE,EAAE,iBAAiB,IAAI,CAAC,EAClD,CAAC,CACiD;CACnD,MAAM,SAAmC,EAAE;AAC3C,MAAK,MAAM,OAAO,OAAO,KAAK,SAAS,EAA+B;EACpE,MAAM,YAAY,SAAS;EAC3B,MAAM,WAAW,UAAU;AAC3B,SAAO,aAAa,WAAW,eAAe,SAAS,GAAG,EAAE;;AAE9D,QAAO;IACL;;AAGJ,SAAgB,iBACd,cAC+B;CAC/B,MAAM,aAAa,wBAAwB,aAAa;AACxD,QAAO,OAAO,YACZ,WAAW,KAAK,OAAO,CAAC,IAAI,mBAAmB,OAAiB,EAAE,CAAC,CAAC,CACrE"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
const require_errors = require(
|
|
2
|
-
|
|
1
|
+
const require_errors = require("../errors.cjs");
|
|
3
2
|
//#region src/services/service_registry.ts
|
|
4
3
|
var ServiceRegistryBase = class {
|
|
5
4
|
registryName;
|
|
@@ -45,8 +44,8 @@ var UiServiceRegistry = class extends ServiceRegistryBase {
|
|
|
45
44
|
return this.getById(id);
|
|
46
45
|
}
|
|
47
46
|
};
|
|
48
|
-
|
|
49
47
|
//#endregion
|
|
50
48
|
exports.ModelServiceRegistry = ModelServiceRegistry;
|
|
51
49
|
exports.UiServiceRegistry = UiServiceRegistry;
|
|
50
|
+
|
|
52
51
|
//# sourceMappingURL=service_registry.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service_registry.cjs","names":["ServiceNotRegisteredError"],"sources":["../../src/services/service_registry.ts"],"sourcesContent":["import type {\n ServiceTypesLike,\n InferServiceModel,\n InferServiceUi,\n ServiceName,\n ModelServiceFactoryMap,\n UiServiceFactoryMap,\n} from \"./service_types\";\nimport { ServiceNotRegisteredError } from \"../errors\";\nimport type { Services } from \"./service_declarations\";\n\ntype RegistryName = \"ModelServiceRegistry\" | \"UiServiceRegistry\";\ntype ServiceFactory = () => Record<string, Function>;\n\nclass ServiceRegistryBase {\n private readonly registryName: RegistryName;\n private readonly knownServices = new Set<ServiceName>();\n private readonly factories = new Map<ServiceName, ServiceFactory>();\n private readonly instances = new Map<ServiceName, Record<string, Function>>();\n\n protected constructor(\n registryName: RegistryName,\n serviceMap: Record<string, ServiceName>,\n factories: Record<string, (() => unknown) | null>,\n ) {\n this.registryName = registryName;\n for (const [key, factory] of Object.entries(factories)) {\n const serviceId = serviceMap[key];\n this.knownServices.add(serviceId);\n if (factory !== null) {\n this.factories.set(serviceId, factory as ServiceFactory);\n }\n }\n }\n\n async dispose(): Promise<void> {\n for (const instance of this.instances.values()) {\n if (Symbol.asyncDispose in instance) {\n await (instance as AsyncDisposable)[Symbol.asyncDispose]();\n } else if (Symbol.dispose in instance) {\n (instance as Disposable)[Symbol.dispose]();\n }\n }\n this.instances.clear();\n }\n\n protected getById(serviceId: ServiceName): Record<string, Function> | null {\n if (!this.knownServices.has(serviceId)) {\n throw new ServiceNotRegisteredError(\n `Service \"${serviceId}\" is not registered in ${this.registryName}. Add it to the factory map.`,\n );\n }\n if (this.instances.has(serviceId)) return this.instances.get(serviceId)!;\n\n const factory = this.factories.get(serviceId);\n if (!factory) return null;\n\n const instance = factory();\n this.instances.set(serviceId, instance);\n return instance;\n }\n}\n\nexport class ModelServiceRegistry<\n SMap extends Record<string, ServiceName> = typeof Services,\n> extends ServiceRegistryBase {\n constructor(serviceMap: SMap, factories: ModelServiceFactoryMap<SMap>) {\n super(\"ModelServiceRegistry\", serviceMap, factories);\n }\n\n get<S extends ServiceTypesLike>(\n id: ServiceName<S>,\n ):\n | ([unknown] extends [InferServiceModel<S>] ? Record<string, Function> : InferServiceModel<S>)\n | null;\n get(id: ServiceName): Record<string, Function> | null {\n return this.getById(id);\n }\n}\n\nexport class UiServiceRegistry<\n SMap extends Record<string, ServiceName> = typeof Services,\n> extends ServiceRegistryBase {\n constructor(serviceMap: SMap, factories: UiServiceFactoryMap<SMap>) {\n super(\"UiServiceRegistry\", serviceMap, factories);\n }\n\n get<S extends ServiceTypesLike>(\n id: ServiceName<S>,\n ): ([unknown] extends [InferServiceUi<S>] ? Record<string, Function> : InferServiceUi<S>) | null;\n get(id: ServiceName): Record<string, Function> | null {\n return this.getById(id);\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"service_registry.cjs","names":["ServiceNotRegisteredError"],"sources":["../../src/services/service_registry.ts"],"sourcesContent":["import type {\n ServiceTypesLike,\n InferServiceModel,\n InferServiceUi,\n ServiceName,\n ModelServiceFactoryMap,\n UiServiceFactoryMap,\n} from \"./service_types\";\nimport { ServiceNotRegisteredError } from \"../errors\";\nimport type { Services } from \"./service_declarations\";\n\ntype RegistryName = \"ModelServiceRegistry\" | \"UiServiceRegistry\";\ntype ServiceFactory = () => Record<string, Function>;\n\nclass ServiceRegistryBase {\n private readonly registryName: RegistryName;\n private readonly knownServices = new Set<ServiceName>();\n private readonly factories = new Map<ServiceName, ServiceFactory>();\n private readonly instances = new Map<ServiceName, Record<string, Function>>();\n\n protected constructor(\n registryName: RegistryName,\n serviceMap: Record<string, ServiceName>,\n factories: Record<string, (() => unknown) | null>,\n ) {\n this.registryName = registryName;\n for (const [key, factory] of Object.entries(factories)) {\n const serviceId = serviceMap[key];\n this.knownServices.add(serviceId);\n if (factory !== null) {\n this.factories.set(serviceId, factory as ServiceFactory);\n }\n }\n }\n\n async dispose(): Promise<void> {\n for (const instance of this.instances.values()) {\n if (Symbol.asyncDispose in instance) {\n await (instance as AsyncDisposable)[Symbol.asyncDispose]();\n } else if (Symbol.dispose in instance) {\n (instance as Disposable)[Symbol.dispose]();\n }\n }\n this.instances.clear();\n }\n\n protected getById(serviceId: ServiceName): Record<string, Function> | null {\n if (!this.knownServices.has(serviceId)) {\n throw new ServiceNotRegisteredError(\n `Service \"${serviceId}\" is not registered in ${this.registryName}. Add it to the factory map.`,\n );\n }\n if (this.instances.has(serviceId)) return this.instances.get(serviceId)!;\n\n const factory = this.factories.get(serviceId);\n if (!factory) return null;\n\n const instance = factory();\n this.instances.set(serviceId, instance);\n return instance;\n }\n}\n\nexport class ModelServiceRegistry<\n SMap extends Record<string, ServiceName> = typeof Services,\n> extends ServiceRegistryBase {\n constructor(serviceMap: SMap, factories: ModelServiceFactoryMap<SMap>) {\n super(\"ModelServiceRegistry\", serviceMap, factories);\n }\n\n get<S extends ServiceTypesLike>(\n id: ServiceName<S>,\n ):\n | ([unknown] extends [InferServiceModel<S>] ? Record<string, Function> : InferServiceModel<S>)\n | null;\n get(id: ServiceName): Record<string, Function> | null {\n return this.getById(id);\n }\n}\n\nexport class UiServiceRegistry<\n SMap extends Record<string, ServiceName> = typeof Services,\n> extends ServiceRegistryBase {\n constructor(serviceMap: SMap, factories: UiServiceFactoryMap<SMap>) {\n super(\"UiServiceRegistry\", serviceMap, factories);\n }\n\n get<S extends ServiceTypesLike>(\n id: ServiceName<S>,\n ): ([unknown] extends [InferServiceUi<S>] ? Record<string, Function> : InferServiceUi<S>) | null;\n get(id: ServiceName): Record<string, Function> | null {\n return this.getById(id);\n }\n}\n"],"mappings":";;AAcA,IAAM,sBAAN,MAA0B;CACxB;CACA,gCAAiC,IAAI,KAAkB;CACvD,4BAA6B,IAAI,KAAkC;CACnE,4BAA6B,IAAI,KAA4C;CAE7E,YACE,cACA,YACA,WACA;AACA,OAAK,eAAe;AACpB,OAAK,MAAM,CAAC,KAAK,YAAY,OAAO,QAAQ,UAAU,EAAE;GACtD,MAAM,YAAY,WAAW;AAC7B,QAAK,cAAc,IAAI,UAAU;AACjC,OAAI,YAAY,KACd,MAAK,UAAU,IAAI,WAAW,QAA0B;;;CAK9D,MAAM,UAAyB;AAC7B,OAAK,MAAM,YAAY,KAAK,UAAU,QAAQ,CAC5C,KAAI,OAAO,gBAAgB,SACzB,OAAO,SAA6B,OAAO,eAAe;WACjD,OAAO,WAAW,SAC1B,UAAwB,OAAO,UAAU;AAG9C,OAAK,UAAU,OAAO;;CAGxB,QAAkB,WAAyD;AACzE,MAAI,CAAC,KAAK,cAAc,IAAI,UAAU,CACpC,OAAM,IAAIA,eAAAA,0BACR,YAAY,UAAU,yBAAyB,KAAK,aAAa,8BAClE;AAEH,MAAI,KAAK,UAAU,IAAI,UAAU,CAAE,QAAO,KAAK,UAAU,IAAI,UAAU;EAEvE,MAAM,UAAU,KAAK,UAAU,IAAI,UAAU;AAC7C,MAAI,CAAC,QAAS,QAAO;EAErB,MAAM,WAAW,SAAS;AAC1B,OAAK,UAAU,IAAI,WAAW,SAAS;AACvC,SAAO;;;AAIX,IAAa,uBAAb,cAEU,oBAAoB;CAC5B,YAAY,YAAkB,WAAyC;AACrE,QAAM,wBAAwB,YAAY,UAAU;;CAQtD,IAAI,IAAkD;AACpD,SAAO,KAAK,QAAQ,GAAG;;;AAI3B,IAAa,oBAAb,cAEU,oBAAoB;CAC5B,YAAY,YAAkB,WAAsC;AAClE,QAAM,qBAAqB,YAAY,UAAU;;CAMnD,IAAI,IAAkD;AACpD,SAAO,KAAK,QAAQ,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service_registry.d.ts","names":[],"sources":["../../src/services/service_registry.ts"],"mappings":";;;;KAWK,YAAA;AAAA,cAGC,mBAAA;EAAA,iBACa,YAAA;EAAA,iBACA,aAAA;EAAA,iBACA,SAAA;EAAA,iBACA,SAAA;EAAA,UAER,WAAA,CACP,YAAA,EAAc,YAAA,EACd,UAAA,EAAY,MAAA,SAAe,WAAA,GAC3B,SAAA,EAAW,MAAA;EAYP,OAAA,CAAA,GAAW,OAAA;EAAA,UAWP,OAAA,CAAQ,SAAA,EAAW,WAAA,GAAc,MAAA,SAAe,QAAA;AAAA;AAAA,cAiB/C,oBAAA,cACE,MAAA,SAAe,WAAA,WAAsB,QAAA,UAC1C,mBAAA;cACI,UAAA,EAAY,IAAA,EAAM,SAAA,EAAW,sBAAA,CAAuB,IAAA;EAIhE,GAAA,WAAc,gBAAA,CAAA,CACZ,EAAA,EAAI,WAAA,CAAY,CAAA,wBAEM,iBAAA,CAAkB,CAAA,KAAM,MAAA,SAAe,QAAA,IAAY,iBAAA,CAAkB,CAAA;AAAA;AAAA,cAOlF,iBAAA,cACE,MAAA,SAAe,WAAA,WAAsB,QAAA,UAC1C,mBAAA;cACI,UAAA,EAAY,IAAA,EAAM,SAAA,EAAW,mBAAA,CAAoB,IAAA;EAI7D,GAAA,WAAc,gBAAA,CAAA,CACZ,EAAA,EAAI,WAAA,CAAY,CAAA,wBACK,cAAA,CAAe,CAAA,KAAM,MAAA,SAAe,QAAA,IAAY,cAAA,CAAe,CAAA;AAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ServiceNotRegisteredError } from "../errors.js";
|
|
2
|
-
|
|
3
2
|
//#region src/services/service_registry.ts
|
|
4
3
|
var ServiceRegistryBase = class {
|
|
5
4
|
registryName;
|
|
@@ -45,7 +44,7 @@ var UiServiceRegistry = class extends ServiceRegistryBase {
|
|
|
45
44
|
return this.getById(id);
|
|
46
45
|
}
|
|
47
46
|
};
|
|
48
|
-
|
|
49
47
|
//#endregion
|
|
50
48
|
export { ModelServiceRegistry, UiServiceRegistry };
|
|
49
|
+
|
|
51
50
|
//# sourceMappingURL=service_registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service_registry.js","names":[],"sources":["../../src/services/service_registry.ts"],"sourcesContent":["import type {\n ServiceTypesLike,\n InferServiceModel,\n InferServiceUi,\n ServiceName,\n ModelServiceFactoryMap,\n UiServiceFactoryMap,\n} from \"./service_types\";\nimport { ServiceNotRegisteredError } from \"../errors\";\nimport type { Services } from \"./service_declarations\";\n\ntype RegistryName = \"ModelServiceRegistry\" | \"UiServiceRegistry\";\ntype ServiceFactory = () => Record<string, Function>;\n\nclass ServiceRegistryBase {\n private readonly registryName: RegistryName;\n private readonly knownServices = new Set<ServiceName>();\n private readonly factories = new Map<ServiceName, ServiceFactory>();\n private readonly instances = new Map<ServiceName, Record<string, Function>>();\n\n protected constructor(\n registryName: RegistryName,\n serviceMap: Record<string, ServiceName>,\n factories: Record<string, (() => unknown) | null>,\n ) {\n this.registryName = registryName;\n for (const [key, factory] of Object.entries(factories)) {\n const serviceId = serviceMap[key];\n this.knownServices.add(serviceId);\n if (factory !== null) {\n this.factories.set(serviceId, factory as ServiceFactory);\n }\n }\n }\n\n async dispose(): Promise<void> {\n for (const instance of this.instances.values()) {\n if (Symbol.asyncDispose in instance) {\n await (instance as AsyncDisposable)[Symbol.asyncDispose]();\n } else if (Symbol.dispose in instance) {\n (instance as Disposable)[Symbol.dispose]();\n }\n }\n this.instances.clear();\n }\n\n protected getById(serviceId: ServiceName): Record<string, Function> | null {\n if (!this.knownServices.has(serviceId)) {\n throw new ServiceNotRegisteredError(\n `Service \"${serviceId}\" is not registered in ${this.registryName}. Add it to the factory map.`,\n );\n }\n if (this.instances.has(serviceId)) return this.instances.get(serviceId)!;\n\n const factory = this.factories.get(serviceId);\n if (!factory) return null;\n\n const instance = factory();\n this.instances.set(serviceId, instance);\n return instance;\n }\n}\n\nexport class ModelServiceRegistry<\n SMap extends Record<string, ServiceName> = typeof Services,\n> extends ServiceRegistryBase {\n constructor(serviceMap: SMap, factories: ModelServiceFactoryMap<SMap>) {\n super(\"ModelServiceRegistry\", serviceMap, factories);\n }\n\n get<S extends ServiceTypesLike>(\n id: ServiceName<S>,\n ):\n | ([unknown] extends [InferServiceModel<S>] ? Record<string, Function> : InferServiceModel<S>)\n | null;\n get(id: ServiceName): Record<string, Function> | null {\n return this.getById(id);\n }\n}\n\nexport class UiServiceRegistry<\n SMap extends Record<string, ServiceName> = typeof Services,\n> extends ServiceRegistryBase {\n constructor(serviceMap: SMap, factories: UiServiceFactoryMap<SMap>) {\n super(\"UiServiceRegistry\", serviceMap, factories);\n }\n\n get<S extends ServiceTypesLike>(\n id: ServiceName<S>,\n ): ([unknown] extends [InferServiceUi<S>] ? Record<string, Function> : InferServiceUi<S>) | null;\n get(id: ServiceName): Record<string, Function> | null {\n return this.getById(id);\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"service_registry.js","names":[],"sources":["../../src/services/service_registry.ts"],"sourcesContent":["import type {\n ServiceTypesLike,\n InferServiceModel,\n InferServiceUi,\n ServiceName,\n ModelServiceFactoryMap,\n UiServiceFactoryMap,\n} from \"./service_types\";\nimport { ServiceNotRegisteredError } from \"../errors\";\nimport type { Services } from \"./service_declarations\";\n\ntype RegistryName = \"ModelServiceRegistry\" | \"UiServiceRegistry\";\ntype ServiceFactory = () => Record<string, Function>;\n\nclass ServiceRegistryBase {\n private readonly registryName: RegistryName;\n private readonly knownServices = new Set<ServiceName>();\n private readonly factories = new Map<ServiceName, ServiceFactory>();\n private readonly instances = new Map<ServiceName, Record<string, Function>>();\n\n protected constructor(\n registryName: RegistryName,\n serviceMap: Record<string, ServiceName>,\n factories: Record<string, (() => unknown) | null>,\n ) {\n this.registryName = registryName;\n for (const [key, factory] of Object.entries(factories)) {\n const serviceId = serviceMap[key];\n this.knownServices.add(serviceId);\n if (factory !== null) {\n this.factories.set(serviceId, factory as ServiceFactory);\n }\n }\n }\n\n async dispose(): Promise<void> {\n for (const instance of this.instances.values()) {\n if (Symbol.asyncDispose in instance) {\n await (instance as AsyncDisposable)[Symbol.asyncDispose]();\n } else if (Symbol.dispose in instance) {\n (instance as Disposable)[Symbol.dispose]();\n }\n }\n this.instances.clear();\n }\n\n protected getById(serviceId: ServiceName): Record<string, Function> | null {\n if (!this.knownServices.has(serviceId)) {\n throw new ServiceNotRegisteredError(\n `Service \"${serviceId}\" is not registered in ${this.registryName}. Add it to the factory map.`,\n );\n }\n if (this.instances.has(serviceId)) return this.instances.get(serviceId)!;\n\n const factory = this.factories.get(serviceId);\n if (!factory) return null;\n\n const instance = factory();\n this.instances.set(serviceId, instance);\n return instance;\n }\n}\n\nexport class ModelServiceRegistry<\n SMap extends Record<string, ServiceName> = typeof Services,\n> extends ServiceRegistryBase {\n constructor(serviceMap: SMap, factories: ModelServiceFactoryMap<SMap>) {\n super(\"ModelServiceRegistry\", serviceMap, factories);\n }\n\n get<S extends ServiceTypesLike>(\n id: ServiceName<S>,\n ):\n | ([unknown] extends [InferServiceModel<S>] ? Record<string, Function> : InferServiceModel<S>)\n | null;\n get(id: ServiceName): Record<string, Function> | null {\n return this.getById(id);\n }\n}\n\nexport class UiServiceRegistry<\n SMap extends Record<string, ServiceName> = typeof Services,\n> extends ServiceRegistryBase {\n constructor(serviceMap: SMap, factories: UiServiceFactoryMap<SMap>) {\n super(\"UiServiceRegistry\", serviceMap, factories);\n }\n\n get<S extends ServiceTypesLike>(\n id: ServiceName<S>,\n ): ([unknown] extends [InferServiceUi<S>] ? Record<string, Function> : InferServiceUi<S>) | null;\n get(id: ServiceName): Record<string, Function> | null {\n return this.getById(id);\n }\n}\n"],"mappings":";;AAcA,IAAM,sBAAN,MAA0B;CACxB;CACA,gCAAiC,IAAI,KAAkB;CACvD,4BAA6B,IAAI,KAAkC;CACnE,4BAA6B,IAAI,KAA4C;CAE7E,YACE,cACA,YACA,WACA;AACA,OAAK,eAAe;AACpB,OAAK,MAAM,CAAC,KAAK,YAAY,OAAO,QAAQ,UAAU,EAAE;GACtD,MAAM,YAAY,WAAW;AAC7B,QAAK,cAAc,IAAI,UAAU;AACjC,OAAI,YAAY,KACd,MAAK,UAAU,IAAI,WAAW,QAA0B;;;CAK9D,MAAM,UAAyB;AAC7B,OAAK,MAAM,YAAY,KAAK,UAAU,QAAQ,CAC5C,KAAI,OAAO,gBAAgB,SACzB,OAAO,SAA6B,OAAO,eAAe;WACjD,OAAO,WAAW,SAC1B,UAAwB,OAAO,UAAU;AAG9C,OAAK,UAAU,OAAO;;CAGxB,QAAkB,WAAyD;AACzE,MAAI,CAAC,KAAK,cAAc,IAAI,UAAU,CACpC,OAAM,IAAI,0BACR,YAAY,UAAU,yBAAyB,KAAK,aAAa,8BAClE;AAEH,MAAI,KAAK,UAAU,IAAI,UAAU,CAAE,QAAO,KAAK,UAAU,IAAI,UAAU;EAEvE,MAAM,UAAU,KAAK,UAAU,IAAI,UAAU;AAC7C,MAAI,CAAC,QAAS,QAAO;EAErB,MAAM,WAAW,SAAS;AAC1B,OAAK,UAAU,IAAI,WAAW,SAAS;AACvC,SAAO;;;AAIX,IAAa,uBAAb,cAEU,oBAAoB;CAC5B,YAAY,YAAkB,WAAyC;AACrE,QAAM,wBAAwB,YAAY,UAAU;;CAQtD,IAAI,IAAkD;AACpD,SAAO,KAAK,QAAQ,GAAG;;;AAI3B,IAAa,oBAAb,cAEU,oBAAoB;CAC5B,YAAY,YAAkB,WAAsC;AAClE,QAAM,qBAAqB,YAAY,UAAU;;CAMnD,IAAI,IAAkD;AACpD,SAAO,KAAK,QAAQ,GAAG"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
const require_errors = require(
|
|
2
|
-
|
|
1
|
+
const require_errors = require("../errors.cjs");
|
|
3
2
|
//#region src/services/service_types.ts
|
|
4
3
|
const SERVICE_ID_PATTERN = /^[a-zA-Z][a-zA-Z0-9]*$/;
|
|
5
4
|
const { service, isNodeService } = (() => {
|
|
@@ -22,9 +21,9 @@ const { service, isNodeService } = (() => {
|
|
|
22
21
|
function serviceFnKey(serviceId, method = "") {
|
|
23
22
|
return `service:${serviceId}:${method}`;
|
|
24
23
|
}
|
|
25
|
-
|
|
26
24
|
//#endregion
|
|
27
25
|
exports.isNodeService = isNodeService;
|
|
28
26
|
exports.service = service;
|
|
29
27
|
exports.serviceFnKey = serviceFnKey;
|
|
28
|
+
|
|
30
29
|
//# sourceMappingURL=service_types.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service_types.cjs","names":["ServiceInvalidIdError","ServiceAlreadyRegisteredError"],"sources":["../../src/services/service_types.ts"],"sourcesContent":["import type { Branded } from \"../branding\";\nimport { ServiceAlreadyRegisteredError, ServiceInvalidIdError } from \"../errors\";\nimport type { Services } from \"./service_declarations\";\n\nexport type ServiceTypesLike<\n Model = unknown,\n Ui = unknown,\n Kind extends ServiceType = ServiceType,\n> = {\n readonly __types?: { model: Model; ui: Ui; kind: Kind };\n};\n\nexport type InferServiceModel<S extends ServiceTypesLike> =\n S extends ServiceTypesLike<infer M, unknown, ServiceType> ? M : unknown;\n\nexport type InferServiceUi<S extends ServiceTypesLike> =\n S extends ServiceTypesLike<unknown, infer U, ServiceType> ? U : unknown;\n\nexport type InferServiceKind<S extends ServiceTypesLike> =\n S extends ServiceTypesLike<unknown, unknown, infer K> ? K : ServiceType;\n\nexport type ServiceName<S extends ServiceTypesLike = ServiceTypesLike> = Branded<string, S>;\n\nexport type ServiceType = \"node\" | \"wasm\";\n\nconst SERVICE_ID_PATTERN = /^[a-zA-Z][a-zA-Z0-9]*$/;\n\nexport const { service, isNodeService } = (() => {\n const typeMap = new Map<string, ServiceType>();\n return {\n service<Model, Ui>() {\n return <K extends ServiceType, N extends string>(options: {\n readonly type: K;\n readonly name: N;\n }): Branded<N, ServiceTypesLike<Model, Ui, K>> => {\n const { name, type } = options;\n if (!SERVICE_ID_PATTERN.test(name)) {\n throw new ServiceInvalidIdError(\n `Invalid service ID \"${name}\": must match ${SERVICE_ID_PATTERN}`,\n );\n }\n if (typeMap.has(name)) {\n throw new ServiceAlreadyRegisteredError(`Service \"${name}\" already registered`);\n }\n typeMap.set(name, type);\n return name as Branded<N, ServiceTypesLike<Model, Ui, K>>;\n };\n },\n isNodeService(id: ServiceName): boolean {\n return typeMap.get(id) === \"node\";\n },\n };\n})();\n\nexport function serviceFnKey(serviceId: string, method = \"\"): string {\n return `service:${serviceId}:${method}`;\n}\n\nexport type ServiceBrand<T> =\n T extends Branded<string, infer S extends ServiceTypesLike> ? S : never;\n\nexport type ModelServiceFactoryMap<SMap extends Record<string, ServiceName>> = {\n [K in keyof SMap]: (() => InferServiceModel<ServiceBrand<SMap[K]>>) | null;\n};\n\nexport type UiServiceFactoryMap<SMap extends Record<string, ServiceName>> = {\n [K in keyof SMap]: (() => InferServiceUi<ServiceBrand<SMap[K]>>) | null;\n};\n\n/** Contract between any service provider and any service consumer. */\nexport interface ServiceDispatch {\n getServiceNames(): ServiceName[];\n getServiceMethods(serviceId: ServiceName): string[];\n callServiceMethod(serviceId: ServiceName, method: string, ...args: unknown[]): unknown;\n}\n\n// Auto-derived types from the Services const in service_declarations.ts.\n// Adding a service to Services automatically updates all of these.\n\ntype SMap = typeof Services;\n\ntype ExtractServiceName<T> = T extends Branded<infer N extends string, any> ? N : never;\n\n/** Model-side service interfaces keyed by service name literal. */\nexport type ModelServices = {\n [K in keyof SMap as ExtractServiceName<SMap[K]>]: InferServiceModel<ServiceBrand<SMap[K]>>;\n};\n\n/** UI-side service interfaces keyed by service name literal. */\nexport type UiServices = {\n [K in keyof SMap as ExtractServiceName<SMap[K]>]: InferServiceUi<ServiceBrand<SMap[K]>>;\n};\n\n/** Map from Services keys to their unbranded string name literals. */\nexport type ServiceNameLiterals = {\n [K in keyof SMap]: ExtractServiceName<SMap[K]>;\n};\n\n/** Auto-derived requires* feature flags from Services keys. */\nexport type ServiceRequireFlags = {\n [K in keyof SMap as `requires${K & string}`]?: boolean;\n};\n\
|
|
1
|
+
{"version":3,"file":"service_types.cjs","names":["ServiceInvalidIdError","ServiceAlreadyRegisteredError"],"sources":["../../src/services/service_types.ts"],"sourcesContent":["import { UnionToIntersection } from \"@milaboratories/helpers\";\nimport type { Branded } from \"../branding\";\nimport { ServiceAlreadyRegisteredError, ServiceInvalidIdError } from \"../errors\";\nimport type { Services } from \"./service_declarations\";\n\nexport type ServiceTypesLike<\n Model = unknown,\n Ui = unknown,\n Kind extends ServiceType = ServiceType,\n> = {\n readonly __types?: { model: Model; ui: Ui; kind: Kind };\n};\n\nexport type InferServiceModel<S extends ServiceTypesLike> =\n S extends ServiceTypesLike<infer M, unknown, ServiceType> ? M : unknown;\n\nexport type InferServiceUi<S extends ServiceTypesLike> =\n S extends ServiceTypesLike<unknown, infer U, ServiceType> ? U : unknown;\n\nexport type InferServiceKind<S extends ServiceTypesLike> =\n S extends ServiceTypesLike<unknown, unknown, infer K> ? K : ServiceType;\n\nexport type ServiceName<S extends ServiceTypesLike = ServiceTypesLike> = Branded<string, S>;\n\nexport type ServiceType = \"node\" | \"wasm\";\n\nconst SERVICE_ID_PATTERN = /^[a-zA-Z][a-zA-Z0-9]*$/;\n\nexport const { service, isNodeService } = (() => {\n const typeMap = new Map<string, ServiceType>();\n return {\n service<Model, Ui>() {\n return <K extends ServiceType, N extends string>(options: {\n readonly type: K;\n readonly name: N;\n }): Branded<N, ServiceTypesLike<Model, Ui, K>> => {\n const { name, type } = options;\n if (!SERVICE_ID_PATTERN.test(name)) {\n throw new ServiceInvalidIdError(\n `Invalid service ID \"${name}\": must match ${SERVICE_ID_PATTERN}`,\n );\n }\n if (typeMap.has(name)) {\n throw new ServiceAlreadyRegisteredError(`Service \"${name}\" already registered`);\n }\n typeMap.set(name, type);\n return name as Branded<N, ServiceTypesLike<Model, Ui, K>>;\n };\n },\n isNodeService(id: ServiceName): boolean {\n return typeMap.get(id) === \"node\";\n },\n };\n})();\n\nexport function serviceFnKey(serviceId: string, method = \"\"): string {\n return `service:${serviceId}:${method}`;\n}\n\nexport type ServiceBrand<T> =\n T extends Branded<string, infer S extends ServiceTypesLike> ? S : never;\n\nexport type ModelServiceFactoryMap<SMap extends Record<string, ServiceName>> = {\n [K in keyof SMap]: (() => InferServiceModel<ServiceBrand<SMap[K]>>) | null;\n};\n\nexport type UiServiceFactoryMap<SMap extends Record<string, ServiceName>> = {\n [K in keyof SMap]: (() => InferServiceUi<ServiceBrand<SMap[K]>>) | null;\n};\n\n/** Contract between any service provider and any service consumer. */\nexport interface ServiceDispatch {\n getServiceNames(): ServiceName[];\n getServiceMethods(serviceId: ServiceName): string[];\n callServiceMethod(serviceId: ServiceName, method: string, ...args: unknown[]): unknown;\n}\n\n// Auto-derived types from the Services const in service_declarations.ts.\n// Adding a service to Services automatically updates all of these.\n\ntype SMap = typeof Services;\n\ntype ExtractServiceName<T> = T extends Branded<infer N extends string, any> ? N : never;\n\n/** Model-side service interfaces keyed by service name literal. */\nexport type ModelServices = {\n [K in keyof SMap as ExtractServiceName<SMap[K]>]: InferServiceModel<ServiceBrand<SMap[K]>>;\n};\n\n/** UI-side service interfaces keyed by service name literal. */\nexport type UiServices = {\n [K in keyof SMap as ExtractServiceName<SMap[K]>]: InferServiceUi<ServiceBrand<SMap[K]>>;\n};\n\n/** Map from Services keys to their unbranded string name literals. */\nexport type ServiceNameLiterals = {\n [K in keyof SMap]: ExtractServiceName<SMap[K]>;\n};\n\n/** Auto-derived requires* feature flags from Services keys. */\nexport type ServiceRequireFlags = {\n [K in keyof SMap as `requires${K & string}`]?: boolean;\n};\n\nexport type RequireServices<T extends ServiceName> = UnionToIntersection<\n T extends Branded<infer N extends string, infer S extends ServiceTypesLike>\n ? Record<N, InferServiceModel<S>>\n : never\n>;\n"],"mappings":";;AA0BA,MAAM,qBAAqB;AAE3B,MAAa,EAAE,SAAS,yBAAyB;CAC/C,MAAM,0BAAU,IAAI,KAA0B;AAC9C,QAAO;EACL,UAAqB;AACnB,WAAiD,YAGC;IAChD,MAAM,EAAE,MAAM,SAAS;AACvB,QAAI,CAAC,mBAAmB,KAAK,KAAK,CAChC,OAAM,IAAIA,eAAAA,sBACR,uBAAuB,KAAK,gBAAgB,qBAC7C;AAEH,QAAI,QAAQ,IAAI,KAAK,CACnB,OAAM,IAAIC,eAAAA,8BAA8B,YAAY,KAAK,sBAAsB;AAEjF,YAAQ,IAAI,MAAM,KAAK;AACvB,WAAO;;;EAGX,cAAc,IAA0B;AACtC,UAAO,QAAQ,IAAI,GAAG,KAAK;;EAE9B;IACC;AAEJ,SAAgB,aAAa,WAAmB,SAAS,IAAY;AACnE,QAAO,WAAW,UAAU,GAAG"}
|