@platforma-open/milaboratories.sequence-properties.model 1.2.3 → 1.3.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/.turbo/turbo-build.log +18 -16
- package/.turbo/turbo-check.log +4 -4
- package/.turbo/turbo-test.log +15 -0
- package/CHANGELOG.md +17 -0
- package/dist/bundle.js +198 -98
- package/dist/bundle.js.map +1 -1
- package/dist/dataModel.cjs +10 -2
- package/dist/dataModel.cjs.map +1 -1
- package/dist/dataModel.d.ts.map +1 -1
- package/dist/dataModel.js +10 -2
- package/dist/dataModel.js.map +1 -1
- package/dist/index.cjs +6 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/label.cjs +13 -0
- package/dist/label.cjs.map +1 -0
- package/dist/label.js +12 -0
- package/dist/label.js.map +1 -0
- package/dist/model.json +1 -1
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -5
- package/src/dataModel.test.ts +63 -0
- package/src/dataModel.ts +24 -6
- package/src/index.ts +3 -1
- package/src/label.test.ts +62 -0
- package/src/label.ts +17 -0
- package/src/types.ts +16 -4
- package/vitest.config.mts +8 -0
package/dist/bundle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","names":["defaultErrorMap","defaultErrorMap","defaultErrorMap","z.object","z.literal","z.string","z.object","z.number","z.object","z.string","z.unknown","z.enum","z.array","z.number","z.boolean","z.record","matchDomain","isNil","z.string","z.object","z.literal","z.string","isTypedArray","isNil$1","isNil","z.object","z.literal","z.string","z.lazy","z.union","platforma"],"sources":["../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/plugin_handle.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/block_storage.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/block_migrations.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/internal.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/block_storage_facade.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/config/actions.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/render/future.js","../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js","../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js","../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js","../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js","../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js","../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js","../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/bmodel/code.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/util.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/data_info.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/errors.js","../../node_modules/.pnpm/canonicalize@2.1.0/node_modules/canonicalize/lib/canonicalize.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/json.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/query/utils.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/table_calculate.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/ids.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/anchored.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/pool/spec.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/selectors.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/native_id.js","../../node_modules/.pnpm/@milaboratories+helpers@1.14.2/node_modules/@milaboratories/helpers/dist/utils.js","../../node_modules/.pnpm/@milaboratories+helpers@1.14.2/node_modules/@milaboratories/helpers/dist/objects.js","../../node_modules/.pnpm/@milaboratories+helpers@1.14.2/node_modules/@milaboratories/helpers/dist/error.js","../../node_modules/.pnpm/@milaboratories+helpers@1.14.2/node_modules/@milaboratories/helpers/dist/uniqId.js","../../node_modules/.pnpm/@milaboratories+helpers@1.14.2/node_modules/@milaboratories/helpers/dist/hash.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/linker_columns.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/driver.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/flags/block_flags.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/plid.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/ref.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/value_or_error.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/services/service_types.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/services/service_declarations.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/services/service_capabilities.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.41.2/node_modules/@milaboratories/pl-model-common/dist/services/service_injectors.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/render/accessor.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/render/internal.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/render/util/axis_filtering.js","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/function/identity.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isTypedArray.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/_internal/getTag.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isFunction.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isLength.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isNil.mjs","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/labels/derive_distinct_labels.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/render/util/label.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/render/util/pcolumn_data.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/render/util/column_collection.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/services/block_services.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/services/service_bridge.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/services/get_services.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/render/util/pframe_upgraders.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/render/api.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/package.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/version.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/bconfig/types.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/bconfig/normalization.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/plugin_model.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/block_storage_callbacks.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/block_model.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/pframe_utils/axes.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/pframe_utils/columns.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/components/PFrameForGraphs.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/filters/traverse.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/filters/converters/filterToQuery.js","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/predicate/isArguments.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/_internal/isPrototype.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/predicate/isEmpty.mjs","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/filters/distill.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/components/PlDataTable/state-migration.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/components/PlDataTable/createPlDataTable/utils.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/components/PlDataTable/labels.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js","../../node_modules/.pnpm/@platforma-sdk+model@1.75.5/node_modules/@platforma-sdk/model/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js","../../node_modules/.pnpm/json-stringify-safe@5.0.1/node_modules/json-stringify-safe/stringify.js","../../node_modules/.pnpm/@milaboratories+pl-error-like@1.12.10/node_modules/@milaboratories/pl-error-like/dist/error_like_shape.js","../src/dataModel.ts","../src/index.ts"],"sourcesContent":["//#region src/plugin_handle.ts\nconst PLUGIN_OUTPUT_PREFIX = \"plugin-output#\";\n/** Construct the output key for a plugin output in the block outputs map. */\nfunction pluginOutputKey(handle, outputKey) {\n\treturn `${PLUGIN_OUTPUT_PREFIX}${handle}#${outputKey}`;\n}\n/** Check whether an output key belongs to a plugin (vs block-level output). */\nfunction isPluginOutputKey(key) {\n\treturn key.startsWith(PLUGIN_OUTPUT_PREFIX);\n}\n/** Get the prefix used for all outputs of a specific plugin instance. */\nfunction pluginOutputPrefix(handle) {\n\treturn pluginOutputKey(handle, \"\");\n}\n//#endregion\nexport { isPluginOutputKey, pluginOutputKey, pluginOutputPrefix };\n\n//# sourceMappingURL=plugin_handle.js.map","import { isDataUnrecoverableError } from \"./block_migrations.js\";\n//#region src/block_storage.ts\n/**\n* Discriminator key for BlockStorage format detection.\n* This unique hash-based key identifies data as BlockStorage vs legacy formats.\n*/\nconst BLOCK_STORAGE_KEY = \"__pl_a7f3e2b9__\";\n/**\n* Default data version for new blocks without migrations.\n* Unique identifier ensures blocks are created via DataModel API.\n*/\nconst DATA_MODEL_LEGACY_VERSION = \"__pl_v1_d4e8f2a1__\";\n/**\n* Type guard to check if a value is a valid BlockStorage object.\n* Checks for the discriminator key and valid schema version.\n*/\nfunction isBlockStorage(value) {\n\tif (value === null || typeof value !== \"object\") return false;\n\treturn value[BLOCK_STORAGE_KEY] === \"v1\";\n}\n/**\n* Creates a BlockStorage with the given initial data\n*\n* @param initialData - The initial data value (defaults to empty object)\n* @param version - The initial data version key (defaults to DATA_MODEL_LEGACY_VERSION)\n* @returns A new BlockStorage instance with discriminator key\n*/\nfunction createBlockStorage(initialData = {}, version = DATA_MODEL_LEGACY_VERSION) {\n\treturn {\n\t\t[BLOCK_STORAGE_KEY]: \"v1\",\n\t\t__dataVersion: version,\n\t\t__data: initialData,\n\t\t__pluginRegistry: {},\n\t\t__plugins: {}\n\t};\n}\n/**\n* Normalizes raw storage data to BlockStorage format.\n* If the input is already a BlockStorage, returns it as-is (with defaults for missing fields).\n* If the input is legacy format (raw state), wraps it in BlockStorage structure.\n*\n* @param raw - Raw storage data (may be legacy format or BlockStorage)\n* @returns Normalized BlockStorage\n*/\nfunction normalizeBlockStorage(raw) {\n\tif (isBlockStorage(raw)) {\n\t\tconst storage = raw;\n\t\treturn {\n\t\t\t...storage,\n\t\t\t__dataVersion: typeof storage.__dataVersion === \"number\" ? DATA_MODEL_LEGACY_VERSION : storage.__dataVersion,\n\t\t\t__pluginRegistry: storage.__pluginRegistry ?? {},\n\t\t\t__plugins: storage.__plugins ?? {}\n\t\t};\n\t}\n\treturn createBlockStorage(raw);\n}\n/**\n* Gets the data from BlockStorage\n*\n* @param storage - The BlockStorage instance\n* @returns The data value\n*/\nfunction getStorageData(storage) {\n\treturn storage.__data;\n}\n/**\n* Derives data from raw block storage.\n* This function is meant to be called from sdk/ui-vue to extract\n* user-facing data from the raw storage returned by the middle layer.\n*\n* The middle layer returns raw storage (opaque to it), and the UI\n* uses this function to derive the actual data value.\n*\n* @param rawStorage - Raw storage data from middle layer (may be any format)\n* @returns The extracted data value, or undefined if storage is undefined/null\n*/\nfunction deriveDataFromStorage(rawStorage) {\n\treturn getStorageData(normalizeBlockStorage(rawStorage));\n}\n/**\n* Updates the data in BlockStorage (immutable)\n*\n* @param storage - The current BlockStorage\n* @param payload - The update payload with operation and value\n* @returns A new BlockStorage with updated data\n*/\nfunction updateStorageData(storage, payload) {\n\tswitch (payload.operation) {\n\t\tcase \"update-block-data\": return {\n\t\t\t...storage,\n\t\t\t__data: payload.value\n\t\t};\n\t\tcase \"update-plugin-data\": {\n\t\t\tconst { pluginId, value } = payload;\n\t\t\tconst currentPlugins = storage.__plugins ?? {};\n\t\t\tconst version = currentPlugins[pluginId]?.__dataVersion ?? \"__pl_v1_d4e8f2a1__\";\n\t\t\treturn {\n\t\t\t\t...storage,\n\t\t\t\t__plugins: {\n\t\t\t\t\t...currentPlugins,\n\t\t\t\t\t[pluginId]: {\n\t\t\t\t\t\t__dataVersion: version,\n\t\t\t\t\t\t__data: value\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tdefault: throw new Error(`Unknown storage operation: ${payload.operation}`);\n\t}\n}\n/**\n* Performs atomic migration of block storage including block data and all plugins.\n*\n* Migration is atomic: either everything succeeds and a new storage is returned,\n* or an error is returned and the original storage is completely untouched.\n*\n* Migration steps:\n* 1. Migrate block data\n* 2. For each plugin in newPluginRegistry:\n* - If plugin exists with same name: migrate its data\n* - Otherwise (new or type changed): create with initial data\n* Plugins not in newPluginRegistry are dropped.\n*\n* If any step throws, migration fails and original storage is preserved.\n* User can then choose to:\n* - Abort: keep original storage, don't update block\n* - Reset: call createBlockStorage() to start fresh\n*\n* @param storage - The original storage (will not be modified)\n* @param config - Migration configuration\n* @returns Migration result - either success with new storage, or failure with error info\n*\n* @example\n* const result = migrateBlockStorage(storage, {\n* migrateBlockData: (versioned) => blockDataModel.migrate(versioned),\n* migratePluginData: (pluginId, versioned) => getPluginModel(pluginId).migrate(versioned),\n* newPluginRegistry: { table1: 'dataTable' as PluginName },\n* createPluginData: (pluginId) => getPluginModel(pluginId).getDefaultData(),\n* });\n*\n* if (result.success) {\n* commitStorage(result.storage);\n* } else {\n* const userChoice = await askUser(`Migration failed: ${result.error}. Reset data?`);\n* if (userChoice === 'reset') {\n* commitStorage(createBlockStorage(initialData, currentVersion));\n* }\n* // else: abort, keep original\n* }\n*/\nfunction migrateBlockStorage(storage, config) {\n\tconst { migrateBlockData, migratePluginData, newPluginRegistry, createPluginData } = config;\n\tlet migratedData;\n\tlet newVersion;\n\tlet transfers;\n\ttry {\n\t\tconst result = migrateBlockData({\n\t\t\tversion: storage.__dataVersion,\n\t\t\tdata: storage.__data\n\t\t});\n\t\tmigratedData = result.data;\n\t\tnewVersion = result.version;\n\t\ttransfers = result.transfers;\n\t} catch (error) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\tfailedAt: \"block\"\n\t\t};\n\t}\n\tconst oldPlugins = storage.__plugins ?? {};\n\tconst oldRegistry = storage.__pluginRegistry ?? {};\n\tconst newPlugins = {};\n\tfor (const [key, pluginName] of Object.entries(newPluginRegistry)) {\n\t\tconst handle = key;\n\t\tconst existingEntry = oldPlugins[handle];\n\t\tconst existingName = oldRegistry[handle];\n\t\ttry {\n\t\t\tif (existingEntry && existingName === pluginName) {\n\t\t\t\tconst migrated = migratePluginData(handle, {\n\t\t\t\t\tversion: existingEntry.__dataVersion,\n\t\t\t\t\tdata: existingEntry.__data\n\t\t\t\t});\n\t\t\t\tif (migrated) newPlugins[handle] = {\n\t\t\t\t\t__dataVersion: migrated.version,\n\t\t\t\t\t__data: migrated.data\n\t\t\t\t};\n\t\t\t} else if (existingEntry) {\n\t\t\t\tlet recovered = false;\n\t\t\t\ttry {\n\t\t\t\t\tconst migrated = migratePluginData(handle, {\n\t\t\t\t\t\tversion: DATA_MODEL_LEGACY_VERSION,\n\t\t\t\t\t\tdata: existingEntry.__data\n\t\t\t\t\t});\n\t\t\t\t\tif (migrated) {\n\t\t\t\t\t\tnewPlugins[handle] = {\n\t\t\t\t\t\t\t__dataVersion: migrated.version,\n\t\t\t\t\t\t\t__data: migrated.data\n\t\t\t\t\t\t};\n\t\t\t\t\t\trecovered = true;\n\t\t\t\t\t}\n\t\t\t\t} catch (recoverError) {\n\t\t\t\t\tif (!isDataUnrecoverableError(recoverError)) throw recoverError;\n\t\t\t\t}\n\t\t\t\tif (!recovered) {\n\t\t\t\t\tconst transfer = transfers[handle];\n\t\t\t\t\tconst initial = createPluginData(handle, transfer);\n\t\t\t\t\tnewPlugins[handle] = {\n\t\t\t\t\t\t__dataVersion: initial.version,\n\t\t\t\t\t\t__data: initial.data\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst transfer = transfers[handle];\n\t\t\t\tconst initial = createPluginData(handle, transfer);\n\t\t\t\tnewPlugins[handle] = {\n\t\t\t\t\t__dataVersion: initial.version,\n\t\t\t\t\t__data: initial.data\n\t\t\t\t};\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\tfailedAt: handle\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tsuccess: true,\n\t\tstorage: {\n\t\t\t[BLOCK_STORAGE_KEY]: \"v1\",\n\t\t\t__dataVersion: newVersion,\n\t\t\t__data: migratedData,\n\t\t\t__pluginRegistry: newPluginRegistry,\n\t\t\t__plugins: newPlugins\n\t\t}\n\t};\n}\n/**\n* Gets plugin-specific data from block storage.\n* Accepts raw storage (any format) and normalizes internally.\n*\n* When called with a typed PluginHandle<F>, the return type is automatically\n* inferred from the factory's phantom `__types.data` field.\n*\n* @param rawStorage - Raw block storage (may be legacy format or BlockStorage)\n* @param handle - The plugin handle (branded plugin instance id)\n* @returns The plugin data, typed via factory inference\n* @throws If plugin is not found in storage\n*/\nfunction getPluginData(rawStorage, handle) {\n\tconst pluginEntry = normalizeBlockStorage(rawStorage).__plugins?.[handle];\n\tif (!pluginEntry) throw new Error(`Plugin '${handle}' not found in block storage`);\n\treturn pluginEntry.__data;\n}\n//#endregion\nexport { BLOCK_STORAGE_KEY, DATA_MODEL_LEGACY_VERSION, createBlockStorage, deriveDataFromStorage, getPluginData, getStorageData, isBlockStorage, migrateBlockStorage, normalizeBlockStorage, updateStorageData };\n\n//# sourceMappingURL=block_storage.js.map","import { DATA_MODEL_LEGACY_VERSION } from \"./block_storage.js\";\n//#region src/block_migrations.ts\n/** Create a DataVersioned wrapper with correct shape */\nfunction makeVersionedData(version, data) {\n\treturn {\n\t\tversion,\n\t\tdata\n\t};\n}\n/** Thrown by recover() to signal unrecoverable data. */\nvar DataUnrecoverableError = class extends Error {\n\tname = \"DataUnrecoverableError\";\n\tconstructor(dataVersion) {\n\t\tsuper(`Unknown version '${dataVersion}'`);\n\t}\n};\nfunction isDataUnrecoverableError(error) {\n\treturn error instanceof Error && error.name === \"DataUnrecoverableError\";\n}\n/**\n* Default recover function for unknown versions.\n* Use as fallback at the end of custom recover functions.\n*\n* @example\n* .recover((version, data) => {\n* if (version === 'legacy') {\n* return transformLegacyData(data);\n* }\n* return defaultRecover(version, data);\n* })\n*/\nconst defaultRecover = (version, _data) => {\n\tthrow new DataUnrecoverableError(version);\n};\n/** Symbol for internal builder creation method */\nconst FROM_BUILDER = Symbol(\"fromBuilder\");\n/**\n* Abstract base for both migration chain types.\n* Holds shared state, buildStep() helper, and init().\n* migrate() cannot be shared due to a TypeScript limitation: when the base class\n* migrate() return type is abstract, subclasses cannot narrow it without losing type safety.\n* Each subclass therefore owns its migrate() with the correct concrete return type.\n*\n* @internal\n*/\nvar MigrationChainBase = class {\n\tversionChain;\n\tmigrationSteps;\n\ttransferSteps;\n\tconstructor(state) {\n\t\tthis.versionChain = state.versionChain;\n\t\tthis.migrationSteps = state.steps;\n\t\tthis.transferSteps = state.transferSteps ?? [];\n\t}\n\t/** Appends a migration step and returns the new versionChain and steps arrays. */\n\tbuildStep(nextVersion, fn) {\n\t\tif (this.versionChain.includes(nextVersion)) throw new Error(`Duplicate version '${nextVersion}' in migration chain`);\n\t\tconst step = {\n\t\t\tfromVersion: this.versionChain[this.versionChain.length - 1],\n\t\t\ttoVersion: nextVersion,\n\t\t\tmigrate: fn\n\t\t};\n\t\treturn {\n\t\t\tversionChain: [...this.versionChain, nextVersion],\n\t\t\tsteps: [...this.migrationSteps, step]\n\t\t};\n\t}\n\t/** Validates uniqueness and records a TransferStep. */\n\tbuildTransfer(target, extract) {\n\t\tif (this.transferSteps.some((t) => t.pluginId === target.id)) throw new Error(`Duplicate transfer for plugin '${target.id}'`);\n\t\tconst entry = {\n\t\t\tpluginId: target.id,\n\t\t\tbeforeStepIndex: this.migrationSteps.length,\n\t\t\textract,\n\t\t\ttargetVersion: target.transferVersion\n\t\t};\n\t\treturn { transferSteps: [...this.transferSteps, entry] };\n\t}\n\t/** Returns recover-specific fields for DataModel construction. Overridden by WithRecover. */\n\trecoverState() {\n\t\treturn {};\n\t}\n\t/**\n\t* Finalize the DataModel with initial data factory.\n\t*\n\t* @param initialData - Factory function returning the initial state\n\t* @returns Finalized DataModel instance\n\t*/\n\tinit(initialData) {\n\t\treturn DataModel[FROM_BUILDER]({\n\t\t\tversionChain: this.versionChain,\n\t\t\tsteps: this.migrationSteps,\n\t\t\ttransferSteps: this.transferSteps,\n\t\t\tinitialDataFn: initialData,\n\t\t\t...this.recoverState()\n\t\t});\n\t}\n};\n/**\n* Migration chain after recover() or upgradeLegacy() has been called.\n* Further migrate() and transfer() calls are allowed; recover() and upgradeLegacy() are not\n* (enforced by type — no such methods on this class).\n*\n* @typeParam Current - Data type at the current point in the chain\n* @typeParam Transfers - Accumulated transfer types keyed by plugin ID\n* @internal\n*/\nvar DataModelMigrationChainWithRecover = class DataModelMigrationChainWithRecover extends MigrationChainBase {\n\trecoverFn;\n\trecoverFromIndex;\n\t/** @internal */\n\tconstructor(state) {\n\t\tsuper(state);\n\t\tthis.recoverFn = state.recoverFn;\n\t\tthis.recoverFromIndex = state.recoverFromIndex;\n\t}\n\trecoverState() {\n\t\treturn {\n\t\t\trecoverFn: this.recoverFn,\n\t\t\trecoverFromIndex: this.recoverFromIndex\n\t\t};\n\t}\n\t/**\n\t* Add a migration step. Same semantics as on the base chain.\n\t* recover() and upgradeLegacy() are not available — one has already been called.\n\t*/\n\tmigrate(nextVersion, fn) {\n\t\tconst { versionChain, steps } = this.buildStep(nextVersion, fn);\n\t\treturn new DataModelMigrationChainWithRecover({\n\t\t\tversionChain,\n\t\t\tsteps,\n\t\t\ttransferSteps: this.transferSteps,\n\t\t\trecoverFn: this.recoverFn,\n\t\t\trecoverFromIndex: this.recoverFromIndex\n\t\t});\n\t}\n\t/**\n\t* Extract data at the current chain position for seeding a new plugin.\n\t* The extract function's return type must match the plugin's transfer data type.\n\t* Duplicate plugin IDs are rejected at both type and runtime level.\n\t*/\n\ttransfer(target, extract) {\n\t\tconst { transferSteps } = this.buildTransfer(target, extract);\n\t\treturn new DataModelMigrationChainWithRecover({\n\t\t\tversionChain: this.versionChain,\n\t\t\tsteps: this.migrationSteps,\n\t\t\ttransferSteps,\n\t\t\trecoverFn: this.recoverFn,\n\t\t\trecoverFromIndex: this.recoverFromIndex\n\t\t});\n\t}\n};\n/**\n* Migration chain builder.\n* Each migrate() call advances the current data type. recover() can be called once\n* at any point — it removes itself from the returned chain so it cannot be called again.\n* Duplicate version keys throw at runtime.\n*\n* @typeParam Current - Data type at the current point in the migration chain\n* @typeParam Transfers - Accumulated transfer types keyed by plugin ID\n* @internal\n*/\nvar DataModelMigrationChain = class DataModelMigrationChain extends MigrationChainBase {\n\t/** @internal */\n\tconstructor({ versionChain, steps = [], transferSteps = [] }) {\n\t\tsuper({\n\t\t\tversionChain,\n\t\t\tsteps,\n\t\t\ttransferSteps\n\t\t});\n\t}\n\t/**\n\t* Add a migration step transforming data from the current version to the next.\n\t*\n\t* @typeParam Next - Data type of the next version\n\t* @param nextVersion - Version key to migrate to (must be unique in the chain)\n\t* @param fn - Migration function\n\t* @returns Builder with the next version as current\n\t*\n\t* @example\n\t* .migrate<BlockDataV2>(\"v2\", (v1) => ({ ...v1, labels: [] }))\n\t*/\n\tmigrate(nextVersion, fn) {\n\t\tconst { versionChain, steps } = this.buildStep(nextVersion, fn);\n\t\treturn new DataModelMigrationChain({\n\t\t\tversionChain,\n\t\t\tsteps,\n\t\t\ttransferSteps: this.transferSteps\n\t\t});\n\t}\n\t/**\n\t* Extract data at the current chain position for seeding a new plugin.\n\t* The extract function's return type must match the plugin's transfer data type.\n\t* Duplicate plugin IDs are rejected at both type and runtime level.\n\t*\n\t* Calling .transfer() on DataModelInitialChain returns DataModelMigrationChain,\n\t* which removes .upgradeLegacy() from the chain (preventing a problematic combination).\n\t*\n\t* @example\n\t* .from<V1>(\"v1\")\n\t* .transfer(tablePlugin, (v1) => ({ state: v1.tableState }))\n\t* .migrate<V2>(\"v2\", ({ tableState: _, ...rest }) => rest)\n\t*/\n\ttransfer(target, extract) {\n\t\tconst { transferSteps } = this.buildTransfer(target, extract);\n\t\treturn new DataModelMigrationChain({\n\t\t\tversionChain: this.versionChain,\n\t\t\tsteps: this.migrationSteps,\n\t\t\ttransferSteps\n\t\t});\n\t}\n\t/**\n\t* Set a recovery handler for unknown or legacy versions.\n\t*\n\t* The recover function is called when data has a version not in the migration chain.\n\t* It must return data of the type at this point in the chain (Current). Any migrate()\n\t* steps added after recover() will then run on the recovered data.\n\t*\n\t* Can only be called once — the returned chain has no recover() method.\n\t*\n\t* @param fn - Recovery function returning Current (the type at this chain position)\n\t* @returns Builder with migrate() and init() but without recover()\n\t*\n\t* @example\n\t* // Recover between migrations — recovered data goes through v3 migration\n\t* new DataModelBuilder<V1>(\"v1\")\n\t* .migrate<V2>(\"v2\", (v1) => ({ ...v1, label: \"\" }))\n\t* .recover((version, data) => {\n\t* if (version === 'legacy') return transformLegacy(data); // returns V2\n\t* return defaultRecover(version, data);\n\t* })\n\t* .migrate<V3>(\"v3\", (v2) => ({ ...v2, description: \"\" }))\n\t* .init(() => ({ count: 0, label: \"\", description: \"\" }));\n\t*/\n\trecover(fn) {\n\t\treturn new DataModelMigrationChainWithRecover({\n\t\t\tversionChain: this.versionChain,\n\t\t\tsteps: this.migrationSteps,\n\t\t\ttransferSteps: this.transferSteps,\n\t\t\trecoverFn: fn,\n\t\t\trecoverFromIndex: this.migrationSteps.length\n\t\t});\n\t}\n};\n/**\n* Initial migration chain returned by `.from()`.\n* Extends DataModelMigrationChain with `upgradeLegacy()` — available only before\n* any `.migrate()` calls, since legacy data always arrives at the initial version.\n*\n* @typeParam Current - Data type at the initial version\n* @typeParam Transfers - Accumulated transfer types keyed by plugin ID\n* @internal\n*/\nvar DataModelInitialChain = class extends DataModelMigrationChain {\n\t/**\n\t* Handle legacy V1 model state ({ args, uiState }) when upgrading a block from\n\t* BlockModel V1 to BlockModelV3.\n\t*\n\t* When a V1 block is upgraded, its stored state `{ args, uiState }` is normalized\n\t* to the internal default version. This method inserts a migration step from that\n\t* internal version to the version specified in `.from()`, using the provided typed\n\t* callback to transform the legacy shape. Non-legacy data passes through unchanged.\n\t*\n\t* Must be called right after `.from()` — not available after `.migrate()` calls.\n\t* Any `.migrate()` steps added after `upgradeLegacy()` will run on the transformed result.\n\t*\n\t* Can only be called once — the returned chain has no upgradeLegacy() method.\n\t* Mutually exclusive with recover().\n\t*\n\t* @typeParam Args - Type of the legacy block args\n\t* @typeParam UiState - Type of the legacy block uiState\n\t* @param fn - Typed transform from { args, uiState } to Current\n\t* @returns Builder with migrate() and init() but without recover() or upgradeLegacy()\n\t*\n\t* @example\n\t* type OldArgs = { inputFile: string; threshold: number };\n\t* type OldUiState = { selectedTab: string };\n\t* type BlockData = { inputFile: string; threshold: number; selectedTab: string };\n\t*\n\t* const dataModel = new DataModelBuilder()\n\t* .from<BlockData>(\"v1\")\n\t* .upgradeLegacy<OldArgs, OldUiState>(({ args, uiState }) => ({\n\t* inputFile: args.inputFile,\n\t* threshold: args.threshold,\n\t* selectedTab: uiState.selectedTab,\n\t* }))\n\t* .init(() => ({ inputFile: '', threshold: 0, selectedTab: 'main' }));\n\t*/\n\tupgradeLegacy(fn) {\n\t\tconst wrappedFn = (data) => {\n\t\t\tif (data !== null && typeof data === \"object\" && \"args\" in data) return fn(data);\n\t\t\treturn data;\n\t\t};\n\t\tconst step = {\n\t\t\tfromVersion: DATA_MODEL_LEGACY_VERSION,\n\t\t\ttoVersion: this.versionChain[0],\n\t\t\tmigrate: wrappedFn\n\t\t};\n\t\treturn new DataModelMigrationChainWithRecover({\n\t\t\tversionChain: [DATA_MODEL_LEGACY_VERSION, ...this.versionChain],\n\t\t\tsteps: [step, ...this.migrationSteps],\n\t\t\ttransferSteps: this.transferSteps.map((t) => ({\n\t\t\t\t...t,\n\t\t\t\tbeforeStepIndex: t.beforeStepIndex + 1\n\t\t\t}))\n\t\t});\n\t}\n};\n/**\n* Builder entry point for creating DataModel with type-safe migrations.\n*\n* @example\n* // Simple (no migrations):\n* const dataModel = new DataModelBuilder()\n* .from<BlockData>(\"v1\")\n* .init(() => ({ numbers: [] }));\n*\n* @example\n* // With migrations:\n* const dataModel = new DataModelBuilder()\n* .from<BlockDataV1>(\"v1\")\n* .migrate<BlockDataV2>(\"v2\", (v1) => ({ ...v1, labels: [] }))\n* .migrate<BlockDataV3>(\"v3\", (v2) => ({ ...v2, description: '' }))\n* .init(() => ({ numbers: [], labels: [], description: '' }));\n*\n* @example\n* // With recover() between migrations — recovered data goes through remaining migrations:\n* const dataModelChain = new DataModelBuilder()\n* .from<BlockDataV1>(\"v1\")\n* .migrate<BlockDataV2>(\"v2\", (v1) => ({ ...v1, labels: [] }));\n*\n* // recover() placed before the v3 migration: recovered data goes through v3\n* const dataModel = dataModelChain\n* .recover((version, data) => {\n* if (version === 'legacy' && isLegacyData(data)) return transformLegacy(data); // returns V2\n* return defaultRecover(version, data);\n* })\n* .migrate<BlockDataV3>(\"v3\", (v2) => ({ ...v2, description: '' }))\n* .init(() => ({ numbers: [], labels: [], description: '' }));\n*\n* @example\n* // With upgradeLegacy() — typed upgrade from BlockModel V1 state:\n* type OldArgs = { inputFile: string };\n* type OldUiState = { selectedTab: string };\n* type BlockData = { inputFile: string; selectedTab: string };\n*\n* const dataModel = new DataModelBuilder()\n* .from<BlockData>(\"v1\")\n* .upgradeLegacy<OldArgs, OldUiState>(({ args, uiState }) => ({\n* inputFile: args.inputFile,\n* selectedTab: uiState.selectedTab,\n* }))\n* .init(() => ({ inputFile: '', selectedTab: 'main' }));\n*/\nvar DataModelBuilder = class {\n\t/**\n\t* Start the migration chain with the given initial data type and version key.\n\t*\n\t* @typeParam T - Data type for the initial version\n\t* @param initialVersion - Version key string (e.g. \"v1\")\n\t* @returns Migration chain builder\n\t*/\n\tfrom(initialVersion) {\n\t\treturn new DataModelInitialChain({ versionChain: [initialVersion] });\n\t}\n};\n/**\n* DataModel defines the block's data structure, initial values, and migrations.\n* Used by BlockModelV3 to manage data state.\n*\n* Use `new DataModelBuilder()` to create a DataModel.\n*\n* @example\n* // With recover() between migrations:\n* // Recovered data (V2) goes through the v2→v3 migration automatically.\n* const dataModel = new DataModelBuilder()\n* .from<V1>(\"v1\")\n* .migrate<V2>(\"v2\", (v1) => ({ ...v1, label: \"\" }))\n* .recover((version, data) => {\n* if (version === \"legacy\") return transformLegacy(data); // returns V2\n* return defaultRecover(version, data);\n* })\n* .migrate<V3>(\"v3\", (v2) => ({ ...v2, description: \"\" }))\n* .init(() => ({ count: 0, label: \"\", description: \"\" }));\n*/\nvar DataModel = class DataModel {\n\t/** Latest version key — O(1) access for the common \"already current\" check. */\n\tlatestVersion;\n\t/** Maps each known version key to the index of the first step to run from it. O(1) lookup. */\n\tstepsByFromVersion;\n\tsteps;\n\ttransferSteps;\n\tinitialDataFn;\n\trecoverFn;\n\trecoverFromIndex;\n\tconstructor({ versionChain, steps, transferSteps = [], initialDataFn, recoverFn = defaultRecover, recoverFromIndex }) {\n\t\tif (versionChain.length === 0) throw new Error(\"DataModel requires at least one version key\");\n\t\tthis.latestVersion = versionChain[versionChain.length - 1];\n\t\tthis.stepsByFromVersion = new Map(versionChain.map((v, i) => [v, i]));\n\t\tthis.steps = steps;\n\t\tthis.transferSteps = transferSteps;\n\t\tthis.initialDataFn = initialDataFn;\n\t\tthis.recoverFn = recoverFn;\n\t\tthis.recoverFromIndex = recoverFromIndex ?? steps.length;\n\t}\n\t/**\n\t* Internal method for creating DataModel from builder.\n\t* Uses Symbol key to prevent external access.\n\t* @internal\n\t*/\n\tstatic [FROM_BUILDER](state) {\n\t\treturn new DataModel(state);\n\t}\n\t/**\n\t* The latest (current) version key in the migration chain.\n\t*/\n\tget version() {\n\t\treturn this.latestVersion;\n\t}\n\t/**\n\t* Get a fresh copy of the initial data.\n\t*/\n\tinitialData() {\n\t\treturn this.initialDataFn();\n\t}\n\t/**\n\t* Get initial data wrapped with current version.\n\t* Used when creating new blocks or resetting to defaults.\n\t*/\n\tgetDefaultData() {\n\t\treturn makeVersionedData(this.latestVersion, this.initialDataFn());\n\t}\n\trecoverFrom(data, version) {\n\t\tlet currentData = this.recoverFn(version, data);\n\t\tfor (let i = this.recoverFromIndex; i < this.steps.length; i++) currentData = this.steps[i].migrate(currentData);\n\t\treturn {\n\t\t\tversion: this.latestVersion,\n\t\t\tdata: currentData\n\t\t};\n\t}\n\t/**\n\t* Migrate versioned data from any version to the latest.\n\t* Collects transfer extractions at their designated chain positions.\n\t*\n\t* - If version is in chain, applies needed migrations (O(1) lookup)\n\t* - If version is unknown, attempts recovery; falls back to initial data\n\t* - If a migration step fails, throws so the caller can preserve original data\n\t*\n\t* Transfers only fire during normal step-by-step migration:\n\t* - Recovery path: returns empty transfers\n\t* - Fast-path (already at latest): returns empty transfers\n\t*\n\t* @param versioned - Data with version tag\n\t* @returns Migrated data at the latest version with transfer record\n\t* @throws If a migration step from a known version fails\n\t*/\n\tmigrate(versioned) {\n\t\tconst { version: fromVersion, data } = versioned;\n\t\tif (fromVersion === this.latestVersion) return {\n\t\t\tversion: this.latestVersion,\n\t\t\tdata,\n\t\t\ttransfers: {}\n\t\t};\n\t\tconst startIndex = this.stepsByFromVersion.get(fromVersion);\n\t\tif (startIndex === void 0) try {\n\t\t\treturn {\n\t\t\t\t...this.recoverFrom(data, fromVersion),\n\t\t\t\ttransfers: {}\n\t\t\t};\n\t\t} catch {\n\t\t\treturn {\n\t\t\t\t...this.getDefaultData(),\n\t\t\t\ttransfers: {}\n\t\t\t};\n\t\t}\n\t\tlet currentData = data;\n\t\tconst transfers = {};\n\t\tfor (let i = startIndex; i < this.steps.length; i++) {\n\t\t\tfor (const t of this.transferSteps) if (t.beforeStepIndex === i) transfers[t.pluginId] = {\n\t\t\t\tversion: t.targetVersion,\n\t\t\t\tdata: t.extract(currentData)\n\t\t\t};\n\t\t\tcurrentData = this.steps[i].migrate(currentData);\n\t\t}\n\t\tfor (const t of this.transferSteps) if (t.beforeStepIndex >= this.steps.length && t.beforeStepIndex >= startIndex) transfers[t.pluginId] = {\n\t\t\tversion: t.targetVersion,\n\t\t\tdata: t.extract(currentData)\n\t\t};\n\t\treturn {\n\t\t\tversion: this.latestVersion,\n\t\t\tdata: currentData,\n\t\t\ttransfers\n\t\t};\n\t}\n};\n//#endregion\nexport { DataModel, DataModelBuilder, isDataUnrecoverableError };\n\n//# sourceMappingURL=block_migrations.js.map","//#region src/internal.ts\n/** Utility code helping to identify whether the code is running in actual UI environment */\nfunction isInUI() {\n\treturn typeof globalThis.getPlatforma !== \"undefined\" || typeof globalThis.platforma !== \"undefined\";\n}\n/** Utility code helping to retrieve a platforma instance form the environment */\nfunction getPlatformaInstance(config) {\n\tif (config && typeof globalThis.getPlatforma === \"function\") return globalThis.getPlatforma(config);\n\telse if (typeof globalThis.platforma !== \"undefined\") return globalThis.platforma;\n\telse throw new Error(\"Can't get platforma instance.\");\n}\nfunction tryGetCfgRenderCtx() {\n\tif (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n\telse return void 0;\n}\nfunction getCfgRenderCtx() {\n\tif (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n\telse throw new Error(\"Not in config rendering context\");\n}\nfunction tryRegisterCallback(key, callback) {\n\tconst ctx = tryGetCfgRenderCtx();\n\tif (ctx === void 0) return false;\n\tif (key in ctx.callbackRegistry) throw new Error(`Callback with key ${key} already registered.`);\n\tctx.callbackRegistry[key] = callback;\n\treturn true;\n}\n/**\n* Registers a callback, replacing any existing callback with the same key.\n* Use this for callbacks that have a default value but can be overridden.\n*\n* @param key - The callback registry key\n* @param callback - The callback function to register\n* @returns true if registered, false if not in render context\n*/\nfunction replaceCallback(key, callback) {\n\tconst ctx = tryGetCfgRenderCtx();\n\tif (ctx === void 0) return false;\n\tctx.callbackRegistry[key] = callback;\n\treturn true;\n}\n/** Creates a ConfigRenderLambda descriptor without registering a callback. */\nfunction createRenderLambda(opts) {\n\tconst { handle, ...flags } = opts;\n\treturn {\n\t\t__renderLambda: true,\n\t\thandle,\n\t\t...flags\n\t};\n}\n/** Registers a callback and returns a ConfigRenderLambda descriptor. */\nfunction createAndRegisterRenderLambda(opts, replace) {\n\tconst { handle, lambda, ...flags } = opts;\n\tif (replace) replaceCallback(handle, lambda);\n\telse tryRegisterCallback(handle, lambda);\n\treturn createRenderLambda({\n\t\thandle,\n\t\t...flags\n\t});\n}\nconst futureResolves = /* @__PURE__ */ new Map();\nfunction registerFutureAwait(handle, onResolve) {\n\tif (!(handle in getCfgRenderCtx().callbackRegistry)) {\n\t\tgetCfgRenderCtx().callbackRegistry[handle] = (value) => {\n\t\t\tfor (const res of futureResolves.get(handle)) res(value);\n\t\t};\n\t\tfutureResolves.set(handle, []);\n\t}\n\tfutureResolves.get(handle).push(onResolve);\n}\n//#endregion\nexport { createAndRegisterRenderLambda, createRenderLambda, getCfgRenderCtx, getPlatformaInstance, isInUI, registerFutureAwait, tryRegisterCallback };\n\n//# sourceMappingURL=internal.js.map","import { createRenderLambda, tryRegisterCallback } from \"./internal.js\";\n//#region src/block_storage_facade.ts\n/**\n* The current facade version. This value is used for `requiresModelAPIVersion`\n* feature flag in BlockModelV3.\n*/\nconst BLOCK_STORAGE_FACADE_VERSION = 2;\n/**\n* All facade callback names as constants.\n* These are the source of truth - the interface is derived from these.\n*\n* IMPORTANT: When adding a new callback:\n* 1. Add the constant here\n* 2. Add the callback signature to FacadeCallbackTypes below\n* 3. The BlockStorageFacade type will automatically include it\n*/\nconst BlockStorageFacadeCallbacks = {\n\tStorageApplyUpdate: \"__pl_storage_applyUpdate\",\n\tStorageDebugView: \"__pl_storage_debugView\",\n\tStorageMigrate: \"__pl_storage_migrate\",\n\tArgsDerive: \"__pl_args_derive\",\n\tPrerunArgsDerive: \"__pl_prerunArgs_derive\",\n\tStorageInitial: \"__pl_storage_initial\"\n};\n/**\n* Creates a map of lambda handles from a callbacks constant object.\n* Keys are the callback string values (e.g., '__pl_storage_applyUpdate').\n*/\nfunction createFacadeHandles(callbacks) {\n\treturn Object.fromEntries(Object.values(callbacks).map((handle) => [handle, createRenderLambda({ handle })]));\n}\n/**\n* Lambda handles for facade callbacks.\n* Used by the middle layer to invoke callbacks via executeSingleLambda().\n*/\nconst BlockStorageFacadeHandles = createFacadeHandles(BlockStorageFacadeCallbacks);\n/** Register all facade callbacks at once. Ensures all required callbacks are provided. */\nfunction registerFacadeCallbacks(callbacks) {\n\tfor (const key of Object.values(BlockStorageFacadeCallbacks)) tryRegisterCallback(key, callbacks[key]);\n}\n//#endregion\nexport { BLOCK_STORAGE_FACADE_VERSION, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, registerFacadeCallbacks };\n\n//# sourceMappingURL=block_storage_facade.js.map","//#region src/config/actions.ts\nfunction primitiveToConfig(value) {\n\tif (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || value === null) return getImmediate(value);\n\telse return value;\n}\nfunction getFromCfg(variable) {\n\treturn {\n\t\ttype: \"GetFromCtx\",\n\t\tvariable\n\t};\n}\nfunction isolate(cfg) {\n\treturn {\n\t\ttype: \"Isolate\",\n\t\tcfg\n\t};\n}\nconst Args = getFromCfg(\"$args\");\nconst It = getFromCfg(\"$it\");\nconst MainOutputs = getFromCfg(\"$prod\");\nconst StagingOutputs = getFromCfg(\"$staging\");\nconst UiState = getFromCfg(\"$ui\");\nfunction getImmediate(value) {\n\treturn {\n\t\ttype: \"Immediate\",\n\t\tvalue\n\t};\n}\nfunction makeObject(template) {\n\tconst normalizedTemplate = {};\n\tfor (const [k, cfg] of Object.entries(template)) normalizedTemplate[k] = primitiveToConfig(cfg);\n\treturn {\n\t\ttype: \"MakeObject\",\n\t\ttemplate: normalizedTemplate\n\t};\n}\nfunction makeArray(...template) {\n\tconst normalizedTemplate = [];\n\tfor (const cfg of template) normalizedTemplate.push(primitiveToConfig(cfg));\n\treturn {\n\t\ttype: \"MakeArray\",\n\t\ttemplate: normalizedTemplate\n\t};\n}\nfunction getJsonField(source, field) {\n\treturn {\n\t\ttype: \"GetJsonField\",\n\t\tsource: primitiveToConfig(source),\n\t\tfield: primitiveToConfig(field)\n\t};\n}\nfunction mapRecordValues(source, mapping, itVar = \"$it\") {\n\treturn {\n\t\ttype: \"MapRecordValues\",\n\t\tsource,\n\t\tmapping,\n\t\titVar\n\t};\n}\nfunction mapArrayValues(source, mapping, itVar = \"$it\") {\n\treturn {\n\t\ttype: \"MapArrayValues\",\n\t\tsource,\n\t\tmapping,\n\t\titVar\n\t};\n}\nfunction flatten(source) {\n\treturn {\n\t\ttype: \"Flatten\",\n\t\tsource\n\t};\n}\nfunction isEmpty(arg) {\n\treturn {\n\t\ttype: \"IsEmpty\",\n\t\targ\n\t};\n}\nfunction not(operand) {\n\treturn {\n\t\ttype: \"Not\",\n\t\toperand\n\t};\n}\nfunction and(operand1, operand2) {\n\treturn {\n\t\ttype: \"And\",\n\t\toperand1,\n\t\toperand2\n\t};\n}\nfunction or(operand1, operand2) {\n\treturn {\n\t\ttype: \"Or\",\n\t\toperand1,\n\t\toperand2\n\t};\n}\nfunction getResourceField(source, field) {\n\treturn {\n\t\ttype: \"GetResourceField\",\n\t\tsource: primitiveToConfig(source),\n\t\tfield: primitiveToConfig(field)\n\t};\n}\nfunction getResourceValueAsJson() {\n\treturn function(source) {\n\t\treturn {\n\t\t\ttype: \"GetResourceValueAsJson\",\n\t\t\tsource: primitiveToConfig(source)\n\t\t};\n\t};\n}\nfunction mapResourceFields(source, mapping, itVar = \"$it\") {\n\treturn {\n\t\ttype: \"MapResourceFields\",\n\t\tsource,\n\t\tmapping,\n\t\titVar\n\t};\n}\nfunction getBlobContent(source, range) {\n\treturn {\n\t\ttype: \"GetBlobContent\",\n\t\trange,\n\t\tsource: primitiveToConfig(source)\n\t};\n}\nfunction getBlobContentAsString(source, range) {\n\treturn {\n\t\ttype: \"GetBlobContentAsString\",\n\t\trange,\n\t\tsource: primitiveToConfig(source)\n\t};\n}\nfunction getBlobContentAsJson() {\n\treturn function(source, range) {\n\t\treturn {\n\t\t\ttype: \"GetBlobContentAsJson\",\n\t\t\trange,\n\t\t\tsource: primitiveToConfig(source)\n\t\t};\n\t};\n}\nfunction getDownloadedBlobContent(source) {\n\treturn {\n\t\ttype: \"GetDownloadedBlobContent\",\n\t\tsource: primitiveToConfig(source)\n\t};\n}\nfunction getOnDemandBlobContent(source) {\n\treturn {\n\t\ttype: \"GetOnDemandBlobContent\",\n\t\tsource: primitiveToConfig(source)\n\t};\n}\nfunction extractArchiveAndGetURL(source, format) {\n\treturn {\n\t\ttype: \"ExtractArchiveAndGetURL\",\n\t\tformat,\n\t\tsource: primitiveToConfig(source)\n\t};\n}\nfunction getImportProgress(source) {\n\treturn {\n\t\ttype: \"GetImportProgress\",\n\t\tsource: primitiveToConfig(source)\n\t};\n}\nfunction getLastLogs(source, lines) {\n\treturn {\n\t\ttype: \"GetLastLogs\",\n\t\tsource: primitiveToConfig(source),\n\t\tlines\n\t};\n}\nfunction getProgressLog(source, patternToSearch) {\n\treturn {\n\t\ttype: \"GetProgressLog\",\n\t\tsource: primitiveToConfig(source),\n\t\tpatternToSearch\n\t};\n}\nfunction getProgressLogWithInfo(source, patternToSearch) {\n\treturn {\n\t\ttype: \"GetProgressLogWithInfo\",\n\t\tsource: primitiveToConfig(source),\n\t\tpatternToSearch\n\t};\n}\nfunction getLogHandle(source) {\n\treturn {\n\t\ttype: \"GetLogHandle\",\n\t\tsource: primitiveToConfig(source)\n\t};\n}\n//#endregion\nexport { Args, It, MainOutputs, StagingOutputs, UiState, and, extractArchiveAndGetURL, flatten, getBlobContent, getBlobContentAsJson, getBlobContentAsString, getDownloadedBlobContent, getFromCfg, getImmediate, getImportProgress, getJsonField, getLastLogs, getLogHandle, getOnDemandBlobContent, getProgressLog, getProgressLogWithInfo, getResourceField, getResourceValueAsJson, isEmpty, isolate, makeArray, makeObject, mapArrayValues, mapRecordValues, mapResourceFields, not, or };\n\n//# sourceMappingURL=actions.js.map","import { registerFutureAwait } from \"../internal.js\";\n//#region src/render/future.ts\nvar FutureRef = class FutureRef {\n\tisResolved = false;\n\tresolvedValue;\n\tconstructor(handle, postProcess = (v) => v) {\n\t\tthis.handle = handle;\n\t\tthis.postProcess = postProcess;\n\t\tregisterFutureAwait(handle, (value) => {\n\t\t\tthis.resolvedValue = postProcess(value);\n\t\t\tthis.isResolved = true;\n\t\t});\n\t}\n\tmap(mapping) {\n\t\treturn new FutureRef(this.handle, (v) => mapping(this.postProcess(v)));\n\t}\n\tmapDefined(mapping) {\n\t\treturn new FutureRef(this.handle, (v) => {\n\t\t\tconst vv = this.postProcess(v);\n\t\t\treturn vv ? mapping(vv) : void 0;\n\t\t});\n\t}\n\ttoJSON() {\n\t\treturn this.isResolved ? this.resolvedValue : { __awaited_futures__: [this.handle] };\n\t}\n};\n//#endregion\nexport { FutureRef };\n\n//# sourceMappingURL=future.js.map","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","import { z } from \"zod\";\n//#region src/bmodel/code.ts\nconst Code = z.object({\n\ttype: z.literal(\"plain\"),\n\tcontent: z.string()\n});\n//#endregion\nexport { Code };\n\n//# sourceMappingURL=code.js.map","import { z } from \"zod\";\n//#region src/drivers/blob.ts\n/** Range in bytes, from should be less than to. */\nconst RangeBytes = z.object({\n\tfrom: z.number().min(0),\n\tto: z.number().min(1)\n});\nfunction newRangeBytesOpt(from, to) {\n\tif (from == void 0 || to == void 0) return;\n\tconst range = {\n\t\tfrom,\n\t\tto\n\t};\n\tvalidateRangeBytes(range, \"newRangeBytesOpt\");\n\treturn range;\n}\nfunction validateRangeBytes(range, errMsg) {\n\tif (range.from < 0 || range.from >= range.to) throw new Error(`${errMsg}: invalid bytes range: ${range}`);\n}\n//#endregion\nexport { RangeBytes, newRangeBytesOpt, validateRangeBytes };\n\n//# sourceMappingURL=blob.js.map","//#region src/util.ts\nfunction assertNever(x) {\n\tthrow new Error(\"Unexpected object: \" + x);\n}\n/**\n* Return unique entries of the array by the provided id\n* For each id, the last entry is kept\n*/\nfunction uniqueBy(array, makeId) {\n\treturn [...new Map(array.map((e) => [makeId(e), e])).values()];\n}\n//#endregion\nexport { assertNever, uniqueBy };\n\n//# sourceMappingURL=util.js.map","import { assertNever } from \"../../util.js\";\n//#region src/drivers/pframe/data_info.ts\n/**\n* Type guard function that checks if the given value is a valid DataInfo.\n*\n* @param value - The value to check\n* @returns True if the value is a valid DataInfo, false otherwise\n*/\nfunction isDataInfo(value) {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst data = value;\n\tif (!(\"type\" in data)) return false;\n\tswitch (data.type) {\n\t\tcase \"Json\": return typeof data.keyLength === \"number\" && data.data !== void 0 && typeof data.data === \"object\";\n\t\tcase \"JsonPartitioned\":\n\t\tcase \"BinaryPartitioned\":\n\t\tcase \"ParquetPartitioned\": return typeof data.partitionKeyLength === \"number\" && data.parts !== void 0 && typeof data.parts === \"object\";\n\t\tdefault: return false;\n\t}\n}\nfunction mapDataInfo(dataInfo, mapFn) {\n\tif (dataInfo === void 0) return;\n\tswitch (dataInfo.type) {\n\t\tcase \"Json\": return dataInfo;\n\t\tcase \"JsonPartitioned\": {\n\t\t\tconst newParts = {};\n\t\t\tfor (const [key, blob] of Object.entries(dataInfo.parts)) newParts[key] = mapFn(blob);\n\t\t\treturn {\n\t\t\t\t...dataInfo,\n\t\t\t\tparts: newParts\n\t\t\t};\n\t\t}\n\t\tcase \"BinaryPartitioned\": {\n\t\t\tconst newParts = {};\n\t\t\tfor (const [key, chunk] of Object.entries(dataInfo.parts)) newParts[key] = {\n\t\t\t\tindex: mapFn(chunk.index),\n\t\t\t\tvalues: mapFn(chunk.values)\n\t\t\t};\n\t\t\treturn {\n\t\t\t\t...dataInfo,\n\t\t\t\tparts: newParts\n\t\t\t};\n\t\t}\n\t\tcase \"ParquetPartitioned\": {\n\t\t\tconst newParts = {};\n\t\t\tfor (const [key, blob] of Object.entries(dataInfo.parts)) newParts[key] = mapFn(blob);\n\t\t\treturn {\n\t\t\t\t...dataInfo,\n\t\t\t\tparts: newParts\n\t\t\t};\n\t\t}\n\t}\n}\n/**\n* @param dataInfo - The source DataInfo object\n* @param cb - Callback, function that have access to every blob to visit them all\n* @returns Nothing\n*/\nfunction visitDataInfo(dataInfo, cb) {\n\tswitch (dataInfo.type) {\n\t\tcase \"Json\": break;\n\t\tcase \"JsonPartitioned\":\n\t\t\tObject.values(dataInfo.parts).forEach(cb);\n\t\t\tbreak;\n\t\tcase \"BinaryPartitioned\":\n\t\t\tObject.values(dataInfo.parts).forEach((chunk) => {\n\t\t\t\tcb(chunk.index);\n\t\t\t\tcb(chunk.values);\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"ParquetPartitioned\":\n\t\t\tObject.values(dataInfo.parts).forEach(cb);\n\t\t\tbreak;\n\t}\n}\n/**\n* Type guard function that checks if the given value is a valid DataInfoEntries.\n*\n* @param value - The value to check\n* @returns True if the value is a valid DataInfoEntries, false otherwise\n*/\nfunction isDataInfoEntries(value) {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst data = value;\n\tif (!(\"type\" in data)) return false;\n\tswitch (data.type) {\n\t\tcase \"Json\": return typeof data.keyLength === \"number\" && Array.isArray(data.data);\n\t\tcase \"JsonPartitioned\":\n\t\tcase \"BinaryPartitioned\":\n\t\tcase \"ParquetPartitioned\": return typeof data.partitionKeyLength === \"number\" && Array.isArray(data.parts);\n\t\tdefault: return false;\n\t}\n}\n/**\n* Type guard function that checks if the given value is a valid PartitionedDataInfoEntries.\n*\n* @template Blob - Type parameter representing the storage reference type\n* @param value - The value to check\n* @returns True if the value is a valid PartitionedDataInfoEntries, false otherwise\n*/\nfunction isPartitionedDataInfoEntries(value) {\n\tif (!isDataInfoEntries(value)) return false;\n\tswitch (value.type) {\n\t\tcase \"JsonPartitioned\":\n\t\tcase \"BinaryPartitioned\":\n\t\tcase \"ParquetPartitioned\": return true;\n\t\tdefault: return false;\n\t}\n}\n/**\n* Converts DataInfo to DataInfoEntries\n*\n* @param dataInfo - The record-based DataInfo object\n* @returns The equivalent entry-based DataInfoEntries object\n*/\nfunction dataInfoToEntries(dataInfo) {\n\tswitch (dataInfo.type) {\n\t\tcase \"Json\": return {\n\t\t\ttype: \"Json\",\n\t\t\tkeyLength: dataInfo.keyLength,\n\t\t\tdata: Object.entries(dataInfo.data).map(([keyStr, value]) => {\n\t\t\t\treturn {\n\t\t\t\t\tkey: JSON.parse(keyStr),\n\t\t\t\t\tvalue\n\t\t\t\t};\n\t\t\t})\n\t\t};\n\t\tcase \"JsonPartitioned\": return {\n\t\t\ttype: \"JsonPartitioned\",\n\t\t\tpartitionKeyLength: dataInfo.partitionKeyLength,\n\t\t\tparts: Object.entries(dataInfo.parts).map(([keyStr, blob]) => {\n\t\t\t\treturn {\n\t\t\t\t\tkey: JSON.parse(keyStr),\n\t\t\t\t\tvalue: blob\n\t\t\t\t};\n\t\t\t})\n\t\t};\n\t\tcase \"BinaryPartitioned\": return {\n\t\t\ttype: \"BinaryPartitioned\",\n\t\t\tpartitionKeyLength: dataInfo.partitionKeyLength,\n\t\t\tparts: Object.entries(dataInfo.parts).map(([keyStr, chunk]) => {\n\t\t\t\treturn {\n\t\t\t\t\tkey: JSON.parse(keyStr),\n\t\t\t\t\tvalue: chunk\n\t\t\t\t};\n\t\t\t})\n\t\t};\n\t\tcase \"ParquetPartitioned\": return {\n\t\t\ttype: \"ParquetPartitioned\",\n\t\t\tpartitionKeyLength: dataInfo.partitionKeyLength,\n\t\t\tparts: Object.entries(dataInfo.parts).map(([keyStr, blob]) => {\n\t\t\t\treturn {\n\t\t\t\t\tkey: JSON.parse(keyStr),\n\t\t\t\t\tvalue: blob\n\t\t\t\t};\n\t\t\t})\n\t\t};\n\t\tdefault: assertNever(dataInfo);\n\t}\n}\n/**\n* Converts DataInfoEntries to DataInfo\n*\n* @param dataInfoEntries - The entry-based DataInfoEntries object\n* @returns The equivalent record-based DataInfo object\n*/\nfunction entriesToDataInfo(dataInfoEntries) {\n\tswitch (dataInfoEntries.type) {\n\t\tcase \"Json\": return {\n\t\t\ttype: \"Json\",\n\t\t\tkeyLength: dataInfoEntries.keyLength,\n\t\t\tdata: Object.fromEntries(dataInfoEntries.data.map(({ key, value }) => [JSON.stringify(key), value]))\n\t\t};\n\t\tcase \"JsonPartitioned\": return {\n\t\t\ttype: \"JsonPartitioned\",\n\t\t\tpartitionKeyLength: dataInfoEntries.partitionKeyLength,\n\t\t\tparts: Object.fromEntries(dataInfoEntries.parts.map(({ key, value }) => [JSON.stringify(key), value]))\n\t\t};\n\t\tcase \"BinaryPartitioned\": return {\n\t\t\ttype: \"BinaryPartitioned\",\n\t\t\tpartitionKeyLength: dataInfoEntries.partitionKeyLength,\n\t\t\tparts: Object.fromEntries(dataInfoEntries.parts.map(({ key, value }) => [JSON.stringify(key), value]))\n\t\t};\n\t\tcase \"ParquetPartitioned\": return {\n\t\t\ttype: \"ParquetPartitioned\",\n\t\t\tpartitionKeyLength: dataInfoEntries.partitionKeyLength,\n\t\t\tparts: Object.fromEntries(dataInfoEntries.parts.map(({ key, value }) => [JSON.stringify(key), value]))\n\t\t};\n\t\tdefault: assertNever(dataInfoEntries);\n\t}\n}\nfunction mapDataInfoEntries(dataInfoEntries, mapFn) {\n\tif (dataInfoEntries === void 0) return;\n\tswitch (dataInfoEntries.type) {\n\t\tcase \"Json\": return dataInfoEntries;\n\t\tcase \"JsonPartitioned\": return {\n\t\t\t...dataInfoEntries,\n\t\t\tparts: dataInfoEntries.parts.map((entry) => ({\n\t\t\t\tkey: entry.key,\n\t\t\t\tvalue: mapFn(entry.value)\n\t\t\t}))\n\t\t};\n\t\tcase \"BinaryPartitioned\": return {\n\t\t\t...dataInfoEntries,\n\t\t\tparts: dataInfoEntries.parts.map((entry) => ({\n\t\t\t\tkey: entry.key,\n\t\t\t\tvalue: {\n\t\t\t\t\tindex: mapFn(entry.value.index),\n\t\t\t\t\tvalues: mapFn(entry.value.values)\n\t\t\t\t}\n\t\t\t}))\n\t\t};\n\t\tcase \"ParquetPartitioned\": return {\n\t\t\t...dataInfoEntries,\n\t\t\tparts: dataInfoEntries.parts.map((entry) => ({\n\t\t\t\tkey: entry.key,\n\t\t\t\tvalue: mapFn(entry.value)\n\t\t\t}))\n\t\t};\n\t}\n}\n//#endregion\nexport { dataInfoToEntries, entriesToDataInfo, isDataInfo, isDataInfoEntries, isPartitionedDataInfoEntries, mapDataInfo, mapDataInfoEntries, visitDataInfo };\n\n//# sourceMappingURL=data_info.js.map","//#region src/errors.ts\n/**\n* Just for convenience, usually it is an Error with name 'AbortError'\n*/\nvar AbortError = class extends Error {\n\tname = \"AbortError\";\n};\n/**\n* Throw this to show a message without stack trace in UI\n*/\nvar UiError = class extends Error {\n\tname = \"UiError\";\n};\nfunction isAbortError(error) {\n\treturn error instanceof Error && error.name === \"AbortError\";\n}\nfunction hasAbortError(error) {\n\tif (!(error instanceof Error)) return false;\n\treturn error.name === \"AbortError\" || hasAbortError(error.cause);\n}\nfunction isAggregateError(error) {\n\treturn error instanceof Error && error.name === \"AggregateError\";\n}\nvar ServiceError = class extends Error {\n\tname = \"ServiceError\";\n};\nfunction isServiceError(error) {\n\treturn error instanceof Error && (error.name === \"ServiceError\" || error.name.startsWith(\"ServiceError.\"));\n}\nvar ServiceInvalidIdError = class extends ServiceError {\n\tname = \"ServiceError.InvalidId\";\n};\nfunction isServiceInvalidIdError(error) {\n\treturn error instanceof Error && error.name === \"ServiceError.InvalidId\";\n}\nvar ServiceAlreadyRegisteredError = class extends ServiceError {\n\tname = \"ServiceError.AlreadyRegistered\";\n};\nfunction isServiceAlreadyRegisteredError(error) {\n\treturn error instanceof Error && error.name === \"ServiceError.AlreadyRegistered\";\n}\nvar ServiceInjectionError = class extends ServiceError {\n\tname = \"ServiceError.Injection\";\n};\nfunction isServiceInjectionError(error) {\n\treturn error instanceof Error && error.name === \"ServiceError.Injection\";\n}\nvar ServiceNotRegisteredError = class extends ServiceError {\n\tname = \"ServiceError.NotRegistered\";\n};\nfunction isServiceNotRegisteredError(error) {\n\treturn error instanceof Error && error.name === \"ServiceError.NotRegistered\";\n}\nvar ServiceMethodNotFoundError = class extends ServiceError {\n\tname = \"ServiceError.MethodNotFound\";\n};\nfunction isServiceMethodNotFoundError(error) {\n\treturn error instanceof Error && error.name === \"ServiceError.MethodNotFound\";\n}\nvar PFrameError = class extends Error {\n\tname = \"PFrameError\";\n};\nfunction isPFrameError(error) {\n\treturn error instanceof Error && error.name === \"PFrameError\";\n}\nvar PFrameDriverError = class extends PFrameError {\n\tname = \"PFrameError.Driver\";\n};\nfunction isPFrameDriverError(error) {\n\treturn error instanceof Error && error.name === \"PFrameError.Driver\";\n}\nvar PFrameSpecDriverError = class extends PFrameError {\n\tname = \"PFrameError.SpecDriver\";\n};\nfunction isPFrameSpecDriverError(error) {\n\treturn error instanceof Error && error.name === \"PFrameError.SpecDriver\";\n}\nfunction stringifyValue(value) {\n\tif (typeof value === \"string\") return `String value was thrown: ${value}`;\n\tif (value && typeof value === \"object\") try {\n\t\treturn `Plain object was thrown: ${JSON.stringify(value)}`;\n\t} catch (jsonError) {\n\t\treturn `Non-serializable object was thrown (JSON.stringify failed: ${jsonError instanceof Error ? jsonError.message : String(jsonError)}): ${String(value)}`;\n\t}\n\treturn String(`Non-Error value (${typeof value}) was thrown: ${value}`);\n}\nfunction ensureError(value) {\n\tif (value instanceof Error) return value;\n\treturn new Error(stringifyValue(value));\n}\nfunction deserializeError(obj) {\n\tconst cause = obj.cause ? deserializeError(obj.cause) : void 0;\n\tconst error = new Error(obj.message, cause !== void 0 ? { cause } : void 0);\n\terror.name = obj.name || \"Error\";\n\terror.stack = obj.stack;\n\treturn error;\n}\nfunction serializeError(e) {\n\tconst error = ensureError(e);\n\tconst cause = error.cause ? serializeError(error.cause) : void 0;\n\treturn {\n\t\tname: error.name,\n\t\tmessage: error.message,\n\t\tstack: error.stack,\n\t\t...error.cause !== void 0 && { cause }\n\t};\n}\nfunction unwrapResult(result) {\n\tif (result.error) throw result.error instanceof Error ? result.error : deserializeError(result.error);\n\treturn result.value;\n}\nfunction serializeResult(result) {\n\tif (result.error) return { error: serializeError(result.error) };\n\treturn { value: result.value };\n}\nfunction deserializeResult(result) {\n\tif (result.error) return { error: deserializeError(result.error) };\n\treturn { value: result.value };\n}\nfunction wrapCallback(callback) {\n\ttry {\n\t\treturn { value: callback() };\n\t} catch (error) {\n\t\treturn { error: ensureError(error) };\n\t}\n}\nasync function wrapAsyncCallback(callback) {\n\ttry {\n\t\treturn { value: await callback() };\n\t} catch (error) {\n\t\treturn { error: ensureError(error) };\n\t}\n}\nfunction wrapAndSerialize(callback) {\n\treturn serializeResult(wrapCallback(callback));\n}\nasync function wrapAndSerializeAsync(callback) {\n\treturn serializeResult(await wrapAsyncCallback(callback));\n}\n//#endregion\nexport { AbortError, PFrameDriverError, PFrameError, PFrameSpecDriverError, ServiceAlreadyRegisteredError, ServiceError, ServiceInjectionError, ServiceInvalidIdError, ServiceMethodNotFoundError, ServiceNotRegisteredError, UiError, deserializeError, deserializeResult, ensureError, hasAbortError, isAbortError, isAggregateError, isPFrameDriverError, isPFrameError, isPFrameSpecDriverError, isServiceAlreadyRegisteredError, isServiceError, isServiceInjectionError, isServiceInvalidIdError, isServiceMethodNotFoundError, isServiceNotRegisteredError, serializeError, serializeResult, unwrapResult, wrapAndSerialize, wrapAndSerializeAsync, wrapAsyncCallback, wrapCallback };\n\n//# sourceMappingURL=errors.js.map","/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function serialize (object) {\n if (typeof object === 'number' && isNaN(object)) {\n throw new Error('NaN is not allowed');\n }\n\n if (typeof object === 'number' && !isFinite(object)) {\n throw new Error('Infinity is not allowed');\n }\n\n if (object === null || typeof object !== 'object') {\n return JSON.stringify(object);\n }\n\n if (object.toJSON instanceof Function) {\n return serialize(object.toJSON());\n }\n\n if (Array.isArray(object)) {\n const values = object.reduce((t, cv, ci) => {\n const comma = ci === 0 ? '' : ',';\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return `${t}${comma}${serialize(value)}`;\n }, '');\n return `[${values}]`;\n }\n\n const values = Object.keys(object).sort().reduce((t, cv) => {\n if (object[cv] === undefined ||\n typeof object[cv] === 'symbol') {\n return t;\n }\n const comma = t.length === 0 ? '' : ',';\n return `${t}${comma}${serialize(cv)}:${serialize(object[cv])}`;\n }, '');\n return `{${values}}`;\n};\n","import canonicalize from \"canonicalize\";\n//#region src/json.ts\nfunction stringifyJson(value) {\n\treturn JSON.stringify(value);\n}\nfunction canonicalizeJson(value) {\n\treturn canonicalize(value);\n}\nfunction parseJson(value) {\n\treturn JSON.parse(value);\n}\nfunction parseJsonSafely(value, fallback) {\n\ttry {\n\t\treturn JSON.parse(value);\n\t} catch {\n\t\treturn fallback;\n\t}\n}\nfunction bigintReplacer(_key, value) {\n\treturn typeof value === \"bigint\" ? value.toString() : value;\n}\n//#endregion\nexport { bigintReplacer, canonicalizeJson, parseJson, parseJsonSafely, stringifyJson };\n\n//# sourceMappingURL=json.js.map","import { ensureError } from \"../../../errors.js\";\nimport { canonicalizeJson } from \"../../../json.js\";\nimport { z } from \"zod\";\n//#region src/drivers/pframe/spec/spec.ts\nconst ValueType = {\n\tInt: \"Int\",\n\tLong: \"Long\",\n\tFloat: \"Float\",\n\tDouble: \"Double\",\n\tString: \"String\",\n\tBytes: \"Bytes\"\n};\nfunction readMetadata(metadata, key) {\n\treturn metadata?.[key];\n}\nfunction readMetadataJsonOrThrow(metadata, metadataJson, key, methodNameInError = \"readMetadataJsonOrThrow\") {\n\tconst json = readMetadata(metadata, key);\n\tif (json === void 0) return void 0;\n\tconst schema = metadataJson[key];\n\ttry {\n\t\tconst value = JSON.parse(json);\n\t\treturn schema.parse(value);\n\t} catch (error) {\n\t\tthrow new Error(`${methodNameInError} failed, key: ${String(key)}, value: ${json}, error: ${ensureError(error)}`);\n\t}\n}\nfunction readMetadataJson(metadata, metadataJson, key) {\n\ttry {\n\t\treturn readMetadataJsonOrThrow(metadata, metadataJson, key);\n\t} catch {\n\t\treturn;\n\t}\n}\nconst Domain = {\n\tAlphabet: \"pl7.app/alphabet\",\n\tBlockId: \"pl7.app/blockId\",\n\tVDJ: {\n\t\tClustering: { BlockId: \"pl7.app/vdj/clustering/blockId\" },\n\t\tScClonotypeChain: { Index: \"pl7.app/vdj/scClonotypeChain/index\" }\n\t}\n};\nconst DomainJson = {};\nfunction readDomain(spec, key) {\n\treturn readMetadata(spec?.domain, key);\n}\nfunction readDomainJsonOrThrow(spec, key) {\n\treturn readMetadataJsonOrThrow(spec?.domain, DomainJson, key, \"readDomainJsonOrThrow\");\n}\nfunction readDomainJson(spec, key) {\n\treturn readMetadataJson(spec?.domain, DomainJson, key);\n}\nconst Annotation = {\n\tAxisNature: \"pl7.app/axisNature\",\n\tAlphabet: \"pl7.app/alphabet\",\n\tDescription: \"pl7.app/description\",\n\tDataStatus: \"pl7.app/dataStatus\",\n\tDiscreteValues: \"pl7.app/discreteValues\",\n\tFormat: \"pl7.app/format\",\n\tGraph: {\n\t\tAxis: {\n\t\t\tHighCardinality: \"pl7.app/graph/axis/highCardinality\",\n\t\t\tLowerLimit: \"pl7.app/graph/axis/lowerLimit\",\n\t\t\tSymmetricRange: \"pl7.app/graph/axis/symmetricRange\",\n\t\t\tUpperLimit: \"pl7.app/graph/axis/upperLimit\"\n\t\t},\n\t\tIsDenseAxis: \"pl7.app/graph/isDenseAxis\",\n\t\tIsVirtual: \"pl7.app/graph/isVirtual\",\n\t\tPalette: \"pl7.app/graph/palette\",\n\t\tThresholds: \"pl7.app/graph/thresholds\",\n\t\tTreatAbsentValuesAs: \"pl7.app/graph/treatAbsentValuesAs\"\n\t},\n\tHideDataFromUi: \"pl7.app/hideDataFromUi\",\n\tHideDataFromGraphs: \"pl7.app/hideDataFromGraphs\",\n\tIsDiscreteFilter: \"pl7.app/isDiscreteFilter\",\n\tIsAnchor: \"pl7.app/isAnchor\",\n\tIsLinkerColumn: \"pl7.app/isLinkerColumn\",\n\tIsScore: \"pl7.app/isScore\",\n\tIsSubset: \"pl7.app/isSubset\",\n\tLabel: \"pl7.app/label\",\n\tLinkLabel: \"pl7.app/linkLabel\",\n\tMax: \"pl7.app/max\",\n\tMin: \"pl7.app/min\",\n\tMultipliesBy: \"pl7.app/multipliesBy\",\n\tParents: \"pl7.app/parents\",\n\tScore: {\n\t\tDefaultCutoff: \"pl7.app/score/defaultCutoff\",\n\t\tRankingOrder: \"pl7.app/score/rankingOrder\"\n\t},\n\tSequence: {\n\t\tAnnotation: { Mapping: \"pl7.app/sequence/annotation/mapping\" },\n\t\tIsAnnotation: \"pl7.app/sequence/isAnnotation\"\n\t},\n\tTable: {\n\t\tFontFamily: \"pl7.app/table/fontFamily\",\n\t\tOrderPriority: \"pl7.app/table/orderPriority\",\n\t\tVisibility: \"pl7.app/table/visibility\",\n\t\tInfo: \"pl7.app/table/info\"\n\t},\n\tTrace: \"pl7.app/trace\",\n\tVDJ: {\n\t\tIsAssemblingFeature: \"pl7.app/vdj/isAssemblingFeature\",\n\t\tIsMainSequence: \"pl7.app/vdj/isMainSequence\"\n\t}\n};\nconst TraceEntrySchema = z.object({\n\ttype: z.string(),\n\tlabel: z.string()\n}).catchall(z.unknown());\nconst ValueTypeSchema = z.enum([\n\t\"Int\",\n\t\"Long\",\n\t\"Float\",\n\t\"Double\",\n\t\"String\"\n]);\nconst AnnotationJson = {\n\t[Annotation.DiscreteValues]: z.array(z.string()).or(z.array(z.number())),\n\t[Annotation.Graph.Axis.HighCardinality]: z.boolean(),\n\t[Annotation.Graph.Axis.LowerLimit]: z.number(),\n\t[Annotation.Graph.Axis.UpperLimit]: z.number(),\n\t[Annotation.Graph.Axis.SymmetricRange]: z.boolean(),\n\t[Annotation.Graph.IsDenseAxis]: z.boolean(),\n\t[Annotation.Graph.Palette]: z.object({\n\t\tmapping: z.record(z.number()),\n\t\tname: z.string()\n\t}),\n\t[Annotation.Graph.Thresholds]: z.array(z.object({\n\t\tcolumnId: z.object({\n\t\t\tvalueType: ValueTypeSchema,\n\t\t\tname: z.string()\n\t\t}),\n\t\tvalue: z.number()\n\t})),\n\t[Annotation.Graph.TreatAbsentValuesAs]: z.number(),\n\t[Annotation.Graph.IsVirtual]: z.boolean(),\n\t[Annotation.HideDataFromUi]: z.boolean(),\n\t[Annotation.HideDataFromGraphs]: z.boolean(),\n\t[Annotation.IsDiscreteFilter]: z.boolean(),\n\t[Annotation.IsLinkerColumn]: z.boolean(),\n\t[Annotation.IsSubset]: z.boolean(),\n\t[Annotation.Max]: z.number(),\n\t[Annotation.Min]: z.number(),\n\t[Annotation.MultipliesBy]: z.array(z.string()),\n\t[Annotation.Parents]: z.array(z.string()),\n\t[Annotation.Sequence.Annotation.Mapping]: z.record(z.string(), z.string()),\n\t[Annotation.Sequence.IsAnnotation]: z.boolean(),\n\t[Annotation.Table.OrderPriority]: z.number(),\n\t[Annotation.Trace]: z.array(TraceEntrySchema),\n\t[Annotation.VDJ.IsAssemblingFeature]: z.boolean()\n};\nfunction readAnnotation(spec, key) {\n\treturn readMetadata(spec?.annotations, key);\n}\nfunction readAnnotationJsonOrThrow(spec, key) {\n\treturn readMetadataJsonOrThrow(spec?.annotations, AnnotationJson, key, \"readAnnotationJsonOrThrow\");\n}\nfunction readAnnotationJson(spec, key) {\n\treturn readMetadataJson(spec?.annotations, AnnotationJson, key);\n}\nfunction isLinkerColumn(column) {\n\treturn !!readAnnotationJson(column, Annotation.IsLinkerColumn);\n}\nfunction makeAxisTree(axis) {\n\treturn {\n\t\taxis,\n\t\tchildren: []\n\t};\n}\n/** Build tree by axis parents annotations */\nfunction getAxesTree(rootAxis) {\n\tconst root = makeAxisTree(rootAxis);\n\tlet nodesQ = [root];\n\twhile (nodesQ.length) {\n\t\tconst nextNodes = [];\n\t\tfor (const node of nodesQ) {\n\t\t\tnode.children = node.axis.parentAxesSpec.map(makeAxisTree);\n\t\t\tnextNodes.push(...node.children);\n\t\t}\n\t\tnodesQ = nextNodes;\n\t}\n\treturn root;\n}\n/** Get set of canonicalized axisIds from axisTree */\nfunction getSetFromAxisTree(tree) {\n\tconst set = new Set([canonicalizeJson(getAxisId(tree.axis))]);\n\tlet nodesQ = [tree];\n\twhile (nodesQ.length) {\n\t\tconst nextNodes = [];\n\t\tfor (const node of nodesQ) for (const parent of node.children) {\n\t\t\tset.add(canonicalizeJson(getAxisId(parent.axis)));\n\t\t\tnextNodes.push(parent);\n\t\t}\n\t\tnodesQ = nextNodes;\n\t}\n\treturn set;\n}\n/** Get array of axisSpecs from axisTree */\nfunction getArrayFromAxisTree(tree) {\n\tconst res = [tree.axis];\n\tlet nodesQ = [tree];\n\twhile (nodesQ.length) {\n\t\tconst nextNodes = [];\n\t\tfor (const node of nodesQ) for (const parent of node.children) {\n\t\t\tres.push(parent.axis);\n\t\t\tnextNodes.push(parent);\n\t\t}\n\t\tnodesQ = nextNodes;\n\t}\n\treturn res;\n}\nfunction canonicalizeAxisWithParents(axis) {\n\treturn canonicalizeJson(getArrayFromAxisTree(getAxesTree(axis)).map(getAxisId));\n}\nfunction normalizingAxesComparator(axis1, axis2) {\n\tif (axis1.name !== axis2.name) return axis1.name < axis2.name ? 1 : -1;\n\tif (axis1.type !== axis2.type) return axis1.type < axis2.type ? 1 : -1;\n\tconst domain1 = canonicalizeJson(axis1.domain ?? {});\n\tconst domain2 = canonicalizeJson(axis2.domain ?? {});\n\tif (domain1 !== domain2) return domain1 < domain2 ? 1 : -1;\n\tconst contextDomain1 = canonicalizeJson(axis1.contextDomain ?? {});\n\tconst contextDomain2 = canonicalizeJson(axis2.contextDomain ?? {});\n\tif (contextDomain1 !== contextDomain2) return contextDomain1 < contextDomain2 ? 1 : -1;\n\tconst parents1 = canonicalizeAxisWithParents(axis1);\n\tconst parents2 = canonicalizeAxisWithParents(axis2);\n\tif (parents1 !== parents2) return parents1 < parents2 ? 1 : -1;\n\tconst annotation1 = canonicalizeJson(axis1.annotations ?? {});\n\tconst annotation2 = canonicalizeJson(axis2.annotations ?? {});\n\tif (annotation1 !== annotation2) return annotation1 < annotation2 ? 1 : -1;\n\treturn 0;\n}\nfunction parseParentsFromAnnotations(axis) {\n\tconst parentsList = readAnnotationJson(axis, Annotation.Parents);\n\tif (parentsList === void 0) return [];\n\treturn parentsList;\n}\nfunction sortParentsDeep(axisSpec) {\n\taxisSpec.parentAxesSpec.forEach(sortParentsDeep);\n\taxisSpec.parentAxesSpec.sort(normalizingAxesComparator);\n}\nfunction hasCycleOfParents(axisSpec) {\n\tlet nodesQ = [makeAxisTree(axisSpec)];\n\tconst ancestors = new Set(canonicalizeJson(getAxisId(axisSpec)));\n\twhile (nodesQ.length) {\n\t\tconst nextNodes = [];\n\t\tconst levelIds = /* @__PURE__ */ new Set();\n\t\tfor (const node of nodesQ) {\n\t\t\tnode.children = node.axis.parentAxesSpec.map(makeAxisTree);\n\t\t\tfor (const child of node.children) {\n\t\t\t\tconst childId = canonicalizeJson(getAxisId(child.axis));\n\t\t\t\tif (!levelIds.has(childId)) {\n\t\t\t\t\tnextNodes.push(child);\n\t\t\t\t\tlevelIds.add(childId);\n\t\t\t\t\tif (ancestors.has(childId)) return true;\n\t\t\t\t\tancestors.add(childId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tnodesQ = nextNodes;\n\t}\n\treturn false;\n}\n/** Create list of normalized axisSpec (parents are in array of specs, not indexes) */\nfunction getNormalizedAxesList(axes) {\n\tif (!axes.length) return [];\n\tconst modifiedAxes = axes.map((axis) => {\n\t\tconst { parentAxes: _, ...copiedRest } = axis;\n\t\treturn {\n\t\t\t...copiedRest,\n\t\t\tannotations: { ...copiedRest.annotations },\n\t\t\tparentAxesSpec: []\n\t\t};\n\t});\n\taxes.forEach((axis, idx) => {\n\t\tconst modifiedAxis = modifiedAxes[idx];\n\t\tif (axis.parentAxes) modifiedAxis.parentAxesSpec = axis.parentAxes.map((idx) => modifiedAxes[idx]);\n\t\telse {\n\t\t\tconst parents = parseParentsFromAnnotations(axis).map((name) => modifiedAxes.find((axis) => axis.name === name));\n\t\t\tmodifiedAxis.parentAxesSpec = parents.some((p) => p === void 0) ? [] : parents;\n\t\t}\n\t});\n\tif (modifiedAxes.some(hasCycleOfParents)) modifiedAxes.forEach((axis) => {\n\t\taxis.parentAxesSpec = [];\n\t});\n\telse modifiedAxes.forEach((axis) => {\n\t\tsortParentsDeep(axis);\n\t});\n\treturn modifiedAxes;\n}\n/** Create list of regular axisSpec from normalized (parents are indexes, inside of current axes list) */\nfunction getDenormalizedAxesList(axesSpec) {\n\tconst idsList = axesSpec.map(canonicalizeAxisId);\n\treturn axesSpec.map((axisSpec) => {\n\t\tconst parentIdxs = axisSpec.parentAxesSpec.map(canonicalizeAxisId).map((id) => idsList.indexOf(id));\n\t\tconst { parentAxesSpec: _, ...copiedRest } = axisSpec;\n\t\tif (parentIdxs.length) return {\n\t\t\t...copiedRest,\n\t\t\tparentAxes: parentIdxs\n\t\t};\n\t\treturn copiedRest;\n\t});\n}\n/**\n* Resolve annotation-based parents (`pl7.app/parents`) to numeric `parentAxes`\n* on a column spec. Returns the spec unchanged if all axes already use numeric\n* indices or have no parent annotations.\n*/\nfunction resolveAnnotationParents(spec) {\n\tif (!spec.axesSpec.some((axis) => !!readAnnotationJson(axis, Annotation.Parents))) return spec;\n\tconst denormalized = getDenormalizedAxesList(getNormalizedAxesList(spec.axesSpec));\n\treturn {\n\t\t...spec,\n\t\taxesSpec: denormalized\n\t};\n}\nconst PColumnName = {\n\tLabel: \"pl7.app/label\",\n\tTable: { RowSelection: \"pl7.app/table/row-selection\" },\n\tVDJ: {\n\t\tLeadSelection: \"pl7.app/vdj/lead-selection\",\n\t\tRankingOrder: \"pl7.app/vdj/ranking-order\",\n\t\tSequence: \"pl7.app/vdj/sequence\"\n\t}\n};\nconst PAxisName = {\n\tSampleId: \"pl7.app/sampleId\",\n\tVDJ: {\n\t\tAssay: { SequenceId: \"pl7.app/vdj/assay/sequenceId\" },\n\t\tClusterId: \"pl7.app/vdj/clusterId\",\n\t\tClonotypeKey: \"pl7.app/vdj/clonotypeKey\",\n\t\tScClonotypeKey: \"pl7.app/vdj/scClonotypeKey\"\n\t}\n};\nfunction isLabelColumn(column) {\n\treturn column.axesSpec.length === 1 && column.name === PColumnName.Label;\n}\nfunction getPColumnSpecId(spec) {\n\treturn {\n\t\tkind: spec.kind,\n\t\tvalueType: spec.valueType,\n\t\tname: spec.name,\n\t\tdomain: spec.domain,\n\t\tcontextDomain: spec.contextDomain,\n\t\tparentAxes: spec.parentAxes,\n\t\taxesId: getAxesId(spec.axesSpec)\n\t};\n}\n/** Get column id and spec from a column */\nfunction getColumnIdAndSpec(column) {\n\treturn {\n\t\tcolumnId: column.id,\n\t\tspec: column.spec\n\t};\n}\n/** Extracts axis ids from axis spec */\nfunction getAxisId(spec) {\n\tconst { type, name, domain, contextDomain } = spec;\n\tconst result = {\n\t\ttype,\n\t\tname\n\t};\n\tif (domain && Object.entries(domain).length > 0) Object.assign(result, { domain });\n\tif (contextDomain && Object.entries(contextDomain).length > 0) Object.assign(result, { contextDomain });\n\treturn result;\n}\n/** Extracts axes ids from axes spec array from column spec */\nfunction getAxesId(spec) {\n\treturn spec.map(getAxisId);\n}\n/** Canonicalizes axis id */\nfunction canonicalizeAxisId(id) {\n\treturn canonicalizeJson(getAxisId(id));\n}\n/** Returns true if all domains from query are found in target */\nfunction matchDomain(query, target) {\n\tif (query === void 0) return target === void 0;\n\tif (target === void 0) return true;\n\tfor (const k in target) if (query[k] !== target[k]) return false;\n\treturn true;\n}\n/** Returns whether \"match\" axis id is compatible with the \"query\" */\nfunction matchAxisId(query, target) {\n\treturn query.name === target.name && matchDomain(query.domain, target.domain) && matchDomain(query.contextDomain, target.contextDomain);\n}\nfunction getTypeFromPColumnOrAxisSpec(spec) {\n\treturn \"valueType\" in spec ? spec.valueType : spec.type;\n}\nfunction isAxisId(id) {\n\treturn typeof id === \"object\" && id !== null && \"name\" in id && \"type\" in id;\n}\n//#endregion\nexport { Annotation, AnnotationJson, Domain, DomainJson, PAxisName, PColumnName, ValueType, canonicalizeAxisId, canonicalizeAxisWithParents, getArrayFromAxisTree, getAxesId, getAxesTree, getAxisId, getColumnIdAndSpec, getDenormalizedAxesList, getNormalizedAxesList, getPColumnSpecId, getSetFromAxisTree, getTypeFromPColumnOrAxisSpec, isAxisId, isLabelColumn, isLinkerColumn, matchAxisId, readAnnotation, readAnnotationJson, readAnnotationJsonOrThrow, readDomain, readDomainJson, readDomainJsonOrThrow, readMetadata, readMetadataJson, readMetadataJsonOrThrow, resolveAnnotationParents };\n\n//# sourceMappingURL=spec.js.map","import { assertNever } from \"../../../util.js\";\nimport { canonicalizeJson } from \"../../../json.js\";\n//#region src/drivers/pframe/query/utils.ts\nconst booleanTypesSet = new Set([\n\t\"numericComparison\",\n\t\"stringEquals\",\n\t\"stringContains\",\n\t\"stringContainsFuzzy\",\n\t\"stringRegex\",\n\t\"isNull\",\n\t\"not\",\n\t\"and\",\n\t\"or\",\n\t\"isIn\"\n]);\nfunction isBooleanExpression(expr) {\n\treturn booleanTypesSet.has(expr.type);\n}\n/**\n* Recursively traverses a SpecQuery tree bottom-up, applying visitor callbacks.\n*\n* Traversal order:\n* 1. Recurse into child queries\n* 2. Apply `column` to transform column references in leaf nodes\n* 3. Apply `joinEntry` to each join entry (with inner query already traversed)\n* 4. Assemble node with transformed children\n* 5. Apply `node` to the assembled node\n*/\nfunction traverseQuerySpec(query, visitor) {\n\tconst traverseEntry = (entry) => {\n\t\tconst traversed = {\n\t\t\t...entry,\n\t\t\tentry: traverseQuerySpec(entry.entry, visitor)\n\t\t};\n\t\treturn visitor.joinEntry ? visitor.joinEntry(traversed) : traversed;\n\t};\n\tlet result;\n\tswitch (query.type) {\n\t\tcase \"column\":\n\t\t\tresult = {\n\t\t\t\ttype: \"column\",\n\t\t\t\tcolumn: visitor.column(query.column)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"sparseToDenseColumn\":\n\t\t\tresult = {\n\t\t\t\t...query,\n\t\t\t\tcolumn: visitor.column(query.column)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"inlineColumn\":\n\t\t\tresult = query;\n\t\t\tbreak;\n\t\tcase \"innerJoin\":\n\t\tcase \"fullJoin\":\n\t\t\tresult = {\n\t\t\t\t...query,\n\t\t\t\tentries: query.entries.map(traverseEntry)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"outerJoin\":\n\t\t\tresult = {\n\t\t\t\t...query,\n\t\t\t\tprimary: traverseEntry(query.primary),\n\t\t\t\tsecondary: query.secondary.map(traverseEntry)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"linkerJoin\":\n\t\t\tresult = {\n\t\t\t\t...query,\n\t\t\t\tlinker: {\n\t\t\t\t\t...query.linker,\n\t\t\t\t\tcolumn: visitor.column(query.linker.column)\n\t\t\t\t},\n\t\t\t\tsecondary: query.secondary.map(traverseEntry)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"filter\":\n\t\tcase \"sort\":\n\t\tcase \"sliceAxes\":\n\t\t\tresult = {\n\t\t\t\t...query,\n\t\t\t\tinput: traverseQuerySpec(query.input, visitor)\n\t\t\t};\n\t\t\tbreak;\n\t\tdefault: assertNever(query);\n\t}\n\treturn visitor.node ? visitor.node(result) : result;\n}\n/** Recursively maps all column references in a SpecQuery tree. */\nfunction mapSpecQueryColumns(query, cb) {\n\treturn traverseQuerySpec(query, { column: cb });\n}\n/** Collects all column references from a SpecQuery tree. */\nfunction collectSpecQueryColumns(query) {\n\tconst result = [];\n\ttraverseQuerySpec(query, { column: (c) => {\n\t\tresult.push(c);\n\t\treturn c;\n\t} });\n\treturn result;\n}\nfunction sortSpecQuery(query) {\n\treturn traverseQuerySpec(query, {\n\t\tcolumn: (c) => c,\n\t\tnode: (node) => {\n\t\t\tswitch (node.type) {\n\t\t\t\tcase \"sparseToDenseColumn\": return {\n\t\t\t\t\t...node,\n\t\t\t\t\taxesIndices: node.axesIndices.toSorted((a, b) => a - b)\n\t\t\t\t};\n\t\t\t\tcase \"innerJoin\":\n\t\t\t\tcase \"fullJoin\": {\n\t\t\t\t\tconst sorted = [...node.entries].sort(cmpQueryJoinEntrySpec);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...node,\n\t\t\t\t\t\tentries: sorted\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"outerJoin\": {\n\t\t\t\t\tconst sorted = [...node.secondary].sort(cmpQueryJoinEntrySpec);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...node,\n\t\t\t\t\t\tsecondary: sorted\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"linkerJoin\": {\n\t\t\t\t\tconst sorted = [...node.secondary].sort(cmpQueryJoinEntrySpec);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...node,\n\t\t\t\t\t\tsecondary: sorted\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"sliceAxes\": return {\n\t\t\t\t\t...node,\n\t\t\t\t\taxisFilters: node.axisFilters.toSorted((a, b) => {\n\t\t\t\t\t\tconst ak = canonicalizeJson(a.axisSelector);\n\t\t\t\t\t\tconst bk = canonicalizeJson(b.axisSelector);\n\t\t\t\t\t\treturn ak < bk ? -1 : ak === bk ? 0 : 1;\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t\tdefault: return node;\n\t\t\t}\n\t\t},\n\t\tjoinEntry: (entry) => {\n\t\t\tif (entry.qualifications === void 0 || entry.qualifications.length === 0) return entry;\n\t\t\treturn {\n\t\t\t\t...entry,\n\t\t\t\tqualifications: entry.qualifications.toSorted((a, b) => {\n\t\t\t\t\tconst ak = canonicalizeJson(a.axis);\n\t\t\t\t\tconst bk = canonicalizeJson(b.axis);\n\t\t\t\t\treturn ak < bk ? -1 : ak === bk ? 0 : 1;\n\t\t\t\t})\n\t\t\t};\n\t\t}\n\t});\n}\nfunction cmpQuerySpec(lhs, rhs) {\n\tif (lhs.type !== rhs.type) return lhs.type < rhs.type ? -1 : 1;\n\tswitch (lhs.type) {\n\t\tcase \"column\": return lhs.column < rhs.column ? -1 : lhs.column === rhs.column ? 0 : 1;\n\t\tcase \"inlineColumn\": return lhs.spec.columnId < rhs.spec.columnId ? -1 : lhs.spec.columnId === rhs.spec.columnId ? 0 : 1;\n\t\tcase \"sparseToDenseColumn\": return lhs.column < rhs.column ? -1 : lhs.column === rhs.column ? 0 : 1;\n\t\tcase \"innerJoin\":\n\t\tcase \"fullJoin\": {\n\t\t\tconst rhsJoin = rhs;\n\t\t\tif (lhs.entries.length !== rhsJoin.entries.length) return lhs.entries.length - rhsJoin.entries.length;\n\t\t\tfor (let i = 0; i < lhs.entries.length; i++) {\n\t\t\t\tconst cmp = cmpQueryJoinEntrySpec(lhs.entries[i], rhsJoin.entries[i]);\n\t\t\t\tif (cmp !== 0) return cmp;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\tcase \"outerJoin\": {\n\t\t\tconst rhsOuter = rhs;\n\t\t\tconst cmp = cmpQueryJoinEntrySpec(lhs.primary, rhsOuter.primary);\n\t\t\tif (cmp !== 0) return cmp;\n\t\t\tif (lhs.secondary.length !== rhsOuter.secondary.length) return lhs.secondary.length - rhsOuter.secondary.length;\n\t\t\tfor (let i = 0; i < lhs.secondary.length; i++) {\n\t\t\t\tconst cmp = cmpQueryJoinEntrySpec(lhs.secondary[i], rhsOuter.secondary[i]);\n\t\t\t\tif (cmp !== 0) return cmp;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\tcase \"linkerJoin\": {\n\t\t\tconst rhsLinker = rhs;\n\t\t\tif (lhs.linker.column !== rhsLinker.linker.column) return lhs.linker.column < rhsLinker.linker.column ? -1 : 1;\n\t\t\tif (lhs.secondary.length !== rhsLinker.secondary.length) return lhs.secondary.length - rhsLinker.secondary.length;\n\t\t\tfor (let i = 0; i < lhs.secondary.length; i++) {\n\t\t\t\tconst cmp = cmpQueryJoinEntrySpec(lhs.secondary[i], rhsLinker.secondary[i]);\n\t\t\t\tif (cmp !== 0) return cmp;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\tcase \"sliceAxes\": return cmpQuerySpec(lhs.input, rhs.input);\n\t\tcase \"sort\": return cmpQuerySpec(lhs.input, rhs.input);\n\t\tcase \"filter\": return cmpQuerySpec(lhs.input, rhs.input);\n\t\tdefault: assertNever(lhs);\n\t}\n}\nfunction cmpQueryJoinEntrySpec(lhs, rhs) {\n\tconst cmp = cmpQuerySpec(lhs.entry, rhs.entry);\n\tif (cmp !== 0) return cmp;\n\tconst lhsQ = lhs.qualifications ?? [];\n\tconst rhsQ = rhs.qualifications ?? [];\n\tif (lhsQ.length !== rhsQ.length) return lhsQ.length - rhsQ.length;\n\tfor (let i = 0; i < lhsQ.length; i++) {\n\t\tconst l = canonicalizeJson(lhsQ[i]);\n\t\tconst r = canonicalizeJson(rhsQ[i]);\n\t\tif (l !== r) return l < r ? -1 : 1;\n\t}\n\treturn 0;\n}\n//#endregion\nexport { collectSpecQueryColumns, isBooleanExpression, mapSpecQueryColumns, sortSpecQuery, traverseQuerySpec };\n\n//# sourceMappingURL=utils.js.map","import { assertNever } from \"../../util.js\";\nimport { canonicalizeJson } from \"../../json.js\";\nimport { getAxisId } from \"./spec/spec.js\";\nimport { mapSpecQueryColumns } from \"./query/utils.js\";\nimport \"./query/index.js\";\n//#region src/drivers/pframe/table_calculate.ts\nfunction mapPTableDef(def, cb) {\n\treturn {\n\t\t...def,\n\t\tsrc: mapJoinEntry(def.src, cb)\n\t};\n}\nfunction sortPTableDef(def) {\n\tfunction sortFilters(filters) {\n\t\treturn filters.toSorted((lhs, rhs) => {\n\t\t\tif (lhs.column.type === \"axis\" && rhs.column.type === \"axis\") return canonicalizeJson(getAxisId(lhs.column.id)) < canonicalizeJson(getAxisId(rhs.column.id)) ? -1 : 1;\n\t\t\telse if (lhs.column.type === \"column\" && rhs.column.type === \"column\") return lhs.column.id < rhs.column.id ? -1 : 1;\n\t\t\telse return lhs.column.type === \"axis\" ? -1 : 1;\n\t\t});\n\t}\n\treturn {\n\t\tsrc: sortJoinEntry(def.src),\n\t\tpartitionFilters: sortFilters(def.partitionFilters),\n\t\tfilters: sortFilters(def.filters),\n\t\tsorting: def.sorting\n\t};\n}\nfunction mapPTableDefV2(def, cb) {\n\treturn { query: mapSpecQueryColumns(def.query, cb) };\n}\nfunction mapJoinEntry(entry, cb) {\n\tswitch (entry.type) {\n\t\tcase \"column\": return {\n\t\t\ttype: \"column\",\n\t\t\tcolumn: cb(entry.column)\n\t\t};\n\t\tcase \"slicedColumn\": return {\n\t\t\ttype: \"slicedColumn\",\n\t\t\tcolumn: cb(entry.column),\n\t\t\tnewId: entry.newId,\n\t\t\taxisFilters: entry.axisFilters\n\t\t};\n\t\tcase \"artificialColumn\": return {\n\t\t\ttype: \"artificialColumn\",\n\t\t\tcolumn: cb(entry.column),\n\t\t\tnewId: entry.newId,\n\t\t\taxesIndices: entry.axesIndices\n\t\t};\n\t\tcase \"inlineColumn\": return entry;\n\t\tcase \"inner\":\n\t\tcase \"full\": return {\n\t\t\ttype: entry.type,\n\t\t\tentries: entry.entries.map((col) => mapJoinEntry(col, cb))\n\t\t};\n\t\tcase \"outer\": return {\n\t\t\ttype: \"outer\",\n\t\t\tprimary: mapJoinEntry(entry.primary, cb),\n\t\t\tsecondary: entry.secondary.map((col) => mapJoinEntry(col, cb))\n\t\t};\n\t\tdefault: assertNever(entry);\n\t}\n}\nfunction cmpJoinEntries(lhs, rhs) {\n\tif (lhs.type !== rhs.type) return lhs.type < rhs.type ? -1 : 1;\n\tconst type = lhs.type;\n\tswitch (type) {\n\t\tcase \"column\": return lhs.column < rhs.column ? -1 : 1;\n\t\tcase \"slicedColumn\":\n\t\tcase \"artificialColumn\": return lhs.newId < rhs.newId ? -1 : 1;\n\t\tcase \"inlineColumn\": return lhs.column.id < rhs.column.id ? -1 : 1;\n\t\tcase \"inner\":\n\t\tcase \"full\": {\n\t\t\tconst rhsInner = rhs;\n\t\t\tif (lhs.entries.length !== rhsInner.entries.length) return lhs.entries.length - rhsInner.entries.length;\n\t\t\tfor (let i = 0; i < lhs.entries.length; i++) {\n\t\t\t\tconst cmp = cmpJoinEntries(lhs.entries[i], rhsInner.entries[i]);\n\t\t\t\tif (cmp !== 0) return cmp;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\tcase \"outer\": {\n\t\t\tconst rhsOuter = rhs;\n\t\t\tconst cmp = cmpJoinEntries(lhs.primary, rhsOuter.primary);\n\t\t\tif (cmp !== 0) return cmp;\n\t\t\tif (lhs.secondary.length !== rhsOuter.secondary.length) return lhs.secondary.length - rhsOuter.secondary.length;\n\t\t\tfor (let i = 0; i < lhs.secondary.length; i++) {\n\t\t\t\tconst cmp = cmpJoinEntries(lhs.secondary[i], rhsOuter.secondary[i]);\n\t\t\t\tif (cmp !== 0) return cmp;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\tdefault: assertNever(type);\n\t}\n}\nfunction sortJoinEntry(entry) {\n\tswitch (entry.type) {\n\t\tcase \"column\":\n\t\tcase \"slicedColumn\":\n\t\tcase \"inlineColumn\": return entry;\n\t\tcase \"artificialColumn\": {\n\t\t\tconst sortedAxesIndices = entry.axesIndices.toSorted((lhs, rhs) => lhs - rhs);\n\t\t\treturn {\n\t\t\t\t...entry,\n\t\t\t\taxesIndices: sortedAxesIndices\n\t\t\t};\n\t\t}\n\t\tcase \"inner\":\n\t\tcase \"full\": {\n\t\t\tconst sortedEntries = entry.entries.map(sortJoinEntry);\n\t\t\tsortedEntries.sort(cmpJoinEntries);\n\t\t\treturn {\n\t\t\t\t...entry,\n\t\t\t\tentries: sortedEntries\n\t\t\t};\n\t\t}\n\t\tcase \"outer\": {\n\t\t\tconst sortedSecondary = entry.secondary.map(sortJoinEntry);\n\t\t\tsortedSecondary.sort(cmpJoinEntries);\n\t\t\treturn {\n\t\t\t\t...entry,\n\t\t\t\tprimary: sortJoinEntry(entry.primary),\n\t\t\t\tsecondary: sortedSecondary\n\t\t\t};\n\t\t}\n\t\tdefault: assertNever(entry);\n\t}\n}\n//#endregion\nexport { mapJoinEntry, mapPTableDef, mapPTableDefV2, sortJoinEntry, sortPTableDef };\n\n//# sourceMappingURL=table_calculate.js.map","import canonicalize from \"canonicalize\";\n//#region src/drivers/pframe/spec/ids.ts\n/**\n* Canonically serializes a {@link UniversalPColumnId} to a string.\n* @param id - The column identifier to serialize\n* @returns The canonically serialized string\n*/\nfunction stringifyColumnId(id) {\n\treturn canonicalize(id);\n}\n/**\n* Parses a canonically serialized {@link UniversalPColumnId} from a string.\n* @param str - The string to parse\n* @returns The parsed column identifier\n*/\nfunction parseColumnId(str) {\n\treturn JSON.parse(str);\n}\n//#endregion\nexport { parseColumnId, stringifyColumnId };\n\n//# sourceMappingURL=ids.js.map","import { getAxisId, matchAxisId } from \"./spec.js\";\nimport { stringifyColumnId } from \"./ids.js\";\nimport canonicalize from \"canonicalize\";\n//#region src/drivers/pframe/spec/anchored.ts\nfunction axisKey(axis) {\n\treturn canonicalize(getAxisId(axis));\n}\nfunction domainKey(key, value) {\n\treturn JSON.stringify([key, value]);\n}\n/**\n* Context for resolving and generating anchored references to columns and axes\n* Maintains maps of known domain values and axes that can be referenced by anchors\n*/\nvar AnchoredIdDeriver = class {\n\taxes = /* @__PURE__ */ new Map();\n\tdomains = /* @__PURE__ */ new Map();\n\tcontextDomains = /* @__PURE__ */ new Map();\n\t/**\n\t* Domain packs are used to group domain keys that can be anchored to the same anchor\n\t* This is used to optimize the lookup of domain anchors\n\t*/\n\tdomainPacks = [];\n\tcontextDomainPacks = [];\n\t/**\n\t* Maps domain packs to anchors\n\t*/\n\tdomainPackToAnchor = /* @__PURE__ */ new Map();\n\tcontextDomainPackToAnchor = /* @__PURE__ */ new Map();\n\t/**\n\t* Creates a new anchor context from a set of anchor column specifications\n\t* @param anchors Record of anchor column specifications indexed by anchor ID\n\t*/\n\tconstructor(anchors) {\n\t\tthis.anchors = anchors;\n\t\tconst anchorEntries = Object.entries(anchors);\n\t\tanchorEntries.sort((a, b) => a[0].localeCompare(b[0]));\n\t\tfor (const [anchorId, spec] of anchorEntries) {\n\t\t\tfor (let axisIdx = 0; axisIdx < spec.axesSpec.length; axisIdx++) {\n\t\t\t\tconst axis = spec.axesSpec[axisIdx];\n\t\t\t\tconst key = axisKey(axis);\n\t\t\t\tthis.axes.set(key, {\n\t\t\t\t\tanchor: anchorId,\n\t\t\t\t\tidx: axisIdx\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (spec.domain !== void 0) {\n\t\t\t\tconst domainEntries = Object.entries(spec.domain);\n\t\t\t\tdomainEntries.sort((a, b) => a[0].localeCompare(b[0]));\n\t\t\t\tthis.domainPackToAnchor.set(JSON.stringify(domainEntries), anchorId);\n\t\t\t\tthis.domainPacks.push(domainEntries.map(([dKey]) => dKey));\n\t\t\t\tfor (const [dKey, dValue] of domainEntries) {\n\t\t\t\t\tconst key = domainKey(dKey, dValue);\n\t\t\t\t\tthis.domains.set(key, anchorId);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (spec.contextDomain !== void 0) {\n\t\t\t\tconst contextDomainEntries = Object.entries(spec.contextDomain);\n\t\t\t\tcontextDomainEntries.sort((a, b) => a[0].localeCompare(b[0]));\n\t\t\t\tthis.contextDomainPackToAnchor.set(JSON.stringify(contextDomainEntries), anchorId);\n\t\t\t\tthis.contextDomainPacks.push(contextDomainEntries.map(([dKey]) => dKey));\n\t\t\t\tfor (const [dKey, dValue] of contextDomainEntries) {\n\t\t\t\t\tconst key = domainKey(dKey, dValue);\n\t\t\t\t\tthis.contextDomains.set(key, anchorId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t/**\n\t* Implementation of derive method\n\t*/\n\tderive(spec, axisFilters) {\n\t\tconst result = {\n\t\t\tname: spec.name,\n\t\t\taxes: []\n\t\t};\n\t\tlet skipDomains = void 0;\n\t\tif (spec.domain !== void 0) outer: for (const domainPack of this.domainPacks) {\n\t\t\tconst dAnchor = [];\n\t\t\tfor (const domainKey of domainPack) {\n\t\t\t\tconst dValue = spec.domain[domainKey];\n\t\t\t\tif (dValue !== void 0) dAnchor.push([domainKey, dValue]);\n\t\t\t\telse break outer;\n\t\t\t}\n\t\t\tconst domainAnchor = this.domainPackToAnchor.get(JSON.stringify(dAnchor));\n\t\t\tif (domainAnchor !== void 0) {\n\t\t\t\tresult.domainAnchor = domainAnchor;\n\t\t\t\tskipDomains = new Set(domainPack);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tfor (const [dKey, dValue] of Object.entries(spec.domain ?? {})) {\n\t\t\tif (skipDomains !== void 0 && skipDomains.has(dKey)) continue;\n\t\t\tconst key = domainKey(dKey, dValue);\n\t\t\tconst anchorId = this.domains.get(key);\n\t\t\tresult.domain ??= {};\n\t\t\tresult.domain[dKey] = anchorId ? { anchor: anchorId } : dValue;\n\t\t}\n\t\tlet skipContextDomains = void 0;\n\t\tif (spec.contextDomain !== void 0) outer: for (const contextDomainPack of this.contextDomainPacks) {\n\t\t\tconst dAnchor = [];\n\t\t\tfor (const domainKey of contextDomainPack) {\n\t\t\t\tconst dValue = spec.contextDomain[domainKey];\n\t\t\t\tif (dValue !== void 0) dAnchor.push([domainKey, dValue]);\n\t\t\t\telse break outer;\n\t\t\t}\n\t\t\tconst contextDomainAnchor = this.contextDomainPackToAnchor.get(JSON.stringify(dAnchor));\n\t\t\tif (contextDomainAnchor !== void 0) {\n\t\t\t\tresult.contextDomainAnchor = contextDomainAnchor;\n\t\t\t\tskipContextDomains = new Set(contextDomainPack);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tfor (const [dKey, dValue] of Object.entries(spec.contextDomain ?? {})) {\n\t\t\tif (skipContextDomains !== void 0 && skipContextDomains.has(dKey)) continue;\n\t\t\tconst key = domainKey(dKey, dValue);\n\t\t\tconst anchorId = this.contextDomains.get(key);\n\t\t\tresult.contextDomain ??= {};\n\t\t\tresult.contextDomain[dKey] = anchorId ? { anchor: anchorId } : dValue;\n\t\t}\n\t\tresult.axes = spec.axesSpec.map((axis) => {\n\t\t\tconst key = axisKey(axis);\n\t\t\tconst anchorAxisRef = this.axes.get(key);\n\t\t\tif (anchorAxisRef === void 0) return getAxisId(axis);\n\t\t\telse return anchorAxisRef;\n\t\t});\n\t\tif (!axisFilters || axisFilters.length === 0) return result;\n\t\tconst resolvedFilters = [];\n\t\tfor (const filter of axisFilters) {\n\t\t\tconst [axisIdOrIndex, value] = filter;\n\t\t\tif (typeof axisIdOrIndex === \"number\") {\n\t\t\t\tif (axisIdOrIndex < 0 || axisIdOrIndex >= spec.axesSpec.length) throw new Error(`Axis index ${axisIdOrIndex} is out of bounds (0-${spec.axesSpec.length - 1})`);\n\t\t\t\tresolvedFilters.push([axisIdOrIndex, value]);\n\t\t\t} else {\n\t\t\t\tconst axisIndex = spec.axesSpec.findIndex((axis) => axis.name === axisIdOrIndex);\n\t\t\t\tif (axisIndex === -1) throw new Error(`Axis with name \"${axisIdOrIndex}\" not found in the column specification`);\n\t\t\t\tresolvedFilters.push([axisIndex, value]);\n\t\t\t}\n\t\t}\n\t\tresolvedFilters.sort((a, b) => a[0] - b[0]);\n\t\treturn {\n\t\t\tsource: result,\n\t\t\taxisFilters: resolvedFilters\n\t\t};\n\t}\n\t/**\n\t* Derives a canonicalized string representation of an anchored column identifier, can be used as a unique identifier for the column\n\t* @param spec Column specification to anchor\n\t* @param axisFilters Optional axis filters to apply to the column\n\t* @returns A canonicalized string representation of the anchored column identifier\n\t*/\n\tderiveS(spec, axisFilters) {\n\t\treturn stringifyColumnId(this.derive(spec, axisFilters));\n\t}\n};\n/**\n* Resolves anchored references in a column matcher to create a non-anchored matcher.\n* Doing an opposite operation to {@link AnchorIdDeriver.derive()}.\n*\n* @param anchors - Record of anchor column specifications indexed by anchor id\n* @param matcher - An anchored column matcher (or id, which is subtype of it) containing references that need to be resolved\n* @param options - Options for resolving anchors\n* @returns A non-anchored column matcher with all references resolved to actual values\n* @deprecated - This function by parent PColumnCollection\n*/\nfunction resolveAnchors(anchors, matcher, options) {\n\tconst result = { ...matcher };\n\tconst ignoreMissingDomains = options?.ignoreMissingDomains ?? false;\n\tif (result.domainAnchor !== void 0) {\n\t\tconst anchorSpec = anchors[result.domainAnchor];\n\t\tif (!anchorSpec) throw new Error(`Anchor \"${result.domainAnchor}\" not found`);\n\t\tresult.domain = {\n\t\t\t...anchorSpec.domain || {},\n\t\t\t...result.domain\n\t\t};\n\t\tdelete result.domainAnchor;\n\t}\n\tif (result.domain) {\n\t\tconst resolvedDomain = {};\n\t\tfor (const [key, value] of Object.entries(result.domain)) if (typeof value === \"string\") resolvedDomain[key] = value;\n\t\telse {\n\t\t\tconst anchorSpec = anchors[value.anchor];\n\t\t\tif (!anchorSpec) throw new Error(`Anchor \"${value.anchor}\" not found for domain key \"${key}\"`);\n\t\t\tif (!anchorSpec.domain || anchorSpec.domain[key] === void 0) {\n\t\t\t\tif (!ignoreMissingDomains) throw new Error(`Domain key \"${key}\" not found in anchor \"${value.anchor}\"`);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tresolvedDomain[key] = anchorSpec.domain[key];\n\t\t}\n\t\tresult.domain = resolvedDomain;\n\t}\n\tif (result.contextDomainAnchor !== void 0) {\n\t\tconst anchorSpec = anchors[result.contextDomainAnchor];\n\t\tif (!anchorSpec) throw new Error(`Anchor \"${result.contextDomainAnchor}\" not found`);\n\t\tresult.contextDomain = {\n\t\t\t...anchorSpec.contextDomain || {},\n\t\t\t...result.contextDomain\n\t\t};\n\t\tdelete result.contextDomainAnchor;\n\t}\n\tif (result.contextDomain) {\n\t\tconst resolvedContextDomain = {};\n\t\tfor (const [key, value] of Object.entries(result.contextDomain)) if (typeof value === \"string\") resolvedContextDomain[key] = value;\n\t\telse {\n\t\t\tconst anchorSpec = anchors[value.anchor];\n\t\t\tif (!anchorSpec) throw new Error(`Anchor \"${value.anchor}\" not found for contextDomain key \"${key}\"`);\n\t\t\tif (!anchorSpec.contextDomain || anchorSpec.contextDomain[key] === void 0) {\n\t\t\t\tif (!ignoreMissingDomains) throw new Error(`Context domain key \"${key}\" not found in anchor \"${value.anchor}\"`);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tresolvedContextDomain[key] = anchorSpec.contextDomain[key];\n\t\t}\n\t\tresult.contextDomain = resolvedContextDomain;\n\t}\n\tif (result.axes) result.axes = result.axes.map((axis) => resolveAxisReference(anchors, axis));\n\treturn result;\n}\n/**\n* Resolves an anchored axis reference to a concrete AxisId\n*/\nfunction resolveAxisReference(anchors, axisRef) {\n\tif (!isAnchorAxisRef(axisRef)) return axisRef;\n\tconst anchorId = axisRef.anchor;\n\tconst anchorSpec = anchors[anchorId];\n\tif (!anchorSpec) throw new Error(`Anchor \"${anchorId}\" not found for axis reference`);\n\tif (\"idx\" in axisRef) {\n\t\tif (axisRef.idx < 0 || axisRef.idx >= anchorSpec.axesSpec.length) throw new Error(`Axis index ${axisRef.idx} out of bounds for anchor \"${anchorId}\"`);\n\t\treturn anchorSpec.axesSpec[axisRef.idx];\n\t} else if (\"name\" in axisRef) {\n\t\tconst matches = anchorSpec.axesSpec.filter((axis) => axis.name === axisRef.name);\n\t\tif (matches.length > 1) throw new Error(`Multiple axes with name \"${axisRef.name}\" found in anchor \"${anchorId}\"`);\n\t\tif (matches.length === 0) throw new Error(`Axis with name \"${axisRef.name}\" not found in anchor \"${anchorId}\"`);\n\t\treturn matches[0];\n\t} else if (\"id\" in axisRef) {\n\t\tconst matches = anchorSpec.axesSpec.filter((axis) => matchAxisId(axisRef.id, getAxisId(axis)));\n\t\tif (matches.length > 1) throw new Error(`Multiple matching axes found for matcher in anchor \"${anchorId}\"`);\n\t\tif (matches.length === 0) throw new Error(`No matching axis found for matcher in anchor \"${anchorId}\"`);\n\t\treturn matches[0];\n\t}\n\tthrow new Error(`Unsupported axis reference type`);\n}\n/**\n* Type guard to check if a value is an anchored axis reference\n*/\nfunction isAnchorAxisRef(value) {\n\treturn typeof value === \"object\" && \"anchor\" in value;\n}\n//#endregion\nexport { AnchoredIdDeriver, resolveAnchors };\n\n//# sourceMappingURL=anchored.js.map","import { assertNever } from \"../util.js\";\n//#region src/pool/spec.ts\nfunction isPColumnSpec(spec) {\n\treturn spec.kind === \"PColumn\";\n}\nfunction isPColumn(obj) {\n\treturn isPColumnSpec(obj.spec);\n}\nfunction isPColumnSpecResult(r) {\n\treturn isPColumnSpec(r.obj);\n}\nfunction isPColumnResult(r) {\n\treturn isPColumnSpec(r.obj.spec);\n}\nfunction ensurePColumn(obj) {\n\tif (!isPColumn(obj)) throw new Error(`not a PColumn (kind = ${obj.spec.kind})`);\n\treturn obj;\n}\nfunction mapPObjectData(pObj, cb) {\n\treturn pObj === void 0 ? void 0 : {\n\t\t...pObj,\n\t\tdata: cb(typeof pObj.data === \"function\" ? pObj.data() : pObj.data)\n\t};\n}\nfunction extractAllColumns(entry) {\n\tconst columns = /* @__PURE__ */ new Map();\n\tconst addAllColumns = (entry) => {\n\t\tswitch (entry.type) {\n\t\t\tcase \"column\":\n\t\t\t\tcolumns.set(entry.column.id, entry.column);\n\t\t\t\treturn;\n\t\t\tcase \"slicedColumn\":\n\t\t\t\tcolumns.set(entry.column.id, entry.column);\n\t\t\t\treturn;\n\t\t\tcase \"artificialColumn\":\n\t\t\t\tcolumns.set(entry.column.id, entry.column);\n\t\t\t\treturn;\n\t\t\tcase \"inlineColumn\": return;\n\t\t\tcase \"full\":\n\t\t\tcase \"inner\":\n\t\t\t\tfor (const e of entry.entries) addAllColumns(e);\n\t\t\t\treturn;\n\t\t\tcase \"outer\":\n\t\t\t\taddAllColumns(entry.primary);\n\t\t\t\tfor (const e of entry.secondary) addAllColumns(e);\n\t\t\t\treturn;\n\t\t\tdefault: assertNever(entry);\n\t\t}\n\t};\n\taddAllColumns(entry);\n\treturn [...columns.values()];\n}\n//#endregion\nexport { ensurePColumn, extractAllColumns, isPColumn, isPColumnResult, isPColumnSpec, isPColumnSpecResult, mapPObjectData };\n\n//# sourceMappingURL=spec.js.map","import { getAxisId } from \"./spec.js\";\nimport { isPColumnSpec } from \"../../../pool/spec.js\";\n//#region src/drivers/pframe/spec/selectors.ts\n/**\n* Checks if a given value is an anchored column identifier\n* @param id - The value to check\n* @returns True if the value is an anchored column identifier, false otherwise\n*/\nfunction isAnchoredPColumnId(id) {\n\treturn typeof id === \"object\" && id !== null && \"name\" in id && \"axes\" in id;\n}\n/**\n* Determines if an axis ID matches an axis selector.\n*\n* @param selector - The selector with criteria to match against\n* @param axis - The AxisId to check against the selector\n* @returns true if the AxisId matches all specified criteria in the selector, false otherwise\n*/\nfunction matchAxis(selector, axis) {\n\tif (selector.name !== void 0 && selector.name !== axis.name) return false;\n\tif (selector.type !== void 0) {\n\t\tif (Array.isArray(selector.type)) {\n\t\t\tif (!selector.type.includes(axis.type)) return false;\n\t\t} else if (selector.type !== axis.type) return false;\n\t}\n\tif (selector.domain !== void 0) {\n\t\tconst axisDomain = axis.domain || {};\n\t\tfor (const [key, value] of Object.entries(selector.domain)) if (axisDomain[key] !== value) return false;\n\t}\n\tif (selector.contextDomain !== void 0) {\n\t\tconst axisContextDomain = axis.contextDomain || {};\n\t\tfor (const [key, value] of Object.entries(selector.contextDomain)) if (axisContextDomain[key] !== value) return false;\n\t}\n\treturn true;\n}\n/**\n* Determines if a given PColumnSpec matches a selector.\n*\n* @param pcolumn - The PColumnSpec to check against the selector\n* @param selector - The selector criteria to match against\n* @returns true if the PColumnSpec matches all criteria in the selector, false otherwise\n*/\nfunction matchPColumn(pcolumn, selector) {\n\tif (selector.name !== void 0 && pcolumn.name !== selector.name) return false;\n\tif (selector.namePattern !== void 0 && !new RegExp(selector.namePattern).test(pcolumn.name)) return false;\n\tif (selector.type !== void 0) {\n\t\tif (Array.isArray(selector.type)) {\n\t\t\tif (!selector.type.includes(pcolumn.valueType)) return false;\n\t\t} else if (selector.type !== pcolumn.valueType) return false;\n\t}\n\tif (selector.domain !== void 0) {\n\t\tconst columnDomain = pcolumn.domain || {};\n\t\tfor (const [key, value] of Object.entries(selector.domain)) if (columnDomain[key] !== value) return false;\n\t}\n\tif (selector.contextDomain !== void 0) {\n\t\tconst columnContextDomain = pcolumn.contextDomain || {};\n\t\tfor (const [key, value] of Object.entries(selector.contextDomain)) if (columnContextDomain[key] !== value) return false;\n\t}\n\tif (selector.axes !== void 0) {\n\t\tconst pcolumnAxes = pcolumn.axesSpec.map(getAxisId);\n\t\tif (selector.partialAxesMatch) {\n\t\t\tfor (const selectorAxis of selector.axes) if (!pcolumnAxes.some((columnAxis) => matchAxis(selectorAxis, columnAxis))) return false;\n\t\t} else {\n\t\t\tif (pcolumnAxes.length !== selector.axes.length) return false;\n\t\t\tfor (let i = 0; i < selector.axes.length; i++) if (!matchAxis(selector.axes[i], pcolumnAxes[i])) return false;\n\t\t}\n\t}\n\tif (selector.annotations !== void 0) {\n\t\tconst columnAnnotations = pcolumn.annotations || {};\n\t\tfor (const [key, value] of Object.entries(selector.annotations)) if (columnAnnotations[key] !== value) return false;\n\t}\n\tif (selector.annotationPatterns !== void 0) {\n\t\tconst columnAnnotations = pcolumn.annotations || {};\n\t\tfor (const [key, pattern] of Object.entries(selector.annotationPatterns)) {\n\t\t\tconst value = columnAnnotations[key];\n\t\t\tif (value === void 0 || !new RegExp(pattern).test(value)) return false;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n* Convert a predicate or array of selectors to a single predicate function\n* @param predicateOrSelectors - Either a function that takes a PColumnSpec and returns a boolean,\n* or an array of PColumnSelectors, or a single PColumnSelector\n* @returns A function that takes a PColumnSpec and returns a boolean\n*/\nfunction legacyColumnSelectorsToPredicate(predicateOrSelectors) {\n\tif (Array.isArray(predicateOrSelectors)) return (spec) => predicateOrSelectors.some((selector) => isPColumnSpec(spec) && matchPColumn(spec, selector));\n\telse return (spec) => isPColumnSpec(spec) && matchPColumn(spec, predicateOrSelectors);\n}\nfunction matchString(matcher, value) {\n\treturn matcher.type === \"exact\" ? value === matcher.value : new RegExp(matcher.value).test(value);\n}\nfunction matchMatcherMap(map, target) {\n\tconst t = target ?? {};\n\tfor (const [key, matchers] of Object.entries(map)) {\n\t\tconst v = t[key];\n\t\tif (v === void 0) return false;\n\t\tif (!matchers.some((m) => matchString(m, v))) return false;\n\t}\n\treturn true;\n}\nfunction matchMultiAxis(selector, axis) {\n\tif (selector.type !== void 0 && !selector.type.includes(axis.type)) return false;\n\tif (selector.name !== void 0 && !selector.name.some((m) => matchString(m, axis.name))) return false;\n\tif (selector.domain !== void 0 && !matchMatcherMap(selector.domain, axis.domain)) return false;\n\tif (selector.contextDomain !== void 0 && !matchMatcherMap(selector.contextDomain, axis.contextDomain)) return false;\n\treturn true;\n}\n/** Match a {@link PColumnSpec} against a {@link MultiColumnSelector}. */\nfunction matchMultiColumnSelector(spec, selector) {\n\tif (selector.type !== void 0 && !selector.type.includes(spec.valueType)) return false;\n\tif (selector.name !== void 0 && !selector.name.some((m) => matchString(m, spec.name))) return false;\n\tif (selector.domain !== void 0 && !matchMatcherMap(selector.domain, spec.domain)) return false;\n\tif (selector.contextDomain !== void 0 && !matchMatcherMap(selector.contextDomain, spec.contextDomain)) return false;\n\tif (selector.annotations !== void 0 && !matchMatcherMap(selector.annotations, spec.annotations)) return false;\n\tif (selector.axes !== void 0) {\n\t\tconst columnAxes = spec.axesSpec.map(getAxisId);\n\t\tif (selector.partialAxesMatch ?? true) {\n\t\t\tfor (const axisSelector of selector.axes) if (!columnAxes.some((axis) => matchMultiAxis(axisSelector, axis))) return false;\n\t\t} else {\n\t\t\tif (columnAxes.length !== selector.axes.length) return false;\n\t\t\tfor (let i = 0; i < selector.axes.length; i++) if (!matchMultiAxis(selector.axes[i], columnAxes[i])) return false;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n* Convert a {@link MultiColumnSelector} (or array; selectors OR-ed) to a predicate.\n* Non-PColumn specs always return false.\n*/\nfunction multiColumnSelectorsToPredicate(selectors) {\n\tconst arr = Array.isArray(selectors) ? selectors : [selectors];\n\treturn (spec) => isPColumnSpec(spec) && arr.some((sel) => matchMultiColumnSelector(spec, sel));\n}\n//#endregion\nexport { isAnchoredPColumnId, legacyColumnSelectorsToPredicate, matchAxis, matchMultiColumnSelector, matchPColumn, multiColumnSelectorsToPredicate };\n\n//# sourceMappingURL=selectors.js.map","import { getAxesId } from \"./spec.js\";\nimport { isPColumnSpec } from \"../../../pool/spec.js\";\nimport canonicalize from \"canonicalize\";\n//#region src/drivers/pframe/spec/native_id.ts\nfunction deriveNativeId(spec) {\n\tconst result = {\n\t\tkind: spec.kind,\n\t\tname: spec.name\n\t};\n\tif (spec.domain !== void 0) result.domain = spec.domain;\n\tif (spec.contextDomain !== void 0) result.contextDomain = spec.contextDomain;\n\tif (isPColumnSpec(spec)) result.axesSpec = getAxesId(spec.axesSpec);\n\treturn canonicalize(result);\n}\n//#endregion\nexport { deriveNativeId };\n\n//# sourceMappingURL=native_id.js.map","import { __exportAll } from \"./_virtual/_rolldown/runtime.js\";\n//#region src/utils.ts\nvar utils_exports = /* @__PURE__ */ __exportAll({\n\tDeferred: () => Deferred,\n\tFetcher: () => Fetcher,\n\tInterval: () => Interval,\n\talike: () => alike,\n\tarrayFrom: () => arrayFrom,\n\tasConst: () => asConst,\n\tasync: () => async,\n\tbetween: () => between,\n\tbool: () => bool,\n\tcall: () => call,\n\tcheckIfDefined: () => checkIfDefined,\n\tcheckIfNotEmpty: () => checkIfNotEmpty,\n\tclamp: () => clamp,\n\tdelay: () => delay,\n\terrorOptional: () => errorOptional,\n\texhaustive: () => exhaustive,\n\tflatValue: () => flatValue,\n\tidentity: () => identity,\n\tisNil: () => isNil,\n\tisPrimitive: () => isPrimitive,\n\tlistToOptions: () => listToOptions,\n\tmatch: () => match,\n\tnotEmpty: () => notEmpty,\n\tnotUndef: () => notUndef,\n\tokOptional: () => okOptional,\n\tperformanceTimer: () => performanceTimer,\n\trange: () => range,\n\tresolveAwaited: () => resolveAwaited,\n\ttap: () => tap,\n\ttapIf: () => tapIf,\n\ttear: () => tear,\n\ttimer: () => timer,\n\ttimes: () => times,\n\ttoList: () => toList,\n\tundef: () => undef,\n\tunionize: () => unionize,\n\tuniqueValues: () => uniqueValues,\n\tunwrap: () => unwrap\n});\nfunction isNil(v) {\n\treturn v === null || v === void 0;\n}\nfunction isPrimitive(v) {\n\treturn isNil(v) || typeof v === \"string\" || typeof v === \"number\" || typeof v === \"boolean\" || typeof v === \"bigint\";\n}\nfunction notEmpty(v, message) {\n\tif (v === null || v === void 0) throw Error(message ?? \"Empty (null | undefined) value\");\n\treturn v;\n}\nfunction notUndef(v, message) {\n\tif (v === void 0) throw Error(message ?? \"Undefined value\");\n\treturn v;\n}\nfunction undef(v = void 0) {\n\treturn v;\n}\nfunction bool(v) {\n\treturn v;\n}\nfunction uniqueValues(items) {\n\treturn [...new Set(items)];\n}\nfunction checkIfNotEmpty(v, message) {\n\tif (v === void 0 || v === null) throw Error(message ?? \"Empty (null | undefined) value\");\n}\nfunction checkIfDefined(v, message) {\n\tif (v === void 0) throw Error(message ?? \"Undefined value\");\n}\nfunction between(n, a, b) {\n\treturn n >= Math.min(a, b) && n <= Math.max(a, b);\n}\nfunction listToOptions(list) {\n\treturn list.map((value) => ({\n\t\ttext: String(value),\n\t\tvalue\n\t}));\n}\nfunction async(gf) {\n\treturn function(...args) {\n\t\tconst generator = gf(...args);\n\t\tasync function handle(result) {\n\t\t\tif (result.done) return Promise.resolve(result.value);\n\t\t\treturn Promise.resolve(result.value).then((res) => {\n\t\t\t\treturn handle(generator.next(res));\n\t\t\t}).catch((err) => {\n\t\t\t\treturn handle(generator.throw(err));\n\t\t\t});\n\t\t}\n\t\ttry {\n\t\t\treturn handle(generator.next());\n\t\t} catch (ex) {\n\t\t\treturn Promise.reject(ex instanceof Error ? ex : Error(String(ex)));\n\t\t}\n\t};\n}\nvar Deferred = class {\n\tpromise;\n\tconstructor() {\n\t\tthis.promise = new Promise((res, rej) => {\n\t\t\tthis.resolve = res;\n\t\t\tthis.reject = rej;\n\t\t});\n\t}\n\tresolve = () => {};\n\treject = () => {};\n};\nfunction delay(ms) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\nfunction tear() {\n\treturn new Promise((r) => queueMicrotask(r));\n}\nfunction timer() {\n\tconst t = (/* @__PURE__ */ new Date()).getTime();\n\treturn function() {\n\t\treturn (/* @__PURE__ */ new Date()).getTime() - t;\n\t};\n}\nfunction performanceTimer() {\n\tconst t = performance.now();\n\treturn function() {\n\t\treturn performance.now() - t;\n\t};\n}\nfunction call(f) {\n\treturn f();\n}\nfunction clamp(n, lo, up) {\n\treturn lo > n ? lo : n > up ? up : n;\n}\nfunction tap(v, cb) {\n\treturn cb(v);\n}\nfunction tapIf(v, cb) {\n\tif (v !== null && v !== void 0) return cb(v);\n}\nfunction* range(from, to, step = 1) {\n\tfor (let i = from; i < to; i += step) yield i;\n}\nfunction toList(iterable) {\n\tconst lst = [];\n\tfor (const it of iterable) lst.push(it);\n\treturn lst;\n}\nfunction times(n, cb) {\n\treturn toList(range(0, n)).map(cb);\n}\nvar Interval = class {\n\tconstructor(_delay) {\n\t\tthis._delay = _delay;\n\t}\n\tasync *generate() {\n\t\tlet i = 0;\n\t\twhile (true) {\n\t\t\tawait delay(this._delay);\n\t\t\tyield i++;\n\t\t}\n\t}\n\tasync *[Symbol.asyncIterator]() {\n\t\tlet i = 0;\n\t\twhile (true) {\n\t\t\tawait delay(this._delay);\n\t\t\tyield i++;\n\t\t}\n\t}\n};\nfunction arrayFrom(length, cb) {\n\treturn Array.from({ length }, (_, i) => cb(i));\n}\nfunction exhaustive(v, message) {\n\tthrow Error(message);\n}\nfunction match(matcher) {\n\treturn (key) => matcher[key]();\n}\nfunction okOptional(v) {\n\tif (!v) return;\n\tif (v.ok) return v.value;\n}\nfunction errorOptional(v) {\n\tif (!v) return;\n\tif (!v.ok) return v.error;\n}\nfunction unwrap(r) {\n\tif (r.ok) return r.value;\n\tthrow Error(r.error);\n}\nfunction flatValue(v) {\n\treturn Array.isArray(v) ? v : [v];\n}\nasync function resolveAwaited(obj) {\n\treturn Object.fromEntries(await Promise.all(Object.entries(obj).map(async ([k, v]) => [k, await v])));\n}\nfunction alike(obj, to) {\n\treturn Object.keys(to).every((bKey) => obj[bKey] === to[bKey]);\n}\nconst identity = (v) => v;\nfunction asConst(v) {\n\treturn v;\n}\nfunction unionize(obj) {\n\treturn Object.entries(obj).map(([key, value]) => ({\n\t\tkey,\n\t\tvalue\n\t}));\n}\nvar Fetcher = class {\n\tpromises = /* @__PURE__ */ new Map();\n\tfetch(key, callback) {\n\t\tif (this.promises.has(key)) return this.promises.get(key);\n\t\tconst promise = callback().finally(() => {\n\t\t\tthis.promises.delete(key);\n\t\t});\n\t\tthis.promises.set(key, promise);\n\t\treturn promise;\n\t}\n};\n//#endregion\nexport { Deferred, Fetcher, Interval, alike, arrayFrom, asConst, async, between, bool, call, checkIfDefined, checkIfNotEmpty, clamp, delay, errorOptional, exhaustive, flatValue, identity, isNil, isPrimitive, listToOptions, match, notEmpty, notUndef, okOptional, performanceTimer, range, resolveAwaited, tap, tapIf, tear, timer, times, toList, undef, unionize, uniqueValues, unwrap, utils_exports };\n\n//# sourceMappingURL=utils.js.map","import { __exportAll } from \"./_virtual/_rolldown/runtime.js\";\nimport { isNil } from \"./utils.js\";\n//#region src/objects.ts\nvar objects_exports = /* @__PURE__ */ __exportAll({\n\tbindMethods: () => bindMethods,\n\tdeepClone: () => deepClone,\n\tdeepEqual: () => deepEqual,\n\tdeepPatch: () => deepPatch,\n\tgetField: () => getField,\n\tgetProp: () => getProp,\n\tisArray: () => isArray,\n\tisJsonEqual: () => isJsonEqual,\n\tisNonPrimitive: () => isNonPrimitive,\n\tisObject: () => isObject,\n\tisPlainObject: () => isPlainObject,\n\tmap: () => map,\n\tomit: () => omit,\n\tpick: () => pick,\n\tpickValues: () => pickValues,\n\tsetProp: () => setProp,\n\tshallowClone: () => shallowClone,\n\tshallowDiff: () => shallowDiff,\n\tshiftProp: () => shiftProp\n});\n/**\n* Alias to Array.isArray\n*/\nconst isArray = Array.isArray;\nfunction isNonPrimitive(obj) {\n\treturn obj !== null && typeof obj === \"object\";\n}\nfunction isObject(value) {\n\treturn typeof value === \"object\" && value !== null;\n}\n/**\n* Checks if the given value is a plain object.\n*\n* A plain object is defined as an object created by the `{}` literal,\n* an object created with `Object.create(null)`, or an object with a\n* prototype that resolves to `Object.prototype`.\n*\n* @param value - The value to check.\n* @returns `true` if the value is a plain object, otherwise `false`.\n*\n* @example\n* ```typescript\n* isPlainObject({}); // true\n* isPlainObject(Object.create(null)); // true\n* isPlainObject(new Date()); // false\n* isPlainObject(null); // false\n* isPlainObject([]); // false\n* ```\n*/\nfunction isPlainObject(value) {\n\tif (!isObject(value)) return false;\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null;\n}\nfunction map(obj, callback) {\n\treturn Object.keys(obj).map((key) => {\n\t\treturn callback(obj[key], key);\n\t});\n}\nfunction definedKeysSize(obj) {\n\treturn Object.values(obj).reduce((length, v) => {\n\t\treturn v !== void 0 ? length + 1 : length;\n\t}, 0);\n}\n/**\n* Performs a deep equality check between two values, `a` and `b`, to determine if they are JSON-equivalent.\n*\n* JSON equivalence means that the two values are strictly equal in structure and content, including arrays and plain objects.\n* Non-primitive values that are neither arrays nor plain objects will throw an error.\n*\n* @param a - The first value to compare.\n* @param b - The second value to compare.\n* @returns `true` if the values are JSON-equivalent, otherwise `false`.\n*\n* @throws If the values are non-primitive and not arrays or plain objects.\n*\n* @example\n* ```typescript\n* isJsonEqual(1, 1); // true\n* isJsonEqual({ a: 1 }, { a: 1 }); // true\n* isJsonEqual([1, 2], [1, 2]); // true\n* isJsonEqual({ a: 1 }, { a: 2 }); // false\n* isJsonEqual([1, 2], [2, 1]); // false\n* isJsonEqual(new Date(), new Date()); // Error\n* ```\n*/\nfunction isJsonEqual(a, b) {\n\tif (!(isNonPrimitive(a) && isNonPrimitive(b))) return a === b;\n\tif (isArray(a) && isArray(b)) if (a.length !== b.length) return false;\n\telse return [...a.keys()].every((k) => isJsonEqual(a[k], b[k]));\n\tif (isPlainObject(a) && isPlainObject(b)) {\n\t\tif (definedKeysSize(a) !== definedKeysSize(b)) return false;\n\t\treturn Object.keys(a).every((k) => isJsonEqual(a[k], b[k]));\n\t}\n\tthrow Error(`Cannot compare a ${String(a)} and b ${String(b)}`);\n}\n/**\n* Alias to isJsonEqual function\n* @deprecated change to isJsonEqual\n*/\nconst deepEqual = isJsonEqual;\nfunction deepClone(obj) {\n\tif (Array.isArray(obj)) {\n\t\tconst copy = [];\n\t\tfor (let i = 0; i < obj.length; i++) copy[i] = deepClone(obj[i]);\n\t\treturn copy;\n\t} else if (isPlainObject(obj)) {\n\t\tconst copy = {};\n\t\tObject.keys(obj).forEach((k) => {\n\t\t\tcopy[k] = deepClone(obj[k]);\n\t\t});\n\t\treturn copy;\n\t} else return obj;\n}\nfunction shallowClone(obj) {\n\tif (isNil(obj)) return obj;\n\tif (Array.isArray(obj)) return obj.slice();\n\tif (isPlainObject(obj)) return Object.assign({}, obj);\n\tif (obj instanceof Map) return new Map(obj);\n\tif (obj instanceof Set) return new Set(obj);\n\tthrow Error(`Not implemented clone strategy for ${JSON.stringify(obj)}`);\n}\nfunction shallowDiff(to, from) {\n\tconst diff = {};\n\tfor (const key in from) if (from[key] !== to[key]) diff[key] = to[key];\n\treturn diff;\n}\nfunction bindMethods(obj) {\n\tObject.entries(obj).forEach(([key, m]) => {\n\t\tif (m instanceof Function) obj[key] = m.bind(obj);\n\t});\n\treturn obj;\n}\nfunction setProp(obj, key, value) {\n\tobj[key] = value;\n\treturn obj;\n}\nfunction getProp(obj, key) {\n\treturn obj[key];\n}\nfunction shiftProp(obj, key) {\n\tobj = { ...obj };\n\tconst val = obj[key];\n\tdelete obj[key];\n\treturn [val, obj];\n}\nfunction pick(obj, ...keys) {\n\treturn Object.assign({}, ...keys.map((k) => ({ [k]: obj[k] })));\n}\nfunction pickValues(obj, ...keys) {\n\treturn keys.map((k) => obj[k]);\n}\nfunction omit(obj, ...keys) {\n\tconst o = Object.assign({}, obj);\n\tkeys.forEach((k) => delete o[k]);\n\treturn o;\n}\n/**\n* Performs a deep patch of the target object or array using the source object or array.\n*\n* This function recursively merges properties of the source into the target:\n* - If a property in both target and source is a plain object, they are recursively merged.\n* - If a property in both target and source is an array of the same length, the arrays are recursively patched element by element.\n* - Otherwise, the property value in the target is replaced by the corresponding value from the source.\n*\n* The patch is applied in-place to the target object or array, which is also returned for convenience.\n*\n* @typeParam T - The type of the target and source, which must be either a plain object or an array.\n* @param target - The target object or array to be patched. This object/array is modified in-place.\n* @param source - The source object or array providing the new values for the patch.\n* @returns The modified target object or array.\n*\n* @example\n* ```typescript\n* const target = { a: { b: 1 }, c: [1, 2] };\n* const source = { a: { b: 2 }, c: [3, 4], d: 5 };\n* const result = deepPatch(target, source);\n* // target is now: { a: { b: 2 }, c: [3, 4], d: 5 }\n* // result is the same reference as target.\n*\n* const targetArray = [{ a: 1 }, { b: 2 }];\n* const sourceArray = [{ a: 2 }, { b: 3 }];\n* const resultArray = deepPatch(targetArray, sourceArray);\n* // targetArray is now: [{ a: 2 }, { b: 3 }]\n* ```\n*/\nfunction deepPatch(target, source) {\n\tnew Set([...Object.keys(target), ...Object.keys(source)]).forEach((key) => {\n\t\tconst t = target[key];\n\t\tconst s = source[key];\n\t\tif (isPlainObject(t) && isPlainObject(s)) deepPatch(t, s);\n\t\telse if (isArray(t) && isArray(s) && t.length === s.length) deepPatch(t, s);\n\t\telse target[key] = s;\n\t});\n\treturn target;\n}\n/**\n* Reads a property from a union-typed object where the key may exist only on some members of the union.\n*\n* `K` is constrained to keys of the union's intersection, so any key present on at least one union\n* member is accepted. The return type resolves to `T[K]` when `K` is a key of `T`, otherwise `undefined`\n* — matching the runtime behavior of reading a missing property.\n*\n* @param obj - source object (may be a union of shapes)\n* @param prop - property name, must be a key of at least one union member\n* @returns the property value if present, otherwise `undefined`\n*/\nfunction getField(obj, prop) {\n\treturn obj[prop];\n}\n//#endregion\nexport { bindMethods, deepClone, deepEqual, deepPatch, getField, getProp, isArray, isJsonEqual, isNonPrimitive, isObject, isPlainObject, map, objects_exports, omit, pick, pickValues, setProp, shallowClone, shallowDiff, shiftProp };\n\n//# sourceMappingURL=objects.js.map","import { isObject } from \"./objects.js\";\n//#region src/error.ts\nfunction isErrorLike(error) {\n\tif (error instanceof Error) return true;\n\treturn isObject(error) && \"message\" in error && typeof error.message === \"string\";\n}\nfunction throwError(v) {\n\tif (typeof v === \"string\") throw new Error(v);\n\telse throw v;\n}\n//#endregion\nexport { isErrorLike, throwError };\n\n//# sourceMappingURL=error.js.map","//#region src/uniqId.ts\nfunction createGetIncrementalId() {\n\tlet idx = 0n;\n\treturn () => idx++;\n}\n//#endregion\nexport { createGetIncrementalId };\n\n//# sourceMappingURL=uniqId.js.map","import { isPrimitive } from \"./utils.js\";\nimport { createGetIncrementalId } from \"./uniqId.js\";\n//#region src/hash.ts\nfunction hashString(str, seed = 0) {\n\tlet h1 = 3735928559 ^ seed, h2 = 1103547991 ^ seed;\n\tfor (let i = 0, ch; i < str.length; i++) {\n\t\tch = str.charCodeAt(i);\n\t\th1 = Math.imul(h1 ^ ch, 2654435761);\n\t\th2 = Math.imul(h2 ^ ch, 1597334677);\n\t}\n\th1 = Math.imul(h1 ^ h1 >>> 16, 2246822507) ^ Math.imul(h2 ^ h2 >>> 13, 3266489909);\n\th2 = Math.imul(h2 ^ h2 >>> 16, 2246822507) ^ Math.imul(h1 ^ h1 >>> 13, 3266489909);\n\treturn 4294967296 * (2097151 & h2) + (h1 >>> 0);\n}\nfunction shallowHash(...values) {\n\tlet str = \"\";\n\tfor (let i = 0; i < values.length; i += 1) {\n\t\tconst value = values[i];\n\t\tif (isPrimitive(value)) str += \"/\" + String(value);\n\t\telse str += \"/\" + getIdForPointer(value);\n\t}\n\treturn hashString(str);\n}\nconst mapPointerToMap = /* @__PURE__ */ new WeakMap();\nconst getIncrementalId = createGetIncrementalId();\nfunction getIdForPointer(obj) {\n\tif (!mapPointerToMap.has(obj)) mapPointerToMap.set(obj, getIncrementalId().toString());\n\treturn mapPointerToMap.get(obj);\n}\n//#endregion\nexport { hashString, shallowHash };\n\n//# sourceMappingURL=hash.js.map","import { canonicalizeJson, parseJson } from \"../../json.js\";\nimport { Annotation, getArrayFromAxisTree, getAxesTree, getAxisId, getNormalizedAxesList, readAnnotationJson } from \"./spec/spec.js\";\n//#region src/drivers/pframe/linker_columns.ts\nvar LinkerMap = class LinkerMap {\n\t/** Graph of linkers connected by axes (single or grouped by parents) */\n\tdata;\n\tconstructor(linkerMap) {\n\t\tthis.data = linkerMap;\n\t}\n\tget keys() {\n\t\treturn this.data.keys();\n\t}\n\tget keyAxesIds() {\n\t\treturn [...this.data.keys()].map(parseJson);\n\t}\n\tstatic fromColumns(columns) {\n\t\tconst result = /* @__PURE__ */ new Map();\n\t\tfor (const linker of columns.filter((l) => !!readAnnotationJson(l.spec, Annotation.IsLinkerColumn))) {\n\t\t\tconst groups = LinkerMap.getAxesGroups(getNormalizedAxesList(linker.spec.axesSpec));\n\t\t\tif (groups.length !== 2) continue;\n\t\t\tconst [left, right] = groups;\n\t\t\tconst leftKeyVariants = LinkerMap.getAxesRoots(left).map((axis) => {\n\t\t\t\tconst axes = getArrayFromAxisTree(getAxesTree(axis));\n\t\t\t\treturn [canonicalizeJson(axes.map(getAxisId)), axes];\n\t\t\t});\n\t\t\tconst rightKeyVariants = LinkerMap.getAxesRoots(right).map((axis) => {\n\t\t\t\tconst axes = getArrayFromAxisTree(getAxesTree(axis));\n\t\t\t\treturn [canonicalizeJson(axes.map(getAxisId)), axes];\n\t\t\t});\n\t\t\tfor (const [keyLeft, spec] of leftKeyVariants) if (!result.has(keyLeft)) result.set(keyLeft, {\n\t\t\t\tkeyAxesSpec: spec,\n\t\t\t\tlinkWith: /* @__PURE__ */ new Map()\n\t\t\t});\n\t\t\tfor (const [keyRight, spec] of rightKeyVariants) if (!result.has(keyRight)) result.set(keyRight, {\n\t\t\t\tkeyAxesSpec: spec,\n\t\t\t\tlinkWith: /* @__PURE__ */ new Map()\n\t\t\t});\n\t\t\tfor (const [keyRight] of rightKeyVariants) for (const [keyLeft] of leftKeyVariants) result.get(keyRight)?.linkWith.set(keyLeft, linker);\n\t\t}\n\t\treturn new this(result);\n\t}\n\t/** Get all available nodes of linker graphs if start from sourceAxesKeys */\n\tsearchAvailableAxesKeys(sourceAxesKeys) {\n\t\tconst startKeys = new Set(sourceAxesKeys);\n\t\tconst allAvailableKeys = /* @__PURE__ */ new Set();\n\t\tlet nextKeys = sourceAxesKeys;\n\t\twhile (nextKeys.length) {\n\t\t\tconst next = [];\n\t\t\tfor (const key of nextKeys) {\n\t\t\t\tconst node = this.data.get(key);\n\t\t\t\tif (!node) continue;\n\t\t\t\tfor (const availableKey of node.linkWith.keys()) if (!allAvailableKeys.has(availableKey) && !startKeys.has(availableKey)) {\n\t\t\t\t\tnext.push(availableKey);\n\t\t\t\t\tallAvailableKeys.add(availableKey);\n\t\t\t\t}\n\t\t\t}\n\t\t\tnextKeys = next;\n\t\t}\n\t\treturn allAvailableKeys;\n\t}\n\t/** Get all linker columns that are necessary to reach endKey from startKey */\n\tsearchLinkerPath(startKey, endKey) {\n\t\tconst previous = {};\n\t\tlet nextIds = new Set([startKey]);\n\t\tconst visited = new Set([startKey]);\n\t\twhile (nextIds.size) {\n\t\t\tconst next = /* @__PURE__ */ new Set();\n\t\t\tfor (const nextId of nextIds) {\n\t\t\t\tconst node = this.data.get(nextId);\n\t\t\t\tif (!node) continue;\n\t\t\t\tfor (const availableId of node.linkWith.keys()) {\n\t\t\t\t\tprevious[availableId] = nextId;\n\t\t\t\t\tif (availableId === endKey) {\n\t\t\t\t\t\tconst ids = [];\n\t\t\t\t\t\tlet current = endKey;\n\t\t\t\t\t\twhile (previous[current] !== startKey) {\n\t\t\t\t\t\t\tids.push(current);\n\t\t\t\t\t\t\tcurrent = previous[current];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tids.push(current);\n\t\t\t\t\t\treturn ids.map((id) => this.data.get(previous[id]).linkWith.get(id));\n\t\t\t\t\t} else if (!visited.has(availableId)) {\n\t\t\t\t\t\tnext.add(availableId);\n\t\t\t\t\t\tvisited.add(availableId);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tnextIds = next;\n\t\t}\n\t\treturn [];\n\t}\n\tgetLinkerColumnsForAxes({ from: sourceAxes, to: targetAxes, throwWhenNoLinkExists = true }) {\n\t\tconst startKeys = sourceAxes.map(LinkerMap.getLinkerKeyFromAxisSpec);\n\t\treturn Array.from(new Map(LinkerMap.getAxesRoots(targetAxes).map(LinkerMap.getLinkerKeyFromAxisSpec).flatMap((targetKey) => {\n\t\t\tconst linkers = startKeys.map((startKey) => this.searchLinkerPath(startKey, targetKey)).reduce((shortestPath, path) => shortestPath.length && shortestPath.length < path.length || !path.length ? shortestPath : path, []).map((linker) => [linker.columnId, linker]);\n\t\t\tif (!linkers.length && throwWhenNoLinkExists) throw Error(`Unable to find linker column for ${targetKey}`);\n\t\t\treturn linkers;\n\t\t})).values());\n\t}\n\t/** Get list of axisSpecs from keys of linker columns map */\n\tgetAxesListFromKeysList(keys) {\n\t\treturn Array.from(new Map(keys.flatMap((key) => this.data.get(key)?.keyAxesSpec ?? []).map((axis) => [canonicalizeJson(getAxisId(axis)), axis])).values());\n\t}\n\t/** Get axes of target axes that are impossible to be linked to source axes with current linker map */\n\tgetNonLinkableAxes(sourceAxes, targetAxes) {\n\t\tconst startKeys = sourceAxes.map(LinkerMap.getLinkerKeyFromAxisSpec);\n\t\tconst targetKeys = targetAxes.map(LinkerMap.getLinkerKeyFromAxisSpec);\n\t\treturn Array.from(new Map(targetAxes.filter((_targetAxis, idx) => {\n\t\t\tconst targetKey = targetKeys[idx];\n\t\t\treturn !startKeys.some((startKey) => this.searchLinkerPath(startKey, targetKey).length);\n\t\t}).flatMap((axis) => getArrayFromAxisTree(getAxesTree(axis)).map((axis) => [canonicalizeJson(getAxisId(axis)), axis]))).values());\n\t}\n\t/** Get all axes that can be connected to sourceAxes by linkers */\n\tgetReachableByLinkersAxesFromAxesNormalized(sourceAxes, matchAxisIdFn) {\n\t\tlet startKeys = [];\n\t\tif (matchAxisIdFn) {\n\t\t\tconst sourceAxisIdsGrouped = sourceAxes.map((axis) => getArrayFromAxisTree(getAxesTree(axis)).map(getAxisId));\n\t\t\tfor (const sourceAxisIdsGroup of sourceAxisIdsGrouped) {\n\t\t\t\tconst matched = this.keyAxesIds.find((keyIds) => keyIds.every((linkerKeyAxisId) => sourceAxisIdsGroup.find((sourceAxisId) => matchAxisIdFn(linkerKeyAxisId, sourceAxisId))));\n\t\t\t\tif (matched) startKeys.push(canonicalizeJson(matched));\n\t\t\t}\n\t\t} else startKeys = sourceAxes.map(LinkerMap.getLinkerKeyFromAxisSpec);\n\t\tconst availableKeys = this.searchAvailableAxesKeys(startKeys);\n\t\treturn this.getAxesListFromKeysList([...availableKeys]);\n\t}\n\tgetReachableByLinkersAxesFromAxes(sourceAxes, matchAxisIdFn) {\n\t\treturn this.getReachableByLinkersAxesFromAxesNormalized(getNormalizedAxesList(sourceAxes), matchAxisIdFn);\n\t}\n\tstatic getLinkerKeyFromAxisSpec(axis) {\n\t\treturn canonicalizeJson(getArrayFromAxisTree(getAxesTree(axis)).map(getAxisId));\n\t}\n\t/** Split array of axes into several arrays by parents: axes of one group are parents for each other.\n\tThere are no order inside every group. */\n\tstatic getAxesGroups(axesSpec) {\n\t\tswitch (axesSpec.length) {\n\t\t\tcase 0: return [];\n\t\t\tcase 1: return [[axesSpec[0]]];\n\t\t\tdefault: break;\n\t\t}\n\t\tconst axisKeys = axesSpec.map((spec) => canonicalizeJson(getAxisId(spec)));\n\t\tconst axisParentsIdxs = axesSpec.map((spec) => new Set(spec.parentAxesSpec.map((spec) => canonicalizeJson(getAxisId(spec))).map((el) => {\n\t\t\tconst idx = axisKeys.indexOf(el);\n\t\t\tif (idx === -1) throw new Error(`malformed axesSpec: ${JSON.stringify(axesSpec)}, unable to locate parent ${el}`);\n\t\t\treturn idx;\n\t\t})));\n\t\tconst allIdxs = [...axesSpec.keys()];\n\t\tconst groups = [];\n\t\tconst usedIdxs = /* @__PURE__ */ new Set();\n\t\tlet nextFreeEl = allIdxs.find((idx) => !usedIdxs.has(idx));\n\t\twhile (nextFreeEl !== void 0) {\n\t\t\tconst currentGroup = [nextFreeEl];\n\t\t\tusedIdxs.add(nextFreeEl);\n\t\t\tlet nextElsOfCurrentGroup = [nextFreeEl];\n\t\t\twhile (nextElsOfCurrentGroup.length) {\n\t\t\t\tconst next = /* @__PURE__ */ new Set();\n\t\t\t\tfor (const groupIdx of nextElsOfCurrentGroup) {\n\t\t\t\t\tconst groupElementParents = axisParentsIdxs[groupIdx];\n\t\t\t\t\tallIdxs.forEach((idx) => {\n\t\t\t\t\t\tif (idx === groupIdx || usedIdxs.has(idx)) return;\n\t\t\t\t\t\tif (axisParentsIdxs[idx].has(groupIdx) || groupElementParents.has(idx)) {\n\t\t\t\t\t\t\tcurrentGroup.push(idx);\n\t\t\t\t\t\t\tnext.add(idx);\n\t\t\t\t\t\t\tusedIdxs.add(idx);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tnextElsOfCurrentGroup = [...next];\n\t\t\t}\n\t\t\tgroups.push([...currentGroup]);\n\t\t\tnextFreeEl = allIdxs.find((idx) => !usedIdxs.has(idx));\n\t\t}\n\t\treturn groups.map((group) => group.map((idx) => axesSpec[idx]));\n\t}\n\t/** Get all axes that are not parents of any other axis */\n\tstatic getAxesRoots(axes) {\n\t\tconst parentsSet = new Set(axes.flatMap((axis) => axis.parentAxesSpec).map((spec) => canonicalizeJson(getAxisId(spec))));\n\t\treturn axes.filter((axis) => !parentsSet.has(canonicalizeJson(getAxisId(axis))));\n\t}\n};\n//#endregion\nexport { LinkerMap };\n\n//# sourceMappingURL=linker_columns.js.map","//#region src/drivers/pframe/driver.ts\nfunction assert() {}\nassert();\n//#endregion\n\n//# sourceMappingURL=driver.js.map","//#region src/flags/block_flags.ts\n/**\n* Required PFrames version. Bump this in lockstep with the `@milaboratories/pframes-rs-*`\n* version in `pnpm-workspace.yaml` so blocks built against the new SDK refuse to load on\n* older desktop apps.\n*/\nconst REQUIRES_PFRAMES_VERSION = 1001031;\nconst AllSupportsFeatureFlags = [\"supportsLazyState\", \"supportsPframeQueryRanking\"];\nconst AllRequiresFeatureFlags = [\n\t\"requiresUIAPIVersion\",\n\t\"requiresCreatePTable\",\n\t\"requiresPFramesVersion\",\n\t\"requiresModelAPIVersion\"\n];\n//#endregion\nexport { AllRequiresFeatureFlags, AllSupportsFeatureFlags, REQUIRES_PFRAMES_VERSION };\n\n//# sourceMappingURL=block_flags.js.map","import { base32Encode } from \"./base32_encode.js\";\nimport { z } from \"zod\";\n//#region src/plid.ts\n/** Number of raw bytes in the PlId. */\nconst PlIdBytes = 15;\n/** Characters in string representation */\nconst PlIdLength = 24;\nconst PlId = z.string().length(24).regex(/[ABCDEFGHIJKLMNOPQRSTUVWXYZ234567]/).brand(\"PlId\");\nfunction uniquePlId() {\n\tconst data = new Uint8Array(15);\n\tcrypto.getRandomValues(data);\n\treturn PlId.parse(base32Encode(data, \"RFC4648\"));\n}\nfunction plId(bytes) {\n\tif (bytes.length !== 15) throw new Error(`Wrong number of bytes: ${bytes.length}`);\n\treturn PlId.parse(base32Encode(bytes, \"RFC4648\"));\n}\nasync function digestPlId(data) {\n\tconst encoder = new TextEncoder();\n\tconst bytes = await crypto.subtle.digest(\"SHA-256\", encoder.encode(data));\n\treturn plId(new Uint8Array(bytes.slice(0, 15)));\n}\n//#endregion\nexport { PlId, PlIdBytes, PlIdLength, digestPlId, plId, uniquePlId };\n\n//# sourceMappingURL=plid.js.map","import { z } from \"zod\";\n//#region src/ref.ts\nconst PlRef = z.object({\n\t__isRef: z.literal(true).describe(\"Crucial marker for the block dependency tree reconstruction\"),\n\tblockId: z.string().describe(\"Upstream block id\"),\n\tname: z.string().describe(\"Name of the output provided to the upstream block's output context\"),\n\trequireEnrichments: z.literal(true).optional().describe(\"True if current block that stores this reference in its args, may need enrichments for the references value originating from the blocks in between current and referenced block\")\n}).describe(\"Universal reference type, allowing to set block connections. It is crucial that {@link __isRef} is present and equal to true, internal logic relies on this marker to build block dependency trees.\").readonly();\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*/\nfunction isPlRef(value) {\n\treturn typeof value === \"object\" && value !== null && \"__isRef\" in value && value.__isRef === true && \"blockId\" in value && \"name\" in value;\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*/\nfunction createPlRef(blockId, name, requireEnrichments = false) {\n\tif (requireEnrichments) return {\n\t\t__isRef: true,\n\t\tblockId,\n\t\tname,\n\t\trequireEnrichments: true\n\t};\n\telse return {\n\t\t__isRef: true,\n\t\tblockId,\n\t\tname\n\t};\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*/\nfunction withEnrichments(ref, requireEnrichments = true) {\n\tif (requireEnrichments) return {\n\t\t...ref,\n\t\trequireEnrichments: true\n\t};\n\telse {\n\t\tconst { requireEnrichments: _, ...rest } = ref;\n\t\treturn rest;\n\t}\n}\nfunction isPrimaryRef(value) {\n\treturn typeof value === \"object\" && value !== null && value.__isPrimaryRef === \"v1\" && \"column\" in value;\n}\nfunction createPrimaryRef(column, filter) {\n\tif (filter !== void 0) return {\n\t\t__isPrimaryRef: \"v1\",\n\t\tcolumn,\n\t\tfilter\n\t};\n\telse return {\n\t\t__isPrimaryRef: \"v1\",\n\t\tcolumn\n\t};\n}\nfunction isEnrichmentRef(value) {\n\treturn typeof value === \"object\" && value !== null && value.__isEnrichment === \"v1\" && \"hit\" in value;\n}\nfunction createEnrichmentRef(hit, options = {}) {\n\tconst { path, qualifications } = options;\n\treturn {\n\t\t__isEnrichment: \"v1\",\n\t\thit,\n\t\t...path !== void 0 && path.length > 0 ? { path } : {},\n\t\t...qualifications !== void 0 && qualifications.length > 0 ? { qualifications } : {}\n\t};\n}\n/** Compare two PlRefs and returns true if they are qual */\nfunction plRefsEqual(ref1, ref2, ignoreEnrichments = false) {\n\treturn ref1.blockId === ref2.blockId && ref1.name === ref2.name && (ignoreEnrichments || ref1.requireEnrichments === ref2.requireEnrichments);\n}\n//#endregion\nexport { PlRef, createEnrichmentRef, createPlRef, createPrimaryRef, isEnrichmentRef, isPlRef, isPrimaryRef, plRefsEqual, withEnrichments };\n\n//# sourceMappingURL=ref.js.map","//#region src/value_or_error.ts\nfunction mapValueInVOE(voe, cb) {\n\treturn voe.ok ? {\n\t\tok: true,\n\t\tvalue: cb(voe.value)\n\t} : voe;\n}\n//#endregion\nexport { mapValueInVOE };\n\n//# sourceMappingURL=value_or_error.js.map","import { ServiceAlreadyRegisteredError, ServiceInvalidIdError } from \"../errors.js\";\n//#region src/services/service_types.ts\nconst SERVICE_ID_PATTERN = /^[a-zA-Z][a-zA-Z0-9]*$/;\nconst { service, isNodeService, isWasmService, isMainService, getServiceKind, getServiceModelMethods, getServiceUiMethods } = (() => {\n\tconst typeMap = /* @__PURE__ */ new Map();\n\tconst modelMethodsMap = /* @__PURE__ */ new Map();\n\tconst uiMethodsMap = /* @__PURE__ */ new Map();\n\treturn {\n\t\tservice() {\n\t\t\treturn (options) => {\n\t\t\t\tconst { name, type, modelMethods, uiMethods } = options;\n\t\t\t\tif (!SERVICE_ID_PATTERN.test(name)) throw new ServiceInvalidIdError(`Invalid service ID \"${name}\": must match ${SERVICE_ID_PATTERN}`);\n\t\t\t\tif (typeMap.has(name)) throw new ServiceAlreadyRegisteredError(`Service \"${name}\" already registered`);\n\t\t\t\ttypeMap.set(name, type);\n\t\t\t\tmodelMethodsMap.set(name, modelMethods);\n\t\t\t\tuiMethodsMap.set(name, uiMethods);\n\t\t\t\treturn name;\n\t\t\t};\n\t\t},\n\t\tisNodeService(id) {\n\t\t\treturn typeMap.get(id) === \"node\";\n\t\t},\n\t\tisWasmService(id) {\n\t\t\treturn typeMap.get(id) === \"wasm\";\n\t\t},\n\t\tisMainService(id) {\n\t\t\treturn typeMap.get(id) === \"main\";\n\t\t},\n\t\tgetServiceKind(id) {\n\t\t\treturn typeMap.get(id);\n\t\t},\n\t\tgetServiceModelMethods(id) {\n\t\t\treturn modelMethodsMap.get(id) ?? [];\n\t\t},\n\t\tgetServiceUiMethods(id) {\n\t\t\treturn uiMethodsMap.get(id) ?? [];\n\t\t}\n\t};\n})();\nfunction serviceFnKey(serviceId, method = \"\") {\n\treturn `service:${serviceId}:${method}`;\n}\n//#endregion\nexport { getServiceKind, getServiceModelMethods, getServiceUiMethods, isMainService, isNodeService, isWasmService, service, serviceFnKey };\n\n//# sourceMappingURL=service_types.js.map","import { service } from \"./service_types.js\";\n//#region src/services/service_declarations.ts\nconst Services = {\n\tPFrameSpec: service()({\n\t\ttype: \"wasm\",\n\t\tname: \"pframeSpec\",\n\t\tmodelMethods: [\n\t\t\t\"createSpecFrame\",\n\t\t\t\"listColumns\",\n\t\t\t\"discoverColumns\",\n\t\t\t\"deleteColumn\",\n\t\t\t\"evaluateQuery\",\n\t\t\t\"buildQuery\",\n\t\t\t\"expandAxes\",\n\t\t\t\"collapseAxes\",\n\t\t\t\"findAxis\",\n\t\t\t\"findTableColumn\"\n\t\t],\n\t\tuiMethods: [\n\t\t\t\"createSpecFrame\",\n\t\t\t\"listColumns\",\n\t\t\t\"discoverColumns\",\n\t\t\t\"deleteColumn\",\n\t\t\t\"evaluateQuery\",\n\t\t\t\"buildQuery\",\n\t\t\t\"expandAxes\",\n\t\t\t\"collapseAxes\",\n\t\t\t\"findAxis\",\n\t\t\t\"findTableColumn\"\n\t\t]\n\t}),\n\tPFrame: service()({\n\t\ttype: \"node\",\n\t\tname: \"pframe\",\n\t\tmodelMethods: [\n\t\t\t\"createPFrame\",\n\t\t\t\"createPTable\",\n\t\t\t\"createPTableV2\"\n\t\t],\n\t\tuiMethods: [\n\t\t\t\"findColumns\",\n\t\t\t\"getColumnSpec\",\n\t\t\t\"listColumns\",\n\t\t\t\"calculateTableData\",\n\t\t\t\"getUniqueValues\",\n\t\t\t\"getShape\",\n\t\t\t\"getSpec\",\n\t\t\t\"getData\",\n\t\t\t\"writePTableToFs\"\n\t\t]\n\t}),\n\tDialog: service()({\n\t\ttype: \"main\",\n\t\tname: \"dialog\",\n\t\tmodelMethods: [],\n\t\tuiMethods: [\"showSaveDialog\"]\n\t})\n};\n//#endregion\nexport { Services };\n\n//# sourceMappingURL=service_declarations.js.map","import { Services } from \"./service_declarations.js\";\n//#region src/services/service_capabilities.ts\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*/\nconst SERVICE_CAPABILITY_FLAGS = Object.keys(Services).map((key) => `requires${key}`);\n/**\n* Register all service capability flags with the given callback.\n* Works with both `RuntimeCapabilities.addSupportedRequirement`\n* and `MiddleLayer.addRuntimeCapability`.\n*/\nfunction registerServiceCapabilities(register) {\n\tfor (const flag of SERVICE_CAPABILITY_FLAGS) register(flag, true);\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*/\nfunction resolveRequiredServices(flags) {\n\tif (!flags) return [];\n\treturn Object.keys(Services).filter((key) => flags[`requires${key}`] === true).map((key) => Services[key]);\n}\nfunction isKnownServiceName(name) {\n\treturn Object.values(Services).some((v) => v === name);\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. */\nconst SERVICE_FEATURE_FLAGS = Object.fromEntries(Object.keys(Services).map((key) => [`requires${key}`, true]));\n/** Introspect method names on an instance (including prototype chain).\n* Uses Object.getOwnPropertyDescriptor to avoid triggering getters. */\nfunction getMethodNames(instance) {\n\tconst methods = /* @__PURE__ */ new Set();\n\tlet proto = instance;\n\twhile (proto && proto !== Object.prototype) {\n\t\tfor (const key of Object.getOwnPropertyNames(proto)) if (key !== \"constructor\" && typeof Object.getOwnPropertyDescriptor(proto, key)?.value === \"function\") methods.add(key);\n\t\tproto = Object.getPrototypeOf(proto);\n\t}\n\treturn [...methods];\n}\n//#endregion\nexport { SERVICE_CAPABILITY_FLAGS, SERVICE_FEATURE_FLAGS, getMethodNames, isKnownServiceName, registerServiceCapabilities, resolveRequiredServices };\n\n//# sourceMappingURL=service_capabilities.js.map","import { getServiceModelMethods, getServiceUiMethods } from \"./service_types.js\";\nimport { Services } from \"./service_declarations.js\";\nimport { resolveRequiredServices } from \"./service_capabilities.js\";\nimport { createNodeServiceHandlers } from \"./node_service_handlers.js\";\n//#region src/services/service_injectors.ts\nlet cachedKit;\nlet cachedHandlers;\nfunction getOrCreateHandlers(driverKit) {\n\tif (!cachedHandlers || cachedKit !== driverKit) {\n\t\tcachedKit = driverKit;\n\t\tcachedHandlers = createNodeServiceHandlers(driverKit);\n\t}\n\treturn cachedHandlers;\n}\n/**\n* Resolve the worker-side handler object for a given service ID. Caches\n* per DriverKit reference. Called from the worker's IPC dispatch path.\n*/\nfunction resolveNodeServiceHandler(driverKit, serviceId) {\n\tconst handlers = getOrCreateHandlers(driverKit);\n\tconst key = Object.keys(Services).find((k) => Services[k] === serviceId);\n\tif (!key) return null;\n\treturn handlers[key];\n}\nfunction buildMethodMap(pick) {\n\tconst result = {};\n\tfor (const id of Object.values(Services)) result[id] = [...pick(id)];\n\treturn result;\n}\n/**\n* UI-side method names per service. Drives ServiceProxy forwarder\n* construction in the renderer.\n*/\nconst SERVICE_METHOD_MAP = buildMethodMap(getServiceUiMethods);\n/**\n* Model-side method names per service. Drives the workflow VM bridge\n* (see pl-middle-layer js_render).\n*/\nconst MODEL_SERVICE_METHOD_MAP = buildMethodMap(getServiceModelMethods);\n/** Build service info for a block from its feature flags. */\nfunction buildServiceInfo(featureFlags) {\n\tconst serviceIds = resolveRequiredServices(featureFlags);\n\treturn Object.fromEntries(serviceIds.map((id) => [id, SERVICE_METHOD_MAP[id] ?? []]));\n}\n//#endregion\nexport { MODEL_SERVICE_METHOD_MAP, SERVICE_METHOD_MAP, buildServiceInfo, resolveNodeServiceHandler };\n\n//# sourceMappingURL=service_injectors.js.map","import { getCfgRenderCtx } from \"../internal.js\";\nimport { FutureRef } from \"./future.js\";\nimport { isPColumn, mapPObjectData } from \"@milaboratories/pl-model-common\";\n//#region src/render/accessor.ts\nfunction ifDef(value, cb) {\n\treturn value === void 0 ? void 0 : cb(value);\n}\n/** Represent resource tree node accessor */\nvar TreeNodeAccessor = class TreeNodeAccessor {\n\tconstructor(handle, resolvePath) {\n\t\tthis.handle = handle;\n\t\tthis.resolvePath = resolvePath;\n\t}\n\tresolve(...steps) {\n\t\tconst transformedSteps = steps.map((s) => ({\n\t\t\tassertFieldType: \"Input\",\n\t\t\t...typeof s === \"string\" ? { field: s } : s\n\t\t}));\n\t\treturn this.resolveWithCommon({}, ...transformedSteps);\n\t}\n\tresolveOutput(...steps) {\n\t\tconst transformedSteps = steps.map((s) => ({\n\t\t\tassertFieldType: \"Output\",\n\t\t\t...typeof s === \"string\" ? { field: s } : s\n\t\t}));\n\t\treturn this.resolveWithCommon({}, ...transformedSteps);\n\t}\n\tresolveInput(...steps) {\n\t\tconst transformedSteps = steps.map((s) => ({\n\t\t\tassertFieldType: \"Input\",\n\t\t\t...typeof s === \"string\" ? { field: s } : s\n\t\t}));\n\t\treturn this.resolveWithCommon({}, ...transformedSteps);\n\t}\n\tresolveAny(...steps) {\n\t\treturn this.resolveWithCommon({}, ...steps);\n\t}\n\tresolveWithCommon(commonOptions, ...steps) {\n\t\tconst resolvePath = [...this.resolvePath, ...steps.map((step) => typeof step === \"string\" ? step : step.field)];\n\t\treturn ifDef(getCfgRenderCtx().resolveWithCommon(this.handle, commonOptions, ...steps), (accessor) => new TreeNodeAccessor(accessor, resolvePath));\n\t}\n\tget resourceType() {\n\t\treturn getCfgRenderCtx().getResourceType(this.handle);\n\t}\n\tgetInputsLocked() {\n\t\treturn getCfgRenderCtx().getInputsLocked(this.handle);\n\t}\n\tgetOutputsLocked() {\n\t\treturn getCfgRenderCtx().getOutputsLocked(this.handle);\n\t}\n\tgetIsReadyOrError() {\n\t\treturn getCfgRenderCtx().getIsReadyOrError(this.handle);\n\t}\n\tgetIsFinal() {\n\t\treturn getCfgRenderCtx().getIsFinal(this.handle);\n\t}\n\tgetError() {\n\t\tconst resolvePath = [...this.resolvePath, \"error\"];\n\t\treturn ifDef(getCfgRenderCtx().getError(this.handle), (accsessor) => new TreeNodeAccessor(accsessor, resolvePath));\n\t}\n\tlistInputFields() {\n\t\treturn getCfgRenderCtx().listInputFields(this.handle);\n\t}\n\tlistOutputFields() {\n\t\treturn getCfgRenderCtx().listOutputFields(this.handle);\n\t}\n\tlistDynamicFields() {\n\t\treturn getCfgRenderCtx().listDynamicFields(this.handle);\n\t}\n\tgetKeyValueBase64(key) {\n\t\treturn getCfgRenderCtx().getKeyValueBase64(this.handle, key);\n\t}\n\tgetKeyValueAsString(key) {\n\t\treturn getCfgRenderCtx().getKeyValueAsString(this.handle, key);\n\t}\n\tgetKeyValueAsJson(key) {\n\t\tconst content = this.getKeyValueAsString(key);\n\t\tif (content == void 0) throw new Error(\"Resource has no content.\");\n\t\treturn JSON.parse(content);\n\t}\n\tgetDataBase64() {\n\t\treturn getCfgRenderCtx().getDataBase64(this.handle);\n\t}\n\tgetDataAsString() {\n\t\treturn getCfgRenderCtx().getDataAsString(this.handle);\n\t}\n\tgetDataAsJson() {\n\t\tconst content = this.getDataAsString();\n\t\tif (content == void 0) throw new Error(\"Resource has no content.\");\n\t\treturn JSON.parse(content);\n\t}\n\t/**\n\t*\n\t*/\n\tgetPColumns(errorOnUnknownField = false, prefix = \"\") {\n\t\tconst result = this.parsePObjectCollection(errorOnUnknownField, prefix);\n\t\tif (result === void 0) return void 0;\n\t\treturn Object.entries(result).map(([, obj]) => {\n\t\t\tif (!isPColumn(obj)) throw new Error(`not a PColumn (kind = ${obj.spec.kind})`);\n\t\t\treturn obj;\n\t\t});\n\t}\n\t/**\n\t*\n\t*/\n\tparsePObjectCollection(errorOnUnknownField = false, prefix = \"\") {\n\t\tconst pObjects = getCfgRenderCtx().parsePObjectCollection(this.handle, errorOnUnknownField, prefix, ...this.resolvePath);\n\t\tif (pObjects === void 0) return void 0;\n\t\tconst result = {};\n\t\tfor (const [key, value] of Object.entries(pObjects)) {\n\t\t\tconst resolvePath = [...this.resolvePath, key];\n\t\t\tresult[key] = mapPObjectData(value, (c) => new TreeNodeAccessor(c, resolvePath));\n\t\t}\n\t\treturn result;\n\t}\n\tgetFileContentAsBase64(range) {\n\t\treturn new FutureRef(getCfgRenderCtx().getBlobContentAsBase64(this.handle, range));\n\t}\n\tgetFileContentAsString(range) {\n\t\treturn new FutureRef(getCfgRenderCtx().getBlobContentAsString(this.handle, range));\n\t}\n\tgetFileContentAsJson(range) {\n\t\treturn new FutureRef(getCfgRenderCtx().getBlobContentAsString(this.handle, range)).mapDefined((v) => JSON.parse(v));\n\t}\n\t/**\n\t* @deprecated use getFileContentAsBase64\n\t*/\n\tgetBlobContentAsBase64() {\n\t\treturn this.getFileContentAsBase64();\n\t}\n\t/**\n\t* @deprecated use getFileContentAsString\n\t*/\n\tgetBlobContentAsString() {\n\t\treturn this.getFileContentAsString();\n\t}\n\t/**\n\t* @returns downloaded file handle\n\t*/\n\tgetFileHandle() {\n\t\treturn new FutureRef(getCfgRenderCtx().getDownloadedBlobContentHandle(this.handle));\n\t}\n\t/**\n\t* @deprecated use getFileHandle\n\t*/\n\tgetDownloadedBlobHandle() {\n\t\treturn this.getFileHandle();\n\t}\n\t/**\n\t* @returns downloaded file handle\n\t*/\n\tgetRemoteFileHandle() {\n\t\treturn new FutureRef(getCfgRenderCtx().getOnDemandBlobContentHandle(this.handle));\n\t}\n\t/**\n\t* @deprecated use getRemoteFileHandle\n\t*/\n\tgetOnDemandBlobHandle() {\n\t\treturn this.getRemoteFileHandle();\n\t}\n\t/**\n\t* @returns the url to the extracted folder\n\t*/\n\textractArchiveAndGetURL(format) {\n\t\treturn new FutureRef(getCfgRenderCtx().extractArchiveAndGetURL(this.handle, format));\n\t}\n\tgetImportProgress() {\n\t\treturn new FutureRef(getCfgRenderCtx().getImportProgress(this.handle));\n\t}\n\tgetLastLogs(nLines) {\n\t\treturn new FutureRef(getCfgRenderCtx().getLastLogs(this.handle, nLines));\n\t}\n\tgetProgressLog(patternToSearch) {\n\t\treturn new FutureRef(getCfgRenderCtx().getProgressLog(this.handle, patternToSearch));\n\t}\n\tgetProgressLogWithInfo(patternToSearch) {\n\t\treturn new FutureRef(getCfgRenderCtx().getProgressLogWithInfo(this.handle, patternToSearch));\n\t}\n\tgetLogHandle() {\n\t\treturn new FutureRef(getCfgRenderCtx().getLogHandle(this.handle));\n\t}\n\tallFieldsResolved(fieldType = \"Input\") {\n\t\tswitch (fieldType) {\n\t\t\tcase \"Input\": return this.getInputsLocked() && this.listInputFields().every((field) => this.resolve({\n\t\t\t\tfield,\n\t\t\t\tassertFieldType: \"Input\"\n\t\t\t}) !== void 0);\n\t\t\tcase \"Output\": return this.getOutputsLocked() && this.listOutputFields().every((field) => this.resolve({\n\t\t\t\tfield,\n\t\t\t\tassertFieldType: \"Output\"\n\t\t\t}) !== void 0);\n\t\t}\n\t}\n\tmapFields(_mapping, _ops) {\n\t\tconst { fieldType, requireLocked, skipUnresolved } = {\n\t\t\tfieldType: \"Input\",\n\t\t\trequireLocked: true,\n\t\t\tskipUnresolved: false,\n\t\t\t..._ops\n\t\t};\n\t\tconst mapping = _mapping;\n\t\tif (requireLocked) {\n\t\t\tif (fieldType === \"Input\" && !this.getInputsLocked()) return void 0;\n\t\t\tif (fieldType === \"Output\" && !this.getOutputsLocked()) return void 0;\n\t\t}\n\t\tlet fieldEntries = (fieldType === \"Input\" ? this.listInputFields() : fieldType === \"Output\" ? this.listOutputFields() : this.listDynamicFields()).map((field) => [field, this.resolve({\n\t\t\tfield,\n\t\t\tassertFieldType: fieldType\n\t\t})]);\n\t\tif (skipUnresolved) fieldEntries = fieldEntries.filter((e) => e[1] !== void 0);\n\t\treturn fieldEntries.map(([name, value]) => mapping(name, value));\n\t}\n};\n//#endregion\nexport { TreeNodeAccessor, ifDef };\n\n//# sourceMappingURL=accessor.js.map","import { __exportAll } from \"../_virtual/_rolldown/runtime.js\";\n//#region src/render/internal.ts\nvar internal_exports = /* @__PURE__ */ __exportAll({\n\tGlobalCfgRenderCtxFeatureFlags: () => GlobalCfgRenderCtxFeatureFlags,\n\tMainAccessorName: () => MainAccessorName,\n\tStagingAccessorName: () => StagingAccessorName,\n\tgetAllFutureAwaits: () => getAllFutureAwaits,\n\tisFutureAwait: () => isFutureAwait\n});\nconst StagingAccessorName = \"staging\";\nconst MainAccessorName = \"main\";\nconst GlobalCfgRenderCtxFeatureFlags = {\n\texplicitColumnsSupport: true,\n\tinlineColumnsSupport: true,\n\tactiveArgs: true,\n\tpTablePartitionFiltersSupport: true,\n\tpFrameInSetFilterSupport: true\n};\nfunction isFutureAwait(obj) {\n\treturn typeof obj === \"object\" && obj !== null && \"__awaited_futures__\" in obj;\n}\nfunction addAllFutureAwaits(set, visited, node) {\n\tif (visited.has(node)) return;\n\tvisited.add(node);\n\tif (typeof node === \"object\") {\n\t\tif (isFutureAwait(node)) node.__awaited_futures__.forEach((a) => set.add(a));\n\t\telse if (Array.isArray(node)) for (const nested of node) addAllFutureAwaits(set, visited, nested);\n\t\telse for (const [, nested] of Object.entries(node)) if (nested !== node) addAllFutureAwaits(set, visited, nested);\n\t}\n}\nfunction getAllFutureAwaits(obj) {\n\tconst set = /* @__PURE__ */ new Set();\n\taddAllFutureAwaits(set, /* @__PURE__ */ new Set(), obj);\n\treturn set;\n}\n//#endregion\nexport { MainAccessorName, StagingAccessorName, internal_exports };\n\n//# sourceMappingURL=internal.js.map","//#region src/render/util/axis_filtering.ts\nfunction filterDataInfoEntries(dataInfoEntries, axisFilters) {\n\tconst sortedFilters = [...axisFilters].sort((a, b) => b[0] - a[0]);\n\tconst { type } = dataInfoEntries;\n\tswitch (type) {\n\t\tcase \"Json\": {\n\t\t\tconst { keyLength } = dataInfoEntries;\n\t\t\tfor (const [axisIdx] of axisFilters) if (axisIdx >= keyLength) throw new Error(`Can't filter on non-data axis ${axisIdx}. Must be >= ${keyLength}`);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"JsonPartitioned\":\n\t\tcase \"BinaryPartitioned\":\n\t\tcase \"ParquetPartitioned\": {\n\t\t\tconst { partitionKeyLength } = dataInfoEntries;\n\t\t\tfor (const [axisIdx] of axisFilters) if (axisIdx >= partitionKeyLength) throw new Error(`Can't filter on non-partitioned axis ${axisIdx}. Must be >= ${partitionKeyLength}`);\n\t\t\tbreak;\n\t\t}\n\t\tdefault: throw new Error(`Unsupported data info type: ${type}`);\n\t}\n\tconst keyMatchesFilters = (key) => {\n\t\tfor (const [axisIdx, axisValue] of sortedFilters) if (key[axisIdx] !== axisValue) return false;\n\t\treturn true;\n\t};\n\tconst removeFilteredAxes = (key) => {\n\t\tconst newKey = [...key];\n\t\tfor (const [axisIdx] of sortedFilters) newKey.splice(axisIdx, 1);\n\t\treturn newKey;\n\t};\n\tswitch (dataInfoEntries.type) {\n\t\tcase \"Json\": return {\n\t\t\ttype: \"Json\",\n\t\t\tkeyLength: dataInfoEntries.keyLength - axisFilters.length,\n\t\t\tdata: dataInfoEntries.data.filter((entry) => keyMatchesFilters(entry.key)).map((entry) => ({\n\t\t\t\tkey: removeFilteredAxes(entry.key),\n\t\t\t\tvalue: entry.value\n\t\t\t}))\n\t\t};\n\t\tcase \"JsonPartitioned\": return {\n\t\t\ttype: \"JsonPartitioned\",\n\t\t\tpartitionKeyLength: dataInfoEntries.partitionKeyLength - axisFilters.length,\n\t\t\tparts: dataInfoEntries.parts.filter((entry) => keyMatchesFilters(entry.key)).map((entry) => ({\n\t\t\t\tkey: removeFilteredAxes(entry.key),\n\t\t\t\tvalue: entry.value\n\t\t\t}))\n\t\t};\n\t\tcase \"BinaryPartitioned\": return {\n\t\t\ttype: \"BinaryPartitioned\",\n\t\t\tpartitionKeyLength: dataInfoEntries.partitionKeyLength - axisFilters.length,\n\t\t\tparts: dataInfoEntries.parts.filter((entry) => keyMatchesFilters(entry.key)).map((entry) => ({\n\t\t\t\tkey: removeFilteredAxes(entry.key),\n\t\t\t\tvalue: entry.value\n\t\t\t}))\n\t\t};\n\t\tcase \"ParquetPartitioned\": return {\n\t\t\ttype: \"ParquetPartitioned\",\n\t\t\tpartitionKeyLength: dataInfoEntries.partitionKeyLength - axisFilters.length,\n\t\t\tparts: dataInfoEntries.parts.filter((entry) => keyMatchesFilters(entry.key)).map((entry) => ({\n\t\t\t\tkey: removeFilteredAxes(entry.key),\n\t\t\t\tvalue: entry.value\n\t\t\t}))\n\t\t};\n\t}\n}\n//#endregion\nexport { filterDataInfoEntries };\n\n//# sourceMappingURL=axis_filtering.js.map","function identity(x) {\n return x;\n}\n\nexport { identity };\n","function isTypedArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n\nexport { isTypedArray };\n","function getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n return Object.prototype.toString.call(value);\n}\n\nexport { getTag };\n","function isFunction(value) {\n return typeof value === 'function';\n}\n\nexport { isFunction };\n","function isLength(value) {\n return Number.isSafeInteger(value) && value >= 0;\n}\n\nexport { isLength };\n","function isNil(x) {\n return x == null;\n}\n\nexport { isNil };\n","import { Annotation, parseJson, readAnnotation } from \"@milaboratories/pl-model-common\";\nimport { throwError } from \"@milaboratories/helpers\";\nimport { isFunction, isNil as isNil$1 } from \"es-toolkit\";\n//#region src/labels/derive_distinct_labels.ts\nconst DISTANCE_PENALTY = .001;\nconst LABEL_TYPE = \"__LABEL__\";\nconst LABEL_TYPE_FULL = \"__LABEL__@1\";\nconst LINKER_TYPE = \"__LINKER__\";\nconst LINKER_TYPE_FULL = \"__LINKER__@1\";\nconst HIT_QUAL_TYPE = \"__HIT_QUAL__\";\nconst ANCHOR_QUAL_TYPE_PREFIX = \"__ANCHOR_QUAL__:\";\nfunction isAnchorQualType(t) {\n\treturn t.startsWith(ANCHOR_QUAL_TYPE_PREFIX);\n}\nfunction isSyntheticType(t) {\n\treturn t === LINKER_TYPE || t === HIT_QUAL_TYPE || isAnchorQualType(t);\n}\nfunction deriveDistinctLabels(values, options = {}) {\n\tconst forceTraceElements = options.forceTraceElements !== void 0 && options.forceTraceElements.length > 0 ? new Set(options.forceTraceElements) : void 0;\n\tconst separator = options.separator ?? \" / \";\n\tconst records = values.map((v, i) => enrichRecord(v, i, options));\n\tconst stats = collectTypeStats(records);\n\tconst hasAnySynthetic = records.some((r) => r.fullTrace.some((ft) => isSyntheticType(ft.type)));\n\tconst labelForced = (options.includeNativeLabel === true || hasAnySynthetic) && stats.countByType.has(LABEL_TYPE_FULL);\n\tconst linkerForced = stats.countByType.get(LINKER_TYPE_FULL) === values.length;\n\tconst forcedSet = /* @__PURE__ */ new Set();\n\tif (labelForced) forcedSet.add(LABEL_TYPE_FULL);\n\tif (linkerForced) forcedSet.add(LINKER_TYPE_FULL);\n\tconst { mainTypes, secondaryTypes } = classifyTypes(stats, values.length);\n\tconst build = (typeSet, force) => buildLabels(records, typeSet, forceTraceElements, separator, force);\n\tif (mainTypes.length === 0) {\n\t\tif (secondaryTypes.length !== 0) throw new Error(\"Non-empty secondary types list while main types list is empty.\");\n\t\treturn build(new Set([LABEL_TYPE_FULL]), true) ?? throwError(\"Failed to derive labels using native column labels\");\n\t}\n\tlet includedCount = 0;\n\tlet additionalType = -1;\n\twhile (includedCount < mainTypes.length) {\n\t\tconst currentSet = new Set(forcedSet);\n\t\tfor (let i = 0; i < includedCount; ++i) currentSet.add(mainTypes[i]);\n\t\tif (additionalType >= 0) currentSet.add(mainTypes[additionalType]);\n\t\tconst candidateResult = build(currentSet, false);\n\t\tif (candidateResult !== void 0 && countUniqueLabels(candidateResult) === values.length) return build(minimizeTypeSet(currentSet, records, stats, forceTraceElements, forcedSet, separator), false) ?? throwError(\"Failed to derive unique labels\");\n\t\tadditionalType++;\n\t\tif (additionalType >= mainTypes.length) {\n\t\t\tincludedCount++;\n\t\t\tadditionalType = includedCount;\n\t\t}\n\t}\n\treturn build(minimizeTypeSet(new Set([\n\t\t...forcedSet,\n\t\t...mainTypes,\n\t\t...secondaryTypes\n\t]), records, stats, forceTraceElements, forcedSet, separator), true) ?? throwError(\"Failed to derive unique labels\");\n}\nfunction extractEntryParts(entry) {\n\tif (!(\"spec\" in entry && typeof entry.spec === \"object\")) return {\n\t\tspec: entry,\n\t\textraTrace: void 0,\n\t\tlinkerPath: void 0,\n\t\tqualifications: void 0\n\t};\n\treturn {\n\t\tspec: entry.spec,\n\t\textraTrace: entry.extraTrace,\n\t\tlinkerPath: entry.linkerPath,\n\t\tqualifications: entry.qualifications\n\t};\n}\nfunction formatQualification(q) {\n\tconst ctx = q.contextDomain ?? {};\n\tconst keys = Object.keys(ctx);\n\tif (keys.length === 0) return q.axis.name;\n\tconst pairs = keys.map((k) => `${k}=${ctx[k]}`).join(\", \");\n\treturn Object.prototype.hasOwnProperty.call(ctx, q.axis.name) ? pairs : `${q.axis.name} ${pairs}`;\n}\nfunction formatQualifications(qs) {\n\treturn qs.map(formatQualification).join(\"; \");\n}\nfunction computeStepLabel(step, stepIndex, formatters) {\n\tconst base = (readAnnotation(step.spec, Annotation.LinkLabel) ?? readAnnotation(step.spec, Annotation.Label))?.trim();\n\tif (isNil$1(base) || base.length === 0) return void 0;\n\tif (step.qualifications === void 0 || step.qualifications.length === 0) return base;\n\tconst qualText = isFunction(formatters?.linkerStepQualification) ? formatters.linkerStepQualification(step.qualifications, stepIndex, step.spec) : `[${formatQualifications(step.qualifications)}]`;\n\treturn isNil$1(qualText) ? base : `${base} ${qualText}`;\n}\nfunction buildFullTrace(trace) {\n\tconst result = [];\n\tconst occurrences = /* @__PURE__ */ new Map();\n\tfor (let i = trace.length - 1; i >= 0; --i) {\n\t\tconst entry = trace[i];\n\t\tconst occurrenceIndex = (occurrences.get(entry.type) ?? 0) + 1;\n\t\toccurrences.set(entry.type, occurrenceIndex);\n\t\tresult.push({\n\t\t\t...entry,\n\t\t\tfullType: `${entry.type}@${occurrenceIndex}`,\n\t\t\toccurrenceIndex\n\t\t});\n\t}\n\tresult.reverse();\n\treturn result;\n}\nfunction enrichRecord(value, index, options) {\n\tconst { spec, extraTrace, linkerPath, qualifications } = extractEntryParts(value);\n\tconst formatters = options.formatters;\n\tconst rawLabel = readAnnotation(spec, Annotation.Label);\n\tconst traceStr = readAnnotation(spec, Annotation.Trace);\n\tconst baseTrace = traceStr ? parseJson(traceStr) ?? [] : [];\n\tconst prefixExtra = extraTrace?.filter((e) => e.position === \"prefix\") ?? [];\n\tconst suffixExtra = extraTrace?.filter((e) => e.position !== \"prefix\") ?? [];\n\tconst trace = [\n\t\t...prefixExtra,\n\t\t...baseTrace,\n\t\t...suffixExtra\n\t];\n\tif (!isNil$1(rawLabel)) {\n\t\tconst label = isFunction(formatters?.native) ? formatters.native(rawLabel, spec, index) : rawLabel;\n\t\tif (!isNil$1(label)) {\n\t\t\tconst labelEntry = {\n\t\t\t\tlabel,\n\t\t\t\ttype: LABEL_TYPE,\n\t\t\t\timportance: -2\n\t\t\t};\n\t\t\tif (options.addLabelAsSuffix === true) trace.push(labelEntry);\n\t\t\telse trace.splice(0, 0, labelEntry);\n\t\t}\n\t}\n\tif (linkerPath !== void 0 && linkerPath.length > 0) {\n\t\tconst stepLabels = linkerPath.map((step, i) => computeStepLabel(step, i, formatters)).filter((s) => !isNil$1(s));\n\t\tif (stepLabels.length > 0) {\n\t\t\tconst linkerText = isFunction(formatters?.linker) ? formatters.linker(stepLabels, spec, index) : `via ${stepLabels.join(\" > \")}`;\n\t\t\tif (!isNil$1(linkerText)) trace.push({\n\t\t\t\ttype: LINKER_TYPE,\n\t\t\t\tlabel: linkerText,\n\t\t\t\timportance: -10\n\t\t\t});\n\t\t}\n\t}\n\tif (qualifications !== void 0 && qualifications.forQueries !== void 0) {\n\t\tfor (const [anchorId, qs] of Object.entries(qualifications.forQueries)) {\n\t\t\tif (qs.length === 0) continue;\n\t\t\tconst anchorText = isFunction(formatters?.anchorQualification) ? formatters.anchorQualification(anchorId, qs, spec, index) : `[${anchorId}: ${formatQualifications(qs)}]`;\n\t\t\tif (isNil$1(anchorText)) continue;\n\t\t\ttrace.push({\n\t\t\t\ttype: `${ANCHOR_QUAL_TYPE_PREFIX}${anchorId}`,\n\t\t\t\tlabel: anchorText,\n\t\t\t\timportance: -11\n\t\t\t});\n\t\t}\n\t\tif (qualifications.forHit !== void 0 && qualifications.forHit.length > 0) {\n\t\t\tconst hitText = isFunction(formatters?.hitQualification) ? formatters.hitQualification(qualifications.forHit, spec, index) : `[${formatQualifications(qualifications.forHit)}]`;\n\t\t\tif (!isNil$1(hitText)) trace.push({\n\t\t\t\ttype: HIT_QUAL_TYPE,\n\t\t\t\tlabel: hitText,\n\t\t\t\timportance: -12\n\t\t\t});\n\t\t}\n\t}\n\treturn { fullTrace: buildFullTrace(trace) };\n}\nfunction collectTypeStats(records) {\n\tconst importances = /* @__PURE__ */ new Map();\n\tconst countByType = /* @__PURE__ */ new Map();\n\tfor (const record of records) for (let i = 0; i < record.fullTrace.length; i++) {\n\t\tconst { fullType, importance: rawImportance } = record.fullTrace[i];\n\t\tconst importance = rawImportance ?? 0;\n\t\tconst distance = (record.fullTrace.length - i) * DISTANCE_PENALTY;\n\t\tcountByType.set(fullType, (countByType.get(fullType) ?? 0) + 1);\n\t\timportances.set(fullType, Math.max(importances.get(fullType) ?? Number.NEGATIVE_INFINITY, importance - distance));\n\t}\n\treturn {\n\t\timportances,\n\t\tcountByType\n\t};\n}\nfunction classifyTypes(stats, totalRecords) {\n\tconst sorted = [...stats.importances].sort(([, i1], [, i2]) => i2 - i1);\n\tconst mainTypes = [];\n\tconst secondaryTypes = [];\n\tfor (const [typeName] of sorted) if (typeName.endsWith(\"@1\") || stats.countByType.get(typeName) === totalRecords) mainTypes.push(typeName);\n\telse secondaryTypes.push(typeName);\n\treturn {\n\t\tmainTypes,\n\t\tsecondaryTypes\n\t};\n}\nfunction buildLabels(records, includedTypes, forceTraceElements, separator, force) {\n\tconst result = [];\n\tfor (const r of records) {\n\t\tconst traceParts = [];\n\t\tconst anchorParts = [];\n\t\tlet linkerLabel;\n\t\tlet hitLabel;\n\t\tfor (const ft of r.fullTrace) {\n\t\t\tif (!(includedTypes.has(ft.fullType) || forceTraceElements?.has(ft.type))) continue;\n\t\t\tif (ft.type === LINKER_TYPE) linkerLabel = ft.label;\n\t\t\telse if (ft.type === HIT_QUAL_TYPE) hitLabel = ft.label;\n\t\t\telse if (isAnchorQualType(ft.type)) anchorParts.push(ft.label);\n\t\t\telse traceParts.push(ft.label);\n\t\t}\n\t\tif (traceParts.length === 0 && anchorParts.length === 0 && linkerLabel === void 0 && hitLabel === void 0) {\n\t\t\tif (!force) return void 0;\n\t\t\tresult.push(\"Unlabeled\");\n\t\t\tcontinue;\n\t\t}\n\t\tlet label = traceParts.join(separator);\n\t\tconst append = (part) => {\n\t\t\tlabel = label.length === 0 ? part : `${label} ${part}`;\n\t\t};\n\t\tif (linkerLabel !== void 0) append(linkerLabel);\n\t\tfor (const a of anchorParts) append(a);\n\t\tif (hitLabel !== void 0) append(hitLabel);\n\t\tresult.push(label);\n\t}\n\treturn result;\n}\nfunction countUniqueLabels(result) {\n\tif (result === void 0) return 0;\n\treturn new Set(result).size;\n}\nfunction minimizeTypeSet(typeSet, records, stats, forceTraceElements, forcedSet, separator) {\n\tconst initialResult = buildLabels(records, typeSet, forceTraceElements, separator, false);\n\tif (initialResult === void 0) return typeSet;\n\tconst targetCardinality = countUniqueLabels(initialResult);\n\tconst result = new Set(typeSet);\n\tconst removable = [...result].filter((t) => !forceTraceElements?.has(t.split(\"@\")[0]) && !forcedSet.has(t)).sort((a, b) => (stats.importances.get(a) ?? 0) - (stats.importances.get(b) ?? 0));\n\tfor (const typeToRemove of removable) {\n\t\tconst candidate = new Set(result);\n\t\tcandidate.delete(typeToRemove);\n\t\tconst candidateResult = buildLabels(records, candidate, forceTraceElements, separator, false);\n\t\tif (candidateResult !== void 0 && countUniqueLabels(candidateResult) >= targetCardinality) result.delete(typeToRemove);\n\t}\n\treturn result;\n}\n//#endregion\nexport { deriveDistinctLabels };\n\n//# sourceMappingURL=derive_distinct_labels.js.map","import { deriveDistinctLabels } from \"../../labels/derive_distinct_labels.js\";\n//#region src/render/util/label.ts\n/** @deprecated Use deriveDistinctLabels */\nfunction deriveLabels(values, getSpec, options = {}) {\n\treturn deriveDistinctLabels(values.map(getSpec), options).map((label, i) => ({\n\t\tvalue: values[i],\n\t\tlabel\n\t}));\n}\n//#endregion\nexport { deriveLabels };\n\n//# sourceMappingURL=label.js.map","import { TreeNodeAccessor } from \"../accessor.js\";\nimport { dataInfoToEntries, isDataInfo, isDataInfoEntries, visitDataInfo } from \"@milaboratories/pl-model-common\";\n//#region src/render/util/pcolumn_data.ts\nconst PCD_PREFIX = \"PColumnData/\";\nconst RT_RESOURCE_MAP = PCD_PREFIX + \"ResourceMap\";\nconst RT_RESOURCE_MAP_PARTITIONED = PCD_PREFIX + \"Partitioned/ResourceMap\";\nconst RT_JSON_PARTITIONED = PCD_PREFIX + \"JsonPartitioned\";\nconst RT_BINARY_PARTITIONED = PCD_PREFIX + \"BinaryPartitioned\";\nconst RT_PARQUET_PARTITIONED = PCD_PREFIX + \"ParquetPartitioned\";\nconst PCD_SUP_PREFIX = PCD_PREFIX + \"Partitioned/\";\nconst RT_JSON_SUPER_PARTITIONED = PCD_SUP_PREFIX + \"JsonPartitioned\";\nconst RT_BINARY_SUPER_PARTITIONED = PCD_SUP_PREFIX + \"BinaryPartitioned\";\nconst RT_PARQUET_SUPER_PARTITIONED = PCD_SUP_PREFIX + \"ParquetPartitioned\";\nfunction populateResourceMapData(acc, resourceParser, data, keyPrefix = [], addEntriesWithNoData) {\n\tif (acc === void 0) return false;\n\tswitch (acc.resourceType.name) {\n\t\tcase RT_RESOURCE_MAP: {\n\t\t\tlet isComplete = acc.getInputsLocked();\n\t\t\tfor (const keyStr of acc.listInputFields()) {\n\t\t\t\tconst value = acc.resolve({\n\t\t\t\t\tfield: keyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tconst key = [...keyPrefix, ...JSON.parse(keyStr)];\n\t\t\t\tconst converted = value === void 0 ? void 0 : resourceParser(value);\n\t\t\t\tif (converted === void 0) isComplete = false;\n\t\t\t\tif (converted !== void 0 || addEntriesWithNoData) data.push({\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue: converted\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn isComplete;\n\t\t}\n\t\tcase RT_RESOURCE_MAP_PARTITIONED: {\n\t\t\tlet isComplete = acc.getInputsLocked();\n\t\t\tfor (const keyStr of acc.listInputFields()) {\n\t\t\t\tconst value = acc.resolve({\n\t\t\t\t\tfield: keyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tif (value === void 0) isComplete = false;\n\t\t\t\telse {\n\t\t\t\t\tconst populateResult = populateResourceMapData(value, resourceParser, data, [...keyPrefix, ...JSON.parse(keyStr)], addEntriesWithNoData);\n\t\t\t\t\tisComplete = isComplete && populateResult;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn isComplete;\n\t\t}\n\t\tdefault: throw new Error(`Unknown resource type: ${acc.resourceType.name}`);\n\t}\n}\nfunction parseResourceMap(acc, resourceParser, addEntriesWithNoData = false) {\n\tconst data = [];\n\treturn {\n\t\tisComplete: populateResourceMapData(acc, resourceParser, data, [], addEntriesWithNoData),\n\t\tdata\n\t};\n}\nconst removeIndexSuffix = (keyStr) => {\n\tif (keyStr.endsWith(\".index\")) return {\n\t\tbaseKey: keyStr.substring(0, keyStr.length - 6),\n\t\ttype: \"index\"\n\t};\n\telse if (keyStr.endsWith(\".values\")) return {\n\t\tbaseKey: keyStr.substring(0, keyStr.length - 7),\n\t\ttype: \"values\"\n\t};\n\telse throw new Error(`key must ends on .index/.values for binary p-column, got: ${keyStr}`);\n};\n/** Returns a list of all partition keys appeared in the p-column */\nfunction getPartitionKeysList(acc) {\n\tif (!acc) return void 0;\n\tconst rt = acc.resourceType.name;\n\tconst meta = acc.getDataAsJson();\n\tconst data = [];\n\tlet keyLength = 0;\n\tswitch (rt) {\n\t\tcase RT_RESOURCE_MAP:\n\t\t\tkeyLength = meta[\"keyLength\"];\n\t\t\tbreak;\n\t\tcase RT_RESOURCE_MAP_PARTITIONED:\n\t\t\tkeyLength = meta[\"partitionKeyLength\"] + meta[\"keyLength\"];\n\t\t\tbreak;\n\t\tcase RT_JSON_PARTITIONED:\n\t\tcase RT_BINARY_PARTITIONED:\n\t\tcase RT_PARQUET_PARTITIONED:\n\t\t\tkeyLength = meta[\"partitionKeyLength\"];\n\t\t\tbreak;\n\t\tcase RT_BINARY_SUPER_PARTITIONED:\n\t\tcase RT_JSON_SUPER_PARTITIONED:\n\t\tcase RT_PARQUET_SUPER_PARTITIONED:\n\t\t\tkeyLength = meta[\"superPartitionKeyLength\"] + meta[\"partitionKeyLength\"];\n\t\t\tbreak;\n\t}\n\tswitch (rt) {\n\t\tcase RT_RESOURCE_MAP:\n\t\tcase RT_JSON_PARTITIONED:\n\t\tcase RT_BINARY_PARTITIONED:\n\t\tcase RT_PARQUET_PARTITIONED:\n\t\t\tfor (let keyStr of acc.listInputFields()) {\n\t\t\t\tif (rt === \"PColumnData/BinaryPartitioned\") keyStr = removeIndexSuffix(keyStr).baseKey;\n\t\t\t\tconst key = [...JSON.parse(keyStr)];\n\t\t\t\tdata.push(key);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase RT_RESOURCE_MAP_PARTITIONED:\n\t\tcase RT_BINARY_SUPER_PARTITIONED:\n\t\tcase RT_JSON_SUPER_PARTITIONED:\n\t\tcase RT_PARQUET_SUPER_PARTITIONED:\n\t\t\tfor (const supKeyStr of acc.listInputFields()) {\n\t\t\t\tconst keyPrefix = [...JSON.parse(supKeyStr)];\n\t\t\t\tconst value = acc.resolve({\n\t\t\t\t\tfield: supKeyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tif (value !== void 0) for (let keyStr of value.listInputFields()) {\n\t\t\t\t\tif (rt === \"PColumnData/Partitioned/BinaryPartitioned\") keyStr = removeIndexSuffix(keyStr).baseKey;\n\t\t\t\t\tconst key = [...keyPrefix, ...JSON.parse(keyStr)];\n\t\t\t\t\tdata.push(key);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn {\n\t\tdata,\n\t\tkeyLength\n\t};\n}\nfunction getUniquePartitionKeysForDataEntries(list) {\n\tif (list.type !== \"JsonPartitioned\" && list.type !== \"BinaryPartitioned\" && list.type !== \"ParquetPartitioned\") throw new Error(`Splitting requires Partitioned DataInfoEntries, got ${list.type}`);\n\tconst { parts, partitionKeyLength } = list;\n\tconst result = [];\n\tfor (let i = 0; i < partitionKeyLength; ++i) result.push(/* @__PURE__ */ new Set());\n\tfor (const part of parts) {\n\t\tconst key = part.key;\n\t\tif (key.length !== partitionKeyLength) throw new Error(`Key length (${key.length}) does not match partition length (${partitionKeyLength}) for key: ${JSON.stringify(key)}`);\n\t\tfor (let i = 0; i < partitionKeyLength; ++i) result[i].add(key[i]);\n\t}\n\treturn result.map((s) => Array.from(s.values()));\n}\nfunction getUniquePartitionKeys(acc) {\n\tif (acc === void 0) return void 0;\n\tif (isDataInfoEntries(acc)) return getUniquePartitionKeysForDataEntries(acc);\n\tconst list = getPartitionKeysList(acc);\n\tif (!list) return void 0;\n\tconst { data, keyLength } = list;\n\tconst result = [];\n\tfor (let i = 0; i < keyLength; ++i) result.push(/* @__PURE__ */ new Set());\n\tfor (const l of data) {\n\t\tif (l.length !== keyLength) throw new Error(\"key length does not match partition length\");\n\t\tfor (let i = 0; i < keyLength; ++i) result[i].add(l[i]);\n\t}\n\treturn result.map((s) => Array.from(s.values()));\n}\n/**\n* Parses the PColumn data from a TreeNodeAccessor into a DataInfoEntries structure.\n* Returns undefined if any required data is missing.\n* Throws error on validation failures.\n*\n* @param acc - The TreeNodeAccessor containing PColumn data\n* @param keyPrefix - Optional key prefix for recursive calls\n* @returns DataInfoEntries representation of the PColumn data, or undefined if incomplete\n*/\nfunction parsePColumnData(acc, keyPrefix = []) {\n\tif (acc === void 0) return void 0;\n\tif (!acc.getIsReadyOrError()) return void 0;\n\tconst resourceType = acc.resourceType.name;\n\tconst meta = acc.getDataAsJson();\n\tif (keyPrefix.length > 0 && (resourceType === \"PColumnData/Partitioned/JsonPartitioned\" || resourceType === \"PColumnData/Partitioned/BinaryPartitioned\" || resourceType === \"PColumnData/Partitioned/ParquetPartitioned\")) throw new Error(`Unexpected nested super-partitioned resource: ${resourceType}`);\n\tswitch (resourceType) {\n\t\tcase RT_RESOURCE_MAP:\n\t\tcase RT_RESOURCE_MAP_PARTITIONED: throw new Error(`Only data columns are supported, got: ${resourceType}`);\n\t\tcase RT_JSON_PARTITIONED: {\n\t\t\tif (typeof meta?.partitionKeyLength !== \"number\") throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n\t\t\tconst parts = [];\n\t\t\tfor (const keyStr of acc.listInputFields()) {\n\t\t\t\tconst value = acc.resolve({\n\t\t\t\t\tfield: keyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tif (value === void 0) return void 0;\n\t\t\t\tconst key = [...keyPrefix, ...JSON.parse(keyStr)];\n\t\t\t\tparts.push({\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"JsonPartitioned\",\n\t\t\t\tpartitionKeyLength: meta.partitionKeyLength,\n\t\t\t\tparts\n\t\t\t};\n\t\t}\n\t\tcase RT_BINARY_PARTITIONED: {\n\t\t\tif (typeof meta?.partitionKeyLength !== \"number\") throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n\t\t\tconst parts = [];\n\t\t\tconst baseKeys = /* @__PURE__ */ new Map();\n\t\t\tfor (const keyStr of acc.listInputFields()) {\n\t\t\t\tconst suffix = removeIndexSuffix(keyStr);\n\t\t\t\tconst value = acc.resolve({\n\t\t\t\t\tfield: keyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tif (value === void 0) return void 0;\n\t\t\t\tlet entry = baseKeys.get(suffix.baseKey);\n\t\t\t\tif (!entry) {\n\t\t\t\t\tentry = {};\n\t\t\t\t\tbaseKeys.set(suffix.baseKey, entry);\n\t\t\t\t}\n\t\t\t\tif (suffix.type === \"index\") entry.index = value;\n\t\t\t\telse entry.values = value;\n\t\t\t}\n\t\t\tfor (const [baseKeyStr, entry] of baseKeys.entries()) {\n\t\t\t\tif (!entry.index || !entry.values) return void 0;\n\t\t\t\tconst key = [...keyPrefix, ...JSON.parse(baseKeyStr)];\n\t\t\t\tparts.push({\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tindex: entry.index,\n\t\t\t\t\t\tvalues: entry.values\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"BinaryPartitioned\",\n\t\t\t\tpartitionKeyLength: meta.partitionKeyLength,\n\t\t\t\tparts\n\t\t\t};\n\t\t}\n\t\tcase RT_PARQUET_PARTITIONED: {\n\t\t\tif (typeof meta?.partitionKeyLength !== \"number\") throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n\t\t\tconst parts = [];\n\t\t\tfor (const keyStr of acc.listInputFields()) {\n\t\t\t\tconst value = acc.resolve({\n\t\t\t\t\tfield: keyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tif (value === void 0) return void 0;\n\t\t\t\tconst key = [...keyPrefix, ...JSON.parse(keyStr)];\n\t\t\t\tparts.push({\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"ParquetPartitioned\",\n\t\t\t\tpartitionKeyLength: meta.partitionKeyLength,\n\t\t\t\tparts\n\t\t\t};\n\t\t}\n\t\tcase RT_JSON_SUPER_PARTITIONED: {\n\t\t\tif (typeof meta?.superPartitionKeyLength !== \"number\" || typeof meta?.partitionKeyLength !== \"number\") throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`);\n\t\t\tconst totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n\t\t\tconst parts = [];\n\t\t\tfor (const supKeyStr of acc.listInputFields()) {\n\t\t\t\tconst superPartition = acc.resolve({\n\t\t\t\t\tfield: supKeyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tif (superPartition === void 0) return void 0;\n\t\t\t\tif (superPartition.resourceType.name !== \"PColumnData/JsonPartitioned\") throw new Error(`Expected ${RT_JSON_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);\n\t\t\t\tconst innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));\n\t\t\t\tif (innerResult === void 0) return void 0;\n\t\t\t\tif (innerResult.type !== \"JsonPartitioned\") throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\t\t\t\tparts.push(...innerResult.parts);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"JsonPartitioned\",\n\t\t\t\tpartitionKeyLength: totalKeyLength,\n\t\t\t\tparts\n\t\t\t};\n\t\t}\n\t\tcase RT_BINARY_SUPER_PARTITIONED: {\n\t\t\tif (typeof meta?.superPartitionKeyLength !== \"number\" || typeof meta?.partitionKeyLength !== \"number\") throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`);\n\t\t\tconst totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n\t\t\tconst parts = [];\n\t\t\tfor (const supKeyStr of acc.listInputFields()) {\n\t\t\t\tconst superPartition = acc.resolve({\n\t\t\t\t\tfield: supKeyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tif (superPartition === void 0) return void 0;\n\t\t\t\tif (superPartition.resourceType.name !== \"PColumnData/BinaryPartitioned\") throw new Error(`Expected ${RT_BINARY_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);\n\t\t\t\tconst innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));\n\t\t\t\tif (innerResult === void 0) return void 0;\n\t\t\t\tif (innerResult.type !== \"BinaryPartitioned\") throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\t\t\t\tparts.push(...innerResult.parts);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"BinaryPartitioned\",\n\t\t\t\tpartitionKeyLength: totalKeyLength,\n\t\t\t\tparts\n\t\t\t};\n\t\t}\n\t\tcase RT_PARQUET_SUPER_PARTITIONED: {\n\t\t\tif (typeof meta?.superPartitionKeyLength !== \"number\" || typeof meta?.partitionKeyLength !== \"number\") throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`);\n\t\t\tconst totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n\t\t\tconst parts = [];\n\t\t\tfor (const supKeyStr of acc.listInputFields()) {\n\t\t\t\tconst superPartition = acc.resolve({\n\t\t\t\t\tfield: supKeyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tif (superPartition === void 0) return void 0;\n\t\t\t\tif (superPartition.resourceType.name !== \"PColumnData/ParquetPartitioned\") throw new Error(`Expected ${RT_PARQUET_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);\n\t\t\t\tconst innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));\n\t\t\t\tif (innerResult === void 0) return void 0;\n\t\t\t\tif (innerResult.type !== \"ParquetPartitioned\") throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\t\t\t\tparts.push(...innerResult.parts);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"ParquetPartitioned\",\n\t\t\t\tpartitionKeyLength: totalKeyLength,\n\t\t\t\tparts\n\t\t\t};\n\t\t}\n\t\tdefault: throw new Error(`Unknown resource type: ${resourceType}`);\n\t}\n}\n/**\n* Converts or parses the input into DataInfoEntries format.\n\n* @param acc - The input data, which can be TreeNodeAccessor, DataInfoEntries, DataInfo, or undefined.\n* @returns The data in DataInfoEntries format, or undefined if the input was undefined or data is not ready.\n*/\nfunction convertOrParsePColumnData(acc) {\n\tif (acc === void 0) return void 0;\n\tif (isDataInfoEntries(acc)) return acc;\n\tif (isDataInfo(acc)) return dataInfoToEntries(acc);\n\tif (acc instanceof TreeNodeAccessor) return parsePColumnData(acc);\n\tthrow new Error(`Unexpected input type: ${typeof acc}`);\n}\nfunction isPColumnReady(c) {\n\tconst isValues = (d) => Array.isArray(d);\n\tconst isAccessor = (d) => d instanceof TreeNodeAccessor;\n\tlet ready = true;\n\tconst data = typeof c.data === \"function\" ? c.data() : c.data;\n\tif (data == null) return false;\n\telse if (isAccessor(data)) ready &&= data.getIsReadyOrError();\n\telse if (isDataInfo(data)) visitDataInfo(data, (v) => ready &&= v.getIsReadyOrError());\n\telse if (!isValues(data)) throw Error(`unsupported column data type: ${data}`);\n\treturn ready;\n}\nfunction allPColumnsReady(columns) {\n\treturn columns.every(isPColumnReady);\n}\n//#endregion\nexport { RT_BINARY_PARTITIONED, RT_BINARY_SUPER_PARTITIONED, RT_JSON_PARTITIONED, RT_JSON_SUPER_PARTITIONED, RT_PARQUET_PARTITIONED, RT_PARQUET_SUPER_PARTITIONED, RT_RESOURCE_MAP, RT_RESOURCE_MAP_PARTITIONED, allPColumnsReady, convertOrParsePColumnData, getPartitionKeysList, getUniquePartitionKeys, isPColumnReady, parsePColumnData, parseResourceMap };\n\n//# sourceMappingURL=pcolumn_data.js.map","import { filterDataInfoEntries } from \"./axis_filtering.js\";\nimport { deriveLabels } from \"./label.js\";\nimport { convertOrParsePColumnData, getUniquePartitionKeys } from \"./pcolumn_data.js\";\nimport { Annotation, LinkerMap, canonicalizeAxisId, deriveNativeId, entriesToDataInfo, getAxisId, getColumnIdAndSpec, isLinkerColumn, isPColumnSpec, isPartitionedDataInfoEntries, legacyColumnSelectorsToPredicate, matchAxisId, resolveAnchors } from \"@milaboratories/pl-model-common\";\nimport canonicalize from \"canonicalize\";\n//#region src/render/util/column_collection.ts\nfunction isPColumnValues(value) {\n\tif (!Array.isArray(value)) return false;\n\tif (value.length === 0) return true;\n\tconst first = value[0];\n\treturn typeof first === \"object\" && first !== null && \"key\" in first && \"val\" in first;\n}\n/**\n* A simple implementation of {@link ColumnProvider} backed by a pre-defined array of columns.\n*/\nvar ArrayColumnProvider = class {\n\tconstructor(columns) {\n\t\tthis.columns = columns;\n\t}\n\tselectColumns(selectors) {\n\t\tconst predicate = typeof selectors === \"function\" ? selectors : legacyColumnSelectorsToPredicate(selectors);\n\t\treturn this.columns.filter((column) => predicate(column.spec));\n\t}\n};\nfunction splitFiltersToExtraTrace(splitFilters) {\n\tif (splitFilters === void 0) return void 0;\n\treturn splitFilters.map((filter) => ({\n\t\ttype: `split:${canonicalizeAxisId(filter.axisId)}`,\n\t\tlabel: filter.label,\n\t\timportance: 1e6\n\t}));\n}\nfunction splitFiltersToAxisFilter(splitFilters) {\n\tif (!splitFilters) return void 0;\n\treturn splitFilters.map((filter) => [filter.axisIdx, filter.value]);\n}\nfunction fallbackIdDeriver(originalId, axisFilters) {\n\tif (!axisFilters || axisFilters.length === 0) return originalId;\n\treturn canonicalize({\n\t\tid: originalId,\n\t\taxisFilters: [...axisFilters].sort((a, b) => a[0] - b[0])\n\t});\n}\n/** Checks if a selector object uses any anchor properties */\nfunction hasAnchors(selector) {\n\tif (!selector || typeof selector !== \"object\") return false;\n\tconst potentialAnchored = selector;\n\tconst hasAnchorValues = (obj) => obj && typeof obj === \"object\" && Object.values(obj).some((v) => typeof v === \"object\" && v !== null && \"anchor\" in v);\n\tconst domainHasAnchors = hasAnchorValues(potentialAnchored[\"domain\"]);\n\tconst contextDomainHasAnchors = hasAnchorValues(potentialAnchored[\"contextDomain\"]);\n\tconst axesHaveAnchors = potentialAnchored[\"axes\"] && Array.isArray(potentialAnchored[\"axes\"]) && potentialAnchored[\"axes\"].some((a) => typeof a === \"object\" && a !== null && \"anchor\" in a);\n\treturn !!potentialAnchored[\"domainAnchor\"] || !!potentialAnchored[\"contextDomainAnchor\"] || domainHasAnchors || contextDomainHasAnchors || axesHaveAnchors;\n}\n/**\n* Derives the indices of axes marked for splitting based on the selector.\n* Throws an error if splitting is requested alongside `partialAxesMatch`.\n*/\nfunction getSplitAxisIndices(selector) {\n\tif (typeof selector !== \"object\" || !(\"axes\" in selector) || selector.axes === void 0) return [];\n\tconst splitIndices = selector.axes.map((axis, index) => typeof axis === \"object\" && \"split\" in axis && axis.split === true ? index : -1).filter((index) => index !== -1);\n\tif (splitIndices.length > 0 && selector.partialAxesMatch !== void 0) throw new Error(\"Axis splitting is not supported when `partialAxesMatch` is defined.\");\n\tsplitIndices.sort((a, b) => a - b);\n\treturn splitIndices;\n}\nvar PColumnCollection = class {\n\tdefaultProviderStore = [];\n\tproviders = [new ArrayColumnProvider(this.defaultProviderStore)];\n\taxisLabelProviders = [];\n\tconstructor() {}\n\taddColumnProvider(provider) {\n\t\tthis.providers.push(provider);\n\t\treturn this;\n\t}\n\taddAxisLabelProvider(provider) {\n\t\tthis.axisLabelProviders.push(provider);\n\t\treturn this;\n\t}\n\taddColumns(columns) {\n\t\tthis.defaultProviderStore.push(...columns);\n\t\treturn this;\n\t}\n\taddColumn(column) {\n\t\tthis.defaultProviderStore.push(column);\n\t\treturn this;\n\t}\n\t/** Fetches labels for a given axis from the registered providers */\n\tfindLabels(axis) {\n\t\tfor (const provider of this.axisLabelProviders) {\n\t\t\tconst labels = provider.findLabels(axis);\n\t\t\tif (labels) return labels;\n\t\t}\n\t}\n\tgetUniversalEntries(predicateOrSelectors, opts) {\n\t\tconst { anchorCtx, labelOps: rawLabelOps, dontWaitAllData = false, overrideLabelAnnotation = false, exclude, enrichByLinkers = false } = opts ?? {};\n\t\tconst labelOps = {\n\t\t\t...overrideLabelAnnotation && rawLabelOps?.includeNativeLabel !== false ? { includeNativeLabel: true } : {},\n\t\t\t...rawLabelOps\n\t\t};\n\t\tlet excludePredicate = () => false;\n\t\tif (exclude) {\n\t\t\tconst excludePredicartes = (Array.isArray(exclude) ? exclude : [exclude]).map((selector) => {\n\t\t\t\tif (hasAnchors(selector)) {\n\t\t\t\t\tif (!anchorCtx) throw new Error(\"Anchored selectors in exclude require an AnchoredIdDeriver to be provided in options.\");\n\t\t\t\t\treturn legacyColumnSelectorsToPredicate(resolveAnchors(anchorCtx.anchors, selector, opts));\n\t\t\t\t} else return legacyColumnSelectorsToPredicate(selector);\n\t\t\t});\n\t\t\texcludePredicate = (spec) => excludePredicartes.some((predicate) => predicate(spec));\n\t\t}\n\t\tconst selectorsArray = typeof predicateOrSelectors === \"function\" ? [predicateOrSelectors] : Array.isArray(predicateOrSelectors) ? predicateOrSelectors : [predicateOrSelectors];\n\t\tconst intermediateResults = [];\n\t\tconst selectedNativeIds = /* @__PURE__ */ new Set();\n\t\tfor (const rawSelector of selectorsArray) {\n\t\t\tconst usesAnchors = hasAnchors(rawSelector);\n\t\t\tlet currentSelector;\n\t\t\tif (usesAnchors) {\n\t\t\t\tif (!anchorCtx) throw new Error(\"Anchored selectors require an AnchoredIdDeriver to be provided in options.\");\n\t\t\t\tcurrentSelector = resolveAnchors(anchorCtx.anchors, rawSelector, opts);\n\t\t\t} else currentSelector = rawSelector;\n\t\t\tconst selectedIds = /* @__PURE__ */ new Set();\n\t\t\tconst selectedColumns = [];\n\t\t\tfor (const provider of this.providers) {\n\t\t\t\tconst providerColumns = provider.selectColumns(currentSelector);\n\t\t\t\tfor (const col of providerColumns) {\n\t\t\t\t\tif (excludePredicate(col.spec)) continue;\n\t\t\t\t\tif (selectedIds.has(col.id)) throw new Error(`Duplicate column id ${col.id} in provider ${provider.constructor.name}`);\n\t\t\t\t\tconst nativeId = deriveNativeId(col.spec);\n\t\t\t\t\tif (selectedNativeIds.has(nativeId)) continue;\n\t\t\t\t\tselectedIds.add(col.id);\n\t\t\t\t\tselectedNativeIds.add(nativeId);\n\t\t\t\t\tselectedColumns.push(col);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (selectedColumns.length === 0) continue;\n\t\t\tconst splitAxisIdxs = getSplitAxisIndices(rawSelector);\n\t\t\tconst needsSplitting = splitAxisIdxs.length > 0;\n\t\t\tfor (const column of selectedColumns) {\n\t\t\t\tif (!isPColumnSpec(column.spec)) continue;\n\t\t\t\tconst originalSpec = column.spec;\n\t\t\t\tif (needsSplitting) {\n\t\t\t\t\tif (isPColumnValues(column.data)) throw new Error(`Splitting is not supported for PColumns with PColumnValues data format. Column id: ${column.id}`);\n\t\t\t\t\tconst dataEntries = convertOrParsePColumnData(column.data);\n\t\t\t\t\tif (!dataEntries) {\n\t\t\t\t\t\tif (dontWaitAllData) continue;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (!isPartitionedDataInfoEntries(dataEntries)) throw new Error(`Splitting requires Partitioned DataInfoEntries, but parsing resulted in ${dataEntries.type} for column ${column.id}`);\n\t\t\t\t\tconst uniqueKeys = getUniquePartitionKeys(dataEntries);\n\t\t\t\t\tconst maxSplitIdx = splitAxisIdxs[splitAxisIdxs.length - 1];\n\t\t\t\t\tif (maxSplitIdx >= dataEntries.partitionKeyLength) throw new Error(`Not enough partition keys (${dataEntries.partitionKeyLength}) for requested split axes (max index ${maxSplitIdx}) in column ${originalSpec.name}`);\n\t\t\t\t\tconst axesLabels = splitAxisIdxs.map((idx) => this.findLabels(getAxisId(originalSpec.axesSpec[idx])));\n\t\t\t\t\tconst keyCombinations = [];\n\t\t\t\t\tconst generateCombinations = (currentCombo, sAxisIdx) => {\n\t\t\t\t\t\tif (sAxisIdx >= splitAxisIdxs.length) {\n\t\t\t\t\t\t\tkeyCombinations.push([...currentCombo]);\n\t\t\t\t\t\t\tif (keyCombinations.length > 1e4) throw new Error(\"Too many key combinations, aborting.\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst axisIdx = splitAxisIdxs[sAxisIdx];\n\t\t\t\t\t\tif (axisIdx >= uniqueKeys.length) throw new Error(`Axis index ${axisIdx} out of bounds for unique keys array (length ${uniqueKeys.length}) during split key generation for column ${column.id}`);\n\t\t\t\t\t\tconst axisValues = uniqueKeys[axisIdx];\n\t\t\t\t\t\tif (!axisValues || axisValues.length === 0) {\n\t\t\t\t\t\t\tkeyCombinations.length = 0;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const val of axisValues) {\n\t\t\t\t\t\t\tcurrentCombo.push(val);\n\t\t\t\t\t\t\tgenerateCombinations(currentCombo, sAxisIdx + 1);\n\t\t\t\t\t\t\tcurrentCombo.pop();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tgenerateCombinations([], 0);\n\t\t\t\t\tif (keyCombinations.length === 0) continue;\n\t\t\t\t\tconst newAxesSpec = [...originalSpec.axesSpec];\n\t\t\t\t\tconst splitAxisOriginalIdxs = splitAxisIdxs.map((idx) => idx);\n\t\t\t\t\tfor (let i = splitAxisIdxs.length - 1; i >= 0; i--) newAxesSpec.splice(splitAxisIdxs[i], 1);\n\t\t\t\t\tconst adjustedSpec = {\n\t\t\t\t\t\t...originalSpec,\n\t\t\t\t\t\taxesSpec: newAxesSpec\n\t\t\t\t\t};\n\t\t\t\t\tfor (const keyCombo of keyCombinations) {\n\t\t\t\t\t\tconst splitFilters = keyCombo.map((value, sAxisIdx) => {\n\t\t\t\t\t\t\tconst axisIdx = splitAxisOriginalIdxs[sAxisIdx];\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\taxisIdx,\n\t\t\t\t\t\t\t\taxisId: getAxisId(originalSpec.axesSpec[axisIdx]),\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\tlabel: axesLabels[sAxisIdx]?.[value] ?? String(value)\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t\tintermediateResults.push({\n\t\t\t\t\t\t\ttype: \"split\",\n\t\t\t\t\t\t\toriginalColumn: column,\n\t\t\t\t\t\t\tspec: originalSpec,\n\t\t\t\t\t\t\tadjustedSpec,\n\t\t\t\t\t\t\tdataEntries,\n\t\t\t\t\t\t\taxisFilters: splitFilters\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else intermediateResults.push({\n\t\t\t\t\ttype: \"direct\",\n\t\t\t\t\toriginalColumn: column,\n\t\t\t\t\tspec: originalSpec,\n\t\t\t\t\tadjustedSpec: originalSpec\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (intermediateResults.length === 0) return [];\n\t\tconst labeledResults = deriveLabels(intermediateResults, (entry) => ({\n\t\t\tspec: entry.spec,\n\t\t\textraTrace: entry.type === \"split\" ? splitFiltersToExtraTrace(entry.axisFilters) : void 0\n\t\t}), labelOps);\n\t\tconst result = [];\n\t\tfor (const { value: entry, label } of labeledResults) {\n\t\t\tconst { originalColumn, spec: originalSpec } = entry;\n\t\t\tconst axisFiltersTuple = splitFiltersToAxisFilter(entry.type === \"split\" ? entry.axisFilters : void 0);\n\t\t\tlet finalId;\n\t\t\tif (anchorCtx) finalId = anchorCtx.deriveS(originalSpec, axisFiltersTuple);\n\t\t\telse finalId = fallbackIdDeriver(originalColumn.id, axisFiltersTuple);\n\t\t\tlet finalSpec = { ...entry.adjustedSpec };\n\t\t\tif (overrideLabelAnnotation) finalSpec = {\n\t\t\t\t...finalSpec,\n\t\t\t\tannotations: {\n\t\t\t\t\t...finalSpec.annotations,\n\t\t\t\t\t[Annotation.Label]: label\n\t\t\t\t}\n\t\t\t};\n\t\t\tresult.push({\n\t\t\t\tid: finalId,\n\t\t\t\tspec: finalSpec,\n\t\t\t\tdata: () => entry.type === \"split\" ? entriesToDataInfo(filterDataInfoEntries(entry.dataEntries, axisFiltersTuple)) : entry.originalColumn.data,\n\t\t\t\tlabel\n\t\t\t});\n\t\t}\n\t\tconst ids = new Set(result.map((entry) => entry.id));\n\t\tif (enrichByLinkers && anchorCtx) {\n\t\t\tconst linkers = result.filter((entry) => isLinkerColumn(entry.spec));\n\t\t\tif (linkers.length === 0) return result;\n\t\t\tconst anchorAxes = Object.values(anchorCtx.anchors).flatMap((anchor) => anchor.axesSpec);\n\t\t\tconst linkerMap = LinkerMap.fromColumns(linkers.map(getColumnIdAndSpec));\n\t\t\tfunction matchAxisIdFn(linkerKeyId, sourceAxisId) {\n\t\t\t\treturn matchAxisId(linkerKeyId, sourceAxisId) || matchAxisId(sourceAxisId, linkerKeyId);\n\t\t\t}\n\t\t\tconst availableByLinkersAxes = linkerMap.getReachableByLinkersAxesFromAxes(anchorAxes, matchAxisIdFn);\n\t\t\tconst availableByLinkersColumns = this.getUniversalEntries((spec) => !isLinkerColumn(spec) && spec.axesSpec.some((columnAxisSpec) => {\n\t\t\t\tconst columnAxisId = getAxisId(columnAxisSpec);\n\t\t\t\treturn availableByLinkersAxes.some((axis) => matchAxisIdFn(getAxisId(axis), columnAxisId));\n\t\t\t}), {\n\t\t\t\tanchorCtx,\n\t\t\t\tlabelOps,\n\t\t\t\tdontWaitAllData,\n\t\t\t\toverrideLabelAnnotation,\n\t\t\t\texclude\n\t\t\t});\n\t\t\tif (availableByLinkersColumns) result.push(...availableByLinkersColumns.filter((entry) => !ids.has(entry.id)));\n\t\t}\n\t\treturn result;\n\t}\n\tgetColumns(predicateOrSelectors, opts) {\n\t\tconst entries = this.getUniversalEntries(predicateOrSelectors, {\n\t\t\toverrideLabelAnnotation: true,\n\t\t\t...opts\n\t\t});\n\t\tif (!entries) return void 0;\n\t\tconst columns = [];\n\t\tfor (const entry of entries) {\n\t\t\tconst data = entry.data();\n\t\t\tif (!data) {\n\t\t\t\tif (opts?.dontWaitAllData) continue;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcolumns.push({\n\t\t\t\tid: entry.id,\n\t\t\t\tspec: entry.spec,\n\t\t\t\tdata\n\t\t\t});\n\t\t}\n\t\treturn columns;\n\t}\n};\n//#endregion\nexport { PColumnCollection };\n\n//# sourceMappingURL=column_collection.js.map","import { resolveRequiredServices } from \"@milaboratories/pl-model-common\";\n//#region src/services/block_services.ts\n/**\n* Services required by all V3 blocks by default.\n* Edit this when a new service should be available to all blocks.\n*\n* Standalone module to avoid circular dependencies between block_model.ts\n* and service type resolution.\n*/\nconst BLOCK_SERVICE_FLAGS = {\n\trequiresPFrameSpec: true,\n\trequiresPFrame: true,\n\trequiresDialog: true\n};\nconst blockServiceNames = resolveRequiredServices(BLOCK_SERVICE_FLAGS);\n//#endregion\nexport { BLOCK_SERVICE_FLAGS, blockServiceNames };\n\n//# sourceMappingURL=block_services.js.map","//#region src/services/service_bridge.ts\n/**\n* Builds a lazy services object from ServiceDispatch and UiServiceRegistry.\n* Each service is instantiated on first access. Errors are cached to prevent\n* repeated factory calls on failure.\n*/\nfunction buildServices(dispatch, registry) {\n\treturn Object.create(null, Object.fromEntries(dispatch.getServiceNames().map((id) => {\n\t\tlet fetched = false;\n\t\tlet cached;\n\t\treturn [id, {\n\t\t\tenumerable: true,\n\t\t\tget() {\n\t\t\t\tif (!fetched) {\n\t\t\t\t\tfetched = true;\n\t\t\t\t\tcached = registry.get(id);\n\t\t\t\t}\n\t\t\t\treturn cached;\n\t\t\t}\n\t\t}];\n\t})));\n}\n/**\n* Builds a ServiceProxy from a ServiceDispatch.\n* Each service method call is forwarded to dispatch.callServiceMethod.\n*/\nfunction createServiceProxy(dispatch) {\n\treturn ((serviceId) => Object.freeze(Object.fromEntries(dispatch.getServiceMethods(serviceId).map((method) => [method, (...args) => dispatch.callServiceMethod(serviceId, method, ...args)]))));\n}\n//#endregion\nexport { buildServices, createServiceProxy };\n\n//# sourceMappingURL=service_bridge.js.map","import { getCfgRenderCtx } from \"../internal.js\";\nimport { createServiceProxy } from \"./service_bridge.js\";\n//#region src/services/get_services.ts\nconst cachedServices = /* @__PURE__ */ new WeakMap();\nfunction getService(name) {\n\tconst ctx = getCfgRenderCtx();\n\tconst map = cachedServices.has(ctx) ? cachedServices.get(ctx) : (() => {\n\t\tcachedServices.set(ctx, /* @__PURE__ */ new Map());\n\t\treturn cachedServices.get(ctx);\n\t})();\n\treturn map.has(name) ? map.get(name) : (() => {\n\t\tmap.set(name, createServiceProxy(ctx)(name));\n\t\treturn map.get(name);\n\t})();\n}\n//#endregion\nexport { getService };\n\n//# sourceMappingURL=get_services.js.map","//#region src/render/util/pframe_upgraders.ts\nfunction patchInSetFilters(filters) {\n\tconst inSetToOrEqual = (predicate) => {\n\t\tif (predicate.operator !== \"InSet\") return predicate;\n\t\treturn {\n\t\t\toperator: \"Or\",\n\t\t\toperands: predicate.references.map((reference) => ({\n\t\t\t\toperator: \"Equal\",\n\t\t\t\treference\n\t\t\t}))\n\t\t};\n\t};\n\tconst mapSingleValuePredicate = (filter, cb) => {\n\t\tswitch (filter.operator) {\n\t\t\tcase \"And\": return {\n\t\t\t\t...filter,\n\t\t\t\toperands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb))\n\t\t\t};\n\t\t\tcase \"Or\": return {\n\t\t\t\t...filter,\n\t\t\t\toperands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb))\n\t\t\t};\n\t\t\tcase \"Not\": return {\n\t\t\t\t...filter,\n\t\t\t\toperand: mapSingleValuePredicate(filter.operand, cb)\n\t\t\t};\n\t\t\tdefault: return cb(filter);\n\t\t}\n\t};\n\tconst mapFilter = (filter, cb) => {\n\t\treturn {\n\t\t\t...filter,\n\t\t\tpredicate: mapSingleValuePredicate(filter.predicate, cb)\n\t\t};\n\t};\n\treturn filters.map((filter) => mapFilter(filter, inSetToOrEqual));\n}\n//#endregion\nexport { patchInSetFilters };\n\n//# sourceMappingURL=pframe_upgraders.js.map","import { getPluginData } from \"../block_storage.js\";\nimport { getCfgRenderCtx } from \"../internal.js\";\nimport { TreeNodeAccessor, ifDef } from \"./accessor.js\";\nimport { MainAccessorName, StagingAccessorName } from \"./internal.js\";\nimport { deriveLabels } from \"./util/label.js\";\nimport { allPColumnsReady } from \"./util/pcolumn_data.js\";\nimport { PColumnCollection } from \"./util/column_collection.js\";\nimport { patchInSetFilters } from \"./util/pframe_upgraders.js\";\nimport { getService } from \"../services/get_services.js\";\nimport \"../services/index.js\";\nimport \"./util/index.js\";\nimport { AnchoredIdDeriver, PColumnName, ensurePColumn, extractAllColumns, isDataInfo, isPColumn, isPColumnSpec, isPlRef, legacyColumnSelectorsToPredicate, mapDataInfo, mapPObjectData, mapPTableDef, mapPTableDefV2, mapValueInVOE, parseJson, readAnnotation, withEnrichments } from \"@milaboratories/pl-model-common\";\nimport canonicalize from \"canonicalize\";\n//#region src/render/api.ts\n/**\n* Helper function to match domain objects\n* @param query Optional domain to match against\n* @param target Optional domain to match\n* @returns true if domains match, false otherwise\n*/\nfunction matchDomain(query, target) {\n\tif (query === void 0) return target === void 0;\n\tif (target === void 0) return true;\n\tfor (const k in target) if (query[k] !== target[k]) return false;\n\treturn true;\n}\n/**\n* Transforms PColumn data into the internal representation expected by the platform\n* @param data Data from a PColumn to transform\n* @returns Transformed data compatible with platform API\n*/\nfunction transformPColumnData(data) {\n\treturn mapPObjectData(data, (d) => {\n\t\tif (d instanceof TreeNodeAccessor) return d.handle;\n\t\telse if (isDataInfo(d)) return mapDataInfo(d, (accessor) => accessor.handle);\n\t\telse return d ?? [];\n\t});\n}\nvar ResultPool = class {\n\tctx = getCfgRenderCtx();\n\t/**\n\t* @deprecated use getOptions()\n\t*/\n\tcalculateOptions(predicate) {\n\t\treturn this.ctx.calculateOptions(predicate);\n\t}\n\tgetOptions(predicateOrSelector, opts) {\n\t\tconst predicate = typeof predicateOrSelector === \"function\" ? predicateOrSelector : legacyColumnSelectorsToPredicate(predicateOrSelector);\n\t\tconst filtered = this.getSpecs().entries.filter((s) => predicate(s.obj));\n\t\tlet labelOps = {};\n\t\tlet refsWithEnrichments = false;\n\t\tif (typeof opts !== \"undefined\") {\n\t\t\tif (typeof opts === \"function\") labelOps = opts;\n\t\t\telse if (typeof opts === \"object\") if (\"includeNativeLabel\" in opts || \"separator\" in opts || \"addLabelAsSuffix\" in opts) labelOps = opts;\n\t\t\telse {\n\t\t\t\topts = opts;\n\t\t\t\tlabelOps = opts.label ?? {};\n\t\t\t\trefsWithEnrichments = opts.refsWithEnrichments ?? false;\n\t\t\t}\n\t\t}\n\t\tif (typeof labelOps === \"object\") return deriveLabels(filtered, (o) => o.obj, labelOps ?? {}).map(({ value: { ref }, label }) => ({\n\t\t\tref: withEnrichments(ref, refsWithEnrichments),\n\t\t\tlabel\n\t\t}));\n\t\telse return filtered.map(({ ref, obj }) => ({\n\t\t\tref: withEnrichments(ref, refsWithEnrichments),\n\t\t\tlabel: labelOps(obj, ref)\n\t\t}));\n\t}\n\tresolveAnchorCtx(anchorsOrCtx) {\n\t\tif (anchorsOrCtx instanceof AnchoredIdDeriver) return anchorsOrCtx;\n\t\tconst resolvedAnchors = {};\n\t\tfor (const [key, value] of Object.entries(anchorsOrCtx)) if (isPlRef(value)) {\n\t\t\tconst resolvedSpec = this.getPColumnSpecByRef(value);\n\t\t\tif (!resolvedSpec) return void 0;\n\t\t\tresolvedAnchors[key] = resolvedSpec;\n\t\t} else resolvedAnchors[key] = value;\n\t\treturn new AnchoredIdDeriver(resolvedAnchors);\n\t}\n\t/**\n\t* Returns columns that match the provided anchors and selectors. It applies axis filters and label derivation.\n\t*\n\t* @param anchorsOrCtx - Anchor context for column selection (same as in getCanonicalOptions)\n\t* @param predicateOrSelectors - Predicate or selectors for filtering columns (same as in getCanonicalOptions)\n\t* @param opts - Optional configuration for label generation and data waiting\n\t* @returns A PFrameHandle for the created PFrame, or undefined if any required data is missing\n\t*/\n\tgetAnchoredPColumns(anchorsOrCtx, predicateOrSelectors, opts) {\n\t\tconst anchorCtx = this.resolveAnchorCtx(anchorsOrCtx);\n\t\tif (!anchorCtx) return void 0;\n\t\treturn new PColumnCollection().addColumnProvider(this).addAxisLabelProvider(this).getColumns(predicateOrSelectors, {\n\t\t\t...opts,\n\t\t\tanchorCtx\n\t\t});\n\t}\n\t/**\n\t* Calculates anchored identifier options for columns matching a given predicate and returns their\n\t* canonicalized representations.\n\t*\n\t* This function filters column specifications from the result pool that match the provided predicate,\n\t* creates a standardized AnchorCtx from the provided anchors, and generates a list of label-value\n\t* pairs for UI components (like dropdowns).\n\t*\n\t* @param anchorsOrCtx - Either:\n\t* - An existing AnchorCtx instance\n\t* - A record mapping anchor IDs to PColumnSpec objects\n\t* - A record mapping anchor IDs to PlRef objects (which will be resolved to PColumnSpec)\n\t* @param predicateOrSelectors - Either:\n\t* - A predicate function that takes a PColumnSpec and returns a boolean.\n\t* Only specs that return true will be included.\n\t* - An APColumnSelector object for declarative filtering, which will be\n\t* resolved against the provided anchors and matched using matchPColumn.\n\t* - An array of APColumnSelector objects - columns matching ANY selector\n\t* in the array will be included (OR operation).\n\t* @param opts - Optional configuration for label generation:\n\t* - labelOps: Optional configuration for label generation:\n\t* - includeNativeLabel: Whether to include native column labels\n\t* - separator: String to use between label parts (defaults to \" / \")\n\t* - addLabelAsSuffix: Whether to add labels as suffix instead of prefix\n\t* - dontWaitAllData: Whether to skip columns that don't have all data (if not set, will return undefined,\n\t* if at least one column that requires splitting is missing data)\n\t* @returns An array of objects with `label` (display text) and `value` (anchored ID string) properties,\n\t* or undefined if any PlRef resolution fails.\n\t*/\n\tgetCanonicalOptions(anchorsOrCtx, predicateOrSelectors, opts) {\n\t\tconst anchorCtx = this.resolveAnchorCtx(anchorsOrCtx);\n\t\tif (!anchorCtx) return void 0;\n\t\tconst entries = new PColumnCollection().addColumnProvider(this).addAxisLabelProvider(this).getUniversalEntries(predicateOrSelectors, {\n\t\t\t...opts,\n\t\t\tanchorCtx\n\t\t});\n\t\tif (!entries) return void 0;\n\t\treturn entries.map((item) => ({\n\t\t\tvalue: item.id,\n\t\t\tlabel: item.label\n\t\t}));\n\t}\n\t/**\n\t* @deprecated use getData()\n\t*/\n\tgetDataFromResultPool() {\n\t\treturn this.getData();\n\t}\n\tgetData() {\n\t\tconst result = this.ctx.getDataFromResultPool();\n\t\treturn {\n\t\t\tisComplete: result.isComplete,\n\t\t\tentries: result.entries.map((e) => ({\n\t\t\t\tref: e.ref,\n\t\t\t\tobj: {\n\t\t\t\t\t...e.obj,\n\t\t\t\t\tdata: new TreeNodeAccessor(e.obj.data, [e.ref.blockId, e.ref.name])\n\t\t\t\t}\n\t\t\t}))\n\t\t};\n\t}\n\t/**\n\t* @deprecated use getDataWithErrors()\n\t*/\n\tgetDataWithErrorsFromResultPool() {\n\t\treturn this.getDataWithErrors();\n\t}\n\tgetDataWithErrors() {\n\t\tconst result = this.ctx.getDataWithErrorsFromResultPool();\n\t\treturn {\n\t\t\tisComplete: result.isComplete,\n\t\t\tentries: result.entries.map((e) => ({\n\t\t\t\tref: e.ref,\n\t\t\t\tobj: {\n\t\t\t\t\t...e.obj,\n\t\t\t\t\tdata: mapValueInVOE(e.obj.data, (handle) => new TreeNodeAccessor(handle, [e.ref.blockId, e.ref.name]))\n\t\t\t\t}\n\t\t\t}))\n\t\t};\n\t}\n\t/**\n\t* @deprecated use getSpecs()\n\t*/\n\tgetSpecsFromResultPool() {\n\t\treturn this.getSpecs();\n\t}\n\tgetSpecs() {\n\t\treturn this.ctx.getSpecsFromResultPool();\n\t}\n\t/**\n\t* @param ref a Ref\n\t* @returns data associated with the ref\n\t*/\n\tgetDataByRef(ref) {\n\t\tif (typeof this.ctx.getDataFromResultPoolByRef === \"undefined\") return this.getData().entries.find((f) => f.ref.blockId === ref.blockId && f.ref.name === ref.name)?.obj;\n\t\tconst data = this.ctx.getDataFromResultPoolByRef(ref.blockId, ref.name);\n\t\tif (!data) return void 0;\n\t\treturn mapPObjectData(data, (handle) => new TreeNodeAccessor(handle, [ref.blockId, ref.name]));\n\t}\n\t/**\n\t* Returns data associated with the ref ensuring that it is a p-column.\n\t* @param ref a Ref\n\t* @returns p-column associated with the ref\n\t*/\n\tgetPColumnByRef(ref) {\n\t\tconst data = this.getDataByRef(ref);\n\t\tif (!data) return void 0;\n\t\treturn ensurePColumn(data);\n\t}\n\t/**\n\t* Returns spec associated with the ref ensuring that it is a p-column spec.\n\t* @param ref a Ref\n\t* @returns p-column spec associated with the ref\n\t*/\n\tgetPColumnSpecByRef(ref) {\n\t\tconst spec = this.getSpecByRef(ref);\n\t\tif (!spec) return void 0;\n\t\tif (!isPColumnSpec(spec)) throw new Error(`not a PColumn spec (kind = ${spec.kind})`);\n\t\treturn spec;\n\t}\n\t/**\n\t* @param ref a Ref\n\t* @returns object spec associated with the ref\n\t*/\n\tgetSpecByRef(ref) {\n\t\treturn this.ctx.getSpecFromResultPoolByRef(ref.blockId, ref.name);\n\t}\n\t/**\n\t* @param spec object specification\n\t* @returns array of data objects with compatible specs\n\t* @deprecated delete this method after Jan 1, 2025\n\t*/\n\tfindDataWithCompatibleSpec(spec) {\n\t\tconst result = [];\n\t\tout: for (const data of this.getData().entries) {\n\t\t\tif (!isPColumnSpec(data.obj.spec)) continue;\n\t\t\tconst oth = data.obj.spec;\n\t\t\tif (spec.name !== oth.name) continue;\n\t\t\tif (spec.valueType !== oth.valueType) continue;\n\t\t\tif (spec.axesSpec.length !== oth.axesSpec.length) continue;\n\t\t\tif (!matchDomain(spec.domain, oth.domain)) continue;\n\t\t\tif (!matchDomain(spec.contextDomain, oth.contextDomain)) continue;\n\t\t\tfor (let i = 0; i < spec.axesSpec.length; ++i) {\n\t\t\t\tconst qAx = spec.axesSpec[i];\n\t\t\t\tconst tAx = oth.axesSpec[i];\n\t\t\t\tif (qAx.name !== tAx.name) continue out;\n\t\t\t\tif (qAx.type !== tAx.type) continue out;\n\t\t\t\tif (!matchDomain(qAx.domain, tAx.domain)) continue out;\n\t\t\t\tif (!matchDomain(qAx.contextDomain, tAx.contextDomain)) continue out;\n\t\t\t}\n\t\t\tresult.push(data.obj);\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t* Find labels data for a given axis id. It will search for a label column and return its data as a map.\n\t* @returns a map of axis value => label\n\t*/\n\tfindLabels(axis) {\n\t\tconst dataPool = this.getData();\n\t\tfor (const column of dataPool.entries) {\n\t\t\tif (!isPColumn(column.obj)) continue;\n\t\t\tconst spec = column.obj.spec;\n\t\t\tif (spec.name === PColumnName.Label && spec.axesSpec.length === 1 && spec.axesSpec[0].name === axis.name && spec.axesSpec[0].type === axis.type && matchDomain(axis.domain, spec.axesSpec[0].domain) && matchDomain(axis.contextDomain, spec.axesSpec[0].contextDomain)) {\n\t\t\t\tif (column.obj.data.resourceType.name !== \"PColumnData/Json\") throw Error(`Expected JSON column for labels, got: ${column.obj.data.resourceType.name}`);\n\t\t\t\treturn Object.fromEntries(Object.entries(column.obj.data.getDataAsJson().data).map((e) => [JSON.parse(e[0])[0], e[1]]));\n\t\t\t}\n\t\t}\n\t}\n\t/**\n\t* Selects columns based on the provided selectors, returning PColumn objects\n\t* with lazily loaded data.\n\t*\n\t* @param selectors - A predicate function, a single selector, or an array of selectors.\n\t* @returns An array of PColumn objects matching the selectors. Data is loaded on first access.\n\t*/\n\tselectColumns(selectors) {\n\t\tconst predicate = typeof selectors === \"function\" ? selectors : legacyColumnSelectorsToPredicate(selectors);\n\t\treturn this.getSpecs().entries.filter(({ obj: spec }) => {\n\t\t\tif (!isPColumnSpec(spec)) return false;\n\t\t\treturn predicate(spec);\n\t\t}).map(({ ref, obj: spec }) => {\n\t\t\tconst pcolumnSpec = spec;\n\t\t\tlet _cachedData = null;\n\t\t\tconst self = this;\n\t\t\treturn {\n\t\t\t\tid: canonicalize(ref),\n\t\t\t\tspec: pcolumnSpec,\n\t\t\t\tget data() {\n\t\t\t\t\tif (_cachedData !== null) return _cachedData;\n\t\t\t\t\t_cachedData = self.getPColumnByRef(ref)?.data;\n\t\t\t\t\treturn _cachedData;\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\t/**\n\t* Find labels data for a given axis id of a p-column.\n\t* @returns a map of axis value => label\n\t*/\n\tfindLabelsForColumnAxis(column, axisIdx) {\n\t\tconst labels = this.findLabels(column.axesSpec[axisIdx]);\n\t\tif (!labels) return void 0;\n\t\tconst axisKeys = readAnnotation(column, `pl7.app/axisKeys/${axisIdx}`);\n\t\tif (axisKeys !== void 0) {\n\t\t\tconst keys = JSON.parse(axisKeys);\n\t\t\treturn Object.fromEntries(keys.map((key) => {\n\t\t\t\treturn [key, labels[key] ?? \"Unlabelled\"];\n\t\t\t}));\n\t\t} else return labels;\n\t}\n};\n/** Main entry point to the API available within model lambdas (like outputs, sections, etc..) */\nvar RenderCtxBase = class {\n\tctx;\n\tconstructor() {\n\t\tthis.ctx = getCfgRenderCtx();\n\t}\n\tdataCache;\n\tget data() {\n\t\tif (this.dataCache === void 0) {\n\t\t\tconst raw = this.ctx.data;\n\t\t\tconst value = typeof raw === \"function\" ? raw() : raw;\n\t\t\tthis.dataCache = { v: value ? JSON.parse(value) : {} };\n\t\t}\n\t\treturn this.dataCache.v;\n\t}\n\tactiveArgsCache;\n\t/**\n\t* Returns args snapshot the block was executed for (i.e. when \"Run\" button was pressed).\n\t* Returns undefined, if block was never executed or stopped mid-way execution, so that the result was cleared.\n\t* */\n\tget activeArgs() {\n\t\tif (this.activeArgsCache === void 0) {\n\t\t\tconst raw = this.ctx.activeArgs;\n\t\t\tconst value = typeof raw === \"function\" ? raw() : raw;\n\t\t\tthis.activeArgsCache = { v: value ? JSON.parse(value) : void 0 };\n\t\t}\n\t\treturn this.activeArgsCache.v;\n\t}\n\tgetService(name) {\n\t\treturn getService(name);\n\t}\n\tgetNamedAccessor(name) {\n\t\treturn ifDef(this.ctx.getAccessorHandleByName(name), (accessor) => new TreeNodeAccessor(accessor, [name]));\n\t}\n\tget prerun() {\n\t\treturn this.getNamedAccessor(StagingAccessorName);\n\t}\n\tget outputs() {\n\t\treturn this.getNamedAccessor(MainAccessorName);\n\t}\n\tresultPool = new ResultPool();\n\t/**\n\t* Find labels data for a given axis id. It will search for a label column and return its data as a map.\n\t* @returns a map of axis value => label\n\t* @deprecated Use resultPool.findLabels instead\n\t*/\n\tfindLabels(axis) {\n\t\treturn this.resultPool.findLabels(axis);\n\t}\n\tverifyInlineAndExplicitColumnsSupport(columns) {\n\t\tconst hasInlineColumns = columns.some((c) => !(c.data instanceof TreeNodeAccessor) || isDataInfo(c.data));\n\t\tconst inlineColumnsSupport = this.ctx.featureFlags?.inlineColumnsSupport === true;\n\t\tif (hasInlineColumns && !inlineColumnsSupport) throw Error(`Inline or explicit columns not supported`);\n\t}\n\tpatchPTableDef(def) {\n\t\tif (!this.ctx.featureFlags?.pTablePartitionFiltersSupport) def = {\n\t\t\t...def,\n\t\t\tpartitionFilters: [],\n\t\t\tfilters: [...def.partitionFilters, ...def.filters]\n\t\t};\n\t\tif (!this.ctx.featureFlags?.pFrameInSetFilterSupport) def = {\n\t\t\t...def,\n\t\t\tpartitionFilters: patchInSetFilters(def.partitionFilters),\n\t\t\tfilters: patchInSetFilters(def.filters)\n\t\t};\n\t\treturn def;\n\t}\n\tcreatePFrame(def) {\n\t\treturn this.ctx.createPFrame(def.map((c) => transformPColumnData(c)));\n\t}\n\tcreatePTable(def) {\n\t\tlet rawDef;\n\t\tif (\"columns\" in def) rawDef = this.patchPTableDef({\n\t\t\tsrc: {\n\t\t\t\ttype: \"full\",\n\t\t\t\tentries: def.columns.map((c) => ({\n\t\t\t\t\ttype: \"column\",\n\t\t\t\t\tcolumn: c\n\t\t\t\t}))\n\t\t\t},\n\t\t\tpartitionFilters: def.filters ?? [],\n\t\t\tfilters: [],\n\t\t\tsorting: def.sorting ?? []\n\t\t});\n\t\telse rawDef = this.patchPTableDef(def);\n\t\tconst columns = extractAllColumns(rawDef.src);\n\t\tthis.verifyInlineAndExplicitColumnsSupport(columns);\n\t\tif (!allPColumnsReady(columns)) return void 0;\n\t\treturn this.ctx.createPTable(mapPTableDef(rawDef, (po) => transformPColumnData(po)));\n\t}\n\tcreatePTableV2(def) {\n\t\treturn this.ctx.createPTableV2(mapPTableDefV2(def, (po) => transformPColumnData(po)));\n\t}\n\t/** @deprecated scheduled for removal from SDK */\n\tgetBlockLabel(blockId) {\n\t\treturn this.ctx.getBlockLabel(blockId);\n\t}\n\tgetCurrentUnstableMarker() {\n\t\treturn this.ctx.getCurrentUnstableMarker();\n\t}\n\tlogInfo(msg) {\n\t\tthis.ctx.logInfo(msg);\n\t}\n\tlogWarn(msg) {\n\t\tthis.ctx.logWarn(msg);\n\t}\n\tlogError(msg) {\n\t\tthis.ctx.logError(msg);\n\t}\n};\n/** Main entry point to the API available within model lambdas (like outputs, sections, etc..) for v3+ blocks */\nvar BlockRenderCtx = class extends RenderCtxBase {\n\targsCache;\n\tget args() {\n\t\tif (this.argsCache === void 0) {\n\t\t\tconst raw = this.ctx.args;\n\t\t\tconst value = typeof raw === \"function\" ? raw() : raw;\n\t\t\tthis.argsCache = { v: value === void 0 ? void 0 : JSON.parse(value) };\n\t\t}\n\t\treturn this.argsCache.v;\n\t}\n};\n/** Render context for legacy v1/v2 blocks - provides backward compatibility */\nvar RenderCtxLegacy = class extends RenderCtxBase {\n\targsCache;\n\tget args() {\n\t\tif (this.argsCache === void 0) {\n\t\t\tconst raw = this.ctx.args;\n\t\t\tconst value = typeof raw === \"function\" ? raw() : raw;\n\t\t\tthis.argsCache = { v: JSON.parse(value) };\n\t\t}\n\t\treturn this.argsCache.v;\n\t}\n\tuiStateCache;\n\tget uiState() {\n\t\tif (this.uiStateCache === void 0) {\n\t\t\tconst raw = this.ctx.uiState;\n\t\t\tconst value = typeof raw === \"function\" ? raw() : raw;\n\t\t\tthis.uiStateCache = { v: value ? JSON.parse(value) : {} };\n\t\t}\n\t\treturn this.uiStateCache.v;\n\t}\n};\n/**\n* Render context for plugin output functions.\n* Reads plugin data from blockStorage and derives params from pre-wrapped input callbacks.\n*\n* Parameterized on the factory-like phantom F so that getPluginData returns\n* InferFactoryData<F> directly — no casts needed for the data getter.\n*\n* @typeParam F - PluginFactoryLike phantom carrying data/params/outputs types\n*/\nvar PluginRenderCtx = class extends RenderCtxBase {\n\thandle;\n\twrappedInputs;\n\tconstructor(handle, wrappedInputs) {\n\t\tsuper();\n\t\tthis.handle = handle;\n\t\tthis.wrappedInputs = wrappedInputs;\n\t}\n\tpluginDataCache;\n\t/** Plugin's persistent data from blockStorage.__plugins.{pluginId}.__data */\n\tget data() {\n\t\tif (this.pluginDataCache === void 0) this.pluginDataCache = { v: getPluginData(parseJson(this.ctx.blockStorage()), this.handle) };\n\t\treturn this.pluginDataCache.v;\n\t}\n\tparamsCache;\n\t/** Params derived from block context via pre-wrapped input callbacks */\n\tget params() {\n\t\tif (this.paramsCache === void 0) {\n\t\t\tconst result = {};\n\t\t\tfor (const [key, fn] of Object.entries(this.wrappedInputs)) result[key] = fn();\n\t\t\tthis.paramsCache = { v: result };\n\t\t}\n\t\treturn this.paramsCache.v;\n\t}\n};\n//#endregion\nexport { BlockRenderCtx, PluginRenderCtx, RenderCtxBase, RenderCtxLegacy, ResultPool };\n\n//# sourceMappingURL=api.js.map","//#region package.json\nvar version = \"1.75.5\";\n//#endregion\nexport { version };\n\n//# sourceMappingURL=package.js.map","import { version } from \"./package.js\";\n//#region src/version.ts\nconst PlatformaSDKVersion = version;\nconst CurrentSdkInfo = { sdkVersion: PlatformaSDKVersion };\n//#endregion\nexport { CurrentSdkInfo, PlatformaSDKVersion };\n\n//# sourceMappingURL=version.js.map","//#region src/bconfig/types.ts\nfunction isConfigLambda(cfgOrFh) {\n\treturn cfgOrFh.__renderLambda === true;\n}\n//#endregion\nexport { isConfigLambda };\n\n//# sourceMappingURL=types.js.map","import { BlockStorageFacadeHandles } from \"../block_storage_facade.js\";\nimport { isConfigLambda } from \"./types.js\";\nimport { extractConfigGeneric } from \"@milaboratories/pl-model-common\";\n//#region src/bconfig/normalization.ts\nfunction downgradeCfgOrLambda(data) {\n\tif (data === void 0) return void 0;\n\tif (isConfigLambda(data)) return data.handle;\n\treturn data;\n}\nfunction extractConfig(cfg) {\n\tconst config = extractConfigGeneric(cfg);\n\tif (config.configVersion === 4 && Object.keys(config.blockLifecycleCallbacks).length === 0) config.blockLifecycleCallbacks = BlockStorageFacadeHandles;\n\treturn config;\n}\n//#endregion\nexport { downgradeCfgOrLambda, extractConfig };\n\n//# sourceMappingURL=normalization.js.map","import { DataModelBuilder } from \"./block_migrations.js\";\nimport { DATA_MODEL_LEGACY_VERSION } from \"./block_storage.js\";\n//#region src/plugin_model.ts\n/** Symbol for internal builder creation method */\nconst FROM_BUILDER = Symbol(\"fromBuilder\");\n/** Symbol for internal plugin model creation — not accessible to external consumers */\nconst CREATE_PLUGIN_MODEL = Symbol(\"createPluginModel\");\n/** Sentinel for PluginInstance without transferAt — no transfer possible. */\nconst NO_TRANSFER_VERSION = \"\";\n/**\n* Plugin data model with typed migration chain and config-aware initialization.\n*\n* @typeParam Data - Current (latest) plugin data type\n* @typeParam Versions - Map of version keys to their data types (accumulated by the chain)\n* @typeParam Config - Config type passed to init function (undefined if none)\n*/\nvar PluginDataModel = class PluginDataModel {\n\tdataModel;\n\tconfigInitFn;\n\tconstructor(dataModel, configInitFn) {\n\t\tthis.dataModel = dataModel;\n\t\tthis.configInitFn = configInitFn;\n\t}\n\t/** @internal */\n\tstatic [FROM_BUILDER](dataModel, configInitFn) {\n\t\treturn new PluginDataModel(dataModel, configInitFn);\n\t}\n\t/** Create fresh data with optional config. */\n\tgetDefaultData(config) {\n\t\tconst data = this.configInitFn(config);\n\t\treturn {\n\t\t\tversion: this.dataModel.version,\n\t\t\tdata\n\t\t};\n\t}\n};\n/**\n* Builder for creating PluginDataModel with type-safe migrations.\n* Mirrors DataModelBuilder — same .from(), .migrate(), .recover(), .init() chain.\n*\n* @example\n* const pluginData = new PluginDataModelBuilder()\n* .from<TableData>(\"v1\")\n* .migrate<FilteredTableData>(\"v2\", (v1) => ({ ...v1, filters: [] }))\n* .init<TableConfig>((config?) => ({\n* state: createDefaultState(config?.ops),\n* filters: [],\n* }));\n*/\nvar PluginDataModelBuilder = class {\n\tfrom(version) {\n\t\treturn PluginDataModelInitialChain[FROM_BUILDER]({\n\t\t\tinitialVersion: version,\n\t\t\tmigrations: []\n\t\t});\n\t}\n};\n/**\n* Chain returned by .migrate(). Supports .migrate(), .recover(), .init().\n* No .upgradeLegacy() — that is only available on the initial chain.\n*/\nvar PluginDataModelChain = class PluginDataModelChain {\n\tconstructor(state) {\n\t\tthis.state = state;\n\t}\n\t/** @internal */\n\tstatic [FROM_BUILDER](state) {\n\t\treturn new PluginDataModelChain(state);\n\t}\n\t/**\n\t* Add a migration step transforming data from the current version to the next.\n\t*/\n\tmigrate(version, fn) {\n\t\treturn PluginDataModelChain[FROM_BUILDER]({\n\t\t\t...this.state,\n\t\t\tmigrations: [...this.state.migrations, {\n\t\t\t\ttoVersion: version,\n\t\t\t\tfn\n\t\t\t}]\n\t\t});\n\t}\n\t/**\n\t* Set a recovery handler for unknown or legacy versions.\n\t* Can only be called once — the returned chain has no recover() method.\n\t*/\n\trecover(fn) {\n\t\treturn PluginDataModelWithRecover[FROM_BUILDER]({\n\t\t\t...this.state,\n\t\t\trecoverFn: fn,\n\t\t\trecoverAtIndex: this.state.migrations.length\n\t\t});\n\t}\n\t/** Finalize the PluginDataModel. */\n\tinit(fn) {\n\t\treturn buildPluginDataModel(this.state, fn);\n\t}\n};\n/**\n* Initial chain returned by new PluginDataModelBuilder().from().\n* Extends PluginDataModelChain with .upgradeLegacy() — available only before\n* any .migrate() calls, matching the block's DataModelInitialChain pattern.\n*/\nvar PluginDataModelInitialChain = class PluginDataModelInitialChain extends PluginDataModelChain {\n\t/** @internal */\n\tstatic [FROM_BUILDER](state) {\n\t\treturn new PluginDataModelInitialChain(state);\n\t}\n\t/**\n\t* Handle data from a previous plugin type occupying this slot.\n\t* Prepends a migration from DATA_MODEL_LEGACY_VERSION to the initial version.\n\t* When a plugin type changes, the old data arrives with DATA_MODEL_LEGACY_VERSION —\n\t* this function transforms it into the initial version, then the normal chain runs.\n\t*\n\t* Must be called right after .from() — not available after .migrate().\n\t* Mutually exclusive with recover().\n\t*\n\t* @param fn - Transform from old plugin's raw data to this plugin's initial data type\n\t*/\n\tupgradeLegacy(fn) {\n\t\treturn PluginDataModelWithRecover[FROM_BUILDER]({\n\t\t\t...this.state,\n\t\t\tmigrations: [{\n\t\t\t\ttoVersion: this.state.initialVersion,\n\t\t\t\tfn\n\t\t\t}, ...this.state.migrations],\n\t\t\tinitialVersion: DATA_MODEL_LEGACY_VERSION\n\t\t});\n\t}\n};\n/**\n* Chain after .recover() — supports .migrate(), .init(). No second recover().\n*/\nvar PluginDataModelWithRecover = class PluginDataModelWithRecover {\n\tconstructor(state) {\n\t\tthis.state = state;\n\t}\n\t/** @internal */\n\tstatic [FROM_BUILDER](state) {\n\t\treturn new PluginDataModelWithRecover(state);\n\t}\n\tmigrate(version, fn) {\n\t\treturn PluginDataModelWithRecover[FROM_BUILDER]({\n\t\t\t...this.state,\n\t\t\tmigrations: [...this.state.migrations, {\n\t\t\t\ttoVersion: version,\n\t\t\t\tfn\n\t\t\t}]\n\t\t});\n\t}\n\tinit(fn) {\n\t\treturn buildPluginDataModel(this.state, fn);\n\t}\n};\n/**\n* Builds a PluginDataModel by replaying the stored chain state through DataModelBuilder.\n* @internal\n*/\nfunction buildPluginDataModel(state, configInitFn) {\n\tlet chain = new DataModelBuilder().from(state.initialVersion);\n\tfor (let i = 0; i < state.migrations.length; i++) {\n\t\tif (state.recoverFn !== void 0 && state.recoverAtIndex === i) chain = chain.recover(state.recoverFn);\n\t\tchain = chain.migrate(state.migrations[i].toVersion, state.migrations[i].fn);\n\t}\n\tif (state.recoverFn !== void 0 && state.recoverAtIndex === state.migrations.length) chain = chain.recover(state.recoverFn);\n\tconst dataModel = chain.init(() => configInitFn());\n\treturn PluginDataModel[FROM_BUILDER](dataModel, configInitFn);\n}\n/**\n* A named plugin instance created by `factory.create({ pluginId, ... })`.\n* Passed to both `.transfer()` (on migration chain) and `.plugin()` (on BlockModelV3).\n* Implements TransferTarget so the migration chain can accept it.\n*\n* @typeParam Id - Plugin instance ID literal type\n* @typeParam Data - Plugin data type\n* @typeParam Params - Plugin params type\n* @typeParam Outputs - Plugin outputs type\n* @typeParam TransferData - Type of data entering the plugin via transfer (never if no transfer)\n*/\nvar PluginInstance = class PluginInstance {\n\tid;\n\ttransferVersion;\n\t/** @internal Phantom for type inference; never set at runtime. */\n\t__instanceTypes;\n\t/** Bound closure that creates the PluginModel. Config is captured at factory.create() time. */\n\tcreatePluginModel;\n\tconstructor(id, createPluginModel, transferVersion) {\n\t\tthis.id = id;\n\t\tthis.createPluginModel = createPluginModel;\n\t\tthis.transferVersion = transferVersion;\n\t}\n\t/** @internal Accepts concrete Config — binds it into a closure, avoiding Config variance issues. */\n\tstatic [FROM_BUILDER](id, factory, transferVersion, config) {\n\t\treturn new PluginInstance(id, () => factory[CREATE_PLUGIN_MODEL](config), transferVersion);\n\t}\n\t/** @internal Create a PluginModel from this instance. Used by BlockModelV3.plugin(). */\n\t[CREATE_PLUGIN_MODEL]() {\n\t\treturn this.createPluginModel();\n\t}\n};\n/**\n* Configured plugin instance returned by PluginModelFactory[CREATE_PLUGIN_MODEL]().\n* Contains the plugin's name, data model, and output definitions.\n*/\nvar PluginModel = class PluginModel {\n\t/** Globally unique plugin name */\n\tname;\n\t/** Data model instance for this plugin */\n\tdataModel;\n\t/** Output definitions - functions that compute outputs from plugin context */\n\toutputs;\n\t/** Per-output flags (e.g. withStatus) */\n\toutputFlags;\n\t/** Feature flags declared by this plugin */\n\tfeatureFlags;\n\t/** Create fresh default data. Config (if any) is captured at creation time. */\n\tgetDefaultData;\n\tconstructor(options) {\n\t\tthis.name = options.name;\n\t\tthis.dataModel = options.dataModel;\n\t\tthis.outputs = options.outputs;\n\t\tthis.outputFlags = options.outputFlags;\n\t\tthis.featureFlags = options.featureFlags;\n\t\tthis.getDefaultData = options.getDefaultData;\n\t}\n\t/**\n\t* Internal method for creating PluginModel from factory.\n\t* Uses Symbol key to prevent external access.\n\t* @internal\n\t*/\n\tstatic [FROM_BUILDER](options) {\n\t\treturn new PluginModel(options);\n\t}\n\tstatic define(options) {\n\t\tif (options.data instanceof PluginDataModel) {\n\t\t\tconst pdm = options.data;\n\t\t\treturn PluginModelInitialBuilder.create({\n\t\t\t\tname: options.name,\n\t\t\t\tdataFn: () => pdm.dataModel,\n\t\t\t\tgetDefaultDataFn: (config) => pdm.getDefaultData(config),\n\t\t\t\tfeatureFlags: options.featureFlags\n\t\t\t});\n\t\t}\n\t\treturn PluginModelInitialBuilder.create({\n\t\t\tname: options.name,\n\t\t\tdataFn: options.data,\n\t\t\tfeatureFlags: options.featureFlags\n\t\t});\n\t}\n};\nvar PluginModelFactory = class PluginModelFactory {\n\tname;\n\tdataFn;\n\tgetDefaultDataFn;\n\toutputs;\n\toutputFlags;\n\tfeatureFlags;\n\tconstructor(options) {\n\t\tthis.name = options.name;\n\t\tthis.dataFn = options.dataFn;\n\t\tthis.getDefaultDataFn = options.getDefaultDataFn;\n\t\tthis.outputs = options.outputs;\n\t\tthis.outputFlags = options.outputFlags;\n\t\tthis.featureFlags = options.featureFlags;\n\t}\n\t/** @internal */\n\tstatic [FROM_BUILDER](options) {\n\t\treturn new PluginModelFactory(options);\n\t}\n\tcreate(options) {\n\t\tconst transferVersion = options.transferAt ?? NO_TRANSFER_VERSION;\n\t\treturn PluginInstance[FROM_BUILDER](options.pluginId, this, transferVersion, options.config);\n\t}\n\t/** @internal Create a PluginModel from config. Config is captured in getDefaultData closure. */\n\t[CREATE_PLUGIN_MODEL](config) {\n\t\tconst dataModel = this.dataFn(config);\n\t\tconst getDefaultDataFn = this.getDefaultDataFn;\n\t\treturn PluginModel[FROM_BUILDER]({\n\t\t\tname: this.name,\n\t\t\tdataModel,\n\t\t\toutputs: this.outputs,\n\t\t\toutputFlags: this.outputFlags,\n\t\t\tfeatureFlags: this.featureFlags,\n\t\t\tgetDefaultData: getDefaultDataFn ? () => getDefaultDataFn(config) : () => dataModel.getDefaultData()\n\t\t});\n\t}\n};\n/**\n* Builder for creating PluginType with type-safe output definitions.\n*\n* Use `PluginModel.define()` to create a builder instance.\n*\n* @typeParam Data - Plugin's persistent data type\n* @typeParam Params - Params derived from block's RenderCtx (optional)\n* @typeParam Config - Static configuration passed to plugin factory (optional)\n* @typeParam Outputs - Accumulated output types\n* @typeParam Versions - Version map from PluginDataModel (empty for function-based data)\n*\n* @example\n* const dataTable = PluginModel.define({\n* name: 'dataTable' as PluginName,\n* data: pluginDataModel,\n* })\n* .output('model', (ctx) => createTableModel(ctx))\n* .build();\n*/\nvar PluginModelBuilder = class PluginModelBuilder {\n\tname;\n\tdataFn;\n\tgetDefaultDataFn;\n\toutputs;\n\toutputFlags;\n\tfeatureFlags;\n\tconstructor(options) {\n\t\tthis.name = options.name;\n\t\tthis.dataFn = options.dataFn;\n\t\tthis.getDefaultDataFn = options.getDefaultDataFn;\n\t\tthis.outputs = options.outputs ?? {};\n\t\tthis.outputFlags = options.outputFlags ?? {};\n\t\tthis.featureFlags = options.featureFlags;\n\t}\n\t/** @internal */\n\tstatic [FROM_BUILDER](options) {\n\t\treturn new PluginModelBuilder(options);\n\t}\n\t/**\n\t* Adds an output to the plugin.\n\t*\n\t* @param key - Output name\n\t* @param fn - Function that computes the output value from plugin context\n\t* @returns PluginModel with the new output added\n\t*\n\t* @example\n\t* .output('model', (ctx) => createModel(ctx.params.columns, ctx.data.state))\n\t* .output('isReady', (ctx) => ctx.params.columns !== undefined)\n\t*/\n\toutput(key, fn) {\n\t\treturn new PluginModelBuilder({\n\t\t\tname: this.name,\n\t\t\tdataFn: this.dataFn,\n\t\t\tgetDefaultDataFn: this.getDefaultDataFn,\n\t\t\tfeatureFlags: this.featureFlags,\n\t\t\toutputs: {\n\t\t\t\t...this.outputs,\n\t\t\t\t[key]: fn\n\t\t\t},\n\t\t\toutputFlags: {\n\t\t\t\t...this.outputFlags,\n\t\t\t\t[key]: { withStatus: false }\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Adds an output wrapped with status information to the plugin.\n\t*\n\t* The UI receives the full {@link OutputWithStatus} object instead of an unwrapped value,\n\t* allowing it to distinguish between pending, success, and error states.\n\t*\n\t* @param key - Output name\n\t* @param fn - Function that computes the output value from plugin context\n\t* @returns PluginModel with the new status-wrapped output added\n\t*\n\t* @example\n\t* .outputWithStatus('table', (ctx) => {\n\t* const pCols = ctx.params.pFrame?.getPColumns();\n\t* if (pCols === undefined) return undefined;\n\t* return createPlDataTableV2(ctx, pCols, ctx.data.tableState);\n\t* })\n\t*/\n\toutputWithStatus(key, fn) {\n\t\treturn new PluginModelBuilder({\n\t\t\tname: this.name,\n\t\t\tdataFn: this.dataFn,\n\t\t\tgetDefaultDataFn: this.getDefaultDataFn,\n\t\t\tfeatureFlags: this.featureFlags,\n\t\t\toutputs: {\n\t\t\t\t...this.outputs,\n\t\t\t\t[key]: fn\n\t\t\t},\n\t\t\toutputFlags: {\n\t\t\t\t...this.outputFlags,\n\t\t\t\t[key]: { withStatus: true }\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Finalizes the plugin definition and returns a PluginFactory.\n\t*\n\t* @returns Plugin factory that creates named plugin instances via .create()\n\t*\n\t* @example\n\t* const myPlugin = PluginModel.define({ ... })\n\t* .output('value', (ctx) => ctx.data.value)\n\t* .build();\n\t*\n\t* // Create a named instance:\n\t* const table = myPlugin.create({ pluginId: 'mainTable', config: { ... } });\n\t*/\n\tbuild() {\n\t\treturn PluginModelFactory[FROM_BUILDER]({\n\t\t\tname: this.name,\n\t\t\tdataFn: this.dataFn,\n\t\t\tgetDefaultDataFn: this.getDefaultDataFn,\n\t\t\toutputs: this.outputs,\n\t\t\toutputFlags: this.outputFlags,\n\t\t\tfeatureFlags: this.featureFlags\n\t\t});\n\t}\n};\n/**\n* Initial builder returned by PluginModel.define(). Extends PluginModelBuilder with .params().\n* Once .params() or .output() is called, transitions to PluginModelBuilder (no second .params()).\n*/\nvar PluginModelInitialBuilder = class PluginModelInitialBuilder extends PluginModelBuilder {\n\t/** @internal */\n\tstatic create(options) {\n\t\treturn new PluginModelInitialBuilder(options);\n\t}\n\t/**\n\t* Sets the Params type for this plugin — the shape of data derived from the block's\n\t* render context and passed into plugin output functions via `ctx.params`.\n\t* Must be called before .output(). Available only on the initial builder.\n\t*\n\t* @example\n\t* .params<{ title: string }>()\n\t* .output('displayText', (ctx) => ctx.params.title)\n\t*/\n\tparams() {\n\t\treturn PluginModelBuilder[FROM_BUILDER]({\n\t\t\tname: this.name,\n\t\t\tdataFn: this.dataFn,\n\t\t\tgetDefaultDataFn: this.getDefaultDataFn,\n\t\t\tfeatureFlags: this.featureFlags\n\t\t});\n\t}\n};\n//#endregion\nexport { CREATE_PLUGIN_MODEL, PluginDataModel, PluginDataModelBuilder, PluginInstance, PluginModel };\n\n//# sourceMappingURL=plugin_model.js.map","import { BLOCK_STORAGE_KEY, createBlockStorage, getStorageData, isBlockStorage, migrateBlockStorage, normalizeBlockStorage, updateStorageData } from \"./block_storage.js\";\nimport { stringifyJson } from \"@milaboratories/pl-model-common\";\n//#region src/block_storage_callbacks.ts\n/**\n* BlockStorage Callback Implementations - wired to facade callbacks in BlockModelV3.done().\n*\n* Provides pure functions for storage operations (migration, initialization,\n* args derivation, updates, debug views). Each function takes its dependencies\n* explicitly as parameters.\n*\n* @module block_storage_callbacks\n* @internal\n*/\n/**\n* Normalizes raw storage data and extracts state.\n* Handles all formats:\n* - New BlockStorage format (has discriminator)\n* - Legacy V1/V2 format ({ args, uiState })\n* - Raw V3 state (any other format)\n*\n* @param rawStorage - Raw data from blockStorage field (may be JSON string or object)\n* @returns Object with normalized storage and extracted state\n*/\nfunction normalizeStorage(rawStorage) {\n\tif (rawStorage === void 0 || rawStorage === null) return {\n\t\tstorage: createBlockStorage({}),\n\t\tdata: {}\n\t};\n\tlet parsed = rawStorage;\n\tif (typeof rawStorage === \"string\") try {\n\t\tparsed = JSON.parse(rawStorage);\n\t} catch {\n\t\treturn {\n\t\t\tstorage: createBlockStorage(rawStorage),\n\t\t\tdata: rawStorage\n\t\t};\n\t}\n\tif (isBlockStorage(parsed)) {\n\t\tconst storage = normalizeBlockStorage(parsed);\n\t\treturn {\n\t\t\tstorage,\n\t\t\tdata: getStorageData(storage)\n\t\t};\n\t}\n\tif (isLegacyModelV1ApiFormat(parsed)) return {\n\t\tstorage: createBlockStorage(parsed),\n\t\tdata: parsed\n\t};\n\treturn {\n\t\tstorage: createBlockStorage(parsed),\n\t\tdata: parsed\n\t};\n}\n/**\n* Applies a state update to existing storage.\n* Used when setData is called from the frontend.\n*\n* @param currentStorageJson - Current storage as JSON string (must be defined)\n* @param payload - Update payload with operation type and value\n* @returns Updated storage as StringifiedJson<BlockStorage>\n*/\nfunction applyStorageUpdate(currentStorageJson, payload) {\n\tconst { storage: currentStorage } = normalizeStorage(currentStorageJson);\n\treturn stringifyJson(updateStorageData(currentStorage, payload));\n}\n/**\n* Checks if data is in legacy Model API v1 format.\n* Legacy format has { args, uiState? } at top level without the BlockStorage discriminator.\n*/\nfunction isLegacyModelV1ApiFormat(data) {\n\tif (data === null || typeof data !== \"object\") return false;\n\tif (isBlockStorage(data)) return false;\n\treturn \"args\" in data;\n}\n/**\n* Gets storage debug view from raw storage data.\n* Returns structured debug info about the storage state.\n*\n* @param rawStorage - Raw data from blockStorage field (may be JSON string or object)\n* @returns JSON string with storage debug view\n*/\nfunction getStorageDebugView(rawStorage) {\n\tconst { storage } = normalizeStorage(rawStorage);\n\treturn stringifyJson({\n\t\tdataVersion: storage.__dataVersion,\n\t\tdata: storage.__data\n\t});\n}\n/**\n* Runs storage migration using the provided hooks.\n* This is the main entry point for the middle layer to trigger migrations.\n*\n* @param currentStorageJson - Current storage as JSON string (or undefined)\n* @param hooks - Migration dependencies (block/plugin data migration and creation functions)\n* @returns MigrationResult\n*/\nfunction migrateStorage(currentStorageJson, hooks) {\n\tconst { storage: currentStorage } = normalizeStorage(currentStorageJson);\n\tconst newPluginRegistry = hooks.getPluginRegistry();\n\tconst migrationResult = migrateBlockStorage(currentStorage, {\n\t\tmigrateBlockData: hooks.migrateBlockData,\n\t\tmigratePluginData: hooks.migratePluginData,\n\t\tnewPluginRegistry,\n\t\tcreatePluginData: hooks.createPluginData\n\t});\n\tif (!migrationResult.success) return { error: `Migration failed at '${migrationResult.failedAt}': ${migrationResult.error}` };\n\tconst oldVersion = currentStorage.__dataVersion;\n\tconst newVersion = migrationResult.storage.__dataVersion;\n\tconst info = oldVersion === newVersion ? `No migration needed (${oldVersion})` : `Migrated ${oldVersion} -> ${newVersion}`;\n\treturn {\n\t\tnewStorageJson: stringifyJson(migrationResult.storage),\n\t\tinfo\n\t};\n}\n/**\n* Creates complete initial storage (block data + all plugin data) atomically.\n*\n* @param hooks - Dependencies for creating initial block and plugin data\n* @returns Initial storage as branded JSON string\n* @throws If initialDataFn or createPluginData throws\n*/\nfunction createInitialStorage(hooks) {\n\tconst blockDefault = hooks.getDefaultBlockData();\n\tconst pluginRegistry = hooks.getPluginRegistry();\n\tconst plugins = {};\n\tfor (const handle of Object.keys(pluginRegistry)) {\n\t\tconst initial = hooks.createPluginData(handle);\n\t\tplugins[handle] = {\n\t\t\t__dataVersion: initial.version,\n\t\t\t__data: initial.data\n\t\t};\n\t}\n\treturn stringifyJson({\n\t\t[BLOCK_STORAGE_KEY]: \"v1\",\n\t\t__dataVersion: blockDefault.version,\n\t\t__data: blockDefault.data,\n\t\t__pluginRegistry: pluginRegistry,\n\t\t__plugins: plugins\n\t});\n}\n/**\n* Derives args from storage using the provided args function.\n* This extracts data from storage and passes it to the block's args() function.\n*\n* @param storageJson - Storage as JSON string\n* @param argsFunction - The block's args derivation function\n* @returns ArgsDeriveResult with derived args or error\n*/\nfunction deriveArgsFromStorage(storageJson, argsFunction) {\n\tconst { data } = normalizeStorage(storageJson);\n\ttry {\n\t\treturn { value: argsFunction(data) };\n\t} catch (e) {\n\t\treturn { error: `args() threw: ${e instanceof Error ? e.message : String(e)}` };\n\t}\n}\n/**\n* Derives prerunArgs from storage.\n* Uses prerunArgsFunction if provided, otherwise falls back to argsFunction.\n*\n* @param storageJson - Storage as JSON string\n* @param argsFunction - The block's args derivation function (fallback)\n* @param prerunArgsFunction - Optional prerun args derivation function\n* @returns ArgsDeriveResult with derived prerunArgs or error\n*/\nfunction derivePrerunArgsFromStorage(storageJson, argsFunction, prerunArgsFunction) {\n\tconst { data } = normalizeStorage(storageJson);\n\tif (prerunArgsFunction) try {\n\t\treturn { value: prerunArgsFunction(data) };\n\t} catch (e) {\n\t\treturn { error: `prerunArgs() threw: ${e instanceof Error ? e.message : String(e)}` };\n\t}\n\ttry {\n\t\treturn { value: argsFunction(data) };\n\t} catch (e) {\n\t\treturn { error: `args() threw (fallback): ${e instanceof Error ? e.message : String(e)}` };\n\t}\n}\n//#endregion\nexport { applyStorageUpdate, createInitialStorage, deriveArgsFromStorage, derivePrerunArgsFromStorage, getStorageDebugView, migrateStorage };\n\n//# sourceMappingURL=block_storage_callbacks.js.map","import { pluginOutputKey } from \"./plugin_handle.js\";\nimport { createAndRegisterRenderLambda, getPlatformaInstance, isInUI } from \"./internal.js\";\nimport { BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, registerFacadeCallbacks } from \"./block_storage_facade.js\";\nimport { BLOCK_SERVICE_FLAGS } from \"./services/block_services.js\";\nimport { BlockRenderCtx, PluginRenderCtx } from \"./render/api.js\";\nimport \"./render/index.js\";\nimport { PlatformaSDKVersion } from \"./version.js\";\nimport { isConfigLambda } from \"./bconfig/types.js\";\nimport { downgradeCfgOrLambda } from \"./bconfig/normalization.js\";\nimport \"./bconfig/index.js\";\nimport { CREATE_PLUGIN_MODEL } from \"./plugin_model.js\";\nimport { applyStorageUpdate, createInitialStorage, deriveArgsFromStorage, derivePrerunArgsFromStorage, getStorageDebugView, migrateStorage } from \"./block_storage_callbacks.js\";\nimport { REQUIRES_PFRAMES_VERSION } from \"@milaboratories/pl-model-common\";\n//#region src/block_model.ts\n/**\n* Merges two feature flag objects with type-aware logic:\n* - `supports*` (boolean): OR — `true` if either side is `true`\n* - `requires*` (numeric): MAX — take the higher version requirement\n*/\nfunction mergeFeatureFlags(base, override) {\n\tconst result = { ...base };\n\tfor (const [key, value] of Object.entries(override)) {\n\t\tif (value === void 0) continue;\n\t\tconst existing = result[key];\n\t\tif (typeof value === \"boolean\") result[key] = typeof existing === \"boolean\" && existing || value;\n\t\telse if (typeof value === \"number\") result[key] = Math.max(typeof existing === \"number\" ? existing : 0, value);\n\t}\n\treturn result;\n}\n/** Main entry point that each block should use in it's \"config\" module. Don't forget\n* to call {@link done()} at the end of configuration. Value returned by this builder must be\n* exported as constant with name \"platforma\" from the \"config\" module.\n* API version is 3 (for UI) and 2 (for model) */\nvar BlockModelV3 = class BlockModelV3 {\n\tconstructor(config) {\n\t\tthis.config = config;\n\t}\n\tstatic FEATURE_FLAGS = {\n\t\tsupportsLazyState: true,\n\t\tsupportsPframeQueryRanking: true,\n\t\trequiresUIAPIVersion: 3,\n\t\trequiresModelAPIVersion: 2,\n\t\trequiresCreatePTable: 2,\n\t\trequiresPFramesVersion: REQUIRES_PFRAMES_VERSION,\n\t\t...BLOCK_SERVICE_FLAGS\n\t};\n\t/** @deprecated Use FEATURE_FLAGS */\n\tstatic INITIAL_BLOCK_FEATURE_FLAGS = BlockModelV3.FEATURE_FLAGS;\n\t/**\n\t* Creates a new BlockModelV3 builder with the specified data model.\n\t*\n\t* @example\n\t* const dataModel = new DataModelBuilder()\n\t* .from<BlockData>(\"v1\")\n\t* .init(() => ({ numbers: [], labels: [] }));\n\t*\n\t* BlockModelV3.create(dataModel)\n\t* .args((data) => ({ numbers: data.numbers }))\n\t* .sections(() => [{ type: 'link', href: '/', label: 'Main' }])\n\t* .done();\n\t*\n\t* @param dataModel The data model that defines initial data and migrations\n\t*/\n\tstatic create(dataModel) {\n\t\treturn new BlockModelV3({\n\t\t\trenderingMode: \"Heavy\",\n\t\t\tdataModel,\n\t\t\toutputs: {},\n\t\t\tsections: createAndRegisterRenderLambda({\n\t\t\t\thandle: \"sections\",\n\t\t\t\tlambda: () => []\n\t\t\t}, true),\n\t\t\ttitle: void 0,\n\t\t\tsubtitle: void 0,\n\t\t\ttags: void 0,\n\t\t\tenrichmentTargets: void 0,\n\t\t\tfeatureFlags: { ...BlockModelV3.FEATURE_FLAGS },\n\t\t\targsFunction: void 0,\n\t\t\tprerunArgsFunction: void 0,\n\t\t\tplugins: {}\n\t\t});\n\t}\n\toutput(key, cfgOrRf, flags = {}) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\toutputs: {\n\t\t\t\t...this.config.outputs,\n\t\t\t\t[key]: createAndRegisterRenderLambda({\n\t\t\t\t\thandle: `block-output#${key}`,\n\t\t\t\t\tlambda: () => cfgOrRf(new BlockRenderCtx()),\n\t\t\t\t\t...flags\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\t}\n\t/** Shortcut for {@link output} with retentive flag set to true. */\n\tretentiveOutput(key, rf) {\n\t\treturn this.output(key, rf, { retentive: true });\n\t}\n\t/** Shortcut for {@link output} with withStatus flag set to true. */\n\toutputWithStatus(key, rf) {\n\t\treturn this.output(key, rf, { withStatus: true });\n\t}\n\t/**\n\t* Sets a function to derive block args from data.\n\t* This is called during setData to compute the args that will be used for block execution.\n\t*\n\t* @example\n\t* .args<BlockArgs>((data) => ({ numbers: data.numbers }))\n\t*\n\t* @example\n\t* .args<BlockArgs>((data) => {\n\t* if (data.numbers.length === 0) throw new Error('Numbers required'); // block not ready\n\t* return { numbers: data.numbers };\n\t* })\n\t*/\n\targs(lambda) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\targsFunction: lambda\n\t\t});\n\t}\n\t/**\n\t* Sets a function to derive pre-run args from data (optional).\n\t* This is called during setData to compute the args that will be used for staging/pre-run phase.\n\t*\n\t* If not defined, defaults to using the args() function result.\n\t* If defined, uses its return value for the staging / prerun phase.\n\t*\n\t* The staging / prerun phase runs only if currentPrerunArgs differs from the executed\n\t* version of prerunArgs (same comparison logic as currentArgs vs prodArgs).\n\t*\n\t* @example\n\t* .prerunArgs((data) => ({ numbers: data.numbers }))\n\t*\n\t* @example\n\t* .prerunArgs((data) => {\n\t* // Return undefined to skip staging for this block\n\t* if (!data.isReady) return undefined;\n\t* return { numbers: data.numbers };\n\t* })\n\t*/\n\tprerunArgs(fn) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\tprerunArgsFunction: fn\n\t\t});\n\t}\n\t/** Sets the lambda to generate list of sections in the left block overviews panel. */\n\tsections(rf) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\tsections: createAndRegisterRenderLambda({\n\t\t\t\thandle: \"sections\",\n\t\t\t\tlambda: () => rf(new BlockRenderCtx())\n\t\t\t}, true)\n\t\t});\n\t}\n\t/** Sets a rendering function to derive block title, shown for the block in the left blocks-overview panel. */\n\ttitle(rf) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\ttitle: createAndRegisterRenderLambda({\n\t\t\t\thandle: \"title\",\n\t\t\t\tlambda: () => rf(new BlockRenderCtx())\n\t\t\t})\n\t\t});\n\t}\n\tsubtitle(rf) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\tsubtitle: createAndRegisterRenderLambda({\n\t\t\t\thandle: \"subtitle\",\n\t\t\t\tlambda: () => rf(new BlockRenderCtx())\n\t\t\t})\n\t\t});\n\t}\n\ttags(rf) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\ttags: createAndRegisterRenderLambda({\n\t\t\t\thandle: \"tags\",\n\t\t\t\tlambda: () => rf(new BlockRenderCtx())\n\t\t\t})\n\t\t});\n\t}\n\t/** Sets or overrides feature flags for the block. */\n\twithFeatureFlags(flags) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\tfeatureFlags: {\n\t\t\t\t...this.config.featureFlags,\n\t\t\t\t...flags\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Defines how to derive list of upstream references this block is meant to enrich with its exports from block args.\n\t* Influences dependency graph construction.\n\t*/\n\tenriches(lambda) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\tenrichmentTargets: createAndRegisterRenderLambda({\n\t\t\t\thandle: \"enrichmentTargets\",\n\t\t\t\tlambda\n\t\t\t})\n\t\t});\n\t}\n\tplugin(instance, params) {\n\t\tconst pluginId = instance.id;\n\t\tconst plugin = instance[CREATE_PLUGIN_MODEL]();\n\t\tconst resolvedParams = params ?? {};\n\t\tif (pluginId in this.config.plugins) throw new Error(`Plugin '${pluginId}' already registered`);\n\t\tconst registered = {\n\t\t\tmodel: plugin,\n\t\t\tinputs: resolvedParams\n\t\t};\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\tplugins: {\n\t\t\t\t...this.config.plugins,\n\t\t\t\t[pluginId]: registered\n\t\t\t},\n\t\t\tfeatureFlags: mergeFeatureFlags(this.config.featureFlags, plugin.featureFlags ?? {})\n\t\t});\n\t}\n\t/** Renders all provided block settings into a pre-configured platforma API\n\t* instance, that can be used in frontend to interact with block data, and\n\t* other features provided by the platforma to the block.\n\t*\n\t* Type-level check: if there are unconsumed transfers (from `.transfer()` calls\n\t* in the migration chain), this method requires an impossible `never` argument,\n\t* producing a compile error. Register all transferred plugins via `.plugin(instance)`\n\t* before calling `.done()`.\n\t*/\n\tdone(..._) {\n\t\tif (this.config.argsFunction === void 0) throw new Error(\"Args rendering function not set.\");\n\t\tconst apiVersion = 3;\n\t\tconst { plugins } = this.config;\n\t\tconst pluginRegistry = {};\n\t\tconst pluginHandles = Object.keys(plugins);\n\t\tfor (const handle of pluginHandles) pluginRegistry[handle] = plugins[handle].model.name;\n\t\tconst { dataModel, argsFunction, prerunArgsFunction } = this.config;\n\t\tfunction getPlugin(handle) {\n\t\t\tconst plugin = plugins[handle];\n\t\t\tif (!plugin) throw new Error(`Plugin model not found for '${handle}'`);\n\t\t\treturn plugin;\n\t\t}\n\t\tregisterFacadeCallbacks({\n\t\t\t[BlockStorageFacadeCallbacks.StorageApplyUpdate]: applyStorageUpdate,\n\t\t\t[BlockStorageFacadeCallbacks.StorageDebugView]: getStorageDebugView,\n\t\t\t[BlockStorageFacadeCallbacks.StorageMigrate]: (currentStorageJson) => migrateStorage(currentStorageJson, {\n\t\t\t\tmigrateBlockData: (v) => dataModel.migrate(v),\n\t\t\t\tgetPluginRegistry: () => pluginRegistry,\n\t\t\t\tmigratePluginData: (handle, v) => getPlugin(handle).model.dataModel.migrate(v),\n\t\t\t\tcreatePluginData: (handle, transfer) => {\n\t\t\t\t\tif (transfer) return transfer;\n\t\t\t\t\treturn getPlugin(handle).model.getDefaultData();\n\t\t\t\t}\n\t\t\t}),\n\t\t\t[BlockStorageFacadeCallbacks.StorageInitial]: () => createInitialStorage({\n\t\t\t\tgetDefaultBlockData: () => dataModel.getDefaultData(),\n\t\t\t\tgetPluginRegistry: () => pluginRegistry,\n\t\t\t\tcreatePluginData: (handle) => getPlugin(handle).model.getDefaultData()\n\t\t\t}),\n\t\t\t[BlockStorageFacadeCallbacks.ArgsDerive]: (storageJson) => deriveArgsFromStorage(storageJson, argsFunction),\n\t\t\t[BlockStorageFacadeCallbacks.PrerunArgsDerive]: (storageJson) => derivePrerunArgsFromStorage(storageJson, argsFunction, prerunArgsFunction)\n\t\t});\n\t\tconst pluginOutputs = {};\n\t\tfor (const handle of pluginHandles) {\n\t\t\tconst { model, inputs } = plugins[handle];\n\t\t\tconst wrappedInputs = {};\n\t\t\tfor (const [paramKey, paramFn] of Object.entries(inputs)) wrappedInputs[paramKey] = () => paramFn(new BlockRenderCtx());\n\t\t\tconst outputs = model.outputs;\n\t\t\tconst { outputFlags } = model;\n\t\t\tfor (const [outputKey, outputFn] of Object.entries(outputs)) {\n\t\t\t\tconst key = pluginOutputKey(handle, outputKey);\n\t\t\t\tpluginOutputs[key] = createAndRegisterRenderLambda({\n\t\t\t\t\thandle: key,\n\t\t\t\t\tlambda: () => outputFn(new PluginRenderCtx(handle, wrappedInputs)),\n\t\t\t\t\twithStatus: outputFlags[outputKey]?.withStatus\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tconst allOutputs = {\n\t\t\t...this.config.outputs,\n\t\t\t...pluginOutputs\n\t\t};\n\t\tglobalThis.platformaApiVersion = apiVersion;\n\t\tif (!isInUI()) return { config: {\n\t\t\tv4: {\n\t\t\t\tconfigVersion: 4,\n\t\t\t\tmodelAPIVersion: 2,\n\t\t\t\tsdkVersion: PlatformaSDKVersion,\n\t\t\t\trenderingMode: this.config.renderingMode,\n\t\t\t\tsections: this.config.sections,\n\t\t\t\ttitle: this.config.title,\n\t\t\t\tsubtitle: this.config.subtitle,\n\t\t\t\ttags: this.config.tags,\n\t\t\t\toutputs: allOutputs,\n\t\t\t\tenrichmentTargets: this.config.enrichmentTargets,\n\t\t\t\tfeatureFlags: this.config.featureFlags,\n\t\t\t\tblockLifecycleCallbacks: { ...BlockStorageFacadeHandles }\n\t\t\t},\n\t\t\tsdkVersion: PlatformaSDKVersion,\n\t\t\trenderingMode: this.config.renderingMode,\n\t\t\tsections: this.config.sections,\n\t\t\toutputs: Object.fromEntries(Object.entries(this.config.outputs).map(([key, value]) => [key, downgradeCfgOrLambda(value)]))\n\t\t} };\n\t\telse return {\n\t\t\t...getPlatformaInstance({\n\t\t\t\tsdkVersion: PlatformaSDKVersion,\n\t\t\t\tapiVersion\n\t\t\t}),\n\t\t\tblockModelInfo: {\n\t\t\t\toutputs: Object.fromEntries(Object.entries(allOutputs).map(([key, value]) => [key, { withStatus: Boolean(isConfigLambda(value) && value.withStatus) }])),\n\t\t\t\tpluginIds: pluginHandles,\n\t\t\t\tfeatureFlags: this.config.featureFlags\n\t\t\t}\n\t\t};\n\t}\n};\n//#endregion\nexport { BlockModelV3 };\n\n//# sourceMappingURL=block_model.js.map","import { Annotation, LinkerMap, canonicalizeJson, getAxisId, getColumnIdAndSpec, matchAxisId, readAnnotation, stringifyJson } from \"@milaboratories/pl-model-common\";\n//#region src/pframe_utils/axes.ts\n/** Create id for column copy with added keys in axes domains */\nconst colId = (id, domains, contextDomains) => {\n\tlet wid = id.toString();\n\tdomains?.forEach((domain) => {\n\t\tif (domain) for (const [k, v] of Object.entries(domain)) {\n\t\t\twid += k;\n\t\t\twid += v;\n\t\t}\n\t});\n\tcontextDomains?.forEach((contextDomain) => {\n\t\tif (contextDomain) for (const [k, v] of Object.entries(contextDomain)) {\n\t\t\twid += k;\n\t\t\twid += v;\n\t\t}\n\t});\n\treturn wid;\n};\n/** All combinations with 1 key from each list */\nfunction getKeysCombinations(idsLists) {\n\tif (!idsLists.length) return [];\n\tlet result = [[]];\n\tidsLists.forEach((list) => {\n\t\tconst nextResult = [];\n\t\tlist.forEach((key) => {\n\t\t\tnextResult.push(...result.map((resultItem) => [...resultItem, key]));\n\t\t});\n\t\tresult = nextResult;\n\t});\n\treturn result;\n}\nfunction getAvailableWithLinkersAxes(linkerColumns, blockAxes) {\n\tconst availableAxes = LinkerMap.fromColumns(linkerColumns.map(getColumnIdAndSpec)).getReachableByLinkersAxesFromAxesNormalized([...blockAxes.values()], (linkerKeyId, sourceAxisId) => matchAxisId(sourceAxisId, linkerKeyId));\n\treturn new Map(availableAxes.map((axisSpec) => {\n\t\treturn [canonicalizeJson(getAxisId(axisSpec)), axisSpec];\n\t}));\n}\n/** Add columns with fully compatible axes created from partial compatible ones */\nfunction enrichCompatible(blockAxes, columns) {\n\treturn columns.flatMap((column) => getAdditionalColumnsForColumn(blockAxes, column));\n}\nfunction getAdditionalColumnsForColumn(blockAxes, column) {\n\tconst columnAxesIds = column.spec.axesSpec.map(getAxisId);\n\tif (columnAxesIds.every((id) => blockAxes.has(canonicalizeJson(id)))) return [column];\n\tconst secondaryIdsVariants = getKeysCombinations(columnAxesIds.map((id) => {\n\t\tconst result = [];\n\t\tfor (const [_, mainId] of blockAxes) if (matchAxisId(mainId, id) && !matchAxisId(id, mainId)) result.push(mainId);\n\t\treturn result;\n\t}));\n\tconst allAddedDomainValues = /* @__PURE__ */ new Set();\n\tconst addedNotToAllVariantsDomainValues = /* @__PURE__ */ new Set();\n\tconst addedByVariantsDomainValues = secondaryIdsVariants.map((idsList) => {\n\t\tconst addedSet = /* @__PURE__ */ new Set();\n\t\tidsList.map((axisId, idx) => {\n\t\t\tconst d1 = column.spec.axesSpec[idx].domain;\n\t\t\tconst d2 = axisId.domain;\n\t\t\tObject.entries(d2 ?? {}).forEach(([key, value]) => {\n\t\t\t\tif (d1?.[key] === void 0) {\n\t\t\t\t\tconst item = JSON.stringify([key, value]);\n\t\t\t\t\taddedSet.add(item);\n\t\t\t\t\tallAddedDomainValues.add(item);\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst cd1 = column.spec.axesSpec[idx].contextDomain;\n\t\t\tconst cd2 = axisId.contextDomain;\n\t\t\tObject.entries(cd2 ?? {}).forEach(([key, value]) => {\n\t\t\t\tif (cd1?.[key] === void 0) {\n\t\t\t\t\tconst item = JSON.stringify([\"ctx:\" + key, value]);\n\t\t\t\t\taddedSet.add(item);\n\t\t\t\t\tallAddedDomainValues.add(item);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn {\n\t\t\t\t...axisId,\n\t\t\t\tannotations: column.spec.axesSpec[idx].annotations\n\t\t\t};\n\t\t});\n\t\treturn addedSet;\n\t});\n\t[...allAddedDomainValues].forEach((addedPart) => {\n\t\tif (addedByVariantsDomainValues.some((s) => !s.has(addedPart))) addedNotToAllVariantsDomainValues.add(addedPart);\n\t});\n\treturn [column, ...secondaryIdsVariants.map((idsList, idx) => {\n\t\tconst id = colId(column.id, idsList.map((id) => id.domain), idsList.map((id) => id.contextDomain));\n\t\tconst label = readAnnotation(column.spec, Annotation.Label) ?? \"\";\n\t\tconst labelDomainPart = [...addedByVariantsDomainValues[idx]].filter((str) => addedNotToAllVariantsDomainValues.has(str)).sort().map((v) => JSON.parse(v)?.[1]).join(\" / \");\n\t\tconst annotations = {\n\t\t\t...column.spec.annotations,\n\t\t\t[Annotation.Graph.IsVirtual]: stringifyJson(true)\n\t\t};\n\t\tif (label || labelDomainPart) annotations[Annotation.Label] = label && labelDomainPart ? label + \" / \" + labelDomainPart : label + labelDomainPart;\n\t\treturn {\n\t\t\t...column,\n\t\t\tid,\n\t\t\tspec: {\n\t\t\t\t...column.spec,\n\t\t\t\taxesSpec: idsList.map((axisId, idx) => ({\n\t\t\t\t\t...axisId,\n\t\t\t\t\tannotations: column.spec.axesSpec[idx].annotations\n\t\t\t\t})),\n\t\t\t\tannotations\n\t\t\t}\n\t\t};\n\t})];\n}\n//#endregion\nexport { enrichCompatible, getAvailableWithLinkersAxes };\n\n//# sourceMappingURL=axes.js.map","import { PColumnCollection } from \"../render/util/column_collection.js\";\nimport \"../render/index.js\";\nimport { enrichCompatible, getAvailableWithLinkersAxes } from \"./axes.js\";\nimport { canonicalizeJson, getAxisId, getNormalizedAxesList, isLabelColumn, isLinkerColumn, matchAxisId } from \"@milaboratories/pl-model-common\";\n//#region src/pframe_utils/columns.ts\nfunction getAllRelatedColumns(ctx, predicate) {\n\tconst columns = new PColumnCollection();\n\tcolumns.addColumnProvider(ctx.resultPool);\n\tconst allColumns = columns.getColumns(predicate, {\n\t\tdontWaitAllData: true,\n\t\toverrideLabelAnnotation: false\n\t}) ?? [];\n\treturn enrichCompatible(new Map(allColumns.flatMap((column) => getNormalizedAxesList(column.spec.axesSpec)).map((axisSpec) => {\n\t\treturn [canonicalizeJson(getAxisId(axisSpec)), axisSpec];\n\t})), allColumns);\n}\nfunction getRelatedColumns(ctx, { columns: rootColumns, predicate }) {\n\tconst columns = new PColumnCollection();\n\tcolumns.addColumnProvider(ctx.resultPool);\n\tcolumns.addColumns(rootColumns);\n\tconst blockAxes = /* @__PURE__ */ new Map();\n\tconst allAxes = /* @__PURE__ */ new Map();\n\tfor (const c of rootColumns) for (const spec of getNormalizedAxesList(c.spec.axesSpec)) {\n\t\tconst aid = getAxisId(spec);\n\t\tblockAxes.set(canonicalizeJson(aid), spec);\n\t\tallAxes.set(canonicalizeJson(aid), spec);\n\t}\n\tconst availableWithLinkersAxes = getAvailableWithLinkersAxes(columns.getColumns((spec) => predicate(spec) && isLinkerColumn(spec), { dontWaitAllData: true }) ?? [], blockAxes);\n\tfor (const item of availableWithLinkersAxes) {\n\t\tblockAxes.set(...item);\n\t\tallAxes.set(...item);\n\t}\n\tconst blockAxesArr = Array.from(blockAxes.values());\n\tlet compatibleWithoutLabels = (columns.getColumns((spec) => predicate(spec) && spec.axesSpec.some((axisSpec) => {\n\t\tconst axisId = getAxisId(axisSpec);\n\t\treturn blockAxesArr.some((selectorAxisSpec) => matchAxisId(getAxisId(selectorAxisSpec), axisId));\n\t}), {\n\t\tdontWaitAllData: true,\n\t\toverrideLabelAnnotation: false\n\t}) ?? []).filter((column) => !isLabelColumn(column.spec));\n\tfor (const c of compatibleWithoutLabels) for (const spec of getNormalizedAxesList(c.spec.axesSpec)) {\n\t\tconst aid = getAxisId(spec);\n\t\tallAxes.set(canonicalizeJson(aid), spec);\n\t}\n\tconst allAxesArr = Array.from(allAxes.values());\n\tcompatibleWithoutLabels = (columns.getColumns((spec) => predicate(spec) && spec.axesSpec.every((axisSpec) => {\n\t\tconst axisId = getAxisId(axisSpec);\n\t\treturn allAxesArr.some((selectorAxisSpec) => matchAxisId(getAxisId(selectorAxisSpec), axisId));\n\t}), {\n\t\tdontWaitAllData: true,\n\t\toverrideLabelAnnotation: false\n\t}) ?? []).filter((column) => !isLabelColumn(column.spec));\n\tconst compatibleLabels = (columns.getColumns((spec) => predicate(spec) && spec.axesSpec.some((axisSpec) => {\n\t\tconst axisId = getAxisId(axisSpec);\n\t\treturn allAxesArr.some((selectorAxisSpec) => matchAxisId(getAxisId(selectorAxisSpec), axisId));\n\t}), {\n\t\tdontWaitAllData: true,\n\t\toverrideLabelAnnotation: false\n\t}) ?? []).filter((column) => isLabelColumn(column.spec));\n\treturn enrichCompatible(blockAxes, [...compatibleWithoutLabels, ...compatibleLabels]);\n}\n//#endregion\nexport { getAllRelatedColumns, getRelatedColumns };\n\n//# sourceMappingURL=columns.js.map","import \"../pframe_utils/axes.js\";\nimport { getAllRelatedColumns, getRelatedColumns } from \"../pframe_utils/columns.js\";\nimport { Annotation, readAnnotationJson } from \"@milaboratories/pl-model-common\";\n//#region src/components/PFrameForGraphs.ts\nfunction isHiddenFromGraphColumn(column) {\n\treturn !!readAnnotationJson(column, Annotation.HideDataFromGraphs);\n}\nfunction isHiddenFromUIColumn(column) {\n\treturn !!readAnnotationJson(column, Annotation.HideDataFromUi);\n}\n/**\nThe aim of createPFrameForGraphs: to create pframe with block’s columns and all compatible columns from result pool\n(including linker columns and all label columns).\nBlock’s columns are added to pframe as is.\nOther columns are added basing on set of axes of block’s columns, considering available with linker columns.\nCompatible columns must have at least one axis from block’s axes set. This axis of the compatible column from\nresult pool must satisfy matchAxisId (it can have less domain keys than in block’s axis, but without conflicting values\namong existing ones).\nIn requests to pframe (calculateTableData) columns must have strictly the same axes. For compatibility in case\nof partially matched axis we add to pframe a copy of this column with modified axis (with filled missed domains)\nand modified label (with added domain values in case if more than one copy with different domains exist).\n*/\nfunction createPFrameForGraphs(ctx, blockColumns) {\n\tconst suitableSpec = (spec) => !isHiddenFromUIColumn(spec) && !isHiddenFromGraphColumn(spec);\n\tif (!blockColumns) return ctx.createPFrame(getAllRelatedColumns(ctx, suitableSpec));\n\treturn ctx.createPFrame(getRelatedColumns(ctx, {\n\t\tcolumns: blockColumns,\n\t\tpredicate: suitableSpec\n\t}));\n}\n//#endregion\nexport { createPFrameForGraphs, isHiddenFromGraphColumn, isHiddenFromUIColumn };\n\n//# sourceMappingURL=PFrameForGraphs.js.map","//#region src/filters/traverse.ts\n/**\n* Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.\n*\n* Entries with `{ type: undefined }` inside `and`/`or` arrays are skipped\n* (these represent unfilled filter slots in the UI).\n*\n* Traversal order:\n* 1. Recurse into child filters (`and`/`or`/`not`)\n* 2. Apply the corresponding visitor callback with already-traversed children\n* 3. For leaf nodes, call `leaf` directly\n*/\nfunction traverseFilterSpec(filter, visitor) {\n\treturn traverseFilterSpecImpl(filter, visitor);\n}\n/** Internal implementation with simple generics for clean recursion. */\nfunction traverseFilterSpecImpl(filter, visitor) {\n\tswitch (filter.type) {\n\t\tcase \"and\": return visitor.and(filter.filters.filter((f) => f.type !== void 0).map((f) => traverseFilterSpecImpl(f, visitor)));\n\t\tcase \"or\": return visitor.or(filter.filters.filter((f) => f.type !== void 0).map((f) => traverseFilterSpecImpl(f, visitor)));\n\t\tcase \"not\": return visitor.not(traverseFilterSpecImpl(filter.filter, visitor));\n\t\tdefault: return visitor.leaf(filter);\n\t}\n}\n/** Collects all column references (`column` and `rhs` fields) from filter leaves. */\nfunction collectFilterSpecColumns(filter) {\n\treturn traverseFilterSpec(filter, {\n\t\tleaf: (leaf) => {\n\t\t\tconst cols = [];\n\t\t\tif (\"column\" in leaf && leaf.column !== void 0) cols.push(leaf.column);\n\t\t\tif (\"rhs\" in leaf && leaf.rhs !== void 0) cols.push(leaf.rhs);\n\t\t\treturn cols;\n\t\t},\n\t\tand: (results) => results.flat(),\n\t\tor: (results) => results.flat(),\n\t\tnot: (result) => result\n\t});\n}\n//#endregion\nexport { collectFilterSpecColumns, traverseFilterSpec };\n\n//# sourceMappingURL=traverse.js.map","import { traverseFilterSpec } from \"../traverse.js\";\nimport { assertNever } from \"@milaboratories/pl-model-common\";\n//#region src/filters/converters/filterToQuery.ts\n/** Parses a CanonicalizedJson<PTableColumnId> string into a SpecQueryExpression reference. */\nfunction resolveColumnRef(columnStr) {\n\tconst parsed = JSON.parse(columnStr);\n\treturn parsed.type === \"axis\" ? {\n\t\ttype: \"axisRef\",\n\t\tvalue: parsed.id\n\t} : {\n\t\ttype: \"columnRef\",\n\t\tvalue: parsed.id\n\t};\n}\n/** Converts a FilterSpec tree into a SpecQueryExpression. */\nfunction filterSpecToSpecQueryExpr(filter) {\n\treturn traverseFilterSpec(filter, {\n\t\tleaf: leafToSpecQueryExpr,\n\t\tand: (inputs) => {\n\t\t\tif (inputs.length === 0) throw new Error(\"AND filter requires at least one operand\");\n\t\t\treturn {\n\t\t\t\ttype: \"and\",\n\t\t\t\tinput: inputs\n\t\t\t};\n\t\t},\n\t\tor: (inputs) => {\n\t\t\tif (inputs.length === 0) throw new Error(\"OR filter requires at least one operand\");\n\t\t\treturn {\n\t\t\t\ttype: \"or\",\n\t\t\t\tinput: inputs\n\t\t\t};\n\t\t},\n\t\tnot: (input) => ({\n\t\t\ttype: \"not\",\n\t\t\tinput\n\t\t})\n\t});\n}\nfunction leafToSpecQueryExpr(filter) {\n\tswitch (filter.type) {\n\t\tcase \"patternEquals\": return {\n\t\t\ttype: \"stringEquals\",\n\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\tvalue: filter.value,\n\t\t\tcaseInsensitive: false\n\t\t};\n\t\tcase \"patternNotEquals\": return {\n\t\t\ttype: \"not\",\n\t\t\tinput: {\n\t\t\t\ttype: \"stringEquals\",\n\t\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\t\tvalue: filter.value,\n\t\t\t\tcaseInsensitive: false\n\t\t\t}\n\t\t};\n\t\tcase \"patternContainSubsequence\": return {\n\t\t\ttype: \"stringContains\",\n\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\tvalue: filter.value,\n\t\t\tcaseInsensitive: false\n\t\t};\n\t\tcase \"patternNotContainSubsequence\": return {\n\t\t\ttype: \"not\",\n\t\t\tinput: {\n\t\t\t\ttype: \"stringContains\",\n\t\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\t\tvalue: filter.value,\n\t\t\t\tcaseInsensitive: false\n\t\t\t}\n\t\t};\n\t\tcase \"patternMatchesRegularExpression\": return {\n\t\t\ttype: \"stringRegex\",\n\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\tvalue: filter.value\n\t\t};\n\t\tcase \"patternFuzzyContainSubsequence\": return {\n\t\t\ttype: \"stringContainsFuzzy\",\n\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\tvalue: filter.value,\n\t\t\tmaxEdits: filter.maxEdits ?? 1,\n\t\t\tcaseInsensitive: false,\n\t\t\tsubstitutionsOnly: filter.substitutionsOnly ?? false,\n\t\t\twildcard: filter.wildcard ?? null\n\t\t};\n\t\tcase \"equal\": return {\n\t\t\ttype: \"numericComparison\",\n\t\t\toperand: \"eq\",\n\t\t\tleft: resolveColumnRef(filter.column),\n\t\t\tright: {\n\t\t\t\ttype: \"constant\",\n\t\t\t\tvalue: filter.x\n\t\t\t}\n\t\t};\n\t\tcase \"notEqual\": return {\n\t\t\ttype: \"numericComparison\",\n\t\t\toperand: \"ne\",\n\t\t\tleft: resolveColumnRef(filter.column),\n\t\t\tright: {\n\t\t\t\ttype: \"constant\",\n\t\t\t\tvalue: filter.x\n\t\t\t}\n\t\t};\n\t\tcase \"lessThan\": return {\n\t\t\ttype: \"numericComparison\",\n\t\t\toperand: \"lt\",\n\t\t\tleft: resolveColumnRef(filter.column),\n\t\t\tright: {\n\t\t\t\ttype: \"constant\",\n\t\t\t\tvalue: filter.x\n\t\t\t}\n\t\t};\n\t\tcase \"greaterThan\": return {\n\t\t\ttype: \"numericComparison\",\n\t\t\toperand: \"gt\",\n\t\t\tleft: resolveColumnRef(filter.column),\n\t\t\tright: {\n\t\t\t\ttype: \"constant\",\n\t\t\t\tvalue: filter.x\n\t\t\t}\n\t\t};\n\t\tcase \"lessThanOrEqual\": return {\n\t\t\ttype: \"numericComparison\",\n\t\t\toperand: \"le\",\n\t\t\tleft: resolveColumnRef(filter.column),\n\t\t\tright: {\n\t\t\t\ttype: \"constant\",\n\t\t\t\tvalue: filter.x\n\t\t\t}\n\t\t};\n\t\tcase \"greaterThanOrEqual\": return {\n\t\t\ttype: \"numericComparison\",\n\t\t\toperand: \"ge\",\n\t\t\tleft: resolveColumnRef(filter.column),\n\t\t\tright: {\n\t\t\t\ttype: \"constant\",\n\t\t\t\tvalue: filter.x\n\t\t\t}\n\t\t};\n\t\tcase \"equalToColumn\": return {\n\t\t\ttype: \"numericComparison\",\n\t\t\toperand: \"eq\",\n\t\t\tleft: resolveColumnRef(filter.column),\n\t\t\tright: resolveColumnRef(filter.rhs)\n\t\t};\n\t\tcase \"lessThanColumn\": {\n\t\t\tconst left = resolveColumnRef(filter.column);\n\t\t\tconst right = resolveColumnRef(filter.rhs);\n\t\t\tif (filter.minDiff !== void 0 && filter.minDiff !== 0) return {\n\t\t\t\ttype: \"numericComparison\",\n\t\t\t\toperand: \"lt\",\n\t\t\t\tleft: {\n\t\t\t\t\ttype: \"numericBinary\",\n\t\t\t\t\toperand: \"add\",\n\t\t\t\t\tleft,\n\t\t\t\t\tright: {\n\t\t\t\t\t\ttype: \"constant\",\n\t\t\t\t\t\tvalue: filter.minDiff\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tright\n\t\t\t};\n\t\t\treturn {\n\t\t\t\ttype: \"numericComparison\",\n\t\t\t\toperand: \"lt\",\n\t\t\t\tleft,\n\t\t\t\tright\n\t\t\t};\n\t\t}\n\t\tcase \"greaterThanColumn\": {\n\t\t\tconst left = resolveColumnRef(filter.column);\n\t\t\tconst right = resolveColumnRef(filter.rhs);\n\t\t\tif (filter.minDiff !== void 0 && filter.minDiff !== 0) return {\n\t\t\t\ttype: \"numericComparison\",\n\t\t\t\toperand: \"gt\",\n\t\t\t\tleft: {\n\t\t\t\t\ttype: \"numericBinary\",\n\t\t\t\t\toperand: \"add\",\n\t\t\t\t\tleft,\n\t\t\t\t\tright: {\n\t\t\t\t\t\ttype: \"constant\",\n\t\t\t\t\t\tvalue: filter.minDiff\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tright\n\t\t\t};\n\t\t\treturn {\n\t\t\t\ttype: \"numericComparison\",\n\t\t\t\toperand: \"gt\",\n\t\t\t\tleft,\n\t\t\t\tright\n\t\t\t};\n\t\t}\n\t\tcase \"lessThanColumnOrEqual\": {\n\t\t\tconst left = resolveColumnRef(filter.column);\n\t\t\tconst right = resolveColumnRef(filter.rhs);\n\t\t\tif (filter.minDiff !== void 0 && filter.minDiff !== 0) return {\n\t\t\t\ttype: \"numericComparison\",\n\t\t\t\toperand: \"le\",\n\t\t\t\tleft: {\n\t\t\t\t\ttype: \"numericBinary\",\n\t\t\t\t\toperand: \"add\",\n\t\t\t\t\tleft,\n\t\t\t\t\tright: {\n\t\t\t\t\t\ttype: \"constant\",\n\t\t\t\t\t\tvalue: filter.minDiff\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tright\n\t\t\t};\n\t\t\treturn {\n\t\t\t\ttype: \"numericComparison\",\n\t\t\t\toperand: \"le\",\n\t\t\t\tleft,\n\t\t\t\tright\n\t\t\t};\n\t\t}\n\t\tcase \"greaterThanColumnOrEqual\": {\n\t\t\tconst left = resolveColumnRef(filter.column);\n\t\t\tconst right = resolveColumnRef(filter.rhs);\n\t\t\tif (filter.minDiff !== void 0 && filter.minDiff !== 0) return {\n\t\t\t\ttype: \"numericComparison\",\n\t\t\t\toperand: \"ge\",\n\t\t\t\tleft: {\n\t\t\t\t\ttype: \"numericBinary\",\n\t\t\t\t\toperand: \"add\",\n\t\t\t\t\tleft,\n\t\t\t\t\tright: {\n\t\t\t\t\t\ttype: \"constant\",\n\t\t\t\t\t\tvalue: filter.minDiff\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tright\n\t\t\t};\n\t\t\treturn {\n\t\t\t\ttype: \"numericComparison\",\n\t\t\t\toperand: \"ge\",\n\t\t\t\tleft,\n\t\t\t\tright\n\t\t\t};\n\t\t}\n\t\tcase \"inSet\": return {\n\t\t\ttype: \"isIn\",\n\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\tset: filter.value\n\t\t};\n\t\tcase \"notInSet\": return {\n\t\t\ttype: \"not\",\n\t\t\tinput: {\n\t\t\t\ttype: \"isIn\",\n\t\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\t\tset: filter.value\n\t\t\t}\n\t\t};\n\t\tcase \"isNA\": return {\n\t\t\ttype: \"isNull\",\n\t\t\tinput: resolveColumnRef(filter.column)\n\t\t};\n\t\tcase \"isNotNA\": return {\n\t\t\ttype: \"not\",\n\t\t\tinput: {\n\t\t\t\ttype: \"isNull\",\n\t\t\t\tinput: resolveColumnRef(filter.column)\n\t\t\t}\n\t\t};\n\t\tcase \"ifNa\": return {\n\t\t\ttype: \"ifNull\",\n\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\treplacement: {\n\t\t\t\ttype: \"constant\",\n\t\t\t\tvalue: filter.replacement\n\t\t\t}\n\t\t};\n\t\tcase \"topN\":\n\t\tcase \"bottomN\": throw new Error(`Filter type \"${filter.type}\" is not supported in query expressions`);\n\t\tcase void 0: throw new Error(\"Filter type is undefined\");\n\t\tdefault: assertNever(filter);\n\t}\n}\n//#endregion\nexport { filterSpecToSpecQueryExpr };\n\n//# sourceMappingURL=filterToQuery.js.map","import { isLength } from '../../predicate/isLength.mjs';\n\nfunction isArrayLike(value) {\n return value != null && typeof value !== 'function' && isLength(value.length);\n}\n\nexport { isArrayLike };\n","import { getTag } from '../_internal/getTag.mjs';\n\nfunction isArguments(value) {\n return value !== null && typeof value === 'object' && getTag(value) === '[object Arguments]';\n}\n\nexport { isArguments };\n","function isPrototype(value) {\n const constructor = value?.constructor;\n const prototype = typeof constructor === 'function' ? constructor.prototype : Object.prototype;\n return value === prototype;\n}\n\nexport { isPrototype };\n","import { isTypedArray as isTypedArray$1 } from '../../predicate/isTypedArray.mjs';\n\nfunction isTypedArray(x) {\n return isTypedArray$1(x);\n}\n\nexport { isTypedArray };\n","import { isArguments } from './isArguments.mjs';\nimport { isArrayLike } from './isArrayLike.mjs';\nimport { isTypedArray } from './isTypedArray.mjs';\nimport { isPrototype } from '../_internal/isPrototype.mjs';\n\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value)) {\n if (typeof value.splice !== 'function' &&\n typeof value !== 'string' &&\n (typeof Buffer === 'undefined' || !Buffer.isBuffer(value)) &&\n !isTypedArray(value) &&\n !isArguments(value)) {\n return false;\n }\n return value.length === 0;\n }\n if (typeof value === 'object') {\n if (value instanceof Map || value instanceof Set) {\n return value.size === 0;\n }\n const keys = Object.keys(value);\n if (isPrototype(value)) {\n return keys.filter(x => x !== 'constructor').length === 0;\n }\n return keys.length === 0;\n }\n return true;\n}\n\nexport { isEmpty };\n","import { traverseFilterSpec } from \"./traverse.js\";\nimport { isNil } from \"@milaboratories/helpers\";\nimport { isEmpty } from \"es-toolkit/compat\";\n//#region src/filters/distill.ts\n/**\n* Strips non-FilterSpec metadata (whitelist approach) and removes\n* unfilled leaves (type is undefined or any required field is undefined).\n*/\nfunction distillFilterSpec(filter) {\n\tif (filter == null) return null;\n\treturn traverseFilterSpec(filter, {\n\t\tleaf: (leaf) => {\n\t\t\tconst distilled = distillLeaf(leaf);\n\t\t\treturn isFilledLeaf(distilled) ? distilled : null;\n\t\t},\n\t\tand: (results) => {\n\t\t\tconst filtered = results.filter((f) => f !== null);\n\t\t\treturn filtered.length === 0 ? null : {\n\t\t\t\ttype: \"and\",\n\t\t\t\tfilters: filtered\n\t\t\t};\n\t\t},\n\t\tor: (results) => {\n\t\t\tconst filtered = results.filter((f) => f !== null);\n\t\t\treturn filtered.length === 0 ? null : {\n\t\t\t\ttype: \"or\",\n\t\t\t\tfilters: filtered\n\t\t\t};\n\t\t},\n\t\tnot: (result) => result === null ? null : {\n\t\t\ttype: \"not\",\n\t\t\tfilter: result\n\t\t}\n\t});\n}\nfunction distillLeaf(node) {\n\tconst result = {};\n\tfor (const [key, value] of Object.entries(node)) if (KNOWN_LEAF_KEYS.has(key)) result[key] = value;\n\treturn result;\n}\n/** Returns true if the leaf is filled — type is defined and every required field per-type is filled. */\nfunction isFilledLeaf(node) {\n\tif (isNil(node.type)) return false;\n\tconst required = REQUIRED_KEYS_BY_TYPE[node.type];\n\tconst record = node;\n\treturn required.every((key) => isFilledValue(record[key]));\n}\n/**\n* Returns true if the value is considered \"filled\":\n* - primitives (number, boolean): always true\n* - string: non-empty after trim\n* - array: non-empty AND every item is filled\n* - plain object: non-empty AND every field value is filled\n* - null/undefined: false\n*/\nfunction isFilledValue(value) {\n\tif (isNil(value)) return false;\n\tswitch (typeof value) {\n\t\tcase \"number\":\n\t\tcase \"boolean\": return true;\n\t\tcase \"string\": return value.trim() !== \"\";\n\t\tdefault:\n\t\t\tif (isEmpty(value)) return false;\n\t\t\tif (Array.isArray(value)) return value.every(isFilledValue);\n\t\t\treturn Object.values(value).every(isFilledValue);\n\t}\n}\nconst KNOWN_LEAF_KEYS = new Set([\n\t\"n\",\n\t\"x\",\n\t\"rhs\",\n\t\"type\",\n\t\"value\",\n\t\"column\",\n\t\"minDiff\",\n\t\"maxEdits\",\n\t\"wildcard\",\n\t\"replacement\",\n\t\"substitutionsOnly\"\n]);\n/** Required fields per leaf type. Optional fields (e.g. minDiff, maxEdits) excluded. */\nconst REQUIRED_KEYS_BY_TYPE = {\n\tisNA: [\"column\"],\n\tisNotNA: [\"column\"],\n\tifNa: [\"column\", \"replacement\"],\n\tpatternEquals: [\"column\", \"value\"],\n\tpatternNotEquals: [\"column\", \"value\"],\n\tpatternContainSubsequence: [\"column\", \"value\"],\n\tpatternNotContainSubsequence: [\"column\", \"value\"],\n\tpatternMatchesRegularExpression: [\"column\", \"value\"],\n\tpatternFuzzyContainSubsequence: [\"column\", \"value\"],\n\tinSet: [\"column\", \"value\"],\n\tnotInSet: [\"column\", \"value\"],\n\ttopN: [\"column\", \"n\"],\n\tbottomN: [\"column\", \"n\"],\n\tequal: [\"column\", \"x\"],\n\tnotEqual: [\"column\", \"x\"],\n\tlessThan: [\"column\", \"x\"],\n\tgreaterThan: [\"column\", \"x\"],\n\tlessThanOrEqual: [\"column\", \"x\"],\n\tgreaterThanOrEqual: [\"column\", \"x\"],\n\tequalToColumn: [\"column\", \"rhs\"],\n\tlessThanColumn: [\"column\", \"rhs\"],\n\tgreaterThanColumn: [\"column\", \"rhs\"],\n\tlessThanColumnOrEqual: [\"column\", \"rhs\"],\n\tgreaterThanColumnOrEqual: [\"column\", \"rhs\"]\n};\n//#endregion\nexport { distillFilterSpec };\n\n//# sourceMappingURL=distill.js.map","import { distillFilterSpec } from \"../../filters/distill.js\";\nimport \"../../filters/index.js\";\nimport { canonicalizeJson, parseJsonSafely } from \"@milaboratories/pl-model-common\";\nimport { isNil } from \"es-toolkit\";\n//#region src/components/PlDataTable/state-migration.ts\n/** Upgrade PlDataTableStateV2 to the latest version */\nfunction upgradePlDataTableStateV2(state) {\n\tif (!state) return createPlDataTableStateV2();\n\tif (!(\"version\" in state)) state = createPlDataTableStateV2();\n\tif (state.version === 2) state = {\n\t\tversion: 3,\n\t\tstateCache: state.stateCache.map((entry) => ({\n\t\t\t...entry,\n\t\t\tfiltersState: []\n\t\t})),\n\t\tpTableParams: createDefaultPTableParams()\n\t};\n\tif (state.version === 3) state = createPlDataTableStateV2();\n\tif (state.version === 4) state = migrateV4toV6(state);\n\tif (state.version === 5) state = migrateV5toV6(state);\n\treturn state;\n}\n/** Migrate v5 to v6: unwrap `{source, labeled}` colIds in gridState. */\nfunction migrateV5toV6(state) {\n\treturn {\n\t\tversion: 6,\n\t\tstateCache: state.stateCache.map((entry) => ({\n\t\t\t...entry,\n\t\t\tgridState: unwrapV5GridState(entry.gridState)\n\t\t})),\n\t\tpTableParams: createDefaultPTableParams()\n\t};\n}\n/** Convert v5 wrapped colId JSON to bare PTableColumnSpec JSON, taking `.source`.\n* gridState colIds may include the row-number sentinel (a JSON-stringified\n* literal, not a wrapped spec) — those pass through unchanged. */\nfunction unwrapV5ColId(json) {\n\tconst parsed = parseJsonSafely(json);\n\treturn !isNil(parsed) && typeof parsed === \"object\" && \"source\" in parsed ? canonicalizeJson(parsed.source) : json;\n}\nfunction unwrapV5GridState(gridState) {\n\tconst unwrapAs = (json) => unwrapV5ColId(json);\n\treturn {\n\t\tcolumnOrder: gridState.columnOrder ? { orderedColIds: gridState.columnOrder.orderedColIds.map(unwrapAs) } : void 0,\n\t\tsort: gridState.sort ? { sortModel: gridState.sort.sortModel.map((s) => ({\n\t\t\tcolId: unwrapAs(s.colId),\n\t\t\tsort: s.sort\n\t\t})) } : void 0,\n\t\tcolumnVisibility: gridState.columnVisibility ? { hiddenColIds: gridState.columnVisibility.hiddenColIds.map(unwrapAs) } : void 0\n\t};\n}\n/** Migrate v4 state to v6: convert per-column filters to tree-based format (skips v5). */\nfunction migrateV4toV6(state) {\n\tlet idCounter = 0;\n\tconst nextId = () => ++idCounter;\n\tconst migratedCache = state.stateCache.map((entry) => {\n\t\tconst leaves = [];\n\t\tfor (const f of entry.filtersState) if (f.filter !== null && !f.filter.disabled) {\n\t\t\tconst column = canonicalizeJson(f.id);\n\t\t\tleaves.push(migrateTableFilter(column, f.filter.value, nextId));\n\t\t}\n\t\tconst filtersState = leaves.length > 0 ? {\n\t\t\tid: nextId(),\n\t\t\ttype: \"and\",\n\t\t\tfilters: leaves\n\t\t} : null;\n\t\treturn {\n\t\t\tsourceId: entry.sourceId,\n\t\t\tgridState: entry.gridState,\n\t\t\tsheetsState: entry.sheetsState,\n\t\t\tfiltersState,\n\t\t\tdefaultFiltersState: null\n\t\t};\n\t});\n\tconst oldSourceId = state.pTableParams.sourceId;\n\tconst currentCache = oldSourceId ? migratedCache.find((e) => e.sourceId === oldSourceId) : void 0;\n\treturn {\n\t\tversion: 6,\n\t\tstateCache: migratedCache,\n\t\tpTableParams: currentCache && oldSourceId ? {\n\t\t\tsourceId: oldSourceId,\n\t\t\thiddenColIds: state.pTableParams.hiddenColIds?.map((id) => ({\n\t\t\t\ttype: \"column\",\n\t\t\t\tid\n\t\t\t})) ?? null,\n\t\t\tfilters: distillFilterSpec(currentCache.filtersState),\n\t\t\tdefaultFilters: null,\n\t\t\tsorting: state.pTableParams.sorting\n\t\t} : createDefaultPTableParams()\n\t};\n}\n/** Migrate a single per-column PlTableFilter to a tree-based FilterSpec node */\nfunction migrateTableFilter(column, filter, nextId) {\n\tconst id = nextId();\n\tswitch (filter.type) {\n\t\tcase \"isNA\": return {\n\t\t\tid,\n\t\t\ttype: \"isNA\",\n\t\t\tcolumn\n\t\t};\n\t\tcase \"isNotNA\": return {\n\t\t\tid,\n\t\t\ttype: \"isNotNA\",\n\t\t\tcolumn\n\t\t};\n\t\tcase \"number_equals\": return {\n\t\t\tid,\n\t\t\ttype: \"equal\",\n\t\t\tcolumn,\n\t\t\tx: filter.reference\n\t\t};\n\t\tcase \"number_notEquals\": return {\n\t\t\tid,\n\t\t\ttype: \"notEqual\",\n\t\t\tcolumn,\n\t\t\tx: filter.reference\n\t\t};\n\t\tcase \"number_greaterThan\": return {\n\t\t\tid,\n\t\t\ttype: \"greaterThan\",\n\t\t\tcolumn,\n\t\t\tx: filter.reference\n\t\t};\n\t\tcase \"number_greaterThanOrEqualTo\": return {\n\t\t\tid,\n\t\t\ttype: \"greaterThanOrEqual\",\n\t\t\tcolumn,\n\t\t\tx: filter.reference\n\t\t};\n\t\tcase \"number_lessThan\": return {\n\t\t\tid,\n\t\t\ttype: \"lessThan\",\n\t\t\tcolumn,\n\t\t\tx: filter.reference\n\t\t};\n\t\tcase \"number_lessThanOrEqualTo\": return {\n\t\t\tid,\n\t\t\ttype: \"lessThanOrEqual\",\n\t\t\tcolumn,\n\t\t\tx: filter.reference\n\t\t};\n\t\tcase \"number_between\": return {\n\t\t\tid,\n\t\t\ttype: \"and\",\n\t\t\tfilters: [filter.includeLowerBound ? {\n\t\t\t\tid: nextId(),\n\t\t\t\ttype: \"greaterThanOrEqual\",\n\t\t\t\tcolumn,\n\t\t\t\tx: filter.lowerBound\n\t\t\t} : {\n\t\t\t\tid: nextId(),\n\t\t\t\ttype: \"greaterThan\",\n\t\t\t\tcolumn,\n\t\t\t\tx: filter.lowerBound\n\t\t\t}, filter.includeUpperBound ? {\n\t\t\t\tid: nextId(),\n\t\t\t\ttype: \"lessThanOrEqual\",\n\t\t\t\tcolumn,\n\t\t\t\tx: filter.upperBound\n\t\t\t} : {\n\t\t\t\tid: nextId(),\n\t\t\t\ttype: \"lessThan\",\n\t\t\t\tcolumn,\n\t\t\t\tx: filter.upperBound\n\t\t\t}]\n\t\t};\n\t\tcase \"string_equals\": return {\n\t\t\tid,\n\t\t\ttype: \"patternEquals\",\n\t\t\tcolumn,\n\t\t\tvalue: filter.reference\n\t\t};\n\t\tcase \"string_notEquals\": return {\n\t\t\tid,\n\t\t\ttype: \"patternNotEquals\",\n\t\t\tcolumn,\n\t\t\tvalue: filter.reference\n\t\t};\n\t\tcase \"string_contains\": return {\n\t\t\tid,\n\t\t\ttype: \"patternContainSubsequence\",\n\t\t\tcolumn,\n\t\t\tvalue: filter.reference\n\t\t};\n\t\tcase \"string_doesNotContain\": return {\n\t\t\tid,\n\t\t\ttype: \"patternNotContainSubsequence\",\n\t\t\tcolumn,\n\t\t\tvalue: filter.reference\n\t\t};\n\t\tcase \"string_matches\": return {\n\t\t\tid,\n\t\t\ttype: \"patternMatchesRegularExpression\",\n\t\t\tcolumn,\n\t\t\tvalue: filter.reference\n\t\t};\n\t\tcase \"string_doesNotMatch\": return {\n\t\t\tid,\n\t\t\ttype: \"not\",\n\t\t\tfilter: {\n\t\t\t\tid: nextId(),\n\t\t\t\ttype: \"patternMatchesRegularExpression\",\n\t\t\t\tcolumn,\n\t\t\t\tvalue: filter.reference\n\t\t\t}\n\t\t};\n\t\tcase \"string_containsFuzzyMatch\": return {\n\t\t\tid,\n\t\t\ttype: \"patternFuzzyContainSubsequence\",\n\t\t\tcolumn,\n\t\t\tvalue: filter.reference,\n\t\t\tmaxEdits: filter.maxEdits,\n\t\t\tsubstitutionsOnly: filter.substitutionsOnly,\n\t\t\t...filter.wildcard !== void 0 ? { wildcard: filter.wildcard } : {}\n\t\t};\n\t}\n}\nfunction createDefaultPTableParams() {\n\treturn {\n\t\tsourceId: null,\n\t\thiddenColIds: null,\n\t\tfilters: null,\n\t\tdefaultFilters: null,\n\t\tsorting: []\n\t};\n}\nfunction createPlDataTableStateV2() {\n\treturn {\n\t\tversion: 6,\n\t\tstateCache: [],\n\t\tpTableParams: createDefaultPTableParams()\n\t};\n}\n//#endregion\nexport { createDefaultPTableParams, createPlDataTableStateV2, upgradePlDataTableStateV2 };\n\n//# sourceMappingURL=state-migration.js.map","import { deriveDistinctLabels } from \"../../../labels/derive_distinct_labels.js\";\nimport { ArrayColumnProvider } from \"../../../columns/column_snapshot_provider.js\";\nimport { ColumnCollectionBuilder } from \"../../../columns/column_collection_builder.js\";\nimport \"../../../columns/index.js\";\nimport { deriveDistinctTooltips } from \"../../../labels/derive_distinct_tooltips.js\";\nimport { Annotation, canonicalizeAxisId, readAnnotation } from \"@milaboratories/pl-model-common\";\nimport { getField } from \"@milaboratories/helpers\";\nimport { isNil as isNil$1 } from \"es-toolkit\";\n//#region src/components/PlDataTable/createPlDataTable/utils.ts\n/** Check if column should be omitted from the table */\nfunction isColumnHidden(spec) {\n\treturn readAnnotation(spec, Annotation.Table.Visibility) === \"hidden\";\n}\n/** Check if column is hidden by default */\nfunction isColumnOptional(spec) {\n\treturn readAnnotation(spec, Annotation.Table.Visibility) === \"optional\";\n}\n/** Get effective visibility for a column. Rule map lookup first, then annotation fallback. */\nfunction getEffectiveVisibility(col, visibilityByColId) {\n\tconst rule = visibilityByColId?.get(col.id);\n\tif (rule !== void 0) return rule.visibility;\n\tif (isColumnHidden(col.spec)) return \"hidden\";\n\tif (isColumnOptional(col.spec)) return \"optional\";\n}\n/** Get ordering priority for a column. Rule map lookup first, then annotation fallback. */\nfunction getOrderPriority(col, orderByColId) {\n\tconst rule = orderByColId?.get(col.id);\n\tif (rule !== void 0) return rule.priority;\n\tconst annotation = Number(readAnnotation(col.spec, Annotation.Table.OrderPriority));\n\treturn isNaN(annotation) ? void 0 : annotation;\n}\n/**\n* Evaluate display rules against a set of columns and return a map of `colId → winning rule`\n* (first-match-wins, preserving original rule order).\n*\n* Predicate-based rules (`ColumnMatcher`) are evaluated directly on the spec.\n* Selector-based rules (`ColumnSelector`) are matched via `PFrameSpecDriver.discoverColumns`\n* using the same engine as `ColumnCollection.findColumns` — no client-side matcher.\n*/\nfunction evaluateRules(rules, columns, pframeSpec) {\n\tconst result = /* @__PURE__ */ new Map();\n\tif (rules.length === 0 || columns.length === 0) return result;\n\tconst hasSelectorRules = rules.some((rule) => typeof rule.match !== \"function\");\n\tconst selectorHitsByRule = /* @__PURE__ */ new Map();\n\tif (hasSelectorRules) {\n\t\tconst pColumns = dedupeById(columns).map((c) => ({\n\t\t\tid: c.id,\n\t\t\tspec: c.spec,\n\t\t\tdata: void 0\n\t\t}));\n\t\tconst collection = new ColumnCollectionBuilder(pframeSpec).addSource(new ArrayColumnProvider(pColumns)).build();\n\t\tif (collection === void 0) return result;\n\t\ttry {\n\t\t\tfor (const rule of rules) {\n\t\t\t\tif (typeof rule.match === \"function\") continue;\n\t\t\t\tconst hits = collection.findColumns({ include: rule.match });\n\t\t\t\tselectorHitsByRule.set(rule, new Set(hits.map((h) => h.id)));\n\t\t\t}\n\t\t} finally {\n\t\t\tcollection.dispose();\n\t\t}\n\t}\n\tfor (const col of columns) for (const rule of rules) if (typeof rule.match === \"function\" ? rule.match(col.spec) : selectorHitsByRule.get(rule)?.has(col.id) ?? false) {\n\t\tresult.set(col.id, rule);\n\t\tbreak;\n\t}\n\treturn result;\n}\nfunction dedupeById(columns) {\n\tconst seen = /* @__PURE__ */ new Set();\n\tconst result = [];\n\tfor (const col of columns) {\n\t\tif (seen.has(col.id)) continue;\n\t\tseen.add(col.id);\n\t\tresult.push(col);\n\t}\n\treturn result;\n}\n/**\n* Writes derived labels into column and axis annotations.\n* Returns new column objects with modified specs — original columns are not mutated.\n*\n* For each column: writes derived label into Annotation.Label (if present in derivedLabels).\n* For each axis in column specs: writes derived axis label into AxisSpec annotations.\n*/\nfunction withLabelAnnotations(derivedLabels, columns) {\n\tif (derivedLabels === void 0) return columns;\n\treturn columns.map((col) => {\n\t\tconst colLabel = derivedLabels[col.id];\n\t\treturn {\n\t\t\t...col,\n\t\t\tspec: {\n\t\t\t\t...col.spec,\n\t\t\t\t...isNil$1(colLabel) ? {} : { annotations: {\n\t\t\t\t\t...col.spec.annotations,\n\t\t\t\t\t[Annotation.Label]: colLabel\n\t\t\t\t} },\n\t\t\t\taxesSpec: col.spec.axesSpec.map((axis) => {\n\t\t\t\t\tconst label = derivedLabels[canonicalizeAxisId(axis)];\n\t\t\t\t\treturn isNil$1(label) ? axis : {\n\t\t\t\t\t\t...axis,\n\t\t\t\t\t\tannotations: {\n\t\t\t\t\t\t\t...axis.annotations,\n\t\t\t\t\t\t\t[Annotation.Label]: label\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t}\n\t\t};\n\t});\n}\nfunction withDataStatusAnnotations(columns) {\n\treturn columns.map((col) => {\n\t\treturn {\n\t\t\t...col,\n\t\t\tspec: {\n\t\t\t\t...col.spec,\n\t\t\t\tannotations: {\n\t\t\t\t\t...col.spec.annotations,\n\t\t\t\t\t[Annotation.DataStatus]: col.dataStatus\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n/**\n* Writes effective display properties (OrderPriority, Visibility) from precomputed rule maps\n* into column annotations. Returns new column objects — originals are not mutated.\n*/\nfunction withTableVisualAnnotations(visibilityByColId, orderByColId, columns) {\n\tif (visibilityByColId === void 0 && orderByColId === void 0) return columns;\n\treturn columns.map((col) => {\n\t\tconst annotations = { ...col.spec.annotations };\n\t\tconst visibility = getEffectiveVisibility(col, visibilityByColId);\n\t\tif (!isNil$1(visibility)) annotations[Annotation.Table.Visibility] = visibility;\n\t\tconst orderPriority = getOrderPriority(col, orderByColId);\n\t\tif (!isNil$1(orderPriority)) annotations[Annotation.Table.OrderPriority] = String(orderPriority);\n\t\treturn {\n\t\t\t...col,\n\t\t\tspec: {\n\t\t\t\t...col.spec,\n\t\t\t\tannotations\n\t\t\t}\n\t\t};\n\t});\n}\n/**\n* Writes derived info annotations into column annotations.\n* Columns without an info entry are passed through unchanged.\n*/\nfunction withInfoAnnotations(infoById, columns) {\n\tif (isNil$1(infoById)) return columns;\n\treturn columns.map((col) => {\n\t\tconst info = infoById[col.id];\n\t\tif (isNil$1(info)) return col;\n\t\treturn {\n\t\t\t...col,\n\t\t\tspec: {\n\t\t\t\t...col.spec,\n\t\t\t\tannotations: {\n\t\t\t\t\t...col.spec.annotations,\n\t\t\t\t\t[Annotation.Table.Info]: info\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\nfunction withHidenAxesAnnotations(columns) {\n\treturn columns.map((col) => ({\n\t\t...col,\n\t\tspec: {\n\t\t\t...col.spec,\n\t\t\taxesSpec: col.spec.axesSpec.map((axis) => ({\n\t\t\t\t...axis,\n\t\t\t\tannotations: {\n\t\t\t\t\t...axis.annotations,\n\t\t\t\t\t[Annotation.Table.Visibility]: \"hidden\"\n\t\t\t\t}\n\t\t\t}))\n\t\t}\n\t}));\n}\n/** Derive labels for all table elements: columns via deriveDistinctLabels, axes from label columns. */\nfunction deriveAllLabels(options) {\n\tconst { columns, deriveLabelsOptions } = options;\n\treturn deriveDistinctLabels(columns.map((c) => ({\n\t\tspec: c.spec,\n\t\tlinkerPath: c.linkerPath?.map((step) => ({ spec: step.linker.spec })),\n\t\tqualifications: c.qualifications\n\t})), deriveLabelsOptions).reduce((acc, label, index) => (acc[columns[index].id] = label, acc), {});\n}\n/** Derive origin tooltips for columns whose qualifications or linker path carry info. */\nfunction deriveAllTooltips(options) {\n\tconst { columns } = options;\n\tconst variantCountByOriginal = columns.reduce((acc, c) => {\n\t\treturn acc.set(getField(c, \"originalId\") ?? c.id, (acc.get(c.originalId ?? c.id) ?? 0) + 1);\n\t}, /* @__PURE__ */ new Map());\n\tconst { entries } = columns.reduce(({ entries, variantSeen }, c) => {\n\t\tconst id = getField(c, \"originalId\") ?? c.id;\n\t\tconst variantCount = variantCountByOriginal.get(id);\n\t\tconst variantIndex = (variantSeen.set(id, (variantSeen.get(id) ?? 0) + 1), variantSeen.get(id));\n\t\tentries.push({\n\t\t\tspec: c.spec,\n\t\t\tlinkerPath: c.linkerPath,\n\t\t\tqualifications: c.qualifications,\n\t\t\tvariantIndex,\n\t\t\tvariantCount\n\t\t});\n\t\treturn {\n\t\t\tentries,\n\t\t\tvariantSeen\n\t\t};\n\t}, {\n\t\tentries: [],\n\t\tvariantSeen: /* @__PURE__ */ new Map()\n\t});\n\tconst tooltips = deriveDistinctTooltips(entries);\n\treturn Object.fromEntries(tooltips.flatMap((t, i) => isNil$1(t) ? [] : [[columns[i].id, t]]));\n}\n//#endregion\nexport { deriveAllLabels, deriveAllTooltips, evaluateRules, getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional, withDataStatusAnnotations, withHidenAxesAnnotations, withInfoAnnotations, withLabelAnnotations, withTableVisualAnnotations };\n\n//# sourceMappingURL=utils.js.map","import \"../../columns/index.js\";\nimport { getAxisId, isLabelColumn, matchAxisId } from \"@milaboratories/pl-model-common\";\n//#region src/components/PlDataTable/labels.ts\n/** Get label columns matching the provided columns from the result pool */\nfunction getMatchingLabelColumns(columns, allLabelColumns) {\n\tconst inputLabelColumns = [];\n\tconst inputValueColumns = [];\n\tfor (const column of columns) if (isLabelColumn(column.spec)) inputLabelColumns.push(column);\n\telse inputValueColumns.push(column);\n\tconst unlabeledAxes = [];\n\tfor (const column of inputValueColumns) for (const axis of column.spec.axesSpec) {\n\t\tconst axisId = getAxisId(axis);\n\t\tif (!unlabeledAxes.some((id) => matchAxisId(id, axisId))) unlabeledAxes.push(axisId);\n\t}\n\tfor (const labelColumn of inputLabelColumns) {\n\t\tconst labelAxisId = getAxisId(labelColumn.spec.axesSpec[0]);\n\t\tconst labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n\t\tif (labelMatch !== -1) unlabeledAxes.splice(labelMatch, 1);\n\t}\n\tconst colId = (id, domain, contextDomain) => {\n\t\tlet wid = id.toString();\n\t\tif (domain) for (const k in domain) {\n\t\t\twid += k;\n\t\t\twid += domain[k];\n\t\t}\n\t\tif (contextDomain) for (const k in contextDomain) {\n\t\t\twid += k;\n\t\t\twid += contextDomain[k];\n\t\t}\n\t\treturn wid;\n\t};\n\tconst labelColumns = [];\n\tfor (const labelColumn of allLabelColumns) {\n\t\tconst labelAxis = labelColumn.spec.axesSpec[0];\n\t\tconst labelAxisId = getAxisId(labelAxis);\n\t\tconst labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n\t\tif (labelMatch !== -1) {\n\t\t\tconst axisId = unlabeledAxes[labelMatch];\n\t\t\tif (Object.keys(axisId.domain ?? {}).length + Object.keys(axisId.contextDomain ?? {}).length > Object.keys(labelAxis.domain ?? {}).length + Object.keys(labelAxis.contextDomain ?? {}).length) labelColumns.push({\n\t\t\t\tid: colId(labelColumn.id, axisId.domain, axisId.contextDomain),\n\t\t\t\tspec: {\n\t\t\t\t\t...labelColumn.spec,\n\t\t\t\t\taxesSpec: [{\n\t\t\t\t\t\t...axisId,\n\t\t\t\t\t\tannotations: labelAxis.annotations\n\t\t\t\t\t}]\n\t\t\t\t},\n\t\t\t\tdata: labelColumn.data\n\t\t\t});\n\t\t\telse labelColumns.push(labelColumn);\n\t\t\tunlabeledAxes.splice(labelMatch, 1);\n\t\t}\n\t}\n\treturn labelColumns;\n}\n//#endregion\nexport { getMatchingLabelColumns };\n\n//# sourceMappingURL=labels.js.map","import { filterSpecToSpecQueryExpr } from \"../../../filters/converters/filterToQuery.js\";\nimport { distillFilterSpec } from \"../../../filters/distill.js\";\nimport \"../../../filters/index.js\";\nimport { isBooleanExpression } from \"@milaboratories/pl-model-common\";\nimport { isNil } from \"es-toolkit\";\n//#region src/components/PlDataTable/createPlDataTable/createPTableDefV3.ts\nfunction createPTableDefV3(params) {\n\tlet query = {\n\t\ttype: params.primaryJoinType === \"inner\" ? \"innerJoin\" : \"fullJoin\",\n\t\tentries: params.primary.map((a) => toLeaf(a.column, []))\n\t};\n\tif (params.secondary.length > 0) query = {\n\t\ttype: \"outerJoin\",\n\t\tprimary: {\n\t\t\tentry: query,\n\t\t\tqualifications: params.secondary.flatMap((g) => params.primary.flatMap((p) => g.primaryQualifications?.[p.column.id] ?? []))\n\t\t},\n\t\tsecondary: params.secondary.flatMap((g) => g.entries.map((e) => toJoinEntry(e)))\n\t};\n\tif (!isNil(params.filters)) {\n\t\tconst nonEmpty = distillFilterSpec(params.filters);\n\t\tif (!isNil(nonEmpty)) {\n\t\t\tconst pridicate = filterSpecToSpecQueryExpr(nonEmpty);\n\t\t\tif (!isBooleanExpression(pridicate)) throw new Error(`Filter conversion produced a non-boolean expression (got type \"${pridicate.type}\"), expected a boolean predicate for query filtering`);\n\t\t\tquery = {\n\t\t\t\ttype: \"filter\",\n\t\t\t\tinput: query,\n\t\t\t\tpredicate: pridicate\n\t\t\t};\n\t\t}\n\t}\n\tif (!isNil(params.sorting) && params.sorting.length > 0) query = {\n\t\ttype: \"sort\",\n\t\tinput: query,\n\t\tsortBy: params.sorting.map((s) => ({\n\t\t\texpression: columnIdToExpr(s.column),\n\t\t\tascending: s.ascending,\n\t\t\tnullsFirst: !s.naAndAbsentAreLeastValues\n\t\t}))\n\t};\n\treturn { query };\n}\nfunction columnIdToExpr(col) {\n\treturn col.type === \"axis\" ? {\n\t\ttype: \"axisRef\",\n\t\tvalue: col.id\n\t} : {\n\t\ttype: \"columnRef\",\n\t\tvalue: col.id\n\t};\n}\nfunction toLeaf(col, qs) {\n\treturn {\n\t\tentry: {\n\t\t\ttype: \"column\",\n\t\t\tcolumn: col\n\t\t},\n\t\tqualifications: qs\n\t};\n}\nfunction toJoinEntry(e) {\n\tconst qs = e.qualifications ?? [];\n\tif (isNil(e.linkers) || e.linkers.length === 0) return toLeaf(e.column, qs);\n\treturn {\n\t\t...e.linkers.reduceRight((inner, linker) => ({\n\t\t\tentry: {\n\t\t\t\ttype: \"linkerJoin\",\n\t\t\t\tlinker: { column: linker },\n\t\t\t\tsecondary: [inner]\n\t\t\t},\n\t\t\tqualifications: []\n\t\t}), toLeaf(e.column, [])),\n\t\tqualifications: qs\n\t};\n}\n//#endregion\nexport { createPTableDefV3 };\n\n//# sourceMappingURL=createPTableDefV3.js.map","import { createPTableDefV3 } from \"./createPTableDefV3.js\";\nimport { getColumnIdAndSpec } from \"@milaboratories/pl-model-common\";\nimport { isFunction } from \"es-toolkit\";\n//#region src/components/PlDataTable/createPlDataTable/createPTableDefV2.ts\nfunction createPTableDefV2(params) {\n\tlet coreColumns = params.columns;\n\tconst secondaryColumns = [];\n\tif (isFunction(params.coreColumnPredicate)) {\n\t\tcoreColumns = [];\n\t\tfor (const c of params.columns) if (params.coreColumnPredicate(getColumnIdAndSpec(c))) coreColumns.push(c);\n\t\telse secondaryColumns.push(c);\n\t}\n\tsecondaryColumns.push(...params.labelColumns);\n\treturn createPTableDefV3({\n\t\tprimary: coreColumns.map((column) => ({ column })),\n\t\tsecondary: secondaryColumns.map((column) => ({ entries: [{ column }] })),\n\t\tprimaryJoinType: params.coreJoinType,\n\t\tfilters: params.filters,\n\t\tsorting: params.sorting\n\t});\n}\n//#endregion\nexport { createPTableDefV2 };\n\n//# sourceMappingURL=createPTableDefV2.js.map","import { deriveLabels } from \"../../../render/util/label.js\";\nimport { allPColumnsReady } from \"../../../render/util/pcolumn_data.js\";\nimport { PColumnCollection } from \"../../../render/util/column_collection.js\";\nimport \"../../../render/index.js\";\nimport { collectFilterSpecColumns } from \"../../../filters/traverse.js\";\nimport { upgradePlDataTableStateV2 } from \"../state-migration.js\";\nimport { getMatchingLabelColumns } from \"../labels.js\";\nimport { createPTableDefV2 } from \"./createPTableDefV2.js\";\nimport { isColumnOptional } from \"./utils.js\";\nimport { Annotation, PColumnName, canonicalizeJson, getAxisId, getColumnIdAndSpec, isLinkerColumn, parseJson, uniqueBy } from \"@milaboratories/pl-model-common\";\nimport { identity } from \"es-toolkit\";\nimport { isEmpty } from \"es-toolkit/compat\";\n//#region src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts\n/**\n* Create p-table spec and handle given ui table state\n*\n* @deprecated This version of createPlDataTable is deprecated and will be removed in future. Please migrate to v3 by switching to the new options format and providing necessary information for column discovery and display configuration. See createPlDataTableOptionsV3 for details.\n* @param ctx context\n* @param columns column list\n* @param tableState table ui state\n* @returns PlAgDataTableV2 table source\n*/\nfunction createPlDataTableV2(ctx, columns, tableState, options) {\n\tif (columns.length === 0) return void 0;\n\tconst tableStateNormalized = upgradePlDataTableStateV2(tableState);\n\tconst allLabelColumns = getAllLabelColumns(ctx.resultPool) ?? [];\n\tlet fullLabelColumns = getMatchingLabelColumns(columns, allLabelColumns);\n\tfullLabelColumns = deriveLabels(fullLabelColumns, identity, { includeNativeLabel: true }).map((v) => {\n\t\treturn {\n\t\t\t...v.value,\n\t\t\tspec: {\n\t\t\t\t...v.value.spec,\n\t\t\t\tannotations: {\n\t\t\t\t\t...v.value.spec.annotations,\n\t\t\t\t\t[Annotation.Label]: v.label\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n\tconst fullColumns = [...columns, ...fullLabelColumns];\n\tconst fullColumnsIds = [...uniqueBy(fullColumns.flatMap((c) => c.spec.axesSpec.map((a) => getAxisId(a))), (a) => canonicalizeJson(a)).map((a) => ({\n\t\ttype: \"axis\",\n\t\tid: a\n\t})), ...fullColumns.map((c) => ({\n\t\ttype: \"column\",\n\t\tid: c.id\n\t}))];\n\tconst fullColumnsIdsSet = new Set(fullColumnsIds.map((c) => canonicalizeJson(c)));\n\tconst isValidColumnId = (id) => fullColumnsIdsSet.has(id);\n\tconst filters = tableStateNormalized.pTableParams.filters;\n\tconst defaultFilters = options?.filters ?? void 0;\n\tconst firstInvalidFilterColumn = (filters !== null ? collectFilterSpecColumns(filters) : []).find((col) => !isValidColumnId(col));\n\tif (firstInvalidFilterColumn) throw new Error(`Invalid filter column ${firstInvalidFilterColumn}: column reference does not match the table columns`);\n\tconst firstInvalidDefaultFilterColumn = (defaultFilters !== void 0 ? collectFilterSpecColumns(defaultFilters) : []).find((col) => !isValidColumnId(col));\n\tif (firstInvalidDefaultFilterColumn) throw new Error(`Invalid default filter column ${firstInvalidDefaultFilterColumn}: column reference does not match the table columns`);\n\tconst userSorting = tableStateNormalized.pTableParams.sorting;\n\tconst sorting = (isEmpty(userSorting) ? options?.sorting : userSorting) ?? [];\n\tconst firstInvalidSortingColumn = sorting.find((s) => !isValidColumnId(canonicalizeJson(s.column)));\n\tif (firstInvalidSortingColumn) throw new Error(`Invalid sorting column ${JSON.stringify(firstInvalidSortingColumn.column)}: column reference does not match the table columns`);\n\tconst coreJoinType = options?.coreJoinType ?? \"full\";\n\tconst fullDef = createPTableDefV2({\n\t\tcolumns,\n\t\tlabelColumns: fullLabelColumns,\n\t\tcoreJoinType,\n\t\tfilters,\n\t\tsorting,\n\t\tcoreColumnPredicate: options?.coreColumnPredicate\n\t});\n\tconst fullHandle = ctx.createPTableV2(fullDef);\n\tconst pframeHandle = ctx.createPFrame(fullColumns);\n\tif (!fullHandle || !pframeHandle) return void 0;\n\tconst hiddenColumns = new Set((() => {\n\t\tif (coreJoinType === \"inner\") return [];\n\t\tconst hiddenColIds = tableStateNormalized.pTableParams.hiddenColIds;\n\t\tif (hiddenColIds !== null) return hiddenColIds.filter((s) => s.type === \"column\").map((s) => s.id);\n\t\treturn columns.filter((c) => isColumnOptional(c.spec)).map((c) => c.id);\n\t})());\n\tcolumns.filter((c) => isLinkerColumn(c.spec)).forEach((c) => hiddenColumns.delete(c.id));\n\tconst coreColumnPredicate = options?.coreColumnPredicate;\n\tif (coreColumnPredicate) columns.flatMap((c) => coreColumnPredicate(getColumnIdAndSpec(c)) ? [c.id] : []).forEach((c) => hiddenColumns.delete(c));\n\tsorting.map((s) => s.column).filter((c) => c.type === \"column\").forEach((c) => hiddenColumns.delete(c.id));\n\tif (filters) collectFilterSpecColumns(filters).flatMap((c) => {\n\t\tconst obj = parseJson(c);\n\t\treturn obj.type === \"column\" ? [obj.id] : [];\n\t}).forEach((c) => hiddenColumns.delete(c));\n\tconst visibleColumns = columns.filter((c) => !hiddenColumns.has(c.id));\n\tconst visibleLabelColumns = getMatchingLabelColumns(visibleColumns.map(getColumnIdAndSpec), allLabelColumns);\n\tif (!allPColumnsReady([...visibleColumns, ...visibleLabelColumns])) return void 0;\n\tconst visibleDef = createPTableDefV2({\n\t\tcolumns: visibleColumns,\n\t\tlabelColumns: visibleLabelColumns,\n\t\tcoreJoinType,\n\t\tfilters,\n\t\tsorting,\n\t\tcoreColumnPredicate\n\t});\n\tconst visibleHandle = ctx.createPTableV2(visibleDef);\n\tif (!visibleHandle) return void 0;\n\treturn {\n\t\tsourceId: tableStateNormalized.pTableParams.sourceId,\n\t\tfullTableHandle: fullHandle,\n\t\tfullPframeHandle: pframeHandle,\n\t\tvisibleTableHandle: visibleHandle,\n\t\tdefaultFilters\n\t};\n}\nfunction getAllLabelColumns(resultPool) {\n\treturn new PColumnCollection().addAxisLabelProvider(resultPool).addColumnProvider(resultPool).getColumns({\n\t\tname: PColumnName.Label,\n\t\taxes: [{}]\n\t}, {\n\t\tdontWaitAllData: true,\n\t\toverrideLabelAnnotation: false\n\t});\n}\n//#endregion\nexport { createPlDataTableV2 };\n\n//# sourceMappingURL=createPlDataTableV2.js.map","exports = module.exports = stringify\nexports.getSerialize = serializer\n\nfunction stringify(obj, replacer, spaces, cycleReplacer) {\n return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces)\n}\n\nfunction serializer(replacer, cycleReplacer) {\n var stack = [], keys = []\n\n if (cycleReplacer == null) cycleReplacer = function(key, value) {\n if (stack[0] === value) return \"[Circular ~]\"\n return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\"\n }\n\n return function(key, value) {\n if (stack.length > 0) {\n var thisPos = stack.indexOf(this)\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this)\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)\n if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value)\n }\n else stack.push(value)\n\n return replacer == null ? value : replacer.call(this, key, value)\n }\n}\n","import stringify from \"json-stringify-safe\";\nimport { z } from \"zod\";\n//#region src/error_like_shape.ts\nconst BasePlErrorLike = z.object({\n\ttype: z.literal(\"PlError\"),\n\tname: z.string(),\n\tmessage: z.string(),\n\tfullMessage: z.string().optional(),\n\tstack: z.string().optional()\n});\nconst PlErrorLike = BasePlErrorLike.extend({\n\tcause: z.lazy(() => ErrorLike).optional(),\n\terrors: z.lazy(() => ErrorLike.array()).optional()\n});\nconst StandardErrorLike = z.object({\n\ttype: z.literal(\"StandardError\"),\n\tname: z.string(),\n\tmessage: z.string(),\n\tstack: z.string().optional()\n}).extend({\n\tcause: z.lazy(() => ErrorLike).optional(),\n\terrors: z.lazy(() => ErrorLike.array()).optional()\n});\nconst ErrorLike = z.union([StandardErrorLike, PlErrorLike]);\n/** Converts everything into ErrorLike. */\nfunction ensureErrorLike(error) {\n\tconst result = ErrorShape.safeParse(error);\n\tif (result.success) {\n\t\tconst err = result.data;\n\t\tif (err.name === \"PlQuickJSError\" || err.name === \"PlErrorReport\" || err.name === \"PlInternalError\" || err.name === \"PlTengoError\" || err.name === \"PlRunnerError\" || err.name === \"PlMonetizationError\") return {\n\t\t\ttype: \"PlError\",\n\t\t\tname: err.name,\n\t\t\tmessage: err.message,\n\t\t\tfullMessage: err.fullMessage ?? void 0,\n\t\t\tstack: err.stack ?? void 0,\n\t\t\tcause: err.cause ? ensureErrorLike(err.cause) : void 0,\n\t\t\terrors: err.errors ? err.errors.map(ensureErrorLike) : void 0\n\t\t};\n\t\treturn {\n\t\t\ttype: \"StandardError\",\n\t\t\tname: err.name,\n\t\t\tmessage: err.message,\n\t\t\tstack: err.stack ?? void 0,\n\t\t\tcause: err.cause ? ensureErrorLike(err.cause) : void 0,\n\t\t\terrors: err.errors ? err.errors.map(ensureErrorLike) : void 0\n\t\t};\n\t}\n\treturn {\n\t\ttype: \"StandardError\",\n\t\tname: \"Error\",\n\t\tmessage: stringify(error)\n\t};\n}\n/** Tries to parse strings into ErrorLike. It's needed for keeping old blocks compatible with new UI. */\nfunction parseErrorLikeSafe(err) {\n\ttry {\n\t\treturn ErrorLike.safeParse(JSON.parse(err));\n\t} catch (e) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: /* @__PURE__ */ new Error(`parseErrorLikeSafe: could not parse JSON: ${err}, ${String(e)}`)\n\t\t};\n\t}\n}\nconst ErrorShape = z.object({\n\tname: z.string(),\n\tmessage: z.string(),\n\tfullMessage: z.string().optional(),\n\tstack: z.string().optional()\n}).extend({\n\tcause: z.lazy(() => ErrorShape).optional(),\n\terrors: z.lazy(() => ErrorShape.array()).optional()\n});\n//#endregion\nexport { BasePlErrorLike, ErrorLike, PlErrorLike, StandardErrorLike, ensureErrorLike, parseErrorLikeSafe };\n\n//# sourceMappingURL=error_like_shape.js.map","import type { GraphMakerState } from \"@milaboratories/graph-maker\";\nimport { createPlDataTableStateV2, DataModelBuilder } from \"@platforma-sdk/model\";\nimport type { BlockData, BlockDataV1 } from \"./types\";\n\nconst DEFAULT_SCATTER_STATE: GraphMakerState = {\n title: \"Property Relationships\",\n template: \"dots\",\n currentTab: null,\n};\n\nconst DEFAULT_HISTOGRAM_STATE: GraphMakerState = {\n title: \"Property Distribution\",\n template: \"bins\",\n currentTab: null,\n layersSettings: {\n bins: { fillColor: \"#99e099\" },\n },\n};\n\nexport const blockDataModel = new DataModelBuilder()\n .from<BlockDataV1>(\"Ver_2026_04_28\")\n .migrate<BlockData>(\"Ver_2026_05_05\", (v1) => ({\n ...v1,\n graphStateScatter: { ...DEFAULT_SCATTER_STATE },\n graphStateHistogram: { ...DEFAULT_HISTOGRAM_STATE },\n }))\n .init(() => ({\n tableState: createPlDataTableStateV2(),\n graphStateScatter: { ...DEFAULT_SCATTER_STATE },\n graphStateHistogram: { ...DEFAULT_HISTOGRAM_STATE },\n }));\n","import type { InferOutputsType, PColumnIdAndSpec, PFrameHandle } from \"@platforma-sdk/model\";\nimport {\n Annotation,\n BlockModelV3,\n createPFrameForGraphs,\n createPlDataTableV2,\n} from \"@platforma-sdk/model\";\nimport { blockDataModel } from \"./dataModel\";\nimport type { BlockArgs, WorkflowInfo } from \"./types\";\n\nexport type * from \"@milaboratories/helpers\";\nexport { blockDataModel } from \"./dataModel\";\nexport type { BlockArgs, BlockData, WorkflowInfo, WorkflowMode, WorkflowReceptor } from \"./types\";\n\nconst inputAnchorSpecs = [\n // Peptide mode — universal naming\n {\n axes: [{ name: \"pl7.app/sampleId\" }, { name: \"pl7.app/variantKey\" }],\n annotations: { \"pl7.app/isAnchor\": \"true\" },\n },\n // Antibody/TCR — legacy MiXCR bulk (cloneId per spec; clonotypeKey per current MiXCR output)\n {\n axes: [{ name: \"pl7.app/sampleId\" }, { name: \"pl7.app/vdj/cloneId\" }],\n annotations: { \"pl7.app/isAnchor\": \"true\" },\n },\n {\n axes: [{ name: \"pl7.app/sampleId\" }, { name: \"pl7.app/vdj/clonotypeKey\" }],\n annotations: { \"pl7.app/isAnchor\": \"true\" },\n },\n // Antibody/TCR — legacy MiXCR single-cell\n {\n axes: [{ name: \"pl7.app/sampleId\" }, { name: \"pl7.app/vdj/scClonotypeKey\" }],\n annotations: { \"pl7.app/isAnchor\": \"true\" },\n },\n];\n\nexport const platforma = BlockModelV3.create(blockDataModel)\n .args<BlockArgs>((data) => {\n if (data.inputAnchor === undefined) {\n throw new Error(\"Select an input dataset\");\n }\n return {\n inputAnchor: data.inputAnchor,\n };\n })\n .output(\"inputOptions\", (ctx) => ctx.resultPool.getOptions(inputAnchorSpecs))\n .output(\"inputSpec\", (ctx) =>\n ctx.data.inputAnchor ? ctx.resultPool.getPColumnSpecByRef(ctx.data.inputAnchor) : undefined,\n )\n .output(\"info\", (ctx) => ctx.outputs?.resolve(\"info\")?.getDataAsJson<WorkflowInfo>())\n .output(\"isRunning\", (ctx) => ctx.outputs?.getIsReadyOrError() === false)\n .output(\"processingLog\", (ctx) => ctx.outputs?.resolve(\"processingLog\")?.getLogHandle())\n .outputWithStatus(\"propertiesTable\", (ctx) => {\n if (ctx.data.inputAnchor === undefined) return undefined;\n const ownCols = ctx.outputs?.resolve(\"propertiesPf\")?.getPColumns();\n if (ownCols === undefined) return undefined;\n // Temporary downgrade to V2 with a fixed, propertiesPf-only column list.\n // V3 default-visibility rules and the column picker are not yet stable for\n // the multi-source layout this block needs (upstream sequence column +\n // own scalar properties). Once V3 supports it natively, rewire across\n // blocks. aaFraction is 2-axis (variantKey × aminoAcid) — already filtered\n // from the graph pFrame; filtered here too so it doesn't widen the table.\n const tableCols = ownCols.filter((c) => c.spec.axesSpec.length === 1);\n return createPlDataTableV2(ctx, tableCols, ctx.data.tableState);\n })\n .outputWithStatus(\"propertiesPfHandle\", (ctx): PFrameHandle | undefined => {\n const allPCols = ctx.outputs?.resolve(\"propertiesPf\")?.getPColumns();\n if (allPCols === undefined) return undefined;\n // Drop the AA fraction column from the pframe entirely. Two-axis\n // (variantKey × aminoAcid), at 50k peptides ~1M cells — enough to trip\n // graph-maker's cell-count guard on its own. The picker already excludes\n // it via `isNumericScalar` (axesSpec.length === 1), so the data was\n // pure overhead.\n const pCols = allPCols.filter((c) => c.spec.name !== \"pl7.app/aaFraction\");\n // Use `ctx.createPFrame` instead of `createPFrameForGraphs`. The latter\n // walks the result pool and pulls in this block's `exports.properties`\n // — a `trace.inject`-stamped re-emission of every column already in\n // `propertiesPf`, published for Lead Selection — so axis dropdowns\n // show e.g. \"Net Charge (pH7) / IG\" twice. Same workaround chosen by\n // cdr3-spectratype, batch-correction, cell-type-annotation, and\n // dimensionality-reduction.\n //\n // Pull single-axis metadata anchored to the input dataset's two axes\n // (idx 0 = sample, idx 1 = entity key) so sample groups / patient IDs /\n // peptide abundance and similar cols remain available for grouping and\n // filtering. Drop self-trace to keep our own exports out.\n const inputAnchor = ctx.data.inputAnchor;\n const upstreamMeta =\n inputAnchor !== undefined\n ? (\n ctx.resultPool.getAnchoredPColumns({ main: inputAnchor }, [\n { axes: [{ anchor: \"main\", idx: 0 }] },\n { axes: [{ anchor: \"main\", idx: 1 }] },\n ]) ?? []\n ).filter(\n (c) =>\n !c.spec.annotations?.[Annotation.Trace]?.includes(\n \"milaboratories.sequence-properties\",\n ),\n )\n : [];\n return createPFrameForGraphs(ctx, [...pCols, ...upstreamMeta]);\n })\n .output(\"propertiesPfCols\", (ctx): PColumnIdAndSpec[] | undefined => {\n const pCols = ctx.outputs?.resolve(\"propertiesPf\")?.getPColumns();\n if (pCols === undefined) return undefined;\n return pCols.map((c) => ({ columnId: c.id, spec: c.spec }) satisfies PColumnIdAndSpec);\n })\n .title(() => \"Sequence Properties\")\n .subtitle((ctx) => ctx.data.defaultBlockLabel ?? \"\")\n .sections(() => [\n { type: \"link\", href: \"/\", label: \"Main\" },\n { type: \"link\", href: \"/scatter\", label: \"Property Relationships\" },\n { type: \"link\", href: \"/histogram\", label: \"Property Distribution\" },\n ])\n .done();\n\nexport type BlockOutputs = InferOutputsType<typeof platforma>;\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bundle.js","names":["defaultErrorMap","defaultErrorMap","defaultErrorMap","z.object","z.literal","z.string","z.object","z.number","z.object","z.string","z.unknown","z.enum","z.array","z.number","z.boolean","z.record","matchDomain","isNil","z.string","z.object","z.literal","z.string","isTypedArray","isNil$1","isNil","z.object","z.literal","z.string","z.lazy","z.union","platforma"],"sources":["../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/plugin_handle.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/block_storage.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/block_migrations.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/internal.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/block_storage_facade.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/config/actions.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/render/future.js","../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js","../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js","../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js","../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js","../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js","../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js","../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/bmodel/code.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/util.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/data_info.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/errors.js","../../node_modules/.pnpm/canonicalize@2.1.0/node_modules/canonicalize/lib/canonicalize.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/json.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/query/utils.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/table_calculate.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/table_common.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/ids.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/anchored.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/pool/spec.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/selectors.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/native_id.js","../../node_modules/.pnpm/@milaboratories+helpers@1.14.2/node_modules/@milaboratories/helpers/dist/utils.js","../../node_modules/.pnpm/@milaboratories+helpers@1.14.2/node_modules/@milaboratories/helpers/dist/objects.js","../../node_modules/.pnpm/@milaboratories+helpers@1.14.2/node_modules/@milaboratories/helpers/dist/error.js","../../node_modules/.pnpm/@milaboratories+helpers@1.14.2/node_modules/@milaboratories/helpers/dist/uniqId.js","../../node_modules/.pnpm/@milaboratories+helpers@1.14.2/node_modules/@milaboratories/helpers/dist/hash.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/linker_columns.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/driver.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/flags/block_flags.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/plid.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/ref.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/value_or_error.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/services/service_types.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/services/service_declarations.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/services/service_capabilities.js","../../node_modules/.pnpm/@milaboratories+pl-model-common@1.42.0/node_modules/@milaboratories/pl-model-common/dist/services/service_injectors.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/render/accessor.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/render/internal.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/render/util/axis_filtering.js","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/function/identity.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isTypedArray.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/_internal/getTag.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isFunction.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isLength.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/predicate/isNil.mjs","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/labels/derive_distinct_labels.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/render/util/label.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/render/util/pcolumn_data.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/render/util/column_collection.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/services/block_services.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/services/service_bridge.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/services/get_services.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/render/util/pframe_upgraders.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/render/api.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/package.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/version.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/bconfig/types.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/bconfig/normalization.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/plugin_model.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/block_storage_callbacks.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/block_model.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/pframe_utils/axes.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/pframe_utils/columns.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/components/PFrameForGraphs.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/filters/traverse.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/filters/converters/filterToQuery.js","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/predicate/isArguments.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/_internal/isPrototype.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.mjs","../../node_modules/.pnpm/es-toolkit@1.42.0/node_modules/es-toolkit/dist/compat/predicate/isEmpty.mjs","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/filters/distill.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/components/PlDataTable/state-migration.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/components/PlDataTable/createPlDataTable/utils.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/components/PlDataTable/labels.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js","../../node_modules/.pnpm/@platforma-sdk+model@1.77.0/node_modules/@platforma-sdk/model/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js","../../node_modules/.pnpm/json-stringify-safe@5.0.1/node_modules/json-stringify-safe/stringify.js","../../node_modules/.pnpm/@milaboratories+pl-error-like@1.12.10/node_modules/@milaboratories/pl-error-like/dist/error_like_shape.js","../src/dataModel.ts","../src/label.ts","../src/index.ts"],"sourcesContent":["//#region src/plugin_handle.ts\nconst PLUGIN_OUTPUT_PREFIX = \"plugin-output#\";\n/** Construct the output key for a plugin output in the block outputs map. */\nfunction pluginOutputKey(handle, outputKey) {\n\treturn `${PLUGIN_OUTPUT_PREFIX}${handle}#${outputKey}`;\n}\n/** Check whether an output key belongs to a plugin (vs block-level output). */\nfunction isPluginOutputKey(key) {\n\treturn key.startsWith(PLUGIN_OUTPUT_PREFIX);\n}\n/** Get the prefix used for all outputs of a specific plugin instance. */\nfunction pluginOutputPrefix(handle) {\n\treturn pluginOutputKey(handle, \"\");\n}\n//#endregion\nexport { isPluginOutputKey, pluginOutputKey, pluginOutputPrefix };\n\n//# sourceMappingURL=plugin_handle.js.map","import { isDataUnrecoverableError } from \"./block_migrations.js\";\n//#region src/block_storage.ts\n/**\n* Discriminator key for BlockStorage format detection.\n* This unique hash-based key identifies data as BlockStorage vs legacy formats.\n*/\nconst BLOCK_STORAGE_KEY = \"__pl_a7f3e2b9__\";\n/**\n* Default data version for new blocks without migrations.\n* Unique identifier ensures blocks are created via DataModel API.\n*/\nconst DATA_MODEL_LEGACY_VERSION = \"__pl_v1_d4e8f2a1__\";\n/**\n* Type guard to check if a value is a valid BlockStorage object.\n* Checks for the discriminator key and valid schema version.\n*/\nfunction isBlockStorage(value) {\n\tif (value === null || typeof value !== \"object\") return false;\n\treturn value[BLOCK_STORAGE_KEY] === \"v1\";\n}\n/**\n* Creates a BlockStorage with the given initial data\n*\n* @param initialData - The initial data value (defaults to empty object)\n* @param version - The initial data version key (defaults to DATA_MODEL_LEGACY_VERSION)\n* @returns A new BlockStorage instance with discriminator key\n*/\nfunction createBlockStorage(initialData = {}, version = DATA_MODEL_LEGACY_VERSION) {\n\treturn {\n\t\t[BLOCK_STORAGE_KEY]: \"v1\",\n\t\t__dataVersion: version,\n\t\t__data: initialData,\n\t\t__pluginRegistry: {},\n\t\t__plugins: {}\n\t};\n}\n/**\n* Normalizes raw storage data to BlockStorage format.\n* If the input is already a BlockStorage, returns it as-is (with defaults for missing fields).\n* If the input is legacy format (raw state), wraps it in BlockStorage structure.\n*\n* @param raw - Raw storage data (may be legacy format or BlockStorage)\n* @returns Normalized BlockStorage\n*/\nfunction normalizeBlockStorage(raw) {\n\tif (isBlockStorage(raw)) {\n\t\tconst storage = raw;\n\t\treturn {\n\t\t\t...storage,\n\t\t\t__dataVersion: typeof storage.__dataVersion === \"number\" ? DATA_MODEL_LEGACY_VERSION : storage.__dataVersion,\n\t\t\t__pluginRegistry: storage.__pluginRegistry ?? {},\n\t\t\t__plugins: storage.__plugins ?? {}\n\t\t};\n\t}\n\treturn createBlockStorage(raw);\n}\n/**\n* Gets the data from BlockStorage\n*\n* @param storage - The BlockStorage instance\n* @returns The data value\n*/\nfunction getStorageData(storage) {\n\treturn storage.__data;\n}\n/**\n* Derives data from raw block storage.\n* This function is meant to be called from sdk/ui-vue to extract\n* user-facing data from the raw storage returned by the middle layer.\n*\n* The middle layer returns raw storage (opaque to it), and the UI\n* uses this function to derive the actual data value.\n*\n* @param rawStorage - Raw storage data from middle layer (may be any format)\n* @returns The extracted data value, or undefined if storage is undefined/null\n*/\nfunction deriveDataFromStorage(rawStorage) {\n\treturn getStorageData(normalizeBlockStorage(rawStorage));\n}\n/**\n* Updates the data in BlockStorage (immutable)\n*\n* @param storage - The current BlockStorage\n* @param payload - The update payload with operation and value\n* @returns A new BlockStorage with updated data\n*/\nfunction updateStorageData(storage, payload) {\n\tswitch (payload.operation) {\n\t\tcase \"update-block-data\": return {\n\t\t\t...storage,\n\t\t\t__data: payload.value\n\t\t};\n\t\tcase \"update-plugin-data\": {\n\t\t\tconst { pluginId, value } = payload;\n\t\t\tconst currentPlugins = storage.__plugins ?? {};\n\t\t\tconst version = currentPlugins[pluginId]?.__dataVersion ?? \"__pl_v1_d4e8f2a1__\";\n\t\t\treturn {\n\t\t\t\t...storage,\n\t\t\t\t__plugins: {\n\t\t\t\t\t...currentPlugins,\n\t\t\t\t\t[pluginId]: {\n\t\t\t\t\t\t__dataVersion: version,\n\t\t\t\t\t\t__data: value\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tdefault: throw new Error(`Unknown storage operation: ${payload.operation}`);\n\t}\n}\n/**\n* Performs atomic migration of block storage including block data and all plugins.\n*\n* Migration is atomic: either everything succeeds and a new storage is returned,\n* or an error is returned and the original storage is completely untouched.\n*\n* Migration steps:\n* 1. Migrate block data\n* 2. For each plugin in newPluginRegistry:\n* - If plugin exists with same name: migrate its data\n* - Otherwise (new or type changed): create with initial data\n* Plugins not in newPluginRegistry are dropped.\n*\n* If any step throws, migration fails and original storage is preserved.\n* User can then choose to:\n* - Abort: keep original storage, don't update block\n* - Reset: call createBlockStorage() to start fresh\n*\n* @param storage - The original storage (will not be modified)\n* @param config - Migration configuration\n* @returns Migration result - either success with new storage, or failure with error info\n*\n* @example\n* const result = migrateBlockStorage(storage, {\n* migrateBlockData: (versioned) => blockDataModel.migrate(versioned),\n* migratePluginData: (pluginId, versioned) => getPluginModel(pluginId).migrate(versioned),\n* newPluginRegistry: { table1: 'dataTable' as PluginName },\n* createPluginData: (pluginId) => getPluginModel(pluginId).getDefaultData(),\n* });\n*\n* if (result.success) {\n* commitStorage(result.storage);\n* } else {\n* const userChoice = await askUser(`Migration failed: ${result.error}. Reset data?`);\n* if (userChoice === 'reset') {\n* commitStorage(createBlockStorage(initialData, currentVersion));\n* }\n* // else: abort, keep original\n* }\n*/\nfunction migrateBlockStorage(storage, config) {\n\tconst { migrateBlockData, migratePluginData, newPluginRegistry, createPluginData } = config;\n\tlet migratedData;\n\tlet newVersion;\n\tlet transfers;\n\ttry {\n\t\tconst result = migrateBlockData({\n\t\t\tversion: storage.__dataVersion,\n\t\t\tdata: storage.__data\n\t\t});\n\t\tmigratedData = result.data;\n\t\tnewVersion = result.version;\n\t\ttransfers = result.transfers;\n\t} catch (error) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\tfailedAt: \"block\"\n\t\t};\n\t}\n\tconst oldPlugins = storage.__plugins ?? {};\n\tconst oldRegistry = storage.__pluginRegistry ?? {};\n\tconst newPlugins = {};\n\tfor (const [key, pluginName] of Object.entries(newPluginRegistry)) {\n\t\tconst handle = key;\n\t\tconst existingEntry = oldPlugins[handle];\n\t\tconst existingName = oldRegistry[handle];\n\t\ttry {\n\t\t\tif (existingEntry && existingName === pluginName) {\n\t\t\t\tconst migrated = migratePluginData(handle, {\n\t\t\t\t\tversion: existingEntry.__dataVersion,\n\t\t\t\t\tdata: existingEntry.__data\n\t\t\t\t});\n\t\t\t\tif (migrated) newPlugins[handle] = {\n\t\t\t\t\t__dataVersion: migrated.version,\n\t\t\t\t\t__data: migrated.data\n\t\t\t\t};\n\t\t\t} else if (existingEntry) {\n\t\t\t\tlet recovered = false;\n\t\t\t\ttry {\n\t\t\t\t\tconst migrated = migratePluginData(handle, {\n\t\t\t\t\t\tversion: DATA_MODEL_LEGACY_VERSION,\n\t\t\t\t\t\tdata: existingEntry.__data\n\t\t\t\t\t});\n\t\t\t\t\tif (migrated) {\n\t\t\t\t\t\tnewPlugins[handle] = {\n\t\t\t\t\t\t\t__dataVersion: migrated.version,\n\t\t\t\t\t\t\t__data: migrated.data\n\t\t\t\t\t\t};\n\t\t\t\t\t\trecovered = true;\n\t\t\t\t\t}\n\t\t\t\t} catch (recoverError) {\n\t\t\t\t\tif (!isDataUnrecoverableError(recoverError)) throw recoverError;\n\t\t\t\t}\n\t\t\t\tif (!recovered) {\n\t\t\t\t\tconst transfer = transfers[handle];\n\t\t\t\t\tconst initial = createPluginData(handle, transfer);\n\t\t\t\t\tnewPlugins[handle] = {\n\t\t\t\t\t\t__dataVersion: initial.version,\n\t\t\t\t\t\t__data: initial.data\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst transfer = transfers[handle];\n\t\t\t\tconst initial = createPluginData(handle, transfer);\n\t\t\t\tnewPlugins[handle] = {\n\t\t\t\t\t__dataVersion: initial.version,\n\t\t\t\t\t__data: initial.data\n\t\t\t\t};\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\tfailedAt: handle\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tsuccess: true,\n\t\tstorage: {\n\t\t\t[BLOCK_STORAGE_KEY]: \"v1\",\n\t\t\t__dataVersion: newVersion,\n\t\t\t__data: migratedData,\n\t\t\t__pluginRegistry: newPluginRegistry,\n\t\t\t__plugins: newPlugins\n\t\t}\n\t};\n}\n/**\n* Gets plugin-specific data from block storage.\n* Accepts raw storage (any format) and normalizes internally.\n*\n* When called with a typed PluginHandle<F>, the return type is automatically\n* inferred from the factory's phantom `__types.data` field.\n*\n* @param rawStorage - Raw block storage (may be legacy format or BlockStorage)\n* @param handle - The plugin handle (branded plugin instance id)\n* @returns The plugin data, typed via factory inference\n* @throws If plugin is not found in storage\n*/\nfunction getPluginData(rawStorage, handle) {\n\tconst pluginEntry = normalizeBlockStorage(rawStorage).__plugins?.[handle];\n\tif (!pluginEntry) throw new Error(`Plugin '${handle}' not found in block storage`);\n\treturn pluginEntry.__data;\n}\n//#endregion\nexport { BLOCK_STORAGE_KEY, DATA_MODEL_LEGACY_VERSION, createBlockStorage, deriveDataFromStorage, getPluginData, getStorageData, isBlockStorage, migrateBlockStorage, normalizeBlockStorage, updateStorageData };\n\n//# sourceMappingURL=block_storage.js.map","import { DATA_MODEL_LEGACY_VERSION } from \"./block_storage.js\";\n//#region src/block_migrations.ts\n/** Create a DataVersioned wrapper with correct shape */\nfunction makeVersionedData(version, data) {\n\treturn {\n\t\tversion,\n\t\tdata\n\t};\n}\n/** Thrown by recover() to signal unrecoverable data. */\nvar DataUnrecoverableError = class extends Error {\n\tname = \"DataUnrecoverableError\";\n\tconstructor(dataVersion) {\n\t\tsuper(`Unknown version '${dataVersion}'`);\n\t}\n};\nfunction isDataUnrecoverableError(error) {\n\treturn error instanceof Error && error.name === \"DataUnrecoverableError\";\n}\n/**\n* Default recover function for unknown versions.\n* Use as fallback at the end of custom recover functions.\n*\n* @example\n* .recover((version, data) => {\n* if (version === 'legacy') {\n* return transformLegacyData(data);\n* }\n* return defaultRecover(version, data);\n* })\n*/\nconst defaultRecover = (version, _data) => {\n\tthrow new DataUnrecoverableError(version);\n};\n/** Symbol for internal builder creation method */\nconst FROM_BUILDER = Symbol(\"fromBuilder\");\n/**\n* Abstract base for both migration chain types.\n* Holds shared state, buildStep() helper, and init().\n* migrate() cannot be shared due to a TypeScript limitation: when the base class\n* migrate() return type is abstract, subclasses cannot narrow it without losing type safety.\n* Each subclass therefore owns its migrate() with the correct concrete return type.\n*\n* @internal\n*/\nvar MigrationChainBase = class {\n\tversionChain;\n\tmigrationSteps;\n\ttransferSteps;\n\tconstructor(state) {\n\t\tthis.versionChain = state.versionChain;\n\t\tthis.migrationSteps = state.steps;\n\t\tthis.transferSteps = state.transferSteps ?? [];\n\t}\n\t/** Appends a migration step and returns the new versionChain and steps arrays. */\n\tbuildStep(nextVersion, fn) {\n\t\tif (this.versionChain.includes(nextVersion)) throw new Error(`Duplicate version '${nextVersion}' in migration chain`);\n\t\tconst step = {\n\t\t\tfromVersion: this.versionChain[this.versionChain.length - 1],\n\t\t\ttoVersion: nextVersion,\n\t\t\tmigrate: fn\n\t\t};\n\t\treturn {\n\t\t\tversionChain: [...this.versionChain, nextVersion],\n\t\t\tsteps: [...this.migrationSteps, step]\n\t\t};\n\t}\n\t/** Validates uniqueness and records a TransferStep. */\n\tbuildTransfer(target, extract) {\n\t\tif (this.transferSteps.some((t) => t.pluginId === target.id)) throw new Error(`Duplicate transfer for plugin '${target.id}'`);\n\t\tconst entry = {\n\t\t\tpluginId: target.id,\n\t\t\tbeforeStepIndex: this.migrationSteps.length,\n\t\t\textract,\n\t\t\ttargetVersion: target.transferVersion\n\t\t};\n\t\treturn { transferSteps: [...this.transferSteps, entry] };\n\t}\n\t/** Returns recover-specific fields for DataModel construction. Overridden by WithRecover. */\n\trecoverState() {\n\t\treturn {};\n\t}\n\t/**\n\t* Finalize the DataModel with initial data factory.\n\t*\n\t* @param initialData - Factory function returning the initial state\n\t* @returns Finalized DataModel instance\n\t*/\n\tinit(initialData) {\n\t\treturn DataModel[FROM_BUILDER]({\n\t\t\tversionChain: this.versionChain,\n\t\t\tsteps: this.migrationSteps,\n\t\t\ttransferSteps: this.transferSteps,\n\t\t\tinitialDataFn: initialData,\n\t\t\t...this.recoverState()\n\t\t});\n\t}\n};\n/**\n* Migration chain after recover() or upgradeLegacy() has been called.\n* Further migrate() and transfer() calls are allowed; recover() and upgradeLegacy() are not\n* (enforced by type — no such methods on this class).\n*\n* @typeParam Current - Data type at the current point in the chain\n* @typeParam Transfers - Accumulated transfer types keyed by plugin ID\n* @internal\n*/\nvar DataModelMigrationChainWithRecover = class DataModelMigrationChainWithRecover extends MigrationChainBase {\n\trecoverFn;\n\trecoverFromIndex;\n\t/** @internal */\n\tconstructor(state) {\n\t\tsuper(state);\n\t\tthis.recoverFn = state.recoverFn;\n\t\tthis.recoverFromIndex = state.recoverFromIndex;\n\t}\n\trecoverState() {\n\t\treturn {\n\t\t\trecoverFn: this.recoverFn,\n\t\t\trecoverFromIndex: this.recoverFromIndex\n\t\t};\n\t}\n\t/**\n\t* Add a migration step. Same semantics as on the base chain.\n\t* recover() and upgradeLegacy() are not available — one has already been called.\n\t*/\n\tmigrate(nextVersion, fn) {\n\t\tconst { versionChain, steps } = this.buildStep(nextVersion, fn);\n\t\treturn new DataModelMigrationChainWithRecover({\n\t\t\tversionChain,\n\t\t\tsteps,\n\t\t\ttransferSteps: this.transferSteps,\n\t\t\trecoverFn: this.recoverFn,\n\t\t\trecoverFromIndex: this.recoverFromIndex\n\t\t});\n\t}\n\t/**\n\t* Extract data at the current chain position for seeding a new plugin.\n\t* The extract function's return type must match the plugin's transfer data type.\n\t* Duplicate plugin IDs are rejected at both type and runtime level.\n\t*/\n\ttransfer(target, extract) {\n\t\tconst { transferSteps } = this.buildTransfer(target, extract);\n\t\treturn new DataModelMigrationChainWithRecover({\n\t\t\tversionChain: this.versionChain,\n\t\t\tsteps: this.migrationSteps,\n\t\t\ttransferSteps,\n\t\t\trecoverFn: this.recoverFn,\n\t\t\trecoverFromIndex: this.recoverFromIndex\n\t\t});\n\t}\n};\n/**\n* Migration chain builder.\n* Each migrate() call advances the current data type. recover() can be called once\n* at any point — it removes itself from the returned chain so it cannot be called again.\n* Duplicate version keys throw at runtime.\n*\n* @typeParam Current - Data type at the current point in the migration chain\n* @typeParam Transfers - Accumulated transfer types keyed by plugin ID\n* @internal\n*/\nvar DataModelMigrationChain = class DataModelMigrationChain extends MigrationChainBase {\n\t/** @internal */\n\tconstructor({ versionChain, steps = [], transferSteps = [] }) {\n\t\tsuper({\n\t\t\tversionChain,\n\t\t\tsteps,\n\t\t\ttransferSteps\n\t\t});\n\t}\n\t/**\n\t* Add a migration step transforming data from the current version to the next.\n\t*\n\t* @typeParam Next - Data type of the next version\n\t* @param nextVersion - Version key to migrate to (must be unique in the chain)\n\t* @param fn - Migration function\n\t* @returns Builder with the next version as current\n\t*\n\t* @example\n\t* .migrate<BlockDataV2>(\"v2\", (v1) => ({ ...v1, labels: [] }))\n\t*/\n\tmigrate(nextVersion, fn) {\n\t\tconst { versionChain, steps } = this.buildStep(nextVersion, fn);\n\t\treturn new DataModelMigrationChain({\n\t\t\tversionChain,\n\t\t\tsteps,\n\t\t\ttransferSteps: this.transferSteps\n\t\t});\n\t}\n\t/**\n\t* Extract data at the current chain position for seeding a new plugin.\n\t* The extract function's return type must match the plugin's transfer data type.\n\t* Duplicate plugin IDs are rejected at both type and runtime level.\n\t*\n\t* Calling .transfer() on DataModelInitialChain returns DataModelMigrationChain,\n\t* which removes .upgradeLegacy() from the chain (preventing a problematic combination).\n\t*\n\t* @example\n\t* .from<V1>(\"v1\")\n\t* .transfer(tablePlugin, (v1) => ({ state: v1.tableState }))\n\t* .migrate<V2>(\"v2\", ({ tableState: _, ...rest }) => rest)\n\t*/\n\ttransfer(target, extract) {\n\t\tconst { transferSteps } = this.buildTransfer(target, extract);\n\t\treturn new DataModelMigrationChain({\n\t\t\tversionChain: this.versionChain,\n\t\t\tsteps: this.migrationSteps,\n\t\t\ttransferSteps\n\t\t});\n\t}\n\t/**\n\t* Set a recovery handler for unknown or legacy versions.\n\t*\n\t* The recover function is called when data has a version not in the migration chain.\n\t* It must return data of the type at this point in the chain (Current). Any migrate()\n\t* steps added after recover() will then run on the recovered data.\n\t*\n\t* Can only be called once — the returned chain has no recover() method.\n\t*\n\t* @param fn - Recovery function returning Current (the type at this chain position)\n\t* @returns Builder with migrate() and init() but without recover()\n\t*\n\t* @example\n\t* // Recover between migrations — recovered data goes through v3 migration\n\t* new DataModelBuilder<V1>(\"v1\")\n\t* .migrate<V2>(\"v2\", (v1) => ({ ...v1, label: \"\" }))\n\t* .recover((version, data) => {\n\t* if (version === 'legacy') return transformLegacy(data); // returns V2\n\t* return defaultRecover(version, data);\n\t* })\n\t* .migrate<V3>(\"v3\", (v2) => ({ ...v2, description: \"\" }))\n\t* .init(() => ({ count: 0, label: \"\", description: \"\" }));\n\t*/\n\trecover(fn) {\n\t\treturn new DataModelMigrationChainWithRecover({\n\t\t\tversionChain: this.versionChain,\n\t\t\tsteps: this.migrationSteps,\n\t\t\ttransferSteps: this.transferSteps,\n\t\t\trecoverFn: fn,\n\t\t\trecoverFromIndex: this.migrationSteps.length\n\t\t});\n\t}\n};\n/**\n* Initial migration chain returned by `.from()`.\n* Extends DataModelMigrationChain with `upgradeLegacy()` — available only before\n* any `.migrate()` calls, since legacy data always arrives at the initial version.\n*\n* @typeParam Current - Data type at the initial version\n* @typeParam Transfers - Accumulated transfer types keyed by plugin ID\n* @internal\n*/\nvar DataModelInitialChain = class extends DataModelMigrationChain {\n\t/**\n\t* Handle legacy V1 model state ({ args, uiState }) when upgrading a block from\n\t* BlockModel V1 to BlockModelV3.\n\t*\n\t* When a V1 block is upgraded, its stored state `{ args, uiState }` is normalized\n\t* to the internal default version. This method inserts a migration step from that\n\t* internal version to the version specified in `.from()`, using the provided typed\n\t* callback to transform the legacy shape. Non-legacy data passes through unchanged.\n\t*\n\t* Must be called right after `.from()` — not available after `.migrate()` calls.\n\t* Any `.migrate()` steps added after `upgradeLegacy()` will run on the transformed result.\n\t*\n\t* Can only be called once — the returned chain has no upgradeLegacy() method.\n\t* Mutually exclusive with recover().\n\t*\n\t* @typeParam Args - Type of the legacy block args\n\t* @typeParam UiState - Type of the legacy block uiState\n\t* @param fn - Typed transform from { args, uiState } to Current\n\t* @returns Builder with migrate() and init() but without recover() or upgradeLegacy()\n\t*\n\t* @example\n\t* type OldArgs = { inputFile: string; threshold: number };\n\t* type OldUiState = { selectedTab: string };\n\t* type BlockData = { inputFile: string; threshold: number; selectedTab: string };\n\t*\n\t* const dataModel = new DataModelBuilder()\n\t* .from<BlockData>(\"v1\")\n\t* .upgradeLegacy<OldArgs, OldUiState>(({ args, uiState }) => ({\n\t* inputFile: args.inputFile,\n\t* threshold: args.threshold,\n\t* selectedTab: uiState.selectedTab,\n\t* }))\n\t* .init(() => ({ inputFile: '', threshold: 0, selectedTab: 'main' }));\n\t*/\n\tupgradeLegacy(fn) {\n\t\tconst wrappedFn = (data) => {\n\t\t\tif (data !== null && typeof data === \"object\" && \"args\" in data) return fn(data);\n\t\t\treturn data;\n\t\t};\n\t\tconst step = {\n\t\t\tfromVersion: DATA_MODEL_LEGACY_VERSION,\n\t\t\ttoVersion: this.versionChain[0],\n\t\t\tmigrate: wrappedFn\n\t\t};\n\t\treturn new DataModelMigrationChainWithRecover({\n\t\t\tversionChain: [DATA_MODEL_LEGACY_VERSION, ...this.versionChain],\n\t\t\tsteps: [step, ...this.migrationSteps],\n\t\t\ttransferSteps: this.transferSteps.map((t) => ({\n\t\t\t\t...t,\n\t\t\t\tbeforeStepIndex: t.beforeStepIndex + 1\n\t\t\t}))\n\t\t});\n\t}\n};\n/**\n* Builder entry point for creating DataModel with type-safe migrations.\n*\n* @example\n* // Simple (no migrations):\n* const dataModel = new DataModelBuilder()\n* .from<BlockData>(\"v1\")\n* .init(() => ({ numbers: [] }));\n*\n* @example\n* // With migrations:\n* const dataModel = new DataModelBuilder()\n* .from<BlockDataV1>(\"v1\")\n* .migrate<BlockDataV2>(\"v2\", (v1) => ({ ...v1, labels: [] }))\n* .migrate<BlockDataV3>(\"v3\", (v2) => ({ ...v2, description: '' }))\n* .init(() => ({ numbers: [], labels: [], description: '' }));\n*\n* @example\n* // With recover() between migrations — recovered data goes through remaining migrations:\n* const dataModelChain = new DataModelBuilder()\n* .from<BlockDataV1>(\"v1\")\n* .migrate<BlockDataV2>(\"v2\", (v1) => ({ ...v1, labels: [] }));\n*\n* // recover() placed before the v3 migration: recovered data goes through v3\n* const dataModel = dataModelChain\n* .recover((version, data) => {\n* if (version === 'legacy' && isLegacyData(data)) return transformLegacy(data); // returns V2\n* return defaultRecover(version, data);\n* })\n* .migrate<BlockDataV3>(\"v3\", (v2) => ({ ...v2, description: '' }))\n* .init(() => ({ numbers: [], labels: [], description: '' }));\n*\n* @example\n* // With upgradeLegacy() — typed upgrade from BlockModel V1 state:\n* type OldArgs = { inputFile: string };\n* type OldUiState = { selectedTab: string };\n* type BlockData = { inputFile: string; selectedTab: string };\n*\n* const dataModel = new DataModelBuilder()\n* .from<BlockData>(\"v1\")\n* .upgradeLegacy<OldArgs, OldUiState>(({ args, uiState }) => ({\n* inputFile: args.inputFile,\n* selectedTab: uiState.selectedTab,\n* }))\n* .init(() => ({ inputFile: '', selectedTab: 'main' }));\n*/\nvar DataModelBuilder = class {\n\t/**\n\t* Start the migration chain with the given initial data type and version key.\n\t*\n\t* @typeParam T - Data type for the initial version\n\t* @param initialVersion - Version key string (e.g. \"v1\")\n\t* @returns Migration chain builder\n\t*/\n\tfrom(initialVersion) {\n\t\treturn new DataModelInitialChain({ versionChain: [initialVersion] });\n\t}\n};\n/**\n* DataModel defines the block's data structure, initial values, and migrations.\n* Used by BlockModelV3 to manage data state.\n*\n* Use `new DataModelBuilder()` to create a DataModel.\n*\n* @example\n* // With recover() between migrations:\n* // Recovered data (V2) goes through the v2→v3 migration automatically.\n* const dataModel = new DataModelBuilder()\n* .from<V1>(\"v1\")\n* .migrate<V2>(\"v2\", (v1) => ({ ...v1, label: \"\" }))\n* .recover((version, data) => {\n* if (version === \"legacy\") return transformLegacy(data); // returns V2\n* return defaultRecover(version, data);\n* })\n* .migrate<V3>(\"v3\", (v2) => ({ ...v2, description: \"\" }))\n* .init(() => ({ count: 0, label: \"\", description: \"\" }));\n*/\nvar DataModel = class DataModel {\n\t/** Latest version key — O(1) access for the common \"already current\" check. */\n\tlatestVersion;\n\t/** Maps each known version key to the index of the first step to run from it. O(1) lookup. */\n\tstepsByFromVersion;\n\tsteps;\n\ttransferSteps;\n\tinitialDataFn;\n\trecoverFn;\n\trecoverFromIndex;\n\tconstructor({ versionChain, steps, transferSteps = [], initialDataFn, recoverFn = defaultRecover, recoverFromIndex }) {\n\t\tif (versionChain.length === 0) throw new Error(\"DataModel requires at least one version key\");\n\t\tthis.latestVersion = versionChain[versionChain.length - 1];\n\t\tthis.stepsByFromVersion = new Map(versionChain.map((v, i) => [v, i]));\n\t\tthis.steps = steps;\n\t\tthis.transferSteps = transferSteps;\n\t\tthis.initialDataFn = initialDataFn;\n\t\tthis.recoverFn = recoverFn;\n\t\tthis.recoverFromIndex = recoverFromIndex ?? steps.length;\n\t}\n\t/**\n\t* Internal method for creating DataModel from builder.\n\t* Uses Symbol key to prevent external access.\n\t* @internal\n\t*/\n\tstatic [FROM_BUILDER](state) {\n\t\treturn new DataModel(state);\n\t}\n\t/**\n\t* The latest (current) version key in the migration chain.\n\t*/\n\tget version() {\n\t\treturn this.latestVersion;\n\t}\n\t/**\n\t* Get a fresh copy of the initial data.\n\t*/\n\tinitialData() {\n\t\treturn this.initialDataFn();\n\t}\n\t/**\n\t* Get initial data wrapped with current version.\n\t* Used when creating new blocks or resetting to defaults.\n\t*/\n\tgetDefaultData() {\n\t\treturn makeVersionedData(this.latestVersion, this.initialDataFn());\n\t}\n\trecoverFrom(data, version) {\n\t\tlet currentData = this.recoverFn(version, data);\n\t\tfor (let i = this.recoverFromIndex; i < this.steps.length; i++) currentData = this.steps[i].migrate(currentData);\n\t\treturn {\n\t\t\tversion: this.latestVersion,\n\t\t\tdata: currentData\n\t\t};\n\t}\n\t/**\n\t* Migrate versioned data from any version to the latest.\n\t* Collects transfer extractions at their designated chain positions.\n\t*\n\t* - If version is in chain, applies needed migrations (O(1) lookup)\n\t* - If version is unknown, attempts recovery; falls back to initial data\n\t* - If a migration step fails, throws so the caller can preserve original data\n\t*\n\t* Transfers only fire during normal step-by-step migration:\n\t* - Recovery path: returns empty transfers\n\t* - Fast-path (already at latest): returns empty transfers\n\t*\n\t* @param versioned - Data with version tag\n\t* @returns Migrated data at the latest version with transfer record\n\t* @throws If a migration step from a known version fails\n\t*/\n\tmigrate(versioned) {\n\t\tconst { version: fromVersion, data } = versioned;\n\t\tif (fromVersion === this.latestVersion) return {\n\t\t\tversion: this.latestVersion,\n\t\t\tdata,\n\t\t\ttransfers: {}\n\t\t};\n\t\tconst startIndex = this.stepsByFromVersion.get(fromVersion);\n\t\tif (startIndex === void 0) try {\n\t\t\treturn {\n\t\t\t\t...this.recoverFrom(data, fromVersion),\n\t\t\t\ttransfers: {}\n\t\t\t};\n\t\t} catch {\n\t\t\treturn {\n\t\t\t\t...this.getDefaultData(),\n\t\t\t\ttransfers: {}\n\t\t\t};\n\t\t}\n\t\tlet currentData = data;\n\t\tconst transfers = {};\n\t\tfor (let i = startIndex; i < this.steps.length; i++) {\n\t\t\tfor (const t of this.transferSteps) if (t.beforeStepIndex === i) transfers[t.pluginId] = {\n\t\t\t\tversion: t.targetVersion,\n\t\t\t\tdata: t.extract(currentData)\n\t\t\t};\n\t\t\tcurrentData = this.steps[i].migrate(currentData);\n\t\t}\n\t\tfor (const t of this.transferSteps) if (t.beforeStepIndex >= this.steps.length && t.beforeStepIndex >= startIndex) transfers[t.pluginId] = {\n\t\t\tversion: t.targetVersion,\n\t\t\tdata: t.extract(currentData)\n\t\t};\n\t\treturn {\n\t\t\tversion: this.latestVersion,\n\t\t\tdata: currentData,\n\t\t\ttransfers\n\t\t};\n\t}\n};\n//#endregion\nexport { DataModel, DataModelBuilder, isDataUnrecoverableError };\n\n//# sourceMappingURL=block_migrations.js.map","//#region src/internal.ts\n/** Utility code helping to identify whether the code is running in actual UI environment */\nfunction isInUI() {\n\treturn typeof globalThis.getPlatforma !== \"undefined\" || typeof globalThis.platforma !== \"undefined\";\n}\n/** Utility code helping to retrieve a platforma instance form the environment */\nfunction getPlatformaInstance(config) {\n\tif (config && typeof globalThis.getPlatforma === \"function\") return globalThis.getPlatforma(config);\n\telse if (typeof globalThis.platforma !== \"undefined\") return globalThis.platforma;\n\telse throw new Error(\"Can't get platforma instance.\");\n}\nfunction tryGetCfgRenderCtx() {\n\tif (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n\telse return void 0;\n}\nfunction getCfgRenderCtx() {\n\tif (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n\telse throw new Error(\"Not in config rendering context\");\n}\nfunction tryRegisterCallback(key, callback) {\n\tconst ctx = tryGetCfgRenderCtx();\n\tif (ctx === void 0) return false;\n\tif (key in ctx.callbackRegistry) throw new Error(`Callback with key ${key} already registered.`);\n\tctx.callbackRegistry[key] = callback;\n\treturn true;\n}\n/**\n* Registers a callback, replacing any existing callback with the same key.\n* Use this for callbacks that have a default value but can be overridden.\n*\n* @param key - The callback registry key\n* @param callback - The callback function to register\n* @returns true if registered, false if not in render context\n*/\nfunction replaceCallback(key, callback) {\n\tconst ctx = tryGetCfgRenderCtx();\n\tif (ctx === void 0) return false;\n\tctx.callbackRegistry[key] = callback;\n\treturn true;\n}\n/** Creates a ConfigRenderLambda descriptor without registering a callback. */\nfunction createRenderLambda(opts) {\n\tconst { handle, ...flags } = opts;\n\treturn {\n\t\t__renderLambda: true,\n\t\thandle,\n\t\t...flags\n\t};\n}\n/** Registers a callback and returns a ConfigRenderLambda descriptor. */\nfunction createAndRegisterRenderLambda(opts, replace) {\n\tconst { handle, lambda, ...flags } = opts;\n\tif (replace) replaceCallback(handle, lambda);\n\telse tryRegisterCallback(handle, lambda);\n\treturn createRenderLambda({\n\t\thandle,\n\t\t...flags\n\t});\n}\nconst futureResolves = /* @__PURE__ */ new Map();\nfunction registerFutureAwait(handle, onResolve) {\n\tif (!(handle in getCfgRenderCtx().callbackRegistry)) {\n\t\tgetCfgRenderCtx().callbackRegistry[handle] = (value) => {\n\t\t\tfor (const res of futureResolves.get(handle)) res(value);\n\t\t};\n\t\tfutureResolves.set(handle, []);\n\t}\n\tfutureResolves.get(handle).push(onResolve);\n}\n//#endregion\nexport { createAndRegisterRenderLambda, createRenderLambda, getCfgRenderCtx, getPlatformaInstance, isInUI, registerFutureAwait, tryRegisterCallback };\n\n//# sourceMappingURL=internal.js.map","import { createRenderLambda, tryRegisterCallback } from \"./internal.js\";\n//#region src/block_storage_facade.ts\n/**\n* The current facade version. This value is used for `requiresModelAPIVersion`\n* feature flag in BlockModelV3.\n*/\nconst BLOCK_STORAGE_FACADE_VERSION = 2;\n/**\n* All facade callback names as constants.\n* These are the source of truth - the interface is derived from these.\n*\n* IMPORTANT: When adding a new callback:\n* 1. Add the constant here\n* 2. Add the callback signature to FacadeCallbackTypes below\n* 3. The BlockStorageFacade type will automatically include it\n*/\nconst BlockStorageFacadeCallbacks = {\n\tStorageApplyUpdate: \"__pl_storage_applyUpdate\",\n\tStorageDebugView: \"__pl_storage_debugView\",\n\tStorageMigrate: \"__pl_storage_migrate\",\n\tArgsDerive: \"__pl_args_derive\",\n\tPrerunArgsDerive: \"__pl_prerunArgs_derive\",\n\tStorageInitial: \"__pl_storage_initial\"\n};\n/**\n* Creates a map of lambda handles from a callbacks constant object.\n* Keys are the callback string values (e.g., '__pl_storage_applyUpdate').\n*/\nfunction createFacadeHandles(callbacks) {\n\treturn Object.fromEntries(Object.values(callbacks).map((handle) => [handle, createRenderLambda({ handle })]));\n}\n/**\n* Lambda handles for facade callbacks.\n* Used by the middle layer to invoke callbacks via executeSingleLambda().\n*/\nconst BlockStorageFacadeHandles = createFacadeHandles(BlockStorageFacadeCallbacks);\n/** Register all facade callbacks at once. Ensures all required callbacks are provided. */\nfunction registerFacadeCallbacks(callbacks) {\n\tfor (const key of Object.values(BlockStorageFacadeCallbacks)) tryRegisterCallback(key, callbacks[key]);\n}\n//#endregion\nexport { BLOCK_STORAGE_FACADE_VERSION, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, registerFacadeCallbacks };\n\n//# sourceMappingURL=block_storage_facade.js.map","//#region src/config/actions.ts\nfunction primitiveToConfig(value) {\n\tif (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || value === null) return getImmediate(value);\n\telse return value;\n}\nfunction getFromCfg(variable) {\n\treturn {\n\t\ttype: \"GetFromCtx\",\n\t\tvariable\n\t};\n}\nfunction isolate(cfg) {\n\treturn {\n\t\ttype: \"Isolate\",\n\t\tcfg\n\t};\n}\nconst Args = getFromCfg(\"$args\");\nconst It = getFromCfg(\"$it\");\nconst MainOutputs = getFromCfg(\"$prod\");\nconst StagingOutputs = getFromCfg(\"$staging\");\nconst UiState = getFromCfg(\"$ui\");\nfunction getImmediate(value) {\n\treturn {\n\t\ttype: \"Immediate\",\n\t\tvalue\n\t};\n}\nfunction makeObject(template) {\n\tconst normalizedTemplate = {};\n\tfor (const [k, cfg] of Object.entries(template)) normalizedTemplate[k] = primitiveToConfig(cfg);\n\treturn {\n\t\ttype: \"MakeObject\",\n\t\ttemplate: normalizedTemplate\n\t};\n}\nfunction makeArray(...template) {\n\tconst normalizedTemplate = [];\n\tfor (const cfg of template) normalizedTemplate.push(primitiveToConfig(cfg));\n\treturn {\n\t\ttype: \"MakeArray\",\n\t\ttemplate: normalizedTemplate\n\t};\n}\nfunction getJsonField(source, field) {\n\treturn {\n\t\ttype: \"GetJsonField\",\n\t\tsource: primitiveToConfig(source),\n\t\tfield: primitiveToConfig(field)\n\t};\n}\nfunction mapRecordValues(source, mapping, itVar = \"$it\") {\n\treturn {\n\t\ttype: \"MapRecordValues\",\n\t\tsource,\n\t\tmapping,\n\t\titVar\n\t};\n}\nfunction mapArrayValues(source, mapping, itVar = \"$it\") {\n\treturn {\n\t\ttype: \"MapArrayValues\",\n\t\tsource,\n\t\tmapping,\n\t\titVar\n\t};\n}\nfunction flatten(source) {\n\treturn {\n\t\ttype: \"Flatten\",\n\t\tsource\n\t};\n}\nfunction isEmpty(arg) {\n\treturn {\n\t\ttype: \"IsEmpty\",\n\t\targ\n\t};\n}\nfunction not(operand) {\n\treturn {\n\t\ttype: \"Not\",\n\t\toperand\n\t};\n}\nfunction and(operand1, operand2) {\n\treturn {\n\t\ttype: \"And\",\n\t\toperand1,\n\t\toperand2\n\t};\n}\nfunction or(operand1, operand2) {\n\treturn {\n\t\ttype: \"Or\",\n\t\toperand1,\n\t\toperand2\n\t};\n}\nfunction getResourceField(source, field) {\n\treturn {\n\t\ttype: \"GetResourceField\",\n\t\tsource: primitiveToConfig(source),\n\t\tfield: primitiveToConfig(field)\n\t};\n}\nfunction getResourceValueAsJson() {\n\treturn function(source) {\n\t\treturn {\n\t\t\ttype: \"GetResourceValueAsJson\",\n\t\t\tsource: primitiveToConfig(source)\n\t\t};\n\t};\n}\nfunction mapResourceFields(source, mapping, itVar = \"$it\") {\n\treturn {\n\t\ttype: \"MapResourceFields\",\n\t\tsource,\n\t\tmapping,\n\t\titVar\n\t};\n}\nfunction getBlobContent(source, range) {\n\treturn {\n\t\ttype: \"GetBlobContent\",\n\t\trange,\n\t\tsource: primitiveToConfig(source)\n\t};\n}\nfunction getBlobContentAsString(source, range) {\n\treturn {\n\t\ttype: \"GetBlobContentAsString\",\n\t\trange,\n\t\tsource: primitiveToConfig(source)\n\t};\n}\nfunction getBlobContentAsJson() {\n\treturn function(source, range) {\n\t\treturn {\n\t\t\ttype: \"GetBlobContentAsJson\",\n\t\t\trange,\n\t\t\tsource: primitiveToConfig(source)\n\t\t};\n\t};\n}\nfunction getDownloadedBlobContent(source) {\n\treturn {\n\t\ttype: \"GetDownloadedBlobContent\",\n\t\tsource: primitiveToConfig(source)\n\t};\n}\nfunction getOnDemandBlobContent(source) {\n\treturn {\n\t\ttype: \"GetOnDemandBlobContent\",\n\t\tsource: primitiveToConfig(source)\n\t};\n}\nfunction extractArchiveAndGetURL(source, format) {\n\treturn {\n\t\ttype: \"ExtractArchiveAndGetURL\",\n\t\tformat,\n\t\tsource: primitiveToConfig(source)\n\t};\n}\nfunction getImportProgress(source) {\n\treturn {\n\t\ttype: \"GetImportProgress\",\n\t\tsource: primitiveToConfig(source)\n\t};\n}\nfunction getLastLogs(source, lines) {\n\treturn {\n\t\ttype: \"GetLastLogs\",\n\t\tsource: primitiveToConfig(source),\n\t\tlines\n\t};\n}\nfunction getProgressLog(source, patternToSearch) {\n\treturn {\n\t\ttype: \"GetProgressLog\",\n\t\tsource: primitiveToConfig(source),\n\t\tpatternToSearch\n\t};\n}\nfunction getProgressLogWithInfo(source, patternToSearch) {\n\treturn {\n\t\ttype: \"GetProgressLogWithInfo\",\n\t\tsource: primitiveToConfig(source),\n\t\tpatternToSearch\n\t};\n}\nfunction getLogHandle(source) {\n\treturn {\n\t\ttype: \"GetLogHandle\",\n\t\tsource: primitiveToConfig(source)\n\t};\n}\n//#endregion\nexport { Args, It, MainOutputs, StagingOutputs, UiState, and, extractArchiveAndGetURL, flatten, getBlobContent, getBlobContentAsJson, getBlobContentAsString, getDownloadedBlobContent, getFromCfg, getImmediate, getImportProgress, getJsonField, getLastLogs, getLogHandle, getOnDemandBlobContent, getProgressLog, getProgressLogWithInfo, getResourceField, getResourceValueAsJson, isEmpty, isolate, makeArray, makeObject, mapArrayValues, mapRecordValues, mapResourceFields, not, or };\n\n//# sourceMappingURL=actions.js.map","import { registerFutureAwait } from \"../internal.js\";\n//#region src/render/future.ts\nvar FutureRef = class FutureRef {\n\tisResolved = false;\n\tresolvedValue;\n\tconstructor(handle, postProcess = (v) => v) {\n\t\tthis.handle = handle;\n\t\tthis.postProcess = postProcess;\n\t\tregisterFutureAwait(handle, (value) => {\n\t\t\tthis.resolvedValue = postProcess(value);\n\t\t\tthis.isResolved = true;\n\t\t});\n\t}\n\tmap(mapping) {\n\t\treturn new FutureRef(this.handle, (v) => mapping(this.postProcess(v)));\n\t}\n\tmapDefined(mapping) {\n\t\treturn new FutureRef(this.handle, (v) => {\n\t\t\tconst vv = this.postProcess(v);\n\t\t\treturn vv ? mapping(vv) : void 0;\n\t\t});\n\t}\n\ttoJSON() {\n\t\treturn this.isResolved ? this.resolvedValue : { __awaited_futures__: [this.handle] };\n\t}\n};\n//#endregion\nexport { FutureRef };\n\n//# sourceMappingURL=future.js.map","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","import { z } from \"zod\";\n//#region src/bmodel/code.ts\nconst Code = z.object({\n\ttype: z.literal(\"plain\"),\n\tcontent: z.string()\n});\n//#endregion\nexport { Code };\n\n//# sourceMappingURL=code.js.map","import { z } from \"zod\";\n//#region src/drivers/blob.ts\n/** Range in bytes, from should be less than to. */\nconst RangeBytes = z.object({\n\tfrom: z.number().min(0),\n\tto: z.number().min(1)\n});\nfunction newRangeBytesOpt(from, to) {\n\tif (from == void 0 || to == void 0) return;\n\tconst range = {\n\t\tfrom,\n\t\tto\n\t};\n\tvalidateRangeBytes(range, \"newRangeBytesOpt\");\n\treturn range;\n}\nfunction validateRangeBytes(range, errMsg) {\n\tif (range.from < 0 || range.from >= range.to) throw new Error(`${errMsg}: invalid bytes range: ${range}`);\n}\n//#endregion\nexport { RangeBytes, newRangeBytesOpt, validateRangeBytes };\n\n//# sourceMappingURL=blob.js.map","//#region src/util.ts\nfunction assertNever(x) {\n\tthrow new Error(\"Unexpected object: \" + x);\n}\n/**\n* Return unique entries of the array by the provided id\n* For each id, the last entry is kept\n*/\nfunction uniqueBy(array, makeId) {\n\treturn [...new Map(array.map((e) => [makeId(e), e])).values()];\n}\n//#endregion\nexport { assertNever, uniqueBy };\n\n//# sourceMappingURL=util.js.map","import { assertNever } from \"../../util.js\";\n//#region src/drivers/pframe/data_info.ts\n/**\n* Type guard function that checks if the given value is a valid DataInfo.\n*\n* @param value - The value to check\n* @returns True if the value is a valid DataInfo, false otherwise\n*/\nfunction isDataInfo(value) {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst data = value;\n\tif (!(\"type\" in data)) return false;\n\tswitch (data.type) {\n\t\tcase \"Json\": return typeof data.keyLength === \"number\" && data.data !== void 0 && typeof data.data === \"object\";\n\t\tcase \"JsonPartitioned\":\n\t\tcase \"BinaryPartitioned\":\n\t\tcase \"ParquetPartitioned\": return typeof data.partitionKeyLength === \"number\" && data.parts !== void 0 && typeof data.parts === \"object\";\n\t\tdefault: return false;\n\t}\n}\nfunction mapDataInfo(dataInfo, mapFn) {\n\tif (dataInfo === void 0) return;\n\tswitch (dataInfo.type) {\n\t\tcase \"Json\": return dataInfo;\n\t\tcase \"JsonPartitioned\": {\n\t\t\tconst newParts = {};\n\t\t\tfor (const [key, blob] of Object.entries(dataInfo.parts)) newParts[key] = mapFn(blob);\n\t\t\treturn {\n\t\t\t\t...dataInfo,\n\t\t\t\tparts: newParts\n\t\t\t};\n\t\t}\n\t\tcase \"BinaryPartitioned\": {\n\t\t\tconst newParts = {};\n\t\t\tfor (const [key, chunk] of Object.entries(dataInfo.parts)) newParts[key] = {\n\t\t\t\tindex: mapFn(chunk.index),\n\t\t\t\tvalues: mapFn(chunk.values)\n\t\t\t};\n\t\t\treturn {\n\t\t\t\t...dataInfo,\n\t\t\t\tparts: newParts\n\t\t\t};\n\t\t}\n\t\tcase \"ParquetPartitioned\": {\n\t\t\tconst newParts = {};\n\t\t\tfor (const [key, blob] of Object.entries(dataInfo.parts)) newParts[key] = mapFn(blob);\n\t\t\treturn {\n\t\t\t\t...dataInfo,\n\t\t\t\tparts: newParts\n\t\t\t};\n\t\t}\n\t}\n}\n/**\n* @param dataInfo - The source DataInfo object\n* @param cb - Callback, function that have access to every blob to visit them all\n* @returns Nothing\n*/\nfunction visitDataInfo(dataInfo, cb) {\n\tswitch (dataInfo.type) {\n\t\tcase \"Json\": break;\n\t\tcase \"JsonPartitioned\":\n\t\t\tObject.values(dataInfo.parts).forEach(cb);\n\t\t\tbreak;\n\t\tcase \"BinaryPartitioned\":\n\t\t\tObject.values(dataInfo.parts).forEach((chunk) => {\n\t\t\t\tcb(chunk.index);\n\t\t\t\tcb(chunk.values);\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"ParquetPartitioned\":\n\t\t\tObject.values(dataInfo.parts).forEach(cb);\n\t\t\tbreak;\n\t}\n}\n/**\n* Type guard function that checks if the given value is a valid DataInfoEntries.\n*\n* @param value - The value to check\n* @returns True if the value is a valid DataInfoEntries, false otherwise\n*/\nfunction isDataInfoEntries(value) {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst data = value;\n\tif (!(\"type\" in data)) return false;\n\tswitch (data.type) {\n\t\tcase \"Json\": return typeof data.keyLength === \"number\" && Array.isArray(data.data);\n\t\tcase \"JsonPartitioned\":\n\t\tcase \"BinaryPartitioned\":\n\t\tcase \"ParquetPartitioned\": return typeof data.partitionKeyLength === \"number\" && Array.isArray(data.parts);\n\t\tdefault: return false;\n\t}\n}\n/**\n* Type guard function that checks if the given value is a valid PartitionedDataInfoEntries.\n*\n* @template Blob - Type parameter representing the storage reference type\n* @param value - The value to check\n* @returns True if the value is a valid PartitionedDataInfoEntries, false otherwise\n*/\nfunction isPartitionedDataInfoEntries(value) {\n\tif (!isDataInfoEntries(value)) return false;\n\tswitch (value.type) {\n\t\tcase \"JsonPartitioned\":\n\t\tcase \"BinaryPartitioned\":\n\t\tcase \"ParquetPartitioned\": return true;\n\t\tdefault: return false;\n\t}\n}\n/**\n* Converts DataInfo to DataInfoEntries\n*\n* @param dataInfo - The record-based DataInfo object\n* @returns The equivalent entry-based DataInfoEntries object\n*/\nfunction dataInfoToEntries(dataInfo) {\n\tswitch (dataInfo.type) {\n\t\tcase \"Json\": return {\n\t\t\ttype: \"Json\",\n\t\t\tkeyLength: dataInfo.keyLength,\n\t\t\tdata: Object.entries(dataInfo.data).map(([keyStr, value]) => {\n\t\t\t\treturn {\n\t\t\t\t\tkey: JSON.parse(keyStr),\n\t\t\t\t\tvalue\n\t\t\t\t};\n\t\t\t})\n\t\t};\n\t\tcase \"JsonPartitioned\": return {\n\t\t\ttype: \"JsonPartitioned\",\n\t\t\tpartitionKeyLength: dataInfo.partitionKeyLength,\n\t\t\tparts: Object.entries(dataInfo.parts).map(([keyStr, blob]) => {\n\t\t\t\treturn {\n\t\t\t\t\tkey: JSON.parse(keyStr),\n\t\t\t\t\tvalue: blob\n\t\t\t\t};\n\t\t\t})\n\t\t};\n\t\tcase \"BinaryPartitioned\": return {\n\t\t\ttype: \"BinaryPartitioned\",\n\t\t\tpartitionKeyLength: dataInfo.partitionKeyLength,\n\t\t\tparts: Object.entries(dataInfo.parts).map(([keyStr, chunk]) => {\n\t\t\t\treturn {\n\t\t\t\t\tkey: JSON.parse(keyStr),\n\t\t\t\t\tvalue: chunk\n\t\t\t\t};\n\t\t\t})\n\t\t};\n\t\tcase \"ParquetPartitioned\": return {\n\t\t\ttype: \"ParquetPartitioned\",\n\t\t\tpartitionKeyLength: dataInfo.partitionKeyLength,\n\t\t\tparts: Object.entries(dataInfo.parts).map(([keyStr, blob]) => {\n\t\t\t\treturn {\n\t\t\t\t\tkey: JSON.parse(keyStr),\n\t\t\t\t\tvalue: blob\n\t\t\t\t};\n\t\t\t})\n\t\t};\n\t\tdefault: assertNever(dataInfo);\n\t}\n}\n/**\n* Converts DataInfoEntries to DataInfo\n*\n* @param dataInfoEntries - The entry-based DataInfoEntries object\n* @returns The equivalent record-based DataInfo object\n*/\nfunction entriesToDataInfo(dataInfoEntries) {\n\tswitch (dataInfoEntries.type) {\n\t\tcase \"Json\": return {\n\t\t\ttype: \"Json\",\n\t\t\tkeyLength: dataInfoEntries.keyLength,\n\t\t\tdata: Object.fromEntries(dataInfoEntries.data.map(({ key, value }) => [JSON.stringify(key), value]))\n\t\t};\n\t\tcase \"JsonPartitioned\": return {\n\t\t\ttype: \"JsonPartitioned\",\n\t\t\tpartitionKeyLength: dataInfoEntries.partitionKeyLength,\n\t\t\tparts: Object.fromEntries(dataInfoEntries.parts.map(({ key, value }) => [JSON.stringify(key), value]))\n\t\t};\n\t\tcase \"BinaryPartitioned\": return {\n\t\t\ttype: \"BinaryPartitioned\",\n\t\t\tpartitionKeyLength: dataInfoEntries.partitionKeyLength,\n\t\t\tparts: Object.fromEntries(dataInfoEntries.parts.map(({ key, value }) => [JSON.stringify(key), value]))\n\t\t};\n\t\tcase \"ParquetPartitioned\": return {\n\t\t\ttype: \"ParquetPartitioned\",\n\t\t\tpartitionKeyLength: dataInfoEntries.partitionKeyLength,\n\t\t\tparts: Object.fromEntries(dataInfoEntries.parts.map(({ key, value }) => [JSON.stringify(key), value]))\n\t\t};\n\t\tdefault: assertNever(dataInfoEntries);\n\t}\n}\nfunction mapDataInfoEntries(dataInfoEntries, mapFn) {\n\tif (dataInfoEntries === void 0) return;\n\tswitch (dataInfoEntries.type) {\n\t\tcase \"Json\": return dataInfoEntries;\n\t\tcase \"JsonPartitioned\": return {\n\t\t\t...dataInfoEntries,\n\t\t\tparts: dataInfoEntries.parts.map((entry) => ({\n\t\t\t\tkey: entry.key,\n\t\t\t\tvalue: mapFn(entry.value)\n\t\t\t}))\n\t\t};\n\t\tcase \"BinaryPartitioned\": return {\n\t\t\t...dataInfoEntries,\n\t\t\tparts: dataInfoEntries.parts.map((entry) => ({\n\t\t\t\tkey: entry.key,\n\t\t\t\tvalue: {\n\t\t\t\t\tindex: mapFn(entry.value.index),\n\t\t\t\t\tvalues: mapFn(entry.value.values)\n\t\t\t\t}\n\t\t\t}))\n\t\t};\n\t\tcase \"ParquetPartitioned\": return {\n\t\t\t...dataInfoEntries,\n\t\t\tparts: dataInfoEntries.parts.map((entry) => ({\n\t\t\t\tkey: entry.key,\n\t\t\t\tvalue: mapFn(entry.value)\n\t\t\t}))\n\t\t};\n\t}\n}\n//#endregion\nexport { dataInfoToEntries, entriesToDataInfo, isDataInfo, isDataInfoEntries, isPartitionedDataInfoEntries, mapDataInfo, mapDataInfoEntries, visitDataInfo };\n\n//# sourceMappingURL=data_info.js.map","//#region src/errors.ts\n/**\n* Just for convenience, usually it is an Error with name 'AbortError'\n*/\nvar AbortError = class extends Error {\n\tname = \"AbortError\";\n};\n/**\n* Throw this to show a message without stack trace in UI\n*/\nvar UiError = class extends Error {\n\tname = \"UiError\";\n};\nfunction isAbortError(error) {\n\treturn error instanceof Error && error.name === \"AbortError\";\n}\nfunction hasAbortError(error) {\n\tif (!(error instanceof Error)) return false;\n\treturn error.name === \"AbortError\" || hasAbortError(error.cause);\n}\nfunction isAggregateError(error) {\n\treturn error instanceof Error && error.name === \"AggregateError\";\n}\nvar ServiceError = class extends Error {\n\tname = \"ServiceError\";\n};\nfunction isServiceError(error) {\n\treturn error instanceof Error && (error.name === \"ServiceError\" || error.name.startsWith(\"ServiceError.\"));\n}\nvar ServiceInvalidIdError = class extends ServiceError {\n\tname = \"ServiceError.InvalidId\";\n};\nfunction isServiceInvalidIdError(error) {\n\treturn error instanceof Error && error.name === \"ServiceError.InvalidId\";\n}\nvar ServiceAlreadyRegisteredError = class extends ServiceError {\n\tname = \"ServiceError.AlreadyRegistered\";\n};\nfunction isServiceAlreadyRegisteredError(error) {\n\treturn error instanceof Error && error.name === \"ServiceError.AlreadyRegistered\";\n}\nvar ServiceInjectionError = class extends ServiceError {\n\tname = \"ServiceError.Injection\";\n};\nfunction isServiceInjectionError(error) {\n\treturn error instanceof Error && error.name === \"ServiceError.Injection\";\n}\nvar ServiceNotRegisteredError = class extends ServiceError {\n\tname = \"ServiceError.NotRegistered\";\n};\nfunction isServiceNotRegisteredError(error) {\n\treturn error instanceof Error && error.name === \"ServiceError.NotRegistered\";\n}\nvar ServiceMethodNotFoundError = class extends ServiceError {\n\tname = \"ServiceError.MethodNotFound\";\n};\nfunction isServiceMethodNotFoundError(error) {\n\treturn error instanceof Error && error.name === \"ServiceError.MethodNotFound\";\n}\nvar PFrameError = class extends Error {\n\tname = \"PFrameError\";\n};\nfunction isPFrameError(error) {\n\treturn error instanceof Error && error.name === \"PFrameError\";\n}\nvar PFrameDriverError = class extends PFrameError {\n\tname = \"PFrameError.Driver\";\n};\nfunction isPFrameDriverError(error) {\n\treturn error instanceof Error && error.name === \"PFrameError.Driver\";\n}\nvar PFrameSpecDriverError = class extends PFrameError {\n\tname = \"PFrameError.SpecDriver\";\n};\nfunction isPFrameSpecDriverError(error) {\n\treturn error instanceof Error && error.name === \"PFrameError.SpecDriver\";\n}\nfunction stringifyValue(value) {\n\tif (typeof value === \"string\") return `String value was thrown: ${value}`;\n\tif (value && typeof value === \"object\") try {\n\t\treturn `Plain object was thrown: ${JSON.stringify(value)}`;\n\t} catch (jsonError) {\n\t\treturn `Non-serializable object was thrown (JSON.stringify failed: ${jsonError instanceof Error ? jsonError.message : String(jsonError)}): ${String(value)}`;\n\t}\n\treturn String(`Non-Error value (${typeof value}) was thrown: ${value}`);\n}\nfunction ensureError(value) {\n\tif (value instanceof Error) return value;\n\treturn new Error(stringifyValue(value));\n}\nfunction deserializeError(obj) {\n\tconst cause = obj.cause ? deserializeError(obj.cause) : void 0;\n\tconst error = new Error(obj.message, cause !== void 0 ? { cause } : void 0);\n\terror.name = obj.name || \"Error\";\n\terror.stack = obj.stack;\n\treturn error;\n}\nfunction serializeError(e) {\n\tconst error = ensureError(e);\n\tconst cause = error.cause ? serializeError(error.cause) : void 0;\n\treturn {\n\t\tname: error.name,\n\t\tmessage: error.message,\n\t\tstack: error.stack,\n\t\t...error.cause !== void 0 && { cause }\n\t};\n}\nfunction unwrapResult(result) {\n\tif (result.error) throw result.error instanceof Error ? result.error : deserializeError(result.error);\n\treturn result.value;\n}\nfunction serializeResult(result) {\n\tif (result.error) return { error: serializeError(result.error) };\n\treturn { value: result.value };\n}\nfunction deserializeResult(result) {\n\tif (result.error) return { error: deserializeError(result.error) };\n\treturn { value: result.value };\n}\nfunction wrapCallback(callback) {\n\ttry {\n\t\treturn { value: callback() };\n\t} catch (error) {\n\t\treturn { error: ensureError(error) };\n\t}\n}\nasync function wrapAsyncCallback(callback) {\n\ttry {\n\t\treturn { value: await callback() };\n\t} catch (error) {\n\t\treturn { error: ensureError(error) };\n\t}\n}\nfunction wrapAndSerialize(callback) {\n\treturn serializeResult(wrapCallback(callback));\n}\nasync function wrapAndSerializeAsync(callback) {\n\treturn serializeResult(await wrapAsyncCallback(callback));\n}\n//#endregion\nexport { AbortError, PFrameDriverError, PFrameError, PFrameSpecDriverError, ServiceAlreadyRegisteredError, ServiceError, ServiceInjectionError, ServiceInvalidIdError, ServiceMethodNotFoundError, ServiceNotRegisteredError, UiError, deserializeError, deserializeResult, ensureError, hasAbortError, isAbortError, isAggregateError, isPFrameDriverError, isPFrameError, isPFrameSpecDriverError, isServiceAlreadyRegisteredError, isServiceError, isServiceInjectionError, isServiceInvalidIdError, isServiceMethodNotFoundError, isServiceNotRegisteredError, serializeError, serializeResult, unwrapResult, wrapAndSerialize, wrapAndSerializeAsync, wrapAsyncCallback, wrapCallback };\n\n//# sourceMappingURL=errors.js.map","/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function serialize (object) {\n if (typeof object === 'number' && isNaN(object)) {\n throw new Error('NaN is not allowed');\n }\n\n if (typeof object === 'number' && !isFinite(object)) {\n throw new Error('Infinity is not allowed');\n }\n\n if (object === null || typeof object !== 'object') {\n return JSON.stringify(object);\n }\n\n if (object.toJSON instanceof Function) {\n return serialize(object.toJSON());\n }\n\n if (Array.isArray(object)) {\n const values = object.reduce((t, cv, ci) => {\n const comma = ci === 0 ? '' : ',';\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return `${t}${comma}${serialize(value)}`;\n }, '');\n return `[${values}]`;\n }\n\n const values = Object.keys(object).sort().reduce((t, cv) => {\n if (object[cv] === undefined ||\n typeof object[cv] === 'symbol') {\n return t;\n }\n const comma = t.length === 0 ? '' : ',';\n return `${t}${comma}${serialize(cv)}:${serialize(object[cv])}`;\n }, '');\n return `{${values}}`;\n};\n","import canonicalize from \"canonicalize\";\n//#region src/json.ts\nfunction stringifyJson(value) {\n\treturn JSON.stringify(value);\n}\nfunction canonicalizeJson(value) {\n\treturn canonicalize(value);\n}\nfunction parseJson(value) {\n\treturn JSON.parse(value);\n}\nfunction parseJsonSafely(value, fallback) {\n\ttry {\n\t\treturn JSON.parse(value);\n\t} catch {\n\t\treturn fallback;\n\t}\n}\nfunction bigintReplacer(_key, value) {\n\treturn typeof value === \"bigint\" ? value.toString() : value;\n}\n//#endregion\nexport { bigintReplacer, canonicalizeJson, parseJson, parseJsonSafely, stringifyJson };\n\n//# sourceMappingURL=json.js.map","import { ensureError } from \"../../../errors.js\";\nimport { canonicalizeJson } from \"../../../json.js\";\nimport { z } from \"zod\";\n//#region src/drivers/pframe/spec/spec.ts\nconst ValueType = {\n\tInt: \"Int\",\n\tLong: \"Long\",\n\tFloat: \"Float\",\n\tDouble: \"Double\",\n\tString: \"String\",\n\tBytes: \"Bytes\"\n};\nfunction readMetadata(metadata, key) {\n\treturn metadata?.[key];\n}\nfunction readMetadataJsonOrThrow(metadata, metadataJson, key, methodNameInError = \"readMetadataJsonOrThrow\") {\n\tconst json = readMetadata(metadata, key);\n\tif (json === void 0) return void 0;\n\tconst schema = metadataJson[key];\n\ttry {\n\t\tconst value = JSON.parse(json);\n\t\treturn schema.parse(value);\n\t} catch (error) {\n\t\tthrow new Error(`${methodNameInError} failed, key: ${String(key)}, value: ${json}, error: ${ensureError(error)}`);\n\t}\n}\nfunction readMetadataJson(metadata, metadataJson, key) {\n\ttry {\n\t\treturn readMetadataJsonOrThrow(metadata, metadataJson, key);\n\t} catch {\n\t\treturn;\n\t}\n}\nconst Domain = {\n\tAlphabet: \"pl7.app/alphabet\",\n\tBlockId: \"pl7.app/blockId\",\n\tVDJ: {\n\t\tClustering: { BlockId: \"pl7.app/vdj/clustering/blockId\" },\n\t\tScClonotypeChain: { Index: \"pl7.app/vdj/scClonotypeChain/index\" }\n\t}\n};\nconst DomainJson = {};\nfunction readDomain(spec, key) {\n\treturn readMetadata(spec?.domain, key);\n}\nfunction readDomainJsonOrThrow(spec, key) {\n\treturn readMetadataJsonOrThrow(spec?.domain, DomainJson, key, \"readDomainJsonOrThrow\");\n}\nfunction readDomainJson(spec, key) {\n\treturn readMetadataJson(spec?.domain, DomainJson, key);\n}\nconst Annotation = {\n\tAxisNature: \"pl7.app/axisNature\",\n\tAlphabet: \"pl7.app/alphabet\",\n\tDescription: \"pl7.app/description\",\n\tDataStatus: \"pl7.app/dataStatus\",\n\tDiscreteValues: \"pl7.app/discreteValues\",\n\tFormat: \"pl7.app/format\",\n\tGraph: {\n\t\tAxis: {\n\t\t\tHighCardinality: \"pl7.app/graph/axis/highCardinality\",\n\t\t\tLowerLimit: \"pl7.app/graph/axis/lowerLimit\",\n\t\t\tSymmetricRange: \"pl7.app/graph/axis/symmetricRange\",\n\t\t\tUpperLimit: \"pl7.app/graph/axis/upperLimit\"\n\t\t},\n\t\tIsDenseAxis: \"pl7.app/graph/isDenseAxis\",\n\t\tIsVirtual: \"pl7.app/graph/isVirtual\",\n\t\tPalette: \"pl7.app/graph/palette\",\n\t\tThresholds: \"pl7.app/graph/thresholds\",\n\t\tTreatAbsentValuesAs: \"pl7.app/graph/treatAbsentValuesAs\"\n\t},\n\tHideDataFromUi: \"pl7.app/hideDataFromUi\",\n\tHideDataFromGraphs: \"pl7.app/hideDataFromGraphs\",\n\tIsDiscreteFilter: \"pl7.app/isDiscreteFilter\",\n\tIsAnchor: \"pl7.app/isAnchor\",\n\tIsLinkerColumn: \"pl7.app/isLinkerColumn\",\n\tIsScore: \"pl7.app/isScore\",\n\tIsSubset: \"pl7.app/isSubset\",\n\tLabel: \"pl7.app/label\",\n\tLinkLabel: \"pl7.app/linkLabel\",\n\tMax: \"pl7.app/max\",\n\tMin: \"pl7.app/min\",\n\tMultipliesBy: \"pl7.app/multipliesBy\",\n\tParents: \"pl7.app/parents\",\n\tScore: {\n\t\tDefaultCutoff: \"pl7.app/score/defaultCutoff\",\n\t\tRankingOrder: \"pl7.app/score/rankingOrder\"\n\t},\n\tSequence: {\n\t\tAnnotation: { Mapping: \"pl7.app/sequence/annotation/mapping\" },\n\t\tIsAnnotation: \"pl7.app/sequence/isAnnotation\"\n\t},\n\tTable: {\n\t\tFontFamily: \"pl7.app/table/fontFamily\",\n\t\tOrderPriority: \"pl7.app/table/orderPriority\",\n\t\tVisibility: \"pl7.app/table/visibility\",\n\t\tInfo: \"pl7.app/table/info\"\n\t},\n\tTrace: \"pl7.app/trace\",\n\tVDJ: {\n\t\tIsAssemblingFeature: \"pl7.app/vdj/isAssemblingFeature\",\n\t\tIsMainSequence: \"pl7.app/vdj/isMainSequence\"\n\t}\n};\nconst TraceEntrySchema = z.object({\n\ttype: z.string(),\n\tlabel: z.string()\n}).catchall(z.unknown());\nconst ValueTypeSchema = z.enum([\n\t\"Int\",\n\t\"Long\",\n\t\"Float\",\n\t\"Double\",\n\t\"String\"\n]);\nconst AnnotationJson = {\n\t[Annotation.DiscreteValues]: z.array(z.string()).or(z.array(z.number())),\n\t[Annotation.Graph.Axis.HighCardinality]: z.boolean(),\n\t[Annotation.Graph.Axis.LowerLimit]: z.number(),\n\t[Annotation.Graph.Axis.UpperLimit]: z.number(),\n\t[Annotation.Graph.Axis.SymmetricRange]: z.boolean(),\n\t[Annotation.Graph.IsDenseAxis]: z.boolean(),\n\t[Annotation.Graph.Palette]: z.object({\n\t\tmapping: z.record(z.number()),\n\t\tname: z.string()\n\t}),\n\t[Annotation.Graph.Thresholds]: z.array(z.object({\n\t\tcolumnId: z.object({\n\t\t\tvalueType: ValueTypeSchema,\n\t\t\tname: z.string()\n\t\t}),\n\t\tvalue: z.number()\n\t})),\n\t[Annotation.Graph.TreatAbsentValuesAs]: z.number(),\n\t[Annotation.Graph.IsVirtual]: z.boolean(),\n\t[Annotation.HideDataFromUi]: z.boolean(),\n\t[Annotation.HideDataFromGraphs]: z.boolean(),\n\t[Annotation.IsDiscreteFilter]: z.boolean(),\n\t[Annotation.IsLinkerColumn]: z.boolean(),\n\t[Annotation.IsSubset]: z.boolean(),\n\t[Annotation.Max]: z.number(),\n\t[Annotation.Min]: z.number(),\n\t[Annotation.MultipliesBy]: z.array(z.string()),\n\t[Annotation.Parents]: z.array(z.string()),\n\t[Annotation.Sequence.Annotation.Mapping]: z.record(z.string(), z.string()),\n\t[Annotation.Sequence.IsAnnotation]: z.boolean(),\n\t[Annotation.Table.OrderPriority]: z.number(),\n\t[Annotation.Trace]: z.array(TraceEntrySchema),\n\t[Annotation.VDJ.IsAssemblingFeature]: z.boolean()\n};\nfunction readAnnotation(spec, key) {\n\treturn readMetadata(spec?.annotations, key);\n}\nfunction readAnnotationJsonOrThrow(spec, key) {\n\treturn readMetadataJsonOrThrow(spec?.annotations, AnnotationJson, key, \"readAnnotationJsonOrThrow\");\n}\nfunction readAnnotationJson(spec, key) {\n\treturn readMetadataJson(spec?.annotations, AnnotationJson, key);\n}\nfunction isLinkerColumn(column) {\n\treturn !!readAnnotationJson(column, Annotation.IsLinkerColumn);\n}\nfunction makeAxisTree(axis) {\n\treturn {\n\t\taxis,\n\t\tchildren: []\n\t};\n}\n/** Build tree by axis parents annotations */\nfunction getAxesTree(rootAxis) {\n\tconst root = makeAxisTree(rootAxis);\n\tlet nodesQ = [root];\n\twhile (nodesQ.length) {\n\t\tconst nextNodes = [];\n\t\tfor (const node of nodesQ) {\n\t\t\tnode.children = node.axis.parentAxesSpec.map(makeAxisTree);\n\t\t\tnextNodes.push(...node.children);\n\t\t}\n\t\tnodesQ = nextNodes;\n\t}\n\treturn root;\n}\n/** Get set of canonicalized axisIds from axisTree */\nfunction getSetFromAxisTree(tree) {\n\tconst set = new Set([canonicalizeJson(getAxisId(tree.axis))]);\n\tlet nodesQ = [tree];\n\twhile (nodesQ.length) {\n\t\tconst nextNodes = [];\n\t\tfor (const node of nodesQ) for (const parent of node.children) {\n\t\t\tset.add(canonicalizeJson(getAxisId(parent.axis)));\n\t\t\tnextNodes.push(parent);\n\t\t}\n\t\tnodesQ = nextNodes;\n\t}\n\treturn set;\n}\n/** Get array of axisSpecs from axisTree */\nfunction getArrayFromAxisTree(tree) {\n\tconst res = [tree.axis];\n\tlet nodesQ = [tree];\n\twhile (nodesQ.length) {\n\t\tconst nextNodes = [];\n\t\tfor (const node of nodesQ) for (const parent of node.children) {\n\t\t\tres.push(parent.axis);\n\t\t\tnextNodes.push(parent);\n\t\t}\n\t\tnodesQ = nextNodes;\n\t}\n\treturn res;\n}\nfunction canonicalizeAxisWithParents(axis) {\n\treturn canonicalizeJson(getArrayFromAxisTree(getAxesTree(axis)).map(getAxisId));\n}\nfunction normalizingAxesComparator(axis1, axis2) {\n\tif (axis1.name !== axis2.name) return axis1.name < axis2.name ? 1 : -1;\n\tif (axis1.type !== axis2.type) return axis1.type < axis2.type ? 1 : -1;\n\tconst domain1 = canonicalizeJson(axis1.domain ?? {});\n\tconst domain2 = canonicalizeJson(axis2.domain ?? {});\n\tif (domain1 !== domain2) return domain1 < domain2 ? 1 : -1;\n\tconst contextDomain1 = canonicalizeJson(axis1.contextDomain ?? {});\n\tconst contextDomain2 = canonicalizeJson(axis2.contextDomain ?? {});\n\tif (contextDomain1 !== contextDomain2) return contextDomain1 < contextDomain2 ? 1 : -1;\n\tconst parents1 = canonicalizeAxisWithParents(axis1);\n\tconst parents2 = canonicalizeAxisWithParents(axis2);\n\tif (parents1 !== parents2) return parents1 < parents2 ? 1 : -1;\n\tconst annotation1 = canonicalizeJson(axis1.annotations ?? {});\n\tconst annotation2 = canonicalizeJson(axis2.annotations ?? {});\n\tif (annotation1 !== annotation2) return annotation1 < annotation2 ? 1 : -1;\n\treturn 0;\n}\nfunction parseParentsFromAnnotations(axis) {\n\tconst parentsList = readAnnotationJson(axis, Annotation.Parents);\n\tif (parentsList === void 0) return [];\n\treturn parentsList;\n}\nfunction sortParentsDeep(axisSpec) {\n\taxisSpec.parentAxesSpec.forEach(sortParentsDeep);\n\taxisSpec.parentAxesSpec.sort(normalizingAxesComparator);\n}\nfunction hasCycleOfParents(axisSpec) {\n\tlet nodesQ = [makeAxisTree(axisSpec)];\n\tconst ancestors = new Set(canonicalizeJson(getAxisId(axisSpec)));\n\twhile (nodesQ.length) {\n\t\tconst nextNodes = [];\n\t\tconst levelIds = /* @__PURE__ */ new Set();\n\t\tfor (const node of nodesQ) {\n\t\t\tnode.children = node.axis.parentAxesSpec.map(makeAxisTree);\n\t\t\tfor (const child of node.children) {\n\t\t\t\tconst childId = canonicalizeJson(getAxisId(child.axis));\n\t\t\t\tif (!levelIds.has(childId)) {\n\t\t\t\t\tnextNodes.push(child);\n\t\t\t\t\tlevelIds.add(childId);\n\t\t\t\t\tif (ancestors.has(childId)) return true;\n\t\t\t\t\tancestors.add(childId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tnodesQ = nextNodes;\n\t}\n\treturn false;\n}\n/** Create list of normalized axisSpec (parents are in array of specs, not indexes) */\nfunction getNormalizedAxesList(axes) {\n\tif (!axes.length) return [];\n\tconst modifiedAxes = axes.map((axis) => {\n\t\tconst { parentAxes: _, ...copiedRest } = axis;\n\t\treturn {\n\t\t\t...copiedRest,\n\t\t\tannotations: { ...copiedRest.annotations },\n\t\t\tparentAxesSpec: []\n\t\t};\n\t});\n\taxes.forEach((axis, idx) => {\n\t\tconst modifiedAxis = modifiedAxes[idx];\n\t\tif (axis.parentAxes) modifiedAxis.parentAxesSpec = axis.parentAxes.map((idx) => modifiedAxes[idx]);\n\t\telse {\n\t\t\tconst parents = parseParentsFromAnnotations(axis).map((name) => modifiedAxes.find((axis) => axis.name === name));\n\t\t\tmodifiedAxis.parentAxesSpec = parents.some((p) => p === void 0) ? [] : parents;\n\t\t}\n\t});\n\tif (modifiedAxes.some(hasCycleOfParents)) modifiedAxes.forEach((axis) => {\n\t\taxis.parentAxesSpec = [];\n\t});\n\telse modifiedAxes.forEach((axis) => {\n\t\tsortParentsDeep(axis);\n\t});\n\treturn modifiedAxes;\n}\n/** Create list of regular axisSpec from normalized (parents are indexes, inside of current axes list) */\nfunction getDenormalizedAxesList(axesSpec) {\n\tconst idsList = axesSpec.map(canonicalizeAxisId);\n\treturn axesSpec.map((axisSpec) => {\n\t\tconst parentIdxs = axisSpec.parentAxesSpec.map(canonicalizeAxisId).map((id) => idsList.indexOf(id));\n\t\tconst { parentAxesSpec: _, ...copiedRest } = axisSpec;\n\t\tif (parentIdxs.length) return {\n\t\t\t...copiedRest,\n\t\t\tparentAxes: parentIdxs\n\t\t};\n\t\treturn copiedRest;\n\t});\n}\n/**\n* Resolve annotation-based parents (`pl7.app/parents`) to numeric `parentAxes`\n* on a column spec. Returns the spec unchanged if all axes already use numeric\n* indices or have no parent annotations.\n*/\nfunction resolveAnnotationParents(spec) {\n\tif (!spec.axesSpec.some((axis) => !!readAnnotationJson(axis, Annotation.Parents))) return spec;\n\tconst denormalized = getDenormalizedAxesList(getNormalizedAxesList(spec.axesSpec));\n\treturn {\n\t\t...spec,\n\t\taxesSpec: denormalized\n\t};\n}\nconst PColumnName = {\n\tLabel: \"pl7.app/label\",\n\tTable: { RowSelection: \"pl7.app/table/row-selection\" },\n\tVDJ: {\n\t\tLeadSelection: \"pl7.app/vdj/lead-selection\",\n\t\tRankingOrder: \"pl7.app/vdj/ranking-order\",\n\t\tSequence: \"pl7.app/vdj/sequence\"\n\t}\n};\nconst PAxisName = {\n\tSampleId: \"pl7.app/sampleId\",\n\tVDJ: {\n\t\tAssay: { SequenceId: \"pl7.app/vdj/assay/sequenceId\" },\n\t\tClusterId: \"pl7.app/vdj/clusterId\",\n\t\tClonotypeKey: \"pl7.app/vdj/clonotypeKey\",\n\t\tScClonotypeKey: \"pl7.app/vdj/scClonotypeKey\"\n\t}\n};\nfunction isLabelColumn(column) {\n\treturn column.axesSpec.length === 1 && column.name === PColumnName.Label;\n}\nfunction getPColumnSpecId(spec) {\n\treturn {\n\t\tkind: spec.kind,\n\t\tvalueType: spec.valueType,\n\t\tname: spec.name,\n\t\tdomain: spec.domain,\n\t\tcontextDomain: spec.contextDomain,\n\t\tparentAxes: spec.parentAxes,\n\t\taxesId: getAxesId(spec.axesSpec)\n\t};\n}\n/** Get column id and spec from a column */\nfunction getColumnIdAndSpec(column) {\n\treturn {\n\t\tcolumnId: column.id,\n\t\tspec: column.spec\n\t};\n}\n/** Extracts axis ids from axis spec */\nfunction getAxisId(spec) {\n\tconst { type, name, domain, contextDomain } = spec;\n\tconst result = {\n\t\ttype,\n\t\tname\n\t};\n\tif (domain && Object.entries(domain).length > 0) Object.assign(result, { domain });\n\tif (contextDomain && Object.entries(contextDomain).length > 0) Object.assign(result, { contextDomain });\n\treturn result;\n}\n/** Extracts axes ids from axes spec array from column spec */\nfunction getAxesId(spec) {\n\treturn spec.map(getAxisId);\n}\n/** Canonicalizes axis id */\nfunction canonicalizeAxisId(id) {\n\treturn canonicalizeJson(getAxisId(id));\n}\n/** Returns true if all domains from query are found in target */\nfunction matchDomain(query, target) {\n\tif (query === void 0) return target === void 0;\n\tif (target === void 0) return true;\n\tfor (const k in target) if (query[k] !== target[k]) return false;\n\treturn true;\n}\n/** Returns whether \"match\" axis id is compatible with the \"query\" */\nfunction matchAxisId(query, target) {\n\treturn query.name === target.name && matchDomain(query.domain, target.domain) && matchDomain(query.contextDomain, target.contextDomain);\n}\nfunction getTypeFromPColumnOrAxisSpec(spec) {\n\treturn \"valueType\" in spec ? spec.valueType : spec.type;\n}\nfunction isAxisId(id) {\n\treturn typeof id === \"object\" && id !== null && \"name\" in id && \"type\" in id;\n}\n//#endregion\nexport { Annotation, AnnotationJson, Domain, DomainJson, PAxisName, PColumnName, ValueType, canonicalizeAxisId, canonicalizeAxisWithParents, getArrayFromAxisTree, getAxesId, getAxesTree, getAxisId, getColumnIdAndSpec, getDenormalizedAxesList, getNormalizedAxesList, getPColumnSpecId, getSetFromAxisTree, getTypeFromPColumnOrAxisSpec, isAxisId, isLabelColumn, isLinkerColumn, matchAxisId, readAnnotation, readAnnotationJson, readAnnotationJsonOrThrow, readDomain, readDomainJson, readDomainJsonOrThrow, readMetadata, readMetadataJson, readMetadataJsonOrThrow, resolveAnnotationParents };\n\n//# sourceMappingURL=spec.js.map","import { assertNever } from \"../../../util.js\";\nimport { canonicalizeJson } from \"../../../json.js\";\n//#region src/drivers/pframe/query/utils.ts\nconst BOOLEAN_TYPES = new Set([\n\t\"numericComparison\",\n\t\"stringEquals\",\n\t\"stringContains\",\n\t\"stringContainsFuzzy\",\n\t\"stringRegex\",\n\t\"isNull\",\n\t\"not\",\n\t\"and\",\n\t\"or\",\n\t\"isIn\"\n]);\nfunction isBooleanExpression(expr) {\n\treturn BOOLEAN_TYPES.has(expr.type);\n}\n/**\n* Recursively traverses a SpecQuery tree bottom-up, applying visitor callbacks.\n*\n* Traversal order:\n* 1. Recurse into child queries\n* 2. Apply `column` to transform column references in leaf nodes\n* 3. Apply `joinEntry` to each join entry (with inner query already traversed)\n* 4. Assemble node with transformed children\n* 5. Apply `node` to the assembled node\n*/\nfunction traverseQuerySpec(query, visitor) {\n\tconst traverseEntry = (entry) => {\n\t\tconst traversed = {\n\t\t\t...entry,\n\t\t\tentry: traverseQuerySpec(entry.entry, visitor)\n\t\t};\n\t\treturn visitor.joinEntry ? visitor.joinEntry(traversed) : traversed;\n\t};\n\tlet result;\n\tswitch (query.type) {\n\t\tcase \"column\":\n\t\t\tresult = {\n\t\t\t\ttype: \"column\",\n\t\t\t\tcolumn: visitor.column(query.column)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"sparseToDenseColumn\":\n\t\t\tresult = {\n\t\t\t\t...query,\n\t\t\t\tcolumn: visitor.column(query.column)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"inlineColumn\":\n\t\t\tresult = query;\n\t\t\tbreak;\n\t\tcase \"innerJoin\":\n\t\tcase \"fullJoin\":\n\t\t\tresult = {\n\t\t\t\t...query,\n\t\t\t\tentries: query.entries.map(traverseEntry)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"outerJoin\":\n\t\t\tresult = {\n\t\t\t\t...query,\n\t\t\t\tprimary: traverseEntry(query.primary),\n\t\t\t\tsecondary: query.secondary.map(traverseEntry)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"linkerJoin\":\n\t\t\tresult = {\n\t\t\t\t...query,\n\t\t\t\tlinker: {\n\t\t\t\t\t...query.linker,\n\t\t\t\t\tcolumn: visitor.column(query.linker.column)\n\t\t\t\t},\n\t\t\t\tsecondary: query.secondary.map(traverseEntry)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"filter\":\n\t\tcase \"sort\":\n\t\tcase \"sliceAxes\":\n\t\tcase \"transformColumns\":\n\t\t\tresult = {\n\t\t\t\t...query,\n\t\t\t\tinput: traverseQuerySpec(query.input, visitor)\n\t\t\t};\n\t\t\tbreak;\n\t\tdefault: assertNever(query);\n\t}\n\treturn visitor.node ? visitor.node(result) : result;\n}\n/** Recursively maps all column references in a SpecQuery tree. */\nfunction mapSpecQueryColumns(query, cb) {\n\treturn traverseQuerySpec(query, { column: cb });\n}\n/** Collects all column references from a SpecQuery tree. */\nfunction collectSpecQueryColumns(query) {\n\tconst result = [];\n\ttraverseQuerySpec(query, { column: (c) => {\n\t\tresult.push(c);\n\t\treturn c;\n\t} });\n\treturn result;\n}\nfunction sortSpecQuery(query) {\n\treturn traverseQuerySpec(query, {\n\t\tcolumn: (c) => c,\n\t\tnode: (node) => {\n\t\t\tswitch (node.type) {\n\t\t\t\tcase \"sparseToDenseColumn\": return {\n\t\t\t\t\t...node,\n\t\t\t\t\taxes: node.axes.toSorted((a, b) => canonicalizeJson(a).localeCompare(canonicalizeJson(b)))\n\t\t\t\t};\n\t\t\t\tcase \"innerJoin\":\n\t\t\t\tcase \"fullJoin\": {\n\t\t\t\t\tconst sorted = [...node.entries].sort(cmpQueryJoinEntrySpec);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...node,\n\t\t\t\t\t\tentries: sorted\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"outerJoin\": {\n\t\t\t\t\tconst sorted = [...node.secondary].sort(cmpQueryJoinEntrySpec);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...node,\n\t\t\t\t\t\tsecondary: sorted\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"linkerJoin\": {\n\t\t\t\t\tconst sorted = [...node.secondary].sort(cmpQueryJoinEntrySpec);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...node,\n\t\t\t\t\t\tsecondary: sorted\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"sliceAxes\": return {\n\t\t\t\t\t...node,\n\t\t\t\t\taxisFilters: node.axisFilters.toSorted((a, b) => {\n\t\t\t\t\t\tconst ak = canonicalizeJson(a.axisSelector);\n\t\t\t\t\t\tconst bk = canonicalizeJson(b.axisSelector);\n\t\t\t\t\t\treturn ak < bk ? -1 : ak === bk ? 0 : 1;\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t\tdefault: return node;\n\t\t\t}\n\t\t},\n\t\tjoinEntry: (entry) => {\n\t\t\tif (entry.qualifications === void 0 || entry.qualifications.length === 0) return entry;\n\t\t\treturn {\n\t\t\t\t...entry,\n\t\t\t\tqualifications: entry.qualifications.toSorted((a, b) => {\n\t\t\t\t\tconst ak = canonicalizeJson(a.axis);\n\t\t\t\t\tconst bk = canonicalizeJson(b.axis);\n\t\t\t\t\treturn ak < bk ? -1 : ak === bk ? 0 : 1;\n\t\t\t\t})\n\t\t\t};\n\t\t}\n\t});\n}\nfunction cmpQuerySpec(lhs, rhs) {\n\tif (lhs.type !== rhs.type) return lhs.type < rhs.type ? -1 : 1;\n\tswitch (lhs.type) {\n\t\tcase \"column\": return lhs.column < rhs.column ? -1 : lhs.column === rhs.column ? 0 : 1;\n\t\tcase \"inlineColumn\": return lhs.spec.columnId < rhs.spec.columnId ? -1 : lhs.spec.columnId === rhs.spec.columnId ? 0 : 1;\n\t\tcase \"sparseToDenseColumn\": return lhs.column < rhs.column ? -1 : lhs.column === rhs.column ? 0 : 1;\n\t\tcase \"innerJoin\":\n\t\tcase \"fullJoin\": {\n\t\t\tconst rhsJoin = rhs;\n\t\t\tif (lhs.entries.length !== rhsJoin.entries.length) return lhs.entries.length - rhsJoin.entries.length;\n\t\t\tfor (let i = 0; i < lhs.entries.length; i++) {\n\t\t\t\tconst cmp = cmpQueryJoinEntrySpec(lhs.entries[i], rhsJoin.entries[i]);\n\t\t\t\tif (cmp !== 0) return cmp;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\tcase \"outerJoin\": {\n\t\t\tconst rhsOuter = rhs;\n\t\t\tconst cmp = cmpQueryJoinEntrySpec(lhs.primary, rhsOuter.primary);\n\t\t\tif (cmp !== 0) return cmp;\n\t\t\tif (lhs.secondary.length !== rhsOuter.secondary.length) return lhs.secondary.length - rhsOuter.secondary.length;\n\t\t\tfor (let i = 0; i < lhs.secondary.length; i++) {\n\t\t\t\tconst cmp = cmpQueryJoinEntrySpec(lhs.secondary[i], rhsOuter.secondary[i]);\n\t\t\t\tif (cmp !== 0) return cmp;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\tcase \"linkerJoin\": {\n\t\t\tconst rhsLinker = rhs;\n\t\t\tif (lhs.linker.column !== rhsLinker.linker.column) return lhs.linker.column < rhsLinker.linker.column ? -1 : 1;\n\t\t\tif (lhs.secondary.length !== rhsLinker.secondary.length) return lhs.secondary.length - rhsLinker.secondary.length;\n\t\t\tfor (let i = 0; i < lhs.secondary.length; i++) {\n\t\t\t\tconst cmp = cmpQueryJoinEntrySpec(lhs.secondary[i], rhsLinker.secondary[i]);\n\t\t\t\tif (cmp !== 0) return cmp;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\tcase \"sliceAxes\": return cmpQuerySpec(lhs.input, rhs.input);\n\t\tcase \"sort\": return cmpQuerySpec(lhs.input, rhs.input);\n\t\tcase \"filter\": return cmpQuerySpec(lhs.input, rhs.input);\n\t\tcase \"transformColumns\": {\n\t\t\tconst rhsTc = rhs;\n\t\t\tconst cmp = cmpQuerySpec(lhs.input, rhsTc.input);\n\t\t\tif (cmp !== 0) return cmp;\n\t\t\tconst modeCmp = lhs.mode.localeCompare(rhsTc.mode);\n\t\t\tif (modeCmp !== 0) return modeCmp;\n\t\t\treturn canonicalizeJson(lhs.columns).localeCompare(canonicalizeJson(rhsTc.columns));\n\t\t}\n\t\tdefault: assertNever(lhs);\n\t}\n}\nfunction cmpQueryJoinEntrySpec(lhs, rhs) {\n\tconst cmp = cmpQuerySpec(lhs.entry, rhs.entry);\n\tif (cmp !== 0) return cmp;\n\tconst lhsQ = lhs.qualifications ?? [];\n\tconst rhsQ = rhs.qualifications ?? [];\n\tif (lhsQ.length !== rhsQ.length) return lhsQ.length - rhsQ.length;\n\tfor (let i = 0; i < lhsQ.length; i++) {\n\t\tconst l = canonicalizeJson(lhsQ[i]);\n\t\tconst r = canonicalizeJson(rhsQ[i]);\n\t\tif (l !== r) return l < r ? -1 : 1;\n\t}\n\treturn 0;\n}\n//#endregion\nexport { collectSpecQueryColumns, isBooleanExpression, mapSpecQueryColumns, sortSpecQuery, traverseQuerySpec };\n\n//# sourceMappingURL=utils.js.map","import { assertNever } from \"../../util.js\";\nimport { canonicalizeJson } from \"../../json.js\";\nimport { getAxisId } from \"./spec/spec.js\";\nimport { mapSpecQueryColumns } from \"./query/utils.js\";\nimport \"./query/index.js\";\n//#region src/drivers/pframe/table_calculate.ts\nfunction mapPTableDef(def, cb) {\n\treturn {\n\t\t...def,\n\t\tsrc: mapJoinEntry(def.src, cb)\n\t};\n}\nfunction sortPTableDef(def) {\n\tfunction sortFilters(filters) {\n\t\treturn filters.toSorted((lhs, rhs) => {\n\t\t\tif (lhs.column.type === \"axis\" && rhs.column.type === \"axis\") return canonicalizeJson(getAxisId(lhs.column.id)) < canonicalizeJson(getAxisId(rhs.column.id)) ? -1 : 1;\n\t\t\telse if (lhs.column.type === \"column\" && rhs.column.type === \"column\") return lhs.column.id < rhs.column.id ? -1 : 1;\n\t\t\telse return lhs.column.type === \"axis\" ? -1 : 1;\n\t\t});\n\t}\n\treturn {\n\t\tsrc: sortJoinEntry(def.src),\n\t\tpartitionFilters: sortFilters(def.partitionFilters),\n\t\tfilters: sortFilters(def.filters),\n\t\tsorting: def.sorting\n\t};\n}\nfunction mapPTableDefV2(def, cb) {\n\treturn { query: mapSpecQueryColumns(def.query, cb) };\n}\nfunction mapJoinEntry(entry, cb) {\n\tswitch (entry.type) {\n\t\tcase \"column\": return {\n\t\t\ttype: \"column\",\n\t\t\tcolumn: cb(entry.column)\n\t\t};\n\t\tcase \"slicedColumn\": return {\n\t\t\ttype: \"slicedColumn\",\n\t\t\tcolumn: cb(entry.column),\n\t\t\tnewId: entry.newId,\n\t\t\taxisFilters: entry.axisFilters\n\t\t};\n\t\tcase \"artificialColumn\": return {\n\t\t\ttype: \"artificialColumn\",\n\t\t\tcolumn: cb(entry.column),\n\t\t\tnewId: entry.newId,\n\t\t\taxesIndices: entry.axesIndices\n\t\t};\n\t\tcase \"inlineColumn\": return entry;\n\t\tcase \"inner\":\n\t\tcase \"full\": return {\n\t\t\ttype: entry.type,\n\t\t\tentries: entry.entries.map((col) => mapJoinEntry(col, cb))\n\t\t};\n\t\tcase \"outer\": return {\n\t\t\ttype: \"outer\",\n\t\t\tprimary: mapJoinEntry(entry.primary, cb),\n\t\t\tsecondary: entry.secondary.map((col) => mapJoinEntry(col, cb))\n\t\t};\n\t\tdefault: assertNever(entry);\n\t}\n}\nfunction cmpJoinEntries(lhs, rhs) {\n\tif (lhs.type !== rhs.type) return lhs.type < rhs.type ? -1 : 1;\n\tconst type = lhs.type;\n\tswitch (type) {\n\t\tcase \"column\": return lhs.column < rhs.column ? -1 : 1;\n\t\tcase \"slicedColumn\":\n\t\tcase \"artificialColumn\": return lhs.newId < rhs.newId ? -1 : 1;\n\t\tcase \"inlineColumn\": return lhs.column.id < rhs.column.id ? -1 : 1;\n\t\tcase \"inner\":\n\t\tcase \"full\": {\n\t\t\tconst rhsInner = rhs;\n\t\t\tif (lhs.entries.length !== rhsInner.entries.length) return lhs.entries.length - rhsInner.entries.length;\n\t\t\tfor (let i = 0; i < lhs.entries.length; i++) {\n\t\t\t\tconst cmp = cmpJoinEntries(lhs.entries[i], rhsInner.entries[i]);\n\t\t\t\tif (cmp !== 0) return cmp;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\tcase \"outer\": {\n\t\t\tconst rhsOuter = rhs;\n\t\t\tconst cmp = cmpJoinEntries(lhs.primary, rhsOuter.primary);\n\t\t\tif (cmp !== 0) return cmp;\n\t\t\tif (lhs.secondary.length !== rhsOuter.secondary.length) return lhs.secondary.length - rhsOuter.secondary.length;\n\t\t\tfor (let i = 0; i < lhs.secondary.length; i++) {\n\t\t\t\tconst cmp = cmpJoinEntries(lhs.secondary[i], rhsOuter.secondary[i]);\n\t\t\t\tif (cmp !== 0) return cmp;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\tdefault: assertNever(type);\n\t}\n}\nfunction sortJoinEntry(entry) {\n\tswitch (entry.type) {\n\t\tcase \"column\":\n\t\tcase \"slicedColumn\":\n\t\tcase \"inlineColumn\": return entry;\n\t\tcase \"artificialColumn\": {\n\t\t\tconst sortedAxesIndices = entry.axesIndices.toSorted((lhs, rhs) => lhs - rhs);\n\t\t\treturn {\n\t\t\t\t...entry,\n\t\t\t\taxesIndices: sortedAxesIndices\n\t\t\t};\n\t\t}\n\t\tcase \"inner\":\n\t\tcase \"full\": {\n\t\t\tconst sortedEntries = entry.entries.map(sortJoinEntry);\n\t\t\tsortedEntries.sort(cmpJoinEntries);\n\t\t\treturn {\n\t\t\t\t...entry,\n\t\t\t\tentries: sortedEntries\n\t\t\t};\n\t\t}\n\t\tcase \"outer\": {\n\t\t\tconst sortedSecondary = entry.secondary.map(sortJoinEntry);\n\t\t\tsortedSecondary.sort(cmpJoinEntries);\n\t\t\treturn {\n\t\t\t\t...entry,\n\t\t\t\tprimary: sortJoinEntry(entry.primary),\n\t\t\t\tsecondary: sortedSecondary\n\t\t\t};\n\t\t}\n\t\tdefault: assertNever(entry);\n\t}\n}\n//#endregion\nexport { mapJoinEntry, mapPTableDef, mapPTableDefV2, sortJoinEntry, sortPTableDef };\n\n//# sourceMappingURL=table_calculate.js.map","//#region src/drivers/pframe/table_common.ts\nfunction getPTableColumnId(spec) {\n\tswitch (spec.type) {\n\t\tcase \"axis\": return {\n\t\t\ttype: \"axis\",\n\t\t\tid: spec.id\n\t\t};\n\t\tcase \"column\": return {\n\t\t\ttype: \"column\",\n\t\t\tid: spec.id\n\t\t};\n\t}\n}\n//#endregion\nexport { getPTableColumnId };\n\n//# sourceMappingURL=table_common.js.map","import canonicalize from \"canonicalize\";\n//#region src/drivers/pframe/spec/ids.ts\n/**\n* Canonically serializes a {@link UniversalPColumnId} to a string.\n* @param id - The column identifier to serialize\n* @returns The canonically serialized string\n*/\nfunction stringifyColumnId(id) {\n\treturn canonicalize(id);\n}\n/**\n* Parses a canonically serialized {@link UniversalPColumnId} from a string.\n* @param str - The string to parse\n* @returns The parsed column identifier\n*/\nfunction parseColumnId(str) {\n\treturn JSON.parse(str);\n}\n//#endregion\nexport { parseColumnId, stringifyColumnId };\n\n//# sourceMappingURL=ids.js.map","import { getAxisId, matchAxisId } from \"./spec.js\";\nimport { stringifyColumnId } from \"./ids.js\";\nimport canonicalize from \"canonicalize\";\n//#region src/drivers/pframe/spec/anchored.ts\nfunction axisKey(axis) {\n\treturn canonicalize(getAxisId(axis));\n}\nfunction domainKey(key, value) {\n\treturn JSON.stringify([key, value]);\n}\n/**\n* Context for resolving and generating anchored references to columns and axes\n* Maintains maps of known domain values and axes that can be referenced by anchors\n*/\nvar AnchoredIdDeriver = class {\n\taxes = /* @__PURE__ */ new Map();\n\tdomains = /* @__PURE__ */ new Map();\n\tcontextDomains = /* @__PURE__ */ new Map();\n\t/**\n\t* Domain packs are used to group domain keys that can be anchored to the same anchor\n\t* This is used to optimize the lookup of domain anchors\n\t*/\n\tdomainPacks = [];\n\tcontextDomainPacks = [];\n\t/**\n\t* Maps domain packs to anchors\n\t*/\n\tdomainPackToAnchor = /* @__PURE__ */ new Map();\n\tcontextDomainPackToAnchor = /* @__PURE__ */ new Map();\n\t/**\n\t* Creates a new anchor context from a set of anchor column specifications\n\t* @param anchors Record of anchor column specifications indexed by anchor ID\n\t*/\n\tconstructor(anchors) {\n\t\tthis.anchors = anchors;\n\t\tconst anchorEntries = Object.entries(anchors);\n\t\tanchorEntries.sort((a, b) => a[0].localeCompare(b[0]));\n\t\tfor (const [anchorId, spec] of anchorEntries) {\n\t\t\tfor (let axisIdx = 0; axisIdx < spec.axesSpec.length; axisIdx++) {\n\t\t\t\tconst axis = spec.axesSpec[axisIdx];\n\t\t\t\tconst key = axisKey(axis);\n\t\t\t\tthis.axes.set(key, {\n\t\t\t\t\tanchor: anchorId,\n\t\t\t\t\tidx: axisIdx\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (spec.domain !== void 0) {\n\t\t\t\tconst domainEntries = Object.entries(spec.domain);\n\t\t\t\tdomainEntries.sort((a, b) => a[0].localeCompare(b[0]));\n\t\t\t\tthis.domainPackToAnchor.set(JSON.stringify(domainEntries), anchorId);\n\t\t\t\tthis.domainPacks.push(domainEntries.map(([dKey]) => dKey));\n\t\t\t\tfor (const [dKey, dValue] of domainEntries) {\n\t\t\t\t\tconst key = domainKey(dKey, dValue);\n\t\t\t\t\tthis.domains.set(key, anchorId);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (spec.contextDomain !== void 0) {\n\t\t\t\tconst contextDomainEntries = Object.entries(spec.contextDomain);\n\t\t\t\tcontextDomainEntries.sort((a, b) => a[0].localeCompare(b[0]));\n\t\t\t\tthis.contextDomainPackToAnchor.set(JSON.stringify(contextDomainEntries), anchorId);\n\t\t\t\tthis.contextDomainPacks.push(contextDomainEntries.map(([dKey]) => dKey));\n\t\t\t\tfor (const [dKey, dValue] of contextDomainEntries) {\n\t\t\t\t\tconst key = domainKey(dKey, dValue);\n\t\t\t\t\tthis.contextDomains.set(key, anchorId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t/**\n\t* Implementation of derive method\n\t*/\n\tderive(spec, axisFilters) {\n\t\tconst result = {\n\t\t\tname: spec.name,\n\t\t\taxes: []\n\t\t};\n\t\tlet skipDomains = void 0;\n\t\tif (spec.domain !== void 0) outer: for (const domainPack of this.domainPacks) {\n\t\t\tconst dAnchor = [];\n\t\t\tfor (const domainKey of domainPack) {\n\t\t\t\tconst dValue = spec.domain[domainKey];\n\t\t\t\tif (dValue !== void 0) dAnchor.push([domainKey, dValue]);\n\t\t\t\telse break outer;\n\t\t\t}\n\t\t\tconst domainAnchor = this.domainPackToAnchor.get(JSON.stringify(dAnchor));\n\t\t\tif (domainAnchor !== void 0) {\n\t\t\t\tresult.domainAnchor = domainAnchor;\n\t\t\t\tskipDomains = new Set(domainPack);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tfor (const [dKey, dValue] of Object.entries(spec.domain ?? {})) {\n\t\t\tif (skipDomains !== void 0 && skipDomains.has(dKey)) continue;\n\t\t\tconst key = domainKey(dKey, dValue);\n\t\t\tconst anchorId = this.domains.get(key);\n\t\t\tresult.domain ??= {};\n\t\t\tresult.domain[dKey] = anchorId ? { anchor: anchorId } : dValue;\n\t\t}\n\t\tlet skipContextDomains = void 0;\n\t\tif (spec.contextDomain !== void 0) outer: for (const contextDomainPack of this.contextDomainPacks) {\n\t\t\tconst dAnchor = [];\n\t\t\tfor (const domainKey of contextDomainPack) {\n\t\t\t\tconst dValue = spec.contextDomain[domainKey];\n\t\t\t\tif (dValue !== void 0) dAnchor.push([domainKey, dValue]);\n\t\t\t\telse break outer;\n\t\t\t}\n\t\t\tconst contextDomainAnchor = this.contextDomainPackToAnchor.get(JSON.stringify(dAnchor));\n\t\t\tif (contextDomainAnchor !== void 0) {\n\t\t\t\tresult.contextDomainAnchor = contextDomainAnchor;\n\t\t\t\tskipContextDomains = new Set(contextDomainPack);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tfor (const [dKey, dValue] of Object.entries(spec.contextDomain ?? {})) {\n\t\t\tif (skipContextDomains !== void 0 && skipContextDomains.has(dKey)) continue;\n\t\t\tconst key = domainKey(dKey, dValue);\n\t\t\tconst anchorId = this.contextDomains.get(key);\n\t\t\tresult.contextDomain ??= {};\n\t\t\tresult.contextDomain[dKey] = anchorId ? { anchor: anchorId } : dValue;\n\t\t}\n\t\tresult.axes = spec.axesSpec.map((axis) => {\n\t\t\tconst key = axisKey(axis);\n\t\t\tconst anchorAxisRef = this.axes.get(key);\n\t\t\tif (anchorAxisRef === void 0) return getAxisId(axis);\n\t\t\telse return anchorAxisRef;\n\t\t});\n\t\tif (!axisFilters || axisFilters.length === 0) return result;\n\t\tconst resolvedFilters = [];\n\t\tfor (const filter of axisFilters) {\n\t\t\tconst [axisIdOrIndex, value] = filter;\n\t\t\tif (typeof axisIdOrIndex === \"number\") {\n\t\t\t\tif (axisIdOrIndex < 0 || axisIdOrIndex >= spec.axesSpec.length) throw new Error(`Axis index ${axisIdOrIndex} is out of bounds (0-${spec.axesSpec.length - 1})`);\n\t\t\t\tresolvedFilters.push([axisIdOrIndex, value]);\n\t\t\t} else {\n\t\t\t\tconst axisIndex = spec.axesSpec.findIndex((axis) => axis.name === axisIdOrIndex);\n\t\t\t\tif (axisIndex === -1) throw new Error(`Axis with name \"${axisIdOrIndex}\" not found in the column specification`);\n\t\t\t\tresolvedFilters.push([axisIndex, value]);\n\t\t\t}\n\t\t}\n\t\tresolvedFilters.sort((a, b) => a[0] - b[0]);\n\t\treturn {\n\t\t\tsource: result,\n\t\t\taxisFilters: resolvedFilters\n\t\t};\n\t}\n\t/**\n\t* Derives a canonicalized string representation of an anchored column identifier, can be used as a unique identifier for the column\n\t* @param spec Column specification to anchor\n\t* @param axisFilters Optional axis filters to apply to the column\n\t* @returns A canonicalized string representation of the anchored column identifier\n\t*/\n\tderiveS(spec, axisFilters) {\n\t\treturn stringifyColumnId(this.derive(spec, axisFilters));\n\t}\n};\n/**\n* Resolves anchored references in a column matcher to create a non-anchored matcher.\n* Doing an opposite operation to {@link AnchorIdDeriver.derive()}.\n*\n* @param anchors - Record of anchor column specifications indexed by anchor id\n* @param matcher - An anchored column matcher (or id, which is subtype of it) containing references that need to be resolved\n* @param options - Options for resolving anchors\n* @returns A non-anchored column matcher with all references resolved to actual values\n* @deprecated - This function by parent PColumnCollection\n*/\nfunction resolveAnchors(anchors, matcher, options) {\n\tconst result = { ...matcher };\n\tconst ignoreMissingDomains = options?.ignoreMissingDomains ?? false;\n\tif (result.domainAnchor !== void 0) {\n\t\tconst anchorSpec = anchors[result.domainAnchor];\n\t\tif (!anchorSpec) throw new Error(`Anchor \"${result.domainAnchor}\" not found`);\n\t\tresult.domain = {\n\t\t\t...anchorSpec.domain || {},\n\t\t\t...result.domain\n\t\t};\n\t\tdelete result.domainAnchor;\n\t}\n\tif (result.domain) {\n\t\tconst resolvedDomain = {};\n\t\tfor (const [key, value] of Object.entries(result.domain)) if (typeof value === \"string\") resolvedDomain[key] = value;\n\t\telse {\n\t\t\tconst anchorSpec = anchors[value.anchor];\n\t\t\tif (!anchorSpec) throw new Error(`Anchor \"${value.anchor}\" not found for domain key \"${key}\"`);\n\t\t\tif (!anchorSpec.domain || anchorSpec.domain[key] === void 0) {\n\t\t\t\tif (!ignoreMissingDomains) throw new Error(`Domain key \"${key}\" not found in anchor \"${value.anchor}\"`);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tresolvedDomain[key] = anchorSpec.domain[key];\n\t\t}\n\t\tresult.domain = resolvedDomain;\n\t}\n\tif (result.contextDomainAnchor !== void 0) {\n\t\tconst anchorSpec = anchors[result.contextDomainAnchor];\n\t\tif (!anchorSpec) throw new Error(`Anchor \"${result.contextDomainAnchor}\" not found`);\n\t\tresult.contextDomain = {\n\t\t\t...anchorSpec.contextDomain || {},\n\t\t\t...result.contextDomain\n\t\t};\n\t\tdelete result.contextDomainAnchor;\n\t}\n\tif (result.contextDomain) {\n\t\tconst resolvedContextDomain = {};\n\t\tfor (const [key, value] of Object.entries(result.contextDomain)) if (typeof value === \"string\") resolvedContextDomain[key] = value;\n\t\telse {\n\t\t\tconst anchorSpec = anchors[value.anchor];\n\t\t\tif (!anchorSpec) throw new Error(`Anchor \"${value.anchor}\" not found for contextDomain key \"${key}\"`);\n\t\t\tif (!anchorSpec.contextDomain || anchorSpec.contextDomain[key] === void 0) {\n\t\t\t\tif (!ignoreMissingDomains) throw new Error(`Context domain key \"${key}\" not found in anchor \"${value.anchor}\"`);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tresolvedContextDomain[key] = anchorSpec.contextDomain[key];\n\t\t}\n\t\tresult.contextDomain = resolvedContextDomain;\n\t}\n\tif (result.axes) result.axes = result.axes.map((axis) => resolveAxisReference(anchors, axis));\n\treturn result;\n}\n/**\n* Resolves an anchored axis reference to a concrete AxisId\n*/\nfunction resolveAxisReference(anchors, axisRef) {\n\tif (!isAnchorAxisRef(axisRef)) return axisRef;\n\tconst anchorId = axisRef.anchor;\n\tconst anchorSpec = anchors[anchorId];\n\tif (!anchorSpec) throw new Error(`Anchor \"${anchorId}\" not found for axis reference`);\n\tif (\"idx\" in axisRef) {\n\t\tif (axisRef.idx < 0 || axisRef.idx >= anchorSpec.axesSpec.length) throw new Error(`Axis index ${axisRef.idx} out of bounds for anchor \"${anchorId}\"`);\n\t\treturn anchorSpec.axesSpec[axisRef.idx];\n\t} else if (\"name\" in axisRef) {\n\t\tconst matches = anchorSpec.axesSpec.filter((axis) => axis.name === axisRef.name);\n\t\tif (matches.length > 1) throw new Error(`Multiple axes with name \"${axisRef.name}\" found in anchor \"${anchorId}\"`);\n\t\tif (matches.length === 0) throw new Error(`Axis with name \"${axisRef.name}\" not found in anchor \"${anchorId}\"`);\n\t\treturn matches[0];\n\t} else if (\"id\" in axisRef) {\n\t\tconst matches = anchorSpec.axesSpec.filter((axis) => matchAxisId(axisRef.id, getAxisId(axis)));\n\t\tif (matches.length > 1) throw new Error(`Multiple matching axes found for matcher in anchor \"${anchorId}\"`);\n\t\tif (matches.length === 0) throw new Error(`No matching axis found for matcher in anchor \"${anchorId}\"`);\n\t\treturn matches[0];\n\t}\n\tthrow new Error(`Unsupported axis reference type`);\n}\n/**\n* Type guard to check if a value is an anchored axis reference\n*/\nfunction isAnchorAxisRef(value) {\n\treturn typeof value === \"object\" && \"anchor\" in value;\n}\n//#endregion\nexport { AnchoredIdDeriver, resolveAnchors };\n\n//# sourceMappingURL=anchored.js.map","import { assertNever } from \"../util.js\";\n//#region src/pool/spec.ts\nfunction isPColumnSpec(spec) {\n\treturn spec.kind === \"PColumn\";\n}\nfunction isPColumn(obj) {\n\treturn isPColumnSpec(obj.spec);\n}\nfunction isPColumnSpecResult(r) {\n\treturn isPColumnSpec(r.obj);\n}\nfunction isPColumnResult(r) {\n\treturn isPColumnSpec(r.obj.spec);\n}\nfunction ensurePColumn(obj) {\n\tif (!isPColumn(obj)) throw new Error(`not a PColumn (kind = ${obj.spec.kind})`);\n\treturn obj;\n}\nfunction mapPObjectData(pObj, cb) {\n\treturn pObj === void 0 ? void 0 : {\n\t\t...pObj,\n\t\tdata: cb(typeof pObj.data === \"function\" ? pObj.data() : pObj.data)\n\t};\n}\nfunction extractAllColumns(entry) {\n\tconst columns = /* @__PURE__ */ new Map();\n\tconst addAllColumns = (entry) => {\n\t\tswitch (entry.type) {\n\t\t\tcase \"column\":\n\t\t\t\tcolumns.set(entry.column.id, entry.column);\n\t\t\t\treturn;\n\t\t\tcase \"slicedColumn\":\n\t\t\t\tcolumns.set(entry.column.id, entry.column);\n\t\t\t\treturn;\n\t\t\tcase \"artificialColumn\":\n\t\t\t\tcolumns.set(entry.column.id, entry.column);\n\t\t\t\treturn;\n\t\t\tcase \"inlineColumn\": return;\n\t\t\tcase \"full\":\n\t\t\tcase \"inner\":\n\t\t\t\tfor (const e of entry.entries) addAllColumns(e);\n\t\t\t\treturn;\n\t\t\tcase \"outer\":\n\t\t\t\taddAllColumns(entry.primary);\n\t\t\t\tfor (const e of entry.secondary) addAllColumns(e);\n\t\t\t\treturn;\n\t\t\tdefault: assertNever(entry);\n\t\t}\n\t};\n\taddAllColumns(entry);\n\treturn [...columns.values()];\n}\n//#endregion\nexport { ensurePColumn, extractAllColumns, isPColumn, isPColumnResult, isPColumnSpec, isPColumnSpecResult, mapPObjectData };\n\n//# sourceMappingURL=spec.js.map","import { getAxisId } from \"./spec.js\";\nimport { isPColumnSpec } from \"../../../pool/spec.js\";\n//#region src/drivers/pframe/spec/selectors.ts\n/**\n* Checks if a given value is an anchored column identifier\n* @param id - The value to check\n* @returns True if the value is an anchored column identifier, false otherwise\n*/\nfunction isAnchoredPColumnId(id) {\n\treturn typeof id === \"object\" && id !== null && \"name\" in id && \"axes\" in id;\n}\n/**\n* Determines if an axis ID matches an axis selector.\n*\n* @param selector - The selector with criteria to match against\n* @param axis - The AxisId to check against the selector\n* @returns true if the AxisId matches all specified criteria in the selector, false otherwise\n*/\nfunction matchAxis(selector, axis) {\n\tif (selector.name !== void 0 && selector.name !== axis.name) return false;\n\tif (selector.type !== void 0) {\n\t\tif (Array.isArray(selector.type)) {\n\t\t\tif (!selector.type.includes(axis.type)) return false;\n\t\t} else if (selector.type !== axis.type) return false;\n\t}\n\tif (selector.domain !== void 0) {\n\t\tconst axisDomain = axis.domain || {};\n\t\tfor (const [key, value] of Object.entries(selector.domain)) if (axisDomain[key] !== value) return false;\n\t}\n\tif (selector.contextDomain !== void 0) {\n\t\tconst axisContextDomain = axis.contextDomain || {};\n\t\tfor (const [key, value] of Object.entries(selector.contextDomain)) if (axisContextDomain[key] !== value) return false;\n\t}\n\treturn true;\n}\n/**\n* Determines if a given PColumnSpec matches a selector.\n*\n* @param pcolumn - The PColumnSpec to check against the selector\n* @param selector - The selector criteria to match against\n* @returns true if the PColumnSpec matches all criteria in the selector, false otherwise\n*/\nfunction matchPColumn(pcolumn, selector) {\n\tif (selector.name !== void 0 && pcolumn.name !== selector.name) return false;\n\tif (selector.namePattern !== void 0 && !new RegExp(selector.namePattern).test(pcolumn.name)) return false;\n\tif (selector.type !== void 0) {\n\t\tif (Array.isArray(selector.type)) {\n\t\t\tif (!selector.type.includes(pcolumn.valueType)) return false;\n\t\t} else if (selector.type !== pcolumn.valueType) return false;\n\t}\n\tif (selector.domain !== void 0) {\n\t\tconst columnDomain = pcolumn.domain || {};\n\t\tfor (const [key, value] of Object.entries(selector.domain)) if (columnDomain[key] !== value) return false;\n\t}\n\tif (selector.contextDomain !== void 0) {\n\t\tconst columnContextDomain = pcolumn.contextDomain || {};\n\t\tfor (const [key, value] of Object.entries(selector.contextDomain)) if (columnContextDomain[key] !== value) return false;\n\t}\n\tif (selector.axes !== void 0) {\n\t\tconst pcolumnAxes = pcolumn.axesSpec.map(getAxisId);\n\t\tif (selector.partialAxesMatch) {\n\t\t\tfor (const selectorAxis of selector.axes) if (!pcolumnAxes.some((columnAxis) => matchAxis(selectorAxis, columnAxis))) return false;\n\t\t} else {\n\t\t\tif (pcolumnAxes.length !== selector.axes.length) return false;\n\t\t\tfor (let i = 0; i < selector.axes.length; i++) if (!matchAxis(selector.axes[i], pcolumnAxes[i])) return false;\n\t\t}\n\t}\n\tif (selector.annotations !== void 0) {\n\t\tconst columnAnnotations = pcolumn.annotations || {};\n\t\tfor (const [key, value] of Object.entries(selector.annotations)) if (columnAnnotations[key] !== value) return false;\n\t}\n\tif (selector.annotationPatterns !== void 0) {\n\t\tconst columnAnnotations = pcolumn.annotations || {};\n\t\tfor (const [key, pattern] of Object.entries(selector.annotationPatterns)) {\n\t\t\tconst value = columnAnnotations[key];\n\t\t\tif (value === void 0 || !new RegExp(pattern).test(value)) return false;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n* Convert a predicate or array of selectors to a single predicate function\n* @param predicateOrSelectors - Either a function that takes a PColumnSpec and returns a boolean,\n* or an array of PColumnSelectors, or a single PColumnSelector\n* @returns A function that takes a PColumnSpec and returns a boolean\n*/\nfunction legacyColumnSelectorsToPredicate(predicateOrSelectors) {\n\tif (Array.isArray(predicateOrSelectors)) return (spec) => predicateOrSelectors.some((selector) => isPColumnSpec(spec) && matchPColumn(spec, selector));\n\telse return (spec) => isPColumnSpec(spec) && matchPColumn(spec, predicateOrSelectors);\n}\nfunction matchString(matcher, value) {\n\treturn matcher.type === \"exact\" ? value === matcher.value : new RegExp(matcher.value).test(value);\n}\nfunction matchMatcherMap(map, target) {\n\tconst t = target ?? {};\n\tfor (const [key, matchers] of Object.entries(map)) {\n\t\tconst v = t[key];\n\t\tif (v === void 0) return false;\n\t\tif (!matchers.some((m) => matchString(m, v))) return false;\n\t}\n\treturn true;\n}\nfunction matchMultiAxis(selector, axis) {\n\tif (selector.type !== void 0 && !selector.type.includes(axis.type)) return false;\n\tif (selector.name !== void 0 && !selector.name.some((m) => matchString(m, axis.name))) return false;\n\tif (selector.domain !== void 0 && !matchMatcherMap(selector.domain, axis.domain)) return false;\n\tif (selector.contextDomain !== void 0 && !matchMatcherMap(selector.contextDomain, axis.contextDomain)) return false;\n\treturn true;\n}\n/** Match a {@link PColumnSpec} against a {@link MultiColumnSelector}. */\nfunction matchMultiColumnSelector(spec, selector) {\n\tif (selector.type !== void 0 && !selector.type.includes(spec.valueType)) return false;\n\tif (selector.name !== void 0 && !selector.name.some((m) => matchString(m, spec.name))) return false;\n\tif (selector.domain !== void 0 && !matchMatcherMap(selector.domain, spec.domain)) return false;\n\tif (selector.contextDomain !== void 0 && !matchMatcherMap(selector.contextDomain, spec.contextDomain)) return false;\n\tif (selector.annotations !== void 0 && !matchMatcherMap(selector.annotations, spec.annotations)) return false;\n\tif (selector.axes !== void 0) {\n\t\tconst columnAxes = spec.axesSpec.map(getAxisId);\n\t\tif (selector.partialAxesMatch ?? true) {\n\t\t\tfor (const axisSelector of selector.axes) if (!columnAxes.some((axis) => matchMultiAxis(axisSelector, axis))) return false;\n\t\t} else {\n\t\t\tif (columnAxes.length !== selector.axes.length) return false;\n\t\t\tfor (let i = 0; i < selector.axes.length; i++) if (!matchMultiAxis(selector.axes[i], columnAxes[i])) return false;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n* Convert a {@link MultiColumnSelector} (or array; selectors OR-ed) to a predicate.\n* Non-PColumn specs always return false.\n*/\nfunction multiColumnSelectorsToPredicate(selectors) {\n\tconst arr = Array.isArray(selectors) ? selectors : [selectors];\n\treturn (spec) => isPColumnSpec(spec) && arr.some((sel) => matchMultiColumnSelector(spec, sel));\n}\n//#endregion\nexport { isAnchoredPColumnId, legacyColumnSelectorsToPredicate, matchAxis, matchMultiColumnSelector, matchPColumn, multiColumnSelectorsToPredicate };\n\n//# sourceMappingURL=selectors.js.map","import { getAxesId } from \"./spec.js\";\nimport { isPColumnSpec } from \"../../../pool/spec.js\";\nimport canonicalize from \"canonicalize\";\n//#region src/drivers/pframe/spec/native_id.ts\nfunction deriveNativeId(spec) {\n\tconst result = {\n\t\tkind: spec.kind,\n\t\tname: spec.name\n\t};\n\tif (spec.domain !== void 0) result.domain = spec.domain;\n\tif (spec.contextDomain !== void 0) result.contextDomain = spec.contextDomain;\n\tif (isPColumnSpec(spec)) result.axesSpec = getAxesId(spec.axesSpec);\n\treturn canonicalize(result);\n}\n//#endregion\nexport { deriveNativeId };\n\n//# sourceMappingURL=native_id.js.map","import { __exportAll } from \"./_virtual/_rolldown/runtime.js\";\n//#region src/utils.ts\nvar utils_exports = /* @__PURE__ */ __exportAll({\n\tDeferred: () => Deferred,\n\tFetcher: () => Fetcher,\n\tInterval: () => Interval,\n\talike: () => alike,\n\tarrayFrom: () => arrayFrom,\n\tasConst: () => asConst,\n\tasync: () => async,\n\tbetween: () => between,\n\tbool: () => bool,\n\tcall: () => call,\n\tcheckIfDefined: () => checkIfDefined,\n\tcheckIfNotEmpty: () => checkIfNotEmpty,\n\tclamp: () => clamp,\n\tdelay: () => delay,\n\terrorOptional: () => errorOptional,\n\texhaustive: () => exhaustive,\n\tflatValue: () => flatValue,\n\tidentity: () => identity,\n\tisNil: () => isNil,\n\tisPrimitive: () => isPrimitive,\n\tlistToOptions: () => listToOptions,\n\tmatch: () => match,\n\tnotEmpty: () => notEmpty,\n\tnotUndef: () => notUndef,\n\tokOptional: () => okOptional,\n\tperformanceTimer: () => performanceTimer,\n\trange: () => range,\n\tresolveAwaited: () => resolveAwaited,\n\ttap: () => tap,\n\ttapIf: () => tapIf,\n\ttear: () => tear,\n\ttimer: () => timer,\n\ttimes: () => times,\n\ttoList: () => toList,\n\tundef: () => undef,\n\tunionize: () => unionize,\n\tuniqueValues: () => uniqueValues,\n\tunwrap: () => unwrap\n});\nfunction isNil(v) {\n\treturn v === null || v === void 0;\n}\nfunction isPrimitive(v) {\n\treturn isNil(v) || typeof v === \"string\" || typeof v === \"number\" || typeof v === \"boolean\" || typeof v === \"bigint\";\n}\nfunction notEmpty(v, message) {\n\tif (v === null || v === void 0) throw Error(message ?? \"Empty (null | undefined) value\");\n\treturn v;\n}\nfunction notUndef(v, message) {\n\tif (v === void 0) throw Error(message ?? \"Undefined value\");\n\treturn v;\n}\nfunction undef(v = void 0) {\n\treturn v;\n}\nfunction bool(v) {\n\treturn v;\n}\nfunction uniqueValues(items) {\n\treturn [...new Set(items)];\n}\nfunction checkIfNotEmpty(v, message) {\n\tif (v === void 0 || v === null) throw Error(message ?? \"Empty (null | undefined) value\");\n}\nfunction checkIfDefined(v, message) {\n\tif (v === void 0) throw Error(message ?? \"Undefined value\");\n}\nfunction between(n, a, b) {\n\treturn n >= Math.min(a, b) && n <= Math.max(a, b);\n}\nfunction listToOptions(list) {\n\treturn list.map((value) => ({\n\t\ttext: String(value),\n\t\tvalue\n\t}));\n}\nfunction async(gf) {\n\treturn function(...args) {\n\t\tconst generator = gf(...args);\n\t\tasync function handle(result) {\n\t\t\tif (result.done) return Promise.resolve(result.value);\n\t\t\treturn Promise.resolve(result.value).then((res) => {\n\t\t\t\treturn handle(generator.next(res));\n\t\t\t}).catch((err) => {\n\t\t\t\treturn handle(generator.throw(err));\n\t\t\t});\n\t\t}\n\t\ttry {\n\t\t\treturn handle(generator.next());\n\t\t} catch (ex) {\n\t\t\treturn Promise.reject(ex instanceof Error ? ex : Error(String(ex)));\n\t\t}\n\t};\n}\nvar Deferred = class {\n\tpromise;\n\tconstructor() {\n\t\tthis.promise = new Promise((res, rej) => {\n\t\t\tthis.resolve = res;\n\t\t\tthis.reject = rej;\n\t\t});\n\t}\n\tresolve = () => {};\n\treject = () => {};\n};\nfunction delay(ms) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\nfunction tear() {\n\treturn new Promise((r) => queueMicrotask(r));\n}\nfunction timer() {\n\tconst t = (/* @__PURE__ */ new Date()).getTime();\n\treturn function() {\n\t\treturn (/* @__PURE__ */ new Date()).getTime() - t;\n\t};\n}\nfunction performanceTimer() {\n\tconst t = performance.now();\n\treturn function() {\n\t\treturn performance.now() - t;\n\t};\n}\nfunction call(f) {\n\treturn f();\n}\nfunction clamp(n, lo, up) {\n\treturn lo > n ? lo : n > up ? up : n;\n}\nfunction tap(v, cb) {\n\treturn cb(v);\n}\nfunction tapIf(v, cb) {\n\tif (v !== null && v !== void 0) return cb(v);\n}\nfunction* range(from, to, step = 1) {\n\tfor (let i = from; i < to; i += step) yield i;\n}\nfunction toList(iterable) {\n\tconst lst = [];\n\tfor (const it of iterable) lst.push(it);\n\treturn lst;\n}\nfunction times(n, cb) {\n\treturn toList(range(0, n)).map(cb);\n}\nvar Interval = class {\n\tconstructor(_delay) {\n\t\tthis._delay = _delay;\n\t}\n\tasync *generate() {\n\t\tlet i = 0;\n\t\twhile (true) {\n\t\t\tawait delay(this._delay);\n\t\t\tyield i++;\n\t\t}\n\t}\n\tasync *[Symbol.asyncIterator]() {\n\t\tlet i = 0;\n\t\twhile (true) {\n\t\t\tawait delay(this._delay);\n\t\t\tyield i++;\n\t\t}\n\t}\n};\nfunction arrayFrom(length, cb) {\n\treturn Array.from({ length }, (_, i) => cb(i));\n}\nfunction exhaustive(v, message) {\n\tthrow Error(message);\n}\nfunction match(matcher) {\n\treturn (key) => matcher[key]();\n}\nfunction okOptional(v) {\n\tif (!v) return;\n\tif (v.ok) return v.value;\n}\nfunction errorOptional(v) {\n\tif (!v) return;\n\tif (!v.ok) return v.error;\n}\nfunction unwrap(r) {\n\tif (r.ok) return r.value;\n\tthrow Error(r.error);\n}\nfunction flatValue(v) {\n\treturn Array.isArray(v) ? v : [v];\n}\nasync function resolveAwaited(obj) {\n\treturn Object.fromEntries(await Promise.all(Object.entries(obj).map(async ([k, v]) => [k, await v])));\n}\nfunction alike(obj, to) {\n\treturn Object.keys(to).every((bKey) => obj[bKey] === to[bKey]);\n}\nconst identity = (v) => v;\nfunction asConst(v) {\n\treturn v;\n}\nfunction unionize(obj) {\n\treturn Object.entries(obj).map(([key, value]) => ({\n\t\tkey,\n\t\tvalue\n\t}));\n}\nvar Fetcher = class {\n\tpromises = /* @__PURE__ */ new Map();\n\tfetch(key, callback) {\n\t\tif (this.promises.has(key)) return this.promises.get(key);\n\t\tconst promise = callback().finally(() => {\n\t\t\tthis.promises.delete(key);\n\t\t});\n\t\tthis.promises.set(key, promise);\n\t\treturn promise;\n\t}\n};\n//#endregion\nexport { Deferred, Fetcher, Interval, alike, arrayFrom, asConst, async, between, bool, call, checkIfDefined, checkIfNotEmpty, clamp, delay, errorOptional, exhaustive, flatValue, identity, isNil, isPrimitive, listToOptions, match, notEmpty, notUndef, okOptional, performanceTimer, range, resolveAwaited, tap, tapIf, tear, timer, times, toList, undef, unionize, uniqueValues, unwrap, utils_exports };\n\n//# sourceMappingURL=utils.js.map","import { __exportAll } from \"./_virtual/_rolldown/runtime.js\";\nimport { isNil } from \"./utils.js\";\n//#region src/objects.ts\nvar objects_exports = /* @__PURE__ */ __exportAll({\n\tbindMethods: () => bindMethods,\n\tdeepClone: () => deepClone,\n\tdeepEqual: () => deepEqual,\n\tdeepPatch: () => deepPatch,\n\tgetField: () => getField,\n\tgetProp: () => getProp,\n\tisArray: () => isArray,\n\tisJsonEqual: () => isJsonEqual,\n\tisNonPrimitive: () => isNonPrimitive,\n\tisObject: () => isObject,\n\tisPlainObject: () => isPlainObject,\n\tmap: () => map,\n\tomit: () => omit,\n\tpick: () => pick,\n\tpickValues: () => pickValues,\n\tsetProp: () => setProp,\n\tshallowClone: () => shallowClone,\n\tshallowDiff: () => shallowDiff,\n\tshiftProp: () => shiftProp\n});\n/**\n* Alias to Array.isArray\n*/\nconst isArray = Array.isArray;\nfunction isNonPrimitive(obj) {\n\treturn obj !== null && typeof obj === \"object\";\n}\nfunction isObject(value) {\n\treturn typeof value === \"object\" && value !== null;\n}\n/**\n* Checks if the given value is a plain object.\n*\n* A plain object is defined as an object created by the `{}` literal,\n* an object created with `Object.create(null)`, or an object with a\n* prototype that resolves to `Object.prototype`.\n*\n* @param value - The value to check.\n* @returns `true` if the value is a plain object, otherwise `false`.\n*\n* @example\n* ```typescript\n* isPlainObject({}); // true\n* isPlainObject(Object.create(null)); // true\n* isPlainObject(new Date()); // false\n* isPlainObject(null); // false\n* isPlainObject([]); // false\n* ```\n*/\nfunction isPlainObject(value) {\n\tif (!isObject(value)) return false;\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null;\n}\nfunction map(obj, callback) {\n\treturn Object.keys(obj).map((key) => {\n\t\treturn callback(obj[key], key);\n\t});\n}\nfunction definedKeysSize(obj) {\n\treturn Object.values(obj).reduce((length, v) => {\n\t\treturn v !== void 0 ? length + 1 : length;\n\t}, 0);\n}\n/**\n* Performs a deep equality check between two values, `a` and `b`, to determine if they are JSON-equivalent.\n*\n* JSON equivalence means that the two values are strictly equal in structure and content, including arrays and plain objects.\n* Non-primitive values that are neither arrays nor plain objects will throw an error.\n*\n* @param a - The first value to compare.\n* @param b - The second value to compare.\n* @returns `true` if the values are JSON-equivalent, otherwise `false`.\n*\n* @throws If the values are non-primitive and not arrays or plain objects.\n*\n* @example\n* ```typescript\n* isJsonEqual(1, 1); // true\n* isJsonEqual({ a: 1 }, { a: 1 }); // true\n* isJsonEqual([1, 2], [1, 2]); // true\n* isJsonEqual({ a: 1 }, { a: 2 }); // false\n* isJsonEqual([1, 2], [2, 1]); // false\n* isJsonEqual(new Date(), new Date()); // Error\n* ```\n*/\nfunction isJsonEqual(a, b) {\n\tif (!(isNonPrimitive(a) && isNonPrimitive(b))) return a === b;\n\tif (isArray(a) && isArray(b)) if (a.length !== b.length) return false;\n\telse return [...a.keys()].every((k) => isJsonEqual(a[k], b[k]));\n\tif (isPlainObject(a) && isPlainObject(b)) {\n\t\tif (definedKeysSize(a) !== definedKeysSize(b)) return false;\n\t\treturn Object.keys(a).every((k) => isJsonEqual(a[k], b[k]));\n\t}\n\tthrow Error(`Cannot compare a ${String(a)} and b ${String(b)}`);\n}\n/**\n* Alias to isJsonEqual function\n* @deprecated change to isJsonEqual\n*/\nconst deepEqual = isJsonEqual;\nfunction deepClone(obj) {\n\tif (Array.isArray(obj)) {\n\t\tconst copy = [];\n\t\tfor (let i = 0; i < obj.length; i++) copy[i] = deepClone(obj[i]);\n\t\treturn copy;\n\t} else if (isPlainObject(obj)) {\n\t\tconst copy = {};\n\t\tObject.keys(obj).forEach((k) => {\n\t\t\tcopy[k] = deepClone(obj[k]);\n\t\t});\n\t\treturn copy;\n\t} else return obj;\n}\nfunction shallowClone(obj) {\n\tif (isNil(obj)) return obj;\n\tif (Array.isArray(obj)) return obj.slice();\n\tif (isPlainObject(obj)) return Object.assign({}, obj);\n\tif (obj instanceof Map) return new Map(obj);\n\tif (obj instanceof Set) return new Set(obj);\n\tthrow Error(`Not implemented clone strategy for ${JSON.stringify(obj)}`);\n}\nfunction shallowDiff(to, from) {\n\tconst diff = {};\n\tfor (const key in from) if (from[key] !== to[key]) diff[key] = to[key];\n\treturn diff;\n}\nfunction bindMethods(obj) {\n\tObject.entries(obj).forEach(([key, m]) => {\n\t\tif (m instanceof Function) obj[key] = m.bind(obj);\n\t});\n\treturn obj;\n}\nfunction setProp(obj, key, value) {\n\tobj[key] = value;\n\treturn obj;\n}\nfunction getProp(obj, key) {\n\treturn obj[key];\n}\nfunction shiftProp(obj, key) {\n\tobj = { ...obj };\n\tconst val = obj[key];\n\tdelete obj[key];\n\treturn [val, obj];\n}\nfunction pick(obj, ...keys) {\n\treturn Object.assign({}, ...keys.map((k) => ({ [k]: obj[k] })));\n}\nfunction pickValues(obj, ...keys) {\n\treturn keys.map((k) => obj[k]);\n}\nfunction omit(obj, ...keys) {\n\tconst o = Object.assign({}, obj);\n\tkeys.forEach((k) => delete o[k]);\n\treturn o;\n}\n/**\n* Performs a deep patch of the target object or array using the source object or array.\n*\n* This function recursively merges properties of the source into the target:\n* - If a property in both target and source is a plain object, they are recursively merged.\n* - If a property in both target and source is an array of the same length, the arrays are recursively patched element by element.\n* - Otherwise, the property value in the target is replaced by the corresponding value from the source.\n*\n* The patch is applied in-place to the target object or array, which is also returned for convenience.\n*\n* @typeParam T - The type of the target and source, which must be either a plain object or an array.\n* @param target - The target object or array to be patched. This object/array is modified in-place.\n* @param source - The source object or array providing the new values for the patch.\n* @returns The modified target object or array.\n*\n* @example\n* ```typescript\n* const target = { a: { b: 1 }, c: [1, 2] };\n* const source = { a: { b: 2 }, c: [3, 4], d: 5 };\n* const result = deepPatch(target, source);\n* // target is now: { a: { b: 2 }, c: [3, 4], d: 5 }\n* // result is the same reference as target.\n*\n* const targetArray = [{ a: 1 }, { b: 2 }];\n* const sourceArray = [{ a: 2 }, { b: 3 }];\n* const resultArray = deepPatch(targetArray, sourceArray);\n* // targetArray is now: [{ a: 2 }, { b: 3 }]\n* ```\n*/\nfunction deepPatch(target, source) {\n\tnew Set([...Object.keys(target), ...Object.keys(source)]).forEach((key) => {\n\t\tconst t = target[key];\n\t\tconst s = source[key];\n\t\tif (isPlainObject(t) && isPlainObject(s)) deepPatch(t, s);\n\t\telse if (isArray(t) && isArray(s) && t.length === s.length) deepPatch(t, s);\n\t\telse target[key] = s;\n\t});\n\treturn target;\n}\n/**\n* Reads a property from a union-typed object where the key may exist only on some members of the union.\n*\n* `K` is constrained to keys of the union's intersection, so any key present on at least one union\n* member is accepted. The return type resolves to `T[K]` when `K` is a key of `T`, otherwise `undefined`\n* — matching the runtime behavior of reading a missing property.\n*\n* @param obj - source object (may be a union of shapes)\n* @param prop - property name, must be a key of at least one union member\n* @returns the property value if present, otherwise `undefined`\n*/\nfunction getField(obj, prop) {\n\treturn obj[prop];\n}\n//#endregion\nexport { bindMethods, deepClone, deepEqual, deepPatch, getField, getProp, isArray, isJsonEqual, isNonPrimitive, isObject, isPlainObject, map, objects_exports, omit, pick, pickValues, setProp, shallowClone, shallowDiff, shiftProp };\n\n//# sourceMappingURL=objects.js.map","import { isObject } from \"./objects.js\";\n//#region src/error.ts\nfunction isErrorLike(error) {\n\tif (error instanceof Error) return true;\n\treturn isObject(error) && \"message\" in error && typeof error.message === \"string\";\n}\nfunction throwError(v) {\n\tif (typeof v === \"string\") throw new Error(v);\n\telse throw v;\n}\n//#endregion\nexport { isErrorLike, throwError };\n\n//# sourceMappingURL=error.js.map","//#region src/uniqId.ts\nfunction createGetIncrementalId() {\n\tlet idx = 0n;\n\treturn () => idx++;\n}\n//#endregion\nexport { createGetIncrementalId };\n\n//# sourceMappingURL=uniqId.js.map","import { isPrimitive } from \"./utils.js\";\nimport { createGetIncrementalId } from \"./uniqId.js\";\n//#region src/hash.ts\nfunction hashString(str, seed = 0) {\n\tlet h1 = 3735928559 ^ seed, h2 = 1103547991 ^ seed;\n\tfor (let i = 0, ch; i < str.length; i++) {\n\t\tch = str.charCodeAt(i);\n\t\th1 = Math.imul(h1 ^ ch, 2654435761);\n\t\th2 = Math.imul(h2 ^ ch, 1597334677);\n\t}\n\th1 = Math.imul(h1 ^ h1 >>> 16, 2246822507) ^ Math.imul(h2 ^ h2 >>> 13, 3266489909);\n\th2 = Math.imul(h2 ^ h2 >>> 16, 2246822507) ^ Math.imul(h1 ^ h1 >>> 13, 3266489909);\n\treturn 4294967296 * (2097151 & h2) + (h1 >>> 0);\n}\nfunction shallowHash(...values) {\n\tlet str = \"\";\n\tfor (let i = 0; i < values.length; i += 1) {\n\t\tconst value = values[i];\n\t\tif (isPrimitive(value)) str += \"/\" + String(value);\n\t\telse str += \"/\" + getIdForPointer(value);\n\t}\n\treturn hashString(str);\n}\nconst mapPointerToMap = /* @__PURE__ */ new WeakMap();\nconst getIncrementalId = createGetIncrementalId();\nfunction getIdForPointer(obj) {\n\tif (!mapPointerToMap.has(obj)) mapPointerToMap.set(obj, getIncrementalId().toString());\n\treturn mapPointerToMap.get(obj);\n}\n//#endregion\nexport { hashString, shallowHash };\n\n//# sourceMappingURL=hash.js.map","import { canonicalizeJson, parseJson } from \"../../json.js\";\nimport { Annotation, getArrayFromAxisTree, getAxesTree, getAxisId, getNormalizedAxesList, readAnnotationJson } from \"./spec/spec.js\";\n//#region src/drivers/pframe/linker_columns.ts\nvar LinkerMap = class LinkerMap {\n\t/** Graph of linkers connected by axes (single or grouped by parents) */\n\tdata;\n\tconstructor(linkerMap) {\n\t\tthis.data = linkerMap;\n\t}\n\tget keys() {\n\t\treturn this.data.keys();\n\t}\n\tget keyAxesIds() {\n\t\treturn [...this.data.keys()].map(parseJson);\n\t}\n\tstatic fromColumns(columns) {\n\t\tconst result = /* @__PURE__ */ new Map();\n\t\tfor (const linker of columns.filter((l) => !!readAnnotationJson(l.spec, Annotation.IsLinkerColumn))) {\n\t\t\tconst groups = LinkerMap.getAxesGroups(getNormalizedAxesList(linker.spec.axesSpec));\n\t\t\tif (groups.length !== 2) continue;\n\t\t\tconst [left, right] = groups;\n\t\t\tconst leftKeyVariants = LinkerMap.getAxesRoots(left).map((axis) => {\n\t\t\t\tconst axes = getArrayFromAxisTree(getAxesTree(axis));\n\t\t\t\treturn [canonicalizeJson(axes.map(getAxisId)), axes];\n\t\t\t});\n\t\t\tconst rightKeyVariants = LinkerMap.getAxesRoots(right).map((axis) => {\n\t\t\t\tconst axes = getArrayFromAxisTree(getAxesTree(axis));\n\t\t\t\treturn [canonicalizeJson(axes.map(getAxisId)), axes];\n\t\t\t});\n\t\t\tfor (const [keyLeft, spec] of leftKeyVariants) if (!result.has(keyLeft)) result.set(keyLeft, {\n\t\t\t\tkeyAxesSpec: spec,\n\t\t\t\tlinkWith: /* @__PURE__ */ new Map()\n\t\t\t});\n\t\t\tfor (const [keyRight, spec] of rightKeyVariants) if (!result.has(keyRight)) result.set(keyRight, {\n\t\t\t\tkeyAxesSpec: spec,\n\t\t\t\tlinkWith: /* @__PURE__ */ new Map()\n\t\t\t});\n\t\t\tfor (const [keyRight] of rightKeyVariants) for (const [keyLeft] of leftKeyVariants) result.get(keyRight)?.linkWith.set(keyLeft, linker);\n\t\t}\n\t\treturn new this(result);\n\t}\n\t/** Get all available nodes of linker graphs if start from sourceAxesKeys */\n\tsearchAvailableAxesKeys(sourceAxesKeys) {\n\t\tconst startKeys = new Set(sourceAxesKeys);\n\t\tconst allAvailableKeys = /* @__PURE__ */ new Set();\n\t\tlet nextKeys = sourceAxesKeys;\n\t\twhile (nextKeys.length) {\n\t\t\tconst next = [];\n\t\t\tfor (const key of nextKeys) {\n\t\t\t\tconst node = this.data.get(key);\n\t\t\t\tif (!node) continue;\n\t\t\t\tfor (const availableKey of node.linkWith.keys()) if (!allAvailableKeys.has(availableKey) && !startKeys.has(availableKey)) {\n\t\t\t\t\tnext.push(availableKey);\n\t\t\t\t\tallAvailableKeys.add(availableKey);\n\t\t\t\t}\n\t\t\t}\n\t\t\tnextKeys = next;\n\t\t}\n\t\treturn allAvailableKeys;\n\t}\n\t/** Get all linker columns that are necessary to reach endKey from startKey */\n\tsearchLinkerPath(startKey, endKey) {\n\t\tconst previous = {};\n\t\tlet nextIds = new Set([startKey]);\n\t\tconst visited = new Set([startKey]);\n\t\twhile (nextIds.size) {\n\t\t\tconst next = /* @__PURE__ */ new Set();\n\t\t\tfor (const nextId of nextIds) {\n\t\t\t\tconst node = this.data.get(nextId);\n\t\t\t\tif (!node) continue;\n\t\t\t\tfor (const availableId of node.linkWith.keys()) {\n\t\t\t\t\tprevious[availableId] = nextId;\n\t\t\t\t\tif (availableId === endKey) {\n\t\t\t\t\t\tconst ids = [];\n\t\t\t\t\t\tlet current = endKey;\n\t\t\t\t\t\twhile (previous[current] !== startKey) {\n\t\t\t\t\t\t\tids.push(current);\n\t\t\t\t\t\t\tcurrent = previous[current];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tids.push(current);\n\t\t\t\t\t\treturn ids.map((id) => this.data.get(previous[id]).linkWith.get(id));\n\t\t\t\t\t} else if (!visited.has(availableId)) {\n\t\t\t\t\t\tnext.add(availableId);\n\t\t\t\t\t\tvisited.add(availableId);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tnextIds = next;\n\t\t}\n\t\treturn [];\n\t}\n\tgetLinkerColumnsForAxes({ from: sourceAxes, to: targetAxes, throwWhenNoLinkExists = true }) {\n\t\tconst startKeys = sourceAxes.map(LinkerMap.getLinkerKeyFromAxisSpec);\n\t\treturn Array.from(new Map(LinkerMap.getAxesRoots(targetAxes).map(LinkerMap.getLinkerKeyFromAxisSpec).flatMap((targetKey) => {\n\t\t\tconst linkers = startKeys.map((startKey) => this.searchLinkerPath(startKey, targetKey)).reduce((shortestPath, path) => shortestPath.length && shortestPath.length < path.length || !path.length ? shortestPath : path, []).map((linker) => [linker.columnId, linker]);\n\t\t\tif (!linkers.length && throwWhenNoLinkExists) throw Error(`Unable to find linker column for ${targetKey}`);\n\t\t\treturn linkers;\n\t\t})).values());\n\t}\n\t/** Get list of axisSpecs from keys of linker columns map */\n\tgetAxesListFromKeysList(keys) {\n\t\treturn Array.from(new Map(keys.flatMap((key) => this.data.get(key)?.keyAxesSpec ?? []).map((axis) => [canonicalizeJson(getAxisId(axis)), axis])).values());\n\t}\n\t/** Get axes of target axes that are impossible to be linked to source axes with current linker map */\n\tgetNonLinkableAxes(sourceAxes, targetAxes) {\n\t\tconst startKeys = sourceAxes.map(LinkerMap.getLinkerKeyFromAxisSpec);\n\t\tconst targetKeys = targetAxes.map(LinkerMap.getLinkerKeyFromAxisSpec);\n\t\treturn Array.from(new Map(targetAxes.filter((_targetAxis, idx) => {\n\t\t\tconst targetKey = targetKeys[idx];\n\t\t\treturn !startKeys.some((startKey) => this.searchLinkerPath(startKey, targetKey).length);\n\t\t}).flatMap((axis) => getArrayFromAxisTree(getAxesTree(axis)).map((axis) => [canonicalizeJson(getAxisId(axis)), axis]))).values());\n\t}\n\t/** Get all axes that can be connected to sourceAxes by linkers */\n\tgetReachableByLinkersAxesFromAxesNormalized(sourceAxes, matchAxisIdFn) {\n\t\tlet startKeys = [];\n\t\tif (matchAxisIdFn) {\n\t\t\tconst sourceAxisIdsGrouped = sourceAxes.map((axis) => getArrayFromAxisTree(getAxesTree(axis)).map(getAxisId));\n\t\t\tfor (const sourceAxisIdsGroup of sourceAxisIdsGrouped) {\n\t\t\t\tconst matched = this.keyAxesIds.find((keyIds) => keyIds.every((linkerKeyAxisId) => sourceAxisIdsGroup.find((sourceAxisId) => matchAxisIdFn(linkerKeyAxisId, sourceAxisId))));\n\t\t\t\tif (matched) startKeys.push(canonicalizeJson(matched));\n\t\t\t}\n\t\t} else startKeys = sourceAxes.map(LinkerMap.getLinkerKeyFromAxisSpec);\n\t\tconst availableKeys = this.searchAvailableAxesKeys(startKeys);\n\t\treturn this.getAxesListFromKeysList([...availableKeys]);\n\t}\n\tgetReachableByLinkersAxesFromAxes(sourceAxes, matchAxisIdFn) {\n\t\treturn this.getReachableByLinkersAxesFromAxesNormalized(getNormalizedAxesList(sourceAxes), matchAxisIdFn);\n\t}\n\tstatic getLinkerKeyFromAxisSpec(axis) {\n\t\treturn canonicalizeJson(getArrayFromAxisTree(getAxesTree(axis)).map(getAxisId));\n\t}\n\t/** Split array of axes into several arrays by parents: axes of one group are parents for each other.\n\tThere are no order inside every group. */\n\tstatic getAxesGroups(axesSpec) {\n\t\tswitch (axesSpec.length) {\n\t\t\tcase 0: return [];\n\t\t\tcase 1: return [[axesSpec[0]]];\n\t\t\tdefault: break;\n\t\t}\n\t\tconst axisKeys = axesSpec.map((spec) => canonicalizeJson(getAxisId(spec)));\n\t\tconst axisParentsIdxs = axesSpec.map((spec) => new Set(spec.parentAxesSpec.map((spec) => canonicalizeJson(getAxisId(spec))).map((el) => {\n\t\t\tconst idx = axisKeys.indexOf(el);\n\t\t\tif (idx === -1) throw new Error(`malformed axesSpec: ${JSON.stringify(axesSpec)}, unable to locate parent ${el}`);\n\t\t\treturn idx;\n\t\t})));\n\t\tconst allIdxs = [...axesSpec.keys()];\n\t\tconst groups = [];\n\t\tconst usedIdxs = /* @__PURE__ */ new Set();\n\t\tlet nextFreeEl = allIdxs.find((idx) => !usedIdxs.has(idx));\n\t\twhile (nextFreeEl !== void 0) {\n\t\t\tconst currentGroup = [nextFreeEl];\n\t\t\tusedIdxs.add(nextFreeEl);\n\t\t\tlet nextElsOfCurrentGroup = [nextFreeEl];\n\t\t\twhile (nextElsOfCurrentGroup.length) {\n\t\t\t\tconst next = /* @__PURE__ */ new Set();\n\t\t\t\tfor (const groupIdx of nextElsOfCurrentGroup) {\n\t\t\t\t\tconst groupElementParents = axisParentsIdxs[groupIdx];\n\t\t\t\t\tallIdxs.forEach((idx) => {\n\t\t\t\t\t\tif (idx === groupIdx || usedIdxs.has(idx)) return;\n\t\t\t\t\t\tif (axisParentsIdxs[idx].has(groupIdx) || groupElementParents.has(idx)) {\n\t\t\t\t\t\t\tcurrentGroup.push(idx);\n\t\t\t\t\t\t\tnext.add(idx);\n\t\t\t\t\t\t\tusedIdxs.add(idx);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tnextElsOfCurrentGroup = [...next];\n\t\t\t}\n\t\t\tgroups.push([...currentGroup]);\n\t\t\tnextFreeEl = allIdxs.find((idx) => !usedIdxs.has(idx));\n\t\t}\n\t\treturn groups.map((group) => group.map((idx) => axesSpec[idx]));\n\t}\n\t/** Get all axes that are not parents of any other axis */\n\tstatic getAxesRoots(axes) {\n\t\tconst parentsSet = new Set(axes.flatMap((axis) => axis.parentAxesSpec).map((spec) => canonicalizeJson(getAxisId(spec))));\n\t\treturn axes.filter((axis) => !parentsSet.has(canonicalizeJson(getAxisId(axis))));\n\t}\n};\n//#endregion\nexport { LinkerMap };\n\n//# sourceMappingURL=linker_columns.js.map","//#region src/drivers/pframe/driver.ts\nfunction assert() {}\nassert();\n//#endregion\n\n//# sourceMappingURL=driver.js.map","//#region src/flags/block_flags.ts\n/**\n* Required PFrames version. Bump this in lockstep with the `@milaboratories/pframes-rs-*`\n* version in `pnpm-workspace.yaml` so blocks built against the new SDK refuse to load on\n* older desktop apps.\n*/\nconst REQUIRES_PFRAMES_VERSION = 1001031;\nconst AllSupportsFeatureFlags = [\"supportsLazyState\", \"supportsPframeQueryRanking\"];\nconst AllRequiresFeatureFlags = [\n\t\"requiresUIAPIVersion\",\n\t\"requiresCreatePTable\",\n\t\"requiresPFramesVersion\",\n\t\"requiresModelAPIVersion\"\n];\n//#endregion\nexport { AllRequiresFeatureFlags, AllSupportsFeatureFlags, REQUIRES_PFRAMES_VERSION };\n\n//# sourceMappingURL=block_flags.js.map","import { base32Encode } from \"./base32_encode.js\";\nimport { z } from \"zod\";\n//#region src/plid.ts\n/** Number of raw bytes in the PlId. */\nconst PlIdBytes = 15;\n/** Characters in string representation */\nconst PlIdLength = 24;\nconst PlId = z.string().length(24).regex(/[ABCDEFGHIJKLMNOPQRSTUVWXYZ234567]/).brand(\"PlId\");\nfunction uniquePlId() {\n\tconst data = new Uint8Array(15);\n\tcrypto.getRandomValues(data);\n\treturn PlId.parse(base32Encode(data, \"RFC4648\"));\n}\nfunction plId(bytes) {\n\tif (bytes.length !== 15) throw new Error(`Wrong number of bytes: ${bytes.length}`);\n\treturn PlId.parse(base32Encode(bytes, \"RFC4648\"));\n}\nasync function digestPlId(data) {\n\tconst encoder = new TextEncoder();\n\tconst bytes = await crypto.subtle.digest(\"SHA-256\", encoder.encode(data));\n\treturn plId(new Uint8Array(bytes.slice(0, 15)));\n}\n//#endregion\nexport { PlId, PlIdBytes, PlIdLength, digestPlId, plId, uniquePlId };\n\n//# sourceMappingURL=plid.js.map","import { z } from \"zod\";\n//#region src/ref.ts\nconst PlRef = z.object({\n\t__isRef: z.literal(true).describe(\"Crucial marker for the block dependency tree reconstruction\"),\n\tblockId: z.string().describe(\"Upstream block id\"),\n\tname: z.string().describe(\"Name of the output provided to the upstream block's output context\"),\n\trequireEnrichments: z.literal(true).optional().describe(\"True if current block that stores this reference in its args, may need enrichments for the references value originating from the blocks in between current and referenced block\")\n}).describe(\"Universal reference type, allowing to set block connections. It is crucial that {@link __isRef} is present and equal to true, internal logic relies on this marker to build block dependency trees.\").readonly();\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*/\nfunction isPlRef(value) {\n\treturn typeof value === \"object\" && value !== null && \"__isRef\" in value && value.__isRef === true && \"blockId\" in value && \"name\" in value;\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*/\nfunction createPlRef(blockId, name, requireEnrichments = false) {\n\tif (requireEnrichments) return {\n\t\t__isRef: true,\n\t\tblockId,\n\t\tname,\n\t\trequireEnrichments: true\n\t};\n\telse return {\n\t\t__isRef: true,\n\t\tblockId,\n\t\tname\n\t};\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*/\nfunction withEnrichments(ref, requireEnrichments = true) {\n\tif (requireEnrichments) return {\n\t\t...ref,\n\t\trequireEnrichments: true\n\t};\n\telse {\n\t\tconst { requireEnrichments: _, ...rest } = ref;\n\t\treturn rest;\n\t}\n}\nfunction isPrimaryRef(value) {\n\treturn typeof value === \"object\" && value !== null && value.__isPrimaryRef === \"v1\" && \"column\" in value;\n}\nfunction createPrimaryRef(column, filter) {\n\tif (filter !== void 0) return {\n\t\t__isPrimaryRef: \"v1\",\n\t\tcolumn,\n\t\tfilter\n\t};\n\telse return {\n\t\t__isPrimaryRef: \"v1\",\n\t\tcolumn\n\t};\n}\nfunction isEnrichmentRef(value) {\n\treturn typeof value === \"object\" && value !== null && value.__isEnrichment === \"v1\" && \"hit\" in value;\n}\nfunction createEnrichmentRef(hit, options = {}) {\n\tconst { path, qualifications } = options;\n\treturn {\n\t\t__isEnrichment: \"v1\",\n\t\thit,\n\t\t...path !== void 0 && path.length > 0 ? { path } : {},\n\t\t...qualifications !== void 0 && qualifications.length > 0 ? { qualifications } : {}\n\t};\n}\n/** Compare two PlRefs and returns true if they are qual */\nfunction plRefsEqual(ref1, ref2, ignoreEnrichments = false) {\n\treturn ref1.blockId === ref2.blockId && ref1.name === ref2.name && (ignoreEnrichments || ref1.requireEnrichments === ref2.requireEnrichments);\n}\n//#endregion\nexport { PlRef, createEnrichmentRef, createPlRef, createPrimaryRef, isEnrichmentRef, isPlRef, isPrimaryRef, plRefsEqual, withEnrichments };\n\n//# sourceMappingURL=ref.js.map","//#region src/value_or_error.ts\nfunction mapValueInVOE(voe, cb) {\n\treturn voe.ok ? {\n\t\tok: true,\n\t\tvalue: cb(voe.value)\n\t} : voe;\n}\n//#endregion\nexport { mapValueInVOE };\n\n//# sourceMappingURL=value_or_error.js.map","import { ServiceAlreadyRegisteredError, ServiceInvalidIdError } from \"../errors.js\";\n//#region src/services/service_types.ts\nconst SERVICE_ID_PATTERN = /^[a-zA-Z][a-zA-Z0-9]*$/;\nconst { service, isNodeService, isWasmService, isMainService, getServiceKind, getServiceModelMethods, getServiceUiMethods } = (() => {\n\tconst typeMap = /* @__PURE__ */ new Map();\n\tconst modelMethodsMap = /* @__PURE__ */ new Map();\n\tconst uiMethodsMap = /* @__PURE__ */ new Map();\n\treturn {\n\t\tservice() {\n\t\t\treturn (options) => {\n\t\t\t\tconst { name, type, modelMethods, uiMethods } = options;\n\t\t\t\tif (!SERVICE_ID_PATTERN.test(name)) throw new ServiceInvalidIdError(`Invalid service ID \"${name}\": must match ${SERVICE_ID_PATTERN}`);\n\t\t\t\tif (typeMap.has(name)) throw new ServiceAlreadyRegisteredError(`Service \"${name}\" already registered`);\n\t\t\t\ttypeMap.set(name, type);\n\t\t\t\tmodelMethodsMap.set(name, modelMethods);\n\t\t\t\tuiMethodsMap.set(name, uiMethods);\n\t\t\t\treturn name;\n\t\t\t};\n\t\t},\n\t\tisNodeService(id) {\n\t\t\treturn typeMap.get(id) === \"node\";\n\t\t},\n\t\tisWasmService(id) {\n\t\t\treturn typeMap.get(id) === \"wasm\";\n\t\t},\n\t\tisMainService(id) {\n\t\t\treturn typeMap.get(id) === \"main\";\n\t\t},\n\t\tgetServiceKind(id) {\n\t\t\treturn typeMap.get(id);\n\t\t},\n\t\tgetServiceModelMethods(id) {\n\t\t\treturn modelMethodsMap.get(id) ?? [];\n\t\t},\n\t\tgetServiceUiMethods(id) {\n\t\t\treturn uiMethodsMap.get(id) ?? [];\n\t\t}\n\t};\n})();\nfunction serviceFnKey(serviceId, method = \"\") {\n\treturn `service:${serviceId}:${method}`;\n}\n//#endregion\nexport { getServiceKind, getServiceModelMethods, getServiceUiMethods, isMainService, isNodeService, isWasmService, service, serviceFnKey };\n\n//# sourceMappingURL=service_types.js.map","import { service } from \"./service_types.js\";\n//#region src/services/service_declarations.ts\nconst Services = {\n\tPFrameSpec: service()({\n\t\ttype: \"wasm\",\n\t\tname: \"pframeSpec\",\n\t\tmodelMethods: [\n\t\t\t\"createSpecFrame\",\n\t\t\t\"listColumns\",\n\t\t\t\"discoverColumns\",\n\t\t\t\"deleteColumn\",\n\t\t\t\"evaluateQuery\",\n\t\t\t\"buildQuery\",\n\t\t\t\"expandAxes\",\n\t\t\t\"collapseAxes\",\n\t\t\t\"findAxis\",\n\t\t\t\"findTableColumn\"\n\t\t],\n\t\tuiMethods: [\n\t\t\t\"createSpecFrame\",\n\t\t\t\"listColumns\",\n\t\t\t\"discoverColumns\",\n\t\t\t\"deleteColumn\",\n\t\t\t\"evaluateQuery\",\n\t\t\t\"buildQuery\",\n\t\t\t\"expandAxes\",\n\t\t\t\"collapseAxes\",\n\t\t\t\"findAxis\",\n\t\t\t\"findTableColumn\"\n\t\t]\n\t}),\n\tPFrame: service()({\n\t\ttype: \"node\",\n\t\tname: \"pframe\",\n\t\tmodelMethods: [\n\t\t\t\"createPFrame\",\n\t\t\t\"createPTable\",\n\t\t\t\"createPTableV2\"\n\t\t],\n\t\tuiMethods: [\n\t\t\t\"findColumns\",\n\t\t\t\"getColumnSpec\",\n\t\t\t\"listColumns\",\n\t\t\t\"calculateTableData\",\n\t\t\t\"getUniqueValues\",\n\t\t\t\"getShape\",\n\t\t\t\"getSpec\",\n\t\t\t\"getData\",\n\t\t\t\"writePTableToFs\"\n\t\t]\n\t}),\n\tDialog: service()({\n\t\ttype: \"main\",\n\t\tname: \"dialog\",\n\t\tmodelMethods: [],\n\t\tuiMethods: [\"showSaveDialog\"]\n\t})\n};\n//#endregion\nexport { Services };\n\n//# sourceMappingURL=service_declarations.js.map","import { Services } from \"./service_declarations.js\";\n//#region src/services/service_capabilities.ts\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*/\nconst SERVICE_CAPABILITY_FLAGS = Object.keys(Services).map((key) => `requires${key}`);\n/**\n* Register all service capability flags with the given callback.\n* Works with both `RuntimeCapabilities.addSupportedRequirement`\n* and `MiddleLayer.addRuntimeCapability`.\n*/\nfunction registerServiceCapabilities(register) {\n\tfor (const flag of SERVICE_CAPABILITY_FLAGS) register(flag, true);\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*/\nfunction resolveRequiredServices(flags) {\n\tif (!flags) return [];\n\treturn Object.keys(Services).filter((key) => flags[`requires${key}`] === true).map((key) => Services[key]);\n}\nfunction isKnownServiceName(name) {\n\treturn Object.values(Services).some((v) => v === name);\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. */\nconst SERVICE_FEATURE_FLAGS = Object.fromEntries(Object.keys(Services).map((key) => [`requires${key}`, true]));\n/** Introspect method names on an instance (including prototype chain).\n* Uses Object.getOwnPropertyDescriptor to avoid triggering getters. */\nfunction getMethodNames(instance) {\n\tconst methods = /* @__PURE__ */ new Set();\n\tlet proto = instance;\n\twhile (proto && proto !== Object.prototype) {\n\t\tfor (const key of Object.getOwnPropertyNames(proto)) if (key !== \"constructor\" && typeof Object.getOwnPropertyDescriptor(proto, key)?.value === \"function\") methods.add(key);\n\t\tproto = Object.getPrototypeOf(proto);\n\t}\n\treturn [...methods];\n}\n//#endregion\nexport { SERVICE_CAPABILITY_FLAGS, SERVICE_FEATURE_FLAGS, getMethodNames, isKnownServiceName, registerServiceCapabilities, resolveRequiredServices };\n\n//# sourceMappingURL=service_capabilities.js.map","import { getServiceModelMethods, getServiceUiMethods } from \"./service_types.js\";\nimport { Services } from \"./service_declarations.js\";\nimport { resolveRequiredServices } from \"./service_capabilities.js\";\nimport { createNodeServiceHandlers } from \"./node_service_handlers.js\";\n//#region src/services/service_injectors.ts\nlet cachedKit;\nlet cachedHandlers;\nfunction getOrCreateHandlers(driverKit) {\n\tif (!cachedHandlers || cachedKit !== driverKit) {\n\t\tcachedKit = driverKit;\n\t\tcachedHandlers = createNodeServiceHandlers(driverKit);\n\t}\n\treturn cachedHandlers;\n}\n/**\n* Resolve the worker-side handler object for a given service ID. Caches\n* per DriverKit reference. Called from the worker's IPC dispatch path.\n*/\nfunction resolveNodeServiceHandler(driverKit, serviceId) {\n\tconst handlers = getOrCreateHandlers(driverKit);\n\tconst key = Object.keys(Services).find((k) => Services[k] === serviceId);\n\tif (!key) return null;\n\treturn handlers[key];\n}\nfunction buildMethodMap(pick) {\n\tconst result = {};\n\tfor (const id of Object.values(Services)) result[id] = [...pick(id)];\n\treturn result;\n}\n/**\n* UI-side method names per service. Drives ServiceProxy forwarder\n* construction in the renderer.\n*/\nconst SERVICE_METHOD_MAP = buildMethodMap(getServiceUiMethods);\n/**\n* Model-side method names per service. Drives the workflow VM bridge\n* (see pl-middle-layer js_render).\n*/\nconst MODEL_SERVICE_METHOD_MAP = buildMethodMap(getServiceModelMethods);\n/** Build service info for a block from its feature flags. */\nfunction buildServiceInfo(featureFlags) {\n\tconst serviceIds = resolveRequiredServices(featureFlags);\n\treturn Object.fromEntries(serviceIds.map((id) => [id, SERVICE_METHOD_MAP[id] ?? []]));\n}\n//#endregion\nexport { MODEL_SERVICE_METHOD_MAP, SERVICE_METHOD_MAP, buildServiceInfo, resolveNodeServiceHandler };\n\n//# sourceMappingURL=service_injectors.js.map","import { getCfgRenderCtx } from \"../internal.js\";\nimport { FutureRef } from \"./future.js\";\nimport { isPColumn, mapPObjectData } from \"@milaboratories/pl-model-common\";\n//#region src/render/accessor.ts\nfunction ifDef(value, cb) {\n\treturn value === void 0 ? void 0 : cb(value);\n}\n/** Represent resource tree node accessor */\nvar TreeNodeAccessor = class TreeNodeAccessor {\n\tconstructor(handle, resolvePath) {\n\t\tthis.handle = handle;\n\t\tthis.resolvePath = resolvePath;\n\t}\n\tresolve(...steps) {\n\t\tconst transformedSteps = steps.map((s) => ({\n\t\t\tassertFieldType: \"Input\",\n\t\t\t...typeof s === \"string\" ? { field: s } : s\n\t\t}));\n\t\treturn this.resolveWithCommon({}, ...transformedSteps);\n\t}\n\tresolveOutput(...steps) {\n\t\tconst transformedSteps = steps.map((s) => ({\n\t\t\tassertFieldType: \"Output\",\n\t\t\t...typeof s === \"string\" ? { field: s } : s\n\t\t}));\n\t\treturn this.resolveWithCommon({}, ...transformedSteps);\n\t}\n\tresolveInput(...steps) {\n\t\tconst transformedSteps = steps.map((s) => ({\n\t\t\tassertFieldType: \"Input\",\n\t\t\t...typeof s === \"string\" ? { field: s } : s\n\t\t}));\n\t\treturn this.resolveWithCommon({}, ...transformedSteps);\n\t}\n\tresolveAny(...steps) {\n\t\treturn this.resolveWithCommon({}, ...steps);\n\t}\n\tresolveWithCommon(commonOptions, ...steps) {\n\t\tconst resolvePath = [...this.resolvePath, ...steps.map((step) => typeof step === \"string\" ? step : step.field)];\n\t\treturn ifDef(getCfgRenderCtx().resolveWithCommon(this.handle, commonOptions, ...steps), (accessor) => new TreeNodeAccessor(accessor, resolvePath));\n\t}\n\tget resourceType() {\n\t\treturn getCfgRenderCtx().getResourceType(this.handle);\n\t}\n\tgetInputsLocked() {\n\t\treturn getCfgRenderCtx().getInputsLocked(this.handle);\n\t}\n\tgetOutputsLocked() {\n\t\treturn getCfgRenderCtx().getOutputsLocked(this.handle);\n\t}\n\tgetIsReadyOrError() {\n\t\treturn getCfgRenderCtx().getIsReadyOrError(this.handle);\n\t}\n\tgetIsFinal() {\n\t\treturn getCfgRenderCtx().getIsFinal(this.handle);\n\t}\n\tgetError() {\n\t\tconst resolvePath = [...this.resolvePath, \"error\"];\n\t\treturn ifDef(getCfgRenderCtx().getError(this.handle), (accsessor) => new TreeNodeAccessor(accsessor, resolvePath));\n\t}\n\tlistInputFields() {\n\t\treturn getCfgRenderCtx().listInputFields(this.handle);\n\t}\n\tlistOutputFields() {\n\t\treturn getCfgRenderCtx().listOutputFields(this.handle);\n\t}\n\tlistDynamicFields() {\n\t\treturn getCfgRenderCtx().listDynamicFields(this.handle);\n\t}\n\tgetKeyValueBase64(key) {\n\t\treturn getCfgRenderCtx().getKeyValueBase64(this.handle, key);\n\t}\n\tgetKeyValueAsString(key) {\n\t\treturn getCfgRenderCtx().getKeyValueAsString(this.handle, key);\n\t}\n\tgetKeyValueAsJson(key) {\n\t\tconst content = this.getKeyValueAsString(key);\n\t\tif (content == void 0) throw new Error(\"Resource has no content.\");\n\t\treturn JSON.parse(content);\n\t}\n\tgetDataBase64() {\n\t\treturn getCfgRenderCtx().getDataBase64(this.handle);\n\t}\n\tgetDataAsString() {\n\t\treturn getCfgRenderCtx().getDataAsString(this.handle);\n\t}\n\tgetDataAsJson() {\n\t\tconst content = this.getDataAsString();\n\t\tif (content == void 0) throw new Error(\"Resource has no content.\");\n\t\treturn JSON.parse(content);\n\t}\n\t/**\n\t*\n\t*/\n\tgetPColumns(errorOnUnknownField = false, prefix = \"\") {\n\t\tconst result = this.parsePObjectCollection(errorOnUnknownField, prefix);\n\t\tif (result === void 0) return void 0;\n\t\treturn Object.entries(result).map(([, obj]) => {\n\t\t\tif (!isPColumn(obj)) throw new Error(`not a PColumn (kind = ${obj.spec.kind})`);\n\t\t\treturn obj;\n\t\t});\n\t}\n\t/**\n\t*\n\t*/\n\tparsePObjectCollection(errorOnUnknownField = false, prefix = \"\") {\n\t\tconst pObjects = getCfgRenderCtx().parsePObjectCollection(this.handle, errorOnUnknownField, prefix, ...this.resolvePath);\n\t\tif (pObjects === void 0) return void 0;\n\t\tconst result = {};\n\t\tfor (const [key, value] of Object.entries(pObjects)) {\n\t\t\tconst resolvePath = [...this.resolvePath, key];\n\t\t\tresult[key] = mapPObjectData(value, (c) => new TreeNodeAccessor(c, resolvePath));\n\t\t}\n\t\treturn result;\n\t}\n\tgetFileContentAsBase64(range) {\n\t\treturn new FutureRef(getCfgRenderCtx().getBlobContentAsBase64(this.handle, range));\n\t}\n\tgetFileContentAsString(range) {\n\t\treturn new FutureRef(getCfgRenderCtx().getBlobContentAsString(this.handle, range));\n\t}\n\tgetFileContentAsJson(range) {\n\t\treturn new FutureRef(getCfgRenderCtx().getBlobContentAsString(this.handle, range)).mapDefined((v) => JSON.parse(v));\n\t}\n\t/**\n\t* @deprecated use getFileContentAsBase64\n\t*/\n\tgetBlobContentAsBase64() {\n\t\treturn this.getFileContentAsBase64();\n\t}\n\t/**\n\t* @deprecated use getFileContentAsString\n\t*/\n\tgetBlobContentAsString() {\n\t\treturn this.getFileContentAsString();\n\t}\n\t/**\n\t* @returns downloaded file handle\n\t*/\n\tgetFileHandle() {\n\t\treturn new FutureRef(getCfgRenderCtx().getDownloadedBlobContentHandle(this.handle));\n\t}\n\t/**\n\t* @deprecated use getFileHandle\n\t*/\n\tgetDownloadedBlobHandle() {\n\t\treturn this.getFileHandle();\n\t}\n\t/**\n\t* @returns downloaded file handle\n\t*/\n\tgetRemoteFileHandle() {\n\t\treturn new FutureRef(getCfgRenderCtx().getOnDemandBlobContentHandle(this.handle));\n\t}\n\t/**\n\t* @deprecated use getRemoteFileHandle\n\t*/\n\tgetOnDemandBlobHandle() {\n\t\treturn this.getRemoteFileHandle();\n\t}\n\t/**\n\t* @returns the url to the extracted folder\n\t*/\n\textractArchiveAndGetURL(format) {\n\t\treturn new FutureRef(getCfgRenderCtx().extractArchiveAndGetURL(this.handle, format));\n\t}\n\tgetImportProgress() {\n\t\treturn new FutureRef(getCfgRenderCtx().getImportProgress(this.handle));\n\t}\n\tgetLastLogs(nLines) {\n\t\treturn new FutureRef(getCfgRenderCtx().getLastLogs(this.handle, nLines));\n\t}\n\tgetProgressLog(patternToSearch) {\n\t\treturn new FutureRef(getCfgRenderCtx().getProgressLog(this.handle, patternToSearch));\n\t}\n\tgetProgressLogWithInfo(patternToSearch) {\n\t\treturn new FutureRef(getCfgRenderCtx().getProgressLogWithInfo(this.handle, patternToSearch));\n\t}\n\tgetLogHandle() {\n\t\treturn new FutureRef(getCfgRenderCtx().getLogHandle(this.handle));\n\t}\n\tallFieldsResolved(fieldType = \"Input\") {\n\t\tswitch (fieldType) {\n\t\t\tcase \"Input\": return this.getInputsLocked() && this.listInputFields().every((field) => this.resolve({\n\t\t\t\tfield,\n\t\t\t\tassertFieldType: \"Input\"\n\t\t\t}) !== void 0);\n\t\t\tcase \"Output\": return this.getOutputsLocked() && this.listOutputFields().every((field) => this.resolve({\n\t\t\t\tfield,\n\t\t\t\tassertFieldType: \"Output\"\n\t\t\t}) !== void 0);\n\t\t}\n\t}\n\tmapFields(_mapping, _ops) {\n\t\tconst { fieldType, requireLocked, skipUnresolved } = {\n\t\t\tfieldType: \"Input\",\n\t\t\trequireLocked: true,\n\t\t\tskipUnresolved: false,\n\t\t\t..._ops\n\t\t};\n\t\tconst mapping = _mapping;\n\t\tif (requireLocked) {\n\t\t\tif (fieldType === \"Input\" && !this.getInputsLocked()) return void 0;\n\t\t\tif (fieldType === \"Output\" && !this.getOutputsLocked()) return void 0;\n\t\t}\n\t\tlet fieldEntries = (fieldType === \"Input\" ? this.listInputFields() : fieldType === \"Output\" ? this.listOutputFields() : this.listDynamicFields()).map((field) => [field, this.resolve({\n\t\t\tfield,\n\t\t\tassertFieldType: fieldType\n\t\t})]);\n\t\tif (skipUnresolved) fieldEntries = fieldEntries.filter((e) => e[1] !== void 0);\n\t\treturn fieldEntries.map(([name, value]) => mapping(name, value));\n\t}\n};\n//#endregion\nexport { TreeNodeAccessor, ifDef };\n\n//# sourceMappingURL=accessor.js.map","import { __exportAll } from \"../_virtual/_rolldown/runtime.js\";\n//#region src/render/internal.ts\nvar internal_exports = /* @__PURE__ */ __exportAll({\n\tGlobalCfgRenderCtxFeatureFlags: () => GlobalCfgRenderCtxFeatureFlags,\n\tMainAccessorName: () => MainAccessorName,\n\tStagingAccessorName: () => StagingAccessorName,\n\tgetAllFutureAwaits: () => getAllFutureAwaits,\n\tisFutureAwait: () => isFutureAwait\n});\nconst StagingAccessorName = \"staging\";\nconst MainAccessorName = \"main\";\nconst GlobalCfgRenderCtxFeatureFlags = {\n\texplicitColumnsSupport: true,\n\tinlineColumnsSupport: true,\n\tactiveArgs: true,\n\tpTablePartitionFiltersSupport: true,\n\tpFrameInSetFilterSupport: true\n};\nfunction isFutureAwait(obj) {\n\treturn typeof obj === \"object\" && obj !== null && \"__awaited_futures__\" in obj;\n}\nfunction addAllFutureAwaits(set, visited, node) {\n\tif (visited.has(node)) return;\n\tvisited.add(node);\n\tif (typeof node === \"object\") {\n\t\tif (isFutureAwait(node)) node.__awaited_futures__.forEach((a) => set.add(a));\n\t\telse if (Array.isArray(node)) for (const nested of node) addAllFutureAwaits(set, visited, nested);\n\t\telse for (const [, nested] of Object.entries(node)) if (nested !== node) addAllFutureAwaits(set, visited, nested);\n\t}\n}\nfunction getAllFutureAwaits(obj) {\n\tconst set = /* @__PURE__ */ new Set();\n\taddAllFutureAwaits(set, /* @__PURE__ */ new Set(), obj);\n\treturn set;\n}\n//#endregion\nexport { MainAccessorName, StagingAccessorName, internal_exports };\n\n//# sourceMappingURL=internal.js.map","//#region src/render/util/axis_filtering.ts\nfunction filterDataInfoEntries(dataInfoEntries, axisFilters) {\n\tconst sortedFilters = [...axisFilters].sort((a, b) => b[0] - a[0]);\n\tconst { type } = dataInfoEntries;\n\tswitch (type) {\n\t\tcase \"Json\": {\n\t\t\tconst { keyLength } = dataInfoEntries;\n\t\t\tfor (const [axisIdx] of axisFilters) if (axisIdx >= keyLength) throw new Error(`Can't filter on non-data axis ${axisIdx}. Must be >= ${keyLength}`);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"JsonPartitioned\":\n\t\tcase \"BinaryPartitioned\":\n\t\tcase \"ParquetPartitioned\": {\n\t\t\tconst { partitionKeyLength } = dataInfoEntries;\n\t\t\tfor (const [axisIdx] of axisFilters) if (axisIdx >= partitionKeyLength) throw new Error(`Can't filter on non-partitioned axis ${axisIdx}. Must be >= ${partitionKeyLength}`);\n\t\t\tbreak;\n\t\t}\n\t\tdefault: throw new Error(`Unsupported data info type: ${type}`);\n\t}\n\tconst keyMatchesFilters = (key) => {\n\t\tfor (const [axisIdx, axisValue] of sortedFilters) if (key[axisIdx] !== axisValue) return false;\n\t\treturn true;\n\t};\n\tconst removeFilteredAxes = (key) => {\n\t\tconst newKey = [...key];\n\t\tfor (const [axisIdx] of sortedFilters) newKey.splice(axisIdx, 1);\n\t\treturn newKey;\n\t};\n\tswitch (dataInfoEntries.type) {\n\t\tcase \"Json\": return {\n\t\t\ttype: \"Json\",\n\t\t\tkeyLength: dataInfoEntries.keyLength - axisFilters.length,\n\t\t\tdata: dataInfoEntries.data.filter((entry) => keyMatchesFilters(entry.key)).map((entry) => ({\n\t\t\t\tkey: removeFilteredAxes(entry.key),\n\t\t\t\tvalue: entry.value\n\t\t\t}))\n\t\t};\n\t\tcase \"JsonPartitioned\": return {\n\t\t\ttype: \"JsonPartitioned\",\n\t\t\tpartitionKeyLength: dataInfoEntries.partitionKeyLength - axisFilters.length,\n\t\t\tparts: dataInfoEntries.parts.filter((entry) => keyMatchesFilters(entry.key)).map((entry) => ({\n\t\t\t\tkey: removeFilteredAxes(entry.key),\n\t\t\t\tvalue: entry.value\n\t\t\t}))\n\t\t};\n\t\tcase \"BinaryPartitioned\": return {\n\t\t\ttype: \"BinaryPartitioned\",\n\t\t\tpartitionKeyLength: dataInfoEntries.partitionKeyLength - axisFilters.length,\n\t\t\tparts: dataInfoEntries.parts.filter((entry) => keyMatchesFilters(entry.key)).map((entry) => ({\n\t\t\t\tkey: removeFilteredAxes(entry.key),\n\t\t\t\tvalue: entry.value\n\t\t\t}))\n\t\t};\n\t\tcase \"ParquetPartitioned\": return {\n\t\t\ttype: \"ParquetPartitioned\",\n\t\t\tpartitionKeyLength: dataInfoEntries.partitionKeyLength - axisFilters.length,\n\t\t\tparts: dataInfoEntries.parts.filter((entry) => keyMatchesFilters(entry.key)).map((entry) => ({\n\t\t\t\tkey: removeFilteredAxes(entry.key),\n\t\t\t\tvalue: entry.value\n\t\t\t}))\n\t\t};\n\t}\n}\n//#endregion\nexport { filterDataInfoEntries };\n\n//# sourceMappingURL=axis_filtering.js.map","function identity(x) {\n return x;\n}\n\nexport { identity };\n","function isTypedArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n\nexport { isTypedArray };\n","function getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n return Object.prototype.toString.call(value);\n}\n\nexport { getTag };\n","function isFunction(value) {\n return typeof value === 'function';\n}\n\nexport { isFunction };\n","function isLength(value) {\n return Number.isSafeInteger(value) && value >= 0;\n}\n\nexport { isLength };\n","function isNil(x) {\n return x == null;\n}\n\nexport { isNil };\n","import { Annotation, parseJson, readAnnotation } from \"@milaboratories/pl-model-common\";\nimport { throwError } from \"@milaboratories/helpers\";\nimport { isFunction, isNil as isNil$1 } from \"es-toolkit\";\n//#region src/labels/derive_distinct_labels.ts\nconst DISTANCE_PENALTY = .001;\nconst LABEL_TYPE = \"__LABEL__\";\nconst LABEL_TYPE_FULL = \"__LABEL__@1\";\nconst LINKER_TYPE = \"__LINKER__\";\nconst LINKER_TYPE_FULL = \"__LINKER__@1\";\nconst HIT_QUAL_TYPE = \"__HIT_QUAL__\";\nconst ANCHOR_QUAL_TYPE_PREFIX = \"__ANCHOR_QUAL__:\";\nfunction isAnchorQualType(t) {\n\treturn t.startsWith(ANCHOR_QUAL_TYPE_PREFIX);\n}\nfunction isSyntheticType(t) {\n\treturn t === LINKER_TYPE || t === HIT_QUAL_TYPE || isAnchorQualType(t);\n}\nfunction deriveDistinctLabels(values, options = {}) {\n\tconst forceTraceElements = options.forceTraceElements !== void 0 && options.forceTraceElements.length > 0 ? new Set(options.forceTraceElements) : void 0;\n\tconst separator = options.separator ?? \" / \";\n\tconst records = values.map((v, i) => enrichRecord(v, i, options));\n\tconst stats = collectTypeStats(records);\n\tconst hasAnySynthetic = records.some((r) => r.fullTrace.some((ft) => isSyntheticType(ft.type)));\n\tconst labelForced = (options.includeNativeLabel === true || hasAnySynthetic) && stats.countByType.has(LABEL_TYPE_FULL);\n\tconst linkerForced = stats.countByType.get(LINKER_TYPE_FULL) === values.length;\n\tconst forcedSet = /* @__PURE__ */ new Set();\n\tif (labelForced) forcedSet.add(LABEL_TYPE_FULL);\n\tif (linkerForced) forcedSet.add(LINKER_TYPE_FULL);\n\tconst { mainTypes, secondaryTypes } = classifyTypes(stats, values.length);\n\tconst build = (typeSet, force) => buildLabels(records, typeSet, forceTraceElements, separator, force);\n\tif (mainTypes.length === 0) {\n\t\tif (secondaryTypes.length !== 0) throw new Error(\"Non-empty secondary types list while main types list is empty.\");\n\t\treturn build(new Set([LABEL_TYPE_FULL]), true) ?? throwError(\"Failed to derive labels using native column labels\");\n\t}\n\tlet includedCount = 0;\n\tlet additionalType = -1;\n\twhile (includedCount < mainTypes.length) {\n\t\tconst currentSet = new Set(forcedSet);\n\t\tfor (let i = 0; i < includedCount; ++i) currentSet.add(mainTypes[i]);\n\t\tif (additionalType >= 0) currentSet.add(mainTypes[additionalType]);\n\t\tconst candidateResult = build(currentSet, false);\n\t\tif (candidateResult !== void 0 && countUniqueLabels(candidateResult) === values.length) {\n\t\t\tconst minimized = minimizeTypeSet(currentSet, records, stats, forceTraceElements, forcedSet, separator);\n\t\t\treturn dropRedundantLinkerSuffix(records, minimized, forceTraceElements, forcedSet, separator, build(minimized, false) ?? throwError(\"Failed to derive unique labels\"));\n\t\t}\n\t\tadditionalType++;\n\t\tif (additionalType >= mainTypes.length) {\n\t\t\tincludedCount++;\n\t\t\tadditionalType = includedCount;\n\t\t}\n\t}\n\tconst minimized = minimizeTypeSet(new Set([\n\t\t...forcedSet,\n\t\t...mainTypes,\n\t\t...secondaryTypes\n\t]), records, stats, forceTraceElements, forcedSet, separator);\n\treturn dropRedundantLinkerSuffix(records, minimized, forceTraceElements, forcedSet, separator, build(minimized, true) ?? throwError(\"Failed to derive unique labels\"));\n}\nfunction extractEntryParts(entry) {\n\tif (!(\"spec\" in entry && typeof entry.spec === \"object\")) return {\n\t\tspec: entry,\n\t\textraTrace: void 0,\n\t\tlinkerPath: void 0,\n\t\tqualifications: void 0\n\t};\n\treturn {\n\t\tspec: entry.spec,\n\t\textraTrace: entry.extraTrace,\n\t\tlinkerPath: entry.linkerPath,\n\t\tqualifications: entry.qualifications\n\t};\n}\nfunction formatQualification(q) {\n\tconst ctx = q.contextDomain ?? {};\n\tconst keys = Object.keys(ctx);\n\tif (keys.length === 0) return q.axis.name;\n\tconst pairs = keys.map((k) => `${k}=${ctx[k]}`).join(\", \");\n\treturn Object.prototype.hasOwnProperty.call(ctx, q.axis.name) ? pairs : `${q.axis.name} ${pairs}`;\n}\nfunction formatQualifications(qs) {\n\treturn qs.map(formatQualification).join(\"; \");\n}\nfunction computeStepLabel(step, stepIndex, formatters) {\n\tconst base = (readAnnotation(step.spec, Annotation.LinkLabel) ?? readAnnotation(step.spec, Annotation.Label))?.trim();\n\tif (isNil$1(base) || base.length === 0) return void 0;\n\tif (step.qualifications === void 0 || step.qualifications.length === 0) return base;\n\tconst qualText = isFunction(formatters?.linkerStepQualification) ? formatters.linkerStepQualification(step.qualifications, stepIndex, step.spec) : `[${formatQualifications(step.qualifications)}]`;\n\treturn isNil$1(qualText) ? base : `${base} ${qualText}`;\n}\nfunction buildFullTrace(trace) {\n\tconst result = [];\n\tconst occurrences = /* @__PURE__ */ new Map();\n\tfor (let i = trace.length - 1; i >= 0; --i) {\n\t\tconst entry = trace[i];\n\t\tconst occurrenceIndex = (occurrences.get(entry.type) ?? 0) + 1;\n\t\toccurrences.set(entry.type, occurrenceIndex);\n\t\tresult.push({\n\t\t\t...entry,\n\t\t\tfullType: `${entry.type}@${occurrenceIndex}`,\n\t\t\toccurrenceIndex\n\t\t});\n\t}\n\tresult.reverse();\n\treturn result;\n}\nfunction enrichRecord(value, index, options) {\n\tconst { spec, extraTrace, linkerPath, qualifications } = extractEntryParts(value);\n\tconst formatters = options.formatters;\n\tconst rawLabel = readAnnotation(spec, Annotation.Label);\n\tconst traceStr = readAnnotation(spec, Annotation.Trace);\n\tconst baseTrace = traceStr ? parseJson(traceStr) ?? [] : [];\n\tconst prefixExtra = extraTrace?.filter((e) => e.position === \"prefix\") ?? [];\n\tconst suffixExtra = extraTrace?.filter((e) => e.position !== \"prefix\") ?? [];\n\tconst trace = [\n\t\t...prefixExtra,\n\t\t...baseTrace,\n\t\t...suffixExtra\n\t];\n\tif (!isNil$1(rawLabel)) {\n\t\tconst label = isFunction(formatters?.native) ? formatters.native(rawLabel, spec, index) : rawLabel;\n\t\tif (!isNil$1(label)) {\n\t\t\tconst labelEntry = {\n\t\t\t\tlabel,\n\t\t\t\ttype: LABEL_TYPE,\n\t\t\t\timportance: -2\n\t\t\t};\n\t\t\tif (options.addLabelAsSuffix === true) trace.push(labelEntry);\n\t\t\telse trace.splice(0, 0, labelEntry);\n\t\t}\n\t}\n\tif (linkerPath !== void 0 && linkerPath.length > 0) {\n\t\tconst stepLabels = linkerPath.map((step, i) => computeStepLabel(step, i, formatters)).filter((s) => !isNil$1(s));\n\t\tif (stepLabels.length > 0) {\n\t\t\tconst linkerText = isFunction(formatters?.linker) ? formatters.linker(stepLabels, spec, index) : `via ${stepLabels.join(\" > \")}`;\n\t\t\tif (!isNil$1(linkerText)) trace.push({\n\t\t\t\ttype: LINKER_TYPE,\n\t\t\t\tlabel: linkerText,\n\t\t\t\timportance: -10\n\t\t\t});\n\t\t}\n\t}\n\tif (qualifications !== void 0 && qualifications.forQueries !== void 0) {\n\t\tfor (const [anchorId, qs] of Object.entries(qualifications.forQueries)) {\n\t\t\tif (qs.length === 0) continue;\n\t\t\tconst anchorText = isFunction(formatters?.anchorQualification) ? formatters.anchorQualification(anchorId, qs, spec, index) : `[${anchorId}: ${formatQualifications(qs)}]`;\n\t\t\tif (isNil$1(anchorText)) continue;\n\t\t\ttrace.push({\n\t\t\t\ttype: `${ANCHOR_QUAL_TYPE_PREFIX}${anchorId}`,\n\t\t\t\tlabel: anchorText,\n\t\t\t\timportance: -11\n\t\t\t});\n\t\t}\n\t\tif (qualifications.forHit !== void 0 && qualifications.forHit.length > 0) {\n\t\t\tconst hitText = isFunction(formatters?.hitQualification) ? formatters.hitQualification(qualifications.forHit, spec, index) : `[${formatQualifications(qualifications.forHit)}]`;\n\t\t\tif (!isNil$1(hitText)) trace.push({\n\t\t\t\ttype: HIT_QUAL_TYPE,\n\t\t\t\tlabel: hitText,\n\t\t\t\timportance: -12\n\t\t\t});\n\t\t}\n\t}\n\treturn { fullTrace: buildFullTrace(trace) };\n}\nfunction collectTypeStats(records) {\n\tconst importances = /* @__PURE__ */ new Map();\n\tconst countByType = /* @__PURE__ */ new Map();\n\tfor (const record of records) for (let i = 0; i < record.fullTrace.length; i++) {\n\t\tconst { fullType, importance: rawImportance } = record.fullTrace[i];\n\t\tconst importance = rawImportance ?? 0;\n\t\tconst distance = (record.fullTrace.length - i) * DISTANCE_PENALTY;\n\t\tcountByType.set(fullType, (countByType.get(fullType) ?? 0) + 1);\n\t\timportances.set(fullType, Math.max(importances.get(fullType) ?? Number.NEGATIVE_INFINITY, importance - distance));\n\t}\n\treturn {\n\t\timportances,\n\t\tcountByType\n\t};\n}\nfunction classifyTypes(stats, totalRecords) {\n\tconst sorted = [...stats.importances].sort(([, i1], [, i2]) => i2 - i1);\n\tconst mainTypes = [];\n\tconst secondaryTypes = [];\n\tfor (const [typeName] of sorted) if (typeName.endsWith(\"@1\") || stats.countByType.get(typeName) === totalRecords) mainTypes.push(typeName);\n\telse secondaryTypes.push(typeName);\n\treturn {\n\t\tmainTypes,\n\t\tsecondaryTypes\n\t};\n}\nfunction renderRecordLabel(record, includedTypes, forceTraceElements, separator) {\n\tconst traceParts = [];\n\tconst anchorParts = [];\n\tlet linkerLabel;\n\tlet hitLabel;\n\tfor (const ft of record.fullTrace) {\n\t\tif (!(includedTypes.has(ft.fullType) || forceTraceElements?.has(ft.type))) continue;\n\t\tif (ft.type === LINKER_TYPE) linkerLabel = ft.label;\n\t\telse if (ft.type === HIT_QUAL_TYPE) hitLabel = ft.label;\n\t\telse if (isAnchorQualType(ft.type)) anchorParts.push(ft.label);\n\t\telse traceParts.push(ft.label);\n\t}\n\tif (traceParts.length === 0 && anchorParts.length === 0 && linkerLabel === void 0 && hitLabel === void 0) return void 0;\n\tlet label = traceParts.join(separator);\n\tconst append = (part) => {\n\t\tlabel = label.length === 0 ? part : `${label} ${part}`;\n\t};\n\tif (linkerLabel !== void 0) append(linkerLabel);\n\tfor (const a of anchorParts) append(a);\n\tif (hitLabel !== void 0) append(hitLabel);\n\treturn label;\n}\nfunction buildLabels(records, includedTypes, forceTraceElements, separator, force) {\n\tconst result = [];\n\tfor (const r of records) {\n\t\tconst rendered = renderRecordLabel(r, includedTypes, forceTraceElements, separator);\n\t\tif (rendered === void 0) {\n\t\t\tif (!force) return void 0;\n\t\t\tresult.push(\"Unlabeled\");\n\t\t\tcontinue;\n\t\t}\n\t\tresult.push(rendered);\n\t}\n\treturn result;\n}\n/**\n* Drop the \"via …\" linker suffix from records whose label is already unique without it.\n*\n* Global minimization may include `LINKER_TYPE_FULL` solely to resolve a collision between a\n* subset of records — but `buildLabels` then renders the suffix on every record that carries a\n* linker trace entry, including ones whose stem is already unique. We strip the suffix where it\n* isn't load-bearing while keeping the symmetric rendering required by `linkerForced` /\n* `forceTraceElements`.\n*\n* Rule: a record's linker suffix is redundant iff its stem (label rendered without LINKER) does\n* not appear anywhere else in the set.\n*/\nfunction dropRedundantLinkerSuffix(records, globalTypeSet, forceTraceElements, forcedSet, separator, labels) {\n\tif (!globalTypeSet.has(LINKER_TYPE_FULL)) return labels;\n\tif (forcedSet.has(LINKER_TYPE_FULL) || forceTraceElements?.has(LINKER_TYPE)) return labels;\n\tconst setWithoutLinker = new Set(globalTypeSet);\n\tsetWithoutLinker.delete(LINKER_TYPE_FULL);\n\tconst stems = records.map((r) => renderRecordLabel(r, setWithoutLinker, forceTraceElements, separator));\n\tconst stemOccurrences = /* @__PURE__ */ new Map();\n\tfor (const s of stems) if (s !== void 0) stemOccurrences.set(s, (stemOccurrences.get(s) ?? 0) + 1);\n\treturn labels.map((label, i) => {\n\t\tconst stem = stems[i];\n\t\tif (stem === void 0) return label;\n\t\treturn stemOccurrences.get(stem) === 1 ? stem : label;\n\t});\n}\nfunction countUniqueLabels(result) {\n\tif (result === void 0) return 0;\n\treturn new Set(result).size;\n}\nfunction minimizeTypeSet(typeSet, records, stats, forceTraceElements, forcedSet, separator) {\n\tconst initialResult = buildLabels(records, typeSet, forceTraceElements, separator, false);\n\tif (initialResult === void 0) return typeSet;\n\tconst targetCardinality = countUniqueLabels(initialResult);\n\tconst result = new Set(typeSet);\n\tconst removable = [...result].filter((t) => !forceTraceElements?.has(t.split(\"@\")[0]) && !forcedSet.has(t)).sort((a, b) => (stats.importances.get(a) ?? 0) - (stats.importances.get(b) ?? 0));\n\tfor (const typeToRemove of removable) {\n\t\tconst candidate = new Set(result);\n\t\tcandidate.delete(typeToRemove);\n\t\tconst candidateResult = buildLabels(records, candidate, forceTraceElements, separator, false);\n\t\tif (candidateResult !== void 0 && countUniqueLabels(candidateResult) >= targetCardinality) result.delete(typeToRemove);\n\t}\n\treturn result;\n}\n//#endregion\nexport { deriveDistinctLabels };\n\n//# sourceMappingURL=derive_distinct_labels.js.map","import { deriveDistinctLabels } from \"../../labels/derive_distinct_labels.js\";\n//#region src/render/util/label.ts\n/** @deprecated Use deriveDistinctLabels */\nfunction deriveLabels(values, getSpec, options = {}) {\n\treturn deriveDistinctLabels(values.map(getSpec), options).map((label, i) => ({\n\t\tvalue: values[i],\n\t\tlabel\n\t}));\n}\n//#endregion\nexport { deriveLabels };\n\n//# sourceMappingURL=label.js.map","import { TreeNodeAccessor } from \"../accessor.js\";\nimport { dataInfoToEntries, isDataInfo, isDataInfoEntries, visitDataInfo } from \"@milaboratories/pl-model-common\";\n//#region src/render/util/pcolumn_data.ts\nconst PCD_PREFIX = \"PColumnData/\";\nconst RT_RESOURCE_MAP = PCD_PREFIX + \"ResourceMap\";\nconst RT_RESOURCE_MAP_PARTITIONED = PCD_PREFIX + \"Partitioned/ResourceMap\";\nconst RT_JSON_PARTITIONED = PCD_PREFIX + \"JsonPartitioned\";\nconst RT_BINARY_PARTITIONED = PCD_PREFIX + \"BinaryPartitioned\";\nconst RT_PARQUET_PARTITIONED = PCD_PREFIX + \"ParquetPartitioned\";\nconst PCD_SUP_PREFIX = PCD_PREFIX + \"Partitioned/\";\nconst RT_JSON_SUPER_PARTITIONED = PCD_SUP_PREFIX + \"JsonPartitioned\";\nconst RT_BINARY_SUPER_PARTITIONED = PCD_SUP_PREFIX + \"BinaryPartitioned\";\nconst RT_PARQUET_SUPER_PARTITIONED = PCD_SUP_PREFIX + \"ParquetPartitioned\";\nfunction populateResourceMapData(acc, resourceParser, data, keyPrefix = [], addEntriesWithNoData) {\n\tif (acc === void 0) return false;\n\tswitch (acc.resourceType.name) {\n\t\tcase RT_RESOURCE_MAP: {\n\t\t\tlet isComplete = acc.getInputsLocked();\n\t\t\tfor (const keyStr of acc.listInputFields()) {\n\t\t\t\tconst value = acc.resolve({\n\t\t\t\t\tfield: keyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tconst key = [...keyPrefix, ...JSON.parse(keyStr)];\n\t\t\t\tconst converted = value === void 0 ? void 0 : resourceParser(value);\n\t\t\t\tif (converted === void 0) isComplete = false;\n\t\t\t\tif (converted !== void 0 || addEntriesWithNoData) data.push({\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue: converted\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn isComplete;\n\t\t}\n\t\tcase RT_RESOURCE_MAP_PARTITIONED: {\n\t\t\tlet isComplete = acc.getInputsLocked();\n\t\t\tfor (const keyStr of acc.listInputFields()) {\n\t\t\t\tconst value = acc.resolve({\n\t\t\t\t\tfield: keyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tif (value === void 0) isComplete = false;\n\t\t\t\telse {\n\t\t\t\t\tconst populateResult = populateResourceMapData(value, resourceParser, data, [...keyPrefix, ...JSON.parse(keyStr)], addEntriesWithNoData);\n\t\t\t\t\tisComplete = isComplete && populateResult;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn isComplete;\n\t\t}\n\t\tdefault: throw new Error(`Unknown resource type: ${acc.resourceType.name}`);\n\t}\n}\nfunction parseResourceMap(acc, resourceParser, addEntriesWithNoData = false) {\n\tconst data = [];\n\treturn {\n\t\tisComplete: populateResourceMapData(acc, resourceParser, data, [], addEntriesWithNoData),\n\t\tdata\n\t};\n}\nconst removeIndexSuffix = (keyStr) => {\n\tif (keyStr.endsWith(\".index\")) return {\n\t\tbaseKey: keyStr.substring(0, keyStr.length - 6),\n\t\ttype: \"index\"\n\t};\n\telse if (keyStr.endsWith(\".values\")) return {\n\t\tbaseKey: keyStr.substring(0, keyStr.length - 7),\n\t\ttype: \"values\"\n\t};\n\telse throw new Error(`key must ends on .index/.values for binary p-column, got: ${keyStr}`);\n};\n/** Returns a list of all partition keys appeared in the p-column */\nfunction getPartitionKeysList(acc) {\n\tif (!acc) return void 0;\n\tconst rt = acc.resourceType.name;\n\tconst meta = acc.getDataAsJson();\n\tconst data = [];\n\tlet keyLength = 0;\n\tswitch (rt) {\n\t\tcase RT_RESOURCE_MAP:\n\t\t\tkeyLength = meta[\"keyLength\"];\n\t\t\tbreak;\n\t\tcase RT_RESOURCE_MAP_PARTITIONED:\n\t\t\tkeyLength = meta[\"partitionKeyLength\"] + meta[\"keyLength\"];\n\t\t\tbreak;\n\t\tcase RT_JSON_PARTITIONED:\n\t\tcase RT_BINARY_PARTITIONED:\n\t\tcase RT_PARQUET_PARTITIONED:\n\t\t\tkeyLength = meta[\"partitionKeyLength\"];\n\t\t\tbreak;\n\t\tcase RT_BINARY_SUPER_PARTITIONED:\n\t\tcase RT_JSON_SUPER_PARTITIONED:\n\t\tcase RT_PARQUET_SUPER_PARTITIONED:\n\t\t\tkeyLength = meta[\"superPartitionKeyLength\"] + meta[\"partitionKeyLength\"];\n\t\t\tbreak;\n\t}\n\tswitch (rt) {\n\t\tcase RT_RESOURCE_MAP:\n\t\tcase RT_JSON_PARTITIONED:\n\t\tcase RT_BINARY_PARTITIONED:\n\t\tcase RT_PARQUET_PARTITIONED:\n\t\t\tfor (let keyStr of acc.listInputFields()) {\n\t\t\t\tif (rt === \"PColumnData/BinaryPartitioned\") keyStr = removeIndexSuffix(keyStr).baseKey;\n\t\t\t\tconst key = [...JSON.parse(keyStr)];\n\t\t\t\tdata.push(key);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase RT_RESOURCE_MAP_PARTITIONED:\n\t\tcase RT_BINARY_SUPER_PARTITIONED:\n\t\tcase RT_JSON_SUPER_PARTITIONED:\n\t\tcase RT_PARQUET_SUPER_PARTITIONED:\n\t\t\tfor (const supKeyStr of acc.listInputFields()) {\n\t\t\t\tconst keyPrefix = [...JSON.parse(supKeyStr)];\n\t\t\t\tconst value = acc.resolve({\n\t\t\t\t\tfield: supKeyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tif (value !== void 0) for (let keyStr of value.listInputFields()) {\n\t\t\t\t\tif (rt === \"PColumnData/Partitioned/BinaryPartitioned\") keyStr = removeIndexSuffix(keyStr).baseKey;\n\t\t\t\t\tconst key = [...keyPrefix, ...JSON.parse(keyStr)];\n\t\t\t\t\tdata.push(key);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn {\n\t\tdata,\n\t\tkeyLength\n\t};\n}\nfunction getUniquePartitionKeysForDataEntries(list) {\n\tif (list.type !== \"JsonPartitioned\" && list.type !== \"BinaryPartitioned\" && list.type !== \"ParquetPartitioned\") throw new Error(`Splitting requires Partitioned DataInfoEntries, got ${list.type}`);\n\tconst { parts, partitionKeyLength } = list;\n\tconst result = [];\n\tfor (let i = 0; i < partitionKeyLength; ++i) result.push(/* @__PURE__ */ new Set());\n\tfor (const part of parts) {\n\t\tconst key = part.key;\n\t\tif (key.length !== partitionKeyLength) throw new Error(`Key length (${key.length}) does not match partition length (${partitionKeyLength}) for key: ${JSON.stringify(key)}`);\n\t\tfor (let i = 0; i < partitionKeyLength; ++i) result[i].add(key[i]);\n\t}\n\treturn result.map((s) => Array.from(s.values()));\n}\nfunction getUniquePartitionKeys(acc) {\n\tif (acc === void 0) return void 0;\n\tif (isDataInfoEntries(acc)) return getUniquePartitionKeysForDataEntries(acc);\n\tconst list = getPartitionKeysList(acc);\n\tif (!list) return void 0;\n\tconst { data, keyLength } = list;\n\tconst result = [];\n\tfor (let i = 0; i < keyLength; ++i) result.push(/* @__PURE__ */ new Set());\n\tfor (const l of data) {\n\t\tif (l.length !== keyLength) throw new Error(\"key length does not match partition length\");\n\t\tfor (let i = 0; i < keyLength; ++i) result[i].add(l[i]);\n\t}\n\treturn result.map((s) => Array.from(s.values()));\n}\n/**\n* Parses the PColumn data from a TreeNodeAccessor into a DataInfoEntries structure.\n* Returns undefined if any required data is missing.\n* Throws error on validation failures.\n*\n* @param acc - The TreeNodeAccessor containing PColumn data\n* @param keyPrefix - Optional key prefix for recursive calls\n* @returns DataInfoEntries representation of the PColumn data, or undefined if incomplete\n*/\nfunction parsePColumnData(acc, keyPrefix = []) {\n\tif (acc === void 0) return void 0;\n\tif (!acc.getIsReadyOrError()) return void 0;\n\tconst resourceType = acc.resourceType.name;\n\tconst meta = acc.getDataAsJson();\n\tif (keyPrefix.length > 0 && (resourceType === \"PColumnData/Partitioned/JsonPartitioned\" || resourceType === \"PColumnData/Partitioned/BinaryPartitioned\" || resourceType === \"PColumnData/Partitioned/ParquetPartitioned\")) throw new Error(`Unexpected nested super-partitioned resource: ${resourceType}`);\n\tswitch (resourceType) {\n\t\tcase RT_RESOURCE_MAP:\n\t\tcase RT_RESOURCE_MAP_PARTITIONED: throw new Error(`Only data columns are supported, got: ${resourceType}`);\n\t\tcase RT_JSON_PARTITIONED: {\n\t\t\tif (typeof meta?.partitionKeyLength !== \"number\") throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n\t\t\tconst parts = [];\n\t\t\tfor (const keyStr of acc.listInputFields()) {\n\t\t\t\tconst value = acc.resolve({\n\t\t\t\t\tfield: keyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tif (value === void 0) return void 0;\n\t\t\t\tconst key = [...keyPrefix, ...JSON.parse(keyStr)];\n\t\t\t\tparts.push({\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"JsonPartitioned\",\n\t\t\t\tpartitionKeyLength: meta.partitionKeyLength,\n\t\t\t\tparts\n\t\t\t};\n\t\t}\n\t\tcase RT_BINARY_PARTITIONED: {\n\t\t\tif (typeof meta?.partitionKeyLength !== \"number\") throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n\t\t\tconst parts = [];\n\t\t\tconst baseKeys = /* @__PURE__ */ new Map();\n\t\t\tfor (const keyStr of acc.listInputFields()) {\n\t\t\t\tconst suffix = removeIndexSuffix(keyStr);\n\t\t\t\tconst value = acc.resolve({\n\t\t\t\t\tfield: keyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tif (value === void 0) return void 0;\n\t\t\t\tlet entry = baseKeys.get(suffix.baseKey);\n\t\t\t\tif (!entry) {\n\t\t\t\t\tentry = {};\n\t\t\t\t\tbaseKeys.set(suffix.baseKey, entry);\n\t\t\t\t}\n\t\t\t\tif (suffix.type === \"index\") entry.index = value;\n\t\t\t\telse entry.values = value;\n\t\t\t}\n\t\t\tfor (const [baseKeyStr, entry] of baseKeys.entries()) {\n\t\t\t\tif (!entry.index || !entry.values) return void 0;\n\t\t\t\tconst key = [...keyPrefix, ...JSON.parse(baseKeyStr)];\n\t\t\t\tparts.push({\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tindex: entry.index,\n\t\t\t\t\t\tvalues: entry.values\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"BinaryPartitioned\",\n\t\t\t\tpartitionKeyLength: meta.partitionKeyLength,\n\t\t\t\tparts\n\t\t\t};\n\t\t}\n\t\tcase RT_PARQUET_PARTITIONED: {\n\t\t\tif (typeof meta?.partitionKeyLength !== \"number\") throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n\t\t\tconst parts = [];\n\t\t\tfor (const keyStr of acc.listInputFields()) {\n\t\t\t\tconst value = acc.resolve({\n\t\t\t\t\tfield: keyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tif (value === void 0) return void 0;\n\t\t\t\tconst key = [...keyPrefix, ...JSON.parse(keyStr)];\n\t\t\t\tparts.push({\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"ParquetPartitioned\",\n\t\t\t\tpartitionKeyLength: meta.partitionKeyLength,\n\t\t\t\tparts\n\t\t\t};\n\t\t}\n\t\tcase RT_JSON_SUPER_PARTITIONED: {\n\t\t\tif (typeof meta?.superPartitionKeyLength !== \"number\" || typeof meta?.partitionKeyLength !== \"number\") throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`);\n\t\t\tconst totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n\t\t\tconst parts = [];\n\t\t\tfor (const supKeyStr of acc.listInputFields()) {\n\t\t\t\tconst superPartition = acc.resolve({\n\t\t\t\t\tfield: supKeyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tif (superPartition === void 0) return void 0;\n\t\t\t\tif (superPartition.resourceType.name !== \"PColumnData/JsonPartitioned\") throw new Error(`Expected ${RT_JSON_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);\n\t\t\t\tconst innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));\n\t\t\t\tif (innerResult === void 0) return void 0;\n\t\t\t\tif (innerResult.type !== \"JsonPartitioned\") throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\t\t\t\tparts.push(...innerResult.parts);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"JsonPartitioned\",\n\t\t\t\tpartitionKeyLength: totalKeyLength,\n\t\t\t\tparts\n\t\t\t};\n\t\t}\n\t\tcase RT_BINARY_SUPER_PARTITIONED: {\n\t\t\tif (typeof meta?.superPartitionKeyLength !== \"number\" || typeof meta?.partitionKeyLength !== \"number\") throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`);\n\t\t\tconst totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n\t\t\tconst parts = [];\n\t\t\tfor (const supKeyStr of acc.listInputFields()) {\n\t\t\t\tconst superPartition = acc.resolve({\n\t\t\t\t\tfield: supKeyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tif (superPartition === void 0) return void 0;\n\t\t\t\tif (superPartition.resourceType.name !== \"PColumnData/BinaryPartitioned\") throw new Error(`Expected ${RT_BINARY_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);\n\t\t\t\tconst innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));\n\t\t\t\tif (innerResult === void 0) return void 0;\n\t\t\t\tif (innerResult.type !== \"BinaryPartitioned\") throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\t\t\t\tparts.push(...innerResult.parts);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"BinaryPartitioned\",\n\t\t\t\tpartitionKeyLength: totalKeyLength,\n\t\t\t\tparts\n\t\t\t};\n\t\t}\n\t\tcase RT_PARQUET_SUPER_PARTITIONED: {\n\t\t\tif (typeof meta?.superPartitionKeyLength !== \"number\" || typeof meta?.partitionKeyLength !== \"number\") throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`);\n\t\t\tconst totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n\t\t\tconst parts = [];\n\t\t\tfor (const supKeyStr of acc.listInputFields()) {\n\t\t\t\tconst superPartition = acc.resolve({\n\t\t\t\t\tfield: supKeyStr,\n\t\t\t\t\tassertFieldType: \"Input\"\n\t\t\t\t});\n\t\t\t\tif (superPartition === void 0) return void 0;\n\t\t\t\tif (superPartition.resourceType.name !== \"PColumnData/ParquetPartitioned\") throw new Error(`Expected ${RT_PARQUET_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);\n\t\t\t\tconst innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));\n\t\t\t\tif (innerResult === void 0) return void 0;\n\t\t\t\tif (innerResult.type !== \"ParquetPartitioned\") throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\t\t\t\tparts.push(...innerResult.parts);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"ParquetPartitioned\",\n\t\t\t\tpartitionKeyLength: totalKeyLength,\n\t\t\t\tparts\n\t\t\t};\n\t\t}\n\t\tdefault: throw new Error(`Unknown resource type: ${resourceType}`);\n\t}\n}\n/**\n* Converts or parses the input into DataInfoEntries format.\n\n* @param acc - The input data, which can be TreeNodeAccessor, DataInfoEntries, DataInfo, or undefined.\n* @returns The data in DataInfoEntries format, or undefined if the input was undefined or data is not ready.\n*/\nfunction convertOrParsePColumnData(acc) {\n\tif (acc === void 0) return void 0;\n\tif (isDataInfoEntries(acc)) return acc;\n\tif (isDataInfo(acc)) return dataInfoToEntries(acc);\n\tif (acc instanceof TreeNodeAccessor) return parsePColumnData(acc);\n\tthrow new Error(`Unexpected input type: ${typeof acc}`);\n}\nfunction isPColumnReady(c) {\n\tconst isValues = (d) => Array.isArray(d);\n\tconst isAccessor = (d) => d instanceof TreeNodeAccessor;\n\tlet ready = true;\n\tconst data = typeof c.data === \"function\" ? c.data() : c.data;\n\tif (data == null) return false;\n\telse if (isAccessor(data)) ready &&= data.getIsReadyOrError();\n\telse if (isDataInfo(data)) visitDataInfo(data, (v) => ready &&= v.getIsReadyOrError());\n\telse if (!isValues(data)) throw Error(`unsupported column data type: ${data}`);\n\treturn ready;\n}\nfunction allPColumnsReady(columns) {\n\treturn columns.every(isPColumnReady);\n}\n//#endregion\nexport { RT_BINARY_PARTITIONED, RT_BINARY_SUPER_PARTITIONED, RT_JSON_PARTITIONED, RT_JSON_SUPER_PARTITIONED, RT_PARQUET_PARTITIONED, RT_PARQUET_SUPER_PARTITIONED, RT_RESOURCE_MAP, RT_RESOURCE_MAP_PARTITIONED, allPColumnsReady, convertOrParsePColumnData, getPartitionKeysList, getUniquePartitionKeys, isPColumnReady, parsePColumnData, parseResourceMap };\n\n//# sourceMappingURL=pcolumn_data.js.map","import { filterDataInfoEntries } from \"./axis_filtering.js\";\nimport { deriveLabels } from \"./label.js\";\nimport { convertOrParsePColumnData, getUniquePartitionKeys } from \"./pcolumn_data.js\";\nimport { Annotation, LinkerMap, canonicalizeAxisId, deriveNativeId, entriesToDataInfo, getAxisId, getColumnIdAndSpec, isLinkerColumn, isPColumnSpec, isPartitionedDataInfoEntries, legacyColumnSelectorsToPredicate, matchAxisId, resolveAnchors } from \"@milaboratories/pl-model-common\";\nimport canonicalize from \"canonicalize\";\n//#region src/render/util/column_collection.ts\nfunction isPColumnValues(value) {\n\tif (!Array.isArray(value)) return false;\n\tif (value.length === 0) return true;\n\tconst first = value[0];\n\treturn typeof first === \"object\" && first !== null && \"key\" in first && \"val\" in first;\n}\n/**\n* A simple implementation of {@link ColumnProvider} backed by a pre-defined array of columns.\n*/\nvar ArrayColumnProvider = class {\n\tconstructor(columns) {\n\t\tthis.columns = columns;\n\t}\n\tselectColumns(selectors) {\n\t\tconst predicate = typeof selectors === \"function\" ? selectors : legacyColumnSelectorsToPredicate(selectors);\n\t\treturn this.columns.filter((column) => predicate(column.spec));\n\t}\n};\nfunction splitFiltersToExtraTrace(splitFilters) {\n\tif (splitFilters === void 0) return void 0;\n\treturn splitFilters.map((filter) => ({\n\t\ttype: `split:${canonicalizeAxisId(filter.axisId)}`,\n\t\tlabel: filter.label,\n\t\timportance: 1e6\n\t}));\n}\nfunction splitFiltersToAxisFilter(splitFilters) {\n\tif (!splitFilters) return void 0;\n\treturn splitFilters.map((filter) => [filter.axisIdx, filter.value]);\n}\nfunction fallbackIdDeriver(originalId, axisFilters) {\n\tif (!axisFilters || axisFilters.length === 0) return originalId;\n\treturn canonicalize({\n\t\tid: originalId,\n\t\taxisFilters: [...axisFilters].sort((a, b) => a[0] - b[0])\n\t});\n}\n/** Checks if a selector object uses any anchor properties */\nfunction hasAnchors(selector) {\n\tif (!selector || typeof selector !== \"object\") return false;\n\tconst potentialAnchored = selector;\n\tconst hasAnchorValues = (obj) => obj && typeof obj === \"object\" && Object.values(obj).some((v) => typeof v === \"object\" && v !== null && \"anchor\" in v);\n\tconst domainHasAnchors = hasAnchorValues(potentialAnchored[\"domain\"]);\n\tconst contextDomainHasAnchors = hasAnchorValues(potentialAnchored[\"contextDomain\"]);\n\tconst axesHaveAnchors = potentialAnchored[\"axes\"] && Array.isArray(potentialAnchored[\"axes\"]) && potentialAnchored[\"axes\"].some((a) => typeof a === \"object\" && a !== null && \"anchor\" in a);\n\treturn !!potentialAnchored[\"domainAnchor\"] || !!potentialAnchored[\"contextDomainAnchor\"] || domainHasAnchors || contextDomainHasAnchors || axesHaveAnchors;\n}\n/**\n* Derives the indices of axes marked for splitting based on the selector.\n* Throws an error if splitting is requested alongside `partialAxesMatch`.\n*/\nfunction getSplitAxisIndices(selector) {\n\tif (typeof selector !== \"object\" || !(\"axes\" in selector) || selector.axes === void 0) return [];\n\tconst splitIndices = selector.axes.map((axis, index) => typeof axis === \"object\" && \"split\" in axis && axis.split === true ? index : -1).filter((index) => index !== -1);\n\tif (splitIndices.length > 0 && selector.partialAxesMatch !== void 0) throw new Error(\"Axis splitting is not supported when `partialAxesMatch` is defined.\");\n\tsplitIndices.sort((a, b) => a - b);\n\treturn splitIndices;\n}\nvar PColumnCollection = class {\n\tdefaultProviderStore = [];\n\tproviders = [new ArrayColumnProvider(this.defaultProviderStore)];\n\taxisLabelProviders = [];\n\tconstructor() {}\n\taddColumnProvider(provider) {\n\t\tthis.providers.push(provider);\n\t\treturn this;\n\t}\n\taddAxisLabelProvider(provider) {\n\t\tthis.axisLabelProviders.push(provider);\n\t\treturn this;\n\t}\n\taddColumns(columns) {\n\t\tthis.defaultProviderStore.push(...columns);\n\t\treturn this;\n\t}\n\taddColumn(column) {\n\t\tthis.defaultProviderStore.push(column);\n\t\treturn this;\n\t}\n\t/** Fetches labels for a given axis from the registered providers */\n\tfindLabels(axis) {\n\t\tfor (const provider of this.axisLabelProviders) {\n\t\t\tconst labels = provider.findLabels(axis);\n\t\t\tif (labels) return labels;\n\t\t}\n\t}\n\tgetUniversalEntries(predicateOrSelectors, opts) {\n\t\tconst { anchorCtx, labelOps: rawLabelOps, dontWaitAllData = false, overrideLabelAnnotation = false, exclude, enrichByLinkers = false } = opts ?? {};\n\t\tconst labelOps = {\n\t\t\t...overrideLabelAnnotation && rawLabelOps?.includeNativeLabel !== false ? { includeNativeLabel: true } : {},\n\t\t\t...rawLabelOps\n\t\t};\n\t\tlet excludePredicate = () => false;\n\t\tif (exclude) {\n\t\t\tconst excludePredicartes = (Array.isArray(exclude) ? exclude : [exclude]).map((selector) => {\n\t\t\t\tif (hasAnchors(selector)) {\n\t\t\t\t\tif (!anchorCtx) throw new Error(\"Anchored selectors in exclude require an AnchoredIdDeriver to be provided in options.\");\n\t\t\t\t\treturn legacyColumnSelectorsToPredicate(resolveAnchors(anchorCtx.anchors, selector, opts));\n\t\t\t\t} else return legacyColumnSelectorsToPredicate(selector);\n\t\t\t});\n\t\t\texcludePredicate = (spec) => excludePredicartes.some((predicate) => predicate(spec));\n\t\t}\n\t\tconst selectorsArray = typeof predicateOrSelectors === \"function\" ? [predicateOrSelectors] : Array.isArray(predicateOrSelectors) ? predicateOrSelectors : [predicateOrSelectors];\n\t\tconst intermediateResults = [];\n\t\tconst selectedNativeIds = /* @__PURE__ */ new Set();\n\t\tfor (const rawSelector of selectorsArray) {\n\t\t\tconst usesAnchors = hasAnchors(rawSelector);\n\t\t\tlet currentSelector;\n\t\t\tif (usesAnchors) {\n\t\t\t\tif (!anchorCtx) throw new Error(\"Anchored selectors require an AnchoredIdDeriver to be provided in options.\");\n\t\t\t\tcurrentSelector = resolveAnchors(anchorCtx.anchors, rawSelector, opts);\n\t\t\t} else currentSelector = rawSelector;\n\t\t\tconst selectedIds = /* @__PURE__ */ new Set();\n\t\t\tconst selectedColumns = [];\n\t\t\tfor (const provider of this.providers) {\n\t\t\t\tconst providerColumns = provider.selectColumns(currentSelector);\n\t\t\t\tfor (const col of providerColumns) {\n\t\t\t\t\tif (excludePredicate(col.spec)) continue;\n\t\t\t\t\tif (selectedIds.has(col.id)) throw new Error(`Duplicate column id ${col.id} in provider ${provider.constructor.name}`);\n\t\t\t\t\tconst nativeId = deriveNativeId(col.spec);\n\t\t\t\t\tif (selectedNativeIds.has(nativeId)) continue;\n\t\t\t\t\tselectedIds.add(col.id);\n\t\t\t\t\tselectedNativeIds.add(nativeId);\n\t\t\t\t\tselectedColumns.push(col);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (selectedColumns.length === 0) continue;\n\t\t\tconst splitAxisIdxs = getSplitAxisIndices(rawSelector);\n\t\t\tconst needsSplitting = splitAxisIdxs.length > 0;\n\t\t\tfor (const column of selectedColumns) {\n\t\t\t\tif (!isPColumnSpec(column.spec)) continue;\n\t\t\t\tconst originalSpec = column.spec;\n\t\t\t\tif (needsSplitting) {\n\t\t\t\t\tif (isPColumnValues(column.data)) throw new Error(`Splitting is not supported for PColumns with PColumnValues data format. Column id: ${column.id}`);\n\t\t\t\t\tconst dataEntries = convertOrParsePColumnData(column.data);\n\t\t\t\t\tif (!dataEntries) {\n\t\t\t\t\t\tif (dontWaitAllData) continue;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (!isPartitionedDataInfoEntries(dataEntries)) throw new Error(`Splitting requires Partitioned DataInfoEntries, but parsing resulted in ${dataEntries.type} for column ${column.id}`);\n\t\t\t\t\tconst uniqueKeys = getUniquePartitionKeys(dataEntries);\n\t\t\t\t\tconst maxSplitIdx = splitAxisIdxs[splitAxisIdxs.length - 1];\n\t\t\t\t\tif (maxSplitIdx >= dataEntries.partitionKeyLength) throw new Error(`Not enough partition keys (${dataEntries.partitionKeyLength}) for requested split axes (max index ${maxSplitIdx}) in column ${originalSpec.name}`);\n\t\t\t\t\tconst axesLabels = splitAxisIdxs.map((idx) => this.findLabels(getAxisId(originalSpec.axesSpec[idx])));\n\t\t\t\t\tconst keyCombinations = [];\n\t\t\t\t\tconst generateCombinations = (currentCombo, sAxisIdx) => {\n\t\t\t\t\t\tif (sAxisIdx >= splitAxisIdxs.length) {\n\t\t\t\t\t\t\tkeyCombinations.push([...currentCombo]);\n\t\t\t\t\t\t\tif (keyCombinations.length > 1e4) throw new Error(\"Too many key combinations, aborting.\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst axisIdx = splitAxisIdxs[sAxisIdx];\n\t\t\t\t\t\tif (axisIdx >= uniqueKeys.length) throw new Error(`Axis index ${axisIdx} out of bounds for unique keys array (length ${uniqueKeys.length}) during split key generation for column ${column.id}`);\n\t\t\t\t\t\tconst axisValues = uniqueKeys[axisIdx];\n\t\t\t\t\t\tif (!axisValues || axisValues.length === 0) {\n\t\t\t\t\t\t\tkeyCombinations.length = 0;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const val of axisValues) {\n\t\t\t\t\t\t\tcurrentCombo.push(val);\n\t\t\t\t\t\t\tgenerateCombinations(currentCombo, sAxisIdx + 1);\n\t\t\t\t\t\t\tcurrentCombo.pop();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tgenerateCombinations([], 0);\n\t\t\t\t\tif (keyCombinations.length === 0) continue;\n\t\t\t\t\tconst newAxesSpec = [...originalSpec.axesSpec];\n\t\t\t\t\tconst splitAxisOriginalIdxs = splitAxisIdxs.map((idx) => idx);\n\t\t\t\t\tfor (let i = splitAxisIdxs.length - 1; i >= 0; i--) newAxesSpec.splice(splitAxisIdxs[i], 1);\n\t\t\t\t\tconst adjustedSpec = {\n\t\t\t\t\t\t...originalSpec,\n\t\t\t\t\t\taxesSpec: newAxesSpec\n\t\t\t\t\t};\n\t\t\t\t\tfor (const keyCombo of keyCombinations) {\n\t\t\t\t\t\tconst splitFilters = keyCombo.map((value, sAxisIdx) => {\n\t\t\t\t\t\t\tconst axisIdx = splitAxisOriginalIdxs[sAxisIdx];\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\taxisIdx,\n\t\t\t\t\t\t\t\taxisId: getAxisId(originalSpec.axesSpec[axisIdx]),\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\tlabel: axesLabels[sAxisIdx]?.[value] ?? String(value)\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t\tintermediateResults.push({\n\t\t\t\t\t\t\ttype: \"split\",\n\t\t\t\t\t\t\toriginalColumn: column,\n\t\t\t\t\t\t\tspec: originalSpec,\n\t\t\t\t\t\t\tadjustedSpec,\n\t\t\t\t\t\t\tdataEntries,\n\t\t\t\t\t\t\taxisFilters: splitFilters\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else intermediateResults.push({\n\t\t\t\t\ttype: \"direct\",\n\t\t\t\t\toriginalColumn: column,\n\t\t\t\t\tspec: originalSpec,\n\t\t\t\t\tadjustedSpec: originalSpec\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (intermediateResults.length === 0) return [];\n\t\tconst labeledResults = deriveLabels(intermediateResults, (entry) => ({\n\t\t\tspec: entry.spec,\n\t\t\textraTrace: entry.type === \"split\" ? splitFiltersToExtraTrace(entry.axisFilters) : void 0\n\t\t}), labelOps);\n\t\tconst result = [];\n\t\tfor (const { value: entry, label } of labeledResults) {\n\t\t\tconst { originalColumn, spec: originalSpec } = entry;\n\t\t\tconst axisFiltersTuple = splitFiltersToAxisFilter(entry.type === \"split\" ? entry.axisFilters : void 0);\n\t\t\tlet finalId;\n\t\t\tif (anchorCtx) finalId = anchorCtx.deriveS(originalSpec, axisFiltersTuple);\n\t\t\telse finalId = fallbackIdDeriver(originalColumn.id, axisFiltersTuple);\n\t\t\tlet finalSpec = { ...entry.adjustedSpec };\n\t\t\tif (overrideLabelAnnotation) finalSpec = {\n\t\t\t\t...finalSpec,\n\t\t\t\tannotations: {\n\t\t\t\t\t...finalSpec.annotations,\n\t\t\t\t\t[Annotation.Label]: label\n\t\t\t\t}\n\t\t\t};\n\t\t\tresult.push({\n\t\t\t\tid: finalId,\n\t\t\t\tspec: finalSpec,\n\t\t\t\tdata: () => entry.type === \"split\" ? entriesToDataInfo(filterDataInfoEntries(entry.dataEntries, axisFiltersTuple)) : entry.originalColumn.data,\n\t\t\t\tlabel\n\t\t\t});\n\t\t}\n\t\tconst ids = new Set(result.map((entry) => entry.id));\n\t\tif (enrichByLinkers && anchorCtx) {\n\t\t\tconst linkers = result.filter((entry) => isLinkerColumn(entry.spec));\n\t\t\tif (linkers.length === 0) return result;\n\t\t\tconst anchorAxes = Object.values(anchorCtx.anchors).flatMap((anchor) => anchor.axesSpec);\n\t\t\tconst linkerMap = LinkerMap.fromColumns(linkers.map(getColumnIdAndSpec));\n\t\t\tfunction matchAxisIdFn(linkerKeyId, sourceAxisId) {\n\t\t\t\treturn matchAxisId(linkerKeyId, sourceAxisId) || matchAxisId(sourceAxisId, linkerKeyId);\n\t\t\t}\n\t\t\tconst availableByLinkersAxes = linkerMap.getReachableByLinkersAxesFromAxes(anchorAxes, matchAxisIdFn);\n\t\t\tconst availableByLinkersColumns = this.getUniversalEntries((spec) => !isLinkerColumn(spec) && spec.axesSpec.some((columnAxisSpec) => {\n\t\t\t\tconst columnAxisId = getAxisId(columnAxisSpec);\n\t\t\t\treturn availableByLinkersAxes.some((axis) => matchAxisIdFn(getAxisId(axis), columnAxisId));\n\t\t\t}), {\n\t\t\t\tanchorCtx,\n\t\t\t\tlabelOps,\n\t\t\t\tdontWaitAllData,\n\t\t\t\toverrideLabelAnnotation,\n\t\t\t\texclude\n\t\t\t});\n\t\t\tif (availableByLinkersColumns) result.push(...availableByLinkersColumns.filter((entry) => !ids.has(entry.id)));\n\t\t}\n\t\treturn result;\n\t}\n\tgetColumns(predicateOrSelectors, opts) {\n\t\tconst entries = this.getUniversalEntries(predicateOrSelectors, {\n\t\t\toverrideLabelAnnotation: true,\n\t\t\t...opts\n\t\t});\n\t\tif (!entries) return void 0;\n\t\tconst columns = [];\n\t\tfor (const entry of entries) {\n\t\t\tconst data = entry.data();\n\t\t\tif (!data) {\n\t\t\t\tif (opts?.dontWaitAllData) continue;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcolumns.push({\n\t\t\t\tid: entry.id,\n\t\t\t\tspec: entry.spec,\n\t\t\t\tdata\n\t\t\t});\n\t\t}\n\t\treturn columns;\n\t}\n};\n//#endregion\nexport { PColumnCollection };\n\n//# sourceMappingURL=column_collection.js.map","import { resolveRequiredServices } from \"@milaboratories/pl-model-common\";\n//#region src/services/block_services.ts\n/**\n* Services required by all V3 blocks by default.\n* Edit this when a new service should be available to all blocks.\n*\n* Standalone module to avoid circular dependencies between block_model.ts\n* and service type resolution.\n*/\nconst BLOCK_SERVICE_FLAGS = {\n\trequiresPFrameSpec: true,\n\trequiresPFrame: true,\n\trequiresDialog: true\n};\nconst blockServiceNames = resolveRequiredServices(BLOCK_SERVICE_FLAGS);\n//#endregion\nexport { BLOCK_SERVICE_FLAGS, blockServiceNames };\n\n//# sourceMappingURL=block_services.js.map","//#region src/services/service_bridge.ts\n/**\n* Builds a lazy services object from ServiceDispatch and UiServiceRegistry.\n* Each service is instantiated on first access. Errors are cached to prevent\n* repeated factory calls on failure.\n*/\nfunction buildServices(dispatch, registry) {\n\treturn Object.create(null, Object.fromEntries(dispatch.getServiceNames().map((id) => {\n\t\tlet fetched = false;\n\t\tlet cached;\n\t\treturn [id, {\n\t\t\tenumerable: true,\n\t\t\tget() {\n\t\t\t\tif (!fetched) {\n\t\t\t\t\tfetched = true;\n\t\t\t\t\tcached = registry.get(id);\n\t\t\t\t}\n\t\t\t\treturn cached;\n\t\t\t}\n\t\t}];\n\t})));\n}\n/**\n* Builds a ServiceProxy from a ServiceDispatch.\n* Each service method call is forwarded to dispatch.callServiceMethod.\n*/\nfunction createServiceProxy(dispatch) {\n\treturn ((serviceId) => Object.freeze(Object.fromEntries(dispatch.getServiceMethods(serviceId).map((method) => [method, (...args) => dispatch.callServiceMethod(serviceId, method, ...args)]))));\n}\n//#endregion\nexport { buildServices, createServiceProxy };\n\n//# sourceMappingURL=service_bridge.js.map","import { getCfgRenderCtx } from \"../internal.js\";\nimport { createServiceProxy } from \"./service_bridge.js\";\n//#region src/services/get_services.ts\nconst cachedServices = /* @__PURE__ */ new WeakMap();\nfunction getService(name) {\n\tconst ctx = getCfgRenderCtx();\n\tconst map = cachedServices.has(ctx) ? cachedServices.get(ctx) : (() => {\n\t\tcachedServices.set(ctx, /* @__PURE__ */ new Map());\n\t\treturn cachedServices.get(ctx);\n\t})();\n\treturn map.has(name) ? map.get(name) : (() => {\n\t\tmap.set(name, createServiceProxy(ctx)(name));\n\t\treturn map.get(name);\n\t})();\n}\n//#endregion\nexport { getService };\n\n//# sourceMappingURL=get_services.js.map","//#region src/render/util/pframe_upgraders.ts\nfunction patchInSetFilters(filters) {\n\tconst inSetToOrEqual = (predicate) => {\n\t\tif (predicate.operator !== \"InSet\") return predicate;\n\t\treturn {\n\t\t\toperator: \"Or\",\n\t\t\toperands: predicate.references.map((reference) => ({\n\t\t\t\toperator: \"Equal\",\n\t\t\t\treference\n\t\t\t}))\n\t\t};\n\t};\n\tconst mapSingleValuePredicate = (filter, cb) => {\n\t\tswitch (filter.operator) {\n\t\t\tcase \"And\": return {\n\t\t\t\t...filter,\n\t\t\t\toperands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb))\n\t\t\t};\n\t\t\tcase \"Or\": return {\n\t\t\t\t...filter,\n\t\t\t\toperands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb))\n\t\t\t};\n\t\t\tcase \"Not\": return {\n\t\t\t\t...filter,\n\t\t\t\toperand: mapSingleValuePredicate(filter.operand, cb)\n\t\t\t};\n\t\t\tdefault: return cb(filter);\n\t\t}\n\t};\n\tconst mapFilter = (filter, cb) => {\n\t\treturn {\n\t\t\t...filter,\n\t\t\tpredicate: mapSingleValuePredicate(filter.predicate, cb)\n\t\t};\n\t};\n\treturn filters.map((filter) => mapFilter(filter, inSetToOrEqual));\n}\n//#endregion\nexport { patchInSetFilters };\n\n//# sourceMappingURL=pframe_upgraders.js.map","import { getPluginData } from \"../block_storage.js\";\nimport { getCfgRenderCtx } from \"../internal.js\";\nimport { TreeNodeAccessor, ifDef } from \"./accessor.js\";\nimport { MainAccessorName, StagingAccessorName } from \"./internal.js\";\nimport { deriveLabels } from \"./util/label.js\";\nimport { allPColumnsReady } from \"./util/pcolumn_data.js\";\nimport { PColumnCollection } from \"./util/column_collection.js\";\nimport { patchInSetFilters } from \"./util/pframe_upgraders.js\";\nimport { getService } from \"../services/get_services.js\";\nimport \"../services/index.js\";\nimport \"./util/index.js\";\nimport { AnchoredIdDeriver, PColumnName, ensurePColumn, extractAllColumns, isDataInfo, isPColumn, isPColumnSpec, isPlRef, legacyColumnSelectorsToPredicate, mapDataInfo, mapPObjectData, mapPTableDef, mapPTableDefV2, mapValueInVOE, parseJson, readAnnotation, withEnrichments } from \"@milaboratories/pl-model-common\";\nimport canonicalize from \"canonicalize\";\n//#region src/render/api.ts\n/**\n* Helper function to match domain objects\n* @param query Optional domain to match against\n* @param target Optional domain to match\n* @returns true if domains match, false otherwise\n*/\nfunction matchDomain(query, target) {\n\tif (query === void 0) return target === void 0;\n\tif (target === void 0) return true;\n\tfor (const k in target) if (query[k] !== target[k]) return false;\n\treturn true;\n}\n/**\n* Transforms PColumn data into the internal representation expected by the platform\n* @param data Data from a PColumn to transform\n* @returns Transformed data compatible with platform API\n*/\nfunction transformPColumnData(data) {\n\treturn mapPObjectData(data, (d) => {\n\t\tif (d instanceof TreeNodeAccessor) return d.handle;\n\t\telse if (isDataInfo(d)) return mapDataInfo(d, (accessor) => accessor.handle);\n\t\telse return d ?? [];\n\t});\n}\nvar ResultPool = class {\n\tctx = getCfgRenderCtx();\n\t/**\n\t* @deprecated use getOptions()\n\t*/\n\tcalculateOptions(predicate) {\n\t\treturn this.ctx.calculateOptions(predicate);\n\t}\n\tgetOptions(predicateOrSelector, opts) {\n\t\tconst predicate = typeof predicateOrSelector === \"function\" ? predicateOrSelector : legacyColumnSelectorsToPredicate(predicateOrSelector);\n\t\tconst filtered = this.getSpecs().entries.filter((s) => predicate(s.obj));\n\t\tlet labelOps = {};\n\t\tlet refsWithEnrichments = false;\n\t\tif (typeof opts !== \"undefined\") {\n\t\t\tif (typeof opts === \"function\") labelOps = opts;\n\t\t\telse if (typeof opts === \"object\") if (\"includeNativeLabel\" in opts || \"separator\" in opts || \"addLabelAsSuffix\" in opts) labelOps = opts;\n\t\t\telse {\n\t\t\t\topts = opts;\n\t\t\t\tlabelOps = opts.label ?? {};\n\t\t\t\trefsWithEnrichments = opts.refsWithEnrichments ?? false;\n\t\t\t}\n\t\t}\n\t\tif (typeof labelOps === \"object\") return deriveLabels(filtered, (o) => o.obj, labelOps ?? {}).map(({ value: { ref }, label }) => ({\n\t\t\tref: withEnrichments(ref, refsWithEnrichments),\n\t\t\tlabel\n\t\t}));\n\t\telse return filtered.map(({ ref, obj }) => ({\n\t\t\tref: withEnrichments(ref, refsWithEnrichments),\n\t\t\tlabel: labelOps(obj, ref)\n\t\t}));\n\t}\n\tresolveAnchorCtx(anchorsOrCtx) {\n\t\tif (anchorsOrCtx instanceof AnchoredIdDeriver) return anchorsOrCtx;\n\t\tconst resolvedAnchors = {};\n\t\tfor (const [key, value] of Object.entries(anchorsOrCtx)) if (isPlRef(value)) {\n\t\t\tconst resolvedSpec = this.getPColumnSpecByRef(value);\n\t\t\tif (!resolvedSpec) return void 0;\n\t\t\tresolvedAnchors[key] = resolvedSpec;\n\t\t} else resolvedAnchors[key] = value;\n\t\treturn new AnchoredIdDeriver(resolvedAnchors);\n\t}\n\t/**\n\t* Returns columns that match the provided anchors and selectors. It applies axis filters and label derivation.\n\t*\n\t* @param anchorsOrCtx - Anchor context for column selection (same as in getCanonicalOptions)\n\t* @param predicateOrSelectors - Predicate or selectors for filtering columns (same as in getCanonicalOptions)\n\t* @param opts - Optional configuration for label generation and data waiting\n\t* @returns A PFrameHandle for the created PFrame, or undefined if any required data is missing\n\t*/\n\tgetAnchoredPColumns(anchorsOrCtx, predicateOrSelectors, opts) {\n\t\tconst anchorCtx = this.resolveAnchorCtx(anchorsOrCtx);\n\t\tif (!anchorCtx) return void 0;\n\t\treturn new PColumnCollection().addColumnProvider(this).addAxisLabelProvider(this).getColumns(predicateOrSelectors, {\n\t\t\t...opts,\n\t\t\tanchorCtx\n\t\t});\n\t}\n\t/**\n\t* Calculates anchored identifier options for columns matching a given predicate and returns their\n\t* canonicalized representations.\n\t*\n\t* This function filters column specifications from the result pool that match the provided predicate,\n\t* creates a standardized AnchorCtx from the provided anchors, and generates a list of label-value\n\t* pairs for UI components (like dropdowns).\n\t*\n\t* @param anchorsOrCtx - Either:\n\t* - An existing AnchorCtx instance\n\t* - A record mapping anchor IDs to PColumnSpec objects\n\t* - A record mapping anchor IDs to PlRef objects (which will be resolved to PColumnSpec)\n\t* @param predicateOrSelectors - Either:\n\t* - A predicate function that takes a PColumnSpec and returns a boolean.\n\t* Only specs that return true will be included.\n\t* - An APColumnSelector object for declarative filtering, which will be\n\t* resolved against the provided anchors and matched using matchPColumn.\n\t* - An array of APColumnSelector objects - columns matching ANY selector\n\t* in the array will be included (OR operation).\n\t* @param opts - Optional configuration for label generation:\n\t* - labelOps: Optional configuration for label generation:\n\t* - includeNativeLabel: Whether to include native column labels\n\t* - separator: String to use between label parts (defaults to \" / \")\n\t* - addLabelAsSuffix: Whether to add labels as suffix instead of prefix\n\t* - dontWaitAllData: Whether to skip columns that don't have all data (if not set, will return undefined,\n\t* if at least one column that requires splitting is missing data)\n\t* @returns An array of objects with `label` (display text) and `value` (anchored ID string) properties,\n\t* or undefined if any PlRef resolution fails.\n\t*/\n\tgetCanonicalOptions(anchorsOrCtx, predicateOrSelectors, opts) {\n\t\tconst anchorCtx = this.resolveAnchorCtx(anchorsOrCtx);\n\t\tif (!anchorCtx) return void 0;\n\t\tconst entries = new PColumnCollection().addColumnProvider(this).addAxisLabelProvider(this).getUniversalEntries(predicateOrSelectors, {\n\t\t\t...opts,\n\t\t\tanchorCtx\n\t\t});\n\t\tif (!entries) return void 0;\n\t\treturn entries.map((item) => ({\n\t\t\tvalue: item.id,\n\t\t\tlabel: item.label\n\t\t}));\n\t}\n\t/**\n\t* @deprecated use getData()\n\t*/\n\tgetDataFromResultPool() {\n\t\treturn this.getData();\n\t}\n\tgetData() {\n\t\tconst result = this.ctx.getDataFromResultPool();\n\t\treturn {\n\t\t\tisComplete: result.isComplete,\n\t\t\tentries: result.entries.map((e) => ({\n\t\t\t\tref: e.ref,\n\t\t\t\tobj: {\n\t\t\t\t\t...e.obj,\n\t\t\t\t\tdata: new TreeNodeAccessor(e.obj.data, [e.ref.blockId, e.ref.name])\n\t\t\t\t}\n\t\t\t}))\n\t\t};\n\t}\n\t/**\n\t* @deprecated use getDataWithErrors()\n\t*/\n\tgetDataWithErrorsFromResultPool() {\n\t\treturn this.getDataWithErrors();\n\t}\n\tgetDataWithErrors() {\n\t\tconst result = this.ctx.getDataWithErrorsFromResultPool();\n\t\treturn {\n\t\t\tisComplete: result.isComplete,\n\t\t\tentries: result.entries.map((e) => ({\n\t\t\t\tref: e.ref,\n\t\t\t\tobj: {\n\t\t\t\t\t...e.obj,\n\t\t\t\t\tdata: mapValueInVOE(e.obj.data, (handle) => new TreeNodeAccessor(handle, [e.ref.blockId, e.ref.name]))\n\t\t\t\t}\n\t\t\t}))\n\t\t};\n\t}\n\t/**\n\t* @deprecated use getSpecs()\n\t*/\n\tgetSpecsFromResultPool() {\n\t\treturn this.getSpecs();\n\t}\n\tgetSpecs() {\n\t\treturn this.ctx.getSpecsFromResultPool();\n\t}\n\t/**\n\t* @param ref a Ref\n\t* @returns data associated with the ref\n\t*/\n\tgetDataByRef(ref) {\n\t\tif (typeof this.ctx.getDataFromResultPoolByRef === \"undefined\") return this.getData().entries.find((f) => f.ref.blockId === ref.blockId && f.ref.name === ref.name)?.obj;\n\t\tconst data = this.ctx.getDataFromResultPoolByRef(ref.blockId, ref.name);\n\t\tif (!data) return void 0;\n\t\treturn mapPObjectData(data, (handle) => new TreeNodeAccessor(handle, [ref.blockId, ref.name]));\n\t}\n\t/**\n\t* Returns data associated with the ref ensuring that it is a p-column.\n\t* @param ref a Ref\n\t* @returns p-column associated with the ref\n\t*/\n\tgetPColumnByRef(ref) {\n\t\tconst data = this.getDataByRef(ref);\n\t\tif (!data) return void 0;\n\t\treturn ensurePColumn(data);\n\t}\n\t/**\n\t* Returns spec associated with the ref ensuring that it is a p-column spec.\n\t* @param ref a Ref\n\t* @returns p-column spec associated with the ref\n\t*/\n\tgetPColumnSpecByRef(ref) {\n\t\tconst spec = this.getSpecByRef(ref);\n\t\tif (!spec) return void 0;\n\t\tif (!isPColumnSpec(spec)) throw new Error(`not a PColumn spec (kind = ${spec.kind})`);\n\t\treturn spec;\n\t}\n\t/**\n\t* @param ref a Ref\n\t* @returns object spec associated with the ref\n\t*/\n\tgetSpecByRef(ref) {\n\t\treturn this.ctx.getSpecFromResultPoolByRef(ref.blockId, ref.name);\n\t}\n\t/**\n\t* @param spec object specification\n\t* @returns array of data objects with compatible specs\n\t* @deprecated delete this method after Jan 1, 2025\n\t*/\n\tfindDataWithCompatibleSpec(spec) {\n\t\tconst result = [];\n\t\tout: for (const data of this.getData().entries) {\n\t\t\tif (!isPColumnSpec(data.obj.spec)) continue;\n\t\t\tconst oth = data.obj.spec;\n\t\t\tif (spec.name !== oth.name) continue;\n\t\t\tif (spec.valueType !== oth.valueType) continue;\n\t\t\tif (spec.axesSpec.length !== oth.axesSpec.length) continue;\n\t\t\tif (!matchDomain(spec.domain, oth.domain)) continue;\n\t\t\tif (!matchDomain(spec.contextDomain, oth.contextDomain)) continue;\n\t\t\tfor (let i = 0; i < spec.axesSpec.length; ++i) {\n\t\t\t\tconst qAx = spec.axesSpec[i];\n\t\t\t\tconst tAx = oth.axesSpec[i];\n\t\t\t\tif (qAx.name !== tAx.name) continue out;\n\t\t\t\tif (qAx.type !== tAx.type) continue out;\n\t\t\t\tif (!matchDomain(qAx.domain, tAx.domain)) continue out;\n\t\t\t\tif (!matchDomain(qAx.contextDomain, tAx.contextDomain)) continue out;\n\t\t\t}\n\t\t\tresult.push(data.obj);\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t* Find labels data for a given axis id. It will search for a label column and return its data as a map.\n\t* @returns a map of axis value => label\n\t*/\n\tfindLabels(axis) {\n\t\tconst dataPool = this.getData();\n\t\tfor (const column of dataPool.entries) {\n\t\t\tif (!isPColumn(column.obj)) continue;\n\t\t\tconst spec = column.obj.spec;\n\t\t\tif (spec.name === PColumnName.Label && spec.axesSpec.length === 1 && spec.axesSpec[0].name === axis.name && spec.axesSpec[0].type === axis.type && matchDomain(axis.domain, spec.axesSpec[0].domain) && matchDomain(axis.contextDomain, spec.axesSpec[0].contextDomain)) {\n\t\t\t\tif (column.obj.data.resourceType.name !== \"PColumnData/Json\") throw Error(`Expected JSON column for labels, got: ${column.obj.data.resourceType.name}`);\n\t\t\t\treturn Object.fromEntries(Object.entries(column.obj.data.getDataAsJson().data).map((e) => [JSON.parse(e[0])[0], e[1]]));\n\t\t\t}\n\t\t}\n\t}\n\t/**\n\t* Selects columns based on the provided selectors, returning PColumn objects\n\t* with lazily loaded data.\n\t*\n\t* @param selectors - A predicate function, a single selector, or an array of selectors.\n\t* @returns An array of PColumn objects matching the selectors. Data is loaded on first access.\n\t*/\n\tselectColumns(selectors) {\n\t\tconst predicate = typeof selectors === \"function\" ? selectors : legacyColumnSelectorsToPredicate(selectors);\n\t\treturn this.getSpecs().entries.filter(({ obj: spec }) => {\n\t\t\tif (!isPColumnSpec(spec)) return false;\n\t\t\treturn predicate(spec);\n\t\t}).map(({ ref, obj: spec }) => {\n\t\t\tconst pcolumnSpec = spec;\n\t\t\tlet _cachedData = null;\n\t\t\tconst self = this;\n\t\t\treturn {\n\t\t\t\tid: canonicalize(ref),\n\t\t\t\tspec: pcolumnSpec,\n\t\t\t\tget data() {\n\t\t\t\t\tif (_cachedData !== null) return _cachedData;\n\t\t\t\t\t_cachedData = self.getPColumnByRef(ref)?.data;\n\t\t\t\t\treturn _cachedData;\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\t/**\n\t* Find labels data for a given axis id of a p-column.\n\t* @returns a map of axis value => label\n\t*/\n\tfindLabelsForColumnAxis(column, axisIdx) {\n\t\tconst labels = this.findLabels(column.axesSpec[axisIdx]);\n\t\tif (!labels) return void 0;\n\t\tconst axisKeys = readAnnotation(column, `pl7.app/axisKeys/${axisIdx}`);\n\t\tif (axisKeys !== void 0) {\n\t\t\tconst keys = JSON.parse(axisKeys);\n\t\t\treturn Object.fromEntries(keys.map((key) => {\n\t\t\t\treturn [key, labels[key] ?? \"Unlabelled\"];\n\t\t\t}));\n\t\t} else return labels;\n\t}\n};\n/** Main entry point to the API available within model lambdas (like outputs, sections, etc..) */\nvar RenderCtxBase = class {\n\tctx;\n\tconstructor() {\n\t\tthis.ctx = getCfgRenderCtx();\n\t}\n\tdataCache;\n\tget data() {\n\t\tif (this.dataCache === void 0) {\n\t\t\tconst raw = this.ctx.data;\n\t\t\tconst value = typeof raw === \"function\" ? raw() : raw;\n\t\t\tthis.dataCache = { v: value ? JSON.parse(value) : {} };\n\t\t}\n\t\treturn this.dataCache.v;\n\t}\n\tactiveArgsCache;\n\t/**\n\t* Returns args snapshot the block was executed for (i.e. when \"Run\" button was pressed).\n\t* Returns undefined, if block was never executed or stopped mid-way execution, so that the result was cleared.\n\t* */\n\tget activeArgs() {\n\t\tif (this.activeArgsCache === void 0) {\n\t\t\tconst raw = this.ctx.activeArgs;\n\t\t\tconst value = typeof raw === \"function\" ? raw() : raw;\n\t\t\tthis.activeArgsCache = { v: value ? JSON.parse(value) : void 0 };\n\t\t}\n\t\treturn this.activeArgsCache.v;\n\t}\n\tgetService(name) {\n\t\treturn getService(name);\n\t}\n\tgetNamedAccessor(name) {\n\t\treturn ifDef(this.ctx.getAccessorHandleByName(name), (accessor) => new TreeNodeAccessor(accessor, [name]));\n\t}\n\tget prerun() {\n\t\treturn this.getNamedAccessor(StagingAccessorName);\n\t}\n\tget outputs() {\n\t\treturn this.getNamedAccessor(MainAccessorName);\n\t}\n\tresultPool = new ResultPool();\n\t/**\n\t* Find labels data for a given axis id. It will search for a label column and return its data as a map.\n\t* @returns a map of axis value => label\n\t* @deprecated Use resultPool.findLabels instead\n\t*/\n\tfindLabels(axis) {\n\t\treturn this.resultPool.findLabels(axis);\n\t}\n\tverifyInlineAndExplicitColumnsSupport(columns) {\n\t\tconst hasInlineColumns = columns.some((c) => !(c.data instanceof TreeNodeAccessor) || isDataInfo(c.data));\n\t\tconst inlineColumnsSupport = this.ctx.featureFlags?.inlineColumnsSupport === true;\n\t\tif (hasInlineColumns && !inlineColumnsSupport) throw Error(`Inline or explicit columns not supported`);\n\t}\n\tpatchPTableDef(def) {\n\t\tif (!this.ctx.featureFlags?.pTablePartitionFiltersSupport) def = {\n\t\t\t...def,\n\t\t\tpartitionFilters: [],\n\t\t\tfilters: [...def.partitionFilters, ...def.filters]\n\t\t};\n\t\tif (!this.ctx.featureFlags?.pFrameInSetFilterSupport) def = {\n\t\t\t...def,\n\t\t\tpartitionFilters: patchInSetFilters(def.partitionFilters),\n\t\t\tfilters: patchInSetFilters(def.filters)\n\t\t};\n\t\treturn def;\n\t}\n\tcreatePFrame(def) {\n\t\treturn this.ctx.createPFrame(def.map((c) => transformPColumnData(c)));\n\t}\n\tcreatePTable(def) {\n\t\tlet rawDef;\n\t\tif (\"columns\" in def) rawDef = this.patchPTableDef({\n\t\t\tsrc: {\n\t\t\t\ttype: \"full\",\n\t\t\t\tentries: def.columns.map((c) => ({\n\t\t\t\t\ttype: \"column\",\n\t\t\t\t\tcolumn: c\n\t\t\t\t}))\n\t\t\t},\n\t\t\tpartitionFilters: def.filters ?? [],\n\t\t\tfilters: [],\n\t\t\tsorting: def.sorting ?? []\n\t\t});\n\t\telse rawDef = this.patchPTableDef(def);\n\t\tconst columns = extractAllColumns(rawDef.src);\n\t\tthis.verifyInlineAndExplicitColumnsSupport(columns);\n\t\tif (!allPColumnsReady(columns)) return void 0;\n\t\treturn this.ctx.createPTable(mapPTableDef(rawDef, (po) => transformPColumnData(po)));\n\t}\n\tcreatePTableV2(def) {\n\t\treturn this.ctx.createPTableV2(mapPTableDefV2(def, (po) => transformPColumnData(po)));\n\t}\n\t/** @deprecated scheduled for removal from SDK */\n\tgetBlockLabel(blockId) {\n\t\treturn this.ctx.getBlockLabel(blockId);\n\t}\n\tgetCurrentUnstableMarker() {\n\t\treturn this.ctx.getCurrentUnstableMarker();\n\t}\n\tlogInfo(msg) {\n\t\tthis.ctx.logInfo(msg);\n\t}\n\tlogWarn(msg) {\n\t\tthis.ctx.logWarn(msg);\n\t}\n\tlogError(msg) {\n\t\tthis.ctx.logError(msg);\n\t}\n};\n/** Main entry point to the API available within model lambdas (like outputs, sections, etc..) for v3+ blocks */\nvar BlockRenderCtx = class extends RenderCtxBase {\n\targsCache;\n\tget args() {\n\t\tif (this.argsCache === void 0) {\n\t\t\tconst raw = this.ctx.args;\n\t\t\tconst value = typeof raw === \"function\" ? raw() : raw;\n\t\t\tthis.argsCache = { v: value === void 0 ? void 0 : JSON.parse(value) };\n\t\t}\n\t\treturn this.argsCache.v;\n\t}\n};\n/** Render context for legacy v1/v2 blocks - provides backward compatibility */\nvar RenderCtxLegacy = class extends RenderCtxBase {\n\targsCache;\n\tget args() {\n\t\tif (this.argsCache === void 0) {\n\t\t\tconst raw = this.ctx.args;\n\t\t\tconst value = typeof raw === \"function\" ? raw() : raw;\n\t\t\tthis.argsCache = { v: JSON.parse(value) };\n\t\t}\n\t\treturn this.argsCache.v;\n\t}\n\tuiStateCache;\n\tget uiState() {\n\t\tif (this.uiStateCache === void 0) {\n\t\t\tconst raw = this.ctx.uiState;\n\t\t\tconst value = typeof raw === \"function\" ? raw() : raw;\n\t\t\tthis.uiStateCache = { v: value ? JSON.parse(value) : {} };\n\t\t}\n\t\treturn this.uiStateCache.v;\n\t}\n};\n/**\n* Render context for plugin output functions.\n* Reads plugin data from blockStorage and derives params from pre-wrapped input callbacks.\n*\n* Parameterized on the factory-like phantom F so that getPluginData returns\n* InferFactoryData<F> directly — no casts needed for the data getter.\n*\n* @typeParam F - PluginFactoryLike phantom carrying data/params/outputs types\n*/\nvar PluginRenderCtx = class extends RenderCtxBase {\n\thandle;\n\twrappedInputs;\n\tconstructor(handle, wrappedInputs) {\n\t\tsuper();\n\t\tthis.handle = handle;\n\t\tthis.wrappedInputs = wrappedInputs;\n\t}\n\tpluginDataCache;\n\t/** Plugin's persistent data from blockStorage.__plugins.{pluginId}.__data */\n\tget data() {\n\t\tif (this.pluginDataCache === void 0) this.pluginDataCache = { v: getPluginData(parseJson(this.ctx.blockStorage()), this.handle) };\n\t\treturn this.pluginDataCache.v;\n\t}\n\tparamsCache;\n\t/** Params derived from block context via pre-wrapped input callbacks */\n\tget params() {\n\t\tif (this.paramsCache === void 0) {\n\t\t\tconst result = {};\n\t\t\tfor (const [key, fn] of Object.entries(this.wrappedInputs)) result[key] = fn();\n\t\t\tthis.paramsCache = { v: result };\n\t\t}\n\t\treturn this.paramsCache.v;\n\t}\n};\n//#endregion\nexport { BlockRenderCtx, PluginRenderCtx, RenderCtxBase, RenderCtxLegacy, ResultPool };\n\n//# sourceMappingURL=api.js.map","//#region package.json\nvar version = \"1.77.0\";\n//#endregion\nexport { version };\n\n//# sourceMappingURL=package.js.map","import { version } from \"./package.js\";\n//#region src/version.ts\nconst PlatformaSDKVersion = version;\nconst CurrentSdkInfo = { sdkVersion: PlatformaSDKVersion };\n//#endregion\nexport { CurrentSdkInfo, PlatformaSDKVersion };\n\n//# sourceMappingURL=version.js.map","//#region src/bconfig/types.ts\nfunction isConfigLambda(cfgOrFh) {\n\treturn cfgOrFh.__renderLambda === true;\n}\n//#endregion\nexport { isConfigLambda };\n\n//# sourceMappingURL=types.js.map","import { BlockStorageFacadeHandles } from \"../block_storage_facade.js\";\nimport { isConfigLambda } from \"./types.js\";\nimport { extractConfigGeneric } from \"@milaboratories/pl-model-common\";\n//#region src/bconfig/normalization.ts\nfunction downgradeCfgOrLambda(data) {\n\tif (data === void 0) return void 0;\n\tif (isConfigLambda(data)) return data.handle;\n\treturn data;\n}\nfunction extractConfig(cfg) {\n\tconst config = extractConfigGeneric(cfg);\n\tif (config.configVersion === 4 && Object.keys(config.blockLifecycleCallbacks).length === 0) config.blockLifecycleCallbacks = BlockStorageFacadeHandles;\n\treturn config;\n}\n//#endregion\nexport { downgradeCfgOrLambda, extractConfig };\n\n//# sourceMappingURL=normalization.js.map","import { DataModelBuilder } from \"./block_migrations.js\";\nimport { DATA_MODEL_LEGACY_VERSION } from \"./block_storage.js\";\n//#region src/plugin_model.ts\n/** Symbol for internal builder creation method */\nconst FROM_BUILDER = Symbol(\"fromBuilder\");\n/** Symbol for internal plugin model creation — not accessible to external consumers */\nconst CREATE_PLUGIN_MODEL = Symbol(\"createPluginModel\");\n/** Sentinel for PluginInstance without transferAt — no transfer possible. */\nconst NO_TRANSFER_VERSION = \"\";\n/**\n* Plugin data model with typed migration chain and config-aware initialization.\n*\n* @typeParam Data - Current (latest) plugin data type\n* @typeParam Versions - Map of version keys to their data types (accumulated by the chain)\n* @typeParam Config - Config type passed to init function (undefined if none)\n*/\nvar PluginDataModel = class PluginDataModel {\n\tdataModel;\n\tconfigInitFn;\n\tconstructor(dataModel, configInitFn) {\n\t\tthis.dataModel = dataModel;\n\t\tthis.configInitFn = configInitFn;\n\t}\n\t/** @internal */\n\tstatic [FROM_BUILDER](dataModel, configInitFn) {\n\t\treturn new PluginDataModel(dataModel, configInitFn);\n\t}\n\t/** Create fresh data with optional config. */\n\tgetDefaultData(config) {\n\t\tconst data = this.configInitFn(config);\n\t\treturn {\n\t\t\tversion: this.dataModel.version,\n\t\t\tdata\n\t\t};\n\t}\n};\n/**\n* Builder for creating PluginDataModel with type-safe migrations.\n* Mirrors DataModelBuilder — same .from(), .migrate(), .recover(), .init() chain.\n*\n* @example\n* const pluginData = new PluginDataModelBuilder()\n* .from<TableData>(\"v1\")\n* .migrate<FilteredTableData>(\"v2\", (v1) => ({ ...v1, filters: [] }))\n* .init<TableConfig>((config?) => ({\n* state: createDefaultState(config?.ops),\n* filters: [],\n* }));\n*/\nvar PluginDataModelBuilder = class {\n\tfrom(version) {\n\t\treturn PluginDataModelInitialChain[FROM_BUILDER]({\n\t\t\tinitialVersion: version,\n\t\t\tmigrations: []\n\t\t});\n\t}\n};\n/**\n* Chain returned by .migrate(). Supports .migrate(), .recover(), .init().\n* No .upgradeLegacy() — that is only available on the initial chain.\n*/\nvar PluginDataModelChain = class PluginDataModelChain {\n\tconstructor(state) {\n\t\tthis.state = state;\n\t}\n\t/** @internal */\n\tstatic [FROM_BUILDER](state) {\n\t\treturn new PluginDataModelChain(state);\n\t}\n\t/**\n\t* Add a migration step transforming data from the current version to the next.\n\t*/\n\tmigrate(version, fn) {\n\t\treturn PluginDataModelChain[FROM_BUILDER]({\n\t\t\t...this.state,\n\t\t\tmigrations: [...this.state.migrations, {\n\t\t\t\ttoVersion: version,\n\t\t\t\tfn\n\t\t\t}]\n\t\t});\n\t}\n\t/**\n\t* Set a recovery handler for unknown or legacy versions.\n\t* Can only be called once — the returned chain has no recover() method.\n\t*/\n\trecover(fn) {\n\t\treturn PluginDataModelWithRecover[FROM_BUILDER]({\n\t\t\t...this.state,\n\t\t\trecoverFn: fn,\n\t\t\trecoverAtIndex: this.state.migrations.length\n\t\t});\n\t}\n\t/** Finalize the PluginDataModel. */\n\tinit(fn) {\n\t\treturn buildPluginDataModel(this.state, fn);\n\t}\n};\n/**\n* Initial chain returned by new PluginDataModelBuilder().from().\n* Extends PluginDataModelChain with .upgradeLegacy() — available only before\n* any .migrate() calls, matching the block's DataModelInitialChain pattern.\n*/\nvar PluginDataModelInitialChain = class PluginDataModelInitialChain extends PluginDataModelChain {\n\t/** @internal */\n\tstatic [FROM_BUILDER](state) {\n\t\treturn new PluginDataModelInitialChain(state);\n\t}\n\t/**\n\t* Handle data from a previous plugin type occupying this slot.\n\t* Prepends a migration from DATA_MODEL_LEGACY_VERSION to the initial version.\n\t* When a plugin type changes, the old data arrives with DATA_MODEL_LEGACY_VERSION —\n\t* this function transforms it into the initial version, then the normal chain runs.\n\t*\n\t* Must be called right after .from() — not available after .migrate().\n\t* Mutually exclusive with recover().\n\t*\n\t* @param fn - Transform from old plugin's raw data to this plugin's initial data type\n\t*/\n\tupgradeLegacy(fn) {\n\t\treturn PluginDataModelWithRecover[FROM_BUILDER]({\n\t\t\t...this.state,\n\t\t\tmigrations: [{\n\t\t\t\ttoVersion: this.state.initialVersion,\n\t\t\t\tfn\n\t\t\t}, ...this.state.migrations],\n\t\t\tinitialVersion: DATA_MODEL_LEGACY_VERSION\n\t\t});\n\t}\n};\n/**\n* Chain after .recover() — supports .migrate(), .init(). No second recover().\n*/\nvar PluginDataModelWithRecover = class PluginDataModelWithRecover {\n\tconstructor(state) {\n\t\tthis.state = state;\n\t}\n\t/** @internal */\n\tstatic [FROM_BUILDER](state) {\n\t\treturn new PluginDataModelWithRecover(state);\n\t}\n\tmigrate(version, fn) {\n\t\treturn PluginDataModelWithRecover[FROM_BUILDER]({\n\t\t\t...this.state,\n\t\t\tmigrations: [...this.state.migrations, {\n\t\t\t\ttoVersion: version,\n\t\t\t\tfn\n\t\t\t}]\n\t\t});\n\t}\n\tinit(fn) {\n\t\treturn buildPluginDataModel(this.state, fn);\n\t}\n};\n/**\n* Builds a PluginDataModel by replaying the stored chain state through DataModelBuilder.\n* @internal\n*/\nfunction buildPluginDataModel(state, configInitFn) {\n\tlet chain = new DataModelBuilder().from(state.initialVersion);\n\tfor (let i = 0; i < state.migrations.length; i++) {\n\t\tif (state.recoverFn !== void 0 && state.recoverAtIndex === i) chain = chain.recover(state.recoverFn);\n\t\tchain = chain.migrate(state.migrations[i].toVersion, state.migrations[i].fn);\n\t}\n\tif (state.recoverFn !== void 0 && state.recoverAtIndex === state.migrations.length) chain = chain.recover(state.recoverFn);\n\tconst dataModel = chain.init(() => configInitFn());\n\treturn PluginDataModel[FROM_BUILDER](dataModel, configInitFn);\n}\n/**\n* A named plugin instance created by `factory.create({ pluginId, ... })`.\n* Passed to both `.transfer()` (on migration chain) and `.plugin()` (on BlockModelV3).\n* Implements TransferTarget so the migration chain can accept it.\n*\n* @typeParam Id - Plugin instance ID literal type\n* @typeParam Data - Plugin data type\n* @typeParam Params - Plugin params type\n* @typeParam Outputs - Plugin outputs type\n* @typeParam TransferData - Type of data entering the plugin via transfer (never if no transfer)\n*/\nvar PluginInstance = class PluginInstance {\n\tid;\n\ttransferVersion;\n\t/** @internal Phantom for type inference; never set at runtime. */\n\t__instanceTypes;\n\t/** Bound closure that creates the PluginModel. Config is captured at factory.create() time. */\n\tcreatePluginModel;\n\tconstructor(id, createPluginModel, transferVersion) {\n\t\tthis.id = id;\n\t\tthis.createPluginModel = createPluginModel;\n\t\tthis.transferVersion = transferVersion;\n\t}\n\t/** @internal Accepts concrete Config — binds it into a closure, avoiding Config variance issues. */\n\tstatic [FROM_BUILDER](id, factory, transferVersion, config) {\n\t\treturn new PluginInstance(id, () => factory[CREATE_PLUGIN_MODEL](config), transferVersion);\n\t}\n\t/** @internal Create a PluginModel from this instance. Used by BlockModelV3.plugin(). */\n\t[CREATE_PLUGIN_MODEL]() {\n\t\treturn this.createPluginModel();\n\t}\n};\n/**\n* Configured plugin instance returned by PluginModelFactory[CREATE_PLUGIN_MODEL]().\n* Contains the plugin's name, data model, and output definitions.\n*/\nvar PluginModel = class PluginModel {\n\t/** Globally unique plugin name */\n\tname;\n\t/** Data model instance for this plugin */\n\tdataModel;\n\t/** Output definitions - functions that compute outputs from plugin context */\n\toutputs;\n\t/** Feature flags declared by this plugin */\n\tfeatureFlags;\n\t/** Create fresh default data. Config (if any) is captured at creation time. */\n\tgetDefaultData;\n\t/** Public output definitions — accessible without usePlugin() via app.plugins */\n\tpublicOutputDef;\n\tconstructor(options) {\n\t\tthis.name = options.name;\n\t\tthis.dataModel = options.dataModel;\n\t\tthis.outputs = options.outputs;\n\t\tthis.featureFlags = options.featureFlags;\n\t\tthis.getDefaultData = options.getDefaultData;\n\t\tthis.publicOutputDef = options.publicOutputDef;\n\t}\n\t/**\n\t* Internal method for creating PluginModel from factory.\n\t* Uses Symbol key to prevent external access.\n\t* @internal\n\t*/\n\tstatic [FROM_BUILDER](options) {\n\t\treturn new PluginModel(options);\n\t}\n\tstatic define(options) {\n\t\tif (options.data instanceof PluginDataModel) {\n\t\t\tconst pdm = options.data;\n\t\t\treturn PluginModelInitialBuilder.create({\n\t\t\t\tname: options.name,\n\t\t\t\tdataFn: () => pdm.dataModel,\n\t\t\t\tgetDefaultDataFn: (config) => pdm.getDefaultData(config),\n\t\t\t\tfeatureFlags: options.featureFlags\n\t\t\t});\n\t\t}\n\t\treturn PluginModelInitialBuilder.create({\n\t\t\tname: options.name,\n\t\t\tdataFn: options.data,\n\t\t\tfeatureFlags: options.featureFlags\n\t\t});\n\t}\n};\nvar PluginModelFactory = class PluginModelFactory {\n\tname;\n\tdataFn;\n\tgetDefaultDataFn;\n\toutputs;\n\tfeatureFlags;\n\tpublicOutputDef;\n\tconstructor(options) {\n\t\tthis.name = options.name;\n\t\tthis.dataFn = options.dataFn;\n\t\tthis.getDefaultDataFn = options.getDefaultDataFn;\n\t\tthis.outputs = options.outputs;\n\t\tthis.featureFlags = options.featureFlags;\n\t\tthis.publicOutputDef = options.publicOutputDef;\n\t}\n\t/** @internal */\n\tstatic [FROM_BUILDER](options) {\n\t\treturn new PluginModelFactory(options);\n\t}\n\tcreate(options) {\n\t\tconst transferVersion = options.transferAt ?? NO_TRANSFER_VERSION;\n\t\treturn PluginInstance[FROM_BUILDER](options.pluginId, this, transferVersion, options.config);\n\t}\n\t/** @internal Create a PluginModel from config. Config is captured in getDefaultData closure. */\n\t[CREATE_PLUGIN_MODEL](config) {\n\t\tconst dataModel = this.dataFn(config);\n\t\tconst getDefaultDataFn = this.getDefaultDataFn;\n\t\treturn PluginModel[FROM_BUILDER]({\n\t\t\tname: this.name,\n\t\t\tdataModel,\n\t\t\toutputs: this.outputs,\n\t\t\tfeatureFlags: this.featureFlags,\n\t\t\tgetDefaultData: getDefaultDataFn ? () => getDefaultDataFn(config) : () => dataModel.getDefaultData(),\n\t\t\tpublicOutputDef: this.publicOutputDef\n\t\t});\n\t}\n};\n/**\n* Builder for creating PluginType with type-safe output definitions.\n*\n* Use `PluginModel.define()` to create a builder instance.\n*\n* @typeParam Data - Plugin's persistent data type\n* @typeParam Params - Params derived from block's RenderCtx (optional)\n* @typeParam Config - Static configuration passed to plugin factory (optional)\n* @typeParam Outputs - Accumulated output types\n* @typeParam Versions - Version map from PluginDataModel (empty for function-based data)\n*\n* @example\n* const dataTable = PluginModel.define({\n* name: 'dataTable' as PluginName,\n* data: pluginDataModel,\n* })\n* .output('model', (ctx) => createTableModel(ctx))\n* .build();\n*/\nvar PluginModelBuilder = class PluginModelBuilder {\n\tname;\n\tdataFn;\n\tgetDefaultDataFn;\n\toutputs;\n\tfeatureFlags;\n\tpublicOutputDef;\n\tconstructor(options) {\n\t\tthis.name = options.name;\n\t\tthis.dataFn = options.dataFn;\n\t\tthis.getDefaultDataFn = options.getDefaultDataFn;\n\t\tthis.outputs = options.outputs ?? {};\n\t\tthis.featureFlags = options.featureFlags;\n\t\tthis.publicOutputDef = options.publicOutputDef;\n\t}\n\t/** @internal */\n\tstatic [FROM_BUILDER](options) {\n\t\treturn new PluginModelBuilder(options);\n\t}\n\t/**\n\t* Adds an output to the plugin.\n\t* All plugin outputs are always wrapped with status — the UI receives\n\t* {@link OutputWithStatus} for every output, allowing it to distinguish\n\t* between pending, success, and error states.\n\t*\n\t* @param key - Output name\n\t* @param fn - Function that computes the output value from plugin context\n\t* @returns Builder with the new output added\n\t*\n\t* @example\n\t* .output('model', (ctx) => createModel(ctx.params.columns, ctx.data.state))\n\t* .output('pFrame', (ctx) => ctx.createPFrame([...]))\n\t*/\n\toutput(key, fn) {\n\t\treturn new PluginModelBuilder({\n\t\t\tname: this.name,\n\t\t\tdataFn: this.dataFn,\n\t\t\tgetDefaultDataFn: this.getDefaultDataFn,\n\t\t\tfeatureFlags: this.featureFlags,\n\t\t\toutputs: {\n\t\t\t\t...this.outputs,\n\t\t\t\t[key]: fn\n\t\t\t},\n\t\t\tpublicOutputDef: this.publicOutputDef\n\t\t});\n\t}\n\t/**\n\t* Exposes a plugin data field as a public output — accessible without `usePlugin()`\n\t* via `app.plugins.pluginName.publicOutputs.key`.\n\t*\n\t* The getter runs against the plugin's reactive data object.\n\t* Public outputs are read-only.\n\t*\n\t* @param key - Name of the public output field\n\t* @param getter - Function deriving the value from plugin data\n\t*\n\t* @example\n\t* .publicOutput('selection', (d) => d.selection)\n\t*/\n\tpublicOutput(key, getter) {\n\t\treturn new PluginModelBuilder({\n\t\t\tname: this.name,\n\t\t\tdataFn: this.dataFn,\n\t\t\tgetDefaultDataFn: this.getDefaultDataFn,\n\t\t\tfeatureFlags: this.featureFlags,\n\t\t\toutputs: this.outputs,\n\t\t\tpublicOutputDef: {\n\t\t\t\t...this.publicOutputDef,\n\t\t\t\t[key]: { getter }\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Finalizes the plugin definition and returns a PluginFactory.\n\t*\n\t* @returns Plugin factory that creates named plugin instances via .create()\n\t*\n\t* @example\n\t* const myPlugin = PluginModel.define({ ... })\n\t* .output('value', (ctx) => ctx.data.value)\n\t* .build();\n\t*\n\t* // Create a named instance:\n\t* const table = myPlugin.create({ pluginId: 'mainTable', config: { ... } });\n\t*/\n\tbuild() {\n\t\treturn PluginModelFactory[FROM_BUILDER]({\n\t\t\tname: this.name,\n\t\t\tdataFn: this.dataFn,\n\t\t\tgetDefaultDataFn: this.getDefaultDataFn,\n\t\t\toutputs: this.outputs,\n\t\t\tpublicOutputDef: this.publicOutputDef,\n\t\t\tfeatureFlags: this.featureFlags\n\t\t});\n\t}\n};\n/**\n* Initial builder returned by PluginModel.define(). Extends PluginModelBuilder with .params().\n* Once .params() or .output() is called, transitions to PluginModelBuilder (no second .params()).\n*/\nvar PluginModelInitialBuilder = class PluginModelInitialBuilder extends PluginModelBuilder {\n\t/** @internal */\n\tstatic create(options) {\n\t\treturn new PluginModelInitialBuilder({\n\t\t\t...options,\n\t\t\tpublicOutputDef: {}\n\t\t});\n\t}\n\t/**\n\t* Sets the Params type for this plugin — the shape of data derived from the block's\n\t* render context and passed into plugin output functions via `ctx.params`.\n\t* Must be called before .output(). Available only on the initial builder.\n\t*\n\t* @example\n\t* .params<{ title: string }>()\n\t* .output('displayText', (ctx) => ctx.params.title)\n\t*/\n\tparams() {\n\t\treturn PluginModelBuilder[FROM_BUILDER]({\n\t\t\tname: this.name,\n\t\t\tdataFn: this.dataFn,\n\t\t\tgetDefaultDataFn: this.getDefaultDataFn,\n\t\t\tfeatureFlags: this.featureFlags,\n\t\t\tpublicOutputDef: {}\n\t\t});\n\t}\n};\n//#endregion\nexport { CREATE_PLUGIN_MODEL, PluginDataModel, PluginDataModelBuilder, PluginInstance, PluginModel };\n\n//# sourceMappingURL=plugin_model.js.map","import { BLOCK_STORAGE_KEY, createBlockStorage, getStorageData, isBlockStorage, migrateBlockStorage, normalizeBlockStorage, updateStorageData } from \"./block_storage.js\";\nimport { stringifyJson } from \"@milaboratories/pl-model-common\";\n//#region src/block_storage_callbacks.ts\n/**\n* BlockStorage Callback Implementations - wired to facade callbacks in BlockModelV3.done().\n*\n* Provides pure functions for storage operations (migration, initialization,\n* args derivation, updates, debug views). Each function takes its dependencies\n* explicitly as parameters.\n*\n* @module block_storage_callbacks\n* @internal\n*/\n/**\n* Normalizes raw storage data and extracts state.\n* Handles all formats:\n* - New BlockStorage format (has discriminator)\n* - Legacy V1/V2 format ({ args, uiState })\n* - Raw V3 state (any other format)\n*\n* @param rawStorage - Raw data from blockStorage field (may be JSON string or object)\n* @returns Object with normalized storage and extracted state\n*/\nfunction normalizeStorage(rawStorage) {\n\tif (rawStorage === void 0 || rawStorage === null) return {\n\t\tstorage: createBlockStorage({}),\n\t\tdata: {}\n\t};\n\tlet parsed = rawStorage;\n\tif (typeof rawStorage === \"string\") try {\n\t\tparsed = JSON.parse(rawStorage);\n\t} catch {\n\t\treturn {\n\t\t\tstorage: createBlockStorage(rawStorage),\n\t\t\tdata: rawStorage\n\t\t};\n\t}\n\tif (isBlockStorage(parsed)) {\n\t\tconst storage = normalizeBlockStorage(parsed);\n\t\treturn {\n\t\t\tstorage,\n\t\t\tdata: getStorageData(storage)\n\t\t};\n\t}\n\tif (isLegacyModelV1ApiFormat(parsed)) return {\n\t\tstorage: createBlockStorage(parsed),\n\t\tdata: parsed\n\t};\n\treturn {\n\t\tstorage: createBlockStorage(parsed),\n\t\tdata: parsed\n\t};\n}\n/**\n* Applies a state update to existing storage.\n* Used when setData is called from the frontend.\n*\n* @param currentStorageJson - Current storage as JSON string (must be defined)\n* @param payload - Update payload with operation type and value\n* @returns Updated storage as StringifiedJson<BlockStorage>\n*/\nfunction applyStorageUpdate(currentStorageJson, payload) {\n\tconst { storage: currentStorage } = normalizeStorage(currentStorageJson);\n\treturn stringifyJson(updateStorageData(currentStorage, payload));\n}\n/**\n* Checks if data is in legacy Model API v1 format.\n* Legacy format has { args, uiState? } at top level without the BlockStorage discriminator.\n*/\nfunction isLegacyModelV1ApiFormat(data) {\n\tif (data === null || typeof data !== \"object\") return false;\n\tif (isBlockStorage(data)) return false;\n\treturn \"args\" in data;\n}\n/**\n* Gets storage debug view from raw storage data.\n* Returns structured debug info about the storage state.\n*\n* @param rawStorage - Raw data from blockStorage field (may be JSON string or object)\n* @returns JSON string with storage debug view\n*/\nfunction getStorageDebugView(rawStorage) {\n\tconst { storage } = normalizeStorage(rawStorage);\n\treturn stringifyJson({\n\t\tdataVersion: storage.__dataVersion,\n\t\tdata: storage.__data\n\t});\n}\n/**\n* Runs storage migration using the provided hooks.\n* This is the main entry point for the middle layer to trigger migrations.\n*\n* @param currentStorageJson - Current storage as JSON string (or undefined)\n* @param hooks - Migration dependencies (block/plugin data migration and creation functions)\n* @returns MigrationResult\n*/\nfunction migrateStorage(currentStorageJson, hooks) {\n\tconst { storage: currentStorage } = normalizeStorage(currentStorageJson);\n\tconst newPluginRegistry = hooks.getPluginRegistry();\n\tconst migrationResult = migrateBlockStorage(currentStorage, {\n\t\tmigrateBlockData: hooks.migrateBlockData,\n\t\tmigratePluginData: hooks.migratePluginData,\n\t\tnewPluginRegistry,\n\t\tcreatePluginData: hooks.createPluginData\n\t});\n\tif (!migrationResult.success) return { error: `Migration failed at '${migrationResult.failedAt}': ${migrationResult.error}` };\n\tconst oldVersion = currentStorage.__dataVersion;\n\tconst newVersion = migrationResult.storage.__dataVersion;\n\tconst info = oldVersion === newVersion ? `No migration needed (${oldVersion})` : `Migrated ${oldVersion} -> ${newVersion}`;\n\treturn {\n\t\tnewStorageJson: stringifyJson(migrationResult.storage),\n\t\tinfo\n\t};\n}\n/**\n* Creates complete initial storage (block data + all plugin data) atomically.\n*\n* @param hooks - Dependencies for creating initial block and plugin data\n* @returns Initial storage as branded JSON string\n* @throws If initialDataFn or createPluginData throws\n*/\nfunction createInitialStorage(hooks) {\n\tconst blockDefault = hooks.getDefaultBlockData();\n\tconst pluginRegistry = hooks.getPluginRegistry();\n\tconst plugins = {};\n\tfor (const handle of Object.keys(pluginRegistry)) {\n\t\tconst initial = hooks.createPluginData(handle);\n\t\tplugins[handle] = {\n\t\t\t__dataVersion: initial.version,\n\t\t\t__data: initial.data\n\t\t};\n\t}\n\treturn stringifyJson({\n\t\t[BLOCK_STORAGE_KEY]: \"v1\",\n\t\t__dataVersion: blockDefault.version,\n\t\t__data: blockDefault.data,\n\t\t__pluginRegistry: pluginRegistry,\n\t\t__plugins: plugins\n\t});\n}\n/**\n* Derives args from storage using the provided args function.\n* This extracts data from storage and passes it to the block's args() function.\n*\n* @param storageJson - Storage as JSON string\n* @param argsFunction - The block's args derivation function\n* @returns ArgsDeriveResult with derived args or error\n*/\nfunction deriveArgsFromStorage(storageJson, argsFunction) {\n\tconst { data } = normalizeStorage(storageJson);\n\ttry {\n\t\treturn { value: argsFunction(data) };\n\t} catch (e) {\n\t\treturn { error: `args() threw: ${e instanceof Error ? e.message : String(e)}` };\n\t}\n}\n/**\n* Derives prerunArgs from storage.\n* Uses prerunArgsFunction if provided, otherwise falls back to argsFunction.\n*\n* @param storageJson - Storage as JSON string\n* @param argsFunction - The block's args derivation function (fallback)\n* @param prerunArgsFunction - Optional prerun args derivation function\n* @returns ArgsDeriveResult with derived prerunArgs or error\n*/\nfunction derivePrerunArgsFromStorage(storageJson, argsFunction, prerunArgsFunction) {\n\tconst { data } = normalizeStorage(storageJson);\n\tif (prerunArgsFunction) try {\n\t\treturn { value: prerunArgsFunction(data) };\n\t} catch (e) {\n\t\treturn { error: `prerunArgs() threw: ${e instanceof Error ? e.message : String(e)}` };\n\t}\n\ttry {\n\t\treturn { value: argsFunction(data) };\n\t} catch (e) {\n\t\treturn { error: `args() threw (fallback): ${e instanceof Error ? e.message : String(e)}` };\n\t}\n}\n//#endregion\nexport { applyStorageUpdate, createInitialStorage, deriveArgsFromStorage, derivePrerunArgsFromStorage, getStorageDebugView, migrateStorage };\n\n//# sourceMappingURL=block_storage_callbacks.js.map","import { pluginOutputKey } from \"./plugin_handle.js\";\nimport { createAndRegisterRenderLambda, getPlatformaInstance, isInUI } from \"./internal.js\";\nimport { BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, registerFacadeCallbacks } from \"./block_storage_facade.js\";\nimport { BLOCK_SERVICE_FLAGS } from \"./services/block_services.js\";\nimport { BlockRenderCtx, PluginRenderCtx } from \"./render/api.js\";\nimport \"./render/index.js\";\nimport { PlatformaSDKVersion } from \"./version.js\";\nimport { isConfigLambda } from \"./bconfig/types.js\";\nimport { downgradeCfgOrLambda } from \"./bconfig/normalization.js\";\nimport \"./bconfig/index.js\";\nimport { CREATE_PLUGIN_MODEL } from \"./plugin_model.js\";\nimport { applyStorageUpdate, createInitialStorage, deriveArgsFromStorage, derivePrerunArgsFromStorage, getStorageDebugView, migrateStorage } from \"./block_storage_callbacks.js\";\nimport { REQUIRES_PFRAMES_VERSION } from \"@milaboratories/pl-model-common\";\n//#region src/block_model.ts\n/**\n* Merges two feature flag objects with type-aware logic:\n* - `supports*` (boolean): OR — `true` if either side is `true`\n* - `requires*` (numeric): MAX — take the higher version requirement\n*/\nfunction mergeFeatureFlags(base, override) {\n\tconst result = { ...base };\n\tfor (const [key, value] of Object.entries(override)) {\n\t\tif (value === void 0) continue;\n\t\tconst existing = result[key];\n\t\tif (typeof value === \"boolean\") result[key] = typeof existing === \"boolean\" && existing || value;\n\t\telse if (typeof value === \"number\") result[key] = Math.max(typeof existing === \"number\" ? existing : 0, value);\n\t}\n\treturn result;\n}\n/** Main entry point that each block should use in it's \"config\" module. Don't forget\n* to call {@link done()} at the end of configuration. Value returned by this builder must be\n* exported as constant with name \"platforma\" from the \"config\" module.\n* API version is 3 (for UI) and 2 (for model) */\nvar BlockModelV3 = class BlockModelV3 {\n\tconstructor(config) {\n\t\tthis.config = config;\n\t}\n\tstatic FEATURE_FLAGS = {\n\t\tsupportsLazyState: true,\n\t\tsupportsPframeQueryRanking: true,\n\t\trequiresUIAPIVersion: 3,\n\t\trequiresModelAPIVersion: 2,\n\t\trequiresCreatePTable: 2,\n\t\trequiresPFramesVersion: REQUIRES_PFRAMES_VERSION,\n\t\t...BLOCK_SERVICE_FLAGS\n\t};\n\t/** @deprecated Use FEATURE_FLAGS */\n\tstatic INITIAL_BLOCK_FEATURE_FLAGS = BlockModelV3.FEATURE_FLAGS;\n\t/**\n\t* Creates a new BlockModelV3 builder with the specified data model.\n\t*\n\t* @example\n\t* const dataModel = new DataModelBuilder()\n\t* .from<BlockData>(\"v1\")\n\t* .init(() => ({ numbers: [], labels: [] }));\n\t*\n\t* BlockModelV3.create(dataModel)\n\t* .args((data) => ({ numbers: data.numbers }))\n\t* .sections(() => [{ type: 'link', href: '/', label: 'Main' }])\n\t* .done();\n\t*\n\t* @param dataModel The data model that defines initial data and migrations\n\t*/\n\tstatic create(dataModel) {\n\t\treturn new BlockModelV3({\n\t\t\trenderingMode: \"Heavy\",\n\t\t\tdataModel,\n\t\t\toutputs: {},\n\t\t\tsections: createAndRegisterRenderLambda({\n\t\t\t\thandle: \"sections\",\n\t\t\t\tlambda: () => []\n\t\t\t}, true),\n\t\t\ttitle: void 0,\n\t\t\tsubtitle: void 0,\n\t\t\ttags: void 0,\n\t\t\tenrichmentTargets: void 0,\n\t\t\tfeatureFlags: { ...BlockModelV3.FEATURE_FLAGS },\n\t\t\targsFunction: void 0,\n\t\t\tprerunArgsFunction: void 0,\n\t\t\tplugins: {}\n\t\t});\n\t}\n\toutput(key, cfgOrRf, flags = {}) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\toutputs: {\n\t\t\t\t...this.config.outputs,\n\t\t\t\t[key]: createAndRegisterRenderLambda({\n\t\t\t\t\thandle: `block-output#${key}`,\n\t\t\t\t\tlambda: () => cfgOrRf(new BlockRenderCtx()),\n\t\t\t\t\t...flags\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\t}\n\t/** Shortcut for {@link output} with retentive flag set to true. */\n\tretentiveOutput(key, rf) {\n\t\treturn this.output(key, rf, { retentive: true });\n\t}\n\t/** Shortcut for {@link output} with withStatus flag set to true. */\n\toutputWithStatus(key, rf) {\n\t\treturn this.output(key, rf, { withStatus: true });\n\t}\n\t/**\n\t* Sets a function to derive block args from data.\n\t* This is called during setData to compute the args that will be used for block execution.\n\t*\n\t* @example\n\t* .args<BlockArgs>((data) => ({ numbers: data.numbers }))\n\t*\n\t* @example\n\t* .args<BlockArgs>((data) => {\n\t* if (data.numbers.length === 0) throw new Error('Numbers required'); // block not ready\n\t* return { numbers: data.numbers };\n\t* })\n\t*/\n\targs(lambda) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\targsFunction: lambda\n\t\t});\n\t}\n\t/**\n\t* Sets a function to derive pre-run args from data (optional).\n\t* This is called during setData to compute the args that will be used for staging/pre-run phase.\n\t*\n\t* If not defined, defaults to using the args() function result.\n\t* If defined, uses its return value for the staging / prerun phase.\n\t*\n\t* The staging / prerun phase runs only if currentPrerunArgs differs from the executed\n\t* version of prerunArgs (same comparison logic as currentArgs vs prodArgs).\n\t*\n\t* @example\n\t* .prerunArgs((data) => ({ numbers: data.numbers }))\n\t*\n\t* @example\n\t* .prerunArgs((data) => {\n\t* // Return undefined to skip staging for this block\n\t* if (!data.isReady) return undefined;\n\t* return { numbers: data.numbers };\n\t* })\n\t*/\n\tprerunArgs(fn) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\tprerunArgsFunction: fn\n\t\t});\n\t}\n\t/** Sets the lambda to generate list of sections in the left block overviews panel. */\n\tsections(rf) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\tsections: createAndRegisterRenderLambda({\n\t\t\t\thandle: \"sections\",\n\t\t\t\tlambda: () => rf(new BlockRenderCtx())\n\t\t\t}, true)\n\t\t});\n\t}\n\t/** Sets a rendering function to derive block title, shown for the block in the left blocks-overview panel. */\n\ttitle(rf) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\ttitle: createAndRegisterRenderLambda({\n\t\t\t\thandle: \"title\",\n\t\t\t\tlambda: () => rf(new BlockRenderCtx())\n\t\t\t})\n\t\t});\n\t}\n\tsubtitle(rf) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\tsubtitle: createAndRegisterRenderLambda({\n\t\t\t\thandle: \"subtitle\",\n\t\t\t\tlambda: () => rf(new BlockRenderCtx())\n\t\t\t})\n\t\t});\n\t}\n\ttags(rf) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\ttags: createAndRegisterRenderLambda({\n\t\t\t\thandle: \"tags\",\n\t\t\t\tlambda: () => rf(new BlockRenderCtx())\n\t\t\t})\n\t\t});\n\t}\n\t/** Sets or overrides feature flags for the block. */\n\twithFeatureFlags(flags) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\tfeatureFlags: {\n\t\t\t\t...this.config.featureFlags,\n\t\t\t\t...flags\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Defines how to derive list of upstream references this block is meant to enrich with its exports from block args.\n\t* Influences dependency graph construction.\n\t*/\n\tenriches(lambda) {\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\tenrichmentTargets: createAndRegisterRenderLambda({\n\t\t\t\thandle: \"enrichmentTargets\",\n\t\t\t\tlambda\n\t\t\t})\n\t\t});\n\t}\n\tplugin(instance, params) {\n\t\tconst pluginId = instance.id;\n\t\tconst plugin = instance[CREATE_PLUGIN_MODEL]();\n\t\tconst resolvedParams = params ?? {};\n\t\tif (pluginId in this.config.plugins) throw new Error(`Plugin '${pluginId}' already registered`);\n\t\tconst registered = {\n\t\t\tmodel: plugin,\n\t\t\tinputs: resolvedParams\n\t\t};\n\t\treturn new BlockModelV3({\n\t\t\t...this.config,\n\t\t\tplugins: {\n\t\t\t\t...this.config.plugins,\n\t\t\t\t[pluginId]: registered\n\t\t\t},\n\t\t\tfeatureFlags: mergeFeatureFlags(this.config.featureFlags, plugin.featureFlags ?? {})\n\t\t});\n\t}\n\t/** Renders all provided block settings into a pre-configured platforma API\n\t* instance, that can be used in frontend to interact with block data, and\n\t* other features provided by the platforma to the block.\n\t*\n\t* Type-level check: if there are unconsumed transfers (from `.transfer()` calls\n\t* in the migration chain), this method requires an impossible `never` argument,\n\t* producing a compile error. Register all transferred plugins via `.plugin(instance)`\n\t* before calling `.done()`.\n\t*/\n\tdone(..._) {\n\t\tif (this.config.argsFunction === void 0) throw new Error(\"Args rendering function not set.\");\n\t\tconst apiVersion = 3;\n\t\tconst { plugins } = this.config;\n\t\tconst pluginRegistry = {};\n\t\tconst pluginHandles = Object.keys(plugins);\n\t\tfor (const handle of pluginHandles) pluginRegistry[handle] = plugins[handle].model.name;\n\t\tconst { dataModel, argsFunction, prerunArgsFunction } = this.config;\n\t\tfunction getPlugin(handle) {\n\t\t\tconst plugin = plugins[handle];\n\t\t\tif (!plugin) throw new Error(`Plugin model not found for '${handle}'`);\n\t\t\treturn plugin;\n\t\t}\n\t\tregisterFacadeCallbacks({\n\t\t\t[BlockStorageFacadeCallbacks.StorageApplyUpdate]: applyStorageUpdate,\n\t\t\t[BlockStorageFacadeCallbacks.StorageDebugView]: getStorageDebugView,\n\t\t\t[BlockStorageFacadeCallbacks.StorageMigrate]: (currentStorageJson) => migrateStorage(currentStorageJson, {\n\t\t\t\tmigrateBlockData: (v) => dataModel.migrate(v),\n\t\t\t\tgetPluginRegistry: () => pluginRegistry,\n\t\t\t\tmigratePluginData: (handle, v) => getPlugin(handle).model.dataModel.migrate(v),\n\t\t\t\tcreatePluginData: (handle, transfer) => {\n\t\t\t\t\tif (transfer) return transfer;\n\t\t\t\t\treturn getPlugin(handle).model.getDefaultData();\n\t\t\t\t}\n\t\t\t}),\n\t\t\t[BlockStorageFacadeCallbacks.StorageInitial]: () => createInitialStorage({\n\t\t\t\tgetDefaultBlockData: () => dataModel.getDefaultData(),\n\t\t\t\tgetPluginRegistry: () => pluginRegistry,\n\t\t\t\tcreatePluginData: (handle) => getPlugin(handle).model.getDefaultData()\n\t\t\t}),\n\t\t\t[BlockStorageFacadeCallbacks.ArgsDerive]: (storageJson) => deriveArgsFromStorage(storageJson, argsFunction),\n\t\t\t[BlockStorageFacadeCallbacks.PrerunArgsDerive]: (storageJson) => derivePrerunArgsFromStorage(storageJson, argsFunction, prerunArgsFunction)\n\t\t});\n\t\tconst pluginOutputs = {};\n\t\tfor (const handle of pluginHandles) {\n\t\t\tconst { model, inputs } = plugins[handle];\n\t\t\tconst wrappedInputs = {};\n\t\t\tfor (const [paramKey, paramFn] of Object.entries(inputs)) wrappedInputs[paramKey] = () => paramFn(new BlockRenderCtx());\n\t\t\tconst outputs = model.outputs;\n\t\t\tfor (const [outputKey, outputFn] of Object.entries(outputs)) {\n\t\t\t\tconst key = pluginOutputKey(handle, outputKey);\n\t\t\t\tpluginOutputs[key] = createAndRegisterRenderLambda({\n\t\t\t\t\thandle: key,\n\t\t\t\t\tlambda: () => outputFn(new PluginRenderCtx(handle, wrappedInputs)),\n\t\t\t\t\twithStatus: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tconst allOutputs = {\n\t\t\t...this.config.outputs,\n\t\t\t...pluginOutputs\n\t\t};\n\t\tglobalThis.platformaApiVersion = apiVersion;\n\t\tif (!isInUI()) return { config: {\n\t\t\tv4: {\n\t\t\t\tconfigVersion: 4,\n\t\t\t\tmodelAPIVersion: 2,\n\t\t\t\tsdkVersion: PlatformaSDKVersion,\n\t\t\t\trenderingMode: this.config.renderingMode,\n\t\t\t\tsections: this.config.sections,\n\t\t\t\ttitle: this.config.title,\n\t\t\t\tsubtitle: this.config.subtitle,\n\t\t\t\ttags: this.config.tags,\n\t\t\t\toutputs: allOutputs,\n\t\t\t\tenrichmentTargets: this.config.enrichmentTargets,\n\t\t\t\tfeatureFlags: this.config.featureFlags,\n\t\t\t\tblockLifecycleCallbacks: { ...BlockStorageFacadeHandles }\n\t\t\t},\n\t\t\tsdkVersion: PlatformaSDKVersion,\n\t\t\trenderingMode: this.config.renderingMode,\n\t\t\tsections: this.config.sections,\n\t\t\toutputs: Object.fromEntries(Object.entries(this.config.outputs).map(([key, value]) => [key, downgradeCfgOrLambda(value)]))\n\t\t} };\n\t\telse return {\n\t\t\t...getPlatformaInstance({\n\t\t\t\tsdkVersion: PlatformaSDKVersion,\n\t\t\t\tapiVersion\n\t\t\t}),\n\t\t\tblockModelInfo: {\n\t\t\t\toutputs: Object.fromEntries(Object.entries(allOutputs).map(([key, value]) => [key, { withStatus: Boolean(isConfigLambda(value) && value.withStatus) }])),\n\t\t\t\tpluginIds: pluginHandles,\n\t\t\t\tfeatureFlags: this.config.featureFlags,\n\t\t\t\tpluginPublicOutputs: Object.fromEntries(pluginHandles.map((handle) => [handle, plugins[handle].model.publicOutputDef]))\n\t\t\t}\n\t\t};\n\t}\n};\n//#endregion\nexport { BlockModelV3 };\n\n//# sourceMappingURL=block_model.js.map","import { Annotation, LinkerMap, canonicalizeJson, getAxisId, getColumnIdAndSpec, matchAxisId, readAnnotation, stringifyJson } from \"@milaboratories/pl-model-common\";\n//#region src/pframe_utils/axes.ts\n/** Create id for column copy with added keys in axes domains */\nconst colId = (id, domains, contextDomains) => {\n\tlet wid = id.toString();\n\tdomains?.forEach((domain) => {\n\t\tif (domain) for (const [k, v] of Object.entries(domain)) {\n\t\t\twid += k;\n\t\t\twid += v;\n\t\t}\n\t});\n\tcontextDomains?.forEach((contextDomain) => {\n\t\tif (contextDomain) for (const [k, v] of Object.entries(contextDomain)) {\n\t\t\twid += k;\n\t\t\twid += v;\n\t\t}\n\t});\n\treturn wid;\n};\n/** All combinations with 1 key from each list */\nfunction getKeysCombinations(idsLists) {\n\tif (!idsLists.length) return [];\n\tlet result = [[]];\n\tidsLists.forEach((list) => {\n\t\tconst nextResult = [];\n\t\tlist.forEach((key) => {\n\t\t\tnextResult.push(...result.map((resultItem) => [...resultItem, key]));\n\t\t});\n\t\tresult = nextResult;\n\t});\n\treturn result;\n}\nfunction getAvailableWithLinkersAxes(linkerColumns, blockAxes) {\n\tconst availableAxes = LinkerMap.fromColumns(linkerColumns.map(getColumnIdAndSpec)).getReachableByLinkersAxesFromAxesNormalized([...blockAxes.values()], (linkerKeyId, sourceAxisId) => matchAxisId(sourceAxisId, linkerKeyId));\n\treturn new Map(availableAxes.map((axisSpec) => {\n\t\treturn [canonicalizeJson(getAxisId(axisSpec)), axisSpec];\n\t}));\n}\n/** Add columns with fully compatible axes created from partial compatible ones */\nfunction enrichCompatible(blockAxes, columns) {\n\treturn columns.flatMap((column) => getAdditionalColumnsForColumn(blockAxes, column));\n}\nfunction getAdditionalColumnsForColumn(blockAxes, column) {\n\tconst columnAxesIds = column.spec.axesSpec.map(getAxisId);\n\tif (columnAxesIds.every((id) => blockAxes.has(canonicalizeJson(id)))) return [column];\n\tconst secondaryIdsVariants = getKeysCombinations(columnAxesIds.map((id) => {\n\t\tconst result = [];\n\t\tfor (const [_, mainId] of blockAxes) if (matchAxisId(mainId, id) && !matchAxisId(id, mainId)) result.push(mainId);\n\t\treturn result;\n\t}));\n\tconst allAddedDomainValues = /* @__PURE__ */ new Set();\n\tconst addedNotToAllVariantsDomainValues = /* @__PURE__ */ new Set();\n\tconst addedByVariantsDomainValues = secondaryIdsVariants.map((idsList) => {\n\t\tconst addedSet = /* @__PURE__ */ new Set();\n\t\tidsList.map((axisId, idx) => {\n\t\t\tconst d1 = column.spec.axesSpec[idx].domain;\n\t\t\tconst d2 = axisId.domain;\n\t\t\tObject.entries(d2 ?? {}).forEach(([key, value]) => {\n\t\t\t\tif (d1?.[key] === void 0) {\n\t\t\t\t\tconst item = JSON.stringify([key, value]);\n\t\t\t\t\taddedSet.add(item);\n\t\t\t\t\tallAddedDomainValues.add(item);\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst cd1 = column.spec.axesSpec[idx].contextDomain;\n\t\t\tconst cd2 = axisId.contextDomain;\n\t\t\tObject.entries(cd2 ?? {}).forEach(([key, value]) => {\n\t\t\t\tif (cd1?.[key] === void 0) {\n\t\t\t\t\tconst item = JSON.stringify([\"ctx:\" + key, value]);\n\t\t\t\t\taddedSet.add(item);\n\t\t\t\t\tallAddedDomainValues.add(item);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn {\n\t\t\t\t...axisId,\n\t\t\t\tannotations: column.spec.axesSpec[idx].annotations\n\t\t\t};\n\t\t});\n\t\treturn addedSet;\n\t});\n\t[...allAddedDomainValues].forEach((addedPart) => {\n\t\tif (addedByVariantsDomainValues.some((s) => !s.has(addedPart))) addedNotToAllVariantsDomainValues.add(addedPart);\n\t});\n\treturn [column, ...secondaryIdsVariants.map((idsList, idx) => {\n\t\tconst id = colId(column.id, idsList.map((id) => id.domain), idsList.map((id) => id.contextDomain));\n\t\tconst label = readAnnotation(column.spec, Annotation.Label) ?? \"\";\n\t\tconst labelDomainPart = [...addedByVariantsDomainValues[idx]].filter((str) => addedNotToAllVariantsDomainValues.has(str)).sort().map((v) => JSON.parse(v)?.[1]).join(\" / \");\n\t\tconst annotations = {\n\t\t\t...column.spec.annotations,\n\t\t\t[Annotation.Graph.IsVirtual]: stringifyJson(true)\n\t\t};\n\t\tif (label || labelDomainPart) annotations[Annotation.Label] = label && labelDomainPart ? label + \" / \" + labelDomainPart : label + labelDomainPart;\n\t\treturn {\n\t\t\t...column,\n\t\t\tid,\n\t\t\tspec: {\n\t\t\t\t...column.spec,\n\t\t\t\taxesSpec: idsList.map((axisId, idx) => ({\n\t\t\t\t\t...axisId,\n\t\t\t\t\tannotations: column.spec.axesSpec[idx].annotations\n\t\t\t\t})),\n\t\t\t\tannotations\n\t\t\t}\n\t\t};\n\t})];\n}\n//#endregion\nexport { enrichCompatible, getAvailableWithLinkersAxes };\n\n//# sourceMappingURL=axes.js.map","import { PColumnCollection } from \"../render/util/column_collection.js\";\nimport \"../render/index.js\";\nimport { enrichCompatible, getAvailableWithLinkersAxes } from \"./axes.js\";\nimport { canonicalizeJson, getAxisId, getNormalizedAxesList, isLabelColumn, isLinkerColumn, matchAxisId } from \"@milaboratories/pl-model-common\";\n//#region src/pframe_utils/columns.ts\nfunction getAllRelatedColumns(ctx, predicate) {\n\tconst columns = new PColumnCollection();\n\tcolumns.addColumnProvider(ctx.resultPool);\n\tconst allColumns = columns.getColumns(predicate, {\n\t\tdontWaitAllData: true,\n\t\toverrideLabelAnnotation: false\n\t}) ?? [];\n\treturn enrichCompatible(new Map(allColumns.flatMap((column) => getNormalizedAxesList(column.spec.axesSpec)).map((axisSpec) => {\n\t\treturn [canonicalizeJson(getAxisId(axisSpec)), axisSpec];\n\t})), allColumns);\n}\nfunction getRelatedColumns(ctx, { columns: rootColumns, predicate }) {\n\tconst columns = new PColumnCollection();\n\tcolumns.addColumnProvider(ctx.resultPool);\n\tcolumns.addColumns(rootColumns);\n\tconst blockAxes = /* @__PURE__ */ new Map();\n\tconst allAxes = /* @__PURE__ */ new Map();\n\tfor (const c of rootColumns) for (const spec of getNormalizedAxesList(c.spec.axesSpec)) {\n\t\tconst aid = getAxisId(spec);\n\t\tblockAxes.set(canonicalizeJson(aid), spec);\n\t\tallAxes.set(canonicalizeJson(aid), spec);\n\t}\n\tconst availableWithLinkersAxes = getAvailableWithLinkersAxes(columns.getColumns((spec) => predicate(spec) && isLinkerColumn(spec), { dontWaitAllData: true }) ?? [], blockAxes);\n\tfor (const item of availableWithLinkersAxes) {\n\t\tblockAxes.set(...item);\n\t\tallAxes.set(...item);\n\t}\n\tconst blockAxesArr = Array.from(blockAxes.values());\n\tlet compatibleWithoutLabels = (columns.getColumns((spec) => predicate(spec) && spec.axesSpec.some((axisSpec) => {\n\t\tconst axisId = getAxisId(axisSpec);\n\t\treturn blockAxesArr.some((selectorAxisSpec) => matchAxisId(getAxisId(selectorAxisSpec), axisId));\n\t}), {\n\t\tdontWaitAllData: true,\n\t\toverrideLabelAnnotation: false\n\t}) ?? []).filter((column) => !isLabelColumn(column.spec));\n\tfor (const c of compatibleWithoutLabels) for (const spec of getNormalizedAxesList(c.spec.axesSpec)) {\n\t\tconst aid = getAxisId(spec);\n\t\tallAxes.set(canonicalizeJson(aid), spec);\n\t}\n\tconst allAxesArr = Array.from(allAxes.values());\n\tcompatibleWithoutLabels = (columns.getColumns((spec) => predicate(spec) && spec.axesSpec.every((axisSpec) => {\n\t\tconst axisId = getAxisId(axisSpec);\n\t\treturn allAxesArr.some((selectorAxisSpec) => matchAxisId(getAxisId(selectorAxisSpec), axisId));\n\t}), {\n\t\tdontWaitAllData: true,\n\t\toverrideLabelAnnotation: false\n\t}) ?? []).filter((column) => !isLabelColumn(column.spec));\n\tconst compatibleLabels = (columns.getColumns((spec) => predicate(spec) && spec.axesSpec.some((axisSpec) => {\n\t\tconst axisId = getAxisId(axisSpec);\n\t\treturn allAxesArr.some((selectorAxisSpec) => matchAxisId(getAxisId(selectorAxisSpec), axisId));\n\t}), {\n\t\tdontWaitAllData: true,\n\t\toverrideLabelAnnotation: false\n\t}) ?? []).filter((column) => isLabelColumn(column.spec));\n\treturn enrichCompatible(blockAxes, [...compatibleWithoutLabels, ...compatibleLabels]);\n}\n//#endregion\nexport { getAllRelatedColumns, getRelatedColumns };\n\n//# sourceMappingURL=columns.js.map","import \"../pframe_utils/axes.js\";\nimport { getAllRelatedColumns, getRelatedColumns } from \"../pframe_utils/columns.js\";\nimport { Annotation, readAnnotationJson } from \"@milaboratories/pl-model-common\";\n//#region src/components/PFrameForGraphs.ts\nfunction isHiddenFromGraphColumn(column) {\n\treturn !!readAnnotationJson(column, Annotation.HideDataFromGraphs);\n}\nfunction isHiddenFromUIColumn(column) {\n\treturn !!readAnnotationJson(column, Annotation.HideDataFromUi);\n}\n/**\nThe aim of createPFrameForGraphs: to create pframe with block’s columns and all compatible columns from result pool\n(including linker columns and all label columns).\nBlock’s columns are added to pframe as is.\nOther columns are added basing on set of axes of block’s columns, considering available with linker columns.\nCompatible columns must have at least one axis from block’s axes set. This axis of the compatible column from\nresult pool must satisfy matchAxisId (it can have less domain keys than in block’s axis, but without conflicting values\namong existing ones).\nIn requests to pframe (calculateTableData) columns must have strictly the same axes. For compatibility in case\nof partially matched axis we add to pframe a copy of this column with modified axis (with filled missed domains)\nand modified label (with added domain values in case if more than one copy with different domains exist).\n*/\nfunction createPFrameForGraphs(ctx, blockColumns) {\n\tconst suitableSpec = (spec) => !isHiddenFromUIColumn(spec) && !isHiddenFromGraphColumn(spec);\n\tif (!blockColumns) return ctx.createPFrame(getAllRelatedColumns(ctx, suitableSpec));\n\treturn ctx.createPFrame(getRelatedColumns(ctx, {\n\t\tcolumns: blockColumns,\n\t\tpredicate: suitableSpec\n\t}));\n}\n//#endregion\nexport { createPFrameForGraphs, isHiddenFromGraphColumn, isHiddenFromUIColumn };\n\n//# sourceMappingURL=PFrameForGraphs.js.map","//#region src/filters/traverse.ts\n/**\n* Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.\n*\n* Entries with `{ type: undefined }` inside `and`/`or` arrays are skipped\n* (these represent unfilled filter slots in the UI).\n*\n* Traversal order:\n* 1. Recurse into child filters (`and`/`or`/`not`)\n* 2. Apply the corresponding visitor callback with already-traversed children\n* 3. For leaf nodes, call `leaf` directly\n*/\nfunction traverseFilterSpec(filter, visitor) {\n\treturn traverseFilterSpecImpl(filter, visitor);\n}\n/** Internal implementation with simple generics for clean recursion. */\nfunction traverseFilterSpecImpl(filter, visitor) {\n\tswitch (filter.type) {\n\t\tcase \"and\": return visitor.and(filter.filters.filter((f) => f.type !== void 0).map((f) => traverseFilterSpecImpl(f, visitor)));\n\t\tcase \"or\": return visitor.or(filter.filters.filter((f) => f.type !== void 0).map((f) => traverseFilterSpecImpl(f, visitor)));\n\t\tcase \"not\": return visitor.not(traverseFilterSpecImpl(filter.filter, visitor));\n\t\tdefault: return visitor.leaf(filter);\n\t}\n}\n/** Collects all column references (`column` and `rhs` fields) from filter leaves. */\nfunction collectFilterSpecColumns(filter) {\n\treturn traverseFilterSpec(filter, {\n\t\tleaf: (leaf) => {\n\t\t\tconst cols = [];\n\t\t\tif (\"column\" in leaf && leaf.column !== void 0) cols.push(leaf.column);\n\t\t\tif (\"rhs\" in leaf && leaf.rhs !== void 0) cols.push(leaf.rhs);\n\t\t\treturn cols;\n\t\t},\n\t\tand: (results) => results.flat(),\n\t\tor: (results) => results.flat(),\n\t\tnot: (result) => result\n\t});\n}\n//#endregion\nexport { collectFilterSpecColumns, traverseFilterSpec };\n\n//# sourceMappingURL=traverse.js.map","import { traverseFilterSpec } from \"../traverse.js\";\nimport { assertNever } from \"@milaboratories/pl-model-common\";\n//#region src/filters/converters/filterToQuery.ts\n/** Parses a CanonicalizedJson<PTableColumnId> string into a SpecQueryExpression reference. */\nfunction resolveColumnRef(columnStr) {\n\tconst parsed = JSON.parse(columnStr);\n\treturn parsed.type === \"axis\" ? {\n\t\ttype: \"axisRef\",\n\t\tvalue: parsed.id\n\t} : {\n\t\ttype: \"columnRef\",\n\t\tvalue: parsed.id\n\t};\n}\n/** Converts a FilterSpec tree into a SpecQueryExpression. */\nfunction filterSpecToSpecQueryExpr(filter) {\n\treturn traverseFilterSpec(filter, {\n\t\tleaf: leafToSpecQueryExpr,\n\t\tand: (inputs) => {\n\t\t\tif (inputs.length === 0) throw new Error(\"AND filter requires at least one operand\");\n\t\t\treturn {\n\t\t\t\ttype: \"and\",\n\t\t\t\tinput: inputs\n\t\t\t};\n\t\t},\n\t\tor: (inputs) => {\n\t\t\tif (inputs.length === 0) throw new Error(\"OR filter requires at least one operand\");\n\t\t\treturn {\n\t\t\t\ttype: \"or\",\n\t\t\t\tinput: inputs\n\t\t\t};\n\t\t},\n\t\tnot: (input) => ({\n\t\t\ttype: \"not\",\n\t\t\tinput\n\t\t})\n\t});\n}\nfunction leafToSpecQueryExpr(filter) {\n\tswitch (filter.type) {\n\t\tcase \"patternEquals\": return {\n\t\t\ttype: \"stringEquals\",\n\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\tvalue: filter.value,\n\t\t\tcaseInsensitive: false\n\t\t};\n\t\tcase \"patternNotEquals\": return {\n\t\t\ttype: \"not\",\n\t\t\tinput: {\n\t\t\t\ttype: \"stringEquals\",\n\t\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\t\tvalue: filter.value,\n\t\t\t\tcaseInsensitive: false\n\t\t\t}\n\t\t};\n\t\tcase \"patternContainSubsequence\": return {\n\t\t\ttype: \"stringContains\",\n\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\tvalue: filter.value,\n\t\t\tcaseInsensitive: false\n\t\t};\n\t\tcase \"patternNotContainSubsequence\": return {\n\t\t\ttype: \"not\",\n\t\t\tinput: {\n\t\t\t\ttype: \"stringContains\",\n\t\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\t\tvalue: filter.value,\n\t\t\t\tcaseInsensitive: false\n\t\t\t}\n\t\t};\n\t\tcase \"patternMatchesRegularExpression\": return {\n\t\t\ttype: \"stringRegex\",\n\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\tvalue: filter.value\n\t\t};\n\t\tcase \"patternFuzzyContainSubsequence\": return {\n\t\t\ttype: \"stringContainsFuzzy\",\n\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\tvalue: filter.value,\n\t\t\tmaxEdits: filter.maxEdits ?? 1,\n\t\t\tcaseInsensitive: false,\n\t\t\tsubstitutionsOnly: filter.substitutionsOnly ?? false,\n\t\t\twildcard: filter.wildcard ?? null\n\t\t};\n\t\tcase \"equal\": return {\n\t\t\ttype: \"numericComparison\",\n\t\t\toperand: \"eq\",\n\t\t\tleft: resolveColumnRef(filter.column),\n\t\t\tright: {\n\t\t\t\ttype: \"constant\",\n\t\t\t\tvalue: filter.x\n\t\t\t}\n\t\t};\n\t\tcase \"notEqual\": return {\n\t\t\ttype: \"numericComparison\",\n\t\t\toperand: \"ne\",\n\t\t\tleft: resolveColumnRef(filter.column),\n\t\t\tright: {\n\t\t\t\ttype: \"constant\",\n\t\t\t\tvalue: filter.x\n\t\t\t}\n\t\t};\n\t\tcase \"lessThan\": return {\n\t\t\ttype: \"numericComparison\",\n\t\t\toperand: \"lt\",\n\t\t\tleft: resolveColumnRef(filter.column),\n\t\t\tright: {\n\t\t\t\ttype: \"constant\",\n\t\t\t\tvalue: filter.x\n\t\t\t}\n\t\t};\n\t\tcase \"greaterThan\": return {\n\t\t\ttype: \"numericComparison\",\n\t\t\toperand: \"gt\",\n\t\t\tleft: resolveColumnRef(filter.column),\n\t\t\tright: {\n\t\t\t\ttype: \"constant\",\n\t\t\t\tvalue: filter.x\n\t\t\t}\n\t\t};\n\t\tcase \"lessThanOrEqual\": return {\n\t\t\ttype: \"numericComparison\",\n\t\t\toperand: \"le\",\n\t\t\tleft: resolveColumnRef(filter.column),\n\t\t\tright: {\n\t\t\t\ttype: \"constant\",\n\t\t\t\tvalue: filter.x\n\t\t\t}\n\t\t};\n\t\tcase \"greaterThanOrEqual\": return {\n\t\t\ttype: \"numericComparison\",\n\t\t\toperand: \"ge\",\n\t\t\tleft: resolveColumnRef(filter.column),\n\t\t\tright: {\n\t\t\t\ttype: \"constant\",\n\t\t\t\tvalue: filter.x\n\t\t\t}\n\t\t};\n\t\tcase \"equalToColumn\": return {\n\t\t\ttype: \"numericComparison\",\n\t\t\toperand: \"eq\",\n\t\t\tleft: resolveColumnRef(filter.column),\n\t\t\tright: resolveColumnRef(filter.rhs)\n\t\t};\n\t\tcase \"lessThanColumn\": {\n\t\t\tconst left = resolveColumnRef(filter.column);\n\t\t\tconst right = resolveColumnRef(filter.rhs);\n\t\t\tif (filter.minDiff !== void 0 && filter.minDiff !== 0) return {\n\t\t\t\ttype: \"numericComparison\",\n\t\t\t\toperand: \"lt\",\n\t\t\t\tleft: {\n\t\t\t\t\ttype: \"numericBinary\",\n\t\t\t\t\toperand: \"add\",\n\t\t\t\t\tleft,\n\t\t\t\t\tright: {\n\t\t\t\t\t\ttype: \"constant\",\n\t\t\t\t\t\tvalue: filter.minDiff\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tright\n\t\t\t};\n\t\t\treturn {\n\t\t\t\ttype: \"numericComparison\",\n\t\t\t\toperand: \"lt\",\n\t\t\t\tleft,\n\t\t\t\tright\n\t\t\t};\n\t\t}\n\t\tcase \"greaterThanColumn\": {\n\t\t\tconst left = resolveColumnRef(filter.column);\n\t\t\tconst right = resolveColumnRef(filter.rhs);\n\t\t\tif (filter.minDiff !== void 0 && filter.minDiff !== 0) return {\n\t\t\t\ttype: \"numericComparison\",\n\t\t\t\toperand: \"gt\",\n\t\t\t\tleft: {\n\t\t\t\t\ttype: \"numericBinary\",\n\t\t\t\t\toperand: \"add\",\n\t\t\t\t\tleft,\n\t\t\t\t\tright: {\n\t\t\t\t\t\ttype: \"constant\",\n\t\t\t\t\t\tvalue: filter.minDiff\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tright\n\t\t\t};\n\t\t\treturn {\n\t\t\t\ttype: \"numericComparison\",\n\t\t\t\toperand: \"gt\",\n\t\t\t\tleft,\n\t\t\t\tright\n\t\t\t};\n\t\t}\n\t\tcase \"lessThanColumnOrEqual\": {\n\t\t\tconst left = resolveColumnRef(filter.column);\n\t\t\tconst right = resolveColumnRef(filter.rhs);\n\t\t\tif (filter.minDiff !== void 0 && filter.minDiff !== 0) return {\n\t\t\t\ttype: \"numericComparison\",\n\t\t\t\toperand: \"le\",\n\t\t\t\tleft: {\n\t\t\t\t\ttype: \"numericBinary\",\n\t\t\t\t\toperand: \"add\",\n\t\t\t\t\tleft,\n\t\t\t\t\tright: {\n\t\t\t\t\t\ttype: \"constant\",\n\t\t\t\t\t\tvalue: filter.minDiff\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tright\n\t\t\t};\n\t\t\treturn {\n\t\t\t\ttype: \"numericComparison\",\n\t\t\t\toperand: \"le\",\n\t\t\t\tleft,\n\t\t\t\tright\n\t\t\t};\n\t\t}\n\t\tcase \"greaterThanColumnOrEqual\": {\n\t\t\tconst left = resolveColumnRef(filter.column);\n\t\t\tconst right = resolveColumnRef(filter.rhs);\n\t\t\tif (filter.minDiff !== void 0 && filter.minDiff !== 0) return {\n\t\t\t\ttype: \"numericComparison\",\n\t\t\t\toperand: \"ge\",\n\t\t\t\tleft: {\n\t\t\t\t\ttype: \"numericBinary\",\n\t\t\t\t\toperand: \"add\",\n\t\t\t\t\tleft,\n\t\t\t\t\tright: {\n\t\t\t\t\t\ttype: \"constant\",\n\t\t\t\t\t\tvalue: filter.minDiff\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tright\n\t\t\t};\n\t\t\treturn {\n\t\t\t\ttype: \"numericComparison\",\n\t\t\t\toperand: \"ge\",\n\t\t\t\tleft,\n\t\t\t\tright\n\t\t\t};\n\t\t}\n\t\tcase \"inSet\": return {\n\t\t\ttype: \"isIn\",\n\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\tset: filter.value,\n\t\t\tnegate: false\n\t\t};\n\t\tcase \"notInSet\": return {\n\t\t\ttype: \"isIn\",\n\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\tset: filter.value,\n\t\t\tnegate: true\n\t\t};\n\t\tcase \"isNA\": return {\n\t\t\ttype: \"isNull\",\n\t\t\tinput: resolveColumnRef(filter.column)\n\t\t};\n\t\tcase \"isNotNA\": return {\n\t\t\ttype: \"not\",\n\t\t\tinput: {\n\t\t\t\ttype: \"isNull\",\n\t\t\t\tinput: resolveColumnRef(filter.column)\n\t\t\t}\n\t\t};\n\t\tcase \"ifNa\": return {\n\t\t\ttype: \"fillNull\",\n\t\t\tinput: resolveColumnRef(filter.column),\n\t\t\treplacement: {\n\t\t\t\ttype: \"constant\",\n\t\t\t\tvalue: filter.replacement\n\t\t\t}\n\t\t};\n\t\tcase \"topN\":\n\t\tcase \"bottomN\": throw new Error(`Filter type \"${filter.type}\" is not supported in query expressions`);\n\t\tcase void 0: throw new Error(\"Filter type is undefined\");\n\t\tdefault: assertNever(filter);\n\t}\n}\n//#endregion\nexport { filterSpecToSpecQueryExpr };\n\n//# sourceMappingURL=filterToQuery.js.map","import { isLength } from '../../predicate/isLength.mjs';\n\nfunction isArrayLike(value) {\n return value != null && typeof value !== 'function' && isLength(value.length);\n}\n\nexport { isArrayLike };\n","import { getTag } from '../_internal/getTag.mjs';\n\nfunction isArguments(value) {\n return value !== null && typeof value === 'object' && getTag(value) === '[object Arguments]';\n}\n\nexport { isArguments };\n","function isPrototype(value) {\n const constructor = value?.constructor;\n const prototype = typeof constructor === 'function' ? constructor.prototype : Object.prototype;\n return value === prototype;\n}\n\nexport { isPrototype };\n","import { isTypedArray as isTypedArray$1 } from '../../predicate/isTypedArray.mjs';\n\nfunction isTypedArray(x) {\n return isTypedArray$1(x);\n}\n\nexport { isTypedArray };\n","import { isArguments } from './isArguments.mjs';\nimport { isArrayLike } from './isArrayLike.mjs';\nimport { isTypedArray } from './isTypedArray.mjs';\nimport { isPrototype } from '../_internal/isPrototype.mjs';\n\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value)) {\n if (typeof value.splice !== 'function' &&\n typeof value !== 'string' &&\n (typeof Buffer === 'undefined' || !Buffer.isBuffer(value)) &&\n !isTypedArray(value) &&\n !isArguments(value)) {\n return false;\n }\n return value.length === 0;\n }\n if (typeof value === 'object') {\n if (value instanceof Map || value instanceof Set) {\n return value.size === 0;\n }\n const keys = Object.keys(value);\n if (isPrototype(value)) {\n return keys.filter(x => x !== 'constructor').length === 0;\n }\n return keys.length === 0;\n }\n return true;\n}\n\nexport { isEmpty };\n","import { traverseFilterSpec } from \"./traverse.js\";\nimport { isNil } from \"@milaboratories/helpers\";\nimport { isEmpty } from \"es-toolkit/compat\";\n//#region src/filters/distill.ts\n/**\n* Strips non-FilterSpec metadata (whitelist approach) and removes\n* unfilled leaves (type is undefined or any required field is undefined).\n*/\nfunction distillFilterSpec(filter) {\n\tif (filter == null) return null;\n\treturn traverseFilterSpec(filter, {\n\t\tleaf: (leaf) => {\n\t\t\tconst distilled = distillLeaf(leaf);\n\t\t\treturn isFilledLeaf(distilled) ? distilled : null;\n\t\t},\n\t\tand: (results) => {\n\t\t\tconst filtered = results.filter((f) => f !== null);\n\t\t\treturn filtered.length === 0 ? null : {\n\t\t\t\ttype: \"and\",\n\t\t\t\tfilters: filtered\n\t\t\t};\n\t\t},\n\t\tor: (results) => {\n\t\t\tconst filtered = results.filter((f) => f !== null);\n\t\t\treturn filtered.length === 0 ? null : {\n\t\t\t\ttype: \"or\",\n\t\t\t\tfilters: filtered\n\t\t\t};\n\t\t},\n\t\tnot: (result) => result === null ? null : {\n\t\t\ttype: \"not\",\n\t\t\tfilter: result\n\t\t}\n\t});\n}\nfunction distillLeaf(node) {\n\tconst result = {};\n\tfor (const [key, value] of Object.entries(node)) if (KNOWN_LEAF_KEYS.has(key)) result[key] = value;\n\treturn result;\n}\n/** Returns true if the leaf is filled — type is defined and every required field per-type is filled. */\nfunction isFilledLeaf(node) {\n\tif (isNil(node.type)) return false;\n\tconst required = REQUIRED_KEYS_BY_TYPE[node.type];\n\tconst record = node;\n\treturn required.every((key) => isFilledValue(record[key]));\n}\n/**\n* Returns true if the value is considered \"filled\":\n* - primitives (number, boolean): always true\n* - string: non-empty after trim\n* - array: non-empty AND every item is filled\n* - plain object: non-empty AND every field value is filled\n* - null/undefined: false\n*/\nfunction isFilledValue(value) {\n\tif (isNil(value)) return false;\n\tswitch (typeof value) {\n\t\tcase \"number\":\n\t\tcase \"boolean\": return true;\n\t\tcase \"string\": return value.trim() !== \"\";\n\t\tdefault:\n\t\t\tif (isEmpty(value)) return false;\n\t\t\tif (Array.isArray(value)) return value.every(isFilledValue);\n\t\t\treturn Object.values(value).every(isFilledValue);\n\t}\n}\nconst KNOWN_LEAF_KEYS = new Set([\n\t\"n\",\n\t\"x\",\n\t\"rhs\",\n\t\"type\",\n\t\"value\",\n\t\"column\",\n\t\"minDiff\",\n\t\"maxEdits\",\n\t\"wildcard\",\n\t\"replacement\",\n\t\"substitutionsOnly\"\n]);\n/** Required fields per leaf type. Optional fields (e.g. minDiff, maxEdits) excluded. */\nconst REQUIRED_KEYS_BY_TYPE = {\n\tisNA: [\"column\"],\n\tisNotNA: [\"column\"],\n\tifNa: [\"column\", \"replacement\"],\n\tpatternEquals: [\"column\", \"value\"],\n\tpatternNotEquals: [\"column\", \"value\"],\n\tpatternContainSubsequence: [\"column\", \"value\"],\n\tpatternNotContainSubsequence: [\"column\", \"value\"],\n\tpatternMatchesRegularExpression: [\"column\", \"value\"],\n\tpatternFuzzyContainSubsequence: [\"column\", \"value\"],\n\tinSet: [\"column\", \"value\"],\n\tnotInSet: [\"column\", \"value\"],\n\ttopN: [\"column\", \"n\"],\n\tbottomN: [\"column\", \"n\"],\n\tequal: [\"column\", \"x\"],\n\tnotEqual: [\"column\", \"x\"],\n\tlessThan: [\"column\", \"x\"],\n\tgreaterThan: [\"column\", \"x\"],\n\tlessThanOrEqual: [\"column\", \"x\"],\n\tgreaterThanOrEqual: [\"column\", \"x\"],\n\tequalToColumn: [\"column\", \"rhs\"],\n\tlessThanColumn: [\"column\", \"rhs\"],\n\tgreaterThanColumn: [\"column\", \"rhs\"],\n\tlessThanColumnOrEqual: [\"column\", \"rhs\"],\n\tgreaterThanColumnOrEqual: [\"column\", \"rhs\"]\n};\n//#endregion\nexport { distillFilterSpec };\n\n//# sourceMappingURL=distill.js.map","import { distillFilterSpec } from \"../../filters/distill.js\";\nimport \"../../filters/index.js\";\nimport { canonicalizeJson, getPTableColumnId, parseJsonSafely } from \"@milaboratories/pl-model-common\";\nimport { isNil } from \"es-toolkit\";\n//#region src/components/PlDataTable/state-migration.ts\n/** Upgrade PlDataTableStateV2 to the latest version */\nfunction upgradePlDataTableStateV2(state) {\n\tif (!state) return createPlDataTableStateV2();\n\tif (!(\"version\" in state)) state = createPlDataTableStateV2();\n\tif (state.version === 2) state = {\n\t\tversion: 3,\n\t\tstateCache: state.stateCache.map((entry) => ({\n\t\t\t...entry,\n\t\t\tfiltersState: []\n\t\t})),\n\t\tpTableParams: createDefaultPTableParams()\n\t};\n\tif (state.version === 3) state = createPlDataTableStateV2();\n\tif (state.version === 4) state = migrateV4toV6(state);\n\tif (state.version === 5) state = migrateV5toV6(state);\n\tif (state.version === 6) state = migrateV6toV7(state);\n\treturn state;\n}\n/** Migrate v5 to v6: unwrap `{source, labeled}` colIds in gridState. */\nfunction migrateV5toV6(state) {\n\treturn {\n\t\tversion: 6,\n\t\tstateCache: state.stateCache.map((entry) => ({\n\t\t\t...entry,\n\t\t\tgridState: unwrapV5GridState(entry.gridState)\n\t\t})),\n\t\tpTableParams: createDefaultPTableParams()\n\t};\n}\n/** Convert v5 wrapped colId JSON to bare PTableColumnSpec JSON, taking `.source`.\n* gridState colIds may include the row-number sentinel (a JSON-stringified\n* literal, not a wrapped spec) — those pass through unchanged. */\nfunction unwrapV5ColId(json) {\n\tconst parsed = parseJsonSafely(json);\n\treturn !isNil(parsed) && typeof parsed === \"object\" && \"source\" in parsed ? canonicalizeJson(parsed.source) : json;\n}\nfunction unwrapV5GridState(gridState) {\n\tconst unwrapAs = (json) => unwrapV5ColId(json);\n\treturn {\n\t\tcolumnOrder: gridState.columnOrder ? { orderedColIds: gridState.columnOrder.orderedColIds.map(unwrapAs) } : void 0,\n\t\tsort: gridState.sort ? { sortModel: gridState.sort.sortModel.map((s) => ({\n\t\t\tcolId: unwrapAs(s.colId),\n\t\t\tsort: s.sort\n\t\t})) } : void 0,\n\t\tcolumnVisibility: gridState.columnVisibility ? { hiddenColIds: gridState.columnVisibility.hiddenColIds.map(unwrapAs) } : void 0\n\t};\n}\n/** Migrate v6 to v7: rewrite each colId from a full PTableColumnSpec to its\n* compact PTableColumnId (drops annotations/spec body, ~16× smaller per column). */\nfunction migrateV6toV7(state) {\n\treturn {\n\t\tversion: 7,\n\t\tstateCache: state.stateCache.map((entry) => ({\n\t\t\t...entry,\n\t\t\tgridState: shrinkV6GridState(entry.gridState)\n\t\t})),\n\t\tpTableParams: state.pTableParams\n\t};\n}\n/** Convert a v6 fat colId (canonicalized PTableColumnSpec) to a v7 compact colId\n* (canonicalized PTableColumnId). The row-number sentinel is a string literal,\n* not a spec — pass it through unchanged. */\nfunction shrinkV6ColId(json) {\n\tconst parsed = parseJsonSafely(json);\n\tif (!isNil(parsed) && typeof parsed === \"object\" && \"type\" in parsed && \"id\" in parsed) return canonicalizeJson(getPTableColumnId(parsed));\n\treturn json;\n}\nfunction shrinkV6GridState(gridState) {\n\treturn {\n\t\tcolumnOrder: gridState.columnOrder ? { orderedColIds: gridState.columnOrder.orderedColIds.map(shrinkV6ColId) } : void 0,\n\t\tsort: gridState.sort ? { sortModel: gridState.sort.sortModel.map((s) => ({\n\t\t\tcolId: shrinkV6ColId(s.colId),\n\t\t\tsort: s.sort\n\t\t})) } : void 0,\n\t\tcolumnVisibility: gridState.columnVisibility ? { hiddenColIds: gridState.columnVisibility.hiddenColIds.map(shrinkV6ColId) } : void 0\n\t};\n}\n/** Migrate v4 state to v6: convert per-column filters to tree-based format (skips v5). */\nfunction migrateV4toV6(state) {\n\tlet idCounter = 0;\n\tconst nextId = () => ++idCounter;\n\tconst migratedCache = state.stateCache.map((entry) => {\n\t\tconst leaves = [];\n\t\tfor (const f of entry.filtersState) if (f.filter !== null && !f.filter.disabled) {\n\t\t\tconst column = canonicalizeJson(f.id);\n\t\t\tleaves.push(migrateTableFilter(column, f.filter.value, nextId));\n\t\t}\n\t\tconst filtersState = leaves.length > 0 ? {\n\t\t\tid: nextId(),\n\t\t\ttype: \"and\",\n\t\t\tfilters: leaves\n\t\t} : null;\n\t\treturn {\n\t\t\tsourceId: entry.sourceId,\n\t\t\tgridState: entry.gridState,\n\t\t\tsheetsState: entry.sheetsState,\n\t\t\tfiltersState,\n\t\t\tdefaultFiltersState: null\n\t\t};\n\t});\n\tconst oldSourceId = state.pTableParams.sourceId;\n\tconst currentCache = oldSourceId ? migratedCache.find((e) => e.sourceId === oldSourceId) : void 0;\n\treturn {\n\t\tversion: 6,\n\t\tstateCache: migratedCache,\n\t\tpTableParams: currentCache && oldSourceId ? {\n\t\t\tsourceId: oldSourceId,\n\t\t\thiddenColIds: state.pTableParams.hiddenColIds?.map((id) => ({\n\t\t\t\ttype: \"column\",\n\t\t\t\tid\n\t\t\t})) ?? null,\n\t\t\tfilters: distillFilterSpec(currentCache.filtersState),\n\t\t\tdefaultFilters: null,\n\t\t\tsorting: state.pTableParams.sorting\n\t\t} : createDefaultPTableParams()\n\t};\n}\n/** Migrate a single per-column PlTableFilter to a tree-based FilterSpec node */\nfunction migrateTableFilter(column, filter, nextId) {\n\tconst id = nextId();\n\tswitch (filter.type) {\n\t\tcase \"isNA\": return {\n\t\t\tid,\n\t\t\ttype: \"isNA\",\n\t\t\tcolumn\n\t\t};\n\t\tcase \"isNotNA\": return {\n\t\t\tid,\n\t\t\ttype: \"isNotNA\",\n\t\t\tcolumn\n\t\t};\n\t\tcase \"number_equals\": return {\n\t\t\tid,\n\t\t\ttype: \"equal\",\n\t\t\tcolumn,\n\t\t\tx: filter.reference\n\t\t};\n\t\tcase \"number_notEquals\": return {\n\t\t\tid,\n\t\t\ttype: \"notEqual\",\n\t\t\tcolumn,\n\t\t\tx: filter.reference\n\t\t};\n\t\tcase \"number_greaterThan\": return {\n\t\t\tid,\n\t\t\ttype: \"greaterThan\",\n\t\t\tcolumn,\n\t\t\tx: filter.reference\n\t\t};\n\t\tcase \"number_greaterThanOrEqualTo\": return {\n\t\t\tid,\n\t\t\ttype: \"greaterThanOrEqual\",\n\t\t\tcolumn,\n\t\t\tx: filter.reference\n\t\t};\n\t\tcase \"number_lessThan\": return {\n\t\t\tid,\n\t\t\ttype: \"lessThan\",\n\t\t\tcolumn,\n\t\t\tx: filter.reference\n\t\t};\n\t\tcase \"number_lessThanOrEqualTo\": return {\n\t\t\tid,\n\t\t\ttype: \"lessThanOrEqual\",\n\t\t\tcolumn,\n\t\t\tx: filter.reference\n\t\t};\n\t\tcase \"number_between\": return {\n\t\t\tid,\n\t\t\ttype: \"and\",\n\t\t\tfilters: [filter.includeLowerBound ? {\n\t\t\t\tid: nextId(),\n\t\t\t\ttype: \"greaterThanOrEqual\",\n\t\t\t\tcolumn,\n\t\t\t\tx: filter.lowerBound\n\t\t\t} : {\n\t\t\t\tid: nextId(),\n\t\t\t\ttype: \"greaterThan\",\n\t\t\t\tcolumn,\n\t\t\t\tx: filter.lowerBound\n\t\t\t}, filter.includeUpperBound ? {\n\t\t\t\tid: nextId(),\n\t\t\t\ttype: \"lessThanOrEqual\",\n\t\t\t\tcolumn,\n\t\t\t\tx: filter.upperBound\n\t\t\t} : {\n\t\t\t\tid: nextId(),\n\t\t\t\ttype: \"lessThan\",\n\t\t\t\tcolumn,\n\t\t\t\tx: filter.upperBound\n\t\t\t}]\n\t\t};\n\t\tcase \"string_equals\": return {\n\t\t\tid,\n\t\t\ttype: \"patternEquals\",\n\t\t\tcolumn,\n\t\t\tvalue: filter.reference\n\t\t};\n\t\tcase \"string_notEquals\": return {\n\t\t\tid,\n\t\t\ttype: \"patternNotEquals\",\n\t\t\tcolumn,\n\t\t\tvalue: filter.reference\n\t\t};\n\t\tcase \"string_contains\": return {\n\t\t\tid,\n\t\t\ttype: \"patternContainSubsequence\",\n\t\t\tcolumn,\n\t\t\tvalue: filter.reference\n\t\t};\n\t\tcase \"string_doesNotContain\": return {\n\t\t\tid,\n\t\t\ttype: \"patternNotContainSubsequence\",\n\t\t\tcolumn,\n\t\t\tvalue: filter.reference\n\t\t};\n\t\tcase \"string_matches\": return {\n\t\t\tid,\n\t\t\ttype: \"patternMatchesRegularExpression\",\n\t\t\tcolumn,\n\t\t\tvalue: filter.reference\n\t\t};\n\t\tcase \"string_doesNotMatch\": return {\n\t\t\tid,\n\t\t\ttype: \"not\",\n\t\t\tfilter: {\n\t\t\t\tid: nextId(),\n\t\t\t\ttype: \"patternMatchesRegularExpression\",\n\t\t\t\tcolumn,\n\t\t\t\tvalue: filter.reference\n\t\t\t}\n\t\t};\n\t\tcase \"string_containsFuzzyMatch\": return {\n\t\t\tid,\n\t\t\ttype: \"patternFuzzyContainSubsequence\",\n\t\t\tcolumn,\n\t\t\tvalue: filter.reference,\n\t\t\tmaxEdits: filter.maxEdits,\n\t\t\tsubstitutionsOnly: filter.substitutionsOnly,\n\t\t\t...filter.wildcard !== void 0 ? { wildcard: filter.wildcard } : {}\n\t\t};\n\t}\n}\nfunction createDefaultPTableParams() {\n\treturn {\n\t\tsourceId: null,\n\t\thiddenColIds: null,\n\t\tfilters: null,\n\t\tdefaultFilters: null,\n\t\tsorting: []\n\t};\n}\nfunction createPlDataTableStateV2() {\n\treturn {\n\t\tversion: 7,\n\t\tstateCache: [],\n\t\tpTableParams: createDefaultPTableParams()\n\t};\n}\n//#endregion\nexport { createDefaultPTableParams, createPlDataTableStateV2, upgradePlDataTableStateV2 };\n\n//# sourceMappingURL=state-migration.js.map","import { deriveDistinctLabels } from \"../../../labels/derive_distinct_labels.js\";\nimport { ArrayColumnProvider } from \"../../../columns/column_snapshot_provider.js\";\nimport { ColumnCollectionBuilder } from \"../../../columns/column_collection_builder.js\";\nimport \"../../../columns/index.js\";\nimport { deriveDistinctTooltips } from \"../../../labels/derive_distinct_tooltips.js\";\nimport { Annotation, canonicalizeAxisId, readAnnotation } from \"@milaboratories/pl-model-common\";\nimport { getField } from \"@milaboratories/helpers\";\nimport { isNil as isNil$1 } from \"es-toolkit\";\n//#region src/components/PlDataTable/createPlDataTable/utils.ts\n/** Check if column should be omitted from the table */\nfunction isColumnHidden(spec) {\n\treturn readAnnotation(spec, Annotation.Table.Visibility) === \"hidden\";\n}\n/** Check if column is hidden by default */\nfunction isColumnOptional(spec) {\n\treturn readAnnotation(spec, Annotation.Table.Visibility) === \"optional\";\n}\n/** Get effective visibility for a column. Rule map lookup first, then annotation fallback. */\nfunction getEffectiveVisibility(col, visibilityByColId) {\n\tconst rule = visibilityByColId?.get(col.id);\n\tif (rule !== void 0) return rule.visibility;\n\tif (isColumnHidden(col.spec)) return \"hidden\";\n\tif (isColumnOptional(col.spec)) return \"optional\";\n}\n/** Get ordering priority for a column. Rule map lookup first, then annotation fallback. */\nfunction getOrderPriority(col, orderByColId) {\n\tconst rule = orderByColId?.get(col.id);\n\tif (rule !== void 0) return rule.priority;\n\tconst annotation = Number(readAnnotation(col.spec, Annotation.Table.OrderPriority));\n\treturn isNaN(annotation) ? void 0 : annotation;\n}\n/**\n* Evaluate display rules against a set of columns and return a map of `colId → winning rule`\n* (first-match-wins, preserving original rule order).\n*\n* Predicate-based rules (`ColumnMatcher`) are evaluated directly on the spec.\n* Selector-based rules (`ColumnSelector`) are matched via `PFrameSpecDriver.discoverColumns`\n* using the same engine as `ColumnCollection.findColumns` — no client-side matcher.\n*/\nfunction evaluateRules(rules, columns, pframeSpec) {\n\tconst result = /* @__PURE__ */ new Map();\n\tif (rules.length === 0 || columns.length === 0) return result;\n\tconst hasSelectorRules = rules.some((rule) => typeof rule.match !== \"function\");\n\tconst selectorHitsByRule = /* @__PURE__ */ new Map();\n\tif (hasSelectorRules) {\n\t\tconst pColumns = dedupeById(columns).map((c) => ({\n\t\t\tid: c.id,\n\t\t\tspec: c.spec,\n\t\t\tdata: void 0\n\t\t}));\n\t\tconst collection = new ColumnCollectionBuilder(pframeSpec).addSource(new ArrayColumnProvider(pColumns)).build();\n\t\tif (collection === void 0) return result;\n\t\ttry {\n\t\t\tfor (const rule of rules) {\n\t\t\t\tif (typeof rule.match === \"function\") continue;\n\t\t\t\tconst hits = collection.findColumns({ include: rule.match });\n\t\t\t\tselectorHitsByRule.set(rule, new Set(hits.map((h) => h.id)));\n\t\t\t}\n\t\t} finally {\n\t\t\tcollection.dispose();\n\t\t}\n\t}\n\tfor (const col of columns) for (const rule of rules) if (typeof rule.match === \"function\" ? rule.match(col.spec) : selectorHitsByRule.get(rule)?.has(col.id) ?? false) {\n\t\tresult.set(col.id, rule);\n\t\tbreak;\n\t}\n\treturn result;\n}\nfunction dedupeById(columns) {\n\tconst seen = /* @__PURE__ */ new Set();\n\tconst result = [];\n\tfor (const col of columns) {\n\t\tif (seen.has(col.id)) continue;\n\t\tseen.add(col.id);\n\t\tresult.push(col);\n\t}\n\treturn result;\n}\n/**\n* Writes derived labels into column and axis annotations.\n* Returns new column objects with modified specs — original columns are not mutated.\n*\n* For each column: writes derived label into Annotation.Label (if present in derivedLabels).\n* For each axis in column specs: writes derived axis label into AxisSpec annotations.\n*/\nfunction withLabelAnnotations(derivedLabels, columns) {\n\tif (derivedLabels === void 0) return columns;\n\treturn columns.map((col) => {\n\t\tconst colLabel = derivedLabels[col.id];\n\t\treturn {\n\t\t\t...col,\n\t\t\tspec: {\n\t\t\t\t...col.spec,\n\t\t\t\t...isNil$1(colLabel) ? {} : { annotations: {\n\t\t\t\t\t...col.spec.annotations,\n\t\t\t\t\t[Annotation.Label]: colLabel\n\t\t\t\t} },\n\t\t\t\taxesSpec: col.spec.axesSpec.map((axis) => {\n\t\t\t\t\tconst label = derivedLabels[canonicalizeAxisId(axis)];\n\t\t\t\t\treturn isNil$1(label) ? axis : {\n\t\t\t\t\t\t...axis,\n\t\t\t\t\t\tannotations: {\n\t\t\t\t\t\t\t...axis.annotations,\n\t\t\t\t\t\t\t[Annotation.Label]: label\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t}\n\t\t};\n\t});\n}\nfunction withDataStatusAnnotations(columns) {\n\treturn columns.map((col) => {\n\t\treturn {\n\t\t\t...col,\n\t\t\tspec: {\n\t\t\t\t...col.spec,\n\t\t\t\tannotations: {\n\t\t\t\t\t...col.spec.annotations,\n\t\t\t\t\t[Annotation.DataStatus]: col.dataStatus\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n/**\n* Writes effective display properties (OrderPriority, Visibility) from precomputed rule maps\n* into column annotations. Returns new column objects — originals are not mutated.\n*/\nfunction withTableVisualAnnotations(visibilityByColId, orderByColId, columns) {\n\tif (visibilityByColId === void 0 && orderByColId === void 0) return columns;\n\treturn columns.map((col) => {\n\t\tconst annotations = { ...col.spec.annotations };\n\t\tconst visibility = getEffectiveVisibility(col, visibilityByColId);\n\t\tif (!isNil$1(visibility)) annotations[Annotation.Table.Visibility] = visibility;\n\t\tconst orderPriority = getOrderPriority(col, orderByColId);\n\t\tif (!isNil$1(orderPriority)) annotations[Annotation.Table.OrderPriority] = String(orderPriority);\n\t\treturn {\n\t\t\t...col,\n\t\t\tspec: {\n\t\t\t\t...col.spec,\n\t\t\t\tannotations\n\t\t\t}\n\t\t};\n\t});\n}\n/**\n* Writes derived info annotations into column annotations.\n* Columns without an info entry are passed through unchanged.\n*/\nfunction withInfoAnnotations(infoById, columns) {\n\tif (isNil$1(infoById)) return columns;\n\treturn columns.map((col) => {\n\t\tconst info = infoById[col.id];\n\t\tif (isNil$1(info)) return col;\n\t\treturn {\n\t\t\t...col,\n\t\t\tspec: {\n\t\t\t\t...col.spec,\n\t\t\t\tannotations: {\n\t\t\t\t\t...col.spec.annotations,\n\t\t\t\t\t[Annotation.Table.Info]: info\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\nfunction withHidenAxesAnnotations(columns) {\n\treturn columns.map((col) => ({\n\t\t...col,\n\t\tspec: {\n\t\t\t...col.spec,\n\t\t\taxesSpec: col.spec.axesSpec.map((axis) => ({\n\t\t\t\t...axis,\n\t\t\t\tannotations: {\n\t\t\t\t\t...axis.annotations,\n\t\t\t\t\t[Annotation.Table.Visibility]: \"hidden\"\n\t\t\t\t}\n\t\t\t}))\n\t\t}\n\t}));\n}\n/** Derive labels for all table elements: columns via deriveDistinctLabels, axes from label columns. */\nfunction deriveAllLabels(options) {\n\tconst { columns, deriveLabelsOptions } = options;\n\treturn deriveDistinctLabels(columns.map((c) => ({\n\t\tspec: c.spec,\n\t\tlinkerPath: c.linkerPath?.map((step) => ({ spec: step.linker.spec })),\n\t\tqualifications: c.qualifications\n\t})), deriveLabelsOptions).reduce((acc, label, index) => (acc[columns[index].id] = label, acc), {});\n}\n/** Derive origin tooltips for columns whose qualifications or linker path carry info. */\nfunction deriveAllTooltips(options) {\n\tconst { columns } = options;\n\tconst variantCountByOriginal = columns.reduce((acc, c) => {\n\t\treturn acc.set(getField(c, \"originalId\") ?? c.id, (acc.get(c.originalId ?? c.id) ?? 0) + 1);\n\t}, /* @__PURE__ */ new Map());\n\tconst { entries } = columns.reduce(({ entries, variantSeen }, c) => {\n\t\tconst id = getField(c, \"originalId\") ?? c.id;\n\t\tconst variantCount = variantCountByOriginal.get(id);\n\t\tconst variantIndex = (variantSeen.set(id, (variantSeen.get(id) ?? 0) + 1), variantSeen.get(id));\n\t\tentries.push({\n\t\t\tspec: c.spec,\n\t\t\tlinkerPath: c.linkerPath,\n\t\t\tqualifications: c.qualifications,\n\t\t\tvariantIndex,\n\t\t\tvariantCount\n\t\t});\n\t\treturn {\n\t\t\tentries,\n\t\t\tvariantSeen\n\t\t};\n\t}, {\n\t\tentries: [],\n\t\tvariantSeen: /* @__PURE__ */ new Map()\n\t});\n\tconst tooltips = deriveDistinctTooltips(entries);\n\treturn Object.fromEntries(tooltips.flatMap((t, i) => isNil$1(t) ? [] : [[columns[i].id, t]]));\n}\n//#endregion\nexport { deriveAllLabels, deriveAllTooltips, evaluateRules, getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional, withDataStatusAnnotations, withHidenAxesAnnotations, withInfoAnnotations, withLabelAnnotations, withTableVisualAnnotations };\n\n//# sourceMappingURL=utils.js.map","import \"../../columns/index.js\";\nimport { getAxisId, isLabelColumn, matchAxisId } from \"@milaboratories/pl-model-common\";\n//#region src/components/PlDataTable/labels.ts\n/** Get label columns matching the provided columns from the result pool */\nfunction getMatchingLabelColumns(columns, allLabelColumns) {\n\tconst inputLabelColumns = [];\n\tconst inputValueColumns = [];\n\tfor (const column of columns) if (isLabelColumn(column.spec)) inputLabelColumns.push(column);\n\telse inputValueColumns.push(column);\n\tconst unlabeledAxes = [];\n\tfor (const column of inputValueColumns) for (const axis of column.spec.axesSpec) {\n\t\tconst axisId = getAxisId(axis);\n\t\tif (!unlabeledAxes.some((id) => matchAxisId(id, axisId))) unlabeledAxes.push(axisId);\n\t}\n\tfor (const labelColumn of inputLabelColumns) {\n\t\tconst labelAxisId = getAxisId(labelColumn.spec.axesSpec[0]);\n\t\tconst labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n\t\tif (labelMatch !== -1) unlabeledAxes.splice(labelMatch, 1);\n\t}\n\tconst colId = (id, domain, contextDomain) => {\n\t\tlet wid = id.toString();\n\t\tif (domain) for (const k in domain) {\n\t\t\twid += k;\n\t\t\twid += domain[k];\n\t\t}\n\t\tif (contextDomain) for (const k in contextDomain) {\n\t\t\twid += k;\n\t\t\twid += contextDomain[k];\n\t\t}\n\t\treturn wid;\n\t};\n\tconst labelColumns = [];\n\tfor (const labelColumn of allLabelColumns) {\n\t\tconst labelAxis = labelColumn.spec.axesSpec[0];\n\t\tconst labelAxisId = getAxisId(labelAxis);\n\t\tconst labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n\t\tif (labelMatch !== -1) {\n\t\t\tconst axisId = unlabeledAxes[labelMatch];\n\t\t\tif (Object.keys(axisId.domain ?? {}).length + Object.keys(axisId.contextDomain ?? {}).length > Object.keys(labelAxis.domain ?? {}).length + Object.keys(labelAxis.contextDomain ?? {}).length) labelColumns.push({\n\t\t\t\tid: colId(labelColumn.id, axisId.domain, axisId.contextDomain),\n\t\t\t\tspec: {\n\t\t\t\t\t...labelColumn.spec,\n\t\t\t\t\taxesSpec: [{\n\t\t\t\t\t\t...axisId,\n\t\t\t\t\t\tannotations: labelAxis.annotations\n\t\t\t\t\t}]\n\t\t\t\t},\n\t\t\t\tdata: labelColumn.data\n\t\t\t});\n\t\t\telse labelColumns.push(labelColumn);\n\t\t\tunlabeledAxes.splice(labelMatch, 1);\n\t\t}\n\t}\n\treturn labelColumns;\n}\n//#endregion\nexport { getMatchingLabelColumns };\n\n//# sourceMappingURL=labels.js.map","import { filterSpecToSpecQueryExpr } from \"../../../filters/converters/filterToQuery.js\";\nimport { distillFilterSpec } from \"../../../filters/distill.js\";\nimport \"../../../filters/index.js\";\nimport { isBooleanExpression } from \"@milaboratories/pl-model-common\";\nimport { isNil } from \"es-toolkit\";\n//#region src/components/PlDataTable/createPlDataTable/createPTableDefV3.ts\nfunction createPTableDefV3(params) {\n\tlet query = {\n\t\ttype: params.primaryJoinType === \"inner\" ? \"innerJoin\" : \"fullJoin\",\n\t\tentries: params.primary.map((a) => toLeaf(a.column, []))\n\t};\n\tif (params.secondary.length > 0) query = {\n\t\ttype: \"outerJoin\",\n\t\tprimary: {\n\t\t\tentry: query,\n\t\t\tqualifications: params.secondary.flatMap((g) => params.primary.flatMap((p) => g.primaryQualifications?.[p.column.id] ?? []))\n\t\t},\n\t\tsecondary: params.secondary.flatMap((g) => g.entries.map((e) => toJoinEntry(e)))\n\t};\n\tif (!isNil(params.filters)) {\n\t\tconst nonEmpty = distillFilterSpec(params.filters);\n\t\tif (!isNil(nonEmpty)) {\n\t\t\tconst pridicate = filterSpecToSpecQueryExpr(nonEmpty);\n\t\t\tif (!isBooleanExpression(pridicate)) throw new Error(`Filter conversion produced a non-boolean expression (got type \"${pridicate.type}\"), expected a boolean predicate for query filtering`);\n\t\t\tquery = {\n\t\t\t\ttype: \"filter\",\n\t\t\t\tinput: query,\n\t\t\t\tpredicate: pridicate\n\t\t\t};\n\t\t}\n\t}\n\tif (!isNil(params.sorting) && params.sorting.length > 0) query = {\n\t\ttype: \"sort\",\n\t\tinput: query,\n\t\tsortBy: params.sorting.map((s) => ({\n\t\t\texpression: columnIdToExpr(s.column),\n\t\t\tascending: s.ascending,\n\t\t\tnullsFirst: !s.naAndAbsentAreLeastValues\n\t\t}))\n\t};\n\treturn { query };\n}\nfunction columnIdToExpr(col) {\n\treturn col.type === \"axis\" ? {\n\t\ttype: \"axisRef\",\n\t\tvalue: col.id\n\t} : {\n\t\ttype: \"columnRef\",\n\t\tvalue: col.id\n\t};\n}\nfunction toLeaf(col, qs) {\n\treturn {\n\t\tentry: {\n\t\t\ttype: \"column\",\n\t\t\tcolumn: col\n\t\t},\n\t\tqualifications: qs\n\t};\n}\nfunction toJoinEntry(e) {\n\tconst qs = e.qualifications ?? [];\n\tif (isNil(e.linkers) || e.linkers.length === 0) return toLeaf(e.column, qs);\n\treturn {\n\t\t...e.linkers.reduceRight((inner, linker) => ({\n\t\t\tentry: {\n\t\t\t\ttype: \"linkerJoin\",\n\t\t\t\tlinker: { column: linker },\n\t\t\t\tsecondary: [inner]\n\t\t\t},\n\t\t\tqualifications: []\n\t\t}), toLeaf(e.column, [])),\n\t\tqualifications: qs\n\t};\n}\n//#endregion\nexport { createPTableDefV3 };\n\n//# sourceMappingURL=createPTableDefV3.js.map","import { createPTableDefV3 } from \"./createPTableDefV3.js\";\nimport { getColumnIdAndSpec } from \"@milaboratories/pl-model-common\";\nimport { isFunction } from \"es-toolkit\";\n//#region src/components/PlDataTable/createPlDataTable/createPTableDefV2.ts\nfunction createPTableDefV2(params) {\n\tlet coreColumns = params.columns;\n\tconst secondaryColumns = [];\n\tif (isFunction(params.coreColumnPredicate)) {\n\t\tcoreColumns = [];\n\t\tfor (const c of params.columns) if (params.coreColumnPredicate(getColumnIdAndSpec(c))) coreColumns.push(c);\n\t\telse secondaryColumns.push(c);\n\t}\n\tsecondaryColumns.push(...params.labelColumns);\n\treturn createPTableDefV3({\n\t\tprimary: coreColumns.map((column) => ({ column })),\n\t\tsecondary: secondaryColumns.map((column) => ({ entries: [{ column }] })),\n\t\tprimaryJoinType: params.coreJoinType,\n\t\tfilters: params.filters,\n\t\tsorting: params.sorting\n\t});\n}\n//#endregion\nexport { createPTableDefV2 };\n\n//# sourceMappingURL=createPTableDefV2.js.map","import { deriveLabels } from \"../../../render/util/label.js\";\nimport { allPColumnsReady } from \"../../../render/util/pcolumn_data.js\";\nimport { PColumnCollection } from \"../../../render/util/column_collection.js\";\nimport \"../../../render/index.js\";\nimport { collectFilterSpecColumns } from \"../../../filters/traverse.js\";\nimport { upgradePlDataTableStateV2 } from \"../state-migration.js\";\nimport { getMatchingLabelColumns } from \"../labels.js\";\nimport { createPTableDefV2 } from \"./createPTableDefV2.js\";\nimport { isColumnOptional } from \"./utils.js\";\nimport { Annotation, PColumnName, canonicalizeJson, getAxisId, getColumnIdAndSpec, isLinkerColumn, parseJson, uniqueBy } from \"@milaboratories/pl-model-common\";\nimport { identity } from \"es-toolkit\";\nimport { isEmpty } from \"es-toolkit/compat\";\n//#region src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts\n/**\n* Create p-table spec and handle given ui table state\n*\n* @deprecated This version of createPlDataTable is deprecated and will be removed in future. Please migrate to v3 by switching to the new options format and providing necessary information for column discovery and display configuration. See createPlDataTableOptionsV3 for details.\n* @param ctx context\n* @param columns column list\n* @param tableState table ui state\n* @returns PlAgDataTableV2 table source\n*/\nfunction createPlDataTableV2(ctx, columns, tableState, options) {\n\tif (columns.length === 0) return void 0;\n\tconst tableStateNormalized = upgradePlDataTableStateV2(tableState);\n\tconst allLabelColumns = getAllLabelColumns(ctx.resultPool) ?? [];\n\tlet fullLabelColumns = getMatchingLabelColumns(columns, allLabelColumns);\n\tfullLabelColumns = deriveLabels(fullLabelColumns, identity, { includeNativeLabel: true }).map((v) => {\n\t\treturn {\n\t\t\t...v.value,\n\t\t\tspec: {\n\t\t\t\t...v.value.spec,\n\t\t\t\tannotations: {\n\t\t\t\t\t...v.value.spec.annotations,\n\t\t\t\t\t[Annotation.Label]: v.label\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n\tconst fullColumns = [...columns, ...fullLabelColumns];\n\tconst fullColumnsIds = [...uniqueBy(fullColumns.flatMap((c) => c.spec.axesSpec.map((a) => getAxisId(a))), (a) => canonicalizeJson(a)).map((a) => ({\n\t\ttype: \"axis\",\n\t\tid: a\n\t})), ...fullColumns.map((c) => ({\n\t\ttype: \"column\",\n\t\tid: c.id\n\t}))];\n\tconst fullColumnsIdsSet = new Set(fullColumnsIds.map((c) => canonicalizeJson(c)));\n\tconst isValidColumnId = (id) => fullColumnsIdsSet.has(id);\n\tconst filters = tableStateNormalized.pTableParams.filters;\n\tconst defaultFilters = options?.filters ?? void 0;\n\tconst firstInvalidFilterColumn = (filters !== null ? collectFilterSpecColumns(filters) : []).find((col) => !isValidColumnId(col));\n\tif (firstInvalidFilterColumn) throw new Error(`Invalid filter column ${firstInvalidFilterColumn}: column reference does not match the table columns`);\n\tconst firstInvalidDefaultFilterColumn = (defaultFilters !== void 0 ? collectFilterSpecColumns(defaultFilters) : []).find((col) => !isValidColumnId(col));\n\tif (firstInvalidDefaultFilterColumn) throw new Error(`Invalid default filter column ${firstInvalidDefaultFilterColumn}: column reference does not match the table columns`);\n\tconst userSorting = tableStateNormalized.pTableParams.sorting;\n\tconst sorting = (isEmpty(userSorting) ? options?.sorting : userSorting) ?? [];\n\tconst firstInvalidSortingColumn = sorting.find((s) => !isValidColumnId(canonicalizeJson(s.column)));\n\tif (firstInvalidSortingColumn) throw new Error(`Invalid sorting column ${JSON.stringify(firstInvalidSortingColumn.column)}: column reference does not match the table columns`);\n\tconst coreJoinType = options?.coreJoinType ?? \"full\";\n\tconst fullDef = createPTableDefV2({\n\t\tcolumns,\n\t\tlabelColumns: fullLabelColumns,\n\t\tcoreJoinType,\n\t\tfilters,\n\t\tsorting,\n\t\tcoreColumnPredicate: options?.coreColumnPredicate\n\t});\n\tconst fullHandle = ctx.createPTableV2(fullDef);\n\tconst pframeHandle = ctx.createPFrame(fullColumns);\n\tif (!fullHandle || !pframeHandle) return void 0;\n\tconst hiddenColumns = new Set((() => {\n\t\tif (coreJoinType === \"inner\") return [];\n\t\tconst hiddenColIds = tableStateNormalized.pTableParams.hiddenColIds;\n\t\tif (hiddenColIds !== null) return hiddenColIds.filter((s) => s.type === \"column\").map((s) => s.id);\n\t\treturn columns.filter((c) => isColumnOptional(c.spec)).map((c) => c.id);\n\t})());\n\tcolumns.filter((c) => isLinkerColumn(c.spec)).forEach((c) => hiddenColumns.delete(c.id));\n\tconst coreColumnPredicate = options?.coreColumnPredicate;\n\tif (coreColumnPredicate) columns.flatMap((c) => coreColumnPredicate(getColumnIdAndSpec(c)) ? [c.id] : []).forEach((c) => hiddenColumns.delete(c));\n\tsorting.map((s) => s.column).filter((c) => c.type === \"column\").forEach((c) => hiddenColumns.delete(c.id));\n\tif (filters) collectFilterSpecColumns(filters).flatMap((c) => {\n\t\tconst obj = parseJson(c);\n\t\treturn obj.type === \"column\" ? [obj.id] : [];\n\t}).forEach((c) => hiddenColumns.delete(c));\n\tconst visibleColumns = columns.filter((c) => !hiddenColumns.has(c.id));\n\tconst visibleLabelColumns = getMatchingLabelColumns(visibleColumns.map(getColumnIdAndSpec), allLabelColumns);\n\tif (!allPColumnsReady([...visibleColumns, ...visibleLabelColumns])) return void 0;\n\tconst visibleDef = createPTableDefV2({\n\t\tcolumns: visibleColumns,\n\t\tlabelColumns: visibleLabelColumns,\n\t\tcoreJoinType,\n\t\tfilters,\n\t\tsorting,\n\t\tcoreColumnPredicate\n\t});\n\tconst visibleHandle = ctx.createPTableV2(visibleDef);\n\tif (!visibleHandle) return void 0;\n\treturn {\n\t\tsourceId: tableStateNormalized.pTableParams.sourceId,\n\t\tfullTableHandle: fullHandle,\n\t\tfullPframeHandle: pframeHandle,\n\t\tvisibleTableHandle: visibleHandle,\n\t\tdefaultFilters\n\t};\n}\nfunction getAllLabelColumns(resultPool) {\n\treturn new PColumnCollection().addAxisLabelProvider(resultPool).addColumnProvider(resultPool).getColumns({\n\t\tname: PColumnName.Label,\n\t\taxes: [{}]\n\t}, {\n\t\tdontWaitAllData: true,\n\t\toverrideLabelAnnotation: false\n\t});\n}\n//#endregion\nexport { createPlDataTableV2 };\n\n//# sourceMappingURL=createPlDataTableV2.js.map","exports = module.exports = stringify\nexports.getSerialize = serializer\n\nfunction stringify(obj, replacer, spaces, cycleReplacer) {\n return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces)\n}\n\nfunction serializer(replacer, cycleReplacer) {\n var stack = [], keys = []\n\n if (cycleReplacer == null) cycleReplacer = function(key, value) {\n if (stack[0] === value) return \"[Circular ~]\"\n return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\"\n }\n\n return function(key, value) {\n if (stack.length > 0) {\n var thisPos = stack.indexOf(this)\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this)\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)\n if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value)\n }\n else stack.push(value)\n\n return replacer == null ? value : replacer.call(this, key, value)\n }\n}\n","import stringify from \"json-stringify-safe\";\nimport { z } from \"zod\";\n//#region src/error_like_shape.ts\nconst BasePlErrorLike = z.object({\n\ttype: z.literal(\"PlError\"),\n\tname: z.string(),\n\tmessage: z.string(),\n\tfullMessage: z.string().optional(),\n\tstack: z.string().optional()\n});\nconst PlErrorLike = BasePlErrorLike.extend({\n\tcause: z.lazy(() => ErrorLike).optional(),\n\terrors: z.lazy(() => ErrorLike.array()).optional()\n});\nconst StandardErrorLike = z.object({\n\ttype: z.literal(\"StandardError\"),\n\tname: z.string(),\n\tmessage: z.string(),\n\tstack: z.string().optional()\n}).extend({\n\tcause: z.lazy(() => ErrorLike).optional(),\n\terrors: z.lazy(() => ErrorLike.array()).optional()\n});\nconst ErrorLike = z.union([StandardErrorLike, PlErrorLike]);\n/** Converts everything into ErrorLike. */\nfunction ensureErrorLike(error) {\n\tconst result = ErrorShape.safeParse(error);\n\tif (result.success) {\n\t\tconst err = result.data;\n\t\tif (err.name === \"PlQuickJSError\" || err.name === \"PlErrorReport\" || err.name === \"PlInternalError\" || err.name === \"PlTengoError\" || err.name === \"PlRunnerError\" || err.name === \"PlMonetizationError\") return {\n\t\t\ttype: \"PlError\",\n\t\t\tname: err.name,\n\t\t\tmessage: err.message,\n\t\t\tfullMessage: err.fullMessage ?? void 0,\n\t\t\tstack: err.stack ?? void 0,\n\t\t\tcause: err.cause ? ensureErrorLike(err.cause) : void 0,\n\t\t\terrors: err.errors ? err.errors.map(ensureErrorLike) : void 0\n\t\t};\n\t\treturn {\n\t\t\ttype: \"StandardError\",\n\t\t\tname: err.name,\n\t\t\tmessage: err.message,\n\t\t\tstack: err.stack ?? void 0,\n\t\t\tcause: err.cause ? ensureErrorLike(err.cause) : void 0,\n\t\t\terrors: err.errors ? err.errors.map(ensureErrorLike) : void 0\n\t\t};\n\t}\n\treturn {\n\t\ttype: \"StandardError\",\n\t\tname: \"Error\",\n\t\tmessage: stringify(error)\n\t};\n}\n/** Tries to parse strings into ErrorLike. It's needed for keeping old blocks compatible with new UI. */\nfunction parseErrorLikeSafe(err) {\n\ttry {\n\t\treturn ErrorLike.safeParse(JSON.parse(err));\n\t} catch (e) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: /* @__PURE__ */ new Error(`parseErrorLikeSafe: could not parse JSON: ${err}, ${String(e)}`)\n\t\t};\n\t}\n}\nconst ErrorShape = z.object({\n\tname: z.string(),\n\tmessage: z.string(),\n\tfullMessage: z.string().optional(),\n\tstack: z.string().optional()\n}).extend({\n\tcause: z.lazy(() => ErrorShape).optional(),\n\terrors: z.lazy(() => ErrorShape.array()).optional()\n});\n//#endregion\nexport { BasePlErrorLike, ErrorLike, PlErrorLike, StandardErrorLike, ensureErrorLike, parseErrorLikeSafe };\n\n//# sourceMappingURL=error_like_shape.js.map","import type { GraphMakerState } from \"@milaboratories/graph-maker\";\nimport { createPlDataTableStateV2, DataModelBuilder } from \"@platforma-sdk/model\";\nimport type { BlockData, BlockDataV1, BlockDataV2 } from \"./types\";\n\nconst DEFAULT_SCATTER_STATE: GraphMakerState = {\n title: \"Property Relationships\",\n template: \"dots\",\n currentTab: null,\n};\n\nconst DEFAULT_HISTOGRAM_STATE: GraphMakerState = {\n title: \"Property Distribution\",\n template: \"bins\",\n currentTab: null,\n layersSettings: {\n bins: { fillColor: \"#99e099\" },\n },\n};\n\nexport const migrateV1toV2 = (v1: BlockDataV1): BlockDataV2 => ({\n ...v1,\n graphStateScatter: { ...DEFAULT_SCATTER_STATE },\n graphStateHistogram: { ...DEFAULT_HISTOGRAM_STATE },\n});\n\nexport const migrateV2toV2_1 = (v2: BlockDataV2): BlockData => ({\n ...v2,\n defaultBlockLabel: v2.defaultBlockLabel ?? \"\",\n customBlockLabel: v2.customBlockLabel ?? \"\",\n});\n\nexport const blockDataModel = new DataModelBuilder()\n .from<BlockDataV1>(\"Ver_2026_04_28\")\n // Already-deployed step. Future field additions must go into a new step\n // below — editing this body has no effect on projects already tagged\n // Ver_2026_05_05 (DataModelBuilder skips matching-version migrations).\n .migrate<BlockDataV2>(\"Ver_2026_05_05\", migrateV1toV2)\n // Backfills label fields onto V2-tagged projects. `?? \"\"` preserves any\n // interim-deployed value; missing fields default to \"\". The args\n // projection (resolveTraceLabel in label.ts) requires both fields to be\n // strings, never undefined.\n .migrate<BlockData>(\"Ver_2026_05_18\", migrateV2toV2_1)\n .init(() => ({\n tableState: createPlDataTableStateV2(),\n defaultBlockLabel: \"\",\n customBlockLabel: \"\",\n graphStateScatter: { ...DEFAULT_SCATTER_STATE },\n graphStateHistogram: { ...DEFAULT_HISTOGRAM_STATE },\n }));\n","import type { BlockData } from \"./types\";\n\nconst STATIC_FALLBACK = \"Sequence Properties\";\n\n// Subtitle resolution for the PlBlockPage. Empty string is a valid result\n// (the page renders the title alone).\nexport function resolveSubtitle(data: BlockData): string {\n return data.customBlockLabel || data.defaultBlockLabel;\n}\n\n// Trace-label resolution for the workflow's pl7.app/trace.label. Same chain\n// as resolveSubtitle plus a static block-type last-resort, so automated\n// pipelines that run before the UI populates defaultBlockLabel still emit\n// a non-empty label downstream.\nexport function resolveTraceLabel(data: BlockData): string {\n return data.customBlockLabel || data.defaultBlockLabel || STATIC_FALLBACK;\n}\n","import type { InferOutputsType, PColumnIdAndSpec, PFrameHandle } from \"@platforma-sdk/model\";\nimport {\n Annotation,\n BlockModelV3,\n createPFrameForGraphs,\n createPlDataTableV2,\n} from \"@platforma-sdk/model\";\nimport { blockDataModel } from \"./dataModel\";\nimport { resolveSubtitle, resolveTraceLabel } from \"./label\";\nimport type { BlockArgs, WorkflowInfo } from \"./types\";\n\nexport type * from \"@milaboratories/helpers\";\nexport { blockDataModel } from \"./dataModel\";\nexport type { BlockArgs, BlockData, WorkflowInfo, WorkflowMode, WorkflowReceptor } from \"./types\";\n\nconst inputAnchorSpecs = [\n // Peptide mode — universal naming\n {\n axes: [{ name: \"pl7.app/sampleId\" }, { name: \"pl7.app/variantKey\" }],\n annotations: { \"pl7.app/isAnchor\": \"true\" },\n },\n // Antibody/TCR — legacy MiXCR bulk (cloneId per spec; clonotypeKey per current MiXCR output)\n {\n axes: [{ name: \"pl7.app/sampleId\" }, { name: \"pl7.app/vdj/cloneId\" }],\n annotations: { \"pl7.app/isAnchor\": \"true\" },\n },\n {\n axes: [{ name: \"pl7.app/sampleId\" }, { name: \"pl7.app/vdj/clonotypeKey\" }],\n annotations: { \"pl7.app/isAnchor\": \"true\" },\n },\n // Antibody/TCR — legacy MiXCR single-cell\n {\n axes: [{ name: \"pl7.app/sampleId\" }, { name: \"pl7.app/vdj/scClonotypeKey\" }],\n annotations: { \"pl7.app/isAnchor\": \"true\" },\n },\n];\n\nexport const platforma = BlockModelV3.create(blockDataModel)\n .args<BlockArgs>((data) => {\n if (data.inputAnchor === undefined) {\n throw new Error(\"Select an input dataset\");\n }\n return {\n inputAnchor: data.inputAnchor,\n traceLabel: resolveTraceLabel(data),\n };\n })\n .output(\"inputOptions\", (ctx) => ctx.resultPool.getOptions(inputAnchorSpecs))\n .output(\"inputSpec\", (ctx) =>\n ctx.data.inputAnchor ? ctx.resultPool.getPColumnSpecByRef(ctx.data.inputAnchor) : undefined,\n )\n .output(\"info\", (ctx) => ctx.outputs?.resolve(\"info\")?.getDataAsJson<WorkflowInfo>())\n .output(\"isRunning\", (ctx) => ctx.outputs?.getIsReadyOrError() === false)\n .output(\"processingLog\", (ctx) => ctx.outputs?.resolve(\"processingLog\")?.getLogHandle())\n .outputWithStatus(\"propertiesTable\", (ctx) => {\n if (ctx.data.inputAnchor === undefined) return undefined;\n const ownCols = ctx.outputs?.resolve(\"propertiesPf\")?.getPColumns();\n if (ownCols === undefined) return undefined;\n // Temporary downgrade to V2 with a fixed, propertiesPf-only column list.\n // V3 default-visibility rules and the column picker are not yet stable for\n // the multi-source layout this block needs (upstream sequence column +\n // own scalar properties). Once V3 supports it natively, rewire across\n // blocks. aaFraction is 2-axis (variantKey × aminoAcid) — already filtered\n // from the graph pFrame; filtered here too so it doesn't widen the table.\n const tableCols = ownCols.filter((c) => c.spec.axesSpec.length === 1);\n return createPlDataTableV2(ctx, tableCols, ctx.data.tableState);\n })\n .outputWithStatus(\"propertiesPfHandle\", (ctx): PFrameHandle | undefined => {\n const allPCols = ctx.outputs?.resolve(\"propertiesPf\")?.getPColumns();\n if (allPCols === undefined) return undefined;\n // Drop the AA fraction column from the pframe entirely. Two-axis\n // (variantKey × aminoAcid), at 50k peptides ~1M cells — enough to trip\n // graph-maker's cell-count guard on its own. The picker already excludes\n // it via `isNumericScalar` (axesSpec.length === 1), so the data was\n // pure overhead.\n const pCols = allPCols.filter((c) => c.spec.name !== \"pl7.app/aaFraction\");\n // Use `ctx.createPFrame` instead of `createPFrameForGraphs`. The latter\n // walks the result pool and pulls in this block's `exports.properties`\n // — a `trace.inject`-stamped re-emission of every column already in\n // `propertiesPf`, published for Lead Selection — so axis dropdowns\n // show e.g. \"Net Charge (pH7) / IG\" twice. Same workaround chosen by\n // cdr3-spectratype, batch-correction, cell-type-annotation, and\n // dimensionality-reduction.\n //\n // Pull single-axis metadata anchored to the input dataset's two axes\n // (idx 0 = sample, idx 1 = entity key) so sample groups / patient IDs /\n // peptide abundance and similar cols remain available for grouping and\n // filtering. Drop self-trace to keep our own exports out.\n const inputAnchor = ctx.data.inputAnchor;\n const upstreamMeta =\n inputAnchor !== undefined\n ? (\n ctx.resultPool.getAnchoredPColumns({ main: inputAnchor }, [\n { axes: [{ anchor: \"main\", idx: 0 }] },\n { axes: [{ anchor: \"main\", idx: 1 }] },\n ]) ?? []\n ).filter(\n (c) =>\n !c.spec.annotations?.[Annotation.Trace]?.includes(\n \"milaboratories.sequence-properties\",\n ),\n )\n : [];\n return createPFrameForGraphs(ctx, [...pCols, ...upstreamMeta]);\n })\n .output(\"propertiesPfCols\", (ctx): PColumnIdAndSpec[] | undefined => {\n const pCols = ctx.outputs?.resolve(\"propertiesPf\")?.getPColumns();\n if (pCols === undefined) return undefined;\n return pCols.map((c) => ({ columnId: c.id, spec: c.spec }) satisfies PColumnIdAndSpec);\n })\n .title(() => \"Sequence Properties\")\n .subtitle((ctx) => resolveSubtitle(ctx.data))\n .sections(() => [\n { type: \"link\", href: \"/\", label: \"Main\" },\n { type: \"link\", href: \"/scatter\", label: \"Property Relationships\" },\n { type: \"link\", href: \"/histogram\", label: \"Property Distribution\" },\n ])\n .done();\n\nexport type BlockOutputs = InferOutputsType<typeof platforma>;\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88],"mappings":"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"}
|