alizarin 0.2.1-alpha.83

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.
Files changed (57) hide show
  1. package/LICENSE.txt +661 -0
  2. package/README.md +160 -0
  3. package/dist/_wasm.d.ts +23 -0
  4. package/dist/alizarin.full.js +799 -0
  5. package/dist/alizarin.full.js.map +1 -0
  6. package/dist/alizarin.inline-full.js +4 -0
  7. package/dist/alizarin.inline.js +4 -0
  8. package/dist/alizarin.js +47 -0
  9. package/dist/alizarin.js.map +1 -0
  10. package/dist/alizarin_bg.wasm +0 -0
  11. package/dist/backend.d.ts +74 -0
  12. package/dist/cards.d.ts +21 -0
  13. package/dist/client.d.ts +86 -0
  14. package/dist/collectionMutator.d.ts +155 -0
  15. package/dist/csvModelLoader.d.ts +59 -0
  16. package/dist/full.d.ts +3 -0
  17. package/dist/graphManager.d.ts +259 -0
  18. package/dist/interfaces.d.ts +145 -0
  19. package/dist/main-r-MmUiQf.js +12355 -0
  20. package/dist/main-r-MmUiQf.js.map +1 -0
  21. package/dist/main.d.ts +28 -0
  22. package/dist/nodeConfig.d.ts +61 -0
  23. package/dist/pseudos.d.ts +118 -0
  24. package/dist/rdm.d.ts +68 -0
  25. package/dist/renderers.d.ts +65 -0
  26. package/dist/semantic.d.ts +35 -0
  27. package/dist/static-types.d.ts +172 -0
  28. package/dist/staticStore.d.ts +60 -0
  29. package/dist/tracing/index.d.ts +172 -0
  30. package/dist/utils.d.ts +43 -0
  31. package/dist/validation/index.d.ts +734 -0
  32. package/dist/validation/index.js +1194 -0
  33. package/dist/validation/index.js.map +1 -0
  34. package/dist/validation/validators/graphLoading.d.ts +69 -0
  35. package/dist/validation/validators/index.d.ts +1 -0
  36. package/dist/viewModels/BooleanViewModel.d.ts +17 -0
  37. package/dist/viewModels/ConceptListViewModel.d.ts +15 -0
  38. package/dist/viewModels/ConceptValueViewModel.d.ts +28 -0
  39. package/dist/viewModels/DateViewModel.d.ts +16 -0
  40. package/dist/viewModels/DomainValueListViewModel.d.ts +15 -0
  41. package/dist/viewModels/DomainValueViewModel.d.ts +17 -0
  42. package/dist/viewModels/EDTFViewModel.d.ts +13 -0
  43. package/dist/viewModels/GeoJSONViewModel.d.ts +26 -0
  44. package/dist/viewModels/NodeViewModel.d.ts +15 -0
  45. package/dist/viewModels/NonLocalizedStringViewModel.d.ts +13 -0
  46. package/dist/viewModels/NumberViewModel.d.ts +14 -0
  47. package/dist/viewModels/ResourceInstanceListViewModel.d.ts +25 -0
  48. package/dist/viewModels/ResourceInstanceViewModel.d.ts +62 -0
  49. package/dist/viewModels/StringViewModel.d.ts +17 -0
  50. package/dist/viewModels/UrlViewModel.d.ts +22 -0
  51. package/dist/viewModels/cacheEntries.d.ts +73 -0
  52. package/dist/viewModels/getViewModel.d.ts +4 -0
  53. package/dist/viewModels/index.d.ts +20 -0
  54. package/dist/viewModels/types.d.ts +15 -0
  55. package/dist/viewModels.d.ts +1 -0
  56. package/dist/wasmTiming.d.ts +11 -0
  57. package/package.json +93 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main-r-MmUiQf.js","sources":["../node_modules/uuid/dist/esm-browser/regex.js","../node_modules/uuid/dist/esm-browser/validate.js","../node_modules/uuid/dist/esm-browser/parse.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/v35.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/v4.js","../node_modules/uuid/dist/esm-browser/sha1.js","../node_modules/uuid/dist/esm-browser/v5.js","../js/utils.ts","../pkg/alizarin.js","../js/tracing/index.ts","../js/backend.ts","../js/_wasm.ts","../js/static-types.ts","../js/client.ts","../js/rdm.ts","../js/staticStore.ts","../js/cards.ts","../js/viewModels/types.ts","../js/viewModels/cacheEntries.ts","../js/wasmTiming.ts","../js/nodeConfig.ts","../js/viewModels/ResourceInstanceViewModel.ts","../js/viewModels/ResourceInstanceListViewModel.ts","../js/viewModels/StringViewModel.ts","../js/viewModels/DateViewModel.ts","../js/viewModels/GeoJSONViewModel.ts","../js/viewModels/EDTFViewModel.ts","../js/viewModels/NonLocalizedStringViewModel.ts","../js/viewModels/NumberViewModel.ts","../js/viewModels/BooleanViewModel.ts","../js/viewModels/UrlViewModel.ts","../js/viewModels/DomainValueViewModel.ts","../js/viewModels/DomainValueListViewModel.ts","../js/viewModels/ConceptValueViewModel.ts","../js/viewModels/ConceptListViewModel.ts","../js/viewModels/NodeViewModel.ts","../js/semantic.ts","../js/viewModels/getViewModel.ts","../js/pseudos.ts","../js/graphManager.ts","../js/collectionMutator.ts","../js/csvModelLoader.ts","../js/renderers.ts","../js/main.ts"],"sourcesContent":["export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;\n","import REGEX from './regex.js';\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\nexport default validate;\n","import validate from './validate.js';\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n let v;\n return Uint8Array.of((v = parseInt(uuid.slice(0, 8), 16)) >>> 24, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff, (v = parseInt(uuid.slice(9, 13), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(14, 18), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(19, 23), 16)) >>> 8, v & 0xff, ((v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000) & 0xff, (v / 0x100000000) & 0xff, (v >>> 24) & 0xff, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff);\n}\nexport default parse;\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","import parse from './parse.js';\nimport { unsafeStringify } from './stringify.js';\nexport function stringToBytes(str) {\n str = unescape(encodeURIComponent(str));\n const bytes = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i) {\n bytes[i] = str.charCodeAt(i);\n }\n return bytes;\n}\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function v35(version, hash, value, namespace, buf, offset) {\n const valueBytes = typeof value === 'string' ? stringToBytes(value) : value;\n const namespaceBytes = typeof namespace === 'string' ? parse(namespace) : namespace;\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n if (namespace?.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n }\n let bytes = new Uint8Array(16 + valueBytes.length);\n bytes.set(namespaceBytes);\n bytes.set(valueBytes, namespaceBytes.length);\n bytes = hash(bytes);\n bytes[6] = (bytes[6] & 0x0f) | version;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n return buf;\n }\n return unsafeStringify(bytes);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","function f(s, x, y, z) {\n switch (s) {\n case 0:\n return (x & y) ^ (~x & z);\n case 1:\n return x ^ y ^ z;\n case 2:\n return (x & y) ^ (x & z) ^ (y & z);\n case 3:\n return x ^ y ^ z;\n }\n}\nfunction ROTL(x, n) {\n return (x << n) | (x >>> (32 - n));\n}\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n const newBytes = new Uint8Array(bytes.length + 1);\n newBytes.set(bytes);\n newBytes[bytes.length] = 0x80;\n bytes = newBytes;\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n for (let j = 0; j < 16; ++j) {\n arr[j] =\n (bytes[i * 64 + j * 4] << 24) |\n (bytes[i * 64 + j * 4 + 1] << 16) |\n (bytes[i * 64 + j * 4 + 2] << 8) |\n bytes[i * 64 + j * 4 + 3];\n }\n M[i] = arr;\n }\n M[N - 1][14] = ((bytes.length - 1) * 8) / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = ((bytes.length - 1) * 8) & 0xffffffff;\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = (ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t]) >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n H[0] = (H[0] + a) >>> 0;\n H[1] = (H[1] + b) >>> 0;\n H[2] = (H[2] + c) >>> 0;\n H[3] = (H[3] + d) >>> 0;\n H[4] = (H[4] + e) >>> 0;\n }\n return Uint8Array.of(H[0] >> 24, H[0] >> 16, H[0] >> 8, H[0], H[1] >> 24, H[1] >> 16, H[1] >> 8, H[1], H[2] >> 24, H[2] >> 16, H[2] >> 8, H[2], H[3] >> 24, H[3] >> 16, H[3] >> 8, H[3], H[4] >> 24, H[4] >> 16, H[4] >> 8, H[4]);\n}\nexport default sha1;\n","import sha1 from './sha1.js';\nimport v35, { DNS, URL } from './v35.js';\nexport { DNS, URL } from './v35.js';\nfunction v5(value, namespace, buf, offset) {\n return v35(0x50, sha1, value, namespace, buf, offset);\n}\nv5.DNS = DNS;\nv5.URL = URL;\nexport default v5;\n","import { v5 as uuidv5 } from 'uuid';\nimport { IStringKeyedObject, IViewModel, IInstanceWrapper } from \"./interfaces\";\nimport type { StaticGraph, StaticNode, StaticResourceDescriptors, IStaticDescriptorConfig } from \"./static-types\";\n\n// TODO: make this customizable.\nconst DEFAULT_LANGUAGE = \"en\";\nconst SLUG_LENGTH = 20;\nconst UUID_NAMESPACE = '1a79f1c8-9505-4bea-a18e-28a053f725ca'; // Generated for this purpose.\nconst UUID_NAMESPACE_COMPRESSION = uuidv5('compression', '1a79f1c8-9505-4bea-a18e-28a053f725ca');\n\nlet currentLanguage: string | undefined;\n\nfunction getCurrentLanguage(): string {\n return currentLanguage || ((typeof navigator != 'undefined' && navigator.language) || DEFAULT_LANGUAGE).slice(0, 2);\n}\n\nfunction setCurrentLanguage(lang: string) {\n currentLanguage = lang;\n}\n\n/**\n * Slugify a string safely for use in file paths\n * Removes/replaces dangerous characters and limits length\n */\nfunction slugify(name: string, maxLength: number = 100, useUnderscoreForHyphen: boolean = false): string {\n if (!name || typeof name !== 'string') {\n name = `${name}`;\n }\n\n // Remove or replace dangerous characters\n let slug = name\n .toLowerCase()\n .trim()\n // Replace spaces and underscores with hyphens\n .replace(/[\\s_]+/g, '-')\n // Remove any character that isn't alphanumeric or hyphen\n .replace(/[^a-z0-9-]/g, '')\n // Remove consecutive hyphens\n .replace(/-+/g, '-')\n // Remove leading/trailing hyphens\n .replace(/^-|-$/g, '')\n // Limit length\n .slice(0, maxLength);\n if (useUnderscoreForHyphen) {\n slug = slug.replace('-', '_');\n }\n\n if (name && !slug) {\n throw new Error(`Slugification resulted in empty string for input: ${name}`);\n }\n\n slug = slug.substr(0, SLUG_LENGTH);\n return slug;\n}\n\nclass AttrPromise<T> extends Promise<T> implements IStringKeyedObject {\n [key: string | symbol]: any;\n [Symbol.toPrimitive]: undefined;\n constructor(\n executor: (\n resolve: (value: T | PromiseLike<T>) => void,\n reject: (reason: any) => void,\n ) => void,\n ) {\n super(executor);\n const proxy = new Proxy(this, {\n set: (object: AttrPromise<T>, keyObj, value) => {\n if (keyObj.toString() == 'id') {\n object.id = value;\n }\n object.then((val: any) => {\n val[keyObj] = value;\n return val;\n });\n return true;\n },\n get: (object: AttrPromise<T>, keyObj: string | symbol) => {\n if (keyObj == 'then') {\n return object.then.bind(this);\n }\n if (keyObj == 'id') {\n return object.id;\n }\n if (keyObj in object) {\n const value: any = object[keyObj];\n if (typeof value === \"function\") {\n return value.bind(object);\n }\n return value;\n }\n const key = keyObj.toString();\n if (key in object) {\n const value: any = object[key];\n if (typeof value === \"function\") {\n return value.bind(object);\n }\n return value;\n }\n if (object instanceof Promise) {\n return object.then((val: any) => {\n return val ? val[keyObj] : val;\n });\n }\n return object[keyObj];\n },\n });\n return proxy;\n }\n}\n\nconst KEY_COMPRESSION_LENGTH = 1000;\nfunction generateUuidv5(group: [type: string, id?: string], key: string | string[]) {\n if (Array.isArray(key)) {\n let shortKey = '';\n let keyTracker = '';\n key.forEach(k => {\n if (keyTracker.length + k.length + 1 > KEY_COMPRESSION_LENGTH) {\n shortKey = uuidv5(shortKey + '>' + keyTracker, UUID_NAMESPACE_COMPRESSION);\n keyTracker = k;\n } else {\n keyTracker += ';' + k;\n }\n });\n }\n return uuidv5(`${group[0]}:${group[1]}:${key}`, UUID_NAMESPACE);\n}\n\nconst DESCRIPTOR_FUNCTION_ID = \"60000000-0000-0000-0000-000000000001\";\n\n/**\n * Builds resource descriptors using string templates and node values.\n *\n * Descriptors are metadata fields (like \"name\", \"description\", \"map_popup\") that are\n * dynamically generated by substituting node values into string templates.\n *\n * Template format: \"The <Node Name> in <Another Node>\" where placeholders like\n * <Node Name> are replaced with actual values from the resource's tiles.\n *\n * @param graph - The graph definition containing descriptor configuration\n * @param nodes - Map of node IDs to node objects for value lookup\n * @param wrapper - IInstanceWrapper for retrieving pseudo values from Rust\n * @returns Promise resolving to StaticResourceDescriptors with populated fields\n *\n * @example\n * // Given a descriptor config with template: \"The <Title> from <Year>\"\n * // And a resource with Title=\"Rome\" and Year=\"100 AD\"\n * // Returns descriptors with populated field: \"The Rome from 100 AD\"\n */\nasync function buildResourceDescriptors(\n graph: StaticGraph,\n nodes: Map<string, StaticNode>,\n wrapper: IInstanceWrapper<any>\n): Promise<StaticResourceDescriptors> {\n // Import StaticResourceDescriptors here to avoid circular dependency\n const { StaticResourceDescriptors } = await import(\"./static-types\");\n\n const descriptors = StaticResourceDescriptors.empty();\n let descriptorConfig: IStaticDescriptorConfig | undefined = undefined;\n\n // Find descriptor configuration in graph functions\n if (graph.functions_x_graphs) {\n const descriptorNode = graph.functions_x_graphs.find(\n node => node.function_id === DESCRIPTOR_FUNCTION_ID\n );\n if (descriptorNode) {\n descriptorConfig = descriptorNode.config;\n }\n }\n\n if (!descriptorConfig) {\n return descriptors;\n }\n\n // Process each descriptor type (name, description, map_popup, etc.)\n for (const [descriptor, config] of Object.entries(descriptorConfig.descriptor_types)) {\n const semanticNode = nodes.get(config.nodegroup_id);\n let description = config.string_template;\n\n if (!description) {\n continue;\n }\n\n // Extract placeholder names from template (e.g., <Node Name>)\n let requestedNodes = description.match(/<[A-Za-z _-]*>/g) || [];\n\n // Find nodes matching the placeholders\n const relevantNodes = [...nodes.values()]\n .filter(node =>\n node.nodegroup_id === config.nodegroup_id &&\n [...requestedNodes].includes(`<${node.name}>`)\n )\n .map(node => [node.name, node.alias || '']);\n\n let relevantValues: [string, string | undefined][] = [];\n\n // First try to find all values on one tile for consistency\n if (semanticNode) {\n const retrieved = await wrapper.retrievePseudo(semanticNode.alias || '');\n let semanticValue = retrieved ? await retrieved[0] : null;\n\n // Handle PseudoList (which is an array)\n if (Array.isArray(semanticValue)) {\n semanticValue = await semanticValue[0];\n // Extract value from the list element if it has getValue\n if (semanticValue && typeof semanticValue.getValue === 'function') {\n semanticValue = await semanticValue.getValue();\n }\n } else if (semanticValue && semanticValue.inner) {\n // Handle nested value (e.g., StringViewModel)\n relevantValues.push([semanticNode.name || '', await semanticValue.getValue()]);\n semanticValue = await semanticValue.inner.getValue();\n } else {\n semanticValue = await semanticValue.getValue();\n }\n\n // Collect values from semantic node\n if (semanticValue) {\n relevantValues = [\n ...relevantValues,\n ...await Promise.all(\n relevantNodes\n .filter(([_, alias]) => semanticValue.__has(alias))\n .map(([name, alias]) =>\n semanticValue[alias].then((value: IViewModel) => [name, value])\n )\n )\n ];\n }\n }\n\n // Replace placeholders with values\n if (relevantValues) {\n description = relevantValues.reduce(\n (desc, [name, value]) =>\n value ? desc.replace(`<${name}>`, value) : desc,\n description\n );\n }\n\n // Check if there are still unreplaced placeholders\n requestedNodes = description.match(/<[A-Za-z _-]*>/g) || [];\n\n // If so, try retrieving values individually\n if (requestedNodes.length) {\n relevantValues = await Promise.all(\n relevantNodes.map(async ([name, alias]) => {\n const values = await wrapper.retrievePseudo(alias);\n if (!values || values.length === 0) {\n return [name, undefined] as [string, string | undefined];\n }\n // Extract the actual string value from the view model\n const viewModel = values[0];\n const value = viewModel && typeof viewModel.getValue === 'function'\n ? await viewModel.getValue()\n : viewModel;\n return [name, typeof value === 'string' ? value : undefined] as [string, string | undefined];\n })\n );\n\n if (relevantValues) {\n description = relevantValues.reduce(\n (desc, [name, value]) =>\n value ? desc.replace(`<${name}>`, value) : desc,\n description\n );\n }\n }\n\n // Assign to descriptor\n descriptors[descriptor] = description;\n }\n\n return descriptors;\n}\n\n/**\n * Serialize a Map<string, any> to a simple object for passing to WASM\n * Converts values to Option<bool>: Some(true)=truthy, Some(false)=false, None=undefined\n * This avoids expensive JsValue iteration and type checking in Rust\n */\nfunction serializeValuesMap(map: Map<string, any>): Record<string, boolean | null> {\n const result: Record<string, boolean | null> = {};\n for (const [key, value] of map.entries()) {\n if (value === undefined) {\n result[key] = null; // None in Rust\n } else if (value === false) {\n result[key] = false; // Some(false) in Rust\n } else {\n result[key] = true; // Some(true) in Rust (any truthy value)\n }\n }\n return result;\n}\n\nexport { slugify, AttrPromise, getCurrentLanguage, generateUuidv5, setCurrentLanguage, buildResourceDescriptors, DESCRIPTOR_FUNCTION_ID, serializeValuesMap };\n","/* @ts-self-types=\"./alizarin.d.ts\" */\n\nexport class ExampleEdgeWrapper {\n static __wrap(ptr) {\n const obj = Object.create(ExampleEdgeWrapper.prototype);\n obj.__wbg_ptr = ptr;\n ExampleEdgeWrapperFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ExampleEdgeWrapperFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_exampleedgewrapper_free(ptr, 0);\n }\n /**\n * @returns {ExampleEdgeWrapper}\n */\n copy() {\n const ret = wasm.exampleedgewrapper_copy(this.__wbg_ptr);\n return ExampleEdgeWrapper.__wrap(ret);\n }\n /**\n * @returns {any}\n */\n get domainnode_id() {\n const ret = wasm.exampleedgewrapper_get_domainnode_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get edgeid() {\n const ret = wasm.exampleedgewrapper_get_edgeid(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get name() {\n const ret = wasm.exampleedgewrapper_get_name(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get ontologyproperty() {\n const ret = wasm.exampleedgewrapper_get_ontologyproperty(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get rangenode_id() {\n const ret = wasm.exampleedgewrapper_get_rangenode_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {any} json_data\n */\n constructor(json_data) {\n const ret = wasm.exampleedgewrapper_new(json_data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n ExampleEdgeWrapperFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.exampleedgewrapper_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) ExampleEdgeWrapper.prototype[Symbol.dispose] = ExampleEdgeWrapper.prototype.free;\n\nexport class ExampleNodegroupWrapper {\n static __wrap(ptr) {\n const obj = Object.create(ExampleNodegroupWrapper.prototype);\n obj.__wbg_ptr = ptr;\n ExampleNodegroupWrapperFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ExampleNodegroupWrapperFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_examplenodegroupwrapper_free(ptr, 0);\n }\n /**\n * @returns {ExampleNodegroupWrapper}\n */\n copy() {\n const ret = wasm.examplenodegroupwrapper_copy(this.__wbg_ptr);\n return ExampleNodegroupWrapper.__wrap(ret);\n }\n /**\n * @returns {any}\n */\n get cardinality() {\n const ret = wasm.examplenodegroupwrapper_get_cardinality(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get nodegroupid() {\n const ret = wasm.examplenodegroupwrapper_get_nodegroupid(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get parentnodegroup_id() {\n const ret = wasm.examplenodegroupwrapper_get_parentnodegroup_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {any} json_data\n */\n constructor(json_data) {\n const ret = wasm.examplenodegroupwrapper_new(json_data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n ExampleNodegroupWrapperFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {any} value\n */\n set cardinality(value) {\n wasm.examplenodegroupwrapper_set_cardinality(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set parentnodegroup_id(value) {\n wasm.examplenodegroupwrapper_set_parentnodegroup_id(this.__wbg_ptr, value);\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.examplenodegroupwrapper_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) ExampleNodegroupWrapper.prototype[Symbol.dispose] = ExampleNodegroupWrapper.prototype.free;\n\nexport class PseudoList {\n static __wrap(ptr) {\n const obj = Object.create(PseudoList.prototype);\n obj.__wbg_ptr = ptr;\n PseudoListFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n PseudoListFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_pseudolist_free(ptr, 0);\n }\n /**\n * Get all values from all groups as a flat array\n * PORT: js/pseudos.ts:350 - map over array elements\n * @returns {PseudoValue[]}\n */\n getAllValues() {\n const ret = wasm.pseudolist_getAllValues(this.__wbg_ptr);\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * Get a specific value\n * PORT: js/pseudos.ts:336 - Array element access\n * @param {number} value_index\n * @returns {PseudoValue | undefined}\n */\n getValue(value_index) {\n const ret = wasm.pseudolist_getValue(this.__wbg_ptr, value_index);\n return ret === 0 ? undefined : PseudoValue.__wrap(ret);\n }\n /**\n * Check if iterable\n * PORT: js/pseudos.ts:345-347 - isIterable() method\n * @returns {boolean}\n */\n isIterable() {\n const ret = wasm.pseudolist_isIterable(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * PORT: js/pseudos.ts - loaded state check\n * @returns {boolean}\n */\n get isLoaded() {\n const ret = wasm.pseudolist_isLoaded(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Whether this list represents a cardinality-1 node (should unwrap to single value)\n * @returns {boolean}\n */\n get isSingle() {\n const ret = wasm.pseudolist_isSingle(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * PORT: js/pseudos.ts:337,398 - node property\n * @returns {string}\n */\n get nodeAlias() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.pseudolist_nodeAlias(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * PORT: js/pseudos.ts:336 - total values across all groups (Array.length equivalent)\n * @returns {number}\n */\n get totalValues() {\n const ret = wasm.pseudolist_totalValues(this.__wbg_ptr);\n return ret >>> 0;\n }\n}\nif (Symbol.dispose) PseudoList.prototype[Symbol.dispose] = PseudoList.prototype.free;\n\nexport class PseudoNode {\n static __wrap(ptr) {\n const obj = Object.create(PseudoNode.prototype);\n obj.__wbg_ptr = ptr;\n PseudoNodeFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n PseudoNodeFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_pseudonode_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n getNodePlaceholder() {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.pseudonode_getNodePlaceholder(this.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @returns {any}\n */\n get alias() {\n const ret = wasm.pseudonode_get_alias(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get childNodeAliases() {\n const ret = wasm.pseudonode_get_child_node_aliases(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get childNodes() {\n const ret = wasm.pseudonode_get_child_nodes(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get config() {\n const ret = wasm.pseudonode_get_config(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string}\n */\n get datatype() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.pseudonode_get_datatype(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {any}\n */\n get description() {\n const ret = wasm.pseudonode_get_description(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {boolean}\n */\n get exportable() {\n const ret = wasm.pseudonode_get_exportable(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {any}\n */\n get fieldname() {\n const ret = wasm.pseudonode_get_fieldname(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string}\n */\n get graphId() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.pseudonode_get_graph_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {boolean}\n */\n get hascustomalias() {\n const ret = wasm.pseudonode_get_hascustomalias(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {PseudoNode}\n */\n get inner() {\n const ret = wasm.pseudonode_get_inner(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return PseudoNode.__wrap(ret[0]);\n }\n /**\n * @returns {boolean}\n */\n get isCollector() {\n const ret = wasm.pseudonode_get_is_collector(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n get isInner() {\n const ret = wasm.pseudonode_get_is_inner(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n get isOuter() {\n const ret = wasm.pseudonode_get_is_outer(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n get isrequired() {\n const ret = wasm.pseudonode_get_isrequired(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n get issearchable() {\n const ret = wasm.pseudonode_get_issearchable(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n get istopnode() {\n const ret = wasm.pseudonode_get_istopnode(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {string}\n */\n get name() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.pseudonode_get_name(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {any}\n */\n get node() {\n const ret = wasm.pseudonode_get_node(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get nodegroup_id() {\n const ret = wasm.pseudonode_get_nodegroup_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string}\n */\n get nodeid() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.pseudonode_get_nodeid(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {any}\n */\n get ontologyclass() {\n const ret = wasm.pseudonode_get_ontologyclass(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get parentNode() {\n const ret = wasm.pseudonode_get_parent_node(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get parentproperty() {\n const ret = wasm.pseudonode_get_parentproperty(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {number}\n */\n get size() {\n const ret = wasm.pseudonode_get_size(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number | undefined}\n */\n get sortorder() {\n const ret = wasm.pseudonode_get_sortorder(this.__wbg_ptr);\n return ret === Number.MAX_SAFE_INTEGER ? undefined : ret;\n }\n /**\n * @returns {any}\n */\n get sourcebranchpublicationId() {\n const ret = wasm.pseudonode_get_sourcebranchpublication_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {boolean}\n */\n isIterable() {\n const ret = wasm.pseudonode_isIterable(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {any} value\n */\n set parentNode(value) {\n wasm.pseudonode_set_parent_node(this.__wbg_ptr, value);\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.pseudonode_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) PseudoNode.prototype[Symbol.dispose] = PseudoNode.prototype.free;\n\nexport class PseudoValue {\n static __wrap(ptr) {\n const obj = Object.create(PseudoValue.prototype);\n obj.__wbg_ptr = ptr;\n PseudoValueFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n PseudoValueFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_pseudovalue_free(ptr, 0);\n }\n /**\n * PORT: js/pseudos.ts:59 - accessed getter\n * @returns {boolean}\n */\n get accessed() {\n const ret = wasm.pseudovalue_accessed(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Get the node's alias\n * PORT: PseudoNode.alias\n * @returns {any}\n */\n get alias() {\n const ret = wasm.pseudovalue_alias(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get child node aliases as an array\n * PORT: PseudoNode.childNodeAliases\n * @returns {Array<any>}\n */\n get childNodeAliases() {\n const ret = wasm.pseudovalue_childNodeAliases(this.__wbg_ptr);\n return ret;\n }\n /**\n * PORT: js/pseudos.ts - child node IDs count (for lazy loading)\n * @returns {number}\n */\n get childNodeIdsCount() {\n const ret = wasm.pseudovalue_childNodeIdsCount(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * PORT: js/pseudos.ts:260-265 - clear method\n */\n clear() {\n wasm.pseudovalue_clear(this.__wbg_ptr);\n }\n /**\n * Get the node's config as a JS object\n * @returns {any}\n */\n get config() {\n const ret = wasm.pseudovalue_config(this.__wbg_ptr);\n return ret;\n }\n /**\n * PORT: js/pseudos.ts:64-66 - datatype getter (respects isInner override)\n * @returns {string}\n */\n get datatype() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.pseudovalue_datatype(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * Get the node's description\n * @returns {any}\n */\n get description() {\n const ret = wasm.pseudovalue_description(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the node's exportable flag\n * @returns {boolean}\n */\n get exportable() {\n const ret = wasm.pseudovalue_exportable(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Get the node's fieldname\n * @returns {any}\n */\n get fieldname() {\n const ret = wasm.pseudovalue_fieldname(this.__wbg_ptr);\n return ret;\n }\n /**\n * PORT: js/pseudos.ts - get child node ID by index\n * @param {number} index\n * @returns {string | undefined}\n */\n getChildNodeId(index) {\n const ret = wasm.pseudovalue_getChildNodeId(this.__wbg_ptr, index);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * PORT: js/pseudos.ts:358-360 - getValue method\n * Returns the value (or triggers updateValue if needed)\n * @param {Function} get_view_model\n * @returns {any}\n */\n getValue(get_view_model) {\n const ret = wasm.pseudovalue_getValue(this.__wbg_ptr, get_view_model);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Get the node's graph_id\n * @returns {string}\n */\n get graphId() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.pseudovalue_graphId(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * PORT: js/pseudos.ts - hasTile check\n * @returns {boolean}\n */\n get hasTile() {\n const ret = wasm.pseudovalue_hasTile(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Check if this pseudo has tile data set\n * @returns {boolean}\n */\n hasTileData() {\n const ret = wasm.pseudovalue_hasTileData(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Get the node's hascustomalias flag\n * @returns {boolean}\n */\n get hascustomalias() {\n const ret = wasm.pseudovalue_hascustomalias(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * PORT: js/pseudos.ts:60 - independent getter\n * @returns {boolean}\n */\n get independent() {\n const ret = wasm.pseudovalue_independent(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Get inner value (for outer/inner pattern)\n * PORT: js/pseudos.ts:61-62, 76-78 - inner property\n * @returns {PseudoValue | undefined}\n */\n get inner() {\n const ret = wasm.pseudovalue_inner(this.__wbg_ptr);\n return ret === 0 ? undefined : PseudoValue.__wrap(ret);\n }\n /**\n * PORT: js/pseudos.ts - is_collector check\n * @returns {boolean}\n */\n get isCollector() {\n const ret = wasm.pseudovalue_isCollector(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * PORT: js/pseudos.ts:73-75 - isInner getter\n * @returns {boolean}\n */\n get isInner() {\n const ret = wasm.pseudovalue_isInner(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Check if this node's datatype is iterable\n * PORT: PseudoNode.isIterable()\n * @returns {boolean}\n */\n isIterable() {\n const ret = wasm.pseudovalue_isIterable(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * PORT: js/pseudos.ts:72-74 - isOuter getter\n * @returns {boolean}\n */\n get isOuter() {\n const ret = wasm.pseudovalue_isOuter(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Get the node's isrequired flag\n * @returns {boolean}\n */\n get isrequired() {\n const ret = wasm.pseudovalue_isrequired(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Get the node's issearchable flag\n * @returns {boolean}\n */\n get issearchable() {\n const ret = wasm.pseudovalue_issearchable(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Get the node's istopnode flag\n * @returns {boolean}\n */\n get istopnode() {\n const ret = wasm.pseudovalue_istopnode(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Get the node's name\n * @returns {string}\n */\n get name() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.pseudovalue_name(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * PORT: js/pseudos.ts node getter - return node as WASM StaticNode wrapper\n * @returns {StaticNode}\n */\n get node() {\n const ret = wasm.pseudovalue_node(this.__wbg_ptr);\n return StaticNode.__wrap(ret);\n }\n /**\n * PORT: js/pseudos.ts - nodeAlias property\n * @returns {string | undefined}\n */\n get nodeAlias() {\n const ret = wasm.pseudovalue_nodeAlias(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * PORT: js/pseudos.ts:52 - node.nodeid\n * @returns {string}\n */\n get nodeId() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.pseudovalue_nodeId(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * Get the node's nodegroup_id\n * @returns {any}\n */\n get nodegroupId() {\n const ret = wasm.pseudovalue_nodegroupId(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the node's ontologyclass. Returns a plain string for single-class\n * nodes (legacy Arches shape), an array for multi-class nodes, or `null`.\n * @returns {any}\n */\n get ontologyclass() {\n const ret = wasm.pseudovalue_ontologyclass(this.__wbg_ptr);\n return ret;\n }\n /**\n * PORT: js/pseudos.ts:55 - parent getter\n * @returns {any}\n */\n get parent() {\n const ret = wasm.pseudovalue_parent(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the node's parentproperty\n * @returns {any}\n */\n get parentproperty() {\n const ret = wasm.pseudovalue_parentproperty(this.__wbg_ptr);\n return ret;\n }\n /**\n * Set the tile data for this pseudo value.\n * ViewModels should call this when their value changes so that\n * Rust can serialize tiles without calling back to JS.\n *\n * The value should be the result of __asTileData() - the serializable\n * form ready for the tile's data map.\n * @param {any} value\n */\n setTileData(value) {\n wasm.pseudovalue_setTileData(this.__wbg_ptr, value);\n }\n /**\n * PORT: js/pseudos.ts:55 - parent setter\n * @param {any} parent\n */\n set parent(parent) {\n wasm.pseudovalue_set_parent(this.__wbg_ptr, parent);\n }\n /**\n * Set the tile (for cases where tile changes)\n * @param {any} tile\n */\n set tile(tile) {\n wasm.pseudovalue_set_tile(this.__wbg_ptr, tile);\n }\n /**\n * Get number of child nodes\n * PORT: PseudoNode.size\n * @returns {number}\n */\n get size() {\n const ret = wasm.pseudovalue_size(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * Get the node's sortorder\n * @returns {any}\n */\n get sortorder() {\n const ret = wasm.pseudovalue_sortorder(this.__wbg_ptr);\n return ret;\n }\n /**\n * PORT: js/pseudos.ts:53 - tile property\n * @returns {any}\n */\n get tile() {\n const ret = wasm.pseudovalue_tile(this.__wbg_ptr);\n return ret;\n }\n /**\n * PORT: js/pseudos.ts:54 - value property (tile data)\n * @returns {any}\n */\n get tileData() {\n const ret = wasm.pseudovalue_tileData(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the current tile data (for debugging/inspection)\n * @returns {any}\n */\n get tileDataJson() {\n const ret = wasm.pseudovalue_tileDataJson(this.__wbg_ptr);\n return ret;\n }\n /**\n * PORT: js/pseudos.ts - tile.tileid access\n * @returns {string | undefined}\n */\n get tileId() {\n const ret = wasm.pseudovalue_tileId(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * Serialize this pseudo value's own tile_data in display mode.\n *\n * Resolves UUIDs to labels, extracts display strings, applies domain lookups\n * for this node only (no child traversal).\n *\n * @param rdmCache - RDM cache for concept label resolution\n * @param nodeConfigManager - Node config for domain value / boolean label lookups\n * @param language - Language code (defaults to \"en\")\n * @param {WasmRdmCache} rdm_cache\n * @param {WasmNodeConfigManager} node_config_manager\n * @param {string | null | undefined} language\n * @param {StaticResourceRegistry} resource_registry\n * @returns {any}\n */\n toDisplayValue(rdm_cache, node_config_manager, language, resource_registry) {\n _assertClass(rdm_cache, WasmRdmCache);\n _assertClass(node_config_manager, WasmNodeConfigManager);\n var ptr0 = isLikeNone(language) ? 0 : passStringToWasm0(language, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n _assertClass(resource_registry, StaticResourceRegistry);\n const ret = wasm.pseudovalue_toDisplayValue(this.__wbg_ptr, rdm_cache.__wbg_ptr, node_config_manager.__wbg_ptr, ptr0, len0, resource_registry.__wbg_ptr);\n return ret;\n }\n /**\n * Get all commonly-used properties in a single boundary crossing.\n * This avoids the overhead of multiple individual property getters.\n * Returns a plain JS object with all properties cached on the JS side.\n * @returns {any}\n */\n toSnapshot() {\n const ret = wasm.pseudovalue_toSnapshot(this.__wbg_ptr);\n return ret;\n }\n /**\n * PORT: js/pseudos.ts:267-356 - updateValue method\n * This is the core method that loads the ViewModel via callback\n *\n * get_view_model callback signature:\n * (pseudo: PseudoValue, tile: StaticTile|null, node: StaticNode, data: any, isInner: bool) -> Promise<ViewModel>\n * @param {Function} get_view_model\n * @returns {any}\n */\n updateValue(get_view_model) {\n const ret = wasm.pseudovalue_updateValue(this.__wbg_ptr, get_view_model);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * PORT: js/pseudos.ts:54 - value getter (the loaded ViewModel)\n * @returns {any}\n */\n get value() {\n const ret = wasm.pseudovalue_value(this.__wbg_ptr);\n return ret;\n }\n /**\n * PORT: js/pseudos.ts:57 - valueLoaded getter\n * @returns {any}\n */\n get valueLoaded() {\n const ret = wasm.pseudovalue_valueLoaded(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) PseudoValue.prototype[Symbol.dispose] = PseudoValue.prototype.free;\n\nexport class StaticCard {\n static __wrap(ptr) {\n const obj = Object.create(StaticCard.prototype);\n obj.__wbg_ptr = ptr;\n StaticCardFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticCardFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_staticcard_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n get active() {\n const ret = wasm.staticcard_get_active(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get cardid() {\n const ret = wasm.staticcard_get_cardid(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get component_id() {\n const ret = wasm.staticcard_get_component_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get config() {\n const ret = wasm.staticcard_get_config(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get constraints() {\n const ret = wasm.staticcard_get_constraints(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get cssclass() {\n const ret = wasm.staticcard_get_cssclass(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {StaticTranslatableString | undefined}\n */\n get description() {\n const ret = wasm.staticcard_get_description(this.__wbg_ptr);\n return ret === 0 ? undefined : StaticTranslatableString.__wrap(ret);\n }\n /**\n * @returns {any}\n */\n get graph_id() {\n const ret = wasm.staticcard_get_graph_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get helpenabled() {\n const ret = wasm.staticcard_get_helpenabled(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {StaticTranslatableString}\n */\n get helptext() {\n const ret = wasm.staticcard_get_helptext(this.__wbg_ptr);\n return StaticTranslatableString.__wrap(ret);\n }\n /**\n * @returns {StaticTranslatableString}\n */\n get helptitle() {\n const ret = wasm.staticcard_get_helptitle(this.__wbg_ptr);\n return StaticTranslatableString.__wrap(ret);\n }\n /**\n * @returns {StaticTranslatableString}\n */\n get instructions() {\n const ret = wasm.staticcard_get_instructions(this.__wbg_ptr);\n return StaticTranslatableString.__wrap(ret);\n }\n /**\n * @returns {any}\n */\n get is_editable() {\n const ret = wasm.staticcard_get_is_editable(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {StaticTranslatableString}\n */\n get name() {\n const ret = wasm.staticcard_get_name(this.__wbg_ptr);\n return StaticTranslatableString.__wrap(ret);\n }\n /**\n * @returns {any}\n */\n get nodegroup_id() {\n const ret = wasm.staticcard_get_nodegroup_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get sortorder() {\n const ret = wasm.staticcard_get_sortorder(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get visible() {\n const ret = wasm.staticcard_get_visible(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {any} json_data\n */\n constructor(json_data) {\n const ret = wasm.staticcard_new(json_data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n StaticCardFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {any} value\n */\n set active(value) {\n wasm.staticcard_set_active(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set cardid(value) {\n wasm.staticcard_set_cardid(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set component_id(value) {\n wasm.staticcard_set_component_id(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set config(value) {\n wasm.staticcard_set_config(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set constraints(value) {\n wasm.staticcard_set_constraints(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set cssclass(value) {\n wasm.staticcard_set_cssclass(this.__wbg_ptr, value);\n }\n /**\n * @param {StaticTranslatableString | null} [value]\n */\n set description(value) {\n let ptr0 = 0;\n if (!isLikeNone(value)) {\n _assertClass(value, StaticTranslatableString);\n ptr0 = value.__destroy_into_raw();\n }\n wasm.staticcard_set_description(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {any} value\n */\n set graph_id(value) {\n wasm.staticcard_set_graph_id(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set helpenabled(value) {\n wasm.staticcard_set_helpenabled(this.__wbg_ptr, value);\n }\n /**\n * @param {StaticTranslatableString} value\n */\n set helptext(value) {\n _assertClass(value, StaticTranslatableString);\n var ptr0 = value.__destroy_into_raw();\n wasm.staticcard_set_helptext(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {StaticTranslatableString} value\n */\n set helptitle(value) {\n _assertClass(value, StaticTranslatableString);\n var ptr0 = value.__destroy_into_raw();\n wasm.staticcard_set_helptitle(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {StaticTranslatableString} value\n */\n set instructions(value) {\n _assertClass(value, StaticTranslatableString);\n var ptr0 = value.__destroy_into_raw();\n wasm.staticcard_set_instructions(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {any} value\n */\n set is_editable(value) {\n wasm.staticcard_set_is_editable(this.__wbg_ptr, value);\n }\n /**\n * @param {StaticTranslatableString} value\n */\n set name(value) {\n _assertClass(value, StaticTranslatableString);\n var ptr0 = value.__destroy_into_raw();\n wasm.staticcard_set_name(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {any} value\n */\n set nodegroup_id(value) {\n wasm.staticcard_set_nodegroup_id(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set sortorder(value) {\n wasm.staticcard_set_sortorder(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set visible(value) {\n wasm.staticcard_set_visible(this.__wbg_ptr, value);\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.staticcard_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) StaticCard.prototype[Symbol.dispose] = StaticCard.prototype.free;\n\nexport class StaticCardsXNodesXWidgets {\n static __wrap(ptr) {\n const obj = Object.create(StaticCardsXNodesXWidgets.prototype);\n obj.__wbg_ptr = ptr;\n StaticCardsXNodesXWidgetsFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticCardsXNodesXWidgetsFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_staticcardsxnodesxwidgets_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n get card_id() {\n const ret = wasm.staticcardsxnodesxwidgets_get_card_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get config() {\n const ret = wasm.staticcardsxnodesxwidgets_get_config(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get id() {\n const ret = wasm.staticcardsxnodesxwidgets_get_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {StaticTranslatableString}\n */\n get label() {\n const ret = wasm.staticcardsxnodesxwidgets_get_label(this.__wbg_ptr);\n return StaticTranslatableString.__wrap(ret);\n }\n /**\n * @returns {any}\n */\n get node_id() {\n const ret = wasm.staticcardsxnodesxwidgets_get_node_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get sortorder() {\n const ret = wasm.staticcardsxnodesxwidgets_get_sortorder(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get visible() {\n const ret = wasm.staticcardsxnodesxwidgets_get_visible(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get widget_id() {\n const ret = wasm.staticcardsxnodesxwidgets_get_widget_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {any} json_data\n */\n constructor(json_data) {\n const ret = wasm.staticcardsxnodesxwidgets_new(json_data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n StaticCardsXNodesXWidgetsFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {any} value\n */\n set card_id(value) {\n wasm.staticcardsxnodesxwidgets_set_card_id(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set config(value) {\n wasm.staticcardsxnodesxwidgets_set_config(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set id(value) {\n wasm.staticcardsxnodesxwidgets_set_id(this.__wbg_ptr, value);\n }\n /**\n * @param {StaticTranslatableString} value\n */\n set label(value) {\n _assertClass(value, StaticTranslatableString);\n var ptr0 = value.__destroy_into_raw();\n wasm.staticcardsxnodesxwidgets_set_label(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {any} value\n */\n set node_id(value) {\n wasm.staticcardsxnodesxwidgets_set_node_id(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set sortorder(value) {\n wasm.staticcardsxnodesxwidgets_set_sortorder(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set visible(value) {\n wasm.staticcardsxnodesxwidgets_set_visible(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set widget_id(value) {\n wasm.staticcardsxnodesxwidgets_set_widget_id(this.__wbg_ptr, value);\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.staticcardsxnodesxwidgets_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) StaticCardsXNodesXWidgets.prototype[Symbol.dispose] = StaticCardsXNodesXWidgets.prototype.free;\n\nexport class StaticConstraint {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticConstraintFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_staticconstraint_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n get card_id() {\n const ret = wasm.staticconstraint_get_card_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get constraintid() {\n const ret = wasm.staticconstraint_get_constraintid(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get nodes() {\n const ret = wasm.staticconstraint_get_nodes(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get uniquetoallinstances() {\n const ret = wasm.staticconstraint_get_uniquetoallinstances(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {any} json_data\n */\n constructor(json_data) {\n const ret = wasm.staticconstraint_new(json_data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n StaticConstraintFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {any} value\n */\n set card_id(value) {\n wasm.staticconstraint_set_card_id(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set constraintid(value) {\n wasm.staticconstraint_set_constraintid(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set nodes(value) {\n wasm.staticconstraint_set_nodes(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set uniquetoallinstances(value) {\n wasm.staticconstraint_set_uniquetoallinstances(this.__wbg_ptr, value);\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.staticconstraint_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) StaticConstraint.prototype[Symbol.dispose] = StaticConstraint.prototype.free;\n\nexport class StaticEdge {\n static __wrap(ptr) {\n const obj = Object.create(StaticEdge.prototype);\n obj.__wbg_ptr = ptr;\n StaticEdgeFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticEdgeFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_staticedge_free(ptr, 0);\n }\n /**\n * @returns {StaticEdge}\n */\n copy() {\n const ret = wasm.staticedge_copy(this.__wbg_ptr);\n return StaticEdge.__wrap(ret);\n }\n /**\n * @returns {string | undefined}\n */\n get description() {\n const ret = wasm.staticedge_get_description(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {string}\n */\n get domainnode_id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.staticedge_get_domainnode_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get edgeid() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.staticedge_get_edgeid(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get graph_id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.staticedge_get_graph_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string | undefined}\n */\n get name() {\n const ret = wasm.staticedge_get_name(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {string | undefined}\n */\n get ontologyproperty() {\n const ret = wasm.staticedge_get_ontologyproperty(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {string}\n */\n get rangenode_id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.staticedge_get_rangenode_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {any} json_data\n */\n constructor(json_data) {\n const ret = wasm.staticedge_new(json_data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n StaticEdgeFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.staticedge_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) StaticEdge.prototype[Symbol.dispose] = StaticEdge.prototype.free;\n\nexport class StaticFunctionsXGraphs {\n static __wrap(ptr) {\n const obj = Object.create(StaticFunctionsXGraphs.prototype);\n obj.__wbg_ptr = ptr;\n StaticFunctionsXGraphsFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticFunctionsXGraphsFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_staticfunctionsxgraphs_free(ptr, 0);\n }\n /**\n * @returns {StaticFunctionsXGraphs}\n */\n copy() {\n const ret = wasm.staticfunctionsxgraphs_copy(this.__wbg_ptr);\n return StaticFunctionsXGraphs.__wrap(ret);\n }\n /**\n * @returns {any}\n */\n get config() {\n const ret = wasm.staticfunctionsxgraphs_get_config(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get function_id() {\n const ret = wasm.staticfunctionsxgraphs_get_function_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get graph_id() {\n const ret = wasm.staticfunctionsxgraphs_get_graph_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get id() {\n const ret = wasm.staticfunctionsxgraphs_get_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {any} json_data\n */\n constructor(json_data) {\n const ret = wasm.staticfunctionsxgraphs_new(json_data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n StaticFunctionsXGraphsFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {any} value\n */\n set config(value) {\n wasm.staticfunctionsxgraphs_set_config(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set function_id(value) {\n wasm.staticfunctionsxgraphs_set_function_id(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set graph_id(value) {\n wasm.staticfunctionsxgraphs_set_graph_id(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set id(value) {\n wasm.staticfunctionsxgraphs_set_id(this.__wbg_ptr, value);\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.staticfunctionsxgraphs_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) StaticFunctionsXGraphs.prototype[Symbol.dispose] = StaticFunctionsXGraphs.prototype.free;\n\nexport class StaticGraph {\n static __wrap(ptr) {\n const obj = Object.create(StaticGraph.prototype);\n obj.__wbg_ptr = ptr;\n StaticGraphFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticGraphFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_staticgraph_free(ptr, 0);\n }\n /**\n * @returns {StaticGraph}\n */\n copy() {\n const ret = wasm.staticgraph_copy(this.__wbg_ptr);\n return StaticGraph.__wrap(ret);\n }\n /**\n * Parse JSON string with {graph: [StaticGraph]} structure\n * Returns the first graph from the array, or error if none found\n * @param {string} json_str\n * @returns {StaticGraph}\n */\n static fromJsonString(json_str) {\n const ptr0 = passStringToWasm0(json_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticgraph_fromJsonString(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return StaticGraph.__wrap(ret[0]);\n }\n /**\n * @param {string | null} [alias]\n * @returns {any}\n */\n getNodeByAlias(alias) {\n var ptr0 = isLikeNone(alias) ? 0 : passStringToWasm0(alias, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticgraph_getNodeByAlias(this.__wbg_ptr, ptr0, len0);\n return ret;\n }\n /**\n * @param {string | null} [id]\n * @returns {any}\n */\n getNodeById(id) {\n var ptr0 = isLikeNone(id) ? 0 : passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticgraph_getNodeById(this.__wbg_ptr, ptr0, len0);\n return ret;\n }\n /**\n * Get a simplified schema view of the graph showing node aliases and structure.\n *\n * Returns a nested object representing the tree with:\n * - Keys are node aliases (or nodeid if no alias)\n * - Values contain 'datatype', 'nodeid', optionally 'required', and 'children'\n *\n * Useful for understanding what keys are available in tree output.\n *\n * @example\n * ```typescript\n * const schema = graph.getSchema();\n * console.log(JSON.stringify(schema, null, 2));\n * // {\n * // \"name\": {\n * // \"datatype\": \"semantic\",\n * // \"children\": {\n * // \"forenames\": { ... }\n * // }\n * // }\n * // }\n * ```\n * @returns {any}\n */\n getSchema() {\n const ret = wasm.staticgraph_getSchema(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {string | undefined}\n */\n get author() {\n const ret = wasm.staticgraph_get_author(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {any}\n */\n get cards() {\n const ret = wasm.staticgraph_get_cards(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get cards_x_nodes_x_widgets() {\n const ret = wasm.staticgraph_get_cards_x_nodes_x_widgets(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get color() {\n const ret = wasm.staticgraph_get_color(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get config() {\n const ret = wasm.staticgraph_get_config(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get deploymentdate() {\n const ret = wasm.staticgraph_get_deploymentdate(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get deploymentfile() {\n const ret = wasm.staticgraph_get_deploymentfile(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {StaticTranslatableString}\n */\n get description() {\n const ret = wasm.staticgraph_get_description(this.__wbg_ptr);\n return StaticTranslatableString.__wrap(ret);\n }\n /**\n * @returns {Array<any>}\n */\n get edges() {\n const ret = wasm.staticgraph_get_edges(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string}\n */\n get graphid() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.staticgraph_get_graphid(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string | undefined}\n */\n get iconclass() {\n const ret = wasm.staticgraph_get_iconclass(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {any}\n */\n get is_editable() {\n const ret = wasm.staticgraph_get_is_editable(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {boolean | undefined}\n */\n get isresource() {\n const ret = wasm.staticgraph_get_isresource(this.__wbg_ptr);\n return ret === 0xFFFFFF ? undefined : ret !== 0;\n }\n /**\n * @returns {any}\n */\n get jsonldcontext() {\n const ret = wasm.staticgraph_get_jsonldcontext(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {StaticTranslatableString}\n */\n get name() {\n const ret = wasm.staticgraph_get_name(this.__wbg_ptr);\n return StaticTranslatableString.__wrap(ret);\n }\n /**\n * @returns {Array<any>}\n */\n get nodegroups() {\n const ret = wasm.staticgraph_get_nodegroups(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {Array<any>}\n */\n get nodes() {\n const ret = wasm.staticgraph_get_nodes(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get ontology_id() {\n const ret = wasm.staticgraph_get_ontology_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get relatable_resource_model_ids() {\n const ret = wasm.staticgraph_get_relatable_resource_model_ids(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get resource_2_resource_constraints() {\n const ret = wasm.staticgraph_get_resource_2_resource_constraints(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {StaticNode}\n */\n get root() {\n const ret = wasm.staticgraph_get_root(this.__wbg_ptr);\n return StaticNode.__wrap(ret);\n }\n /**\n * @returns {any}\n */\n get slug() {\n const ret = wasm.staticgraph_get_slug(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {StaticTranslatableString}\n */\n get subtitle() {\n const ret = wasm.staticgraph_get_subtitle(this.__wbg_ptr);\n return StaticTranslatableString.__wrap(ret);\n }\n /**\n * @returns {string | undefined}\n */\n get template_id() {\n const ret = wasm.staticgraph_get_template_id(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {string | undefined}\n */\n get version() {\n const ret = wasm.staticgraph_get_version(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @param {any} json_data\n */\n constructor(json_data) {\n const ret = wasm.staticgraph_new(json_data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n StaticGraphFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {StaticCard} card\n */\n pushCard(card) {\n _assertClass(card, StaticCard);\n var ptr0 = card.__destroy_into_raw();\n wasm.staticgraph_pushCard(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {StaticCardsXNodesXWidgets} cxnxw\n */\n pushCardXNodeXWidget(cxnxw) {\n _assertClass(cxnxw, StaticCardsXNodesXWidgets);\n var ptr0 = cxnxw.__destroy_into_raw();\n wasm.staticgraph_pushCardXNodeXWidget(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {StaticEdge} edge\n */\n pushEdge(edge) {\n _assertClass(edge, StaticEdge);\n var ptr0 = edge.__destroy_into_raw();\n wasm.staticgraph_pushEdge(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {StaticNode} node\n */\n pushNode(node) {\n _assertClass(node, StaticNode);\n var ptr0 = node.__destroy_into_raw();\n wasm.staticgraph_pushNode(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {StaticNodegroup} nodegroup\n */\n pushNodegroup(nodegroup) {\n _assertClass(nodegroup, StaticNodegroup);\n var ptr0 = nodegroup.__destroy_into_raw();\n wasm.staticgraph_pushNodegroup(this.__wbg_ptr, ptr0);\n }\n /**\n * Set a descriptor template for a given type (e.g. \"slug\", \"name\").\n * The nodegroup_id is inferred from the placeholder node names in the template.\n * @param {string} descriptor_type\n * @param {string} string_template\n */\n setDescriptorTemplate(descriptor_type, string_template) {\n const ptr0 = passStringToWasm0(descriptor_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(string_template, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.staticgraph_setDescriptorTemplate(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {any} value\n */\n set cards(value) {\n wasm.staticgraph_set_cards(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set cards_x_nodes_x_widgets(value) {\n wasm.staticgraph_set_cards_x_nodes_x_widgets(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set edges(value) {\n wasm.staticgraph_set_edges(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set nodegroups(value) {\n wasm.staticgraph_set_nodegroups(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set nodes(value) {\n wasm.staticgraph_set_nodes(this.__wbg_ptr, value);\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.staticgraph_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) StaticGraph.prototype[Symbol.dispose] = StaticGraph.prototype.free;\n\nexport class StaticGraphMeta {\n static __wrap(ptr) {\n const obj = Object.create(StaticGraphMeta.prototype);\n obj.__wbg_ptr = ptr;\n StaticGraphMetaFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticGraphMetaFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_staticgraphmeta_free(ptr, 0);\n }\n /**\n * @returns {string | undefined}\n */\n getAuthor() {\n const ret = wasm.staticgraphmeta_getAuthor(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {number | undefined}\n */\n getCards() {\n const ret = wasm.staticgraphmeta_getCards(this.__wbg_ptr);\n return ret === Number.MAX_SAFE_INTEGER ? undefined : ret;\n }\n /**\n * @returns {number | undefined}\n */\n getCardsXNodesXWidgets() {\n const ret = wasm.staticgraphmeta_getCardsXNodesXWidgets(this.__wbg_ptr);\n return ret === Number.MAX_SAFE_INTEGER ? undefined : ret;\n }\n /**\n * @returns {string | undefined}\n */\n getColor() {\n const ret = wasm.staticgraphmeta_getColor(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {number | undefined}\n */\n getEdges() {\n const ret = wasm.staticgraphmeta_getEdges(this.__wbg_ptr);\n return ret === Number.MAX_SAFE_INTEGER ? undefined : ret;\n }\n /**\n * @returns {string | undefined}\n */\n getIconClass() {\n const ret = wasm.staticgraphmeta_getIconClass(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {boolean | undefined}\n */\n getIsEditable() {\n const ret = wasm.staticgraphmeta_getIsEditable(this.__wbg_ptr);\n return ret === 0xFFFFFF ? undefined : ret !== 0;\n }\n /**\n * @returns {boolean | undefined}\n */\n getIsResource() {\n const ret = wasm.staticgraphmeta_getIsResource(this.__wbg_ptr);\n return ret === 0xFFFFFF ? undefined : ret !== 0;\n }\n /**\n * @returns {any}\n */\n getJsonLdContext() {\n const ret = wasm.staticgraphmeta_getJsonLdContext(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {number | undefined}\n */\n getNodeGroups() {\n const ret = wasm.staticgraphmeta_getNodeGroups(this.__wbg_ptr);\n return ret === Number.MAX_SAFE_INTEGER ? undefined : ret;\n }\n /**\n * @returns {number | undefined}\n */\n getNodes() {\n const ret = wasm.staticgraphmeta_getNodes(this.__wbg_ptr);\n return ret === Number.MAX_SAFE_INTEGER ? undefined : ret;\n }\n /**\n * Get the ontology IDs attached to this graph. Returns a plain string\n * for single-ontology graphs (legacy Arches shape), an array of strings\n * for multi-ontology graphs, or `null`.\n * @returns {any}\n */\n getOntologyId() {\n const ret = wasm.staticgraphmeta_getOntologyId(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n getPublication() {\n const ret = wasm.staticgraphmeta_getPublication(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {any}\n */\n getRelatableResourceModelIds() {\n const ret = wasm.staticgraphmeta_getRelatableResourceModelIds(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {any}\n */\n getResource2ResourceConstraints() {\n const ret = wasm.staticgraphmeta_getResource2ResourceConstraints(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {StaticNode | undefined}\n */\n getRoot() {\n const ret = wasm.staticgraphmeta_getRoot(this.__wbg_ptr);\n return ret === 0 ? undefined : StaticNode.__wrap(ret);\n }\n /**\n * @returns {string | undefined}\n */\n getVersion() {\n const ret = wasm.staticgraphmeta_getVersion(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {string | undefined}\n */\n get author() {\n const ret = wasm.staticgraphmeta_get_author_property(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {StaticTranslatableString | undefined}\n */\n get description() {\n const ret = wasm.staticgraphmeta_get_description(this.__wbg_ptr);\n return ret === 0 ? undefined : StaticTranslatableString.__wrap(ret);\n }\n /**\n * @returns {string}\n */\n get graphid() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.staticgraphmeta_get_graphid(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {boolean | undefined}\n */\n get isresource() {\n const ret = wasm.staticgraphmeta_get_isresource_property(this.__wbg_ptr);\n return ret === 0xFFFFFF ? undefined : ret !== 0;\n }\n /**\n * @returns {StaticTranslatableString | undefined}\n */\n get name() {\n const ret = wasm.staticgraphmeta_get_name(this.__wbg_ptr);\n return ret === 0 ? undefined : StaticTranslatableString.__wrap(ret);\n }\n /**\n * @returns {string | undefined}\n */\n get slug() {\n const ret = wasm.staticgraphmeta_get_slug(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {StaticTranslatableString | undefined}\n */\n get subtitle() {\n const ret = wasm.staticgraphmeta_get_subtitle(this.__wbg_ptr);\n return ret === 0 ? undefined : StaticTranslatableString.__wrap(ret);\n }\n /**\n * @param {any} json_data\n */\n constructor(json_data) {\n const ret = wasm.staticgraphmeta_new(json_data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n StaticGraphMetaFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {string | null} [value]\n */\n setAuthor(value) {\n var ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.staticgraphmeta_setAuthor(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {number | null} [value]\n */\n setCards(value) {\n wasm.staticgraphmeta_setCards(this.__wbg_ptr, isLikeNone(value) ? Number.MAX_SAFE_INTEGER : (value) >>> 0);\n }\n /**\n * @param {number | null} [value]\n */\n setCardsXNodesXWidgets(value) {\n wasm.staticgraphmeta_setCardsXNodesXWidgets(this.__wbg_ptr, isLikeNone(value) ? Number.MAX_SAFE_INTEGER : (value) >>> 0);\n }\n /**\n * @param {string | null} [value]\n */\n setColor(value) {\n var ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.staticgraphmeta_setColor(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {number | null} [value]\n */\n setEdges(value) {\n wasm.staticgraphmeta_setEdges(this.__wbg_ptr, isLikeNone(value) ? Number.MAX_SAFE_INTEGER : (value) >>> 0);\n }\n /**\n * @param {string | null} [value]\n */\n setIconClass(value) {\n var ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.staticgraphmeta_setIconClass(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {boolean | null} [value]\n */\n setIsEditable(value) {\n wasm.staticgraphmeta_setIsEditable(this.__wbg_ptr, isLikeNone(value) ? 0xFFFFFF : value ? 1 : 0);\n }\n /**\n * @param {boolean | null} [value]\n */\n setIsResource(value) {\n wasm.staticgraphmeta_setIsResource(this.__wbg_ptr, isLikeNone(value) ? 0xFFFFFF : value ? 1 : 0);\n }\n /**\n * @param {any} value\n */\n setJsonLdContext(value) {\n const ret = wasm.staticgraphmeta_setJsonLdContext(this.__wbg_ptr, value);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {number | null} [value]\n */\n setNodeGroups(value) {\n wasm.staticgraphmeta_setNodeGroups(this.__wbg_ptr, isLikeNone(value) ? Number.MAX_SAFE_INTEGER : (value) >>> 0);\n }\n /**\n * @param {number | null} [value]\n */\n setNodes(value) {\n wasm.staticgraphmeta_setNodes(this.__wbg_ptr, isLikeNone(value) ? Number.MAX_SAFE_INTEGER : (value) >>> 0);\n }\n /**\n * Set the ontology IDs for this graph. Accepts a JS string, a JS array\n * of strings, `null`, or `undefined`.\n * @param {any} value\n */\n setOntologyId(value) {\n wasm.staticgraphmeta_setOntologyId(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n setPublication(value) {\n const ret = wasm.staticgraphmeta_setPublication(this.__wbg_ptr, value);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {any} value\n */\n setRelatableResourceModelIds(value) {\n const ret = wasm.staticgraphmeta_setRelatableResourceModelIds(this.__wbg_ptr, value);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {any} value\n */\n setResource2ResourceConstraints(value) {\n const ret = wasm.staticgraphmeta_setResource2ResourceConstraints(this.__wbg_ptr, value);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {StaticNode | null} [value]\n */\n setRoot(value) {\n let ptr0 = 0;\n if (!isLikeNone(value)) {\n _assertClass(value, StaticNode);\n ptr0 = value.__destroy_into_raw();\n }\n wasm.staticgraphmeta_setRoot(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {string | null} [value]\n */\n setVersion(value) {\n var ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.staticgraphmeta_setVersion(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {StaticTranslatableString | null} [value]\n */\n set description(value) {\n let ptr0 = 0;\n if (!isLikeNone(value)) {\n _assertClass(value, StaticTranslatableString);\n ptr0 = value.__destroy_into_raw();\n }\n wasm.staticgraphmeta_set_description(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {string} value\n */\n set graphid(value) {\n const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.staticgraphmeta_set_graphid(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {StaticTranslatableString | null} [value]\n */\n set name(value) {\n let ptr0 = 0;\n if (!isLikeNone(value)) {\n _assertClass(value, StaticTranslatableString);\n ptr0 = value.__destroy_into_raw();\n }\n wasm.staticgraphmeta_set_name(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {string | null} [value]\n */\n set slug(value) {\n var ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.staticgraphmeta_set_slug(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {StaticTranslatableString | null} [value]\n */\n set subtitle(value) {\n let ptr0 = 0;\n if (!isLikeNone(value)) {\n _assertClass(value, StaticTranslatableString);\n ptr0 = value.__destroy_into_raw();\n }\n wasm.staticgraphmeta_set_subtitle(this.__wbg_ptr, ptr0);\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.staticgraphmeta_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) StaticGraphMeta.prototype[Symbol.dispose] = StaticGraphMeta.prototype.free;\n\nexport class StaticNode {\n static __wrap(ptr) {\n const obj = Object.create(StaticNode.prototype);\n obj.__wbg_ptr = ptr;\n StaticNodeFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticNodeFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_staticnode_free(ptr, 0);\n }\n /**\n * @param {any} node_a\n * @param {any} node_b\n * @returns {any}\n */\n static compare(node_a, node_b) {\n const ret = wasm.staticnode_compare(node_a, node_b);\n return ret;\n }\n /**\n * @returns {StaticNode}\n */\n copy() {\n const ret = wasm.staticnode_copy(this.__wbg_ptr);\n return StaticNode.__wrap(ret);\n }\n /**\n * @returns {any}\n */\n getConfig() {\n const ret = wasm.staticnode_getConfig(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string | undefined}\n */\n get alias() {\n const ret = wasm.staticnode_get_alias(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {any}\n */\n get config() {\n const ret = wasm.staticnode_get_config_property(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string}\n */\n get datatype() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.staticnode_get_datatype(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {StaticTranslatableString | undefined}\n */\n get description() {\n const ret = wasm.staticnode_get_description(this.__wbg_ptr);\n return ret === 0 ? undefined : StaticTranslatableString.__wrap(ret);\n }\n /**\n * @returns {boolean}\n */\n get exportable() {\n const ret = wasm.staticnode_get_exportable(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {string | undefined}\n */\n get fieldname() {\n const ret = wasm.staticnode_get_fieldname(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {string}\n */\n get graph_id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.staticnode_get_graph_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {boolean}\n */\n get hascustomalias() {\n const ret = wasm.staticnode_get_hascustomalias(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n get is_collector() {\n const ret = wasm.staticnode_get_is_collector(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n get isrequired() {\n const ret = wasm.staticnode_get_isrequired(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n get issearchable() {\n const ret = wasm.staticnode_get_issearchable(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n get istopnode() {\n const ret = wasm.staticnode_get_istopnode(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {string}\n */\n get name() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.staticnode_get_name(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string | undefined}\n */\n get nodegroup_id() {\n const ret = wasm.staticnode_get_nodegroup_id(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {string}\n */\n get nodeid() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.staticnode_get_nodeid(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * Get the ontology class list. Returns a JS string when exactly one\n * class is set (back-compat), a JS array when multiple are declared,\n * or `null` when none.\n * @returns {any}\n */\n get ontologyclass() {\n const ret = wasm.staticnode_get_ontologyclass(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string | undefined}\n */\n get parentproperty() {\n const ret = wasm.staticnode_get_parentproperty(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {number | undefined}\n */\n get sortorder() {\n const ret = wasm.staticnode_get_sortorder(this.__wbg_ptr);\n return ret === Number.MAX_SAFE_INTEGER ? undefined : ret;\n }\n /**\n * @returns {string | undefined}\n */\n get sourcebranchpublication_id() {\n const ret = wasm.staticnode_get_sourcebranchpublication_id(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @param {any} json_data\n */\n constructor(json_data) {\n const ret = wasm.staticnode_new(json_data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n StaticNodeFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {any} value\n */\n setConfig(value) {\n wasm.staticnode_setConfig(this.__wbg_ptr, value);\n }\n /**\n * @param {string | null} [value]\n */\n set alias(value) {\n var ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.staticnode_set_alias(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {any} value\n */\n set config(value) {\n wasm.staticnode_set_config_property(this.__wbg_ptr, value);\n }\n /**\n * @param {string} value\n */\n set datatype(value) {\n const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.staticnode_set_datatype(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {StaticTranslatableString | null} [value]\n */\n set description(value) {\n let ptr0 = 0;\n if (!isLikeNone(value)) {\n _assertClass(value, StaticTranslatableString);\n ptr0 = value.__destroy_into_raw();\n }\n wasm.staticnode_set_description(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {boolean} value\n */\n set exportable(value) {\n wasm.staticnode_set_exportable(this.__wbg_ptr, value);\n }\n /**\n * @param {string | null} [value]\n */\n set fieldname(value) {\n var ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.staticnode_set_fieldname(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {string} value\n */\n set graph_id(value) {\n const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.staticnode_set_graph_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {boolean} value\n */\n set hascustomalias(value) {\n wasm.staticnode_set_hascustomalias(this.__wbg_ptr, value);\n }\n /**\n * @param {boolean} value\n */\n set is_collector(value) {\n wasm.staticnode_set_is_collector(this.__wbg_ptr, value);\n }\n /**\n * @param {boolean} value\n */\n set isrequired(value) {\n wasm.staticnode_set_isrequired(this.__wbg_ptr, value);\n }\n /**\n * @param {boolean} value\n */\n set issearchable(value) {\n wasm.staticnode_set_issearchable(this.__wbg_ptr, value);\n }\n /**\n * @param {boolean} value\n */\n set istopnode(value) {\n wasm.staticnode_set_istopnode(this.__wbg_ptr, value);\n }\n /**\n * @param {string} value\n */\n set name(value) {\n const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.staticnode_set_name(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {string | null} [value]\n */\n set nodegroup_id(value) {\n var ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.staticnode_set_nodegroup_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {string} value\n */\n set nodeid(value) {\n const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.staticnode_set_nodeid(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * Set the ontology class list. Accepts a JS string, a JS array of\n * strings, `null`, or `undefined`. Empty/blank entries are stripped.\n * @param {any} value\n */\n set ontologyclass(value) {\n wasm.staticnode_set_ontologyclass(this.__wbg_ptr, value);\n }\n /**\n * @param {string | null} [value]\n */\n set parentproperty(value) {\n var ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.staticnode_set_parentproperty(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {number | null} [value]\n */\n set sortorder(value) {\n wasm.staticnode_set_sortorder(this.__wbg_ptr, isLikeNone(value) ? Number.MAX_SAFE_INTEGER : (value) >> 0);\n }\n /**\n * @param {string | null} [value]\n */\n set sourcebranchpublication_id(value) {\n var ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.staticnode_set_sourcebranchpublication_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.staticnode_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) StaticNode.prototype[Symbol.dispose] = StaticNode.prototype.free;\n\nexport class StaticNodegroup {\n static __wrap(ptr) {\n const obj = Object.create(StaticNodegroup.prototype);\n obj.__wbg_ptr = ptr;\n StaticNodegroupFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticNodegroupFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_staticnodegroup_free(ptr, 0);\n }\n /**\n * @returns {StaticNodegroup}\n */\n copy() {\n const ret = wasm.staticnodegroup_copy(this.__wbg_ptr);\n return StaticNodegroup.__wrap(ret);\n }\n /**\n * @returns {string | undefined}\n */\n get cardinality() {\n const ret = wasm.staticnodegroup_get_cardinality(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {any}\n */\n get legacygroupid() {\n const ret = wasm.staticnodegroup_get_legacygroupid(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string}\n */\n get nodegroupid() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.staticnodegroup_get_nodegroupid(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {any}\n */\n get parentnodegroup_id() {\n const ret = wasm.staticnodegroup_get_parentnodegroup_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {any} json_data\n */\n constructor(json_data) {\n const ret = wasm.staticnodegroup_new(json_data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n StaticNodegroupFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {string | null} [value]\n */\n set cardinality(value) {\n var ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.staticnodegroup_set_cardinality(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {string} value\n */\n set nodegroupid(value) {\n const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.staticnodegroup_set_nodegroupid(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {string | null} [value]\n */\n set parentnodegroup_id(value) {\n var ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.staticnodegroup_set_parentnodegroup_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.staticnodegroup_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) StaticNodegroup.prototype[Symbol.dispose] = StaticNodegroup.prototype.free;\n\nexport class StaticPublication {\n static __wrap(ptr) {\n const obj = Object.create(StaticPublication.prototype);\n obj.__wbg_ptr = ptr;\n StaticPublicationFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticPublicationFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_staticpublication_free(ptr, 0);\n }\n /**\n * @returns {StaticPublication}\n */\n copy() {\n const ret = wasm.staticpublication_copy(this.__wbg_ptr);\n return StaticPublication.__wrap(ret);\n }\n /**\n * @returns {any}\n */\n get graph_id() {\n const ret = wasm.staticpublication_get_graph_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get notes() {\n const ret = wasm.staticpublication_get_notes(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get publicationid() {\n const ret = wasm.staticpublication_get_publicationid(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get published_time() {\n const ret = wasm.staticpublication_get_published_time(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {any} json_data\n */\n constructor(json_data) {\n const ret = wasm.staticpublication_new(json_data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n StaticPublicationFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {any} value\n */\n set graph_id(value) {\n wasm.staticpublication_set_graph_id(this.__wbg_ptr, value);\n }\n /**\n * @param {string | null} [value]\n */\n set notes(value) {\n var ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.staticpublication_set_notes(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {any} value\n */\n set publicationid(value) {\n wasm.staticpublication_set_publicationid(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set published_time(value) {\n wasm.staticpublication_set_published_time(this.__wbg_ptr, value);\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.staticpublication_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) StaticPublication.prototype[Symbol.dispose] = StaticPublication.prototype.free;\n\nexport class StaticResource {\n static __wrap(ptr) {\n const obj = Object.create(StaticResource.prototype);\n obj.__wbg_ptr = ptr;\n StaticResourceFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n static __unwrap(jsValue) {\n if (!(jsValue instanceof StaticResource)) {\n return 0;\n }\n return jsValue.__destroy_into_raw();\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticResourceFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_staticresource_free(ptr, 0);\n }\n /**\n * @returns {StaticResource}\n */\n copy() {\n const ret = wasm.staticresource_copy(this.__wbg_ptr);\n return StaticResource.__wrap(ret);\n }\n /**\n * Parse multiple resources from a JSON string containing a business_data wrapper\n * This is much faster than parsing each resource individually\n * @param {string} json_str\n * @returns {StaticResource[]}\n */\n static fromBusinessDataJsonString(json_str) {\n const ptr0 = passStringToWasm0(json_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticresource_fromBusinessDataJsonString(ptr0, len0);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v2;\n }\n /**\n * Parse resource from JSON string - faster than constructor with JS object\n * because it avoids multiple string copies across WASM boundary\n * @param {string} json_str\n * @returns {StaticResource}\n */\n static fromJsonString(json_str) {\n const ptr0 = passStringToWasm0(json_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticresource_fromJsonString(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return StaticResource.__wrap(ret[0]);\n }\n /**\n * @param {StaticResourceSummary} summary\n * @returns {StaticResource}\n */\n static fromSummary(summary) {\n _assertClass(summary, StaticResourceSummary);\n const ret = wasm.staticresource_fromSummary(summary.__wbg_ptr);\n return StaticResource.__wrap(ret);\n }\n /**\n * @returns {any}\n */\n get __cache() {\n const ret = wasm.staticresource_get_cache(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get __scopes() {\n const ret = wasm.staticresource_get_scopes(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get metadata() {\n const ret = wasm.staticresource_metadata(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {any} data\n */\n constructor(data) {\n const ret = wasm.staticresource_new(data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n StaticResourceFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @returns {StaticResourceMetadata}\n */\n get resourceinstance() {\n const ret = wasm.staticresource_resourceinstance(this.__wbg_ptr);\n return StaticResourceMetadata.__wrap(ret);\n }\n /**\n * Set a single key in a tile's data map, mutating in place without cloning.\n * Returns true if the tile was found and updated, false otherwise.\n * @param {string} tile_id\n * @param {string} node_id\n * @param {any} value\n * @returns {boolean}\n */\n setTileDataForNode(tile_id, node_id, value) {\n const ptr0 = passStringToWasm0(tile_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(node_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.staticresource_setTileDataForNode(this.__wbg_ptr, ptr0, len0, ptr1, len1, value);\n return ret !== 0;\n }\n /**\n * @param {any} value\n */\n set __cache(value) {\n wasm.staticresource_set_cache(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set metadata(value) {\n wasm.staticresource_set_metadata(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set __scopes(value) {\n wasm.staticresource_set_scopes(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set tiles(value) {\n wasm.staticresource_set_tiles(this.__wbg_ptr, value);\n }\n /**\n * @returns {any}\n */\n get tiles() {\n const ret = wasm.staticresource_tiles(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {boolean}\n */\n get tilesLoaded() {\n const ret = wasm.staticresource_tiles_loaded(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.staticresource_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) StaticResource.prototype[Symbol.dispose] = StaticResource.prototype.free;\n\nexport class StaticResourceDescriptors {\n static __wrap(ptr) {\n const obj = Object.create(StaticResourceDescriptors.prototype);\n obj.__wbg_ptr = ptr;\n StaticResourceDescriptorsFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticResourceDescriptorsFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_staticresourcedescriptors_free(ptr, 0);\n }\n /**\n * @returns {StaticResourceDescriptors}\n */\n copy() {\n const ret = wasm.staticresourcedescriptors_copy(this.__wbg_ptr);\n return StaticResourceDescriptors.__wrap(ret);\n }\n /**\n * @returns {StaticResourceDescriptors}\n */\n static empty() {\n const ret = wasm.staticresourcedescriptors_empty();\n return StaticResourceDescriptors.__wrap(ret);\n }\n /**\n * @returns {any}\n */\n get description() {\n const ret = wasm.staticresourcedescriptors_get_description(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get name() {\n const ret = wasm.staticresourcedescriptors_get_name(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get slug() {\n const ret = wasm.staticresourcedescriptors_get_slug(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {boolean}\n */\n isEmpty() {\n const ret = wasm.staticresourcedescriptors_isEmpty(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {string | undefined}\n */\n get mapPopup() {\n const ret = wasm.staticresourcedescriptors_map_popup(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @param {any} json_data\n */\n constructor(json_data) {\n const ret = wasm.staticresourcedescriptors_new(json_data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n StaticResourceDescriptorsFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {any} value\n */\n set description(value) {\n wasm.staticresourcedescriptors_set_description(this.__wbg_ptr, value);\n }\n /**\n * @param {string | null} [value]\n */\n set mapPopup(value) {\n var ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.staticresourcedescriptors_set_map_popup(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {any} value\n */\n set name(value) {\n wasm.staticresourcedescriptors_set_name(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set slug(value) {\n wasm.staticresourcedescriptors_set_slug(this.__wbg_ptr, value);\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.staticresourcedescriptors_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) StaticResourceDescriptors.prototype[Symbol.dispose] = StaticResourceDescriptors.prototype.free;\n\nexport class StaticResourceMetadata {\n static __wrap(ptr) {\n const obj = Object.create(StaticResourceMetadata.prototype);\n obj.__wbg_ptr = ptr;\n StaticResourceMetadataFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticResourceMetadataFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_staticresourcemetadata_free(ptr, 0);\n }\n /**\n * @returns {StaticResourceMetadata}\n */\n copy() {\n const ret = wasm.staticresourcemetadata_copy(this.__wbg_ptr);\n return StaticResourceMetadata.__wrap(ret);\n }\n /**\n * @returns {StaticResourceDescriptors}\n */\n get descriptors() {\n const ret = wasm.staticresourcemetadata_descriptors(this.__wbg_ptr);\n return StaticResourceDescriptors.__wrap(ret);\n }\n /**\n * @returns {any}\n */\n get createdtime() {\n const ret = wasm.staticresourcemetadata_get_createdtime(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get graph_id() {\n const ret = wasm.staticresourcemetadata_get_graph_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get graph_publication_id() {\n const ret = wasm.staticresourcemetadata_get_graph_publication_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get lastmodified() {\n const ret = wasm.staticresourcemetadata_get_lastmodified(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get legacyid() {\n const ret = wasm.staticresourcemetadata_get_legacyid(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get name() {\n const ret = wasm.staticresourcemetadata_get_name(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get principaluser_id() {\n const ret = wasm.staticresourcemetadata_get_principaluser_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get publication_id() {\n const ret = wasm.staticresourcemetadata_get_publication_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get resourceinstanceid() {\n const ret = wasm.staticresourcemetadata_get_resourceinstanceid(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {any} json_data\n */\n constructor(json_data) {\n const ret = wasm.staticresourcemetadata_new(json_data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n StaticResourceMetadataFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.staticresourcemetadata_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) StaticResourceMetadata.prototype[Symbol.dispose] = StaticResourceMetadata.prototype.free;\n\nexport class StaticResourceReference {\n static __wrap(ptr) {\n const obj = Object.create(StaticResourceReference.prototype);\n obj.__wbg_ptr = ptr;\n StaticResourceReferenceFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticResourceReferenceFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_staticresourcereference_free(ptr, 0);\n }\n /**\n * @returns {StaticResourceReference}\n */\n copy() {\n const ret = wasm.staticresourcereference_copy(this.__wbg_ptr);\n return StaticResourceReference.__wrap(ret);\n }\n /**\n * @returns {any}\n */\n get graph_id() {\n const ret = wasm.staticresourcereference_get_graph_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get id() {\n const ret = wasm.staticresourcereference_get_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get meta() {\n const ret = wasm.staticresourcereference_meta(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {any} data\n */\n constructor(data) {\n const ret = wasm.staticresourcereference_new(data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n StaticResourceReferenceFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @returns {string | undefined}\n */\n get type() {\n const ret = wasm.staticresourcereference_resource_type(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {any}\n */\n get root() {\n const ret = wasm.staticresourcereference_root(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string | undefined}\n */\n get title() {\n const ret = wasm.staticresourcereference_title(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.staticresourcereference_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) StaticResourceReference.prototype[Symbol.dispose] = StaticResourceReference.prototype.free;\n\n/**\n * Registry of known resources for relationship resolution\n *\n * Used to:\n * - Look up graph_id for referenced resources\n * - Populate __cache on resources with related resource summaries\n * - Enrich resource-instance tile data with ontologyProperty from node config\n * - Validate that referenced resources exist (in strict mode)\n *\n * @example\n * ```typescript\n * const registry = new StaticResourceRegistry();\n * registry.mergeFromResourcesJson(existingResourcesJson);\n *\n * // After conversion, populate caches\n * const result = registry.populateCaches(resourcesJson, graph, true);\n * if (result.hasUnknown) {\n * console.warn('Unknown references:', result.unknownReferences);\n * }\n * ```\n */\nexport class StaticResourceRegistry {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticResourceRegistryFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_staticresourceregistry_free(ptr, 0);\n }\n /**\n * Check if a resource ID is known\n * Returns false if resource_id is null/undefined\n * @param {string | null} [resource_id]\n * @returns {boolean}\n */\n contains(resource_id) {\n var ptr0 = isLikeNone(resource_id) ? 0 : passStringToWasm0(resource_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticresourceregistry_contains(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Get all full resources as an array (for iteration)\n * @returns {StaticResource[]}\n */\n getAllFull() {\n const ret = wasm.staticresourceregistry_getAllFull(this.__wbg_ptr);\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * Get all full resources for a specific graph\n * Returns empty array if graph_id is null/undefined\n * @param {string | null} [graph_id]\n * @returns {StaticResource[]}\n */\n getAllFullForGraph(graph_id) {\n var ptr0 = isLikeNone(graph_id) ? 0 : passStringToWasm0(graph_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticresourceregistry_getAllFullForGraph(this.__wbg_ptr, ptr0, len0);\n var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v2;\n }\n /**\n * Get the full resource if stored (or undefined if only summary, not known, or resource_id is null)\n * @param {string | null} [resource_id]\n * @returns {StaticResource | undefined}\n */\n getFull(resource_id) {\n var ptr0 = isLikeNone(resource_id) ? 0 : passStringToWasm0(resource_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticresourceregistry_getFull(this.__wbg_ptr, ptr0, len0);\n return ret === 0 ? undefined : StaticResource.__wrap(ret);\n }\n /**\n * Get the graph_id for a resource (or undefined if not known or resource_id is null)\n * @param {string | null} [resource_id]\n * @returns {string | undefined}\n */\n getGraphId(resource_id) {\n var ptr0 = isLikeNone(resource_id) ? 0 : passStringToWasm0(resource_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticresourceregistry_getGraphId(this.__wbg_ptr, ptr0, len0);\n let v2;\n if (ret[0] !== 0) {\n v2 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v2;\n }\n /**\n * Build an index from resource IDs to node values for a given node.\n *\n * Iterates through all full resources in the registry that match the graph,\n * filtering tiles by the node's nodegroup_id, and collecting values for the node.\n *\n * @param graph - The graph definition containing the node\n * @param nodeIdentifier - Node alias or node ID to look up\n * @returns Object mapping resource IDs to arrays of values found in tiles\n *\n * @example\n * ```typescript\n * const index = registry.getNodeValuesIndex(graph, 'forename');\n * // Returns: { \"resource-uuid-1\": [\"Alice\"], \"resource-uuid-2\": [\"Bob\", \"Robert\"] }\n * ```\n * @param {StaticGraph} graph\n * @param {string} node_identifier\n * @returns {any}\n */\n getNodeValuesIndex(graph, node_identifier) {\n _assertClass(graph, StaticGraph);\n const ptr0 = passStringToWasm0(node_identifier, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticresourceregistry_getNodeValuesIndex(this.__wbg_ptr, graph.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Get the full summary for a resource (or undefined if not known or resource_id is null)\n * @param {string | null} [resource_id]\n * @returns {StaticResourceSummary | undefined}\n */\n getSummary(resource_id) {\n var ptr0 = isLikeNone(resource_id) ? 0 : passStringToWasm0(resource_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticresourceregistry_getSummary(this.__wbg_ptr, ptr0, len0);\n return ret === 0 ? undefined : StaticResourceSummary.__wrap(ret);\n }\n /**\n * Build an inverted index from node values to resource IDs.\n *\n * Iterates through all full resources in the registry that match the graph,\n * collecting which resources have each value for the specified node.\n *\n * @param graph - The graph definition containing the node\n * @param nodeIdentifier - Node alias or node ID to look up\n * @param flattenLocalized - If true (default), extracts string from localized format {\"en\": \"value\"}\n * @returns Object mapping string values to arrays of resource IDs\n *\n * @example\n * ```typescript\n * const index = registry.getValueToResourcesIndex(graph, 'forename', true);\n * // Returns: { \"Alice\": [\"resource-uuid-1\"], \"Bob\": [\"resource-uuid-2\", \"resource-uuid-3\"] }\n * ```\n * @param {StaticGraph} graph\n * @param {string} node_identifier\n * @param {boolean | null} [flatten_localized]\n * @returns {any}\n */\n getValueToResourcesIndex(graph, node_identifier, flatten_localized) {\n _assertClass(graph, StaticGraph);\n const ptr0 = passStringToWasm0(node_identifier, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticresourceregistry_getValueToResourcesIndex(this.__wbg_ptr, graph.__wbg_ptr, ptr0, len0, isLikeNone(flatten_localized) ? 0xFFFFFF : flatten_localized ? 1 : 0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Check if a resource has full data stored (not just summary)\n * Returns false if resource_id is null/undefined\n * @param {string | null} [resource_id]\n * @returns {boolean}\n */\n hasFull(resource_id) {\n var ptr0 = isLikeNone(resource_id) ? 0 : passStringToWasm0(resource_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticresourceregistry_hasFull(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Add a StaticResourceSummary to the registry\n * @param {StaticResourceSummary} summary\n */\n insert(summary) {\n _assertClass(summary, StaticResourceSummary);\n wasm.staticresourceregistry_insert(this.__wbg_ptr, summary.__wbg_ptr);\n }\n /**\n * Add a single resource summary to the registry\n *\n * @param summaryJson - JSON string with {resourceinstanceid, graph_id, name, ...}\n * @param {string} summary_json\n */\n insertFromJson(summary_json) {\n const ptr0 = passStringToWasm0(summary_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticresourceregistry_insertFromJson(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * Check if registry is empty\n * @returns {boolean}\n */\n get isEmpty() {\n const ret = wasm.staticresourceregistry_is_empty(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Number of resources in the registry\n * @returns {number}\n */\n get length() {\n const ret = wasm.staticresourceregistry_length(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * Load a business_data file from raw bytes, parse it entirely in Rust,\n * and merge the resources into this registry. Returns a lightweight JS\n * array of `{ resourceinstanceid, graph_id, isPublic }` objects for\n * enumeration — no full resource data crosses to V8.\n *\n * Callers pass in the result of `fs.readFile(path)` (a Buffer / Uint8Array).\n *\n * @param bytes - Raw file content (business_data JSON as bytes)\n * @param storeFull - If true, store full resources; if false, store only summaries\n * @param includeCaches - If true, also merge related resources from __cache\n * @returns Array of { resourceinstanceid, graph_id, isPublic } objects\n * @param {Uint8Array} bytes\n * @param {boolean | null} [store_full]\n * @param {boolean | null} [include_caches]\n * @returns {any}\n */\n loadFromBusinessDataBytes(bytes, store_full, include_caches) {\n const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticresourceregistry_loadFromBusinessDataBytes(this.__wbg_ptr, ptr0, len0, isLikeNone(store_full) ? 0xFFFFFF : store_full ? 1 : 0, isLikeNone(include_caches) ? 0xFFFFFF : include_caches ? 1 : 0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Merge resources into the registry from StaticResource array\n *\n * If storeFull is true, stores full resources (for traversal).\n * If storeFull is false (default), stores only summaries (memory efficient).\n * If includeCaches is true (default), also merges any __cache.relatedResources as summaries.\n *\n * @param resources - Array of StaticResource objects\n * @param storeFull - If true, store full resources; if false, store only summaries\n * @param includeCaches - If true, also merge related resources from __cache\n * @param {StaticResource[]} resources\n * @param {boolean | null} [store_full]\n * @param {boolean | null} [include_caches]\n */\n mergeFromResources(resources, store_full, include_caches) {\n const ptr0 = passArrayJsValueToWasm0(resources, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.staticresourceregistry_mergeFromResources(this.__wbg_ptr, ptr0, len0, isLikeNone(store_full) ? 0xFFFFFF : store_full ? 1 : 0, isLikeNone(include_caches) ? 0xFFFFFF : include_caches ? 1 : 0);\n }\n /**\n * Merge resources into the registry from a JSON string\n *\n * Registers each resource's ID → summary mapping or full resources.\n * If storeFull is true, stores full resources (for traversal).\n * If storeFull is false (default), stores only summaries (memory efficient).\n * If includeCaches is true (default), also merges any __cache.relatedResources as summaries.\n *\n * @param resourcesJson - JSON string containing array of StaticResource objects\n * @param storeFull - If true, store full resources; if false, store only summaries\n * @param includeCaches - If true, also merge related resources from __cache\n * @param {string} resources_json\n * @param {boolean | null} [store_full]\n * @param {boolean | null} [include_caches]\n */\n mergeFromResourcesJson(resources_json, store_full, include_caches) {\n const ptr0 = passStringToWasm0(resources_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticresourceregistry_mergeFromResourcesJson(this.__wbg_ptr, ptr0, len0, isLikeNone(store_full) ? 0xFFFFFF : store_full ? 1 : 0, isLikeNone(include_caches) ? 0xFFFFFF : include_caches ? 1 : 0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n constructor() {\n const ret = wasm.staticresourceregistry_new();\n this.__wbg_ptr = ret;\n StaticResourceRegistryFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * Populate __cache on resources with summaries for referenced resources\n *\n * @param resources - Array of StaticResource objects (modified in place)\n * @param graph - StaticGraph to use for node lookup\n * @param enrichRelationships - If true, add ontologyProperty to tile data\n * @returns Object with unknownReferences array and hasUnknown flag\n * @param {StaticResource[]} resources\n * @param {StaticGraph} graph\n * @param {boolean | null} [enrich_relationships]\n * @param {boolean | null} [strict]\n * @param {boolean | null} [recompute_descriptors]\n * @returns {any}\n */\n populateCaches(resources, graph, enrich_relationships, strict, recompute_descriptors) {\n const ptr0 = passArrayJsValueToWasm0(resources, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(graph, StaticGraph);\n const ret = wasm.staticresourceregistry_populateCaches(this.__wbg_ptr, ptr0, len0, graph.__wbg_ptr, isLikeNone(enrich_relationships) ? 0xFFFFFF : enrich_relationships ? 1 : 0, isLikeNone(strict) ? 0xFFFFFF : strict ? 1 : 0, isLikeNone(recompute_descriptors) ? 0xFFFFFF : recompute_descriptors ? 1 : 0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Populate __cache on resources with summaries for referenced resources\n *\n * Uses the graph to identify resource-instance nodes, then populates\n * cache entries for each referenced resource found in this registry.\n *\n * If enrichRelationships is true, also adds ontologyProperty/inverseOntologyProperty\n * to tile data based on node config and the target resource's graph.\n *\n * @param resourcesJson - JSON string containing array of StaticResource objects\n * @param graph - StaticGraph to use for node lookup\n * @param enrichRelationships - If true, add ontologyProperty to tile data\n * @returns Object with resources (updated), unknownReferences, and hasUnknown flag\n * @param {string} resources_json\n * @param {StaticGraph} graph\n * @param {boolean | null} [enrich_relationships]\n * @param {boolean | null} [strict]\n * @param {boolean | null} [recompute_descriptors]\n * @returns {any}\n */\n populateCachesFromJson(resources_json, graph, enrich_relationships, strict, recompute_descriptors) {\n const ptr0 = passStringToWasm0(resources_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(graph, StaticGraph);\n const ret = wasm.staticresourceregistry_populateCachesFromJson(this.__wbg_ptr, ptr0, len0, graph.__wbg_ptr, isLikeNone(enrich_relationships) ? 0xFFFFFF : enrich_relationships ? 1 : 0, isLikeNone(strict) ? 0xFFFFFF : strict ? 1 : 0, isLikeNone(recompute_descriptors) ? 0xFFFFFF : recompute_descriptors ? 1 : 0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n}\nif (Symbol.dispose) StaticResourceRegistry.prototype[Symbol.dispose] = StaticResourceRegistry.prototype.free;\n\nexport class StaticResourceSummary {\n static __wrap(ptr) {\n const obj = Object.create(StaticResourceSummary.prototype);\n obj.__wbg_ptr = ptr;\n StaticResourceSummaryFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticResourceSummaryFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_staticresourcesummary_free(ptr, 0);\n }\n /**\n * @returns {StaticResourceSummary}\n */\n copy() {\n const ret = wasm.staticresourcesummary_copy(this.__wbg_ptr);\n return StaticResourceSummary.__wrap(ret);\n }\n /**\n * @returns {StaticResourceDescriptors | undefined}\n */\n get descriptors() {\n const ret = wasm.staticresourcesummary_descriptors(this.__wbg_ptr);\n return ret === 0 ? undefined : StaticResourceDescriptors.__wrap(ret);\n }\n /**\n * Parse summary from JSON string - faster than constructor with JS object\n * @param {string} json_str\n * @returns {StaticResourceSummary}\n */\n static fromJsonString(json_str) {\n const ptr0 = passStringToWasm0(json_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticresourcesummary_fromJsonString(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return StaticResourceSummary.__wrap(ret[0]);\n }\n /**\n * Create a summary from a full resource\n * @param {StaticResource} resource\n * @returns {StaticResourceSummary}\n */\n static fromResource(resource) {\n _assertClass(resource, StaticResource);\n const ret = wasm.staticresourcesummary_fromResource(resource.__wbg_ptr);\n return StaticResourceSummary.__wrap(ret);\n }\n /**\n * @returns {any}\n */\n get graph_id() {\n const ret = wasm.staticresourcesummary_get_graph_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get name() {\n const ret = wasm.staticresourcesummary_get_name(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get resourceinstanceid() {\n const ret = wasm.staticresourcesummary_get_resourceinstanceid(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get metadata() {\n const ret = wasm.staticresourcesummary_metadata(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {any} data\n */\n constructor(data) {\n const ret = wasm.staticresourcesummary_new(data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n StaticResourceSummaryFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * Extract summaries from a JSON string containing business_data with full resources\n * This parses all resources but only keeps the summary fields, avoiding full tile parsing\n * @param {string} json_str\n * @returns {StaticResourceSummary[]}\n */\n static summariesFromBusinessDataJsonString(json_str) {\n const ptr0 = passStringToWasm0(json_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.staticresourcesummary_summariesFromBusinessDataJsonString(ptr0, len0);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v2;\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.staticresourcesummary_toJSON(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {StaticResourceMetadata}\n */\n toMetadata() {\n const ret = wasm.staticresourcesummary_toMetadata(this.__wbg_ptr);\n return StaticResourceMetadata.__wrap(ret);\n }\n}\nif (Symbol.dispose) StaticResourceSummary.prototype[Symbol.dispose] = StaticResourceSummary.prototype.free;\n\nexport class StaticTile {\n static __wrap(ptr) {\n const obj = Object.create(StaticTile.prototype);\n obj.__wbg_ptr = ptr;\n StaticTileFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n static __unwrap(jsValue) {\n if (!(jsValue instanceof StaticTile)) {\n return 0;\n }\n return jsValue.__destroy_into_raw();\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticTileFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_statictile_free(ptr, 0);\n }\n /**\n * @returns {StaticTile}\n */\n copy() {\n const ret = wasm.statictile_copy(this.__wbg_ptr);\n return StaticTile.__wrap(ret);\n }\n /**\n * @returns {string}\n */\n ensureId() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.statictile_ensureId(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {any}\n */\n get data() {\n const ret = wasm.statictile_get_data(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string}\n */\n get nodegroup_id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.statictile_get_nodegroup_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {any}\n */\n get parenttile_id() {\n const ret = wasm.statictile_get_parenttile_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get provisionaledits() {\n const ret = wasm.statictile_get_provisionaledits(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string}\n */\n get resourceinstance_id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.statictile_get_resourceinstance_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {any}\n */\n get sortorder() {\n const ret = wasm.statictile_get_sortorder(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get tileid() {\n const ret = wasm.statictile_get_tileid(this.__wbg_ptr);\n return ret;\n }\n /**\n * Extract the inner core type, consuming the wrapper\n * This avoids serialization overhead when transferring between WASM contexts\n * @returns {any}\n */\n intoCore() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.statictile_intoCore(ptr);\n return ret;\n }\n /**\n * @param {any} json_data\n */\n constructor(json_data) {\n const ret = wasm.statictile_new(json_data);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n StaticTileFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {any} value\n */\n set data(value) {\n wasm.statictile_set_data(this.__wbg_ptr, value);\n }\n /**\n * @param {string} value\n */\n set nodegroup_id(value) {\n const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.statictile_set_nodegroup_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {any} value\n */\n set parenttile_id(value) {\n wasm.statictile_set_parenttile_id(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set provisionaledits(value) {\n wasm.statictile_set_provisionaledits(this.__wbg_ptr, value);\n }\n /**\n * @param {string} value\n */\n set resourceinstance_id(value) {\n const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.statictile_set_resourceinstance_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {any} value\n */\n set sortorder(value) {\n wasm.statictile_set_sortorder(this.__wbg_ptr, value);\n }\n /**\n * @param {any} value\n */\n set tileid(value) {\n wasm.statictile_set_tileid(this.__wbg_ptr, value);\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.statictile_toJSON(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) StaticTile.prototype[Symbol.dispose] = StaticTile.prototype.free;\n\nexport class StaticTranslatableString {\n static __wrap(ptr) {\n const obj = Object.create(StaticTranslatableString.prototype);\n obj.__wbg_ptr = ptr;\n StaticTranslatableStringFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n StaticTranslatableStringFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_statictranslatablestring_free(ptr, 0);\n }\n /**\n * @returns {StaticTranslatableString}\n */\n copy() {\n const ret = wasm.statictranslatablestring_copy(this.__wbg_ptr);\n return StaticTranslatableString.__wrap(ret);\n }\n /**\n * @returns {string}\n */\n get lang() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.statictranslatablestring_get_lang(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {any}\n */\n get translations() {\n const ret = wasm.statictranslatablestring_get_translations(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {any} value\n * @param {string | null} [lang]\n */\n constructor(value, lang) {\n var ptr0 = isLikeNone(lang) ? 0 : passStringToWasm0(lang, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.statictranslatablestring_new(value, ptr0, len0);\n this.__wbg_ptr = ret;\n StaticTranslatableStringFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @returns {any}\n */\n toJSON() {\n const ret = wasm.statictranslatablestring_toJSON(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string}\n */\n toString() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.statictranslatablestring_toString(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\nif (Symbol.dispose) StaticTranslatableString.prototype[Symbol.dispose] = StaticTranslatableString.prototype.free;\n\n/**\n * Rust-side WASM resource instance wrapper\n * Thin wrapper around ResourceInstanceWrapperCore for WASM bindings\n * Phase 4g: Added PseudoValue cache for parallel access\n * Phase 4h: Using RefCell for interior mutability to allow &self in async functions\n * This prevents deadlocks when multiple async operations access the same wrapper\n */\nexport class WASMResourceInstanceWrapper {\n static __wrap(ptr) {\n const obj = Object.create(WASMResourceInstanceWrapper.prototype);\n obj.__wbg_ptr = ptr;\n WASMResourceInstanceWrapperFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WASMResourceInstanceWrapperFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmresourceinstancewrapper_free(ptr, 0);\n }\n /**\n * Append tiles from plain JS objects (JSON deserialization)\n * Use this for incremental loading (e.g., loading tiles for specific nodegroups)\n * Unlike loadTiles, this adds to existing tiles without clearing them\n * @param {any} tiles_js\n */\n appendTiles(tiles_js) {\n const ret = wasm.wasmresourceinstancewrapper_appendTiles(this.__wbg_ptr, tiles_js);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * Phase 4g: Store PseudoList in Rust cache\n * @param {string} alias\n * @param {PseudoList} wasm_list\n */\n cachePseudoList(alias, wasm_list) {\n const ptr0 = passStringToWasm0(alias, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(wasm_list, PseudoList);\n var ptr1 = wasm_list.__destroy_into_raw();\n wasm.wasmresourceinstancewrapper_cachePseudoList(this.__wbg_ptr, ptr0, len0, ptr1);\n }\n /**\n * Phase 4g: Store single PseudoValue as a list in Rust cache\n * @param {string} alias\n * @param {PseudoValue} wasm_value\n */\n cachePseudoValue(alias, wasm_value) {\n const ptr0 = passStringToWasm0(alias, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(wasm_value, PseudoValue);\n var ptr1 = wasm_value.__destroy_into_raw();\n wasm.wasmresourceinstancewrapper_cachePseudoValue(this.__wbg_ptr, ptr0, len0, ptr1);\n }\n /**\n * Phase 4g: Clear all cached PseudoValues\n */\n clearPseudoCache() {\n wasm.wasmresourceinstancewrapper_clearPseudoCache(this.__wbg_ptr);\n }\n /**\n * Complete ensureNodegroup implementation in Rust\n * PORT: graphManager.ts lines 302-377 (full ensureNodegroup function)\n * PORT: Phase 4c - Now returns structured WasmEnsureNodegroupResult instead of recipes\n * Now gets node_objs, nodegroup_objs, and edges from model core directly\n * @param {any} all_values_js\n * @param {any} all_nodegroups_js\n * @param {string} nodegroup_id\n * @param {boolean} add_if_missing\n * @param {any} nodegroup_permissions_js\n * @param {boolean} do_implied_nodegroups\n * @returns {WasmEnsureNodegroupResult}\n */\n ensureNodegroup(all_values_js, all_nodegroups_js, nodegroup_id, add_if_missing, nodegroup_permissions_js, do_implied_nodegroups) {\n const ptr0 = passStringToWasm0(nodegroup_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_ensureNodegroup(this.__wbg_ptr, all_values_js, all_nodegroups_js, ptr0, len0, add_if_missing, nodegroup_permissions_js, do_implied_nodegroups);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return WasmEnsureNodegroupResult.__wrap(ret[0]);\n }\n /**\n * Export all tiles as a JSON string.\n * Returns the wrapper's current tile state (including any mutations from setTileDataForNode).\n * Returned as a string for fast boundary crossing — call JSON.parse() on the JS side.\n * @returns {string}\n */\n exportTilesJson() {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.wasmresourceinstancewrapper_exportTilesJson(this.__wbg_ptr);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * Find semantic children for a parent semantic node\n * PORT: js/semantic.ts lines 269-340 (__getChildValues)\n *\n * This implements the exact filtering logic from SemanticViewModel.__getChildValues\n * to determine which tiles contain data for a semantic node's children.\n *\n * Parameters:\n * - parent_tile_id: The tileid of the parent semantic node (or null)\n * - parent_node_id: The nodeid of the parent semantic node\n * - parent_nodegroup_id: The nodegroup_id of the parent node (or null)\n * - child_aliases: List of child node aliases to search for\n *\n * Returns: Map<alias, Vec<tileid>> - for each child alias, which tiles contain it\n * @param {string | null | undefined} parent_tile_id\n * @param {string} parent_node_id\n * @param {string | null} [parent_nodegroup_id]\n * @returns {any}\n */\n findSemanticChildren(parent_tile_id, parent_node_id, parent_nodegroup_id) {\n var ptr0 = isLikeNone(parent_tile_id) ? 0 : passStringToWasm0(parent_tile_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(parent_node_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(parent_nodegroup_id) ? 0 : passStringToWasm0(parent_nodegroup_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_findSemanticChildren(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Sync batch endpoint: get all semantic child values for a parent node at once.\n *\n * IMPORTANT: This is a SYNC method. JS must ensure all required tiles are loaded\n * before calling this (use getMissingNodegroupsForChildren to check first).\n *\n * Returns a JS Map<string, PseudoValue | PseudoList | null> keyed by child alias.\n *\n * Parameters:\n * - parent_tile_id: The tileid of the parent semantic node (or null)\n * - parent_node_id: The nodeid of the parent semantic node\n * - parent_nodegroup_id: The nodegroup_id of the parent node (or null)\n *\n * Returns: JS Map of alias -> value/list/null\n * Throws an error if tiles are not loaded for any child's nodegroup\n * @param {string | null | undefined} parent_tile_id\n * @param {string} parent_node_id\n * @param {string | null} [parent_nodegroup_id]\n * @returns {any}\n */\n getAllSemanticChildValues(parent_tile_id, parent_node_id, parent_nodegroup_id) {\n var ptr0 = isLikeNone(parent_tile_id) ? 0 : passStringToWasm0(parent_tile_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(parent_node_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(parent_nodegroup_id) ? 0 : passStringToWasm0(parent_nodegroup_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_getAllSemanticChildValues(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Get all tile IDs that have been loaded (and passed filtering)\n * Returns array of all tile ID strings\n * @returns {string[]}\n */\n getAllTileIds() {\n const ret = wasm.wasmresourceinstancewrapper_getAllTileIds(this.__wbg_ptr);\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * Phase 4g: Get cached PseudoValue from Rust cache\n * Returns PseudoList if found, null otherwise\n * Handles null/undefined alias gracefully by returning None\n * @param {string | null} [alias]\n * @returns {PseudoList | undefined}\n */\n getCachedPseudo(alias) {\n var ptr0 = isLikeNone(alias) ? 0 : passStringToWasm0(alias, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_getCachedPseudo(this.__wbg_ptr, ptr0, len0);\n return ret === 0 ? undefined : PseudoList.__wrap(ret);\n }\n /**\n * Get resource descriptors, optionally recomputing from tiles.\n * PORT: js/graphManager.ts:127-186 (getDescriptors method)\n *\n * If `recompute` is false, returns cached descriptors.\n * If `recompute` is true, computes fresh descriptors from tiles using\n * graph configuration templates, updates the cache, and returns them.\n * @param {boolean} recompute\n * @returns {StaticResourceDescriptors}\n */\n getDescriptors(recompute) {\n const ret = wasm.wasmresourceinstancewrapper_getDescriptors(this.__wbg_ptr, recompute);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return StaticResourceDescriptors.__wrap(ret[0]);\n }\n /**\n * Check which nodegroups need tiles loaded for all children of a parent node.\n * Returns an array of nodegroup IDs that need loading, or empty array if all loaded.\n *\n * This enables JS to proactively load tiles before calling the sync batch endpoint,\n * eliminating async boundary crossings in the hot path.\n *\n * Parameters:\n * - parent_node_id: The nodeid of the parent semantic node\n *\n * Returns: Array of nodegroup_id strings that need tiles loaded\n * @param {string} parent_node_id\n * @returns {string[]}\n */\n getMissingNodegroupsForChildren(parent_node_id) {\n const ptr0 = passStringToWasm0(parent_node_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_getMissingNodegroupsForChildren(this.__wbg_ptr, ptr0, len0);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v2;\n }\n /**\n * Get resource name from metadata\n * PORT: js/graphManager.ts:115-125 (getName method)\n * @returns {string}\n */\n getName() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.wasmresourceinstancewrapper_getName(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * Get count of nodegroups indexed\n * @returns {number}\n */\n getNodegroupCount() {\n const ret = wasm.wasmresourceinstancewrapper_getNodegroupCount(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {string | undefined}\n */\n getResourceId() {\n const ret = wasm.wasmresourceinstancewrapper_getResourceId(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * Get the root pseudo value from the cache.\n *\n * Returns the first (and should be only) value from the root pseudo list.\n * The root is stored in cache with its alias from the graph model.\n *\n * PORT: js/graphManager.ts:330-364 getRoot()\n * @returns {PseudoValue | undefined}\n */\n getRootPseudo() {\n const ret = wasm.wasmresourceinstancewrapper_getRootPseudo(this.__wbg_ptr);\n return ret === 0 ? undefined : PseudoValue.__wrap(ret);\n }\n /**\n * Get a single semantic child value\n * PORT: js/semantic.ts lines 177-204 (__getChildValue)\n *\n * More efficient than findSemanticChildren when you only need one child.\n *\n * Parameters:\n * - parent_tile_id: The tileid of the parent semantic node (or null)\n * - parent_node_id: The nodeid of the parent semantic node\n * - parent_nodegroup_id: The nodegroup_id of the parent node (or null)\n * - child_alias: The alias of the specific child to retrieve\n *\n * Returns: PseudoValue or PseudoList, or null if not found\n * Throws an error if tiles are not loaded for the child's nodegroup (in lazy mode)\n * @param {string | null | undefined} parent_tile_id\n * @param {string} parent_node_id\n * @param {string | null | undefined} parent_nodegroup_id\n * @param {string} child_alias\n * @returns {any}\n */\n getSemanticChildValue(parent_tile_id, parent_node_id, parent_nodegroup_id, child_alias) {\n var ptr0 = isLikeNone(parent_tile_id) ? 0 : passStringToWasm0(parent_tile_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(parent_node_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(parent_nodegroup_id) ? 0 : passStringToWasm0(parent_nodegroup_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(child_alias, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_getSemanticChildValue(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Get full tile data by tile ID\n * Returns StaticTile WASM object or error if not found\n * Returns error with clear message if tile_id is null/undefined\n * @param {string | null} [tile_id]\n * @returns {StaticTile}\n */\n getTile(tile_id) {\n var ptr0 = isLikeNone(tile_id) ? 0 : passStringToWasm0(tile_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_getTile(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return StaticTile.__wrap(ret[0]);\n }\n /**\n * Get count of tiles stored\n * @returns {number}\n */\n getTileCount() {\n const ret = wasm.wasmresourceinstancewrapper_getTileCount(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * Get specific node data from a tile\n * Returns the data value for the given node_id within the tile\n * Returns error with clear message if tile_id or node_id is null/undefined\n * @param {string | null} [tile_id]\n * @param {string | null} [node_id]\n * @returns {any}\n */\n getTileData(tile_id, node_id) {\n var ptr0 = isLikeNone(tile_id) ? 0 : passStringToWasm0(tile_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(node_id) ? 0 : passStringToWasm0(node_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_getTileData(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Get tile IDs for a specific nodegroup\n * Returns array of tile ID strings, or empty array if nodegroup_id is null/undefined\n * @param {string | null} [nodegroup_id]\n * @returns {string[]}\n */\n getTileIdsByNodegroup(nodegroup_id) {\n var ptr0 = isLikeNone(nodegroup_id) ? 0 : passStringToWasm0(nodegroup_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_getTileIdsByNodegroup(this.__wbg_ptr, ptr0, len0);\n var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v2;\n }\n /**\n * Get the tile loader callback if set\n * @returns {Function | undefined}\n */\n getTileLoader() {\n const ret = wasm.wasmresourceinstancewrapper_getTileLoader(this.__wbg_ptr);\n return ret;\n }\n /**\n * Resolve a dot-separated path through the graph model and return a PseudoList.\n *\n * Walks the graph edges matching node aliases at each path segment (e.g. \"building.name\"),\n * then retrieves matching tiles for the target node's nodegroup. This avoids\n * full tree materialization — it goes straight from path to nodegroup to tiles.\n *\n * Parameters:\n * - path: Dot-separated path of node aliases (e.g. \"building.name\" or \".building.name\")\n * - filter_tile_id: Optional parent tile ID to filter results by parent-child relationship\n *\n * Returns: PseudoList for the target node, or throws on invalid path\n * @param {string} path\n * @param {string | null} [filter_tile_id]\n * @returns {PseudoList}\n */\n getValuesAtPath(path, filter_tile_id) {\n const ptr0 = passStringToWasm0(path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(filter_tile_id) ? 0 : passStringToWasm0(filter_tile_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_getValuesAtPath(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return PseudoList.__wrap(ret[0]);\n }\n /**\n * Check if tiles have been loaded for a specific nodegroup\n * In non-lazy mode, returns true if tiles exist\n * In lazy mode, checks if nodegroup has been processed (which includes tile loading)\n * @param {string} nodegroup_id\n * @returns {boolean}\n */\n hasTilesForNodegroup(nodegroup_id) {\n const ptr0 = passStringToWasm0(nodegroup_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_hasTilesForNodegroup(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Check if a nodegroup has been loaded\n * Phase 4g: Updated to use Mutex\n * @param {string | null} [nodegroup_id]\n * @returns {boolean}\n */\n isNodegroupLoaded(nodegroup_id) {\n var ptr0 = isLikeNone(nodegroup_id) ? 0 : passStringToWasm0(nodegroup_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_isNodegroupLoaded(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Phase 4g: Check if a nodegroup is being loaded or already loaded\n * Returns false if nodegroup_id is null/undefined\n * @param {string | null} [nodegroup_id]\n * @returns {boolean}\n */\n isNodegroupLoadedOrLoading(nodegroup_id) {\n var ptr0 = isLikeNone(nodegroup_id) ? 0 : passStringToWasm0(nodegroup_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_isNodegroupLoadedOrLoading(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Load tiles from plain JS objects (JSON deserialization)\n * Use this for initial loading from JSON files\n * @param {any} tiles_js\n */\n loadTiles(tiles_js) {\n const ret = wasm.wasmresourceinstancewrapper_loadTiles(this.__wbg_ptr, tiles_js);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * Load tiles directly from a StaticResource without going through JS\n * This avoids the expensive tiles getter that creates N WASM wrapper objects\n * @param {StaticResource} resource\n * @param {boolean | null} [assume_tiles_comprehensive_for_nodegroup]\n */\n loadTilesFromResource(resource, assume_tiles_comprehensive_for_nodegroup) {\n _assertClass(resource, StaticResource);\n const ret = wasm.wasmresourceinstancewrapper_loadTilesFromResource(this.__wbg_ptr, resource.__wbg_ptr, isLikeNone(assume_tiles_comprehensive_for_nodegroup) ? 0xFFFFFF : assume_tiles_comprehensive_for_nodegroup ? 1 : 0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * Load tiles from WASM StaticTile objects directly (no serialization overhead)\n * Use this when passing tiles between Rust/WASM contexts\n * @param {StaticTile[]} tiles\n * @param {boolean | null} [assume_tiles_comprehensive_for_nodegroup]\n */\n loadTilesWasm(tiles, assume_tiles_comprehensive_for_nodegroup) {\n const ptr0 = passArrayJsValueToWasm0(tiles, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_loadTilesWasm(this.__wbg_ptr, ptr0, len0, isLikeNone(assume_tiles_comprehensive_for_nodegroup) ? 0xFFFFFF : assume_tiles_comprehensive_for_nodegroup ? 1 : 0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * Create a PseudoValue or PseudoList from node metadata\n * PORT: js/pseudos.ts:497-594 makePseudoCls()\n *\n * This replaces the TS makePseudoCls logic, returning PseudoValue or PseudoList\n * that can be wrapped in TS PseudoValue/PseudoList wrappers.\n *\n * Parameters:\n * - alias: Node alias to create pseudo for\n * - tile_id: Optional tile ID (if node shares parent's tile)\n * - is_permitted: Whether nodegroup is permitted (precalculated in TS)\n * - node_objs_js: Map<string, StaticNode> from TS\n * - edges_js: Map<string, string[]> from TS\n * - is_single: Force single value (not a list)\n * @param {string} alias\n * @param {string | null | undefined} tile_id\n * @param {boolean} is_permitted\n * @param {boolean} is_single\n * @returns {any}\n */\n makePseudoValue(alias, tile_id, is_permitted, is_single) {\n const ptr0 = passStringToWasm0(alias, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(tile_id) ? 0 : passStringToWasm0(tile_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_makePseudoValue(this.__wbg_ptr, ptr0, len0, ptr1, len1, is_permitted, is_single);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Get nodegroup IDs needed to serialize a card (and its descendants).\n *\n * Use this to know which nodegroups to load via `populate()` or\n * `ensureNodegroup()` before calling `serializeCard()`.\n *\n * @param cardId - The card UUID\n * @param maxDepth - Max depth (null = all descendants, 0 = this card only)\n * @param {string} card_id\n * @param {number | null} [max_depth]\n * @returns {string[]}\n */\n nodegroupIdsForCard(card_id, max_depth) {\n const ptr0 = passStringToWasm0(card_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_nodegroupIdsForCard(this.__wbg_ptr, ptr0, len0, isLikeNone(max_depth) ? Number.MAX_SAFE_INTEGER : (max_depth) >>> 0);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v2;\n }\n /**\n * Complete populate implementation in Rust\n * PORT: graphManager.ts lines 600-688 (populate function)\n * PORT: Phase 4c - Now returns WasmPopulateResult with structured values\n * Orchestrates loading all nodegroups for a resource\n *\n * Optimization: Skips nodegroups that are already loaded (tracked in loaded_nodegroups).\n * Preserves existing pseudo_cache entries for already-loaded nodegroups.\n * Permissions are read directly from the model (set via setPermittedNodegroups).\n * @param {boolean} lazy\n * @param {string[]} nodegroup_ids\n * @param {string} root_node_alias\n * @returns {WasmPopulateResult}\n */\n populate(lazy, nodegroup_ids, root_node_alias) {\n const ptr0 = passArrayJsValueToWasm0(nodegroup_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(root_node_alias, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_populate(this.__wbg_ptr, lazy, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return WasmPopulateResult.__wrap(ret[0]);\n }\n pruneResourceTiles() {\n const ret = wasm.wasmresourceinstancewrapper_pruneResourceTiles(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * Release all memory held by this instance.\n * Call this when you're done with an instance to free WASM memory.\n * After calling this, the instance should not be used.\n */\n release() {\n wasm.wasmresourceinstancewrapper_release(this.__wbg_ptr);\n }\n /**\n * Request tiles for a specific nodegroup (or all tiles if nodegroup_id is None)\n * Returns the tile loader callback with the nodegroup_id parameter\n * JavaScript should await this and call loadTiles() with the result\n * @param {string | null} [_nodegroup_id]\n * @returns {Function}\n */\n requestTilesForNodegroup(_nodegroup_id) {\n var ptr0 = isLikeNone(_nodegroup_id) ? 0 : passStringToWasm0(_nodegroup_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_requestTilesForNodegroup(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Async version of getSemanticChildValue that handles lazy tile loading\n *\n * If tiles are not loaded for the child's nodegroup, this method will:\n * 1. Call the tile loader to fetch tiles for that nodegroup\n * 2. Load the tiles into Rust storage\n * 3. Mark the nodegroup as loaded\n * 4. Retry getting the semantic child value\n *\n * Returns: PseudoValue or PseudoList, or null if not found\n *\n * Phase 4h: Changed from &mut self to &self using RefCell interior mutability.\n * This prevents deadlocks when multiple async operations run concurrently on\n * the same wrapper instance. The previous &mut self caused WASM async operations\n * to block each other since only one mutable borrow can exist at a time.\n * @param {string | null | undefined} parent_tile_id\n * @param {string} parent_node_id\n * @param {string | null | undefined} parent_nodegroup_id\n * @param {string} child_alias\n * @returns {Promise<any>}\n */\n retrieveSemanticChildValue(parent_tile_id, parent_node_id, parent_nodegroup_id, child_alias) {\n var ptr0 = isLikeNone(parent_tile_id) ? 0 : passStringToWasm0(parent_tile_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(parent_node_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(parent_nodegroup_id) ? 0 : passStringToWasm0(parent_nodegroup_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(child_alias, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_retrieveSemanticChildValue(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n return ret;\n }\n /**\n * Serialize a single card from the populated pseudo_cache.\n *\n * Prerequisites: `populate()` must have been called for the relevant nodegroups.\n * Use `nodegroupIdsForCard` to discover which nodegroups are needed.\n *\n * @param cardId - The card UUID to serialize\n * @param parentTileId - Parent tile ID for nested cards (null for root cards)\n * @param parentNodegroupId - Parent nodegroup ID for nested cards (null for root cards)\n * @param maxDepth - Max recursion depth (null = unlimited, 0 = this card only)\n * @param {string} card_id\n * @param {string | null} [parent_tile_id]\n * @param {string | null} [parent_nodegroup_id]\n * @param {number | null} [max_depth]\n * @returns {any}\n */\n serializeCard(card_id, parent_tile_id, parent_nodegroup_id, max_depth) {\n const ptr0 = passStringToWasm0(card_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(parent_tile_id) ? 0 : passStringToWasm0(parent_tile_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(parent_nodegroup_id) ? 0 : passStringToWasm0(parent_nodegroup_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_serializeCard(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2, isLikeNone(max_depth) ? Number.MAX_SAFE_INTEGER : (max_depth) >>> 0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Serialize a single card in display mode (resolves UUIDs to labels\n * using the provided RDM cache and node config manager).\n *\n * @param cardId - The card UUID to serialize\n * @param rdmCache - WasmRdmCache for concept label lookups\n * @param nodeConfigManager - WasmNodeConfigManager for domain value / boolean label lookups\n * @param parentTileId - Parent tile ID for nested cards (null for root cards)\n * @param parentNodegroupId - Parent nodegroup ID for nested cards (null for root cards)\n * @param maxDepth - Max recursion depth (null = unlimited, 0 = this card only)\n * @param language - Language code for display labels (defaults to \"en\")\n * @param {string} card_id\n * @param {WasmRdmCache} rdm_cache\n * @param {WasmNodeConfigManager} node_config_manager\n * @param {string | null | undefined} parent_tile_id\n * @param {string | null | undefined} parent_nodegroup_id\n * @param {number | null | undefined} max_depth\n * @param {string | null | undefined} language\n * @param {StaticResourceRegistry} resource_registry\n * @returns {any}\n */\n serializeCardDisplay(card_id, rdm_cache, node_config_manager, parent_tile_id, parent_nodegroup_id, max_depth, language, resource_registry) {\n const ptr0 = passStringToWasm0(card_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(rdm_cache, WasmRdmCache);\n _assertClass(node_config_manager, WasmNodeConfigManager);\n var ptr1 = isLikeNone(parent_tile_id) ? 0 : passStringToWasm0(parent_tile_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(parent_nodegroup_id) ? 0 : passStringToWasm0(parent_nodegroup_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n var ptr3 = isLikeNone(language) ? 0 : passStringToWasm0(language, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len3 = WASM_VECTOR_LEN;\n _assertClass(resource_registry, StaticResourceRegistry);\n const ret = wasm.wasmresourceinstancewrapper_serializeCardDisplay(this.__wbg_ptr, ptr0, len0, rdm_cache.__wbg_ptr, node_config_manager.__wbg_ptr, ptr1, len1, ptr2, len2, isLikeNone(max_depth) ? Number.MAX_SAFE_INTEGER : (max_depth) >>> 0, ptr3, len3, resource_registry.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Serialize all root cards from the populated pseudo_cache.\n *\n * Prerequisites: `populate()` must have been called.\n *\n * @param maxDepth - Max recursion depth (null = unlimited, 0 = root cards only)\n * @param {number | null} [max_depth]\n * @returns {any}\n */\n serializeRootCards(max_depth) {\n const ret = wasm.wasmresourceinstancewrapper_serializeRootCards(this.__wbg_ptr, isLikeNone(max_depth) ? Number.MAX_SAFE_INTEGER : (max_depth) >>> 0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Serialize all root cards in display mode.\n *\n * @param rdmCache - WasmRdmCache for concept label lookups\n * @param nodeConfigManager - WasmNodeConfigManager for domain value / boolean label lookups\n * @param maxDepth - Max recursion depth (null = unlimited, 0 = root cards only)\n * @param language - Language code for display labels (defaults to \"en\")\n * @param {WasmRdmCache} rdm_cache\n * @param {WasmNodeConfigManager} node_config_manager\n * @param {number | null | undefined} max_depth\n * @param {string | null | undefined} language\n * @param {StaticResourceRegistry} resource_registry\n * @returns {any}\n */\n serializeRootCardsDisplay(rdm_cache, node_config_manager, max_depth, language, resource_registry) {\n _assertClass(rdm_cache, WasmRdmCache);\n _assertClass(node_config_manager, WasmNodeConfigManager);\n var ptr0 = isLikeNone(language) ? 0 : passStringToWasm0(language, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n _assertClass(resource_registry, StaticResourceRegistry);\n const ret = wasm.wasmresourceinstancewrapper_serializeRootCardsDisplay(this.__wbg_ptr, rdm_cache.__wbg_ptr, node_config_manager.__wbg_ptr, isLikeNone(max_depth) ? Number.MAX_SAFE_INTEGER : (max_depth) >>> 0, ptr0, len0, resource_registry.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Set whether this wrapper should use lazy tile loading\n * @param {boolean} lazy\n */\n setLazy(lazy) {\n wasm.wasmresourceinstancewrapper_setLazy(this.__wbg_ptr, lazy);\n }\n /**\n * Set a single node's data in a tile on the wrapper's own tile store.\n * Returns true if the tile was found and updated, false otherwise.\n * @param {string} tile_id\n * @param {string} node_id\n * @param {any} value\n * @returns {boolean}\n */\n setTileDataForNode(tile_id, node_id, value) {\n const ptr0 = passStringToWasm0(tile_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(node_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_setTileDataForNode(this.__wbg_ptr, ptr0, len0, ptr1, len1, value);\n return ret !== 0;\n }\n /**\n * Set a callback function for lazy-loading tiles\n * The callback should have signature: (nodegroup_id: Option<string>) => Promise<StaticTile[]>\n * where None/null means load all tiles, Some(id) means load tiles for specific nodegroup\n * @param {Function} loader\n */\n setTileLoader(loader) {\n wasm.wasmresourceinstancewrapper_setTileLoader(this.__wbg_ptr, loader);\n }\n /**\n * @returns {boolean}\n */\n tilesLoaded() {\n const ret = wasm.wasmresourceinstancewrapper_tilesLoaded(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Convert the pseudo cache to display JSON with resolved labels.\n *\n * Unlike `toJson()` which returns tile_data (UUIDs) for domain values and concepts,\n * this method resolves UUIDs to display labels:\n * - domain-value: looks up label from node config\n * - concept/concept-list: looks up label from RDM cache\n * - reference (CLM): extracts display string from StaticReference\n * - boolean: looks up true/false labels from node config\n * - Other types: returns tile_data as-is\n *\n * Prerequisites: `populate()` must have been called to fill the pseudo_cache.\n *\n * @param rdmCache - WasmRdmCache for concept label lookups\n * @param nodeConfigManager - WasmNodeConfigManager for domain value lookups\n * @param language - Language code for labels (defaults to \"en\")\n * @param {WasmRdmCache} rdm_cache\n * @param {WasmNodeConfigManager} node_config_manager\n * @param {string | null | undefined} language\n * @param {StaticResourceRegistry} resource_registry\n * @returns {any}\n */\n toDisplayJson(rdm_cache, node_config_manager, language, resource_registry) {\n _assertClass(rdm_cache, WasmRdmCache);\n _assertClass(node_config_manager, WasmNodeConfigManager);\n var ptr0 = isLikeNone(language) ? 0 : passStringToWasm0(language, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n _assertClass(resource_registry, StaticResourceRegistry);\n const ret = wasm.wasmresourceinstancewrapper_toDisplayJson(this.__wbg_ptr, rdm_cache.__wbg_ptr, node_config_manager.__wbg_ptr, ptr0, len0, resource_registry.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Convert the pseudo cache to display JSON without RDM/config lookups.\n *\n * Same as toDisplayJson but without the RDM cache and node config manager.\n * This is useful when you don't have reference data loaded and just want\n * the basic JSON output (UUIDs won't be resolved to labels).\n * @param {string | null} [language]\n * @returns {any}\n */\n toDisplayJsonSimple(language) {\n var ptr0 = isLikeNone(language) ? 0 : passStringToWasm0(language, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_toDisplayJsonSimple(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * This replaces the JS `forJson()` method that makes 98+ WASM boundary\n * crossings per resource. By doing the traversal entirely in Rust,\n * we only cross the boundary once.\n *\n * Prerequisites: `populate()` must have been called to fill the pseudo_cache.\n * Fails with an error if tiles have not been loaded.\n * @returns {any}\n */\n toJson() {\n const ret = wasm.wasmresourceinstancewrapper_toJson(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Convert the instance to a complete StaticResource.\n *\n * Combines the resource metadata with tiles built from the pseudo cache.\n * This is the inverse of loading a resource - it produces a serializable\n * StaticResource that can be sent to an API for saving.\n *\n * Returns a StaticResource object ready for serialization.\n * @returns {any}\n */\n toResource() {\n const ret = wasm.wasmresourceinstancewrapper_toResource(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Convert the pseudo cache to a list of StaticTiles.\n *\n * Traverses the cache using the same visitor pattern as toJson(),\n * but collects tile data into StaticTile structures.\n *\n * Returns an array of StaticTile objects ready for serialization.\n * @returns {any}\n */\n toTiles() {\n const ret = wasm.wasmresourceinstancewrapper_toTiles(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Phase 4g: Try to atomically acquire loading lock for a nodegroup\n * Returns true if caller should proceed with loading, false if already being loaded\n * @param {string} nodegroup_id\n * @returns {boolean}\n */\n tryAcquireNodegroupLock(nodegroup_id) {\n const ptr0 = passStringToWasm0(nodegroup_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_tryAcquireNodegroupLock(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * WASM-exposed wrapper - returns structured values\n * @param {any} existing_values_js\n * @param {string[]} nodegroup_tile_ids\n * @param {string} nodegroup_id\n * @param {any} _node_objs_js\n * @param {any} _edges_js\n * @returns {WasmValuesFromNodegroupResult}\n */\n valuesFromResourceNodegroup(existing_values_js, nodegroup_tile_ids, nodegroup_id, _node_objs_js, _edges_js) {\n const ptr0 = passArrayJsValueToWasm0(nodegroup_tile_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(nodegroup_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourceinstancewrapper_valuesFromResourceNodegroup(this.__wbg_ptr, existing_values_js, ptr0, len0, ptr1, len1, _node_objs_js, _edges_js);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return WasmValuesFromNodegroupResult.__wrap(ret[0]);\n }\n}\nif (Symbol.dispose) WASMResourceInstanceWrapper.prototype[Symbol.dispose] = WASMResourceInstanceWrapper.prototype.free;\n\nexport class WASMResourceModelWrapper {\n static __wrap(ptr) {\n const obj = Object.create(WASMResourceModelWrapper.prototype);\n obj.__wbg_ptr = ptr;\n WASMResourceModelWrapperFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WASMResourceModelWrapperFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmresourcemodelwrapper_free(ptr, 0);\n }\n /**\n * @param {StaticGraph} graph\n */\n buildNodesForGraph(graph) {\n _assertClass(graph, StaticGraph);\n const ret = wasm.wasmresourcemodelwrapper_buildNodesForGraph(this.__wbg_ptr, graph.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n build_nodes() {\n const ret = wasm.wasmresourcemodelwrapper_build_nodes(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * Create a root PseudoNode (no parent)\n * @param {string | null} [child_node]\n * @returns {PseudoNode}\n */\n createPseudoNode(child_node) {\n var ptr0 = isLikeNone(child_node) ? 0 : passStringToWasm0(child_node, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourcemodelwrapper_createPseudoNode(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return PseudoNode.__wrap(ret[0]);\n }\n /**\n * Create a child PseudoNode by borrowing the parent (doesn't consume it)\n * @param {string} child_node\n * @param {PseudoNode} parent_pseudo\n * @returns {PseudoNode}\n */\n createPseudoNodeChild(child_node, parent_pseudo) {\n const ptr0 = passStringToWasm0(child_node, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(parent_pseudo, PseudoNode);\n const ret = wasm.wasmresourcemodelwrapper_createPseudoNodeChild(this.__wbg_ptr, ptr0, len0, parent_pseudo.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return PseudoNode.__wrap(ret[0]);\n }\n /**\n * Create a PseudoValue - the new unified pseudo type that includes runtime state\n * This will eventually replace createPseudoNode\n * @param {string | null | undefined} alias\n * @param {any} tile\n * @param {any} parent\n * @returns {PseudoValue}\n */\n createPseudoValue(alias, tile, parent) {\n var ptr0 = isLikeNone(alias) ? 0 : passStringToWasm0(alias, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourcemodelwrapper_createPseudoValue(this.__wbg_ptr, ptr0, len0, tile, parent);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return PseudoValue.__wrap(ret[0]);\n }\n /**\n * Get child node aliases for a given node ID\n * Returns array of alias strings instead of full node objects\n * @param {string | null} [node_id]\n * @returns {string[]}\n */\n getChildNodeAliases(node_id) {\n var ptr0 = isLikeNone(node_id) ? 0 : passStringToWasm0(node_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourcemodelwrapper_getChildNodeAliases(this.__wbg_ptr, ptr0, len0);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v2;\n }\n /**\n * @param {string | null} [node_id]\n * @returns {any}\n */\n getChildNodes(node_id) {\n var ptr0 = isLikeNone(node_id) ? 0 : passStringToWasm0(node_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourcemodelwrapper_getChildNodes(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {any}\n */\n getEdges() {\n const ret = wasm.wasmresourcemodelwrapper_getEdges(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Get the graph_id for this model\n * @returns {string}\n */\n getGraphId() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.wasmresourcemodelwrapper_getGraphId(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * Get a registered model by graph_id (returns None if not found or graph_id is null)\n * @param {string | null} [graph_id]\n * @returns {WASMResourceModelWrapper | undefined}\n */\n static getModelByGraphId(graph_id) {\n var ptr0 = isLikeNone(graph_id) ? 0 : passStringToWasm0(graph_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourcemodelwrapper_getModelByGraphId(ptr0, len0);\n return ret === 0 ? undefined : WASMResourceModelWrapper.__wrap(ret);\n }\n /**\n * Get node ID from alias\n * Returns just the node ID string instead of full node map\n * @param {string | null} [alias]\n * @returns {string}\n */\n getNodeIdFromAlias(alias) {\n let deferred3_0;\n let deferred3_1;\n try {\n var ptr0 = isLikeNone(alias) ? 0 : passStringToWasm0(alias, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourcemodelwrapper_getNodeIdFromAlias(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {string | null} [alias]\n * @returns {StaticNode}\n */\n getNodeObjectFromAlias(alias) {\n var ptr0 = isLikeNone(alias) ? 0 : passStringToWasm0(alias, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourcemodelwrapper_getNodeObjectFromAlias(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return StaticNode.__wrap(ret[0]);\n }\n /**\n * @param {string | null} [id]\n * @returns {StaticNode}\n */\n getNodeObjectFromId(id) {\n var ptr0 = isLikeNone(id) ? 0 : passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourcemodelwrapper_getNodeObjectFromId(this.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return StaticNode.__wrap(ret[0]);\n }\n /**\n * @returns {any}\n */\n getNodeObjects() {\n const ret = wasm.wasmresourcemodelwrapper_getNodeObjects(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {any}\n */\n getNodeObjectsByAlias() {\n const ret = wasm.wasmresourcemodelwrapper_getNodeObjectsByAlias(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Get nodegroup IDs\n * Returns array of IDs instead of full nodegroup objects\n * @returns {string[]}\n */\n getNodegroupIds() {\n const ret = wasm.wasmresourcemodelwrapper_getNodegroupIds(this.__wbg_ptr);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * Get nodegroup name by ID\n * Returns just the name string instead of full node object\n * Note: nodegroup_id is actually a node ID (the root node of the nodegroup)\n * @param {string | null} [nodegroup_id]\n * @returns {string}\n */\n getNodegroupName(nodegroup_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n var ptr0 = isLikeNone(nodegroup_id) ? 0 : passStringToWasm0(nodegroup_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourcemodelwrapper_getNodegroupName(this.__wbg_ptr, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @returns {any}\n */\n getNodegroupObjects() {\n const ret = wasm.wasmresourcemodelwrapper_getNodegroupObjects(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {any}\n */\n getPermittedNodegroups() {\n const ret = wasm.wasmresourcemodelwrapper_getPermittedNodegroups(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {StaticNode}\n */\n getRootNode() {\n const ret = wasm.wasmresourcemodelwrapper_getRootNode(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return StaticNode.__wrap(ret[0]);\n }\n /**\n * @returns {any}\n */\n get edges() {\n const ret = wasm.wasmresourcemodelwrapper_get_edges_prop(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {StaticGraph}\n */\n get graph() {\n const ret = wasm.wasmresourcemodelwrapper_get_graph(this.__wbg_ptr);\n return StaticGraph.__wrap(ret);\n }\n /**\n * @returns {any}\n */\n get nodegroups() {\n const ret = wasm.wasmresourcemodelwrapper_get_nodegroups_prop(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get nodesByAlias() {\n const ret = wasm.wasmresourcemodelwrapper_get_nodes_by_alias_prop(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get nodes() {\n const ret = wasm.wasmresourcemodelwrapper_get_nodes_prop(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {WKRM}\n */\n get wkrm() {\n const ret = wasm.wasmresourcemodelwrapper_get_wkrm(this.__wbg_ptr);\n return WKRM.__wrap(ret);\n }\n /**\n * Check if a model is registered (returns false if graph_id is null)\n * @param {string | null} [graph_id]\n * @returns {boolean}\n */\n static isModelRegistered(graph_id) {\n var ptr0 = isLikeNone(graph_id) ? 0 : passStringToWasm0(graph_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourcemodelwrapper_isModelRegistered(ptr0, len0);\n return ret !== 0;\n }\n /**\n * @param {string} nodegroup_id\n * @param {StaticTile | null} [_tile]\n * @returns {boolean}\n */\n isNodegroupPermitted(nodegroup_id, _tile) {\n const ptr0 = passStringToWasm0(nodegroup_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n let ptr1 = 0;\n if (!isLikeNone(_tile)) {\n _assertClass(_tile, StaticTile);\n ptr1 = _tile.__destroy_into_raw();\n }\n const ret = wasm.wasmresourcemodelwrapper_isNodegroupPermitted(this.__wbg_ptr, ptr0, len0, ptr1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] !== 0;\n }\n /**\n * @param {WKRM} wkrm\n * @param {StaticGraph} graph\n * @param {boolean} default_allow\n */\n constructor(wkrm, graph, default_allow) {\n _assertClass(wkrm, WKRM);\n _assertClass(graph, StaticGraph);\n const ret = wasm.wasmresourcemodelwrapper_new(wkrm.__wbg_ptr, graph.__wbg_ptr, default_allow);\n this.__wbg_ptr = ret;\n WASMResourceModelWrapperFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * Prune graph to only include permitted nodegroups and their dependencies\n * Filters nodes, edges, cards, nodegroups, and functions based on permissions\n * @param {string[] | null} [keep_functions]\n */\n pruneGraph(keep_functions) {\n var ptr0 = isLikeNone(keep_functions) ? 0 : passArrayJsValueToWasm0(keep_functions, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmresourcemodelwrapper_pruneGraph(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {boolean} default_allow\n */\n setDefaultAllowAllNodegroups(default_allow) {\n wasm.wasmresourcemodelwrapper_setDefaultAllowAllNodegroups(this.__wbg_ptr, default_allow);\n }\n /**\n * @param {any} edges\n */\n setGraphEdges(edges) {\n wasm.wasmresourcemodelwrapper_setGraphEdges(this.__wbg_ptr, edges);\n }\n /**\n * @param {any} nodegroups\n */\n setGraphNodegroups(nodegroups) {\n wasm.wasmresourcemodelwrapper_setGraphNodegroups(this.__wbg_ptr, nodegroups);\n }\n /**\n * @param {any} nodes\n */\n setGraphNodes(nodes) {\n wasm.wasmresourcemodelwrapper_setGraphNodes(this.__wbg_ptr, nodes);\n }\n /**\n * Set permitted nodegroups with support for both boolean and conditional rules.\n *\n * Accepts a Map where values can be:\n * - boolean: true/false for simple allow/deny\n * - object: { path: \".data.uuid.field\", allowed: [\"value1\", \"value2\"] }\n * for conditional filtering based on tile data\n *\n * Returns an error if any permission rule is invalid.\n * @param {Map<any, any>} permissions\n */\n setPermittedNodegroups(permissions) {\n const ret = wasm.wasmresourcemodelwrapper_setPermittedNodegroups(this.__wbg_ptr, permissions);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @param {StaticGraph} graph\n */\n set graph(graph) {\n _assertClass(graph, StaticGraph);\n var ptr0 = graph.__destroy_into_raw();\n wasm.wasmresourcemodelwrapper_set_graph(this.__wbg_ptr, ptr0);\n }\n}\nif (Symbol.dispose) WASMResourceModelWrapper.prototype[Symbol.dispose] = WASMResourceModelWrapper.prototype.free;\n\nexport class WKRM {\n static __wrap(ptr) {\n const obj = Object.create(WKRM.prototype);\n obj.__wbg_ptr = ptr;\n WKRMFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WKRMFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wkrm_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n get graphId() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.wkrm_get_graph_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {StaticGraphMeta}\n */\n get meta() {\n const ret = wasm.wkrm_get_meta(this.__wbg_ptr);\n return StaticGraphMeta.__wrap(ret);\n }\n /**\n * @returns {string}\n */\n get modelClassName() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.wkrm_get_model_class_name(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n get modelName() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.wkrm_get_model_name(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {any} meta_js\n */\n constructor(meta_js) {\n const ret = wasm.wkrm_new(meta_js);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0];\n WKRMFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {string} value\n */\n set graphId(value) {\n const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.wkrm_set_graph_id(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {any} value\n */\n set meta(value) {\n wasm.wkrm_set_meta(this.__wbg_ptr, value);\n }\n /**\n * @param {string} value\n */\n set modelClassName(value) {\n const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.wkrm_set_model_class_name(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @param {string} value\n */\n set modelName(value) {\n const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.wkrm_set_model_name(this.__wbg_ptr, ptr0, len0);\n }\n}\nif (Symbol.dispose) WKRM.prototype[Symbol.dispose] = WKRM.prototype.free;\n\n/**\n * WASM wrapper for CoercionResult\n */\nexport class WasmCoercionResult {\n static __wrap(ptr) {\n const obj = Object.create(WasmCoercionResult.prototype);\n obj.__wbg_ptr = ptr;\n WasmCoercionResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmCoercionResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmcoercionresult_free(ptr, 0);\n }\n /**\n * Get the display value (for ViewModel construction)\n * @returns {any}\n */\n get displayValue() {\n const ret = wasm.wasmcoercionresult_displayValue(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the error message (if any)\n * @returns {string | undefined}\n */\n get error() {\n const ret = wasm.wasmcoercionresult_error(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * Check if the result is an error\n * @returns {boolean}\n */\n get isError() {\n const ret = wasm.wasmcoercionresult_isError(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Check if the result is null (no value, no error)\n * @returns {boolean}\n */\n get isNull() {\n const ret = wasm.wasmcoercionresult_isNull(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Get the tile data (value for tile.data[nodeid])\n * @returns {any}\n */\n get tileData() {\n const ret = wasm.wasmcoercionresult_tileData(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) WasmCoercionResult.prototype[Symbol.dispose] = WasmCoercionResult.prototype.free;\n\nexport class WasmEnsureNodegroupResult {\n static __wrap(ptr) {\n const obj = Object.create(WasmEnsureNodegroupResult.prototype);\n obj.__wbg_ptr = ptr;\n WasmEnsureNodegroupResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmEnsureNodegroupResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmensurenodegroupresult_free(ptr, 0);\n }\n /**\n * PORT: js/graphManager.ts - allNodegroupsMap access\n * @returns {any}\n */\n get allNodegroupsMap() {\n const ret = wasm.wasmensurenodegroupresult_all_nodegroups_map(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get all values as a Map in a single boundary crossing\n * Replaces getValueAliases/getValue loop pattern (N+1 crossings -> 1 crossing)\n * @returns {any}\n */\n getAllValues() {\n const ret = wasm.wasmensurenodegroupresult_getAllValues(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get a structured value by alias\n * PORT: js/graphManager.ts:353 - recipe.nodeAlias lookup\n * @param {string | null} [alias]\n * @returns {PseudoList | undefined}\n */\n getValue(alias) {\n var ptr0 = isLikeNone(alias) ? 0 : passStringToWasm0(alias, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmensurenodegroupresult_getValue(this.__wbg_ptr, ptr0, len0);\n return ret === 0 ? undefined : PseudoList.__wrap(ret);\n }\n /**\n * Get value aliases (keys)\n * PORT: js/graphManager.ts:352 - iterating over result.recipes\n * @returns {string[]}\n */\n getValueAliases() {\n const ret = wasm.wasmensurenodegroupresult_getValueAliases(this.__wbg_ptr);\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * PORT: js/graphManager.ts - impliedNodegroups access\n * @returns {string[]}\n */\n get impliedNodegroups() {\n const ret = wasm.wasmensurenodegroupresult_implied_nodegroups(this.__wbg_ptr);\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n}\nif (Symbol.dispose) WasmEnsureNodegroupResult.prototype[Symbol.dispose] = WasmEnsureNodegroupResult.prototype.free;\n\n/**\n * Boolean node configuration with true/false labels.\n */\nexport class WasmNodeConfigBoolean {\n static __wrap(ptr) {\n const obj = Object.create(WasmNodeConfigBoolean.prototype);\n obj.__wbg_ptr = ptr;\n WasmNodeConfigBooleanFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmNodeConfigBooleanFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmnodeconfigboolean_free(ptr, 0);\n }\n /**\n * Get false labels as a JS object\n * @returns {any}\n */\n get falseLabel() {\n const ret = wasm.wasmnodeconfigboolean_falseLabel(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get label for a boolean value in a specific language\n * @param {boolean} value\n * @param {string} language\n * @returns {string | undefined}\n */\n getLabel(value, language) {\n const ptr0 = passStringToWasm0(language, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmnodeconfigboolean_getLabel(this.__wbg_ptr, value, ptr0, len0);\n let v2;\n if (ret[0] !== 0) {\n v2 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v2;\n }\n /**\n * Get true labels as a JS object\n * @returns {any}\n */\n get trueLabel() {\n const ret = wasm.wasmnodeconfigboolean_trueLabel(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) WasmNodeConfigBoolean.prototype[Symbol.dispose] = WasmNodeConfigBoolean.prototype.free;\n\n/**\n * Concept node configuration (RDM collection reference).\n */\nexport class WasmNodeConfigConcept {\n static __wrap(ptr) {\n const obj = Object.create(WasmNodeConfigConcept.prototype);\n obj.__wbg_ptr = ptr;\n WasmNodeConfigConceptFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmNodeConfigConceptFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmnodeconfigconcept_free(ptr, 0);\n }\n /**\n * Get the RDM collection ID\n * @returns {string}\n */\n get rdmCollection() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.wasmnodeconfigconcept_rdmCollection(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\nif (Symbol.dispose) WasmNodeConfigConcept.prototype[Symbol.dispose] = WasmNodeConfigConcept.prototype.free;\n\n/**\n * Domain value node configuration with options list.\n */\nexport class WasmNodeConfigDomain {\n static __wrap(ptr) {\n const obj = Object.create(WasmNodeConfigDomain.prototype);\n obj.__wbg_ptr = ptr;\n WasmNodeConfigDomainFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmNodeConfigDomainFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmnodeconfigdomain_free(ptr, 0);\n }\n /**\n * Get all option IDs\n * @returns {Array<any>}\n */\n getOptionIds() {\n const ret = wasm.wasmnodeconfigdomain_getOptionIds(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the selected option (if any)\n * @returns {WasmStaticDomainValue | undefined}\n */\n getSelected() {\n const ret = wasm.wasmnodeconfigdomain_getSelected(this.__wbg_ptr);\n return ret === 0 ? undefined : WasmStaticDomainValue.__wrap(ret);\n }\n /**\n * Get all options as an array\n * @returns {Array<any>}\n */\n get options() {\n const ret = wasm.wasmnodeconfigdomain_options(this.__wbg_ptr);\n return ret;\n }\n /**\n * Find option by ID\n * @param {string} id\n * @returns {WasmStaticDomainValue | undefined}\n */\n valueFromId(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmnodeconfigdomain_valueFromId(this.__wbg_ptr, ptr0, len0);\n return ret === 0 ? undefined : WasmStaticDomainValue.__wrap(ret);\n }\n}\nif (Symbol.dispose) WasmNodeConfigDomain.prototype[Symbol.dispose] = WasmNodeConfigDomain.prototype.free;\n\n/**\n * Manager for caching and retrieving node configurations.\n */\nexport class WasmNodeConfigManager {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmNodeConfigManagerFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmnodeconfigmanager_free(ptr, 0);\n }\n /**\n * Clear all cached configs\n */\n clear() {\n wasm.wasmnodeconfigmanager_clear(this.__wbg_ptr);\n }\n /**\n * Build configs directly from a StaticGraph (more efficient than fromGraphJson)\n *\n * This avoids the JSON stringify/parse round-trip by taking the WASM\n * graph object directly.\n * @param {StaticGraph} graph\n */\n fromGraph(graph) {\n _assertClass(graph, StaticGraph);\n wasm.wasmnodeconfigmanager_fromGraph(this.__wbg_ptr, graph.__wbg_ptr);\n }\n /**\n * Build configs from a graph JSON string\n * @param {string} graph_json\n */\n fromGraphJson(graph_json) {\n const ptr0 = passStringToWasm0(graph_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmnodeconfigmanager_fromGraphJson(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * Get boolean config for a node (returns None if nodeid is null)\n * @param {string | null} [nodeid]\n * @returns {WasmNodeConfigBoolean | undefined}\n */\n getBoolean(nodeid) {\n var ptr0 = isLikeNone(nodeid) ? 0 : passStringToWasm0(nodeid, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmnodeconfigmanager_getBoolean(this.__wbg_ptr, ptr0, len0);\n return ret === 0 ? undefined : WasmNodeConfigBoolean.__wrap(ret);\n }\n /**\n * Get concept config for a node (returns None if nodeid is null)\n * @param {string | null} [nodeid]\n * @returns {WasmNodeConfigConcept | undefined}\n */\n getConcept(nodeid) {\n var ptr0 = isLikeNone(nodeid) ? 0 : passStringToWasm0(nodeid, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmnodeconfigmanager_getConcept(this.__wbg_ptr, ptr0, len0);\n return ret === 0 ? undefined : WasmNodeConfigConcept.__wrap(ret);\n }\n /**\n * Get the config type for a node (returns None if nodeid is null)\n * @param {string | null} [nodeid]\n * @returns {string | undefined}\n */\n getConfigType(nodeid) {\n var ptr0 = isLikeNone(nodeid) ? 0 : passStringToWasm0(nodeid, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmnodeconfigmanager_getConfigType(this.__wbg_ptr, ptr0, len0);\n let v2;\n if (ret[0] !== 0) {\n v2 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v2;\n }\n /**\n * Get domain config for a node (returns None if nodeid is null)\n * @param {string | null} [nodeid]\n * @returns {WasmNodeConfigDomain | undefined}\n */\n getDomain(nodeid) {\n var ptr0 = isLikeNone(nodeid) ? 0 : passStringToWasm0(nodeid, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmnodeconfigmanager_getDomain(this.__wbg_ptr, ptr0, len0);\n return ret === 0 ? undefined : WasmNodeConfigDomain.__wrap(ret);\n }\n /**\n * Get reference config for a node (returns None if nodeid is null)\n * @param {string | null} [nodeid]\n * @returns {WasmNodeConfigReference | undefined}\n */\n getReference(nodeid) {\n var ptr0 = isLikeNone(nodeid) ? 0 : passStringToWasm0(nodeid, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmnodeconfigmanager_getReference(this.__wbg_ptr, ptr0, len0);\n return ret === 0 ? undefined : WasmNodeConfigReference.__wrap(ret);\n }\n /**\n * Check if a node has config (returns false if nodeid is null)\n * @param {string | null} [nodeid]\n * @returns {boolean}\n */\n hasConfig(nodeid) {\n var ptr0 = isLikeNone(nodeid) ? 0 : passStringToWasm0(nodeid, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmnodeconfigmanager_hasConfig(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Get number of cached configs\n * @returns {number}\n */\n get length() {\n const ret = wasm.wasmnodeconfigmanager_length(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * Look up domain value by ID (returns None if any param is null)\n * @param {string | null} [nodeid]\n * @param {string | null} [value_id]\n * @returns {WasmStaticDomainValue | undefined}\n */\n lookupDomainValue(nodeid, value_id) {\n var ptr0 = isLikeNone(nodeid) ? 0 : passStringToWasm0(nodeid, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(value_id) ? 0 : passStringToWasm0(value_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.wasmnodeconfigmanager_lookupDomainValue(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n return ret === 0 ? undefined : WasmStaticDomainValue.__wrap(ret);\n }\n /**\n * Create a new empty manager\n */\n constructor() {\n const ret = wasm.wasmnodeconfigmanager_new();\n this.__wbg_ptr = ret;\n WasmNodeConfigManagerFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n}\nif (Symbol.dispose) WasmNodeConfigManager.prototype[Symbol.dispose] = WasmNodeConfigManager.prototype.free;\n\n/**\n * Reference node configuration (CLM controlled list).\n */\nexport class WasmNodeConfigReference {\n static __wrap(ptr) {\n const obj = Object.create(WasmNodeConfigReference.prototype);\n obj.__wbg_ptr = ptr;\n WasmNodeConfigReferenceFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmNodeConfigReferenceFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmnodeconfigreference_free(ptr, 0);\n }\n /**\n * Get the controlled list ID\n * @returns {string}\n */\n get controlledList() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.wasmnodeconfigreference_controlledList(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * Get the collection ID (controlledList or rdmCollection)\n * @returns {string | undefined}\n */\n getCollectionId() {\n const ret = wasm.wasmnodeconfigreference_getCollectionId(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * Get whether multi-value is enabled\n * @returns {boolean}\n */\n get multiValue() {\n const ret = wasm.wasmnodeconfigreference_multiValue(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Get the RDM collection ID\n * @returns {string}\n */\n get rdmCollection() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.wasmnodeconfigreference_rdmCollection(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n}\nif (Symbol.dispose) WasmNodeConfigReference.prototype[Symbol.dispose] = WasmNodeConfigReference.prototype.free;\n\nexport class WasmNodegroupResult {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmNodegroupResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmnodegroupresult_free(ptr, 0);\n }\n /**\n * Get a value by index\n * @param {number} index\n * @returns {PseudoValue | undefined}\n */\n getValue(index) {\n const ret = wasm.wasmnodegroupresult_getValue(this.__wbg_ptr, index);\n return ret === 0 ? undefined : PseudoValue.__wrap(ret);\n }\n /**\n * Get implied nodegroups\n * @returns {string[]}\n */\n get impliedNodegroups() {\n const ret = wasm.wasmnodegroupresult_impliedNodegroups(this.__wbg_ptr);\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * Get number of values\n * @returns {number}\n */\n get valueCount() {\n const ret = wasm.wasmnodegroupresult_valueCount(this.__wbg_ptr);\n return ret >>> 0;\n }\n}\nif (Symbol.dispose) WasmNodegroupResult.prototype[Symbol.dispose] = WasmNodegroupResult.prototype.free;\n\n/**\n * WASM wrapper for PopulateResult\n * PORT: Phase 4c - Exposes structured values to JavaScript\n */\nexport class WasmPopulateResult {\n static __wrap(ptr) {\n const obj = Object.create(WasmPopulateResult.prototype);\n obj.__wbg_ptr = ptr;\n WasmPopulateResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmPopulateResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmpopulateresult_free(ptr, 0);\n }\n /**\n * @returns {any}\n */\n get allNodegroupsMap() {\n const ret = wasm.wasmpopulateresult_all_nodegroups_map(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {any}\n */\n get allValuesMap() {\n const ret = wasm.wasmpopulateresult_all_values_map(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get all values as a Map in a single boundary crossing\n * Replaces getValueAliases/getValue loop pattern (N+1 crossings -> 1 crossing)\n * @returns {any}\n */\n getAllValues() {\n const ret = wasm.wasmpopulateresult_getAllValues(this.__wbg_ptr);\n return ret;\n }\n /**\n * PORT: js/graphManager.ts:670 - accessing value by alias\n * @param {string | null} [alias]\n * @returns {PseudoList | undefined}\n */\n getValue(alias) {\n var ptr0 = isLikeNone(alias) ? 0 : passStringToWasm0(alias, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmpopulateresult_getValue(this.__wbg_ptr, ptr0, len0);\n return ret === 0 ? undefined : PseudoList.__wrap(ret);\n }\n /**\n * PORT: js/graphManager.ts:669 - iterating over result to get aliases\n * @returns {string[]}\n */\n getValueAliases() {\n const ret = wasm.wasmpopulateresult_getValueAliases(this.__wbg_ptr);\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n}\nif (Symbol.dispose) WasmPopulateResult.prototype[Symbol.dispose] = WasmPopulateResult.prototype.free;\n\n/**\n * Cache for RDM collections, enabling concept UUID -> label lookups\n */\nexport class WasmRdmCache {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmRdmCacheFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmrdmcache_free(ptr, 0);\n }\n /**\n * Add a collection from JSON\n *\n * @param collectionId - The collection identifier\n * @param conceptsJson - JSON array of concepts with {id, prefLabel: {lang: label}}\n * @param {string} collection_id\n * @param {string} concepts_json\n */\n addCollectionFromJson(collection_id, concepts_json) {\n const ptr0 = passStringToWasm0(collection_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(concepts_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.wasmrdmcache_addCollectionFromJson(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * Add collection(s) from SKOS RDF/XML.\n *\n * Parses the XML, converts each ConceptScheme/Collection to an\n * RdmCollection, and inserts them into the cache. Returns the\n * list of collection IDs that were added.\n *\n * This is the XML counterpart to `addCollectionFromJson` — use it\n * as a fallback when the JSON endpoint is unavailable.\n * @param {string} xml_content\n * @param {string} base_uri\n * @returns {string[]}\n */\n addCollectionsFromSkosXml(xml_content, base_uri) {\n const ptr0 = passStringToWasm0(xml_content, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(base_uri, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.wasmrdmcache_addCollectionsFromSkosXml(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v3 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v3;\n }\n /**\n * Clear all cached collections\n */\n clear() {\n wasm.wasmrdmcache_clear(this.__wbg_ptr);\n }\n /**\n * Get all loaded collection IDs\n * @returns {string[]}\n */\n getCollectionIds() {\n const ret = wasm.wasmrdmcache_getCollectionIds(this.__wbg_ptr);\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n /**\n * Get concept ID from value ID\n *\n * Returns the concept ID that contains the given value ID.\n *\n * @param collectionId - The collection to search in\n * @param valueId - The value UUID\n * @returns The concept ID, or undefined if not found or any param is null\n * @param {string | null} [collection_id]\n * @param {string | null} [value_id]\n * @returns {string | undefined}\n */\n getConceptIdForValue(collection_id, value_id) {\n var ptr0 = isLikeNone(collection_id) ? 0 : passStringToWasm0(collection_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(value_id) ? 0 : passStringToWasm0(value_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.wasmrdmcache_getConceptIdForValue(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n let v3;\n if (ret[0] !== 0) {\n v3 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v3;\n }\n /**\n * Get the first parent ID for a concept\n *\n * @param collectionId - The collection to search in\n * @param conceptId - The concept UUID\n * @returns The parent concept ID, or undefined if no parent (top-level concept) or any param is null\n * @param {string | null} [collection_id]\n * @param {string | null} [concept_id]\n * @returns {string | undefined}\n */\n getParentId(collection_id, concept_id) {\n var ptr0 = isLikeNone(collection_id) ? 0 : passStringToWasm0(collection_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(concept_id) ? 0 : passStringToWasm0(concept_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.wasmrdmcache_getParentId(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n let v3;\n if (ret[0] !== 0) {\n v3 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v3;\n }\n /**\n * Check if a collection is loaded (returns false if collection_id is null)\n * @param {string | null} [collection_id]\n * @returns {boolean}\n */\n hasCollection(collection_id) {\n var ptr0 = isLikeNone(collection_id) ? 0 : passStringToWasm0(collection_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmrdmcache_hasCollection(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Get number of cached collections\n * @returns {number}\n */\n get length() {\n const ret = wasm.wasmrdmcache_length(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * Look up full concept info\n *\n * @param collectionId - The collection to search in\n * @param conceptId - The concept UUID\n * @returns JSON object with concept info, or undefined if not found or any param is null\n * @param {string | null} [collection_id]\n * @param {string | null} [concept_id]\n * @returns {any}\n */\n lookupConcept(collection_id, concept_id) {\n var ptr0 = isLikeNone(collection_id) ? 0 : passStringToWasm0(collection_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(concept_id) ? 0 : passStringToWasm0(concept_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.wasmrdmcache_lookupConcept(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Look up the label for a concept\n *\n * @param collectionId - The collection to search in\n * @param conceptId - The concept UUID\n * @param language - The language code (e.g., \"en\")\n * @returns The label string, or undefined if not found or any param is null\n * @param {string | null} [collection_id]\n * @param {string | null} [concept_id]\n * @param {string | null} [language]\n * @returns {string | undefined}\n */\n lookupLabel(collection_id, concept_id, language) {\n var ptr0 = isLikeNone(collection_id) ? 0 : passStringToWasm0(collection_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(concept_id) ? 0 : passStringToWasm0(concept_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(language) ? 0 : passStringToWasm0(language, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.wasmrdmcache_lookupLabel(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);\n let v4;\n if (ret[0] !== 0) {\n v4 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v4;\n }\n /**\n * Look up a value by its VALUE ID\n *\n * This is the primary lookup method used by ViewModels.\n * Returns full value info including concept ID and language.\n *\n * @param collectionId - The collection to search in\n * @param valueId - The value UUID (not concept UUID)\n * @returns RdmValueInfo object, or undefined if not found or any param is null\n * @param {string | null} [collection_id]\n * @param {string | null} [value_id]\n * @returns {any}\n */\n lookupValue(collection_id, value_id) {\n var ptr0 = isLikeNone(collection_id) ? 0 : passStringToWasm0(collection_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(value_id) ? 0 : passStringToWasm0(value_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.wasmrdmcache_lookupValue(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Create a new empty cache\n */\n constructor() {\n const ret = wasm.wasmrdmcache_new();\n this.__wbg_ptr = ret;\n WasmRdmCacheFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * Remove a specific collection from the cache\n * @param {string} collection_id\n * @returns {boolean}\n */\n removeCollection(collection_id) {\n const ptr0 = passStringToWasm0(collection_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmrdmcache_removeCollection(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Resolve labels to UUIDs using this cache for lookups.\n *\n * This is more efficient than `resolveLabelsWithLookup` because it uses\n * the cache's internal indexes instead of requiring JS to build a lookup table.\n *\n * @param treeJson - JSON string of the tree to resolve\n * @param aliasToCollection - Map<string, string> mapping node aliases to collection IDs\n * @param strict - If true, return error for unresolved labels\n * @returns Resolved tree object with labels replaced by UUIDs\n * @param {string} tree_json\n * @param {any} alias_to_collection\n * @param {boolean} strict\n * @returns {any}\n */\n resolveLabels(tree_json, alias_to_collection, strict) {\n const ptr0 = passStringToWasm0(tree_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmrdmcache_resolveLabels(this.__wbg_ptr, ptr0, len0, alias_to_collection, strict);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * Validate that a value exists in a collection\n *\n * @param collectionId - The collection to check\n * @param valueId - The value UUID to validate\n * @returns true if the value exists (returns false if any param is null)\n * @param {string | null} [collection_id]\n * @param {string | null} [value_id]\n * @returns {boolean}\n */\n validateValue(collection_id, value_id) {\n var ptr0 = isLikeNone(collection_id) ? 0 : passStringToWasm0(collection_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(value_id) ? 0 : passStringToWasm0(value_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.wasmrdmcache_validateValue(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n return ret !== 0;\n }\n}\nif (Symbol.dispose) WasmRdmCache.prototype[Symbol.dispose] = WasmRdmCache.prototype.free;\n\n/**\n * WASM-exposed span handle for use from JavaScript\n */\nexport class WasmSpan {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmSpanFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmspan_free(ptr, 0);\n }\n end() {\n wasm.wasmspan_end(this.__wbg_ptr);\n }\n /**\n * @param {string} name\n */\n constructor(name) {\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmspan_new(ptr0, len0);\n this.__wbg_ptr = ret;\n WasmSpanFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {string} key\n * @param {any} value\n */\n setAttribute(key, value) {\n const ptr0 = passStringToWasm0(key, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.wasmspan_setAttribute(this.__wbg_ptr, ptr0, len0, value);\n }\n}\nif (Symbol.dispose) WasmSpan.prototype[Symbol.dispose] = WasmSpan.prototype.free;\n\n/**\n * A domain value option from node config.\n */\nexport class WasmStaticDomainValue {\n static __wrap(ptr) {\n const obj = Object.create(WasmStaticDomainValue.prototype);\n obj.__wbg_ptr = ptr;\n WasmStaticDomainValueFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmStaticDomainValueFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmstaticdomainvalue_free(ptr, 0);\n }\n /**\n * Get display string (defaults to English)\n * @returns {string}\n */\n display() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.wasmstaticdomainvalue_display(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * Get the value ID\n * @returns {string}\n */\n get id() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.wasmstaticdomainvalue_id(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * Get text for a specific language\n * @param {string} language\n * @returns {string | undefined}\n */\n lang(language) {\n const ptr0 = passStringToWasm0(language, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmstaticdomainvalue_lang(this.__wbg_ptr, ptr0, len0);\n let v2;\n if (ret[0] !== 0) {\n v2 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v2;\n }\n /**\n * Get whether this is selected\n * @returns {boolean}\n */\n get selected() {\n const ret = wasm.wasmstaticdomainvalue_selected(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Get all text labels as a JS object\n * @returns {any}\n */\n get text() {\n const ret = wasm.wasmstaticdomainvalue_text(this.__wbg_ptr);\n return ret;\n }\n}\nif (Symbol.dispose) WasmStaticDomainValue.prototype[Symbol.dispose] = WasmStaticDomainValue.prototype.free;\n\n/**\n * WASM wrapper for ValuesFromNodegroupResult\n */\nexport class WasmValuesFromNodegroupResult {\n static __wrap(ptr) {\n const obj = Object.create(WasmValuesFromNodegroupResult.prototype);\n obj.__wbg_ptr = ptr;\n WasmValuesFromNodegroupResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmValuesFromNodegroupResultFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmvaluesfromnodegroupresult_free(ptr, 0);\n }\n /**\n * Get all values as a Map in a single boundary crossing\n * @returns {any}\n */\n getAllValues() {\n const ret = wasm.wasmvaluesfromnodegroupresult_getAllValues(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string[]}\n */\n get impliedNodegroups() {\n const ret = wasm.wasmvaluesfromnodegroupresult_implied_nodegroups(this.__wbg_ptr);\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n }\n}\nif (Symbol.dispose) WasmValuesFromNodegroupResult.prototype[Symbol.dispose] = WasmValuesFromNodegroupResult.prototype.free;\n\n/**\n * Apply mutations that may create a new graph.\n *\n * If `graph` is null/undefined, the first mutation must be CreateGraph which\n * creates a new graph from scratch. Remaining mutations are applied to the new graph.\n *\n * If `graph` is provided, the first mutation must NOT be CreateGraph,\n * and all mutations are applied to the existing graph.\n *\n * # Arguments\n * * `mutations_json` - JSON string containing a MutationRequest\n * * `graph` - Optional existing graph\n *\n * # Returns\n * The resulting graph\n * @param {string} mutations_json\n * @param {StaticGraph | null} [graph]\n * @returns {StaticGraph}\n */\nexport function applyMutationsCreate(mutations_json, graph) {\n const ptr0 = passStringToWasm0(mutations_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n let ptr1 = 0;\n if (!isLikeNone(graph)) {\n _assertClass(graph, StaticGraph);\n ptr1 = graph.__destroy_into_raw();\n }\n const ret = wasm.applyMutationsCreate(ptr0, len0, ptr1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return StaticGraph.__wrap(ret[0]);\n}\n\n/**\n * Apply mutations to a graph from a JSON string.\n *\n * # Arguments\n * * `graph` - The source graph (will be cloned, not modified)\n * * `mutations_json` - JSON string containing a MutationRequest\n *\n * # Returns\n * A new StaticGraph with mutations applied\n *\n * # Example JSON\n * ```json\n * {\n * \"mutations\": [\n * {\n * \"AddNode\": {\n * \"parent_alias\": \"root\",\n * \"alias\": \"child\",\n * \"name\": \"Child Node\",\n * \"cardinality\": \"N\",\n * \"datatype\": \"string\",\n * \"ontology_class\": \"E41_Appellation\",\n * \"parent_property\": \"P1_is_identified_by\",\n * \"options\": {}\n * }\n * }\n * ],\n * \"options\": {\n * \"autocreate_card\": true,\n * \"autocreate_widget\": true\n * }\n * }\n * ```\n * @param {StaticGraph} graph\n * @param {string} mutations_json\n * @returns {StaticGraph}\n */\nexport function applyMutationsFromJson(graph, mutations_json) {\n _assertClass(graph, StaticGraph);\n const ptr0 = passStringToWasm0(mutations_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.applyMutationsFromJson(graph.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return StaticGraph.__wrap(ret[0]);\n}\n\n/**\n * Apply mutations with extension support.\n *\n * This version uses the global extension mutation registry to handle\n * Extension mutations. Register handlers with `registerExtensionMutation`.\n *\n * # Arguments\n * * `graph` - The source graph\n * * `mutations_json` - JSON string containing a MutationRequest\n *\n * # Returns\n * A new StaticGraph with mutations applied\n * @param {StaticGraph} graph\n * @param {string} mutations_json\n * @returns {StaticGraph}\n */\nexport function applyMutationsWithExtensions(graph, mutations_json) {\n _assertClass(graph, StaticGraph);\n const ptr0 = passStringToWasm0(mutations_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.applyMutationsWithExtensions(graph.__wbg_ptr, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return StaticGraph.__wrap(ret[0]);\n}\n\n/**\n * Batch merge resources from multiple JSON strings\n *\n * Takes an array of JSON strings. Each string can be:\n * - An array of StaticResource objects: [{...}, {...}]\n * - A single StaticResource object: {resourceinstance: {...}, tiles: [...]}\n * - A BusinessDataWrapper: {business_data: {resources: [...]}}\n *\n * Groups all resources by resourceinstanceid and merges each group.\n *\n * Args:\n * batches_json: Array of JSON strings containing resources in any supported format\n * recompute_descriptors: If true, recomputes descriptors from merged tiles using\n * graphs from the registry. Graphs must be registered via WASMResourceModelWrapper.\n *\n * Returns:\n * {resources: StaticResource[], warnings: string[]}\n * @param {string} batches_json\n * @param {boolean | null} [recompute_descriptors]\n * @param {boolean | null} [strict]\n * @returns {any}\n */\nexport function batchMergeResources(batches_json, recompute_descriptors, strict) {\n const ptr0 = passStringToWasm0(batches_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.batchMergeResources(ptr0, len0, isLikeNone(recompute_descriptors) ? 0xFFFFFF : recompute_descriptors ? 1 : 0, isLikeNone(strict) ? 0xFFFFFF : strict ? 1 : 0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Batch convert multiple tiled resources to JSON trees\n *\n * Args:\n * resources_json: Array of resources as JSON string\n * graph: StaticGraph wrapper\n * strict: If true, fail on any conversion error\n *\n * Returns:\n * {success: bool, results: [...], count: N, errors: [...], error_count: M}\n * @param {string} resources_json\n * @param {StaticGraph} graph\n * @param {boolean} strict\n * @returns {any}\n */\nexport function batchTilesToTrees(resources_json, graph, strict) {\n const ptr0 = passStringToWasm0(resources_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(graph, StaticGraph);\n const ret = wasm.batchTilesToTrees(ptr0, len0, graph.__wbg_ptr, strict);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Batch convert multiple JSON trees to tiles in parallel\n *\n * Args:\n * trees_json: Array of tree structures as JSON string\n * graph: StaticGraph wrapper\n * from_camel: If true, convert keys from camelCase to snake_case\n * strict: If true, fail on any validation error\n * id_keys_json: Optional JSON array of keys for deterministic UUID v5 generation (one per tree)\n * random_ids: Optional boolean - if not True and no id_keys, will try to use `slug`\n * descriptor with uuid5, erroring instead of using uuid4.\n *\n * Returns:\n * BusinessDataWrapper format: {business_data: {resources: [...]}, errors: [...]}\n *\n * Note: In WASM, parallelism is limited by JavaScript's single-threaded nature,\n * but we can still optimize by processing in batches and reducing boundary crossings.\n * @param {string} trees_json\n * @param {StaticGraph} graph\n * @param {boolean} from_camel\n * @param {boolean} strict\n * @param {string | null} [id_keys_json]\n * @param {boolean | null} [random_ids]\n * @returns {any}\n */\nexport function batchTreesToTiles(trees_json, graph, from_camel, strict, id_keys_json, random_ids) {\n const ptr0 = passStringToWasm0(trees_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(graph, StaticGraph);\n var ptr1 = isLikeNone(id_keys_json) ? 0 : passStringToWasm0(id_keys_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.batchTreesToTiles(ptr0, len0, graph.__wbg_ptr, from_camel, strict, ptr1, len1, isLikeNone(random_ids) ? 0xFFFFFF : random_ids ? 1 : 0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Build a mapping from node alias to collection ID.\n *\n * @param graphJson - JSON string of the graph definition\n * @param resolvableDatatypes - Array of datatypes to resolve (default: concept, concept-list)\n * @param configKeys - Array of config keys to check (default: rdmCollection, controlledList)\n * @returns Map<string, string> of alias -> collectionId\n * @param {string} graph_json\n * @param {string[] | null} [resolvable_datatypes]\n * @param {string[] | null} [config_keys]\n * @returns {any}\n */\nexport function buildAliasToCollectionMap(graph_json, resolvable_datatypes, config_keys) {\n const ptr0 = passStringToWasm0(graph_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(resolvable_datatypes) ? 0 : passArrayJsValueToWasm0(resolvable_datatypes, wasm.__wbindgen_malloc);\n var len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(config_keys) ? 0 : passArrayJsValueToWasm0(config_keys, wasm.__wbindgen_malloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.buildAliasToCollectionMap(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Build a graph and collections from the 3-CSV model format.\n *\n * Parses graph.csv, nodes.csv, and collections.csv, validates them,\n * and builds the graph via the standard mutation pipeline.\n *\n * # Arguments\n * * `graph_csv` - Contents of graph.csv\n * * `nodes_csv` - Contents of nodes.csv\n * * `collections_csv` - Contents of collections.csv (optional, pass null/undefined if none)\n * * `rdm_namespace` - RDM namespace string (UUID or URL) for deterministic ID generation\n *\n * # Returns\n * JSON string containing `{ \"graph\": <graph>, \"collections\": [<collection>, ...], \"diagnostics\": [...] }`\n * @param {string} graph_csv\n * @param {string} nodes_csv\n * @param {string | null | undefined} collections_csv\n * @param {string} rdm_namespace\n * @returns {any}\n */\nexport function buildGraphFromModelCsvs(graph_csv, nodes_csv, collections_csv, rdm_namespace) {\n const ptr0 = passStringToWasm0(graph_csv, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(nodes_csv, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(collections_csv) ? 0 : passStringToWasm0(collections_csv, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(rdm_namespace, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n const ret = wasm.buildGraphFromModelCsvs(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Build complete prebuild export data (graphs only, no RDM from WASM).\n *\n * Returns `{graphFiles: [{relativePath, content}], referenceDataFiles: [...]}`.\n * @param {string} base_uri\n * @returns {any}\n */\nexport function buildPrebuildExport(base_uri) {\n const ptr0 = passStringToWasm0(base_uri, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.buildPrebuildExport(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Build resource instances from a business data CSV.\n *\n * Resolves node aliases to UUIDs from the graph, concept labels to UUIDs\n * from the collections. Generates deterministic UUIDs for resources and tiles.\n *\n * # Arguments\n * * `csv_data` - The CSV string with ResourceID as first column, node aliases as remaining columns\n * * `graph_json` - JSON string of the built StaticGraph (from buildGraphFromModelCsvs)\n * * `collections_json` - JSON string of the built collections array (from buildGraphFromModelCsvs)\n * * `default_language` - Default language code (optional, defaults to \"en\")\n * * `strict_concepts` - Whether to error on unresolved concept labels (optional, defaults to true)\n *\n * # Returns\n * JSON object: `{ \"business_data\": { \"resources\": [...] } }`\n * @param {string} csv_data\n * @param {string} graph_json\n * @param {string} collections_json\n * @param {string | null} [default_language]\n * @param {boolean | null} [strict_concepts]\n * @returns {any}\n */\nexport function buildResourcesFromBusinessCsv(csv_data, graph_json, collections_json, default_language, strict_concepts) {\n const ptr0 = passStringToWasm0(csv_data, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(graph_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(collections_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n var ptr3 = isLikeNone(default_language) ? 0 : passStringToWasm0(default_language, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len3 = WASM_VECTOR_LEN;\n const ret = wasm.buildResourcesFromBusinessCsv(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, isLikeNone(strict_concepts) ? 0xFFFFFF : strict_concepts ? 1 : 0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Convert tiles to a card-structured tree.\n *\n * Groups data by the card/widget hierarchy (UI structure) rather than by\n * node edges (data structure). Each card contains its widgets' values and\n * nested child cards.\n *\n * Args:\n * resource_json: Resource JSON string (same format as tilesToTree)\n * graph: StaticGraph wrapper (must have cards loaded)\n *\n * Returns:\n * Card-structured tree with widgets and nested cards\n * @param {string} resource_json\n * @param {StaticGraph} graph\n * @returns {any}\n */\nexport function cardsToTree(resource_json, graph) {\n const ptr0 = passStringToWasm0(resource_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(graph, StaticGraph);\n const ret = wasm.cardsToTree(ptr0, len0, graph.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Clear the global RDM namespace.\n */\nexport function clearRdmNamespace() {\n wasm.clearRdmNamespace();\n}\n\n/**\n * Clear timing stats (WASM version)\n */\nexport function clearRscvTimings() {\n wasm.clearRscvTimings();\n}\n\n/**\n * Coerce a value to a boolean\n * @param {any} value\n * @param {any} config\n * @returns {WasmCoercionResult}\n */\nexport function coerceBoolean(value, config) {\n const ret = wasm.coerceBoolean(value, config);\n return WasmCoercionResult.__wrap(ret);\n}\n\n/**\n * Coerce a value to a concept list\n * @param {any} value\n * @param {any} config\n * @returns {WasmCoercionResult}\n */\nexport function coerceConceptList(value, config) {\n const ret = wasm.coerceConceptList(value, config);\n return WasmCoercionResult.__wrap(ret);\n}\n\n/**\n * Coerce a value to a concept value\n * @param {any} value\n * @param {any} config\n * @returns {WasmCoercionResult}\n */\nexport function coerceConceptValue(value, config) {\n const ret = wasm.coerceConceptValue(value, config);\n return WasmCoercionResult.__wrap(ret);\n}\n\n/**\n * Coerce a value to a date\n * @param {any} value\n * @returns {WasmCoercionResult}\n */\nexport function coerceDate(value) {\n const ret = wasm.coerceDate(value);\n return WasmCoercionResult.__wrap(ret);\n}\n\n/**\n * Coerce a value to a domain value\n * @param {any} value\n * @param {any} config\n * @returns {WasmCoercionResult}\n */\nexport function coerceDomainValue(value, config) {\n const ret = wasm.coerceDomainValue(value, config);\n return WasmCoercionResult.__wrap(ret);\n}\n\n/**\n * Coerce a value to a domain value list\n * @param {any} value\n * @param {any} config\n * @returns {WasmCoercionResult}\n */\nexport function coerceDomainValueList(value, config) {\n const ret = wasm.coerceDomainValueList(value, config);\n return WasmCoercionResult.__wrap(ret);\n}\n\n/**\n * Coerce a value to an EDTF string\n * @param {any} value\n * @returns {WasmCoercionResult}\n */\nexport function coerceEdtf(value) {\n const ret = wasm.coerceEdtf(value);\n return WasmCoercionResult.__wrap(ret);\n}\n\n/**\n * Coerce a value to GeoJSON\n * @param {any} value\n * @returns {WasmCoercionResult}\n */\nexport function coerceGeoJson(value) {\n const ret = wasm.coerceGeoJson(value);\n return WasmCoercionResult.__wrap(ret);\n}\n\n/**\n * Coerce a value to a non-localized string\n * @param {any} value\n * @returns {WasmCoercionResult}\n */\nexport function coerceNonLocalizedString(value) {\n const ret = wasm.coerceNonLocalizedString(value);\n return WasmCoercionResult.__wrap(ret);\n}\n\n/**\n * Coerce a value to a number\n * @param {any} value\n * @returns {WasmCoercionResult}\n */\nexport function coerceNumber(value) {\n const ret = wasm.coerceNumber(value);\n return WasmCoercionResult.__wrap(ret);\n}\n\n/**\n * Coerce a value to a resource instance\n * @param {any} value\n * @param {any} config\n * @returns {WasmCoercionResult}\n */\nexport function coerceResourceInstance(value, config) {\n const ret = wasm.coerceResourceInstance(value, config);\n return WasmCoercionResult.__wrap(ret);\n}\n\n/**\n * Coerce a value to a resource instance list\n * @param {any} value\n * @param {any} config\n * @returns {WasmCoercionResult}\n */\nexport function coerceResourceInstanceList(value, config) {\n const ret = wasm.coerceResourceInstanceList(value, config);\n return WasmCoercionResult.__wrap(ret);\n}\n\n/**\n * Coerce a value to a localized string\n * @param {any} value\n * @param {string | null} [language]\n * @returns {WasmCoercionResult}\n */\nexport function coerceString(value, language) {\n var ptr0 = isLikeNone(language) ? 0 : passStringToWasm0(language, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.coerceString(value, ptr0, len0);\n return WasmCoercionResult.__wrap(ret);\n}\n\n/**\n * Coerce a value to a URL\n * @param {any} value\n * @returns {WasmCoercionResult}\n */\nexport function coerceUrl(value) {\n const ret = wasm.coerceUrl(value);\n return WasmCoercionResult.__wrap(ret);\n}\n\n/**\n * Coerce a value based on datatype\n * @param {string} datatype\n * @param {any} value\n * @param {any} config\n * @returns {WasmCoercionResult}\n */\nexport function coerceValue(datatype, value, config) {\n const ptr0 = passStringToWasm0(datatype, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.coerceValue(ptr0, len0, value, config);\n return WasmCoercionResult.__wrap(ret);\n}\n\n/**\n * Serialize a SkosCollection to SKOS RDF/XML (WASM binding)\n * @param {any} collection_js\n * @param {string} base_uri\n * @returns {string}\n */\nexport function collectionToSkosXml(collection_js, base_uri) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(base_uri, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.collectionToSkosXml(collection_js, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\n/**\n * Serialize multiple SkosCollections to SKOS RDF/XML (WASM binding)\n * @param {any} collections_js\n * @param {string} base_uri\n * @returns {string}\n */\nexport function collectionsToSkosXml(collections_js, base_uri) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(base_uri, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.collectionsToSkosXml(collections_js, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\n/**\n * Export all registered graphs as data.\n *\n * Returns an array of `{relativePath, content}` objects.\n * @returns {any}\n */\nexport function exportAllGraphs() {\n const ret = wasm.exportAllGraphs();\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Export registered graphs as data (no filesystem).\n *\n * Returns an array of `{relativePath, content}` objects.\n * @param {string[]} graph_ids\n * @returns {any}\n */\nexport function exportGraphs(graph_ids) {\n const ptr0 = passArrayJsValueToWasm0(graph_ids, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.exportGraphs(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Find which collections are needed to resolve labels in a tree.\n *\n * @param treeJson - JSON string of the tree to scan\n * @param aliasToCollection - Map<string, string> from buildAliasToCollectionMap\n * @returns Array<string> of collection IDs that need to be loaded\n * @param {string} tree_json\n * @param {any} alias_to_collection\n * @returns {string[]}\n */\nexport function findNeededCollections(tree_json, alias_to_collection) {\n const ptr0 = passStringToWasm0(tree_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.findNeededCollections(ptr0, len0, alias_to_collection);\n if (ret[3]) {\n throw takeFromExternrefTable0(ret[2]);\n }\n var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v2;\n}\n\n/**\n * Generate a deterministic UUID for a collection from its name.\n *\n * Requires the global namespace to be set via setRdmNamespace().\n * Uses: uuid5(namespace, \"collection/\" + name)\n *\n * @param name - The collection name\n * @returns The collection UUID as a string\n * @throws Error if namespace is not set\n * @param {string} name\n * @returns {string}\n */\nexport function generateCollectionUuid(name) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.generateCollectionUuid(ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\n/**\n * Generate a deterministic UUID for a concept from its collection and label.\n *\n * Uses: uuid5(collection_id, label)\n * Does not require global namespace - uses collection_id as the namespace.\n *\n * @param collectionId - The collection UUID\n * @param label - The concept label\n * @returns The concept UUID as a string\n * @throws Error if collectionId is not a valid UUID\n * @param {string} collection_id\n * @param {string} label\n * @returns {string}\n */\nexport function generateConceptUuid(collection_id, label) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(collection_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(label, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.generateConceptUuid(ptr0, len0, ptr1, len1);\n var ptr3 = ret[0];\n var len3 = ret[1];\n if (ret[3]) {\n ptr3 = 0; len3 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n}\n\n/**\n * Generate a deterministic UUID v5 from group and key.\n *\n * This matches the behavior of the Rust UUID generation for cross-platform\n * consistency.\n *\n * # Arguments\n * * `group_type` - The type of group (e.g., \"graph\", \"node\")\n * * `group_id` - Optional ID for the group\n * * `key` - The key to generate a UUID for\n *\n * # Returns\n * A UUID string\n * @param {string} group_type\n * @param {string | null | undefined} group_id\n * @param {string} key\n * @returns {string}\n */\nexport function generateUuidV5(group_type, group_id, key) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(group_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(group_id) ? 0 : passStringToWasm0(group_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(key, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.generateUuidV5(ptr0, len0, ptr1, len1, ptr2, len2);\n deferred4_0 = ret[0];\n deferred4_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n}\n\n/**\n * Generate a deterministic UUID for a value (label in a specific language).\n *\n * Uses: uuid5(uuid5(NAMESPACE_URL, \"value\"), \"{concept_id}/prefLabel/{value}/{language}\")\n *\n * @param conceptId - The concept UUID\n * @param value - The label text\n * @param language - The language code (e.g., \"en\")\n * @returns The value UUID as a string\n * @param {string} concept_id\n * @param {string} value\n * @param {string} language\n * @returns {string}\n */\nexport function generateValueUuid(concept_id, value, language) {\n let deferred4_0;\n let deferred4_1;\n try {\n const ptr0 = passStringToWasm0(concept_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(language, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.generateValueUuid(ptr0, len0, ptr1, len1, ptr2, len2);\n deferred4_0 = ret[0];\n deferred4_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);\n }\n}\n\n/**\n * Get the current language setting\n * @returns {string}\n */\nexport function getCurrentLanguage() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.getCurrentLanguage();\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n}\n\n/**\n * Get the default config keys for collection ID lookup.\n *\n * @returns Array of config key strings: [\"rdmCollection\", \"controlledList\"]\n * @returns {string[]}\n */\nexport function getDefaultConfigKeys() {\n const ret = wasm.getDefaultConfigKeys();\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n}\n\n/**\n * Get the default resolvable datatypes.\n *\n * @returns Array of datatype strings: [\"concept\", \"concept-list\"]\n * @returns {string[]}\n */\nexport function getDefaultResolvableDatatypes() {\n const ret = wasm.getDefaultResolvableDatatypes();\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n}\n\n/**\n * Get the JSON schema for mutation types.\n *\n * Returns a documentation object describing the structure of each mutation type.\n * Useful for building UI forms or validating mutation payloads.\n * @returns {any}\n */\nexport function getMutationSchema() {\n const ret = wasm.getMutationSchema();\n return ret;\n}\n\n/**\n * Get the current global RDM namespace.\n *\n * @returns The namespace UUID as a string, or undefined if not set\n * @returns {string | undefined}\n */\nexport function getRdmNamespace() {\n const ret = wasm.getRdmNamespace();\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n}\n\n/**\n * Get the original namespace string passed to setRdmNamespace.\n *\n * Unlike getRdmNamespace which returns the derived UUID, this returns\n * the raw input (URL or UUID string). Useful as an RDF base URI.\n *\n * @returns The original namespace string, or undefined if not set\n * @returns {string | undefined}\n */\nexport function getRdmNamespaceRaw() {\n const ret = wasm.getRdmNamespaceRaw();\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n}\n\n/**\n * Get the list of registered extension handler datatypes.\n * @returns {Array<any>}\n */\nexport function getRegisteredExtensionHandlers() {\n const ret = wasm.getRegisteredExtensionHandlers();\n return ret;\n}\n\n/**\n * Get the list of registered extension mutation names.\n * @returns {Array<any>}\n */\nexport function getRegisteredExtensionMutations() {\n const ret = wasm.getRegisteredExtensionMutations();\n return ret;\n}\n\n/**\n * Get IDs of all registered graphs.\n * @returns {string[]}\n */\nexport function getRegisteredGraphIds() {\n const ret = wasm.getRegisteredGraphIds();\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n}\n\n/**\n * Get timing stats as a JS Map for integration with the JS tracing system\n * Returns Map<string, {count: number, totalMs: number, minMs: number, maxMs: number, avgMs: number}>\n * @returns {any}\n */\nexport function getRscvTimings() {\n const ret = wasm.getRscvTimings();\n return ret;\n}\n\n/**\n * Check if an extension handler is registered for a datatype.\n * @param {string} datatype\n * @returns {boolean}\n */\nexport function hasExtensionHandler(datatype) {\n const ptr0 = passStringToWasm0(datatype, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.hasExtensionHandler(ptr0, len0);\n return ret !== 0;\n}\n\n/**\n * Check if an extension mutation handler is registered.\n * @param {string} name\n * @returns {boolean}\n */\nexport function hasExtensionMutation(name) {\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.hasExtensionMutation(ptr0, len0);\n return ret !== 0;\n}\n\n/**\n * Check if a global RDM namespace is set.\n *\n * @returns true if a namespace is set\n * @returns {boolean}\n */\nexport function hasRdmNamespace() {\n const ret = wasm.hasRdmNamespace();\n return ret !== 0;\n}\n\n/**\n * Check if a string is a valid UUID.\n *\n * @param s - String to check\n * @returns true if valid UUID\n * @param {string} s\n * @returns {boolean}\n */\nexport function isValidUuid(s) {\n const ptr0 = passStringToWasm0(s, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.isValidUuid(ptr0, len0);\n return ret !== 0;\n}\n\n/**\n * Convert a multilingual label map to a deterministic string for UUID generation.\n *\n * Sorts by language code and concatenates as \"lang1:value1|lang2:value2\".\n * This ensures deterministic UUID generation regardless of map ordering.\n *\n * @param labels - Object mapping language code to label text\n * @returns A deterministic string representation\n * @param {any} labels\n * @returns {string}\n */\nexport function labelsToDeterministicString(labels) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.labelsToDeterministicString(labels);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n}\n\nexport function main() {\n wasm.main();\n}\n\n/**\n * Merge multiple resources with the same resourceinstanceid into one\n *\n * Concatenates tiles from all resources, detecting and warning about duplicate tileids.\n * All resources must have the same resourceinstanceid.\n *\n * Args:\n * resources_json: Array of StaticResource objects as JSON string\n *\n * Returns:\n * {resource: StaticResource, warnings: string[]}\n * @param {string} resources_json\n * @returns {any}\n */\nexport function mergeResources(resources_json) {\n const ptr0 = passStringToWasm0(resources_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.mergeResources(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * @param {string} graph_id\n * @returns {WASMResourceInstanceWrapper}\n */\nexport function newWASMResourceInstanceWrapperForModel(graph_id) {\n const ptr0 = passStringToWasm0(graph_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.newWASMResourceInstanceWrapperForModel(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return WASMResourceInstanceWrapper.__wrap(ret[0]);\n}\n\n/**\n * @param {StaticResource} resource\n * @returns {WASMResourceInstanceWrapper}\n */\nexport function newWASMResourceInstanceWrapperForResource(resource) {\n _assertClass(resource, StaticResource);\n const ret = wasm.newWASMResourceInstanceWrapperForResource(resource.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return WASMResourceInstanceWrapper.__wrap(ret[0]);\n}\n\n/**\n * Parse a namespace string and return the resulting UUID.\n *\n * Utility function for converting URLs to UUIDs without setting global state.\n *\n * @param namespace - UUID string or URL (http/https)\n * @returns The namespace UUID as a string\n * @throws Error if parsing fails\n * @param {string} namespace\n * @returns {string}\n */\nexport function parseRdmNamespace(namespace) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(namespace, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.parseRdmNamespace(ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\n/**\n * Parse SKOS RDF/XML and return collections as JS value\n * @param {string} xml_content\n * @param {string} base_uri\n * @returns {any}\n */\nexport function parseSkosXml(xml_content, base_uri) {\n const ptr0 = passStringToWasm0(xml_content, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(base_uri, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.parseSkosXml(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Parse SKOS RDF/XML and return a single collection as JS value\n * @param {string} xml_content\n * @param {string} base_uri\n * @returns {any}\n */\nexport function parseSkosXmlToCollection(xml_content, base_uri) {\n const ptr0 = passStringToWasm0(xml_content, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(base_uri, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.parseSkosXmlToCollection(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Print timing summary (WASM version)\n */\nexport function printRscvTimings() {\n wasm.printRscvTimings();\n}\n\n/**\n * Register an extension type handler from JS.\n *\n * The options object can have any of these callbacks:\n * - `coerce(value, config) => { tileData, displayValue }` - for ETL coercion\n * - `renderDisplay(tileData, language) => string | null` - for display rendering\n * - `resolveMarkers(tileData, language) => resolvedTileData` - for marker resolution\n *\n * @param datatype - The datatype name (e.g., \"reference\")\n * @param options - Object with callback functions\n * @param {string} datatype\n * @param {any} options\n */\nexport function registerExtensionHandler(datatype, options) {\n const ptr0 = passStringToWasm0(datatype, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.registerExtensionHandler(ptr0, len0, options);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n}\n\n/**\n * Register an extension mutation handler from JS.\n *\n * The handler function should have the signature:\n * function handler(graph: object, params: object): object\n *\n * It receives the current graph and mutation params, and should return\n * the modified graph.\n *\n * # Arguments\n * * `name` - The mutation name (e.g., \"clm.reference_change_collection\")\n * * `handler` - JS function to handle the mutation\n * * `conformance` - Conformance level: \"AlwaysConformant\", \"BranchConformant\",\n * \"ModelConformant\", or \"NonConformant\"\n * @param {string} name\n * @param {Function} handler\n * @param {string | null} [conformance]\n */\nexport function registerExtensionMutation(name, handler, conformance) {\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(conformance) ? 0 : passStringToWasm0(conformance, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.registerExtensionMutation(ptr0, len0, handler, ptr1, len1);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n}\n\n/**\n * Resolve labels to UUIDs using a pre-built lookup table.\n *\n * @param treeJson - JSON string of the tree to resolve\n * @param aliasToCollection - Map<string, string> from buildAliasToCollectionMap\n * @param lookupTable - Map<collectionId, Map<label, conceptId>> built from collections\n * @param strict - If true, return error for unresolved labels\n * @returns Resolved tree object with labels replaced by UUIDs\n * @param {string} tree_json\n * @param {any} alias_to_collection\n * @param {any} lookup_table\n * @param {boolean} strict\n * @returns {any}\n */\nexport function resolveLabelsWithLookup(tree_json, alias_to_collection, lookup_table, strict) {\n const ptr0 = passStringToWasm0(tree_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.resolveLabelsWithLookup(ptr0, len0, alias_to_collection, lookup_table, strict);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Set the current language\n * @param {string} language\n */\nexport function setCurrentLanguage(language) {\n const ptr0 = passStringToWasm0(language, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.setCurrentLanguage(ptr0, len0);\n}\n\n/**\n * Set the global RDM namespace for deterministic UUID generation.\n *\n * This namespace is used when creating collections and concepts from labels\n * without explicit IDs.\n *\n * @param namespace - Either a valid UUID string or a URL (http/https).\n * If a URL is provided, it will be converted to a\n * deterministic UUID using UUID5 with the standard URL namespace.\n *\n * @example\n * // Using a URL (same URL can be used as RDF namespace)\n * setRdmNamespace(\"http://example.org/rdm/\");\n *\n * @example\n * // Using a UUID directly\n * setRdmNamespace(\"550e8400-e29b-41d4-a716-446655440000\");\n * @param {string} namespace\n */\nexport function setRdmNamespace(namespace) {\n const ptr0 = passStringToWasm0(namespace, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.setRdmNamespace(ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n}\n\n/**\n * Single tiles to tree conversion\n *\n * Args:\n * resource_json: Single resource as JSON string\n * graph: StaticGraph wrapper\n *\n * Returns:\n * Tree structure with resourceinstanceid and graph_id metadata\n * @param {string} resource_json\n * @param {StaticGraph} graph\n * @returns {any}\n */\nexport function tilesToTree(resource_json, graph) {\n const ptr0 = passStringToWasm0(resource_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(graph, StaticGraph);\n const ret = wasm.tilesToTree(ptr0, len0, graph.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Single tree to tiles conversion with from_camel and strict parameters\n *\n * This provides a more complete API than the basic json_conversion functions.\n *\n * Args:\n * tree_json: Single tree structure as JSON string\n * graph: StaticGraph wrapper\n * from_camel: If true, convert keys from camelCase to snake_case\n * strict: If true, fail on any validation error\n * id_key: Optional key for deterministic UUID v5 resourceinstanceid generation\n *\n * Returns:\n * BusinessDataWrapper format: {business_data: {resources: [...]}}\n * @param {string} tree_json\n * @param {StaticGraph} graph\n * @param {boolean} from_camel\n * @param {boolean} strict\n * @param {string | null} [id_key]\n * @param {boolean | null} [random_ids]\n * @returns {any}\n */\nexport function treeToTiles(tree_json, graph, from_camel, strict, id_key, random_ids) {\n const ptr0 = passStringToWasm0(tree_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(graph, StaticGraph);\n var ptr1 = isLikeNone(id_key) ? 0 : passStringToWasm0(id_key, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.treeToTiles(ptr0, len0, graph.__wbg_ptr, from_camel, strict, ptr1, len1, isLikeNone(random_ids) ? 0xFFFFFF : random_ids ? 1 : 0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\n/**\n * Unregister an extension handler.\n * @param {string} datatype\n */\nexport function unregisterExtensionHandler(datatype) {\n const ptr0 = passStringToWasm0(datatype, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.unregisterExtensionHandler(ptr0, len0);\n}\n\n/**\n * Unregister an extension mutation handler.\n * @param {string} name\n */\nexport function unregisterExtensionMutation(name) {\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.unregisterExtensionMutation(ptr0, len0);\n}\n\n/**\n * Validate 3-CSV model files without building.\n *\n * Returns diagnostics as a JSON array of `{ level, file, line, message }`.\n * @param {string} graph_csv\n * @param {string} nodes_csv\n * @param {string | null} [collections_csv]\n * @returns {any}\n */\nexport function validateModelCsvs(graph_csv, nodes_csv, collections_csv) {\n const ptr0 = passStringToWasm0(graph_csv, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(nodes_csv, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n var ptr2 = isLikeNone(collections_csv) ? 0 : passStringToWasm0(collections_csv, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n const ret = wasm.validateModelCsvs(ptr0, len0, ptr1, len1, ptr2, len2);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_3639a60ed15f87e7: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg_Number_a3d737fd183f7dca: function(arg0) {\n const ret = Number(arg0);\n return ret;\n },\n __wbg_String_8564e559799eccda: function(arg0, arg1) {\n const ret = String(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_bigint_get_as_i64_3af6d4ca77193a4b: function(arg0, arg1) {\n const v = arg1;\n const ret = typeof(v) === 'bigint' ? v : undefined;\n getDataViewMemory0().setBigInt64(arg0 + 8 * 1, isLikeNone(ret) ? BigInt(0) : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_boolean_get_c3dd5c39f1b5a12b: function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_07cb72cfcc952e2b: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_2617fa76397620d3: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_bigint_d6a8167cac401b95: function(arg0) {\n const ret = typeof(arg0) === 'bigint';\n return ret;\n },\n __wbg___wbindgen_is_function_2f0fd7ceb86e64c5: function(arg0) {\n const ret = typeof(arg0) === 'function';\n return ret;\n },\n __wbg___wbindgen_is_null_066086be3abe9bb3: function(arg0) {\n const ret = arg0 === null;\n return ret;\n },\n __wbg___wbindgen_is_object_5b22ff2418063a9c: function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_string_eddc07a3efad52e6: function(arg0) {\n const ret = typeof(arg0) === 'string';\n return ret;\n },\n __wbg___wbindgen_is_undefined_244a92c34d3b6ec0: function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n },\n __wbg___wbindgen_jsval_eq_403eaa3610500a25: function(arg0, arg1) {\n const ret = arg0 === arg1;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_1978f1e77b4bce62: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_dd6d69a6079f26f1: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_965592073e5d848c: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_9c75d47bf9e7731e: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg__wbg_cb_unref_158e43e869788cdc: function(arg0) {\n arg0._wbg_cb_unref();\n },\n __wbg_call_330a13e9abecff0b: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5) {\n const ret = arg0.call(arg1, arg2, arg3, arg4, arg5);\n return ret;\n }, arguments); },\n __wbg_call_a41d6421b30a32c5: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.call(arg1, arg2);\n return ret;\n }, arguments); },\n __wbg_call_a6d9545202d34317: function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = arg0.call(arg1, arg2, arg3);\n return ret;\n }, arguments); },\n __wbg_call_add9e5a76382e668: function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments); },\n __wbg_clearMarks_56246adcd03c4f05: function(arg0, arg1) {\n performance.clearMarks(getStringFromWasm0(arg0, arg1));\n },\n __wbg_crypto_38df2bab126b63dc: function(arg0) {\n const ret = arg0.crypto;\n return ret;\n },\n __wbg_done_b1afd6201ac045e0: function(arg0) {\n const ret = arg0.done;\n return ret;\n },\n __wbg_entries_bb9843ba73dc70d6: function(arg0) {\n const ret = Object.entries(arg0);\n return ret;\n },\n __wbg_error_48655ee7e4756f8b: function(arg0) {\n console.error(arg0);\n },\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_forEach_18d28b45fc3b68c0: function(arg0, arg1, arg2) {\n try {\n var state0 = {a: arg1, b: arg2};\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return wasm_bindgen__convert__closures_____invoke__h163c0d8c04b3d15c(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n arg0.forEach(cb0);\n } finally {\n state0.a = 0;\n }\n },\n __wbg_from_ff141b1e4c69b979: function(arg0) {\n const ret = Array.from(arg0);\n return ret;\n },\n __wbg_getRandomValues_c44a50d8cfdaebeb: function() { return handleError(function (arg0, arg1) {\n arg0.getRandomValues(arg1);\n }, arguments); },\n __wbg_getTime_e599bee315e19eba: function(arg0) {\n const ret = arg0.getTime();\n return ret;\n },\n __wbg_get_41476db20fef99a8: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments); },\n __wbg_get_652f640b3b0b6e3e: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_9cfea9b7bbf12a15: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments); },\n __wbg_get_unchecked_be562b1421656321: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_with_ref_key_6412cf3094599694: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_has_3a6f31f647e0ba22: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.has(arg0, arg1);\n return ret;\n }, arguments); },\n __wbg_instanceof_ArrayBuffer_eab9f28fbec23477: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Map_10d4edf60fcf9327: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Map;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_57d77acd50e4c44d: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_isArray_c6c6ef8308995bcf: function(arg0) {\n const ret = Array.isArray(arg0);\n return ret;\n },\n __wbg_isSafeInteger_3c56c421a5b4cce4: function(arg0) {\n const ret = Number.isSafeInteger(arg0);\n return ret;\n },\n __wbg_iterator_9d68985a1d096fc2: function() {\n const ret = Symbol.iterator;\n return ret;\n },\n __wbg_length_0a6ce016dc1460b0: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_ba3c032602efe310: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_log_72d22df918dcc232: function(arg0) {\n console.log(arg0);\n },\n __wbg_mark_e7dc878e7ea0c839: function(arg0, arg1) {\n performance.mark(getStringFromWasm0(arg0, arg1));\n },\n __wbg_measure_3f7813a7a81820dd: function(arg0, arg1, arg2) {\n performance.measure(getStringFromWasm0(arg0, arg1), arg2);\n },\n __wbg_msCrypto_bd5a034af96bcba6: function(arg0) {\n const ret = arg0.msCrypto;\n return ret;\n },\n __wbg_new_0_e486ec9936f7edbf: function() {\n const ret = new Date();\n return ret;\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_new_2fad8ca02fd00684: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_3baa8d9866155c79: function() {\n const ret = new Array();\n return ret;\n },\n __wbg_new_46ae4e4ff2a07a64: function() {\n const ret = new Map();\n return ret;\n },\n __wbg_new_8454eee672b2ba6e: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_new_typed_1137602701dc87d4: function(arg0, arg1) {\n try {\n var state0 = {a: arg0, b: arg1};\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return wasm_bindgen__convert__closures_____invoke__h163c0d8c04b3d15c_685(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n const ret = new Promise(cb0);\n return ret;\n } finally {\n state0.a = 0;\n }\n },\n __wbg_new_with_length_9011f5da794bf5d9: function(arg0) {\n const ret = new Uint8Array(arg0 >>> 0);\n return ret;\n },\n __wbg_next_261c3c48c6e309a5: function(arg0) {\n const ret = arg0.next;\n return ret;\n },\n __wbg_next_aacee310bcfe6461: function() { return handleError(function (arg0) {\n const ret = arg0.next();\n return ret;\n }, arguments); },\n __wbg_node_84ea875411254db1: function(arg0) {\n const ret = arg0.node;\n return ret;\n },\n __wbg_now_5f159346535abcd1: function() {\n const ret = performance.now();\n return ret;\n },\n __wbg_parse_342d5616e14beccc: function() { return handleError(function (arg0, arg1) {\n const ret = JSON.parse(getStringFromWasm0(arg0, arg1));\n return ret;\n }, arguments); },\n __wbg_process_44c7a14e11e9f69e: function(arg0) {\n const ret = arg0.process;\n return ret;\n },\n __wbg_prototypesetcall_fd4050e806e1d519: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_pseudolist_new: function(arg0) {\n const ret = PseudoList.__wrap(arg0);\n return ret;\n },\n __wbg_pseudovalue_new: function(arg0) {\n const ret = PseudoValue.__wrap(arg0);\n return ret;\n },\n __wbg_push_60a5366c0bb22a7d: function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n },\n __wbg_queueMicrotask_40ac6ffc2848ba77: function(arg0) {\n queueMicrotask(arg0);\n },\n __wbg_queueMicrotask_74d092439f6494c1: function(arg0) {\n const ret = arg0.queueMicrotask;\n return ret;\n },\n __wbg_randomFillSync_6c25eac9869eb53c: function() { return handleError(function (arg0, arg1) {\n arg0.randomFillSync(arg1);\n }, arguments); },\n __wbg_require_b4edbdcf3e2a1ef0: function() { return handleError(function () {\n const ret = module.require;\n return ret;\n }, arguments); },\n __wbg_resolve_9feb5d906ca62419: function(arg0) {\n const ret = Promise.resolve(arg0);\n return ret;\n },\n __wbg_set_5337f8ac82364a3f: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments); },\n __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_set_82f7a370f604db70: function(arg0, arg1, arg2) {\n const ret = arg0.set(arg1, arg2);\n return ret;\n },\n __wbg_set_f614f6a0608d1d1d: function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_static_accessor_GLOBAL_THIS_1c7f1bd6c6941fdb: function() {\n const ret = typeof globalThis === 'undefined' ? null : globalThis;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n },\n __wbg_static_accessor_GLOBAL_e039bc914f83e74e: function() {\n const ret = typeof global === 'undefined' ? null : global;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n },\n __wbg_static_accessor_SELF_8bf8c48c28420ad5: function() {\n const ret = typeof self === 'undefined' ? null : self;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n },\n __wbg_static_accessor_WINDOW_6aeee9b51652ee0f: function() {\n const ret = typeof window === 'undefined' ? null : window;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n },\n __wbg_staticcard_new: function(arg0) {\n const ret = StaticCard.__wrap(arg0);\n return ret;\n },\n __wbg_staticcardsxnodesxwidgets_new: function(arg0) {\n const ret = StaticCardsXNodesXWidgets.__wrap(arg0);\n return ret;\n },\n __wbg_staticedge_new: function(arg0) {\n const ret = StaticEdge.__wrap(arg0);\n return ret;\n },\n __wbg_staticnode_new: function(arg0) {\n const ret = StaticNode.__wrap(arg0);\n return ret;\n },\n __wbg_staticnodegroup_new: function(arg0) {\n const ret = StaticNodegroup.__wrap(arg0);\n return ret;\n },\n __wbg_staticresource_new: function(arg0) {\n const ret = StaticResource.__wrap(arg0);\n return ret;\n },\n __wbg_staticresource_unwrap: function(arg0) {\n const ret = StaticResource.__unwrap(arg0);\n return ret;\n },\n __wbg_staticresourcesummary_new: function(arg0) {\n const ret = StaticResourceSummary.__wrap(arg0);\n return ret;\n },\n __wbg_statictile_new: function(arg0) {\n const ret = StaticTile.__wrap(arg0);\n return ret;\n },\n __wbg_statictile_unwrap: function(arg0) {\n const ret = StaticTile.__unwrap(arg0);\n return ret;\n },\n __wbg_stringify_7fd5cae8859a6f10: function() { return handleError(function (arg0) {\n const ret = JSON.stringify(arg0);\n return ret;\n }, arguments); },\n __wbg_subarray_fbe3cef290e1fa43: function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n },\n __wbg_then_20a157d939b514f5: function(arg0, arg1) {\n const ret = arg0.then(arg1);\n return ret;\n },\n __wbg_then_5ef9b762bc91555c: function(arg0, arg1, arg2) {\n const ret = arg0.then(arg1, arg2);\n return ret;\n },\n __wbg_value_f852716acdeb3e82: function(arg0) {\n const ret = arg0.value;\n return ret;\n },\n __wbg_versions_276b2795b1c6a219: function(arg0) {\n const ret = arg0.versions;\n return ret;\n },\n __wbg_warn_1f9b94806da61fbb: function(arg0) {\n console.warn(arg0);\n },\n __wbg_wasmstaticdomainvalue_new: function(arg0) {\n const ret = WasmStaticDomainValue.__wrap(arg0);\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0, arg1) {\n // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 567, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.\n const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__heef596900cc20d34);\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000003: function(arg0) {\n // Cast intrinsic for `I64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000004: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(U8)) -> NamedExternref(\"Uint8Array\")`.\n const ret = getArrayU8FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000005: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000006: function(arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./alizarin_bg.js\": import0,\n };\n}\n\nfunction wasm_bindgen__convert__closures_____invoke__heef596900cc20d34(arg0, arg1, arg2) {\n const ret = wasm.wasm_bindgen__convert__closures_____invoke__heef596900cc20d34(arg0, arg1, arg2);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n}\n\nfunction wasm_bindgen__convert__closures_____invoke__h163c0d8c04b3d15c(arg0, arg1, arg2, arg3) {\n wasm.wasm_bindgen__convert__closures_____invoke__h163c0d8c04b3d15c(arg0, arg1, arg2, arg3);\n}\n\nfunction wasm_bindgen__convert__closures_____invoke__h163c0d8c04b3d15c_685(arg0, arg1, arg2, arg3) {\n wasm.wasm_bindgen__convert__closures_____invoke__h163c0d8c04b3d15c_685(arg0, arg1, arg2, arg3);\n}\n\nconst ExampleEdgeWrapperFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_exampleedgewrapper_free(ptr, 1));\nconst ExampleNodegroupWrapperFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_examplenodegroupwrapper_free(ptr, 1));\nconst PseudoListFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_pseudolist_free(ptr, 1));\nconst PseudoNodeFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_pseudonode_free(ptr, 1));\nconst PseudoValueFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_pseudovalue_free(ptr, 1));\nconst StaticCardFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_staticcard_free(ptr, 1));\nconst StaticCardsXNodesXWidgetsFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_staticcardsxnodesxwidgets_free(ptr, 1));\nconst StaticConstraintFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_staticconstraint_free(ptr, 1));\nconst StaticEdgeFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_staticedge_free(ptr, 1));\nconst StaticFunctionsXGraphsFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_staticfunctionsxgraphs_free(ptr, 1));\nconst StaticGraphFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_staticgraph_free(ptr, 1));\nconst StaticGraphMetaFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_staticgraphmeta_free(ptr, 1));\nconst StaticNodeFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_staticnode_free(ptr, 1));\nconst StaticNodegroupFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_staticnodegroup_free(ptr, 1));\nconst StaticPublicationFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_staticpublication_free(ptr, 1));\nconst StaticResourceFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_staticresource_free(ptr, 1));\nconst StaticResourceDescriptorsFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_staticresourcedescriptors_free(ptr, 1));\nconst StaticResourceMetadataFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_staticresourcemetadata_free(ptr, 1));\nconst StaticResourceReferenceFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_staticresourcereference_free(ptr, 1));\nconst StaticResourceRegistryFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_staticresourceregistry_free(ptr, 1));\nconst StaticResourceSummaryFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_staticresourcesummary_free(ptr, 1));\nconst StaticTileFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_statictile_free(ptr, 1));\nconst StaticTranslatableStringFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_statictranslatablestring_free(ptr, 1));\nconst WASMResourceInstanceWrapperFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmresourceinstancewrapper_free(ptr, 1));\nconst WASMResourceModelWrapperFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmresourcemodelwrapper_free(ptr, 1));\nconst WKRMFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wkrm_free(ptr, 1));\nconst WasmCoercionResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmcoercionresult_free(ptr, 1));\nconst WasmEnsureNodegroupResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmensurenodegroupresult_free(ptr, 1));\nconst WasmNodeConfigBooleanFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmnodeconfigboolean_free(ptr, 1));\nconst WasmNodeConfigConceptFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmnodeconfigconcept_free(ptr, 1));\nconst WasmNodeConfigDomainFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmnodeconfigdomain_free(ptr, 1));\nconst WasmNodeConfigManagerFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmnodeconfigmanager_free(ptr, 1));\nconst WasmNodeConfigReferenceFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmnodeconfigreference_free(ptr, 1));\nconst WasmNodegroupResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmnodegroupresult_free(ptr, 1));\nconst WasmPopulateResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmpopulateresult_free(ptr, 1));\nconst WasmRdmCacheFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmrdmcache_free(ptr, 1));\nconst WasmSpanFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmspan_free(ptr, 1));\nconst WasmStaticDomainValueFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmstaticdomainvalue_free(ptr, 1));\nconst WasmValuesFromNodegroupResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmvaluesfromnodegroupresult_free(ptr, 1));\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n}\n\nconst CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(state => wasm.__wbindgen_destroy_closure(state.a, state.b));\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction getArrayJsValueFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n const mem = getDataViewMemory0();\n const result = [];\n for (let i = ptr; i < ptr + 4 * len; i += 4) {\n result.push(wasm.__wbindgen_externrefs.get(mem.getUint32(i, true)));\n }\n wasm.__externref_drop_slice(ptr, len);\n return result;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return decodeText(ptr >>> 0, len);\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction makeMutClosure(arg0, arg1, f) {\n const state = { a: arg0, b: arg1, cnt: 1 };\n const real = (...args) => {\n\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n state.a = a;\n real._wbg_cb_unref();\n }\n };\n real._wbg_cb_unref = () => {\n if (--state.cnt === 0) {\n wasm.__wbindgen_destroy_closure(state.a, state.b);\n state.a = 0;\n CLOSURE_DTORS.unregister(state);\n }\n };\n CLOSURE_DTORS.register(real, state, state);\n return real;\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passArrayJsValueToWasm0(array, malloc) {\n const ptr = malloc(array.length * 4, 4) >>> 0;\n for (let i = 0; i < array.length; i++) {\n const add = addToExternrefTable0(array[i]);\n getDataViewMemory0().setUint32(ptr + 4 * i, add, true);\n }\n WASM_VECTOR_LEN = array.length;\n return ptr;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasmInstance, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasmInstance = instance;\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (module_or_path === undefined) {\n module_or_path = new URL('alizarin_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n","/**\n * Unified tracing infrastructure for Alizarin\n *\n * This module provides a consistent tracing API that works across:\n * - Browser (via Performance API)\n * - Node.js (via perf_hooks)\n * - Rust/WASM (via web-sys Performance API, bridged through here)\n *\n * The API is designed to be compatible with OpenTelemetry semantics,\n * making it easy to upgrade to full OTel later if needed.\n */\n\n// Types\nexport interface SpanAttributes {\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface SpanContext {\n traceId: string;\n spanId: string;\n parentSpanId?: string;\n}\n\nexport interface SpanData {\n name: string;\n context: SpanContext;\n startTime: number;\n endTime?: number;\n duration?: number;\n attributes: SpanAttributes;\n status: 'ok' | 'error' | 'unset';\n events: SpanEvent[];\n}\n\nexport interface SpanEvent {\n name: string;\n timestamp: number;\n attributes?: SpanAttributes;\n}\n\nexport type SpanExporter = (spans: SpanData[]) => void;\n\n// Simple ID generation (not cryptographically secure, but fine for tracing)\nfunction generateId(length: number): string {\n const chars = '0123456789abcdef';\n let result = '';\n for (let i = 0; i < length; i++) {\n result += chars[Math.floor(Math.random() * chars.length)];\n }\n return result;\n}\n\nfunction generateTraceId(): string {\n return generateId(32);\n}\n\nfunction generateSpanId(): string {\n return generateId(16);\n}\n\n// Get high-resolution time\nfunction now(): number {\n if (typeof performance !== 'undefined' && performance.now) {\n return performance.now();\n }\n // Fallback for environments without Performance API\n return Date.now();\n}\n\n/**\n * Active span tracking using a stack (for nested spans)\n */\nclass SpanStack {\n private stack: Span[] = [];\n\n push(span: Span): void {\n this.stack.push(span);\n }\n\n pop(): Span | undefined {\n return this.stack.pop();\n }\n\n current(): Span | undefined {\n return this.stack[this.stack.length - 1];\n }\n}\n\nconst spanStack = new SpanStack();\n\n/**\n * Span class - represents a unit of work\n */\nexport class Span {\n private data: SpanData;\n private ended: boolean = false;\n private tracer: Tracer;\n\n constructor(\n name: string,\n tracer: Tracer,\n parentContext?: SpanContext,\n attributes?: SpanAttributes\n ) {\n this.tracer = tracer;\n this.data = {\n name,\n context: {\n traceId: parentContext?.traceId ?? generateTraceId(),\n spanId: generateSpanId(),\n parentSpanId: parentContext?.spanId,\n },\n startTime: now(),\n attributes: attributes ?? {},\n status: 'unset',\n events: [],\n };\n }\n\n get context(): SpanContext {\n return this.data.context;\n }\n\n get name(): string {\n return this.data.name;\n }\n\n setAttribute(key: string, value: string | number | boolean): this {\n if (!this.ended) {\n this.data.attributes[key] = value;\n }\n return this;\n }\n\n setAttributes(attributes: SpanAttributes): this {\n if (!this.ended) {\n Object.assign(this.data.attributes, attributes);\n }\n return this;\n }\n\n addEvent(name: string, attributes?: SpanAttributes): this {\n if (!this.ended) {\n this.data.events.push({\n name,\n timestamp: now(),\n attributes,\n });\n }\n return this;\n }\n\n setStatus(status: 'ok' | 'error', message?: string): this {\n if (!this.ended) {\n this.data.status = status;\n if (message) {\n this.data.attributes['status.message'] = message;\n }\n }\n return this;\n }\n\n recordException(error: Error): this {\n if (!this.ended) {\n // Using OpenTelemetry semantic convention attribute names\n /* eslint-disable @typescript-eslint/naming-convention */\n this.addEvent('exception', {\n 'exception.type': error.name,\n 'exception.message': error.message,\n 'exception.stacktrace': error.stack,\n });\n /* eslint-enable @typescript-eslint/naming-convention */\n this.setStatus('error', error.message);\n }\n return this;\n }\n\n end(): void {\n if (this.ended) return;\n\n this.ended = true;\n this.data.endTime = now();\n this.data.duration = this.data.endTime - this.data.startTime;\n\n // Remove from stack if it's the current span\n if (spanStack.current() === this) {\n spanStack.pop();\n }\n\n // Report to tracer\n this.tracer.onSpanEnd(this.data);\n }\n\n getData(): SpanData {\n return { ...this.data };\n }\n}\n\n/**\n * Tracer class - creates spans and manages export\n */\nexport class Tracer {\n private name: string;\n private version?: string;\n private exporters: SpanExporter[] = [];\n private pendingSpans: SpanData[] = [];\n private batchSize: number = 100;\n private flushIntervalMs: number = 5000;\n private flushTimer?: ReturnType<typeof setTimeout>;\n\n constructor(name: string, version?: string) {\n this.name = name;\n this.version = version;\n }\n\n /**\n * Add an exporter to receive completed spans\n */\n addExporter(exporter: SpanExporter): this {\n this.exporters.push(exporter);\n return this;\n }\n\n /**\n * Start a new span\n */\n startSpan(name: string, attributes?: SpanAttributes): Span {\n const parentSpan = spanStack.current();\n const span = new Span(name, this, parentSpan?.context, attributes);\n return span;\n }\n\n /**\n * Start a span and make it the active span\n */\n startActiveSpan<T>(\n name: string,\n fn: (span: Span) => T,\n attributes?: SpanAttributes\n ): T;\n startActiveSpan<T>(\n name: string,\n attributes: SpanAttributes,\n fn: (span: Span) => T\n ): T;\n startActiveSpan<T>(\n name: string,\n fnOrAttributes: ((span: Span) => T) | SpanAttributes,\n maybeFn?: (span: Span) => T\n ): T {\n let fn: (span: Span) => T;\n let attributes: SpanAttributes | undefined;\n\n if (typeof fnOrAttributes === 'function') {\n fn = fnOrAttributes;\n } else {\n attributes = fnOrAttributes;\n fn = maybeFn!;\n }\n\n const span = this.startSpan(name, attributes);\n spanStack.push(span);\n\n try {\n const result = fn(span);\n\n // Handle promises\n if (result instanceof Promise) {\n return result\n .then((value) => {\n span.setStatus('ok');\n span.end();\n return value;\n })\n .catch((error) => {\n span.recordException(error);\n span.end();\n throw error;\n }) as T;\n }\n\n span.setStatus('ok');\n span.end();\n return result;\n } catch (error) {\n span.recordException(error as Error);\n span.end();\n throw error;\n }\n }\n\n /**\n * Called when a span ends\n */\n onSpanEnd(spanData: SpanData): void {\n // Add tracer info\n spanData.attributes['tracer.name'] = this.name;\n if (this.version) {\n spanData.attributes['tracer.version'] = this.version;\n }\n\n this.pendingSpans.push(spanData);\n\n // Batch export\n if (this.pendingSpans.length >= this.batchSize) {\n this.flush();\n } else if (!this.flushTimer) {\n this.flushTimer = setTimeout(() => this.flush(), this.flushIntervalMs);\n }\n }\n\n /**\n * Flush pending spans to exporters\n */\n flush(): void {\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n this.flushTimer = undefined;\n }\n\n if (this.pendingSpans.length === 0) return;\n\n const spans = this.pendingSpans;\n this.pendingSpans = [];\n\n for (const exporter of this.exporters) {\n try {\n exporter(spans);\n } catch (e) {\n console.error('Exporter error:', e);\n }\n }\n }\n\n /**\n * Get the current active span\n */\n getCurrentSpan(): Span | undefined {\n return spanStack.current();\n }\n}\n\n/**\n * TracerProvider - manages tracers (singleton pattern)\n */\nclass TracerProvider {\n private tracers: Map<string, Tracer> = new Map();\n private globalExporters: SpanExporter[] = [];\n\n getTracer(name: string, version?: string): Tracer {\n const key = `${name}@${version ?? 'unknown'}`;\n\n if (!this.tracers.has(key)) {\n const tracer = new Tracer(name, version);\n // Add global exporters to new tracer\n for (const exporter of this.globalExporters) {\n tracer.addExporter(exporter);\n }\n this.tracers.set(key, tracer);\n }\n\n return this.tracers.get(key)!;\n }\n\n addGlobalExporter(exporter: SpanExporter): this {\n this.globalExporters.push(exporter);\n // Add to existing tracers\n for (const tracer of this.tracers.values()) {\n tracer.addExporter(exporter);\n }\n return this;\n }\n\n flushAll(): void {\n for (const tracer of this.tracers.values()) {\n tracer.flush();\n }\n }\n}\n\n// Global tracer provider instance\nconst globalProvider = new TracerProvider();\n\n/**\n * Get a tracer instance\n */\nexport function getTracer(name: string, version?: string): Tracer {\n return globalProvider.getTracer(name, version);\n}\n\n/**\n * Add a global exporter\n */\nexport function addGlobalExporter(exporter: SpanExporter): void {\n globalProvider.addGlobalExporter(exporter);\n}\n\n/**\n * Flush all pending spans\n */\nexport function flushAll(): void {\n globalProvider.flushAll();\n}\n\n// ============================================================================\n// Built-in Exporters\n// ============================================================================\n\n/**\n * Console exporter - logs spans to console\n */\nexport function consoleExporter(spans: SpanData[]): void {\n console.log('=== Trace Spans ===');\n for (const span of spans) {\n const indent = span.context.parentSpanId ? ' ' : '';\n console.log(\n `${indent}[${span.name}] ${span.duration?.toFixed(2)}ms`,\n span.status !== 'unset' ? `(${span.status})` : '',\n Object.keys(span.attributes).length > 2 ? span.attributes : ''\n );\n }\n}\n\n/**\n * Summary exporter - aggregates timing stats like the old system\n */\nexport class SummaryExporter {\n private stats: Map<string, {\n count: number;\n totalMs: number;\n minMs: number;\n maxMs: number;\n }> = new Map();\n\n export = (spans: SpanData[]): void => {\n for (const span of spans) {\n const duration = span.duration ?? 0;\n const existing = this.stats.get(span.name);\n\n if (existing) {\n existing.count++;\n existing.totalMs += duration;\n existing.minMs = Math.min(existing.minMs, duration);\n existing.maxMs = Math.max(existing.maxMs, duration);\n } else {\n this.stats.set(span.name, {\n count: 1,\n totalMs: duration,\n minMs: duration,\n maxMs: duration,\n });\n }\n }\n };\n\n getSummary(): Map<string, {\n count: number;\n totalMs: number;\n avgMs: number;\n minMs: number;\n maxMs: number;\n }> {\n const result = new Map();\n for (const [name, stats] of this.stats) {\n result.set(name, {\n ...stats,\n avgMs: stats.count > 0 ? stats.totalMs / stats.count : 0,\n });\n }\n return result;\n }\n\n printSummary(label: string = ''): void {\n console.log(`=== Timing Summary ${label} ===`);\n const entries = [...this.stats.entries()]\n .sort((a, b) => b[1].totalMs - a[1].totalMs);\n\n for (const [name, stats] of entries) {\n const avg = stats.count > 0 ? stats.totalMs / stats.count : 0;\n console.log(\n `${name}: count=${stats.count}, total=${stats.totalMs.toFixed(2)}ms, ` +\n `avg=${avg.toFixed(2)}ms, min=${stats.minMs.toFixed(2)}ms, max=${stats.maxMs.toFixed(2)}ms`\n );\n }\n }\n\n reset(): void {\n this.stats.clear();\n }\n\n /**\n * Merge external timing stats into this summary\n * @param stats Map or object with timing stats in the format {count, totalMs, minMs, maxMs}\n * @param prefix Optional prefix to add to all stat names (e.g., \"rust:\" or \"alizarin:\")\n */\n mergeStats(\n stats: Map<string, { count: number; totalMs: number; minMs: number; maxMs: number }> | Record<string, { count: number; totalMs: number; minMs: number; maxMs: number }>,\n prefix: string = ''\n ): void {\n const entries = stats instanceof Map ? stats.entries() : Object.entries(stats);\n\n for (const [name, stat] of entries) {\n const fullName = prefix + name;\n const existing = this.stats.get(fullName);\n\n if (existing) {\n existing.count += stat.count;\n existing.totalMs += stat.totalMs;\n existing.minMs = Math.min(existing.minMs, stat.minMs);\n existing.maxMs = Math.max(existing.maxMs, stat.maxMs);\n } else {\n this.stats.set(fullName, {\n count: stat.count,\n totalMs: stat.totalMs,\n minMs: stat.minMs,\n maxMs: stat.maxMs,\n });\n }\n }\n }\n}\n\n// ============================================================================\n// WASM Bridge\n// ============================================================================\n\n/**\n * Bridge for collecting performance entries from WASM\n *\n * The Rust code can use web-sys to call performance.mark() and performance.measure(),\n * and this function collects those entries and converts them to spans.\n */\nexport function collectWasmPerformanceEntries(tracer: Tracer): void {\n if (typeof performance === 'undefined' || !performance.getEntriesByType) {\n return;\n }\n\n const measures = performance.getEntriesByType('measure') as PerformanceMeasure[];\n\n for (const measure of measures) {\n // Only collect alizarin-prefixed measures\n if (!measure.name.startsWith('alizarin:')) {\n continue;\n }\n\n const spanName = measure.name.replace('alizarin:', '');\n const span = tracer.startSpan(spanName);\n\n // Parse detail if present (for attributes)\n if (measure.detail && typeof measure.detail === 'object') {\n span.setAttributes(measure.detail as SpanAttributes);\n }\n\n // Manually set timing (since this is retrospective)\n const spanData = span.getData();\n spanData.startTime = measure.startTime;\n spanData.endTime = measure.startTime + measure.duration;\n spanData.duration = measure.duration;\n spanData.attributes['source'] = 'wasm';\n\n span.end();\n }\n\n // Clear the collected measures\n for (const measure of measures) {\n if (measure.name.startsWith('alizarin:')) {\n performance.clearMeasures(measure.name);\n }\n }\n}\n\n// ============================================================================\n// Convenience helpers\n// ============================================================================\n\n/**\n * Decorator-style helper for timing a function\n */\nexport function traced<T extends (...args: any[]) => any>(\n name: string,\n fn: T,\n tracer?: Tracer\n): T {\n const t = tracer ?? getTracer('alizarin');\n\n return ((...args: Parameters<T>): ReturnType<T> => {\n return t.startActiveSpan(name, (span) => {\n span.setAttribute('args.count', args.length);\n return fn(...args);\n });\n }) as T;\n}\n\n/**\n * Time a block of code\n */\nexport async function timed<T>(\n name: string,\n fn: () => T | Promise<T>,\n tracer?: Tracer\n): Promise<T> {\n const t = tracer ?? getTracer('alizarin');\n return t.startActiveSpan(name, async (_span) => {\n const result = await fn();\n return result;\n });\n}\n\n// ============================================================================\n// Cross-platform timing collection\n// ============================================================================\n\n// These will be set by the main module when WASM is available\nlet _getRscvTimings: (() => Map<string, any>) | null = null;\nlet _getAlizarinTimingStats: (() => any) | null = null;\nlet _getWasmTimings: (() => Map<string, any>) | null = null;\n\n/**\n * Register the Rust timing getter (called from main.ts after WASM init)\n */\nexport function registerRustTimingGetter(getter: () => Map<string, any>): void {\n _getRscvTimings = getter;\n}\n\n/**\n * Register the alizarin JS timing getter (called from main.ts)\n */\nexport function registerAlizarinTimingGetter(getter: () => any): void {\n _getAlizarinTimingStats = getter;\n}\n\n/**\n * Register the detailed WASM timing getter (called from main.ts)\n */\nexport function registerWasmTimingGetter(getter: () => Map<string, any>): void {\n _getWasmTimings = getter;\n}\n\n/**\n * Collect all timing stats from Rust/WASM and alizarin JS into a SummaryExporter\n *\n * @param exporter The SummaryExporter to merge stats into\n */\nexport function collectAllTimings(exporter: SummaryExporter): void {\n // Collect Rust/WASM timings\n if (_getRscvTimings) {\n try {\n const rustTimings = _getRscvTimings();\n if (rustTimings && rustTimings.size > 0) {\n const rustStats: Record<string, { count: number; totalMs: number; minMs: number; maxMs: number }> = {};\n rustTimings.forEach((value: any, key: string) => {\n rustStats[key] = {\n count: value.count || 0,\n totalMs: value.totalMs || 0,\n minMs: value.minMs || 0,\n maxMs: value.maxMs || 0,\n };\n });\n exporter.mergeStats(rustStats, 'rust: ');\n }\n } catch (e) {\n console.warn('Failed to collect Rust timings:', e);\n }\n }\n\n // Collect alizarin JS timings\n if (_getAlizarinTimingStats) {\n try {\n const jsTimings = _getAlizarinTimingStats();\n if (jsTimings) {\n // Convert alizarin's flat stats format to our format\n const jsStats: Record<string, { count: number; totalMs: number; minMs: number; maxMs: number }> = {};\n\n if (jsTimings.wasmCalls > 0) {\n jsStats['wasm calls'] = {\n count: jsTimings.wasmCalls,\n totalMs: jsTimings.wasmTotalMs,\n minMs: jsTimings.wasmTotalMs / jsTimings.wasmCalls, // approximate\n maxMs: jsTimings.wasmTotalMs / jsTimings.wasmCalls, // approximate\n };\n }\n if (jsTimings.wrapCalls > 0) {\n jsStats['wrap calls'] = {\n count: jsTimings.wrapCalls,\n totalMs: jsTimings.wrapTotalMs,\n minMs: jsTimings.wrapTotalMs / jsTimings.wrapCalls,\n maxMs: jsTimings.wrapTotalMs / jsTimings.wrapCalls,\n };\n }\n if (Object.keys(jsStats).length > 0) {\n exporter.mergeStats(jsStats, 'alizarin: ');\n }\n }\n } catch (e) {\n console.warn('Failed to collect alizarin JS timings:', e);\n }\n }\n\n // Collect detailed JS WASM timings (from graphManager.ts recordWasmTiming)\n if (_getWasmTimings) {\n try {\n const wasmTimings = _getWasmTimings();\n if (wasmTimings && wasmTimings.size > 0) {\n const wasmStats: Record<string, { count: number; totalMs: number; minMs: number; maxMs: number }> = {};\n wasmTimings.forEach((value: any, key: string) => {\n wasmStats[key] = {\n count: value.count || 0,\n totalMs: value.totalMs || 0,\n minMs: value.minMs || 0,\n maxMs: value.maxMs || 0,\n };\n });\n exporter.mergeStats(wasmStats, 'js: ');\n }\n } catch (e) {\n console.warn('Failed to collect detailed WASM timings:', e);\n }\n }\n}\n","/**\n * Backend abstraction for WASM vs NAPI.\n *\n * When running in Node.js CLI environments (e.g., starches-builder), the NAPI\n * backend avoids WASM linear memory limits. In browsers or when NAPI is\n * unavailable, the WASM backend is used.\n *\n * Usage:\n * import { setBackend, createInstanceWrapper } from './backend';\n * setBackend('napi'); // before any wrapper creation\n */\n\nimport type { StaticResource } from \"./static-types\";\n\nexport type BackendType = 'wasm' | 'napi';\n\nlet _backend: BackendType = 'wasm';\nlet _napiModule: any = null;\nlet _wasmModule: any = null;\n\n/**\n * Register the loaded WASM module. Called by _wasm.ts after initialization.\n * This avoids require() of ESM packages in factory functions.\n */\nexport function setWasmModule(mod: any) {\n _wasmModule = mod;\n}\n\nfunction getWasmModule(): any {\n if (!_wasmModule) {\n throw new Error('WASM module not loaded. Call initWasm() first, or use setBackend(\"napi\").');\n }\n return _wasmModule;\n}\n\n/**\n * Set the active backend. Must be called before creating any instance wrappers.\n */\nexport function setBackend(backend: BackendType) {\n _backend = backend;\n if (backend === 'napi') {\n _napiModule = getNapiModule();\n }\n}\n\nexport function getBackend(): BackendType {\n return _backend;\n}\n\n/**\n * Try to load the NAPI module. Returns null if unavailable.\n */\nfunction getNapiModule(): any {\n if (_napiModule) return _napiModule;\n // Check globalThis in case setNapiModule was called from another module instance\n if ((globalThis as any).__alizarin_napi) {\n _napiModule = (globalThis as any).__alizarin_napi;\n return _napiModule;\n }\n return null;\n}\n\n/**\n * Register a pre-loaded NAPI module (for when require() path resolution\n * doesn't work, e.g., in bundled environments).\n */\nexport function setNapiModule(mod: any) {\n _napiModule = mod;\n _backend = 'napi';\n // Expose for modules that can't import backend.ts without circular deps\n (globalThis as any).__alizarin_napi = mod;\n}\n\n// ============================================================================\n// Instance wrapper factories\n// ============================================================================\n\n/**\n * Create an instance wrapper for a resource.\n * Returns either a WASMResourceInstanceWrapper or NapiResourceInstanceWrapper,\n * both of which share the same method interface.\n */\nexport function createInstanceWrapperForResource(resource: StaticResource): any {\n if (_backend === 'napi') {\n const napi = getNapiModule();\n if (!napi) throw new Error('NAPI backend selected but @alizarin/napi not available');\n const wrapper = new napi.NapiResourceInstanceWrapper(resource.resourceinstance.graph_id);\n wrapper.loadTilesFromResource(resource);\n return wrapper;\n }\n const { newWASMResourceInstanceWrapperForResource } = getWasmModule();\n return newWASMResourceInstanceWrapperForResource(resource);\n}\n\n/**\n * Create an instance wrapper for a model (no resource data yet).\n */\nexport function createInstanceWrapperForModel(graphId: string): any {\n if (_backend === 'napi') {\n const napi = getNapiModule();\n if (!napi) throw new Error('NAPI backend selected but @alizarin/napi not available');\n return new napi.NapiResourceInstanceWrapper(graphId);\n }\n const { newWASMResourceInstanceWrapperForModel } = getWasmModule();\n return newWASMResourceInstanceWrapperForModel(graphId);\n}\n\n// ============================================================================\n// Resource registry factory\n// ============================================================================\n\n/**\n * Create a resource registry (for staticStore).\n */\nexport function createResourceRegistry(): any {\n if (_backend === 'napi') {\n const napi = getNapiModule();\n if (!napi) throw new Error('NAPI backend selected but @alizarin/napi not available');\n return new napi.NapiStaticResourceRegistry();\n }\n const { StaticResourceRegistry } = getWasmModule();\n return new StaticResourceRegistry();\n}\n\n// ============================================================================\n// RDM cache factory\n// ============================================================================\n\nlet _rdmCache: any = null;\n\n/**\n * Get or create a backend-appropriate RDM cache.\n * In WASM mode returns WasmRdmCache; in NAPI mode returns NapiRdmCache.\n */\nexport function getRdmCache(): any {\n if (_rdmCache) return _rdmCache;\n if (_backend === 'napi') {\n const napi = getNapiModule();\n if (!napi) throw new Error('NAPI backend selected but @alizarin/napi not available');\n _rdmCache = new napi.NapiRdmCache();\n } else {\n const { RdmCache } = getWasmModule();\n _rdmCache = new RdmCache();\n }\n return _rdmCache;\n}\n\nlet _nodeConfigManager: any = null;\n\n/**\n * Get or create a backend-appropriate node config manager.\n */\nexport function getNodeConfigManager(): any {\n if (_nodeConfigManager) return _nodeConfigManager;\n if (_backend === 'napi') {\n const napi = getNapiModule();\n if (!napi) throw new Error('NAPI backend selected but @alizarin/napi not available');\n _nodeConfigManager = new napi.NapiNodeConfigManager();\n } else {\n const { NodeConfigManager } = getWasmModule();\n _nodeConfigManager = new NodeConfigManager();\n }\n return _nodeConfigManager;\n}\n\n// ============================================================================\n// Model wrapper factory\n// ============================================================================\n\n/**\n * Create a model wrapper backend (graph schema operations).\n * Returns either a WASMResourceModelWrapper or NapiResourceModelWrapper.\n *\n * In WASM mode, the wkrm is passed to the constructor (WASM stores it).\n * In NAPI mode, only the graph and defaultAllow are needed — wkrm is\n * stored in the TS ResourceModelWrapper directly.\n */\nexport function createResourceModelWrapper(wkrm: any, graph: any, defaultAllow: boolean): any {\n if (_backend === 'napi') {\n const napi = getNapiModule();\n if (!napi) throw new Error('NAPI backend selected but @alizarin/napi not available');\n // NapiResourceModelWrapper takes graph JSON string + defaultAllow\n const graphJson = typeof graph === 'string' ? graph : JSON.stringify(graph);\n return new napi.NapiResourceModelWrapper(graphJson, defaultAllow);\n }\n const { WASMResourceModelWrapper } = getWasmModule();\n return new WASMResourceModelWrapper(wkrm, graph, defaultAllow);\n}\n\n// ============================================================================\n// WKRM factory\n// ============================================================================\n\n/**\n * Convert a string with underscores, hyphens, or spaces to PascalCase.\n * Matches the Rust WKRM::to_pascal_case implementation.\n */\nfunction toPascalCase(s: string): string {\n return s\n .replace(/[_-]/g, ' ')\n .split(/\\s+/)\n .filter(word => word.length > 0)\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join('');\n}\n\n/**\n * Extract a display string from a StaticTranslatableString (or plain string/object).\n */\nfunction extractTranslatableName(name: any): string {\n if (!name) return 'Unnamed';\n if (typeof name === 'string') return name;\n // WASM StaticTranslatableString — has toString or toStringDefault\n if (typeof name.toStringDefault === 'function') return name.toStringDefault();\n if (typeof name.toString === 'function' && name.toString !== Object.prototype.toString) {\n return name.toString();\n }\n // Plain object with language keys, e.g. { \"en\": \"Name\" }\n if (typeof name === 'object') {\n const values = Object.values(name);\n if (values.length > 0 && typeof values[0] === 'string') return values[0] as string;\n }\n return 'Unnamed';\n}\n\n/**\n * Pure TS WKRM (Well-Known Resource Model) — metadata container.\n * Provides the same interface as the WASM WKRM class.\n */\nclass TSWkrm {\n graphId: string;\n modelName: string;\n modelClassName: string;\n meta: any;\n\n constructor(meta: any) {\n this.meta = meta;\n this.graphId = meta.graphid;\n this.modelName = extractTranslatableName(meta.name);\n const baseName = meta.slug || this.modelName;\n this.modelClassName = toPascalCase(baseName);\n }\n}\n\n/**\n * Create a WKRM (Well-Known Resource Model) from graph metadata.\n * In WASM mode uses the Rust WKRM class; in NAPI mode uses a pure TS equivalent.\n */\nexport function createWKRM(meta: any): any {\n if (_backend === 'napi') {\n return new TSWkrm(meta);\n }\n const { WKRM } = getWasmModule();\n return new WKRM(meta);\n}\n\n/**\n * Get the WKRM class itself (for instanceof checks or direct construction).\n */\nexport function getWKRMClass(): any {\n if (_backend === 'napi') return TSWkrm;\n const { WKRM } = getWasmModule();\n return WKRM;\n}\n\n// ============================================================================\n// Auto-detection\n// ============================================================================\n\n/**\n * Auto-detect the best backend for the current environment.\n * Prefers NAPI in Node.js when available, falls back to WASM.\n */\nexport function autoDetectBackend(): BackendType {\n // Check environment variable override\n if (typeof process !== 'undefined' && process.env?.ALIZARIN_BACKEND) {\n const env = process.env.ALIZARIN_BACKEND.toLowerCase();\n if (env === 'napi' || env === 'wasm') return env as BackendType;\n }\n\n // In Node.js, try NAPI first\n if (typeof process !== 'undefined' && process.versions?.node) {\n const napi = getNapiModule();\n if (napi) return 'napi';\n }\n\n return 'wasm';\n}\n","import init, { initSync, StaticNode as WasmStaticNode, StaticGraphMeta as WasmStaticGraphMeta, StaticTranslatableString, WasmRdmCache, getRscvTimings, parseSkosXml, parseSkosXmlToCollection, collectionToSkosXml, collectionsToSkosXml, registerExtensionHandler } from \"../pkg/alizarin\";\nimport * as wasmPkg from \"../pkg/alizarin\";\nimport { registerRustTimingGetter } from \"./tracing\";\nimport { setWasmModule } from \"./backend\";\nlet wasmURL: string = (() => {\n try {\n return new URL(\"../pkg/alizarin_bg.wasm\", import.meta.url).href;\n } catch {\n return \"alizarin_bg.wasm\";\n }\n})();\n\nexport function setWasmURL(url: string) {\n if (wasmInitialized) {\n throw new Error(\"Cannot set WASM URL after initialization\");\n }\n wasmURL = url;\n}\n\nlet wasmInitialized = false;\n\n// Global WASM RDM cache singleton for concept parent lookups\nlet _globalWasmRdmCache: WasmRdmCache | null = null;\n\n/**\n * Get the global WASM RDM cache singleton.\n * Creates the cache on first access (after WASM initialization).\n * @throws Error if WASM is not yet initialized\n */\nexport function getGlobalWasmRdmCache(): WasmRdmCache {\n if (!wasmInitialized) {\n throw new Error(\"WASM not initialized. Call initWasm() first.\");\n }\n if (!_globalWasmRdmCache) {\n _globalWasmRdmCache = new WasmRdmCache();\n }\n return _globalWasmRdmCache;\n}\n\n/**\n * Check if the global WASM RDM cache is available.\n */\nexport function hasGlobalWasmRdmCache(): boolean {\n return wasmInitialized && _globalWasmRdmCache !== null;\n}\n\n/**\n * Ensure the WASM RDM cache is initialized and ready.\n * This can be awaited early in the application lifecycle to ensure\n * the cache is available before any hierarchy methods are called.\n * @returns The initialized WasmRdmCache\n */\nexport async function ensureWasmRdmCache(): Promise<WasmRdmCache> {\n if (!wasmInitialized) {\n await initWasm();\n }\n return getGlobalWasmRdmCache();\n}\n\n/**\n * Patch a WASM class prototype to delegate unknown String methods to toString().\n * This allows `sts.trim()`, `sts.toUpperCase()`, etc. to work transparently.\n */\nfunction patchStringLikePrototype(proto: object): void {\n const stringProto = String.prototype as Record<string, unknown>;\n const protoRecord = proto as Record<string, unknown>;\n\n for (const method of Object.getOwnPropertyNames(stringProto)) {\n if (typeof stringProto[method] === 'function' && !(method in protoRecord) && method !== 'constructor') {\n protoRecord[method] = function(this: { toString(): string }, ...args: unknown[]) {\n const str = this.toString();\n return (str as Record<string, unknown>)[method] instanceof Function\n ? ((str as Record<string, (...a: unknown[]) => unknown>)[method])(...args)\n : (str as Record<string, unknown>)[method];\n };\n }\n }\n\n // Add .length property\n Object.defineProperty(proto, 'length', {\n get(this: { toString(): string }) { return this.toString().length; },\n configurable: true,\n });\n\n // Add valueOf for coercion (template literals, concatenation)\n if (!('valueOf' in protoRecord)) {\n protoRecord['valueOf'] = function(this: { toString(): string }) {\n return this.toString();\n };\n }\n}\n\n/**\n * Apply prototype patches to WASM string-like classes.\n * Called once after WASM initialization.\n */\nfunction applyPrototypePatches(): void {\n // Patch StaticTranslatableString to behave like a String\n patchStringLikePrototype(StaticTranslatableString.prototype);\n}\n\nexport async function initWasm() {\n if (!wasmInitialized) {\n // Check if WASM is already available (initialized by another module instance)\n try {\n // Try to use a WASM export to see if it's already initialized\n new StaticTranslatableString('test');\n console.log('[alizarin] WASM already available from another module instance');\n wasmInitialized = true;\n setWasmModule(wasmPkg);\n return;\n } catch {\n // WASM not initialized yet, continue with normal initialization\n }\n\n // In Node.js environment (tests), use synchronous init with file system\n if (typeof process !== 'undefined' && process.versions?.node) {\n try {\n console.log('[alizarin] Initializing WASM in Node.js environment');\n\n // If WASM is available as inline data URI (from alizarin/inline build), decode directly\n if (wasmURL.startsWith('data:')) {\n const base64Data = wasmURL.slice(wasmURL.indexOf(',') + 1);\n const wasmBuffer = Buffer.from(base64Data, 'base64');\n initSync({ module: wasmBuffer });\n wasmInitialized = true;\n setWasmModule(wasmPkg);\n console.log('[alizarin] WASM initialized from inline data URI in Node.js');\n\n applyPrototypePatches();\n registerRustTimingGetter(getRscvTimings);\n return;\n }\n\n // Import Node modules only when in Node.js environment\n const fs = await import('fs');\n const path = await import('path');\n const { fileURLToPath } = await import('url');\n\n // Try multiple possible locations for the WASM file\n // This handles different import contexts (direct vs through extensions)\n const moduleDir = path.dirname(fileURLToPath(import.meta.url));\n const possiblePaths = [\n path.join(moduleDir, '../pkg', 'alizarin_bg.wasm'), // Normal: js/_wasm.ts -> pkg/\n path.join(process.cwd(), 'pkg', 'alizarin_bg.wasm'), // Working directory\n path.join(moduleDir, 'alizarin/pkg', 'alizarin_bg.wasm'),// From parent dir (extension context)\n path.join(moduleDir, '../../pkg', 'alizarin_bg.wasm'), // From dist/bundled location\n path.join(moduleDir, '../../../pkg', 'alizarin_bg.wasm'),// From deeply nested imports\n ];\n\n let wasmPath: string | undefined;\n for (const candidate of possiblePaths) {\n if (fs.existsSync(candidate)) {\n wasmPath = candidate;\n break;\n }\n }\n\n if (!wasmPath) {\n const error = new Error(\n `Could not find alizarin_bg.wasm in any of these locations:\\n${possiblePaths.map(p => ` - ${p}`).join('\\n')}`\n );\n console.error('[alizarin]', error.message);\n throw error;\n }\n\n const wasmBuffer = fs.readFileSync(wasmPath);\n try {\n initSync({ module: wasmBuffer });\n wasmInitialized = true;\n setWasmModule(wasmPkg);\n console.log('[alizarin] WASM initialized successfully in Node.js');\n } catch (initError) {\n const initMsg = initError instanceof Error ? initError.message : String(initError);\n if (initMsg.includes('memory already initialized') || initMsg.includes('unreachable')) {\n console.log('[alizarin] WASM already initialized (detected during initSync), continuing');\n wasmInitialized = true;\n setWasmModule(wasmPkg);\n return;\n }\n throw initError;\n }\n } catch (error) {\n // Check if this is a \"WASM already initialized\" error\n const errorMsg = error instanceof Error ? error.message : String(error);\n if (errorMsg.includes('memory already initialized') || errorMsg.includes('unreachable')) {\n // WASM is already initialized from another import context - this is fine\n console.log('[alizarin] WASM already initialized (from another import), continuing');\n wasmInitialized = true;\n setWasmModule(wasmPkg);\n return;\n }\n console.error('Failed to initialize WASM in Node.js:', error);\n throw error;\n }\n } else {\n // In browser environment, use async init with fetch\n // Short-circuit if the URL is clearly not a real WASM source (e.g. the\n // 'data:,' poison used by consumers to suppress auto-init).\n if (wasmURL === 'data:,' || wasmURL === '') {\n throw new Error('[alizarin] WASM URL not configured');\n }\n console.debug('[alizarin] Initializing WASM in browser environment', { wasmURL });\n try {\n await init({ module_or_path: wasmURL });\n console.log('[alizarin] WASM initialized successfully in browser');\n } catch (error) {\n console.debug('[alizarin] Failed to initialize WASM in browser:', error);\n throw error;\n }\n }\n\n // Apply prototype patches after WASM is initialized\n applyPrototypePatches();\n\n // Register Rust timing getter for unified tracing\n registerRustTimingGetter(getRscvTimings);\n\n wasmInitialized = true;\n setWasmModule(wasmPkg);\n }\n}\n\n// Re-export WASM types for use in the rest of the codebase\nexport { WasmStaticNode, WasmStaticGraphMeta, WasmRdmCache };\n\n// Re-export SKOS parsing and serialization functions\nexport { parseSkosXml, parseSkosXmlToCollection, collectionToSkosXml, collectionsToSkosXml };\n\n// Re-export extension registry function\nexport { registerExtensionHandler };\n","import { v4 as uuidv4 } from 'uuid';\nimport { generateUuidv5 } from './utils';\nimport { getCurrentLanguage, slugify } from './utils';\nimport { getGlobalWasmRdmCache } from './_wasm';\nimport {\n StaticGraphMeta,\n StaticNode,\n StaticTranslatableString,\n StaticNodegroup,\n StaticConstraint,\n StaticCard,\n StaticCardsXNodesXWidgets,\n StaticFunctionsXGraphs,\n StaticPublication,\n StaticTile,\n StaticGraph,\n StaticEdge,\n StaticResourceDescriptors,\n StaticResourceMetadata,\n StaticResourceSummary,\n StaticResourceReference,\n StaticResource,\n StaticResourceRegistry,\n} from '../pkg/alizarin';\n\ninterface IStaticDescriptorConfig {\n descriptor_types: {\n nodegroup_id: string,\n string_template: string\n }[],\n};\n\n// Factory function for creating StaticGraph instances (kept in TypeScript)\nfunction createStaticGraph(props: {\n author?: string,\n color?: string | null,\n config?: object,\n deploymentdate?: null | string,\n deploymentfile?: null | string,\n description?: string | StaticTranslatableString,\n graphid?: string,\n iconclass?: string,\n is_editable?: boolean | null,\n isresource?: boolean,\n jsonldcontext?: string | {[key: string]: any} | null,\n name: string | StaticTranslatableString,\n ontology_id?: string | string[] | null,\n relatable_resource_model_ids?: Array<string>,\n resource_2_resource_constraints?: Array<any> | null,\n slug?: string | null,\n subtitle?: string | StaticTranslatableString,\n template_id?: string,\n version?: string\n }, published: boolean=true): StaticGraph {\n const graphid = props.graphid || uuidv4();\n const publication = published ? new StaticPublication({\n graph_id: graphid,\n notes: null,\n publicationid: uuidv4(),\n published_time: (new Date()).toISOString()\n }) : null;\n // TODO: check name is not just string in upstream\n // Convert name to plain JS object for Rust deserialization\n let nameForRust;\n if (props.name instanceof StaticTranslatableString) {\n nameForRust = props.name.toJSON();\n } else if (typeof props.name === 'string') {\n nameForRust = props.name;\n } else {\n throw Error(`Name of graph must be string or StaticTranslatableString, not ${props.name}`);\n }\n const alias = slugify(typeof nameForRust === 'string' ? nameForRust : JSON.stringify(nameForRust));\n const root = new StaticNode({\n \"alias\": alias,\n \"config\": {},\n \"datatype\": \"semantic\",\n \"description\": \"\",\n \"exportable\": false,\n \"fieldname\": \"\",\n \"graph_id\": graphid,\n \"hascustomalias\": false,\n \"is_collector\": false,\n \"isrequired\": false,\n \"issearchable\": true,\n \"istopnode\": true,\n \"name\": typeof nameForRust === 'string' ? nameForRust : (nameForRust.en || Object.values(nameForRust)[0] || ''),\n \"nodegroup_id\": null,\n \"nodeid\": graphid,\n \"ontologyclass\": props.ontology_id ?? null,\n \"parentproperty\": null,\n \"sortorder\": 0,\n \"sourcebranchpublication_id\": null\n });\n\n let subtitleForRust;\n if (props.subtitle) {\n if (props.subtitle instanceof StaticTranslatableString) {\n subtitleForRust = props.subtitle.toJSON();\n } else {\n subtitleForRust = props.subtitle;\n }\n } else {\n subtitleForRust = '';\n }\n\n return new StaticGraph({\n author: props.author || '',\n cards: null,\n cards_x_nodes_x_widgets: null,\n color: props.color || null,\n config: props.config || {},\n deploymentdate: props.deploymentdate || null,\n deploymentfile: props.deploymentfile || null,\n description: props.description ? (\n props.description instanceof StaticTranslatableString ?\n props.description : new StaticTranslatableString(props.description)\n ) : new StaticTranslatableString(''),\n edges: [],\n functions_x_graphs: [],\n graphid: graphid,\n iconclass: props.iconclass || '',\n is_editable: props.is_editable || null,\n isresource: props.isresource ?? false,\n jsonldcontext: props.jsonldcontext || null,\n name: nameForRust,\n nodegroups: [],\n nodes: root ? [root.copy()] : [],\n ontology_id: props.ontology_id || null,\n publication: publication,\n relatable_resource_model_ids: props.relatable_resource_model_ids || [],\n resource_2_resource_constraints: props.resource_2_resource_constraints || null,\n root: root,\n slug: props.slug || null,\n subtitle: subtitleForRust,\n template_id: props.template_id || '',\n version: props.version || ''\n });\n}\n\n/// Resources\n//\nclass StaticValue {\n id: string;\n value: string;\n __concept?: StaticConcept | null;\n __conceptId?: string | null;\n\n constructor(jsonData: StaticValue, concept: StaticConcept | string | null = null) {\n this.id = jsonData.id;\n this.value = jsonData.value;\n if (concept instanceof StaticConcept) {\n this.__concept = concept;\n this.__conceptId = concept ? concept.id : null;\n } else {\n this.__concept = null;\n this.__conceptId = concept;\n }\n }\n\n toJSON() {\n return {id: this.id, value: this.value};\n }\n\n toString() {\n return this.value;\n }\n\n static create(referent: string | StaticConcept, valueType: string, value: string, language?: string) {\n const lang = language || getCurrentLanguage();\n const referentId = referent instanceof StaticConcept ? referent.id : referent;\n // NB: this means passing an ID of a concept, and a concept, have different ID-creating behaviour.\n const concept = referent instanceof StaticConcept ? referent : null;\n const id = generateUuidv5(\n ['value'],\n `${referentId}/${valueType}/${value}/${lang}`\n );\n return new StaticValue(\n {\n id: id,\n value: value\n },\n concept\n );\n }\n}\n\nclass StaticConcept {\n id: string;\n prefLabels: { [lang: string]: StaticValue };\n source: string | null;\n sortOrder: number | null;\n children: StaticConcept[] | null;\n\n constructor(jsonData: StaticConcept) {\n this.id = jsonData.id;\n this.prefLabels = jsonData.prefLabels;\n for (const [lang, value] of Object.entries(this.prefLabels)) {\n if (!(value instanceof StaticValue)) {\n this.prefLabels[lang] = new StaticValue(value, this);\n } else {\n // Set backlink even if already a StaticValue\n value.__concept = this;\n value.__conceptId = this.id;\n }\n }\n this.source = jsonData.source;\n this.sortOrder = jsonData.sortOrder;\n this.children = jsonData.children;\n if (this.children) {\n this.children = this.children.map((child) => {\n return child instanceof StaticConcept\n ? child\n : new StaticConcept(child);\n });\n }\n }\n\n getPrefLabel?(): StaticValue {\n return (\n this.prefLabels[getCurrentLanguage()] || Object.values(this.prefLabels)[0]\n );\n }\n\n toString() {\n if (!this.getPrefLabel) {\n return this.constructor(this).getPrefLabel().value;\n }\n return this.getPrefLabel().value;\n }\n\n // NB: copies value, does not make it a child\n static fromValue(conceptScheme: StaticConcept | null, value: string | StaticValue | { [lang: string]: StaticValue }, children?: (string | StaticValue | StaticConcept)[], config: {baseLanguage?: string, source?: string | null, sortOrder?: number | null} = {}): StaticConcept {\n // TODO make sure that children are in the same concept scheme so that deterministic IDs are preserved.\n let lang = config?.baseLanguage || getCurrentLanguage();\n let tmpValue: string;\n let prefLabels: { [lang: string]: StaticValue } | null = null;\n\n if (typeof value === 'string') {\n tmpValue = value;\n // prefLabels will be created after we have the concept ID\n } else if (value instanceof StaticValue) {\n tmpValue = value.value;\n prefLabels = {[lang]: value};\n } else if (lang in value) {\n tmpValue = value[lang].value;\n prefLabels = value;\n } else {\n const firstValue = Object.entries(value).sort()[0];\n if (firstValue === undefined) {\n throw Error(\"Cannot create a concept from values without a non-empty value\");\n }\n lang = firstValue[0];\n tmpValue = firstValue[1].value;\n prefLabels = value;\n }\n\n const conceptId = generateUuidv5(\n ['concept'],\n `${conceptScheme?.id || '(none)'}/${tmpValue}`\n );\n\n // Create prefLabels with proper value ID if not already set\n if (prefLabels === null) {\n const valueId = generateUuidv5(\n ['value'],\n `${conceptId}/prefLabel/${tmpValue}/${lang}`\n );\n prefLabels = {[lang]: new StaticValue({id: valueId, value: tmpValue})};\n }\n\n const childConcepts = (children || []).map(child => {\n if (!(child instanceof StaticConcept)) {\n return StaticConcept.fromValue(conceptScheme, child, [], {baseLanguage: config.baseLanguage});\n }\n return child;\n });\n\n return new StaticConcept({\n id: conceptId,\n prefLabels,\n source: config.source || null,\n sortOrder: config.sortOrder || null,\n children: childConcepts\n });\n }\n}\n\n/**\n * Type of SKOS grouping structure.\n * - ConceptScheme: Uses narrower/broader hierarchy (default)\n * - Collection: Uses flat member relationships (Arches-compatible)\n */\nexport type SkosNodeType = 'ConceptScheme' | 'Collection';\n\n// A prefLabel, for example, can only exist once per language.\nclass StaticCollection {\n id: string;\n uri?: string;\n prefLabels: { [lang: string]: StaticValue };\n altLabels?: { [lang: string]: StaticValue[] };\n scopeNotes?: { [lang: string]: StaticValue };\n nodeType: SkosNodeType;\n concepts: { [conceptId: string]: StaticConcept };\n __allConcepts: { [conceptId: string]: StaticConcept };\n __values: { [valueId: string]: StaticValue };\n\n static fromConceptScheme(props: {\n collectionid?: string,\n name?: string | { [lang: string]: StaticValue } | StaticValue;\n conceptScheme: StaticConcept;\n nodeType?: SkosNodeType;\n }): StaticCollection {\n const collectionName = props.name ?? props.conceptScheme.toString();\n return StaticCollection.create({\n collectionid: props.collectionid,\n name: collectionName,\n concepts: props.conceptScheme.children || [],\n nodeType: props.nodeType\n })\n }\n\n /**\n * Create a new StaticCollection.\n * @param props.nodeType - 'ConceptScheme' (default) for hierarchical, 'Collection' for flat Arches-compatible\n */\n static create(props: {\n collectionid?: string,\n uri?: string,\n name: string | { [lang: string]: StaticValue } | StaticValue;\n concepts: StaticConcept[] | { [conceptId: string]: StaticConcept };\n nodeType?: SkosNodeType;\n }): StaticCollection {\n let concepts = props.concepts;\n if (Array.isArray(concepts)) {\n concepts = concepts.reduce(\n (acc: { [conceptId: string]: StaticConcept }, c: StaticConcept) => {\n acc[c.id] = c;\n return acc;\n },\n {});\n }\n const name: StaticValue | { [lang: string]: StaticValue } = (\n typeof props.name === 'string' ?\n StaticValue.create('', 'prefLabel', props.name) :\n props.name\n );\n let collectionid = props.collectionid;\n if (!collectionid) {\n if (typeof name === 'string') {\n collectionid = generateUuidv5(\n ['collection'],\n name\n );\n } else if (name instanceof StaticValue) {\n collectionid = generateUuidv5(\n ['collection'],\n name.value\n );\n } else {\n throw Error(\"Must have a unique name to create a collection ID\");\n }\n }\n const prefLabels: { [lang: string]: StaticValue } = name instanceof StaticValue ? {\n [getCurrentLanguage()]: name\n } : name;\n return new StaticCollection({\n id: collectionid,\n uri: props.uri,\n prefLabels: prefLabels,\n nodeType: props.nodeType || 'ConceptScheme',\n concepts: concepts,\n __allConcepts: {},\n __values: {}\n });\n }\n\n constructor(jsonData: StaticCollection) {\n this.id = jsonData.id;\n this.uri = jsonData.uri;\n this.prefLabels = jsonData.prefLabels;\n this.altLabels = jsonData.altLabels;\n this.scopeNotes = jsonData.scopeNotes;\n this.nodeType = jsonData.nodeType || 'ConceptScheme';\n this.concepts = jsonData.concepts;\n this.__allConcepts = {};\n this.__values = {};\n const addValues = (concept: StaticConcept) => {\n this.__allConcepts[concept.id] = concept;\n for (const [, value] of Object.entries(concept.prefLabels)) {\n this.__values[value.id] = value;\n }\n if (concept.children) {\n for (let child of concept.children) {\n if (!(child instanceof StaticConcept)) {\n child = new StaticConcept(child);\n }\n addValues(child);\n }\n }\n };\n for (const [id, concept] of Object.entries(this.concepts)) {\n if (!(concept instanceof StaticConcept)) {\n this.concepts[id] = new StaticConcept(concept);\n }\n addValues(this.concepts[id]);\n }\n }\n\n getConceptValue?(valueId: string) {\n return this.__values[valueId];\n }\n\n getConceptByValue?(label: string) {\n return Object.values(this.__values).find(value => value.value == label)?.__concept;\n }\n\n // Track whether this collection has been synced to Rust cache\n private _syncedToRustCache: boolean = false;\n\n /**\n * Ensure this collection is synced to the Rust RDM cache.\n * This is called automatically by hierarchy methods, but can be called\n * explicitly to pre-sync collections before label resolution.\n * @throws Error if WASM is not initialized\n */\n ensureInCache?(): void {\n getGlobalWasmRdmCache(); // Ensures WASM is initialized and cache exists\n this._ensureInRustCache();\n }\n\n /**\n * Get the parent concept ID for a given concept.\n * Uses the Rust RDM cache for hierarchy lookups.\n * @returns The parent concept ID, or null if no parent (top-level concept)\n * @throws Error if WASM is not initialized\n */\n getParentId?(conceptId: string): string | null {\n const cache = getGlobalWasmRdmCache();\n this._ensureInRustCache();\n return cache.getParentId(this.id, conceptId) ?? null;\n }\n\n /**\n * Get the parent concept for a given concept.\n * @returns The parent concept, or null if no parent\n */\n getParent?(conceptId: string): StaticConcept | null {\n const parentId = this.getParentId?.(conceptId);\n return parentId ? this.__allConcepts[parentId] ?? null : null;\n }\n\n /**\n * Get all ancestor concepts for a given concept (parent, grandparent, etc).\n * Returns in order from immediate parent to root.\n */\n getAncestors?(conceptId: string): StaticConcept[] {\n const ancestors: StaticConcept[] = [];\n let currentId: string | null = conceptId;\n\n while (currentId) {\n const parentId = this.getParentId?.(currentId);\n if (!parentId) break;\n const parent = this.__allConcepts[parentId];\n if (parent) {\n ancestors.push(parent);\n }\n currentId = parentId;\n }\n\n return ancestors;\n }\n\n /**\n * Ensure this collection's data is in the Rust RDM cache.\n * Called lazily when hierarchy lookups are needed.\n * @internal\n */\n private _ensureInRustCache(): void {\n if (this._syncedToRustCache) return;\n\n const cache = getGlobalWasmRdmCache();\n if (cache.hasCollection(this.id)) {\n this._syncedToRustCache = true;\n return;\n }\n\n // Convert to the format expected by the Rust cache\n const concepts = this._toRustCacheFormat();\n cache.addCollectionFromJson(this.id, JSON.stringify(concepts));\n this._syncedToRustCache = true;\n }\n\n /**\n * Convert collection concepts to the format expected by Rust cache.\n * @internal\n */\n private _toRustCacheFormat(): object[] {\n const result: object[] = [];\n\n const addConcept = (concept: StaticConcept, parentId: string | null) => {\n const prefLabels: { [lang: string]: { id: string; value: string } } = {};\n for (const [lang, value] of Object.entries(concept.prefLabels)) {\n prefLabels[lang] = { id: value.id, value: value.value };\n }\n\n const broader = parentId ? [parentId] : [];\n const narrower = concept.children?.map(c => c.id) || [];\n\n result.push({\n id: concept.id,\n prefLabels,\n broader,\n narrower,\n });\n\n // Recursively add children\n if (concept.children) {\n for (const child of concept.children) {\n addConcept(child, concept.id);\n }\n }\n };\n\n // Add all top-level concepts\n for (const concept of Object.values(this.concepts)) {\n addConcept(concept, null);\n }\n\n return result;\n }\n\n toString(): string {\n return (this.prefLabels[getCurrentLanguage()] || Object.values(this.prefLabels)[0] || '').toString();\n }\n}\n\nclass StaticDomainValue {\n id: string\n selected: boolean\n text: {[lang: string]: string}\n\n constructor(jsonData: StaticDomainValue) {\n this.id = jsonData.id;\n this.selected = jsonData.selected;\n this.text = jsonData.text;\n }\n\n toString() {\n const lang = getCurrentLanguage();\n let localized = this.text[lang];\n if (typeof localized !== \"string\") {\n localized = Object.values(this.text)[0];\n }\n if (!localized) {\n throw Error(`Could not render domain value ${this.id} in language ${lang}`);\n }\n return localized;\n }\n\n lang(lang: string): string | undefined {\n return this.text[lang];\n }\n\n async forJson() {\n return {\n id: this.id,\n selected: this.selected,\n text: this.text\n }\n }\n}\n\nexport {\n StaticValue,\n StaticTile,\n StaticGraph,\n createStaticGraph,\n StaticResource,\n StaticResourceSummary,\n StaticResourceMetadata,\n StaticResourceRegistry,\n StaticNode,\n StaticNodegroup,\n StaticEdge,\n StaticCard,\n StaticCardsXNodesXWidgets,\n StaticCollection,\n StaticConcept,\n StaticDomainValue,\n StaticResourceReference,\n StaticGraphMeta,\n StaticFunctionsXGraphs,\n StaticResourceDescriptors,\n StaticTranslatableString,\n StaticConstraint,\n StaticPublication,\n type IStaticDescriptorConfig,\n type SkosNodeType\n};\n","import { StaticGraphMeta, StaticGraph, StaticResource, StaticResourceSummary, StaticResourceRegistry, StaticTile } from \"./static-types\";\nimport { StaticCollection } from \"./rdm\";\n\nclass GraphResult {\n models: {[graphId: string]: StaticGraphMeta};\n\n constructor(jsonData: GraphResult) {\n this.models = Object.fromEntries(\n Object.entries(jsonData.models).map(([k, v]) => {\n // Inject graphid from the key if not present in the value\n const data = { graphid: k, ...v };\n return [k, new StaticGraphMeta(data)];\n })\n );\n }\n}\n\nabstract class ArchesClient {\n registry: StaticResourceRegistry | null = null;\n\n abstract getGraphs(): Promise<GraphResult>;\n\n abstract getGraph(graph: StaticGraphMeta): Promise<StaticGraph | null>;\n\n abstract getGraphByIdOnly(graphId: string): Promise<StaticGraph | null>;\n\n abstract getResources(\n graphId: string,\n limit: number,\n reloadIfSeen: boolean\n ): Promise<StaticResource[]>;\n\n abstract getResource(resourceId: string): Promise<StaticResource>;\n\n abstract getCollection(collectionId: string): Promise<StaticCollection>;\n\n // New summary-based methods for performance optimization\n abstract getResourceSummaries(\n graphId: string,\n limit: number,\n ): Promise<StaticResourceSummary[]>;\n\n abstract getResourceTiles(resourceId: string): Promise<StaticTile[]>;\n}\n\nclass ArchesClientRemote extends ArchesClient {\n archesUrl: string;\n\n constructor(archesUrl: string) {\n super();\n this.archesUrl = archesUrl;\n }\n\n async getGraphs(): Promise<GraphResult> {\n const response = await fetch(\n `${this.archesUrl}/api/arches/graphs?format=arches-json&hide_empty_nodes=false&compact=false`,\n );\n return await response.json();\n }\n\n async getGraph(graph: StaticGraphMeta): Promise<StaticGraph> {\n return this.getGraphByIdOnly(graph.graphid);\n }\n\n async getGraphByIdOnly(graphId: string): Promise<StaticGraph> {\n const response = await fetch(\n `${this.archesUrl}/graphs/${graphId}?format=arches-json&gen=`,\n );\n const jsonText = await response.text();\n return StaticGraph.fromJsonString(jsonText);\n }\n\n async getResource(resourceId: string): Promise<StaticResource> {\n throw Error(`Not implemented yet: getResource(${resourceId}`);\n }\n\n async getCollection(collectionId: string): Promise<StaticCollection> {\n throw Error(`Not implemented yet: getCollection(${collectionId}`);\n }\n\n async getResources(\n graphId: string,\n limit: number,\n _reloadIfSeen: boolean\n ): Promise<StaticResource[]> {\n const response = await fetch(\n `${this.archesUrl}/resources?graph_uuid=${graphId}&format=arches-json&hide_empty_nodes=false&compact=false&limit=${limit}`,\n );\n return await response.json();\n }\n\n async getResourceSummaries(\n graphId: string,\n limit: number,\n ): Promise<StaticResourceSummary[]> {\n // For remote client, this would ideally be a separate endpoint\n // For now, fall back to getting full resources and extracting summaries\n const resources = await this.getResources(graphId, limit, false);\n return resources.map(resource => new StaticResourceSummary({\n resourceinstanceid: resource.resourceinstance.resourceinstanceid,\n graph_id: resource.resourceinstance.graph_id,\n name: resource.resourceinstance.name,\n descriptors: resource.resourceinstance.descriptors || {},\n metadata: resource.metadata || {},\n publication_id: resource.resourceinstance.publication_id,\n principaluser_id: resource.resourceinstance.principaluser_id,\n legacyid: resource.resourceinstance.legacyid,\n graph_publication_id: resource.resourceinstance.graph_publication_id\n }));\n }\n\n async getResourceTiles(resourceId: string): Promise<StaticTile[]> {\n const resource = await this.getResource(resourceId);\n return resource.tiles || [];\n }\n}\n\nclass ArchesClientRemoteStatic extends ArchesClient {\n archesUrl: string;\n allGraphFile: () => string;\n graphToGraphFile?: (graph: StaticGraphMeta) => string;\n graphIdToGraphFile: (graphId: string) => string;\n graphIdToResourcesFiles: ((graphId: string) => string[]) | ((graphId: string) => Promise<string[]>) | ((graphId: string) => AsyncGenerator<string>);\n resourceIdToFile: (resourceId: string) => string;\n collectionIdToFile: (collectionId: string) => string;\n\n constructor(\n archesUrl: string,\n {\n allGraphFile,\n graphToGraphFile,\n graphIdToResourcesFiles,\n resourceIdToFile,\n collectionIdToFile,\n graphIdToGraphFile,\n }: {\n allGraphFile?: () => string,\n graphToGraphFile?: (graph: StaticGraphMeta) => string,\n graphIdToGraphFile?: (graphId: string) => string;\n graphIdToResourcesFiles?: ((graphId: string) => string[]) | ((graphId: string) => Promise<string[]>) | ((graphId: string) => AsyncGenerator<string>);\n resourceIdToFile?: (resourceId: string) => string;\n collectionIdToFile?: (collectionId: string) => string;\n } = {},\n ) {\n super();\n this.archesUrl = archesUrl;\n this.allGraphFile = allGraphFile || (() => \"resource_models/_all.json\");\n this.graphToGraphFile = graphToGraphFile;\n this.graphIdToGraphFile =\n graphIdToGraphFile ||\n ((graphId: string) => `resource_models/${graphId}.json`);\n this.graphIdToResourcesFiles =\n graphIdToResourcesFiles ||\n ((graphId: string) => [`business_data/_${graphId}.json`]);\n this.resourceIdToFile =\n resourceIdToFile ||\n ((resourceId: string) => `business_data/${resourceId}.json`);\n this.collectionIdToFile =\n collectionIdToFile ||\n ((collectionId: string) => `collections/${collectionId}.json`);\n }\n\n async getGraphs(): Promise<GraphResult> {\n const response = await fetch(`${this.archesUrl}/${this.allGraphFile()}`);\n return await response.json();\n }\n\n async getGraph(graph: StaticGraphMeta): Promise<StaticGraph | null> {\n if (!this.graphToGraphFile) {\n return this.getGraphByIdOnly(graph.graphid);\n }\n const response = await fetch(\n `${this.archesUrl}/${this.graphToGraphFile(graph)}`,\n );\n const jsonText = await response.text();\n return StaticGraph.fromJsonString(jsonText);\n }\n\n async getGraphByIdOnly(graphId: string): Promise<StaticGraph | null> {\n const response = await fetch(\n `${this.archesUrl}/${this.graphIdToGraphFile(graphId)}`,\n );\n const jsonText = await response.text();\n return StaticGraph.fromJsonString(jsonText);\n }\n\n async getResource(resourceId: string): Promise<StaticResource> {\n const source = `${this.archesUrl}/${this.resourceIdToFile(resourceId)}`;\n const response = await fetch(source);\n const jsonText = await response.text();\n const resource = StaticResource.fromJsonString(jsonText);\n resource.__source = source;\n return resource;\n }\n\n async getCollection(collectionId: string): Promise<StaticCollection> {\n const jsonUrl = `${this.archesUrl}/${this.collectionIdToFile(collectionId)}`;\n const response = await fetch(jsonUrl);\n if (response.ok) {\n return await response.json();\n }\n // JSON not available — try SKOS XML fallback\n const xmlUrl = jsonUrl.replace(/\\.json$/, '.xml');\n const xmlResponse = await fetch(xmlUrl);\n if (!xmlResponse.ok) {\n throw new Error(`Collection ${collectionId} not found (tried JSON and XML)`);\n }\n const xmlText = await xmlResponse.text();\n const { parseSkosXmlToCollection, getRdmNamespaceRaw } = await import(\"../pkg/alizarin\");\n const baseUri = getRdmNamespaceRaw() || xmlResponse.url;\n return parseSkosXmlToCollection(xmlText, baseUri);\n }\n\n async getResources(\n graphId: string,\n limit: number,\n _reloadIfSeen: boolean\n ): Promise<StaticResource[]> {\n const resources: StaticResource[] = [];\n const result = this.graphIdToResourcesFiles(graphId);\n const files = (typeof result[Symbol.asyncIterator] === 'function' || typeof result[Symbol.iterator] === 'function')\n ? result\n : await result;\n for await (const file of files) {\n const source = `${this.archesUrl}/${file}`;\n const response = await fetch(source);\n // Use bulk parsing in Rust - single JSON string copy, parses all resources at once\n const jsonText = await response.text();\n const resourceSet: StaticResource[] = StaticResource.fromBusinessDataJsonString(jsonText);\n for (const resource of resourceSet) {\n resource.__source = source;\n }\n resources.push(...(limit ? resourceSet.slice(0, limit) : resourceSet));\n if (limit && resources.length > limit) {\n break;\n }\n }\n return resources;\n }\n\n async getResourceSummaries(\n graphId: string,\n limit: number,\n ): Promise<StaticResourceSummary[]> {\n const summaries: StaticResourceSummary[] = [];\n const result = this.graphIdToResourcesFiles(graphId);\n const files = (typeof result[Symbol.asyncIterator] === 'function' || typeof result[Symbol.iterator] === 'function')\n ? result\n : await result;\n for await (const file of files) {\n const source = `${this.archesUrl}/${file}`;\n const response = await fetch(source);\n // Use bulk parsing in Rust - parses entire file, extracts only summary fields\n const jsonText = await response.text();\n const summarySet: StaticResourceSummary[] = StaticResourceSummary.summariesFromBusinessDataJsonString(jsonText);\n summaries.push(...summarySet);\n\n if (limit && summaries.length >= limit) {\n return summaries.slice(0, limit);\n }\n }\n return limit ? summaries.slice(0, limit) : summaries;\n }\n\n async getResourceTiles(resourceId: string): Promise<StaticTile[]> {\n // For static client, we need to load the full resource to get tiles\n const resource = await this.getResource(resourceId);\n return resource.tiles || [];\n }\n}\n\nclass ArchesClientLocal extends ArchesClient {\n allGraphFile: () => string;\n graphToGraphFile?: (graph: StaticGraphMeta) => string;\n graphIdToGraphFile: (graphId: string) => string;\n graphIdToResourcesFiles: ((graphId: string) => string[]) | ((graphId: string) => Promise<string[]>) | ((graphId: string) => AsyncGenerator<string>);\n resourceIdToFile: (resourceId: string) => string;\n collectionIdToFile: (collectionId: string) => string;\n // This allows reloading of files not searched for a given graphId\n // i.e. only searching each file ONCE for a graphId.\n __loadedFileCache: {[graphId: string]: string[]};\n\n private async ensureFs() {\n // Only import fs when actually needed, and only in Node.js environment\n if (typeof process === 'undefined' || !process.versions?.node) {\n throw new Error('ArchesClientLocal requires Node.js filesystem access. Use ArchesClientRemoteStatic for browser environments.');\n }\n return import('fs');\n }\n\n constructor({\n allGraphFile,\n graphToGraphFile,\n graphIdToResourcesFiles,\n resourceIdToFile,\n collectionIdToFile,\n graphIdToGraphFile,\n }: {\n allGraphFile?: () => string,\n graphToGraphFile?: (graph: StaticGraphMeta) => string,\n graphIdToGraphFile?: (graphId: string) => string;\n graphIdToResourcesFiles?: ((graphId: string) => string[]) | ((graphId: string) => Promise<string[]>) | ((graphId: string) => AsyncGenerator<string>);\n resourceIdToFile?: (resourceId: string) => string;\n collectionIdToFile?: (collectionId: string) => string;\n } = {}) {\n super();\n this.allGraphFile = allGraphFile || (() => \"tests/definitions/models/_all.json\");\n this.graphToGraphFile =\n graphToGraphFile ||\n ((graph: StaticGraphMeta) => `tests/definitions/models/${graph.graphid}.json`);\n this.graphIdToGraphFile =\n graphIdToGraphFile ||\n ((graphId: string) => `tests/definitions/models/${graphId}.json`);\n this.graphIdToResourcesFiles =\n graphIdToResourcesFiles ||\n ((graphId: string) => [`tests/definitions/resources/_${graphId}.json`]);\n this.resourceIdToFile =\n resourceIdToFile ||\n ((resourceId: string) => `tests/definitions/resources/${resourceId}.json`);\n this.collectionIdToFile =\n collectionIdToFile ||\n ((collectionId: string) => `tests/definitions/collections/${collectionId}.json`);\n this.__loadedFileCache = {};\n }\n\n async getGraphs(): Promise<GraphResult> {\n const fs = await this.ensureFs();\n const response = await fs.promises.readFile(this.allGraphFile(), \"utf8\");\n return new GraphResult(await JSON.parse(response));\n }\n\n async getGraph(graph: StaticGraphMeta): Promise<StaticGraph | null> {\n const fs = await this.ensureFs();\n const graphFile = this.graphToGraphFile ? this.graphToGraphFile(graph) : this.graphIdToGraphFile(graph.graphid);\n if (!graphFile) {\n return null;\n }\n const jsonText = await fs.promises.readFile(\n graphFile,\n \"utf8\",\n );\n return StaticGraph.fromJsonString(jsonText);\n }\n\n async getGraphByIdOnly(graphId: string): Promise<StaticGraph | null> {\n const fs = await this.ensureFs();\n const graphFile = this.graphIdToGraphFile(graphId);\n if (!graphFile) {\n return null;\n }\n const jsonText = await fs.promises.readFile(\n graphFile,\n \"utf8\",\n );\n return StaticGraph.fromJsonString(jsonText);\n }\n\n async getResource(resourceId: string): Promise<StaticResource> {\n const fs = await this.ensureFs();\n const source = this.resourceIdToFile(resourceId);\n const response = await fs.promises.readFile(\n source,\n \"utf8\",\n );\n const resource: StaticResource[] = JSON.parse(response)\n .business_data\n .resources\n .filter(resource => resource.resourceinstance.resourceinstanceid === resourceId)\n .map(resource => new StaticResource(resource))[0];\n resource.__source = source;\n return resource;\n }\n\n async getCollection(collectionId: string): Promise<StaticCollection> {\n const fs = await this.ensureFs();\n const jsonPath = this.collectionIdToFile(collectionId);\n try {\n const response = await fs.promises.readFile(jsonPath, \"utf8\");\n return JSON.parse(response);\n } catch {\n // JSON not available — try SKOS XML fallback\n const xmlPath = jsonPath.replace(/\\.json$/, '.xml');\n const xmlContent = await fs.promises.readFile(xmlPath, \"utf8\");\n const { parseSkosXmlToCollection, getRdmNamespaceRaw } = await import(\"../pkg/alizarin\");\n const baseUri = getRdmNamespaceRaw() || \"http://localhost/\";\n return parseSkosXmlToCollection(xmlContent, baseUri);\n }\n }\n\n async getResources(\n graphId: string,\n limit: number | null,\n reloadIfSeen: boolean\n ): Promise<StaticResource[]> {\n if (!this.registry) {\n throw new Error('ArchesClientLocal requires a StaticResourceRegistry — set via staticStore');\n }\n const fs = await this.ensureFs();\n const resources: StaticResource[] = [];\n const result = this.graphIdToResourcesFiles(graphId);\n const files = (typeof result[Symbol.asyncIterator] === 'function' || typeof result[Symbol.iterator] === 'function')\n ? result\n : await result;\n for await (const file of files) {\n if (this.__loadedFileCache[graphId] && this.__loadedFileCache[graphId].includes(file)) {\n if (!reloadIfSeen) {\n continue;\n }\n } else {\n if (!this.__loadedFileCache[graphId]) {\n this.__loadedFileCache[graphId] = [];\n }\n this.__loadedFileCache[graphId].push(file);\n }\n // Read as raw bytes — no UTF-8 string, no V8 string length limit.\n // Parsing happens entirely in Rust via loadFromBusinessDataBytes.\n const buffer = await fs.promises.readFile(file);\n const bytes = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const refs: Array<{ resourceinstanceid: string; graph_id: string; isPublic: boolean }> =\n this.registry.loadFromBusinessDataBytes(bytes, true, true);\n\n for (const ref of refs) {\n if (ref.graph_id !== graphId) continue;\n const sr = this.registry.getFull(ref.resourceinstanceid);\n if (sr) {\n resources.push(sr);\n if (limit && resources.length >= limit) {\n break;\n }\n }\n }\n if (limit && resources.length >= limit) {\n break;\n }\n }\n return resources;\n }\n\n async getResourceSummaries(\n graphId: string,\n limit: number,\n ): Promise<StaticResourceSummary[]> {\n if (!this.registry) {\n throw new Error('ArchesClientLocal requires a StaticResourceRegistry — set via staticStore');\n }\n const fs = await this.ensureFs();\n const summaries: StaticResourceSummary[] = [];\n const result = this.graphIdToResourcesFiles(graphId);\n const files = (typeof result[Symbol.asyncIterator] === 'function' || typeof result[Symbol.iterator] === 'function')\n ? result\n : await result;\n for await (const file of files) {\n const buffer = await fs.promises.readFile(file);\n const bytes = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const refs: Array<{ resourceinstanceid: string; graph_id: string; isPublic: boolean }> =\n this.registry.loadFromBusinessDataBytes(bytes, false, true);\n\n for (const ref of refs) {\n if (ref.graph_id !== graphId) continue;\n const summary = this.registry.getSummary(ref.resourceinstanceid);\n if (summary) {\n summaries.push(summary);\n if (limit && summaries.length >= limit) {\n return summaries;\n }\n }\n }\n }\n return limit ? summaries.slice(0, limit) : summaries;\n }\n\n async getResourceTiles(resourceId: string): Promise<StaticTile[]> {\n const resource = await this.getResource(resourceId);\n return resource.tiles || [];\n }\n}\n\nconst archesClient = new ArchesClientRemote(\"http://localhost:8000\");\n\nexport {\n archesClient,\n ArchesClient,\n ArchesClientRemoteStatic,\n ArchesClientRemote,\n ArchesClientLocal,\n GraphResult,\n};\n","import { StaticCollection, StaticGraph } from \"./static-types\";\nimport { ArchesClient, archesClient } from \"./client\";\nimport { getGlobalWasmRdmCache, hasGlobalWasmRdmCache } from \"./_wasm\";\nimport {\n buildAliasToCollectionMap,\n findNeededCollections,\n isValidUuid,\n getDefaultResolvableDatatypes,\n getDefaultConfigKeys,\n} from \"../pkg/alizarin\";\n\n// Re-export WASM utilities\nexport { isValidUuid };\n\n// Lazy-loaded defaults from Rust (single source of truth)\n// Deferred to avoid calling WASM functions before initialization\nlet _labelResolvableDatatypes: Set<string> | null = null;\nlet _collectionConfigKeys: string[] | null = null;\n\n// Extension-registered resolvable datatypes (e.g. CLM registers \"reference\")\nconst _extensionResolvableDatatypes: Set<string> = new Set();\n\nfunction getLabelResolvableDatatypes(): Set<string> {\n if (_labelResolvableDatatypes === null) {\n _labelResolvableDatatypes = new Set(getDefaultResolvableDatatypes());\n }\n // Merge in extension-registered datatypes\n if (_extensionResolvableDatatypes.size > 0) {\n return new Set([..._labelResolvableDatatypes, ..._extensionResolvableDatatypes]);\n }\n return _labelResolvableDatatypes;\n}\n\n/**\n * Register an additional datatype for label resolution.\n * Extensions should call this to include their datatypes in resolveLabels.\n * E.g. CLM registers \"reference\" so reference labels are resolved.\n */\nfunction registerResolvableDatatype(datatype: string): void {\n _extensionResolvableDatatypes.add(datatype);\n}\n\n/**\n * Unregister a previously registered resolvable datatype.\n */\nfunction unregisterResolvableDatatype(datatype: string): void {\n _extensionResolvableDatatypes.delete(datatype);\n}\n\nfunction getCollectionConfigKeys(): string[] {\n if (_collectionConfigKeys === null) {\n _collectionConfigKeys = getDefaultConfigKeys();\n }\n return _collectionConfigKeys;\n}\n\ninterface ResolveLabelsOptions {\n /** If true, throw errors for unresolved labels. Default: false */\n strict?: boolean;\n /** Additional datatypes to resolve beyond the defaults and any extension-registered types */\n additionalDatatypes?: string[];\n /** Additional config keys to check for collection IDs */\n additionalConfigKeys?: string[];\n}\n\nclass ReferenceDataManager {\n archesClient: ArchesClient;\n collections: Map<string, Promise<StaticCollection>>;\n\n constructor(archesClient: ArchesClient) {\n this.archesClient = archesClient;\n this.collections = new Map<string, Promise<StaticCollection>>();\n }\n\n retrieveCollection(id: string): Promise<StaticCollection> {\n let collection = this.collections.get(id);\n if (collection !== undefined) {\n return collection;\n }\n collection = this.archesClient\n .getCollection(id)\n .then((jsonData) => new StaticCollection(jsonData));\n this.collections.set(id, collection);\n return collection;\n }\n\n /**\n * Add a pre-loaded collection to the cache.\n */\n addCollection(collection: StaticCollection): void {\n this.collections.set(collection.id, Promise.resolve(collection));\n }\n\n /**\n * Check if a collection is cached.\n */\n hasCollection(id: string): boolean {\n return this.collections.has(id);\n }\n\n /**\n * Clear a specific collection from cache.\n * Also clears from the Rust RDM cache if available.\n */\n clearCollection(id: string): void {\n this.collections.delete(id);\n // Also clear from Rust cache\n if (hasGlobalWasmRdmCache()) {\n try {\n getGlobalWasmRdmCache().removeCollection(id);\n } catch {\n // Ignore errors - cache may not have this collection\n }\n }\n }\n\n /**\n * Clear all cached collections.\n * Also clears the Rust RDM cache if available.\n */\n clear(): void {\n this.collections.clear();\n // Also clear Rust cache\n if (hasGlobalWasmRdmCache()) {\n try {\n getGlobalWasmRdmCache().clear();\n } catch {\n // Ignore errors\n }\n }\n }\n\n /**\n * Resolve label strings to UUIDs in a JSON tree.\n *\n * Uses centralized Rust/WASM implementation for tree traversal and resolution.\n * Only loads collections that are actually needed (lazy loading).\n *\n * @param tree - The data tree to resolve\n * @param graph - The graph definition (for node configs)\n * @param options - Resolution options\n * @returns The tree with labels resolved to UUIDs\n *\n * @example\n * ```typescript\n * const tree = { status: [\"Active\", \"Pending\"] };\n * const resolved = await RDM.resolveLabels(tree, graph);\n * // resolved = { status: [\"uuid-1\", \"uuid-2\"] }\n * ```\n */\n async resolveLabels<T extends object>(\n tree: T,\n graph: StaticGraph,\n options: ResolveLabelsOptions = {}\n ): Promise<T> {\n const { strict = false, additionalDatatypes = [], additionalConfigKeys = [] } = options;\n\n // Build datatypes and config keys arrays (lazy-loaded from Rust)\n const resolvableDatatypes = [\n ...getLabelResolvableDatatypes(),\n ...additionalDatatypes,\n ];\n const configKeys = [...getCollectionConfigKeys(), ...additionalConfigKeys];\n\n // Serialize tree and graph for WASM\n const treeJson = JSON.stringify(tree);\n const graphJson = JSON.stringify({ graph: [graph] });\n\n // Use Rust to build alias -> collection mapping\n // WASM returns a Map, convert to plain object for consistency\n const aliasToCollectionMap = buildAliasToCollectionMap(\n graphJson,\n resolvableDatatypes,\n configKeys\n ) as Map<string, string>;\n const aliasToCollection: Record<string, string> = Object.fromEntries(aliasToCollectionMap);\n\n if (Object.keys(aliasToCollection).length === 0) {\n // No resolvable nodes, return tree unchanged\n return tree;\n }\n\n // Use Rust to find which collections are actually needed\n const neededCollectionIds = findNeededCollections(treeJson, aliasToCollection);\n\n // Load needed collections and sync to Rust cache\n const collectionPromises = neededCollectionIds.map((id: string) =>\n this.retrieveCollection(id)\n );\n const loadedCollections = await Promise.all(collectionPromises);\n\n // Ensure all collections are in the Rust cache\n const cache = getGlobalWasmRdmCache();\n for (const collection of loadedCollections) {\n if (collection.ensureInCache) {\n collection.ensureInCache();\n }\n }\n\n // Use Rust cache to resolve labels (no JS lookup table needed)\n return cache.resolveLabels(\n treeJson,\n aliasToCollection,\n strict\n ) as T;\n }\n}\n\nconst RDM = new ReferenceDataManager(archesClient);\n\nexport { StaticCollection, ReferenceDataManager, RDM, registerResolvableDatatype, unregisterResolvableDatatype };\nexport type { ResolveLabelsOptions };\n","import { ArchesClient } from \"./client.ts\";\nimport {\n StaticResource,\n StaticResourceSummary,\n StaticResourceMetadata,\n StaticResourceRegistry,\n StaticTile,\n} from \"./static-types\";\nimport { createResourceRegistry } from \"./backend\";\n\n/**\n * StaticStore - Thin wrapper around StaticResourceRegistry with optional archesClient fallback\n *\n * Primary mode: Resources are pre-loaded into the registry before use.\n * Fallback mode: If archesClient is set and resource not in registry, loads on-demand.\n *\n * Methods return sync results wrapped in Promises for API compatibility.\n */\nclass StaticStore {\n private _registry: StaticResourceRegistry | null = null;\n private _archesClient: ArchesClient | null = null;\n\n constructor(registry?: StaticResourceRegistry) {\n if (registry) {\n this._registry = registry;\n }\n }\n\n get archesClient(): ArchesClient | null {\n return this._archesClient;\n }\n\n set archesClient(client: ArchesClient | null) {\n this._archesClient = client;\n if (client) {\n client.registry = this.registry;\n }\n }\n\n /**\n * Get or create the registry (lazy initialization for WASM timing)\n */\n get registry(): StaticResourceRegistry {\n if (!this._registry) {\n this._registry = createResourceRegistry();\n }\n return this._registry;\n }\n\n /**\n * Set the registry (allows replacing with a pre-populated registry)\n */\n set registry(registry: StaticResourceRegistry) {\n this._registry = registry;\n // Keep client's registry reference in sync\n if (this._archesClient) {\n this._archesClient.registry = registry;\n }\n }\n\n /**\n * Get metadata for a resource from the registry (or load via archesClient if available).\n */\n async getMeta(id: string, onlyIfCached: boolean = true): Promise<StaticResourceMetadata | null> {\n const summary = this.registry.getSummary(id);\n if (summary) {\n return summary.toMetadata();\n }\n\n // Fallback: load via archesClient if not in registry\n if (!onlyIfCached && this.archesClient) {\n const resource = await this.loadOne(id);\n return resource.resourceinstance;\n }\n return null;\n }\n\n /**\n * Get all full resources for a graph.\n * First yields from registry, then loads remaining via archesClient if available.\n */\n async* loadAll(\n graphId: string,\n limit: number | undefined = undefined,\n useCache: boolean = true\n ): AsyncIterable<StaticResource> {\n let count = 0;\n const yielded = new Set<string>();\n\n // First: yield from registry\n if (useCache) {\n const resources = this.registry.getAllFullForGraph(graphId);\n for (const resource of resources) {\n if (limit && count >= limit) return;\n yielded.add(resource.resourceinstance.resourceinstanceid);\n yield resource;\n count++;\n }\n }\n\n // Second: load remaining via archesClient if available\n if (this.archesClient && (!limit || count < limit)) {\n const remaining = limit ? limit - count : undefined;\n const resources = await this.archesClient.getResources(graphId, remaining || 0, !useCache);\n\n for (const resource of resources) {\n if (limit && count >= limit) return;\n\n const id = resource.resourceinstance?.resourceinstanceid;\n if (id && yielded.has(id)) continue;\n if (resource.resourceinstance.graph_id !== graphId) continue;\n\n // If not already in registry (remote clients), merge first\n if (!this.registry.hasFull(id)) {\n const wrapped = resource instanceof StaticResource ? resource : new StaticResource(resource);\n this.registry.mergeFromResources([wrapped], true, true);\n }\n\n const fresh = this.registry.getFull(id);\n if (fresh) {\n yield fresh;\n count++;\n }\n }\n }\n }\n\n /**\n * Get a full resource from the registry (or load via archesClient if available).\n */\n async loadOne(id: string): Promise<StaticResource> {\n // Check registry first\n const cached = this.registry.getFull(id);\n if (cached) {\n return cached;\n }\n\n // Fallback: load via archesClient\n if (this.archesClient) {\n const resource = await this.archesClient.getResource(id);\n // Get the actual resourceinstanceid before merging (merge consumes the resource)\n // The registry stores by resourceinstanceid, not the lookup ID (which may be a slug)\n const resourceId = resource.resourceinstance.resourceinstanceid;\n // mergeFromResources CONSUMES the resource (transfers ownership to Rust),\n // so we must get a fresh copy from the registry after merging\n this.registry.mergeFromResources([resource], true, true);\n // Get fresh copy from registry using the actual resourceinstanceid\n const fresh = this.registry.getFull(resourceId);\n if (!fresh) {\n throw new Error(`Resource ${id} (${resourceId}) was merged but not found in registry`);\n }\n return fresh;\n }\n\n throw new Error(`Resource ${id} not in registry and no archesClient available.`);\n }\n\n /**\n * Get all summaries for a graph.\n */\n async* loadAllSummaries(\n graphId: string,\n limit: number | undefined = undefined,\n ): AsyncIterable<StaticResourceSummary> {\n let count = 0;\n const yielded = new Set<string>();\n\n // First: yield from registry (convert full resources to summaries)\n const resources = this.registry.getAllFullForGraph(graphId);\n for (const resource of resources) {\n if (limit && count >= limit) return;\n yielded.add(resource.resourceinstance.resourceinstanceid);\n yield StaticResourceSummary.fromResource(resource);\n count++;\n }\n\n // Second: load summaries via archesClient if available\n if (this.archesClient && (!limit || count < limit)) {\n const remaining = limit ? limit - count : 0;\n const summaries = await this.archesClient.getResourceSummaries(graphId, remaining);\n\n for (const summary of summaries) {\n if (limit && count >= limit) return;\n if (summary.graph_id !== graphId) continue;\n if (yielded.has(summary.resourceinstanceid)) continue;\n\n // Ensure in registry (remote clients may not have stored yet)\n if (!this.registry.contains(summary.resourceinstanceid)) {\n this.registry.insert(summary);\n }\n\n yield summary;\n count++;\n }\n }\n }\n\n /**\n * Get tiles for a resource.\n */\n async loadTiles(id: string, nodegroupId?: string | null): Promise<StaticTile[]> {\n // Try registry first\n const cached = this.registry.getFull(id);\n if (cached && cached.tilesLoaded) {\n const tiles = cached.tiles ?? [];\n return nodegroupId ? tiles.filter(tile => tile.nodegroup_id === nodegroupId) : tiles;\n }\n\n // Fallback: load tiles via archesClient\n if (this.archesClient) {\n const tiles = await this.archesClient.getResourceTiles(id);\n return nodegroupId ? tiles.filter(tile => tile.nodegroup_id === nodegroupId) : tiles;\n }\n\n throw new Error(`Resource ${id} tiles not in registry and no archesClient available.`);\n }\n\n /**\n * Get a full resource with tiles loaded.\n */\n async ensureFullResource(id: string): Promise<StaticResource> {\n // Check registry for full resource with tiles\n const cached = this.registry.getFull(id);\n if (cached && cached.tilesLoaded) {\n return cached;\n }\n\n // Fallback: load via archesClient\n if (this.archesClient) {\n const resource = await this.archesClient.getResource(id);\n // Get the actual resourceinstanceid before merging (merge consumes the resource)\n // The registry stores by resourceinstanceid, not the lookup ID (which may be a slug)\n const resourceId = resource.resourceinstance.resourceinstanceid;\n // mergeFromResources CONSUMES the resource (transfers ownership to Rust),\n // so we must get a fresh copy from the registry after merging\n this.registry.mergeFromResources([resource], true, true);\n // Get fresh copy from registry using the actual resourceinstanceid\n const fresh = this.registry.getFull(resourceId);\n if (!fresh) {\n throw new Error(`Resource ${id} (${resourceId}) was merged but not found in registry`);\n }\n return fresh;\n }\n\n if (cached) {\n throw new Error(`Resource ${id} in registry but tiles not loaded.`);\n }\n throw new Error(`Resource ${id} not in registry and no archesClient available.`);\n }\n\n /**\n * Check if a resource exists in the registry.\n */\n contains(id: string): boolean {\n return this.registry.contains(id);\n }\n\n /**\n * Check if a full resource (with tiles) exists in the registry.\n */\n hasFull(id: string): boolean {\n return this.registry.hasFull(id);\n }\n}\n\n// Default instance - registry is lazily initialized when first accessed\nconst staticStore = new StaticStore();\n\nexport { staticStore, StaticStore };\n","// The Widgets here are AGPLv3 from Arches DB setup.\n//\nimport {\n StaticNode\n} from \"./static-types\";\n\nclass CardComponent {\n id: string;\n name: string;\n\n constructor(id: string, name: string) {\n this.id = id;\n this.name = name;\n }\n};\n\nclass Widget {\n id: string;\n name: string;\n datatype: string;\n defaultConfig: string; // as JSON - always need a fresh copy\n\n constructor(id: string, name: string, datatype: string, defaultConfig: string) {\n this.id = id;\n this.name = name;\n this.datatype = datatype;\n this.defaultConfig = defaultConfig;\n }\n\n getDefaultConfig(): {[key: string]: any} {\n return JSON.parse(this.defaultConfig);\n }\n};\nconst DEFAULT_CARD_COMPONENT = new CardComponent(\n 'f05e4d3a-53c1-11e8-b0ea-784f435179ea',\n 'Default Card'\n);\nconst _WIDGET_VALUES: [string, string, string, string][] = [\n ['10000000-0000-0000-0000-000000000001', 'text-widget', 'string', '{ \"placeholder\": \"Enter text\", \"width\": \"100%\", \"maxLength\": null}'],\n ['10000000-0000-0000-0000-000000000002', 'concept-select-widget', 'concept', '{ \"placeholder\": \"Select an option\", \"options\": [] }'],\n ['10000000-0000-0000-0000-000000000012', 'concept-multiselect-widget', 'concept-list', '{ \"placeholder\": \"Select an option\", \"options\": [] }'],\n ['10000000-0000-0000-0000-000000000015', 'domain-select-widget', 'domain-value', '{ \"placeholder\": \"Select an option\" }'],\n ['10000000-0000-0000-0000-000000000016', 'domain-multiselect-widget', 'domain-value-list', '{ \"placeholder\": \"Select an option\" }'],\n ['10000000-0000-0000-0000-000000000003', 'switch-widget', 'boolean', '{ \"subtitle\": \"Click to switch\"}'],\n ['10000000-0000-0000-0000-000000000004', 'datepicker-widget', 'date', `{\n \"placeholder\": \"Enter date\",\n \"viewMode\": \"days\",\n \"dateFormat\": \"YYYY-MM-DD\",\n \"minDate\": false,\n \"maxDate\": false\n }`],\n ['10000000-0000-0000-0000-000000000005', 'rich-text-widget', 'string', '{}'],\n ['10000000-0000-0000-0000-000000000006', 'radio-boolean-widget', 'boolean', '{\"trueLabel\": \"Yes\", \"falseLabel\": \"No\"}'],\n ['10000000-0000-0000-0000-000000000007', 'map-widget', 'geojson-feature-collection', `{\n \"basemap\": \"streets\",\n \"geometryTypes\": [{\"text\":\"Point\", \"id\":\"Point\"}, {\"text\":\"Line\", \"id\":\"Line\"}, {\"text\":\"Polygon\", \"id\":\"Polygon\"}],\n \"overlayConfigs\": [],\n \"overlayOpacity\": 0.0,\n \"geocodeProvider\": \"MapzenGeocoder\",\n \"zoom\": 0,\n \"maxZoom\": 20,\n \"minZoom\": 0,\n \"centerX\": 0,\n \"centerY\": 0,\n \"pitch\": 0.0,\n \"bearing\": 0.0,\n \"geocodePlaceholder\": \"Search\",\n \"geocoderVisible\": true,\n \"featureColor\": null,\n \"featureLineWidth\": null,\n \"featurePointSize\": null\n }`],\n ['10000000-0000-0000-0000-000000000008', 'number-widget', 'number', '{ \"placeholder\": \"Enter number\", \"width\": \"100%\", \"min\":\"\", \"max\":\"\"}'],\n ['10000000-0000-0000-0000-000000000009', 'concept-radio-widget', 'concept', '{ \"options\": [] }'],\n ['10000000-0000-0000-0000-000000000013', 'concept-checkbox-widget', 'concept-list', '{ \"options\": [] }'],\n ['10000000-0000-0000-0000-000000000017', 'domain-radio-widget', 'domain-value', '{}'],\n ['10000000-0000-0000-0000-000000000018', 'domain-checkbox-widget', 'domain-value-list', '{}'],\n ['10000000-0000-0000-0000-000000000019', 'file-widget', 'file-list', '{\"acceptedFiles\": \"\", \"maxFilesize\": \"200\"}'],\n];\nconst WIDGETS: {[key: string]: Widget} = Object.fromEntries(_WIDGET_VALUES.map((constructor: [string, string, string, string]): [string, Widget] => [constructor[1], new Widget(...constructor)]));\n\nfunction getDefaultWidgetForNode(node: StaticNode, preferences: {[key: string]: string} = {}) {\n const datatype = node.datatype;\n\n // For example, you can use this to prefer a rich-text field.\n if (datatype in preferences) {\n return WIDGETS[preferences[datatype]];\n }\n\n if (datatype === 'semantic') {\n throw Error(\"Not default widget for a semantic node\");\n } else if (datatype === 'number') {\n return WIDGETS['number-widget'];\n } else if (datatype === 'string') {\n return WIDGETS['text-widget'];\n } else if (datatype === 'concept') {\n return WIDGETS['concept-select-widget'];\n } else if (datatype === 'concept-list') {\n return WIDGETS['concept-multiselect-widget'];\n } else if (datatype === 'domain-value') {\n return WIDGETS['domain-select-widget'];\n } else if (datatype === 'domain-value-list') {\n return WIDGETS['domain-multiselect-widget'];\n } else if (datatype === 'geojson-feature-collection') {\n return WIDGETS['geojson-feature-collection'];\n } else if (datatype === 'boolean') {\n return WIDGETS['switch-widget'];\n } else if (datatype === 'date') {\n return WIDGETS['datepicker-widget'];\n } else {\n throw Error(`No default widget for ${datatype} datatype - perhaps you could supply a manual preference`);\n }\n}\n\nexport { DEFAULT_CARD_COMPONENT, CardComponent, getDefaultWidgetForNode, Widget };\n","import { IGraphManager, IViewModel } from \"../interfaces\";\n\nexport const DEFAULT_LANGUAGE = \"en\";\n\nexport class ViewContext {\n graphManager: IGraphManager | undefined\n}\n\nexport const viewContext = new ViewContext();\n\n// Map for custom datatypes registered by extensions\nexport const CUSTOM_DATATYPES: Map<string, string | IViewModel> = new Map();\n\n// Helper class for multilingual strings\nexport class StringTranslatedLanguage {\n value: string = \"\"\n}\n\n// Helper class for URLs\nexport class Url {\n url: string\n url_label?: string\n\n constructor(url: string, url_label?: string) {\n this.url = url;\n this.url_label = url_label;\n }\n}\n","import { IStringKeyedObject } from \"../interfaces\";\n\nexport class ConceptListCacheEntry implements IStringKeyedObject {\n [key: string]: any;\n datatype: string = 'concept-list';\n _: ConceptValueCacheEntry[];\n meta: {[key: string]: any};\n\n constructor({meta, _}: {meta: IStringKeyedObject | undefined, _: ConceptValueCacheEntry[]}) {\n this._ = _.map(instance => {\n if (instance instanceof ConceptValueCacheEntry) {\n return instance;\n } else if (instance) {\n return new ConceptValueCacheEntry(instance);\n }\n return null;\n }).filter(cvce => cvce !== null);\n this.meta = meta || {};\n }\n}\n\nexport class ConceptValueCacheEntry implements IStringKeyedObject {\n [key: string]: any\n datatype: string = 'concept';\n id: string;\n value: string;\n conceptId: string | null;\n meta: {[key: string]: any};\n\n constructor({meta, id, value, conceptId}: {meta: IStringKeyedObject | undefined, id: string, value: string, conceptId: string | null}) {\n this.id = id;\n this.value = value;\n this.conceptId = conceptId;\n this.meta = meta || {};\n }\n}\n\nexport class ResourceInstanceListCacheEntry implements IStringKeyedObject {\n [key: string]: any;\n datatype: string = 'resource-instance-list';\n _: ResourceInstanceCacheEntry[];\n meta: {[key: string]: any};\n\n constructor(input: {meta?: IStringKeyedObject, _?: ResourceInstanceCacheEntry[]} | {id: string, type: string, graphId: string, title?: string | null, meta?: IStringKeyedObject}) {\n // Handle both list format {meta, _} and single entry format {id, type, graphId, title}\n // This allows wrapping a single resource-instance entry as a list\n let entries: any[];\n if ('_' in input && Array.isArray(input._)) {\n // List format: {meta, _: [...]}\n entries = input._;\n this.meta = input.meta || {};\n } else if ('id' in input) {\n // Single entry format: {id, type, graphId, title} - wrap in array\n entries = [input];\n this.meta = (input as any).meta || {};\n } else {\n // Unknown format - use empty array\n entries = [];\n this.meta = {};\n }\n\n this._ = entries.map(instance => {\n if (instance instanceof ResourceInstanceCacheEntry) {\n return instance;\n }\n return new ResourceInstanceCacheEntry(instance);\n });\n }\n}\n\nexport interface ResourceDescriptors {\n name?: string | null;\n description?: string | null;\n map_popup?: string | null;\n slug?: string | null;\n}\n\nexport class ResourceInstanceCacheEntry implements IStringKeyedObject {\n [key: string]: any\n datatype: string = 'resource-instance';\n id: string;\n type: string;\n graphId: string;\n title: string | null;\n descriptors: ResourceDescriptors | null;\n meta: {[key: string]: any};\n\n constructor({meta, id, type, graphId, title, descriptors}: {meta: IStringKeyedObject | undefined, id: string, type: string, graphId: string, title: string | null, descriptors?: ResourceDescriptors | null}) {\n this.id = id;\n this.type = type;\n this.graphId = graphId;\n this.meta = meta || {};\n this.title = this.meta.title || title;\n this.descriptors = descriptors || null;\n }\n}\n","// ============================================================================\n// JS-side timing for WASM boundary crossings\n// Extracted to separate module to avoid circular imports\n// ============================================================================\n\ninterface TimingStats {\n count: number;\n totalMs: number;\n minMs: number;\n maxMs: number;\n}\n\nconst wasmTimings: Map<string, TimingStats> = new Map();\n\nexport function recordWasmTiming(label: string, ms: number) {\n let stats = wasmTimings.get(label);\n if (!stats) {\n stats = { count: 0, totalMs: 0, minMs: Infinity, maxMs: -Infinity };\n wasmTimings.set(label, stats);\n }\n stats.count++;\n stats.totalMs += ms;\n stats.minMs = Math.min(stats.minMs, ms);\n stats.maxMs = Math.max(stats.maxMs, ms);\n}\n\nexport function printWasmTimings() {\n console.log(\"=== JS-side WASM Timing Summary ===\");\n const entries = [...wasmTimings.entries()].sort((a, b) => b[1].totalMs - a[1].totalMs);\n for (const [label, stats] of entries) {\n const avgMs = stats.count > 0 ? stats.totalMs / stats.count : 0;\n console.log(\n `${label}: count=${stats.count}, total=${stats.totalMs.toFixed(2)}ms, avg=${avgMs.toFixed(2)}ms, min=${stats.minMs.toFixed(2)}ms, max=${stats.maxMs.toFixed(2)}ms`\n );\n }\n}\n\nexport function clearWasmTimings() {\n wasmTimings.clear();\n}\n\n// Get raw wasmTimings Map for integration with tracing infrastructure\nexport function getWasmTimings(): Map<string, TimingStats> {\n return wasmTimings;\n}\n","/**\n * Node configuration management.\n *\n * TypeScript wrappers around the Rust/WASM NodeConfigManager.\n * Config parsing and storage is done in Rust, shared with Python bindings.\n */\n\nimport { INodeConfig } from './interfaces';\nimport { StaticNode, StaticDomainValue, StaticGraph } from './static-types';\nimport { getBackend } from './backend';\nimport {\n WasmNodeConfigManager,\n WasmNodeConfigBoolean,\n WasmNodeConfigConcept,\n WasmNodeConfigDomain,\n WasmNodeConfigReference,\n WasmStaticDomainValue,\n} from '../pkg/alizarin';\n\n// =============================================================================\n// Config Type Adapters\n// =============================================================================\n\nclass StaticNodeConfigBoolean implements INodeConfig {\n private _wasm: WasmNodeConfigBoolean;\n\n constructor(wasmConfig: WasmNodeConfigBoolean) {\n this._wasm = wasmConfig;\n }\n\n get i18n_properties(): string[] {\n return [];\n }\n\n get falseLabel(): {[key: string]: string} {\n return this._wasm.falseLabel as {[key: string]: string};\n }\n\n get trueLabel(): {[key: string]: string} {\n return this._wasm.trueLabel as {[key: string]: string};\n }\n\n getLabel(value: boolean, language: string): string | undefined {\n return this._wasm.getLabel(value, language) ?? undefined;\n }\n}\n\nclass StaticNodeConfigConcept implements INodeConfig {\n private _wasm: WasmNodeConfigConcept;\n\n constructor(wasmConfig: WasmNodeConfigConcept) {\n this._wasm = wasmConfig;\n }\n\n get rdmCollection(): string {\n return this._wasm.rdmCollection;\n }\n}\n\nclass StaticNodeConfigReference implements INodeConfig {\n private _wasm: WasmNodeConfigReference;\n\n constructor(wasmConfig: WasmNodeConfigReference) {\n this._wasm = wasmConfig;\n }\n\n get controlledList(): string {\n return this._wasm.controlledList;\n }\n\n get rdmCollection(): string {\n return this._wasm.rdmCollection;\n }\n\n get multiValue(): boolean {\n return this._wasm.multiValue;\n }\n\n getCollectionId(): string | undefined {\n return this._wasm.getCollectionId() ?? undefined;\n }\n}\n\nclass StaticNodeConfigDomain implements INodeConfig {\n private _wasm: WasmNodeConfigDomain;\n private _optionsCache: StaticDomainValue[] | null = null;\n\n constructor(wasmConfig: WasmNodeConfigDomain) {\n this._wasm = wasmConfig;\n }\n\n get i18n_config(): {[key: string]: string} {\n return {};\n }\n\n get options(): StaticDomainValue[] {\n if (!this._optionsCache) {\n this._optionsCache = this._wasm.options.map((opt: WasmStaticDomainValue) =>\n new StaticDomainValue({\n id: opt.id,\n selected: opt.selected,\n text: opt.text as {[key: string]: string},\n })\n );\n }\n return this._optionsCache;\n }\n\n getSelected(): StaticDomainValue | undefined {\n const wasmSelected = this._wasm.getSelected();\n if (!wasmSelected) return undefined;\n return new StaticDomainValue({\n id: wasmSelected.id,\n selected: wasmSelected.selected,\n text: wasmSelected.text as {[key: string]: string},\n });\n }\n\n valueFromId(id: string): StaticDomainValue | undefined {\n const wasmValue = this._wasm.valueFromId(id);\n if (!wasmValue) return undefined;\n return new StaticDomainValue({\n id: wasmValue.id,\n selected: wasmValue.selected,\n text: wasmValue.text as {[key: string]: string},\n });\n }\n}\n\n// =============================================================================\n// Node Config Manager\n// =============================================================================\n\ntype NodeConfigType = StaticNodeConfigBoolean | StaticNodeConfigConcept |\n StaticNodeConfigDomain | StaticNodeConfigReference;\n\nclass NodeConfigManager {\n // Lazy initialization - manager created on first use (after backend is ready)\n private _backendManager: any = null;\n private _cache = new Map<string, NodeConfigType | null>();\n private _graphsLoaded = new Set<string>();\n\n private getBackendManager(): any {\n if (!this._backendManager) {\n if (getBackend() === 'napi') {\n // Dynamic import to avoid hard dependency on napi module at parse time\n const napi = (globalThis as any).__alizarin_napi;\n if (napi) {\n this._backendManager = new napi.NapiNodeConfigManager();\n } else {\n // Fallback: try WASM\n this._backendManager = new WasmNodeConfigManager();\n }\n } else {\n this._backendManager = new WasmNodeConfigManager();\n }\n }\n return this._backendManager;\n }\n\n /** The backend-native manager (WASM or NAPI). Used by forDisplayJson. */\n get wasmManager(): any {\n return this.getBackendManager();\n }\n\n loadFromGraph(graph: StaticGraph): void {\n const graphId = graph.graphid;\n if (this._graphsLoaded.has(graphId)) return;\n\n const mgr = this.getBackendManager();\n if (typeof mgr.fromGraph === 'function') {\n // WASM path: direct graph loading\n mgr.fromGraph(graph);\n } else if (typeof mgr.buildFromGraphJson === 'function') {\n // NAPI path: needs JSON string\n mgr.buildFromGraphJson(JSON.stringify(graph));\n }\n this._graphsLoaded.add(graphId);\n }\n\n retrieve(node: StaticNode): NodeConfigType | null {\n const { nodeid, datatype } = node;\n\n if (this._cache.has(nodeid)) {\n return this._cache.get(nodeid) ?? null;\n }\n\n const mgr = this.getBackendManager();\n const config = (typeof mgr.hasConfig === 'function' && mgr.hasConfig(nodeid))\n ? this.getConfigFromWasm(nodeid, datatype)\n : null;\n\n this._cache.set(nodeid, config);\n return config;\n }\n\n private getConfigFromWasm(nodeid: string, datatype: string): NodeConfigType | null {\n const wasmManager = this.getBackendManager();\n switch (datatype) {\n case 'boolean': {\n const wasm = wasmManager.getBoolean(nodeid);\n return wasm ? new StaticNodeConfigBoolean(wasm) : null;\n }\n case 'domain-value':\n case 'domain-value-list': {\n const wasm = wasmManager.getDomain(nodeid);\n return wasm ? new StaticNodeConfigDomain(wasm) : null;\n }\n case 'concept':\n case 'concept-list': {\n const wasm = wasmManager.getConcept(nodeid);\n return wasm ? new StaticNodeConfigConcept(wasm) : null;\n }\n case 'reference': {\n const wasm = wasmManager.getReference(nodeid);\n return wasm ? new StaticNodeConfigReference(wasm) : null;\n }\n default:\n return null;\n }\n }\n\n clear(): void {\n this._cache.clear();\n this._graphsLoaded.clear();\n if (this._backendManager && typeof this._backendManager.clear === 'function') {\n this._backendManager.clear();\n }\n }\n\n hasGraph(graphId: string): boolean {\n return this._graphsLoaded.has(graphId);\n }\n}\n\nconst nodeConfigManager = new NodeConfigManager();\n\nexport {\n nodeConfigManager,\n StaticNodeConfigDomain,\n StaticNodeConfigBoolean,\n StaticNodeConfigConcept,\n StaticNodeConfigReference,\n NodeConfigManager,\n};\n","import {\n IStringKeyedObject,\n IInstanceWrapper,\n IModelWrapper,\n IViewModel,\n IPseudo,\n IRIVM,\n GetMeta,\n} from \"../interfaces\";\nimport { StaticTile, StaticNode, StaticResource, StaticResourceReference } from \"../static-types\";\nimport { AttrPromise } from \"../utils\";\nimport { recordWasmTiming } from '../wasmTiming';\nimport { getGlobalWasmRdmCache } from '../_wasm';\nimport { getRdmCache, getBackend } from '../backend';\nimport { nodeConfigManager } from '../nodeConfig';\nimport { staticStore } from '../staticStore';\nimport { viewContext, DEFAULT_LANGUAGE } from \"./types\";\nimport { ResourceInstanceCacheEntry, ResourceDescriptors } from \"./cacheEntries\";\n\nexport class ResourceInstanceViewModel<RIVM extends IRIVM<RIVM>> implements IStringKeyedObject {\n [key: string | symbol]: any;\n _: IViewModel | Promise<IViewModel> | undefined = undefined;\n $: IInstanceWrapper<RIVM> | null;\n __: IModelWrapper<RIVM> | null;\n __parentPseudo: IPseudo | undefined = undefined;\n __cacheEntry: ResourceInstanceCacheEntry | null = null;\n id: string;\n then: undefined;\n [Symbol.toPrimitive]: undefined;\n\n gm: typeof viewContext.graphManager;\n\n toString(): string {\n if (!this.__) {\n return `[Resource:${this.id}]`;\n }\n return `[${this.__.wkrm.modelClassName}:${this.id ?? \"-\"}]`;\n }\n\n async getName(retrieveIfNeeded: boolean=false): Promise<string> {\n return (await this.getDescriptors(retrieveIfNeeded))?.name;\n }\n\n async getSlug(retrieveIfNeeded: boolean=false): Promise<string> {\n return (await this.getDescriptors(retrieveIfNeeded))?.slug;\n }\n\n async getDescription(retrieveIfNeeded: boolean=false): Promise<string> {\n return (await this.getDescriptors(retrieveIfNeeded))?.description;\n }\n\n async getMapPopup(retrieveIfNeeded: boolean=false): Promise<string> {\n return (await this.getDescriptors(retrieveIfNeeded))?.map_popup;\n }\n\n async getDescriptors(retrieveIfNeeded: boolean=false): Promise<ResourceDescriptors | undefined> {\n if (this.__cacheEntry?.descriptors) {\n return this.__cacheEntry.descriptors;\n }\n if (this.$) {\n return this.$.getDescriptors();\n }\n if (retrieveIfNeeded) {\n await this.retrieve();\n if (this.$) {\n return this.$.getDescriptors();\n }\n }\n return undefined;\n }\n\n async __has(key: string): Promise<boolean | undefined> {\n if (!this.$) {\n return undefined;\n }\n return (await this.$.getRootViewModel() || new Map()).__has(key);\n }\n\n async __asTileData(): Promise<IStringKeyedObject> {\n return {\n resourceId: this.id\n };\n }\n\n async __forJsonCache(getMeta: GetMeta): Promise<ResourceInstanceCacheEntry> {\n let wrapper: IModelWrapper<RIVM>;\n if (!this.__) {\n if (this.__cacheEntry) {\n return this.__cacheEntry;\n } else {\n [, wrapper] = await this.retrieve();\n }\n } else {\n wrapper = this.__;\n }\n this.__cacheEntry = new ResourceInstanceCacheEntry({\n meta: getMeta ? await getMeta(this) : undefined,\n id: this.id,\n type: wrapper.wkrm.modelClassName,\n graphId: wrapper.wkrm.graphId,\n title: null,\n });\n return this.__cacheEntry;\n }\n\n async forJson(cascade: boolean=false) {\n const forJsonStart = performance.now();\n let rootJson = null;\n if (cascade) {\n let t0 = performance.now();\n if (!this.$) {\n await this.retrieve();\n if (!this.$) {\n throw new Error(\"Could not retrieve resource\");\n }\n }\n recordWasmTiming(\"forJson: retrieve check\", performance.now() - t0);\n\n t0 = performance.now();\n await this.$.populate(false);\n recordWasmTiming(\"forJson: populate\", performance.now() - t0);\n\n t0 = performance.now();\n rootJson = this.$.wasmWrapper.toJson();\n recordWasmTiming(\"forJson: toJson\", performance.now() - t0);\n }\n recordWasmTiming(\"forJson total (viewModels)\", performance.now() - forJsonStart);\n\n if (!cascade && this.__cacheEntry) {\n return {\n type: this.__cacheEntry.type,\n graphId: this.__cacheEntry.graphId,\n id: this.__cacheEntry.id,\n title: this.__cacheEntry.title || undefined,\n descriptors: this.__cacheEntry.descriptors || undefined,\n meta: this.__cacheEntry.meta || undefined,\n root: rootJson\n };\n } else if (this.__) {\n return {\n type: this.__.wkrm.modelClassName,\n graphId: this.__.wkrm.graphId,\n id: this.id,\n title: undefined,\n descriptors: undefined,\n meta: undefined,\n root: rootJson\n };\n } else {\n return {\n type: \"(unknown)\",\n graphId: \"\",\n id: this.id,\n title: undefined,\n descriptors: undefined,\n meta: undefined,\n root: rootJson\n };\n }\n }\n\n /**\n * Get JSON representation with display-friendly values.\n *\n * Unlike forJson() which returns tile data format (language maps, StaticReference objects),\n * this returns human-readable strings using registered display serializers.\n *\n * Use this for ETL/export/indexing where you want display strings instead of structured data.\n *\n * @param cascade - If true, ensures the resource is fully populated before serializing\n * @param language - Language code for display strings (defaults to current language)\n * @returns JSON with display-friendly values\n */\n async forDisplayJson(cascade: boolean=false, language?: string) {\n const forJsonStart = performance.now();\n let rootJson = null;\n if (cascade) {\n let t0 = performance.now();\n if (!this.$) {\n await this.retrieve();\n if (!this.$) {\n throw new Error(\"Could not retrieve resource\");\n }\n }\n recordWasmTiming(\"forDisplayJson: retrieve check\", performance.now() - t0);\n\n t0 = performance.now();\n await this.$.populate(false);\n recordWasmTiming(\"forDisplayJson: populate\", performance.now() - t0);\n\n t0 = performance.now();\n const lang = language || DEFAULT_LANGUAGE;\n const rdmCache = getBackend() === 'napi' ? getRdmCache() : getGlobalWasmRdmCache();\n const ncm = nodeConfigManager.wasmManager;\n rootJson = this.$.wasmWrapper.toDisplayJson(rdmCache, ncm, lang, staticStore.registry);\n recordWasmTiming(\"forDisplayJson: toDisplayJson\", performance.now() - t0);\n }\n recordWasmTiming(\"forDisplayJson total (viewModels)\", performance.now() - forJsonStart);\n\n if (!cascade && this.__cacheEntry) {\n return {\n type: this.__cacheEntry.type,\n graphId: this.__cacheEntry.graphId,\n id: this.__cacheEntry.id,\n title: this.__cacheEntry.title || undefined,\n descriptors: this.__cacheEntry.descriptors || undefined,\n meta: this.__cacheEntry.meta || undefined,\n root: rootJson\n };\n } else if (this.__) {\n return {\n type: this.__.wkrm.modelClassName,\n graphId: this.__.wkrm.graphId,\n id: this.id,\n title: undefined,\n descriptors: undefined,\n meta: undefined,\n root: rootJson\n };\n } else {\n return {\n type: \"(unknown)\",\n graphId: \"\",\n id: this.id,\n title: undefined,\n descriptors: undefined,\n meta: undefined,\n root: rootJson\n };\n }\n }\n\n async retrieve(): Promise<[IInstanceWrapper<RIVM>, IModelWrapper<RIVM>]> {\n let iw: IInstanceWrapper<RIVM>;\n let mw: IModelWrapper<RIVM>;\n if (viewContext.graphManager) {\n const replacement = await viewContext.graphManager.getResource(this.id, true);\n\n // @ts-expect-error We cannot guarantee this resource is the right type...\n iw = replacement.$;\n // @ts-expect-error We cannot guarantee this resource is the right type...\n mw = replacement.__;\n } else {\n throw new Error(\"Cannot traverse resource relationships without a GraphManager\");\n }\n this.$ = iw;\n this.__ = mw;\n return [iw, mw];\n }\n\n constructor(\n id: string,\n modelWrapper: IModelWrapper<RIVM> | null,\n instanceWrapperFactory: ((\n rivm: RIVM,\n ) => IInstanceWrapper<RIVM>) | null,\n cacheEntry: object | null,\n ) {\n this.id = id;\n // @ts-expect-error I believe some deep type magic would be required to\n // convince TS that `this` is a valid RIVM.\n this.$ = instanceWrapperFactory ? instanceWrapperFactory(this) : null;\n this.__ = modelWrapper;\n if (cacheEntry instanceof ResourceInstanceCacheEntry) {\n this.__cacheEntry = cacheEntry;\n }\n\n return new Proxy(this, {\n // @ts-expect-error Returning a promise for set\n set: async (object: ResourceInstanceViewModel<RIVM>, key, value): Promise<boolean> => {\n const k: string = typeof key === 'symbol' ? key.description || '' : key;\n if (key in object) {\n object[key] = value;\n } else if (k in object || k.startsWith('__')) {\n object[k] = value;\n } else {\n if (!object.$) {\n await this.retrieve();\n if (!object.$) {\n throw new Error(\"Could not retrieve resource\");\n }\n }\n object.$.setOrmAttribute(k, value);\n }\n return true;\n },\n get: (object: ResourceInstanceViewModel<RIVM>, key) => {\n const k: string = typeof key === 'symbol' ? key.description || '' : key;\n if (key in object) {\n return object[key];\n } else if (k in object || k.startsWith('__')) {\n return object[k];\n }\n return new AttrPromise(async (resolve) => {\n if (!object.$) {\n await this.retrieve();\n if (!object.$) {\n throw new Error(\"Could not retrieve resource\");\n }\n }\n const p = object.$.getOrmAttribute(k);\n return p.then((v) => {\n return resolve(v);\n });\n });\n },\n });\n }\n\n static async __create(\n tile: StaticTile,\n node: StaticNode,\n value: any,\n cacheEntry: ResourceInstanceCacheEntry | null\n ): Promise<ResourceInstanceViewModel<any> | null> {\n const nodeid = node.nodeid;\n let val: string | null = value;\n if (tile) {\n if (!tile.data.has(nodeid)) {\n tile.data.set(nodeid, null);\n }\n if (value !== null) {\n if (!value && !(value instanceof StaticResource) && !(value instanceof StaticResourceReference)) {\n val = null;\n } else if (value instanceof Promise) {\n return value.then((value) => {\n return ResourceInstanceViewModel.__create(tile, node, value, cacheEntry);\n });\n } else if (typeof value == \"string\") {\n if (\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.exec(\n value,\n )\n ) {\n val = value;\n } else {\n throw new Error(\n `Set resource instances using id, not strings in node ${node.alias}: ${value}`,\n );\n }\n } else if (value instanceof Object && value.resourceId) {\n val = value.resourceId;\n } else if (value instanceof Map && value.get(\"resourceId\")) {\n val = value.get(\"resourceId\");\n } else if (value instanceof Array && value.length < 2 ) {\n if (value.length == 1) {\n return ResourceInstanceViewModel.__create(tile, node, value[0], cacheEntry);\n }\n } else {\n throw new Error(\"Could not set resource instance from this data\");\n }\n\n tile.data.set(nodeid, val ? [{resourceId: val}] : null);\n }\n }\n\n if (!tile || !val) {\n return null;\n }\n const str = new ResourceInstanceViewModel(val, null, null, cacheEntry);\n return str;\n }\n}\n","import { IViewModel, IPseudo, GetMeta } from \"../interfaces\";\nimport { StaticTile, StaticNode } from \"../static-types\";\nimport { ResourceInstanceListCacheEntry } from \"./cacheEntries\";\nimport { ResourceInstanceViewModel } from \"./ResourceInstanceViewModel\";\n\nexport class ResourceInstanceListViewModel extends Array implements IViewModel {\n _: IViewModel | Promise<IViewModel> | undefined = undefined;\n __parentPseudo: IPseudo | undefined;\n\n describeField = () => (this.__parentPseudo ? this.__parentPseudo.describeField() : null)\n describeFieldGroup = () => (this.__parentPseudo ? this.__parentPseudo.describeFieldGroup() : null)\n _value: Promise<(ResourceInstanceViewModel<any> | null)[]> | null = null;\n\n async forJson() {\n const value = await this._value;\n return value ? value.map((v) => (v ? v.forJson() : null)) : null;\n }\n\n async __forJsonCache(getMeta: GetMeta): Promise<ResourceInstanceListCacheEntry> {\n return new ResourceInstanceListCacheEntry({\n meta: getMeta ? await getMeta(this) : getMeta,\n _: await Promise.all([...this.values()].map(async (rivmPromise: Promise<ResourceInstanceViewModel<any>>) => {\n const rivm = await rivmPromise;\n return await rivm.__forJsonCache(getMeta)\n }))\n });\n }\n\n static async __create(\n tile: StaticTile,\n node: StaticNode,\n value: any,\n cacheEntry: ResourceInstanceListCacheEntry | null = null\n ): Promise<ResourceInstanceListViewModel | null> {\n const nodeid = node.nodeid;\n let val: (ResourceInstanceViewModel<any> | null | Promise<ResourceInstanceViewModel<any> | null>)[];\n if (tile) {\n if (!tile.data.has(nodeid)) {\n tile.data.set(nodeid, null);\n }\n if (value !== null) {\n tile.data.set(nodeid, []);\n if (!Array.isArray(value)) {\n throw new Error(\n `Cannot set an (entire) resource list value on node ${nodeid} except via an array: ${JSON.stringify(value)}`,\n );\n }\n val = value.map((v, i) => {\n if (v instanceof ResourceInstanceViewModel) {\n return v;\n }\n return ResourceInstanceViewModel.__create(tile, node, v, cacheEntry && cacheEntry._[i] ? cacheEntry._[i] : null);\n });\n Promise.all(\n val.map(async (c) => {\n const v = await c;\n return v ? (await v).id : null;\n }),\n ).then((ids) => {\n tile.data.set(nodeid, ids.map(id => {\n return {\n resourceId: id\n };\n }));\n return ids;\n });\n value = val;\n }\n } else {\n value = [];\n }\n\n if (!tile || !value) {\n return null;\n }\n const str = new ResourceInstanceListViewModel(...value);\n return str;\n }\n\n async __asTileData() {\n return this._value ? await this._value : null;\n }\n}\n","import { IViewModel } from \"../interfaces\";\nimport { PseudoValue } from \"../pseudos\";\nimport { StaticTile, StaticNode } from \"../static-types\";\nimport { DEFAULT_LANGUAGE, StringTranslatedLanguage } from \"./types\";\n\nexport class StringViewModel extends String implements IViewModel {\n _: IViewModel | Promise<IViewModel> | undefined = undefined;\n __parentPseudo: PseudoValue<any> | undefined;\n\n describeField = () => (this.__parentPseudo ? this.__parentPseudo.describeField() : null)\n describeFieldGroup = () => (this.__parentPseudo ? this.__parentPseudo.describeFieldGroup() : null)\n\n _value: Map<string, StringTranslatedLanguage>;\n\n __forJsonCache(): null {\n return null;\n }\n\n constructor(value: Map<string, StringTranslatedLanguage>, language: string | null = null) {\n const lang = value.get(language || DEFAULT_LANGUAGE);\n let displayValue: string;\n if (lang) {\n if (typeof lang == \"string\") {\n displayValue = lang;\n } else {\n displayValue = lang.value;\n }\n } else {\n displayValue = \"\";\n }\n super(displayValue);\n this._value = value;\n }\n\n forJson(): string {\n return this.toString();\n }\n\n lang(language: string) {\n const elt = this._value.get(language);\n if (elt) {\n if (elt instanceof Object) {\n return elt.value;\n }\n return elt;\n } else {\n return undefined;\n }\n }\n\n static __create(\n tile: StaticTile,\n node: StaticNode,\n value: any,\n ): StringViewModel | Promise<StringViewModel | null> | null {\n const nodeid = node.nodeid;\n if (value instanceof Promise) {\n return value.then((value) => StringViewModel.__create(tile, node, value));\n }\n if (tile) {\n if (!tile.data.has(nodeid)) {\n tile.data.set(nodeid, {});\n }\n if (value !== null) {\n if (value instanceof Object) {\n const entries =\n value instanceof Map ? value.entries() : Object.entries(value);\n for (const [k, v] of [...entries]) {\n const val = tile.data.get(nodeid);\n if (val instanceof Map) {\n val.set(k, v);\n } else if (val instanceof Object) {\n // @ts-expect-error Need better typing of data to make this settable.\n val[k] = v;\n } else if (val !== null) {\n throw new Error(\"Malformed string in tile data\");\n }\n }\n } else {\n tile.data.set(nodeid, {\n [DEFAULT_LANGUAGE]: value,\n });\n }\n }\n }\n\n const val = tile.data.get(nodeid);\n if (!tile || val === null || val === undefined) {\n return null;\n }\n let mapVal;\n if (val instanceof Map) {\n mapVal = val;\n } else {\n mapVal = new Map(Object.entries(val));\n }\n const str = new StringViewModel(mapVal);\n return str;\n }\n\n __asTileData() {\n return this._value;\n }\n}\n","import { IViewModel } from \"../interfaces\";\nimport { PseudoValue } from \"../pseudos\";\nimport { StaticTile, StaticNode } from \"../static-types\";\n\nexport class DateViewModel extends Date implements IViewModel {\n _: IViewModel | Promise<IViewModel> | undefined = undefined;\n __parentPseudo: PseudoValue<any> | undefined;\n __original: string;\n then: undefined;\n\n describeField = () => (this.__parentPseudo ? this.__parentPseudo.describeField() : null)\n describeFieldGroup = () => (this.__parentPseudo ? this.__parentPseudo.describeFieldGroup() : null)\n\n __forJsonCache(): null {\n return null;\n }\n\n constructor(val: string) {\n super(val);\n this.__original = val;\n }\n\n static __create(\n tile: StaticTile,\n node: StaticNode,\n value: any,\n ): DateViewModel | Promise<DateViewModel | null> | null {\n const nodeid = node.nodeid;\n if (value instanceof Promise) {\n return value.then((value) =>\n DateViewModel.__create(tile, node, value),\n );\n }\n if (tile) {\n if (!tile.data.has(nodeid)) {\n tile.data.set(nodeid, null);\n }\n if (value !== null) {\n tile.data.set(nodeid, value);\n }\n }\n\n let val: string | {[key: string]: string} | any = tile.data.get(nodeid);\n if (val && typeof val == \"object\" && val['en'] !== undefined) {\n val = val.en;\n }\n if (!tile || val === null || val === undefined || val === '') {\n return null;\n }\n if (typeof val != \"string\") {\n throw new Error(\"Date should be a string\");\n }\n const str = new DateViewModel(val);\n return str;\n }\n\n async forJson() {\n try {\n return this.toISOString();\n } catch (e) {\n console.warn(e);\n return this.__original;\n }\n }\n\n __asTileData() {\n return this.toISOString();\n }\n}\n","import { IStringKeyedObject, IViewModel } from \"../interfaces\";\nimport { PseudoValue } from \"../pseudos\";\nimport { StaticTile, StaticNode } from \"../static-types\";\n\nexport class GeoJSONViewModel implements IViewModel, IStringKeyedObject {\n [key: string | symbol]: any;\n _: IViewModel | Promise<IViewModel> | undefined = undefined;\n __parentPseudo: PseudoValue<any> | undefined;\n then: undefined;\n [Symbol.toPrimitive]: undefined;\n\n describeField = () => (this.__parentPseudo ? this.__parentPseudo.describeField() : null)\n describeFieldGroup = () => (this.__parentPseudo ? this.__parentPseudo.describeFieldGroup() : null)\n\n _value: { [key: string]: any };\n\n __forJsonCache(): null {\n return null;\n }\n\n constructor(jsonData: { [key: string]: any }) {\n this._value = jsonData;\n return new Proxy(this, {\n get: (object: GeoJSONViewModel, key) => {\n const k: string = typeof key === 'symbol' ? key.description || '' : key;\n if (key in object) {\n return object[key];\n } else if (k in object) {\n return object[k];\n }\n return this._value[k];\n },\n set: (object: GeoJSONViewModel, key, value) => {\n const k: string = typeof key === 'symbol' ? key.description || '' : key;\n if (key in object) {\n object[key] = value;\n } else if (k in object) {\n object[k] = value;\n } else {\n this._value[k] = value;\n }\n return true;\n },\n });\n }\n\n static __create(\n tile: StaticTile,\n node: StaticNode,\n value: any,\n ): GeoJSONViewModel | Promise<GeoJSONViewModel | null> | null {\n const nodeid = node.nodeid;\n if (value instanceof Promise) {\n return value.then((value) =>\n GeoJSONViewModel.__create(tile, node, value),\n );\n }\n if (tile) {\n if (!tile.data.has(nodeid)) {\n tile.data.set(nodeid, null);\n }\n if (value !== null) {\n tile.data.set(nodeid, value);\n }\n }\n\n const val = tile.data.get(nodeid);\n if (!tile || val === null || val === undefined) {\n return null;\n }\n if (!(val instanceof Object)) {\n throw new Error(\"GeoJSON should be a JSON object\");\n }\n const str = new GeoJSONViewModel(val);\n return str;\n }\n\n async forJson() {\n return await this._value;\n }\n\n __asTileData() {\n return this._value;\n }\n}\n","import { IViewModel } from \"../interfaces\";\nimport { PseudoValue } from \"../pseudos\";\nimport { StaticTile, StaticNode } from \"../static-types\";\n\nexport class EDTFViewModel extends String implements IViewModel {\n _: IViewModel | Promise<IViewModel> | undefined = undefined;\n __parentPseudo: PseudoValue<any> | undefined;\n\n describeField = () => (this.__parentPseudo ? this.__parentPseudo.describeField() : null)\n describeFieldGroup = () => (this.__parentPseudo ? this.__parentPseudo.describeFieldGroup() : null)\n\n __forJsonCache(): null {\n return null;\n }\n\n forJson(): string {\n return this.toString();\n }\n\n static __create(\n tile: StaticTile,\n node: StaticNode,\n value: any,\n ): EDTFViewModel | Promise<EDTFViewModel | null> | null {\n const nodeid = node.nodeid;\n if (value instanceof Promise) {\n return value.then((value) => EDTFViewModel.__create(tile, node, value));\n }\n if (tile) {\n if (value !== null) {\n tile.data.set(nodeid, value);\n }\n }\n\n const val = tile.data.get(nodeid);\n if (!tile || val === null || val === undefined) {\n return null;\n }\n const string = new EDTFViewModel(val);\n return string;\n }\n\n __asTileData() {\n return `${this}`;\n }\n}\n","import { IViewModel } from \"../interfaces\";\nimport { PseudoValue } from \"../pseudos\";\nimport { StaticTile, StaticNode } from \"../static-types\";\n\nexport class NonLocalizedStringViewModel extends String implements IViewModel {\n _: IViewModel | Promise<IViewModel> | undefined = undefined;\n __parentPseudo: PseudoValue<any> | undefined;\n\n describeField = () => (this.__parentPseudo ? this.__parentPseudo.describeField() : null)\n describeFieldGroup = () => (this.__parentPseudo ? this.__parentPseudo.describeFieldGroup() : null)\n\n __forJsonCache(): null {\n return null;\n }\n\n forJson(): string {\n return this.toString();\n }\n\n static __create(\n tile: StaticTile,\n node: StaticNode,\n value: any,\n ): NonLocalizedStringViewModel | Promise<NonLocalizedStringViewModel | null> | null {\n const nodeid = node.nodeid;\n if (value instanceof Promise) {\n return value.then((value) => NonLocalizedStringViewModel.__create(tile, node, value));\n }\n if (tile) {\n if (value !== null) {\n tile.data.set(nodeid, value);\n }\n }\n\n const val = tile.data.get(nodeid);\n if (!tile || val === null || val === undefined) {\n return null;\n }\n const string = new NonLocalizedStringViewModel(val);\n return string;\n }\n\n __asTileData() {\n return `${this}`;\n }\n}\n","import { IViewModel } from \"../interfaces\";\nimport { PseudoValue } from \"../pseudos\";\nimport { StaticTile, StaticNode } from \"../static-types\";\n\nexport class NumberViewModel extends Number implements IViewModel {\n _: IViewModel | Promise<IViewModel> | undefined = undefined;\n __parentPseudo: PseudoValue<any> | undefined;\n\n describeField = () => (this.__parentPseudo ? this.__parentPseudo.describeField() : null)\n describeFieldGroup = () => (this.__parentPseudo ? this.__parentPseudo.describeFieldGroup() : null)\n\n toString(): string {\n return `${this.valueOf()}`;\n }\n\n __forJsonCache(): null {\n return null;\n }\n\n forJson(): number {\n return this.valueOf();\n }\n\n static __create(\n tile: StaticTile,\n node: StaticNode,\n value: any,\n ): NumberViewModel | Promise<NumberViewModel | null> | null {\n const nodeid = node.nodeid;\n if (value instanceof Promise) {\n return value.then((value) => NumberViewModel.__create(tile, node, value));\n }\n if (tile) {\n if (value !== null) {\n tile.data.set(nodeid, value);\n }\n }\n\n const val = tile.data.get(nodeid);\n if (!tile || val === null || val === undefined) {\n return null;\n }\n const num = new NumberViewModel(val);\n return num;\n }\n\n __asTileData() {\n return this.valueOf();\n }\n}\n","import { IViewModel } from \"../interfaces\";\nimport { PseudoValue } from \"../pseudos\";\nimport { StaticTile, StaticNode } from \"../static-types\";\nimport { StaticNodeConfigBoolean, nodeConfigManager } from '../nodeConfig';\nimport { DEFAULT_LANGUAGE } from \"./types\";\n\nexport class BooleanViewModel extends Boolean implements IViewModel {\n _: IViewModel | Promise<IViewModel> | undefined = undefined;\n __parentPseudo: PseudoValue<any> | undefined;\n __config: StaticNodeConfigBoolean;\n\n describeField = () => (this.__parentPseudo ? this.__parentPseudo.describeField() : null)\n describeFieldGroup = () => (this.__parentPseudo ? this.__parentPseudo.describeFieldGroup() : null)\n\n constructor(value: boolean, config: StaticNodeConfigBoolean) {\n super(value);\n this.__config = config;\n }\n\n toString(lang?: string | undefined): string {\n const labelLang = lang || DEFAULT_LANGUAGE;\n return this.valueOf() ? (\n this.__config && this.__config.trueLabel ? this.__config.trueLabel[labelLang] || 'true' : 'true'\n ) : (\n this.__config && this.__config.trueLabel ? this.__config.falseLabel[labelLang] || 'false' : 'false'\n );\n }\n\n __forJsonCache(): null {\n return null;\n }\n\n forJson(): boolean {\n return this.valueOf();\n }\n\n static __create(\n tile: StaticTile,\n node: StaticNode,\n value: any,\n ): BooleanViewModel | Promise<BooleanViewModel | null> | null {\n const nodeid = node.nodeid;\n if (value instanceof Promise) {\n return value.then((value) => BooleanViewModel.__create(tile, node, value));\n }\n if (tile) {\n if (value !== null) {\n tile.data.set(nodeid, value);\n }\n }\n\n const val = tile.data.get(nodeid);\n if (!tile || val === null || val === undefined) {\n return null;\n }\n const config = nodeConfigManager.retrieve(node);\n if (!config || !(config instanceof StaticNodeConfigBoolean)) {\n throw new Error(`Cannot form boolean value for ${node.nodeid} without config`);\n }\n if (typeof val !== 'boolean' && val !== 0 && val !== 1) {\n throw new Error(`Refusing to use truthiness for value ${val} in boolean`);\n }\n const bool = new BooleanViewModel(val ? true : false, config);\n return bool;\n }\n\n __asTileData() {\n return this.valueOf();\n }\n}\n","import { IViewModel } from \"../interfaces\";\nimport { PseudoValue } from \"../pseudos\";\nimport { StaticTile, StaticNode } from \"../static-types\";\nimport { Url } from \"./types\";\n\nexport class UrlViewModel extends String implements IViewModel {\n _: IViewModel | Promise<IViewModel> | undefined = undefined;\n __parentPseudo: PseudoValue<any> | undefined;\n\n describeField = () => (this.__parentPseudo ? this.__parentPseudo.describeField() : null)\n describeFieldGroup = () => (this.__parentPseudo ? this.__parentPseudo.describeFieldGroup() : null)\n\n _value: Url;\n\n __forJsonCache(): null {\n return null;\n }\n\n constructor(value: Url) {\n const displayValue = value.url_label || value.url;\n super(displayValue);\n this._value = value;\n }\n\n forJson(): {[key: string]: string} {\n return {\n url: this._value.url,\n url_label: this._value.url_label || \"\",\n };\n }\n\n label() {\n return this._value.url_label || this._value.url;\n }\n\n href() {\n return this._value.url;\n }\n\n static __create(\n tile: StaticTile,\n node: StaticNode,\n value: any,\n ): UrlViewModel | Promise<UrlViewModel | null> | null {\n const nodeid = node.nodeid;\n if (value instanceof Promise) {\n return value.then((value) => UrlViewModel.__create(tile, node, value));\n }\n if (tile) {\n if (!tile.data.has(nodeid)) {\n tile.data.set(nodeid, {});\n }\n if (value !== null) {\n if (value instanceof UrlViewModel) {\n value = value._value;\n } else if (value instanceof Object) {\n if (!value.url) {\n throw new Error(`A URL must be null or have a 'url' field: ${value}`);\n }\n }\n tile.data.set(nodeid, {\n url: value.url,\n url_label: value.url_label,\n });\n }\n }\n\n const val = tile.data.get(nodeid);\n if (!tile || val === null || val === undefined) {\n return null;\n }\n let url: Url;\n if (typeof val !== 'object') {\n url = new Url(`${val}`);\n } else if (val instanceof Map) {\n url = new Url(val.get('url'), val.get('url_label'));\n } else if ('url' in val && typeof val === 'object' && typeof val.url === 'string' && 'url_label' in val && (val.url_label === undefined || typeof val.url_label === 'string')) {\n url = new Url(val.url, val.url_label);\n } else {\n throw new Error(`Unrecognised URL type: ${val}`);\n }\n const str = new UrlViewModel(url);\n return str;\n }\n\n __asTileData() {\n return this.forJson();\n }\n}\n","import { IViewModel } from \"../interfaces\";\nimport { PseudoValue } from \"../pseudos\";\nimport { StaticTile, StaticNode, StaticDomainValue } from \"../static-types\";\nimport { StaticNodeConfigDomain, nodeConfigManager } from '../nodeConfig';\n\nexport class DomainValueViewModel extends String implements IViewModel {\n _: IViewModel | Promise<IViewModel> | undefined = undefined;\n __parentPseudo: PseudoValue<any> | undefined;\n\n describeField = () => (this.__parentPseudo ? this.__parentPseudo.describeField() : null)\n describeFieldGroup = () => (this.__parentPseudo ? this.__parentPseudo.describeFieldGroup() : null)\n\n _value: StaticDomainValue | Promise<StaticDomainValue>;\n\n constructor(value: StaticDomainValue) {\n super(value.toString());\n this._value = value;\n }\n\n async forJson(): Promise<StaticDomainValue> {\n return this._value;\n }\n\n __forJsonCache(): null {\n return null;\n }\n\n getValue(): StaticDomainValue | Promise<StaticDomainValue> {\n return this._value;\n }\n\n async lang(lang: string): Promise<string | undefined> {\n return (await this._value).lang(lang);\n }\n\n static async __create(\n tile: StaticTile,\n node: StaticNode,\n value: any,\n ): Promise<DomainValueViewModel | null> {\n const nodeid = node.nodeid;\n let val: StaticDomainValue | null = value;\n if (tile) {\n if (!tile.data.has(nodeid)) {\n tile.data.set(nodeid, null);\n }\n if (value !== null) {\n if (!value && !(value instanceof StaticDomainValue)) {\n val = null;\n } else if (value instanceof Promise) {\n return value.then((value) => {\n return DomainValueViewModel.__create(tile, node, value);\n });\n } else if (typeof value == \"string\") {\n if (\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i.exec(\n value,\n )\n ) {\n const config = nodeConfigManager.retrieve(node);\n if (!config || !(config instanceof StaticNodeConfigDomain)) {\n const graphLoaded = nodeConfigManager.hasGraph(node.graph_id);\n const configType = config ? 'non-domain config' : 'no config';\n throw new Error(\n `Cannot form domain value for ${node.nodeid} (${node.alias || 'no alias'}): ` +\n `${configType}. Graph ${node.graph_id} loaded: ${graphLoaded}. ` +\n `Ensure nodeConfigManager.loadFromGraph(graph) is called before creating ViewModels.`\n );\n }\n val = config.valueFromId(value) || null;\n } else {\n throw new Error(\n \"Set domain values using values from domain lists, not strings\",\n );\n }\n } else {\n throw new Error(\"Could not set domain value from this data\");\n }\n\n if (!(val instanceof Promise)) {\n tile.data.set(nodeid, val ? val.id : null);\n }\n }\n }\n\n if (!tile || !val) {\n return null;\n }\n const str = new DomainValueViewModel(val);\n return str;\n }\n\n async __asTileData() {\n const value = await this._value;\n return value ? value.id : null;\n }\n}\n","import { IViewModel } from \"../interfaces\";\nimport { PseudoValue } from \"../pseudos\";\nimport { StaticTile, StaticNode } from \"../static-types\";\nimport { DomainValueViewModel } from \"./DomainValueViewModel\";\n\nexport class DomainValueListViewModel extends Array implements IViewModel {\n _: IViewModel | Promise<IViewModel> | undefined = undefined;\n __parentPseudo: PseudoValue<any> | undefined;\n\n describeField = () => (this.__parentPseudo ? this.__parentPseudo.describeField() : null)\n describeFieldGroup = () => (this.__parentPseudo ? this.__parentPseudo.describeFieldGroup() : null)\n _value: Promise<(DomainValueViewModel | null)[]> | null = null;\n\n async forJson() {\n const value = await this._value;\n return value ? value.map((v) => (v ? v.forJson() : null)) : null;\n }\n\n __forJsonCache(): null {\n return null;\n }\n\n static async __create(\n tile: StaticTile,\n node: StaticNode,\n value: any,\n ): Promise<DomainValueListViewModel> {\n const nodeid = node.nodeid;\n let val: (DomainValueViewModel | Promise<DomainValueViewModel | null> | null)[];\n if (tile) {\n if (!tile.data.has(nodeid)) {\n tile.data.set(nodeid, null);\n }\n if (value !== null) {\n tile.data.set(nodeid, []);\n if (!Array.isArray(value)) {\n throw new Error(\n `Cannot set an (entire) domain list value on node ${nodeid} except via an array: ${JSON.stringify(value)}`,\n );\n }\n val = value.map((c) => {\n if (c instanceof DomainValueViewModel) {\n return c;\n }\n return DomainValueViewModel.__create(tile, node, c);\n });\n Promise.all(val).then(async (vals) => {\n const ids = Promise.all(vals.map(async val => val === null ? val : (await val._value).id));\n ids.then(ids => {\n tile.data.set(nodeid, ids);\n });\n });\n } else {\n value = [];\n }\n } else {\n value = [];\n }\n\n const str = new DomainValueListViewModel(...value);\n return str;\n }\n\n async __asTileData() {\n const value = await this._value;\n return value ?? null;\n }\n}\n","import { IViewModel, IPseudo, GetMeta } from \"../interfaces\";\nimport { StaticTile, StaticNode, StaticValue, StaticConcept } from \"../static-types\";\nimport { RDM } from \"../rdm\";\nimport { ConceptValueCacheEntry } from \"./cacheEntries\";\n\nexport class ConceptValueViewModel extends String implements IViewModel {\n _: IViewModel | Promise<IViewModel> | undefined = undefined;\n __parentPseudo: IPseudo | undefined;\n\n describeField = () => (this.__parentPseudo ? this.__parentPseudo.describeField() : null)\n describeFieldGroup = () => (this.__parentPseudo ? this.__parentPseudo.describeFieldGroup() : null)\n\n _value: StaticValue | Promise<StaticValue>;\n _collectionId: string | null = null;\n\n constructor(value: StaticValue, collectionId?: string) {\n super(value.value);\n this._value = value;\n this._collectionId = collectionId ?? null;\n }\n\n /**\n * Get the parent concept value, if this concept has a parent in the hierarchy.\n * @returns A new ConceptValueViewModel for the parent, or null if no parent\n * @throws Error if the collection doesn't support hierarchy lookups\n */\n async parent(): Promise<ConceptValueViewModel | null> {\n const value = await this._value;\n const conceptId = value.__conceptId;\n if (!conceptId || !this._collectionId) {\n return null;\n }\n\n const collection = await RDM.retrieveCollection(this._collectionId);\n if (!collection.getParentId) {\n throw new Error(\n `Collection ${this._collectionId} does not support hierarchy lookups. ` +\n 'Ensure WASM is initialized and the collection is a StaticCollection.'\n );\n }\n\n const parentId = collection.getParentId(conceptId);\n if (!parentId) {\n return null; // Top-level concept\n }\n\n const parentConcept = collection.__allConcepts[parentId];\n if (!parentConcept?.getPrefLabel) {\n return null;\n }\n\n const parentValue = parentConcept.getPrefLabel();\n return new ConceptValueViewModel(parentValue, this._collectionId);\n }\n\n /**\n * Get all ancestor concept values, from immediate parent to root.\n * @returns Array of ConceptValueViewModels for ancestors\n */\n async ancestors(): Promise<ConceptValueViewModel[]> {\n const result: ConceptValueViewModel[] = [];\n let current: ConceptValueViewModel | null = await this.parent();\n\n while (current !== null) {\n result.push(current);\n current = await current.parent();\n }\n\n return result;\n }\n\n async forJson(): Promise<StaticValue> {\n return this._value;\n }\n\n async __forJsonCache(getMeta: GetMeta): Promise<ConceptValueCacheEntry> {\n const value = await this._value;\n return new ConceptValueCacheEntry({\n meta: getMeta ? await getMeta(this) : undefined,\n id: value.id,\n value: value.value,\n conceptId: value.__conceptId ?? null\n });\n }\n\n getValue(): StaticValue | Promise<StaticValue> {\n return this._value;\n }\n\n static async __create(\n tile: StaticTile,\n node: StaticNode,\n value: any,\n cacheEntry: ConceptValueCacheEntry | null\n ): Promise<ConceptValueViewModel | null> {\n const nodeid = node.nodeid;\n const collectionId = node.config?.rdmCollection;\n if (!collectionId) {\n throw new Error(`Node ${node.alias} (${node.nodeid}) missing rdmCollection in config`);\n }\n let val: StaticValue | null = value;\n if (tile) {\n if (!tile.data.has(nodeid)) {\n tile.data.set(nodeid, null);\n }\n if (value !== null) {\n if (value instanceof StaticConcept) {\n if (value.getPrefLabel) {\n val = value.getPrefLabel();\n } else {\n throw new Error(\"Recognizing value as StaticConcept, but no getPrefLabel member\");\n }\n }\n if (!value) {\n val = null;\n } else if (value instanceof StaticValue) {\n // No change needed.\n } else if (value instanceof Promise) {\n return value.then((value) => {\n return ConceptValueViewModel.__create(tile, node, value, cacheEntry);\n });\n } else if (typeof value == \"string\") {\n if (\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.exec(\n value,\n )\n ) {\n if (cacheEntry) {\n val = new StaticValue({\n id: cacheEntry.id,\n value: cacheEntry.value,\n __concept: null,\n __conceptId: cacheEntry.conceptId,\n }, cacheEntry.conceptId);\n return new ConceptValueViewModel(val, collectionId);\n } else {\n const collection = RDM.retrieveCollection(collectionId);\n return collection.then((collection) => {\n if (!collection.getConceptValue) {\n throw new Error(`Collection ${collection.id} must be a StaticCollection here, not a key/value object`);\n }\n const val = collection.getConceptValue(value);\n\n if (!val) {\n console.error(\"Could not find concept for value\", value, \"for\", node.alias, \"in collection\", collectionId);\n }\n\n tile.data.set(nodeid, val ? val.id : null);\n\n if (!tile || !val) {\n return null;\n }\n const str = new ConceptValueViewModel(val, collectionId);\n\n return str;\n });\n }\n } else {\n throw new Error(\n `Set concepts using values from collections, not strings: ${value}`,\n );\n }\n } else {\n throw new Error(\"Could not set concept from this data\");\n }\n\n if (!(val instanceof Promise)) {\n if (!val) {\n console.error(\"Could not find concept for value\", value, \"for\", node.alias, \"in collection\", collectionId);\n }\n\n tile.data.set(nodeid, val ? val.id : null);\n }\n }\n }\n\n if (!tile || !val) {\n return null;\n }\n const str = new ConceptValueViewModel(val, collectionId);\n return str;\n }\n\n async __asTileData() {\n const value = await this._value;\n return value ? value.id : null;\n }\n}\n","import { IViewModel, IPseudo, GetMeta } from \"../interfaces\";\nimport { StaticTile, StaticNode } from \"../static-types\";\nimport { ConceptListCacheEntry } from \"./cacheEntries\";\nimport { ConceptValueViewModel } from \"./ConceptValueViewModel\";\n\nexport class ConceptListViewModel extends Array implements IViewModel {\n _: IViewModel | Promise<IViewModel> | undefined = undefined;\n __parentPseudo: IPseudo | undefined;\n\n describeField = () => (this.__parentPseudo ? this.__parentPseudo.describeField() : null)\n describeFieldGroup = () => (this.__parentPseudo ? this.__parentPseudo.describeFieldGroup() : null)\n _value: Promise<(ConceptValueViewModel | null)[]> | null = null;\n\n async forJson() {\n const value = await this._value;\n return value ? value.map((v) => (v ? v.forJson() : null)) : null;\n }\n\n async __forJsonCache(getMeta: GetMeta): Promise<ConceptListCacheEntry> {\n return new ConceptListCacheEntry({\n meta: getMeta ? await getMeta(this) : getMeta,\n _: (await Promise.all([...this.values()].map(async (rivmPromise: Promise<ConceptValueViewModel>) => {\n const rivm = await rivmPromise;\n if (rivm) {\n return await rivm.__forJsonCache(getMeta)\n }\n }))).filter(val => val !== undefined)\n });\n }\n static async __create(\n tile: StaticTile,\n node: StaticNode,\n value: any,\n cacheEntry: ConceptListCacheEntry | null = null\n ): Promise<ConceptListViewModel> {\n const nodeid = node.nodeid;\n let val: (ConceptValueViewModel | Promise<ConceptValueViewModel | null> | null)[] = [];\n if (!tile.data.has(nodeid)) {\n tile.data.set(nodeid, null);\n }\n if (value !== null) {\n tile.data.set(nodeid, []);\n if (!Array.isArray(value)) {\n throw new Error(\n `Cannot set an (entire) concept list value on node ${nodeid} except via an array: ${JSON.stringify(value)}`,\n );\n }\n val = value.map((c, i) => {\n if (c instanceof ConceptValueViewModel) {\n return c;\n }\n return ConceptValueViewModel.__create(tile, node, c, cacheEntry && cacheEntry._[i] ? cacheEntry._[i] : null);\n });\n Promise.all(val).then((vals) => {\n Promise.all(\n vals.map(async (c) => {\n const v = await c;\n return v ? (await v.getValue()).id : null;\n })\n ).then((ids) => {\n tile.data.set(nodeid, ids);\n });\n });\n value = val;\n } else {\n value = [];\n }\n\n const str = new ConceptListViewModel(...value);\n return str;\n }\n\n async __asTileData() {\n return this._value ? await this._value : null;\n }\n}\n","import { IStringKeyedObject, IViewModel } from \"../interfaces\";\nimport { StaticEdge } from \"../static-types\";\nimport { AttrPromise } from \"../utils\";\nimport { PseudoNode } from \"../pseudos\";\n\nexport class NodeViewModel implements IStringKeyedObject, IViewModel {\n [key: string | symbol]: any;\n then: undefined;\n [Symbol.toPrimitive]: undefined;\n\n __parentPseudo: PseudoNode;\n __parentWkrm: any | null;\n\n __forJsonCache(): null {\n return null;\n }\n\n constructor(\n parentPseudo: PseudoNode,\n parentWkrm: any | null,\n ) {\n this.__parentPseudo = parentPseudo;\n this.__parentWkrm = parentWkrm;\n return new Proxy(this, {\n set: (object, key, value) => {\n const k: string = typeof key === 'symbol' ? key.description || '' : key;\n if (key in object) {\n object[key] = value;\n } else if (k.startsWith(\"__\") || k in object) {\n object[k] = value;\n } else {\n throw new Error(\"Cannot set values on a node\");\n }\n return true;\n },\n get: (object, key) => {\n const k: string = typeof key === 'symbol' ? key.description || '' : key;\n\n if (key.toString() === \"Symbol.toStringTag\") {\n return () => this.constructor.name;\n }\n\n if (key in object) {\n return object[key];\n } else if (k.startsWith(\"__\") || k in object) {\n return object[k];\n } else if (k == \"_\") {\n return this.__parentPseudo.node;\n } else if (k.endsWith(\"$edge\")) {\n return this.__getEdgeTo(k.substring(0, k.length - 5));\n }\n if (k == \"length\") {\n return object.__parentPseudo.size;\n }\n return new AttrPromise((resolve) => {\n object.__get(k).then(resolve);\n });\n },\n });\n }\n\n async toString(): Promise<string> {\n if (!this.__parentPseudo) {\n return \"[NodeViewModel]\";\n }\n const alias = this.__parentPseudo.alias;\n return alias || \"[unnamed]\";\n }\n\n async __getEdgeTo(key: string) {\n const childNode = this.__parentPseudo.childNodes.get(key);\n\n if (!childNode) {\n throw new Error(`Child node key ${key} missing`);\n }\n\n const domainId = this.__parentPseudo.nodeid;\n const rangeId = childNode.nodeid;\n const edges = this.__parentWkrm.graph.edges.filter(\n (edge: StaticEdge) => edge.domainnode_id === domainId && edge.rangenode_id === rangeId\n );\n if (edges.length !== 1) {\n throw new Error(`Number of edges from ${domainId}->${rangeId} != 1`);\n }\n return edges[0];\n }\n\n async __get(key: string) {\n const pseudo = this.__parentWkrm.createPseudoNodeChild(key, this.__parentPseudo);\n return NodeViewModel.__create(pseudo, this.__parentWkrm);\n }\n\n static async __create(\n pseudo: PseudoNode,\n parent: any | null,\n ): Promise<NodeViewModel> {\n const node = new NodeViewModel(pseudo, parent);\n return node;\n }\n}\n","import {\n IStringKeyedObject,\n IViewModel,\n IPseudo,\n IRIVM,\n} from \"./interfaces.ts\";\nimport { AttrPromise } from \"./utils\";\nimport { wrapRustPseudo } from \"./pseudos\";\nimport type { PseudoValue } from \"./pseudos\";\nimport {\n StaticTile,\n StaticNode,\n} from \"./static-types\";\n\n// Aggregated timing stats for profiling\nconst timingStats = {\n wasmCalls: 0,\n wasmTotalMs: 0,\n wrapCalls: 0,\n wrapTotalMs: 0,\n};\n\nexport function resetTimingStats() {\n timingStats.wasmCalls = 0;\n timingStats.wasmTotalMs = 0;\n timingStats.wrapCalls = 0;\n timingStats.wrapTotalMs = 0;\n}\n\nexport function getTimingStats() {\n return {\n ...timingStats,\n wasmAvgMs: timingStats.wasmCalls > 0 ? timingStats.wasmTotalMs / timingStats.wasmCalls : 0,\n wrapAvgMs: timingStats.wrapCalls > 0 ? timingStats.wrapTotalMs / timingStats.wrapCalls : 0,\n };\n}\n\nexport function logTimingStats(label: string = '') {\n const stats = getTimingStats();\n console.log(`[timing-stats] ${label} wasm: ${stats.wasmCalls} calls, ${stats.wasmTotalMs.toFixed(1)}ms total (${stats.wasmAvgMs.toFixed(2)}ms avg) | wrap: ${stats.wrapCalls} calls, ${stats.wrapTotalMs.toFixed(1)}ms total`);\n}\n\nclass SemanticViewModel implements IStringKeyedObject, IViewModel {\n [key: string | symbol]: any;\n _: IViewModel | Promise<IViewModel> | undefined = undefined;\n then: undefined;\n [Symbol.toPrimitive]: undefined;\n\n get [Symbol.toStringTag]() { return 'SemanticViewModel'; }\n\n __parentPseudo: PseudoValue<any> | undefined;\n __childValues: Map<string, any>;\n __parentWkri: IRIVM<any> | null;\n __tile: StaticTile | null;\n __node: StaticNode;\n\n __forJsonCache(): null {\n return null;\n }\n\n constructor(\n parentWkri: IRIVM<any> | null,\n tile: StaticTile | null,\n node: StaticNode,\n ) {\n this.__childValues = new Map<string, any>();\n this.__parentWkri = parentWkri;\n this.__tile = tile;\n this.__node = node;\n return new Proxy(this, {\n set: (object, key, value) => {\n const k: string = typeof key === 'symbol' ? key.description || '' : key;\n // Allow setting internal properties (starting with __)\n if (k.startsWith(\"__\") || key in object) {\n object[k] = value;\n return true;\n }\n throw Error(`Setting semantic values via proxy (key: ${String(key)}) is not supported`);\n },\n get: (object, key) => {\n const k: string = typeof key === 'symbol' ? key.description || '' : key;\n\n if (key in object) {\n return object[key];\n } else if (k.startsWith(\"__\") || k in object) {\n return object[k];\n }\n if (k == \"length\") {\n throw Error(\"TODO\");\n }\n return new AttrPromise((resolve) => {\n const p = object.__get(k);\n p.then(resolve);\n });\n },\n });\n }\n\n async toString(): Promise<string> {\n const entries = [...this.__childValues.entries()].map(([k, v]) => `${k}: ${v}`);\n return `[[${entries.join(\",\")}]]`;\n }\n\n async toObject() {\n if (!this.__parentWkri || !this.__parentWkri.$) {\n return {};\n }\n\n const wasmWrapper = this.__parentWkri.$.wasmWrapper;\n const model = this.__parentWkri.$.model;\n\n // Step 1: Check which nodegroups need tiles loaded (sync call)\n const t0 = performance.now();\n const missingNodegroups = wasmWrapper.getMissingNodegroupsForChildren(this.__node.nodeid);\n timingStats.wasmCalls++;\n timingStats.wasmTotalMs += performance.now() - t0;\n\n // Step 2: Load any missing tiles (async - the only async part)\n if (missingNodegroups.length > 0) {\n const tileLoader = wasmWrapper.getTileLoader();\n if (tileLoader) {\n // Load tiles for each missing nodegroup\n for (const nodegroupId of missingNodegroups) {\n const t1 = performance.now();\n const tiles = await tileLoader(nodegroupId);\n timingStats.wasmTotalMs += performance.now() - t1;\n if (tiles && tiles.length > 0) {\n const t2 = performance.now();\n wasmWrapper.appendTiles(tiles);\n timingStats.wasmCalls++;\n timingStats.wasmTotalMs += performance.now() - t2;\n }\n }\n }\n }\n\n // Step 3: Get all child values in a single sync batch call (no async boundary crossings)\n const t3 = performance.now();\n const childValuesMap: Map<string, any> = wasmWrapper.getAllSemanticChildValues(\n this.__tile?.tileid || null,\n this.__node.nodeid,\n this.__node.nodegroup_id || null,\n );\n timingStats.wasmCalls++;\n timingStats.wasmTotalMs += performance.now() - t3;\n\n // Step 4: Wrap all values and build result object\n // Use Promise.all to batch all getValue() calls - reduces promise callback overhead\n const t4 = performance.now();\n const wrappedChildren: Array<[string, any]> = [];\n for (const [alias, rustValue] of childValuesMap.entries()) {\n if (rustValue === null || rustValue === undefined) {\n continue;\n }\n const child = wrapRustPseudo(rustValue, this.__parentWkri, model);\n timingStats.wrapCalls++;\n if (child === null || child === undefined) {\n continue;\n }\n child.parentNode = this.__parentPseudo || null;\n // Cache the wrapped child for future use\n this.__childValues.set(alias, child);\n wrappedChildren.push([alias, child]);\n }\n\n // Batch all getValue() calls with Promise.all instead of sequential awaits\n const valuePromises = wrappedChildren.map(([alias, child]) =>\n child.getValue().then((value: any) => [alias, value] as [string, any])\n );\n const resolvedValues = await Promise.all(valuePromises);\n\n const result: Record<string, any> = {};\n for (const [alias, value] of resolvedValues) {\n result[alias] = value;\n }\n timingStats.wrapTotalMs += performance.now() - t4;\n\n return result;\n }\n\n async __get(key: string) {\n const childValue = await this.__getChildValue(key);\n if (!childValue) {\n return null;\n }\n return childValue.getValue();\n }\n\n __has(key: string) {\n const childAliases = this.__parentWkri.$.model.getChildNodeAliases(this.__node.nodeid);\n return childAliases.includes(key);\n }\n\n async __getChildValue(key: string): Promise<IPseudo> | null | undefined {\n const parent = this.__parentWkri;\n const tile = this.__tile;\n const node = this.__node;\n const wasmWrapper = parent.$.wasmWrapper;\n const childAliases = parent.$.model.getChildNodeAliases(node.nodeid);\n\n if (!childAliases.includes(key)) {\n throw Error(\n `Semantic node does not have this key: ${key} (${childAliases.join(', ')})`,\n );\n }\n\n // Check cache first\n if (this.__childValues.has(key)) {\n return this.__childValues.get(key);\n }\n\n // Try sync path first (avoids async boundary crossing overhead)\n let rustValue: any;\n const t0 = performance.now();\n try {\n // Sync call - returns immediately if tiles loaded, throws if not\n rustValue = wasmWrapper.getSemanticChildValue(\n tile?.tileid || null,\n node.nodeid,\n node.nodegroup_id || null,\n key\n );\n timingStats.wasmCalls++;\n timingStats.wasmTotalMs += performance.now() - t0;\n } catch (e: any) {\n const errorStr = e?.message || String(e);\n if (errorStr.startsWith('TILES_NOT_LOADED:')) {\n // Tiles not loaded - load them and retry\n const nodegroupId = errorStr.split(':')[1].split(' ')[0]; // Extract nodegroup ID\n const tileLoader = wasmWrapper.getTileLoader();\n if (tileLoader) {\n const t1 = performance.now();\n const tiles = await tileLoader(nodegroupId);\n timingStats.wasmTotalMs += performance.now() - t1;\n if (tiles && tiles.length > 0) {\n const t2 = performance.now();\n wasmWrapper.appendTiles(tiles);\n timingStats.wasmCalls++;\n timingStats.wasmTotalMs += performance.now() - t2;\n }\n }\n // Retry sync call after loading tiles\n const t3 = performance.now();\n rustValue = wasmWrapper.getSemanticChildValue(\n tile?.tileid || null,\n node.nodeid,\n node.nodegroup_id || null,\n key\n );\n timingStats.wasmCalls++;\n timingStats.wasmTotalMs += performance.now() - t3;\n } else {\n throw e; // Re-throw non-tile-loading errors\n }\n }\n\n // Wrap the Rust value - Rust always returns something (possibly empty PseudoList)\n const t4 = performance.now();\n const child = wrapRustPseudo(rustValue, parent, parent.$.model);\n timingStats.wrapCalls++;\n timingStats.wrapTotalMs += performance.now() - t4;\n\n if (child === null || child === undefined) {\n return child;\n }\n\n // Set parent node\n child.parentNode = this.__parentPseudo || null;\n\n // Cache the child\n this.__childValues.set(key, child);\n\n return child;\n }\n\n static async __create(\n tile: StaticTile,\n node: StaticNode,\n _value: any,\n parent: IRIVM<any> | null,\n ): Promise<SemanticViewModel> {\n // Note: value parameter is ignored - semantic nodes don't have direct values,\n // their children are loaded lazily via __getChildValue\n return new SemanticViewModel(parent, tile, node);\n }\n\n async __asTileData(): Promise<[null, any[]]> {\n // Semantic nodes don't have direct tile values - only their children do.\n // Collect relationships from all cached child values.\n const relationships: any[] = [];\n for (const [_, child] of this.__childValues.entries()) {\n if (child && typeof child.getTile === 'function') {\n const [, childRelationships] = await child.getTile();\n relationships.push(...childRelationships);\n }\n }\n return [null, relationships];\n }\n}\n\nexport { SemanticViewModel };\n","import { IStringKeyedObject, IViewModel, IRIVM } from \"../interfaces\";\nimport { PseudoValue } from \"../pseudos\";\nimport { SemanticViewModel } from \"../semantic\";\nimport { StaticTile, StaticNode } from \"../static-types\";\nimport { CUSTOM_DATATYPES } from \"./types\";\nimport {\n ConceptListCacheEntry,\n ConceptValueCacheEntry,\n ResourceInstanceCacheEntry,\n ResourceInstanceListCacheEntry,\n} from \"./cacheEntries\";\nimport { ResourceInstanceViewModel } from \"./ResourceInstanceViewModel\";\nimport { ResourceInstanceListViewModel } from \"./ResourceInstanceListViewModel\";\nimport { StringViewModel } from \"./StringViewModel\";\nimport { DateViewModel } from \"./DateViewModel\";\nimport { GeoJSONViewModel } from \"./GeoJSONViewModel\";\nimport { EDTFViewModel } from \"./EDTFViewModel\";\nimport { NonLocalizedStringViewModel } from \"./NonLocalizedStringViewModel\";\nimport { NumberViewModel } from \"./NumberViewModel\";\nimport { BooleanViewModel } from \"./BooleanViewModel\";\nimport { UrlViewModel } from \"./UrlViewModel\";\nimport { DomainValueViewModel } from \"./DomainValueViewModel\";\nimport { DomainValueListViewModel } from \"./DomainValueListViewModel\";\nimport { ConceptValueViewModel } from \"./ConceptValueViewModel\";\nimport { ConceptListViewModel } from \"./ConceptListViewModel\";\n\nexport async function getViewModel<RIVM extends IRIVM<RIVM>>(\n parentPseudo: PseudoValue<any>,\n tile: StaticTile,\n node: StaticNode,\n data: any,\n parent: IRIVM<RIVM> | null,\n isInner: boolean = false\n): Promise<IViewModel | null> {\n let vm;\n const cacheEntries: {[tileId: string]: {[nodeId: string]: IStringKeyedObject}} | undefined = parentPseudo.parent && parentPseudo.parent.$ ? await parentPseudo.parent.$.getValueCache(false, undefined) : undefined;\n let cacheEntry: IStringKeyedObject | null = null;\n if (cacheEntries) {\n cacheEntry = (tile.tileid ? (cacheEntries[tile.tileid] ?? {}) : {})[node.nodeid]\n };\n const datatype = isInner ? \"semantic\" : CUSTOM_DATATYPES.get(node.datatype) ?? node.datatype;\n\n let conceptCacheEntry: ConceptListCacheEntry | null;\n let conceptValueCacheEntry: ConceptValueCacheEntry | null;\n let resourceInstanceCacheEntry: ResourceInstanceCacheEntry | null;\n let resourceInstanceListCacheEntry: ResourceInstanceListCacheEntry | null;\n\n if (!(typeof datatype == \"string\")) {\n // @ts-expect-error Cannot make a static member part of the interface\n vm = await datatype.__create(tile, node, data, cacheEntry);\n } else {\n switch (datatype) {\n case \"semantic\":\n vm = await SemanticViewModel.__create(\n tile,\n node,\n data,\n parent,\n );\n break;\n case \"domain-value\":\n vm = await DomainValueViewModel.__create(tile, node, data);\n break;\n case \"domain-value-list\":\n vm = await DomainValueListViewModel.__create(tile, node, data);\n break;\n case \"concept\":\n if (cacheEntry && typeof cacheEntry === \"object\" && !(cacheEntry instanceof ConceptValueCacheEntry)) {\n // @ts-expect-error We do not know the cache entry is structured correctly, and any such checks are in the constructor.\n conceptValueCacheEntry = new ConceptValueCacheEntry(cacheEntry);\n } else {\n conceptValueCacheEntry = cacheEntry;\n }\n vm = await ConceptValueViewModel.__create(tile, node, data, conceptValueCacheEntry);\n break;\n case \"resource-instance\":\n if (cacheEntry && typeof cacheEntry === \"object\" && !(cacheEntry instanceof ResourceInstanceCacheEntry)) {\n // @ts-expect-error We do not know the cache entry is structured correctly, and any such checks are in the constructor.\n resourceInstanceCacheEntry = new ResourceInstanceCacheEntry(cacheEntry);\n } else {\n resourceInstanceCacheEntry = cacheEntry;\n }\n vm = await ResourceInstanceViewModel.__create(tile, node, data, resourceInstanceCacheEntry);\n break;\n case \"resource-instance-list\":\n if (cacheEntry && typeof cacheEntry === \"object\" && !(cacheEntry instanceof ResourceInstanceListCacheEntry)) {\n // @ts-expect-error We do not know the cache entry is structured correctly, and any such checks are in the constructor.\n resourceInstanceListCacheEntry = new ResourceInstanceListCacheEntry(cacheEntry);\n } else {\n resourceInstanceListCacheEntry = cacheEntry;\n }\n vm = await ResourceInstanceListViewModel.__create(tile, node, data, resourceInstanceListCacheEntry);\n break;\n case \"concept-list\":\n if (cacheEntry && typeof cacheEntry === \"object\" && !(cacheEntry instanceof ConceptListCacheEntry)) {\n // @ts-expect-error We do not know the cache entry is structured correctly, and any such checks are in the constructor.\n conceptCacheEntry = new ConceptListCacheEntry(cacheEntry);\n } else {\n conceptCacheEntry = cacheEntry;\n }\n vm = await ConceptListViewModel.__create(tile, node, data, conceptCacheEntry);\n break;\n case \"date\":\n vm = await DateViewModel.__create(tile, node, data);\n break;\n case \"geojson-feature-collection\":\n vm = await GeoJSONViewModel.__create(tile, node, data);\n break;\n case \"boolean\":\n vm = await BooleanViewModel.__create(tile, node, data);\n break;\n case \"string\":\n vm = await StringViewModel.__create(tile, node, data);\n break\n case \"number\":\n vm = await NumberViewModel.__create(tile, node, data);\n break\n case \"edtf\":\n vm = await EDTFViewModel.__create(tile, node, data);\n break;\n case \"url\":\n vm = await UrlViewModel.__create(tile, node, data);\n break;\n case \"non-localized-string\":\n vm = await NonLocalizedStringViewModel.__create(tile, node, data);\n break;\n default:\n console.warn(\"Missing type for tile\", tile.tileid, \"on node\", node.alias, \"with type\", node.datatype);\n vm = await NonLocalizedStringViewModel.__create(tile, node, data);\n }\n }\n\n if (vm === null) {\n return null;\n }\n\n vm.__parentPseudo = parentPseudo;\n if (vm instanceof Array) {\n for (const vme of vm) {\n if (vme instanceof Promise) {\n vme.then(vmep => { if (vmep !== null) vmep.__parentPseudo = parentPseudo; });\n } else {\n vme.__parentPseudo = parentPseudo;\n }\n }\n }\n\n return vm;\n}\n","import { StaticTile, StaticNode } from \"./static-types\";\nimport { ISemantic, IViewModel, IPseudo, IRIVM } from \"./interfaces\";\nimport { getViewModel } from \"./viewModels\";\nimport { AttrPromise } from \"./utils\";\nimport { PseudoNode, WasmPseudoValue, WasmPseudoList } from '../pkg/alizarin';\n\nclass PseudoUnavailable implements IPseudo {\n parentValue: PseudoValue<any> | null = null;\n tile: null = null;\n node: StaticNode;\n isOuter: boolean = false;\n\n constructor(node: StaticNode) {\n this.node = node;\n }\n\n async forJson(): Promise<{[key: string]: any}[] | null> {\n return null;\n }\n\n describeField() {\n return \"Unavailable field\";\n }\n\n describeFieldGroup() {\n return \"Unavailable field\";\n }\n\n public getValue(): AttrPromise<null> {\n return new AttrPromise(resolve => resolve(null));\n }\n\n getLength() {\n return 0;\n }\n\n getChildren(_: boolean = false) {\n return [];\n }\n\n isIterable(): boolean {\n return false\n }\n}\n\n/**\n * PseudoValue - Thin JS wrapper around WasmPseudoValue from Rust\n *\n * Most state and logic now lives in Rust's RustPseudoValue/WasmPseudoValue.\n * This wrapper provides:\n * 1. JS-specific getViewModel integration\n * 2. Promise-based value loading with AttrPromise\n * 3. Inner/outer pattern coordination\n */\nclass PseudoValue<VM extends IViewModel> implements IPseudo {\n // The Rust backing - all state lives here\n private _wasm: WasmPseudoValue;\n\n // JS-specific: parent IRIVM reference (needed for getViewModel)\n parent: IRIVM<any> | null;\n\n // JS-specific: parent PseudoValue for traversal\n _parentValue: PseudoValue<any> | null = null;\n\n // JS-specific: cached inner wrapper (lazily created)\n private _inner: PseudoValue<any> | null = null;\n\n // JS-specific: cached loaded value (AttrPromise wrapping VM)\n private _cachedValue: AttrPromise<VM> | null = null;\n\n // JS-cached snapshot of commonly-used properties (avoids repeated WASM boundary crossings)\n private _snapshot: {\n datatype: string;\n nodeId: string;\n name: string;\n alias?: string;\n nodegroupId?: string;\n sortorder?: number;\n isOuter: boolean;\n isInner: boolean;\n isCollector: boolean;\n accessed: boolean;\n independent: boolean;\n hasTile: boolean;\n tileData?: any;\n tileId?: string;\n valueLoaded?: boolean;\n } | null = null;\n\n // Get snapshot (cached after first access)\n private getSnapshot() {\n if (!this._snapshot) {\n this._snapshot = this._wasm.toSnapshot();\n }\n return this._snapshot;\n }\n\n // Proxy getters - use cached snapshot where possible\n get datatype(): string {\n return this.getSnapshot().datatype;\n }\n\n get isInner(): boolean {\n return this.getSnapshot().isInner;\n }\n\n get isOuter(): boolean {\n return this.getSnapshot().isOuter;\n }\n\n get tile(): StaticTile | null {\n return this._wasm.tile;\n }\n\n set tile(t: StaticTile | null) {\n this._wasm.tile = t;\n // Invalidate snapshot when tile changes\n this._snapshot = null;\n }\n\n get value(): any {\n return this._wasm.value;\n }\n\n get valueLoaded(): boolean | undefined {\n const v = this.getSnapshot().valueLoaded;\n if (v === undefined) return undefined;\n return v;\n }\n\n get accessed(): boolean {\n return this.getSnapshot().accessed;\n }\n\n get independent(): boolean {\n return this.getSnapshot().independent;\n }\n\n get originalTile(): StaticTile | null {\n // Original tile is same as tile at construction - Rust tracks this\n return this._wasm.tile;\n }\n\n // Node property accessors (proxy to wasm which has PseudoNode-compatible API)\n get node(): WasmPseudoValue {\n // WasmPseudoValue now has all PseudoNode getters, so it can act as node\n return this._wasm;\n }\n\n get nodeid(): string {\n return this.getSnapshot().nodeId;\n }\n\n // Inner/outer pattern\n get inner(): PseudoValue<any> | null {\n if (this.getSnapshot().isOuter && !this._inner) {\n const wasmInner = this._wasm.inner;\n if (wasmInner) {\n this._inner = PseudoValue.fromWasm(wasmInner, this.parent!);\n this._inner._parentValue = this;\n }\n }\n return this._inner;\n }\n\n get parentValue(): PseudoValue<any> | null {\n return this._parentValue;\n }\n\n set parentValue(newParentValue: PseudoValue<any> | null) {\n this._parentValue = newParentValue;\n }\n\n // Convenience methods\n isIterable(): boolean {\n return this._wasm.isIterable();\n }\n\n describeField(): string {\n let fieldName = this._wasm.name;\n if (this.parent && this.parent.__) {\n fieldName = `${this.parent.__.wkrm.modelName} - ${fieldName}`;\n }\n return fieldName;\n }\n\n describeFieldGroup(): string {\n let fieldName = this._wasm.name;\n const nodegroupId = this._wasm.nodegroupId;\n if (this.parent && nodegroupId && this.parent.$) {\n const nodegroupName = this.parent.$.model.getNodegroupName(nodegroupId);\n if (nodegroupName && this.parent.__) {\n fieldName = `${this.parent.__.wkrm.modelName} - ${nodegroupName}`;\n }\n }\n return fieldName;\n }\n\n /**\n * Create PseudoValue from WasmPseudoValue (preferred constructor)\n */\n static fromWasm<VM extends IViewModel>(\n wasm: WasmPseudoValue,\n parent: IRIVM<any>,\n ): PseudoValue<VM> {\n const pv = new PseudoValue<VM>(wasm, parent);\n return pv;\n }\n\n /**\n * Private constructor - use static factories\n */\n private constructor(\n wasm: WasmPseudoValue,\n parent: IRIVM<any>,\n ) {\n if (!parent) {\n throw Error(\"Must have a parent or parent class for a pseudo-node\");\n }\n this._wasm = wasm;\n this.parent = parent;\n this._wasm.parent = parent; // Store in Rust too for callbacks\n }\n\n // Legacy constructor support - create via model wrapper\n static create<VM extends IViewModel>(\n nodeOrAlias: StaticNode | string,\n tile: StaticTile | null,\n value: any,\n parent: IRIVM<any>,\n ): PseudoValue<VM> {\n if (!parent || !parent.__) {\n throw new Error('Must have a parent or parent class for a pseudo-node');\n }\n // Use model wrapper to create WasmPseudoValue\n const alias = typeof nodeOrAlias === 'string' ? nodeOrAlias : nodeOrAlias.alias;\n const wasm = parent.__.createPseudoValue(alias, tile, parent);\n return PseudoValue.fromWasm(wasm, parent);\n }\n\n getParentTileId(): string | null {\n const tile = this._wasm.tile;\n return tile ? tile.parenttile_id : null;\n }\n\n async getTile(): Promise<[StaticTile | null, any[]]> {\n await this.updateValue();\n\n let relationships: Array<any> = [];\n\n if (this.inner) {\n [this.tile, relationships] = await this.inner.getTile();\n }\n\n let tileValue;\n if (this._cachedValue !== null) {\n const value = await this._cachedValue;\n if (value !== null) {\n const [newTileValue, ownRelationships] = await (value as any).__asTileData();\n tileValue = newTileValue;\n relationships = [...relationships, ...ownRelationships];\n } else {\n tileValue = null;\n }\n } else {\n tileValue = null;\n }\n\n const tile = this._wasm.tile;\n if (!tile) {\n throw Error(\"No tile available\");\n }\n tile.data = tile.data || new Map();\n const nodeid = this._wasm.nodeId;\n if (tileValue === null) {\n if (tile.data.has(nodeid)) {\n tile.data.delete(nodeid);\n }\n } else {\n tile.data.set(nodeid, tileValue);\n }\n const returnTile = this.independent ? tile : null;\n\n return [returnTile, relationships];\n }\n\n clear(): void {\n this._wasm.clear();\n this._cachedValue = null;\n const tile = this._wasm.tile;\n if (tile && tile.data && tile.data.has(this._wasm.nodeId)) {\n tile.data.delete(this._wasm.nodeId);\n }\n }\n\n updateValue(newTile?: StaticTile | null): AttrPromise<VM> {\n if (newTile) {\n this._wasm.tile = newTile;\n }\n\n // If already cached, return it\n if (this._cachedValue !== null) {\n return this._cachedValue;\n }\n\n // Handle case where tile is null but has inner - get tile first, then load\n if (!this._wasm.tile && this.inner) {\n this._cachedValue = new AttrPromise(async (resolve) => {\n const [innerTile] = await this.inner!.getTile();\n this._wasm.tile = innerTile;\n // Call the real loading logic directly, bypassing the cache wrapper\n const result = await this._updateValueReal();\n resolve(result);\n }) as AttrPromise<VM>;\n return this._cachedValue;\n }\n\n // Normal path - do the real work and cache it\n this._cachedValue = this._updateValueReal();\n return this._cachedValue;\n }\n\n private _updateValueReal(): AttrPromise<VM> {\n // Get snapshot once - avoids multiple WASM boundary crossings\n const snapshot = this.getSnapshot();\n\n // Create tile if needed\n if (!this._wasm.tile) {\n const nodegroupId = snapshot.nodegroupId || \"\";\n const sortorder = snapshot.sortorder;\n this._wasm.tile = new StaticTile({\n nodegroup_id: nodegroupId,\n tileid: null,\n data: new Map<string, any>(),\n sortorder: sortorder,\n resourceinstance_id: \"\",\n parenttile_id: null,\n provisionaledits: null,\n ensureId: () => \"\"\n });\n }\n\n // Get data - check tile first, then tileData from snapshot\n let data: any;\n const currentTile = this._wasm.tile;\n const nodeid = snapshot.nodeId;\n\n if (\n currentTile &&\n currentTile.data !== null &&\n currentTile.data.has(nodeid) &&\n snapshot.datatype !== 'semantic'\n ) {\n data = currentTile.data.get(nodeid);\n } else {\n // Use null if tileData is undefined (snapshot only includes tileData when present)\n // ViewModels expect null for \"no data\", not undefined\n data = snapshot.tileData ?? null;\n }\n\n // Handle outer/inner data splitting\n if (this.isOuter && typeof data === 'object' && this.inner && data) {\n let outerData = undefined;\n if (\"_\" in data && !data.constructor) {\n outerData = data[\"_\"];\n delete data[\"_\"];\n this.inner.getValue().then((v: ISemantic | null) => v && v.update(data));\n data = outerData;\n } else if (data instanceof Map && data.has(\"_\")) {\n outerData = data.get(\"_\");\n data.delete(\"_\");\n this.inner.getValue().then((v: ISemantic | null) => v && v.update(data));\n data = outerData;\n }\n }\n\n // Call getViewModel\n const vmPromise = getViewModel(\n this,\n currentTile!,\n this._wasm.node, // Use node object from wasm\n data,\n this.parent,\n this.isInner\n );\n\n const resolveAttr = (vm: IViewModel | null): VM | null => {\n if (vm !== null && vm instanceof Object) {\n vm.__parentPseudo = this;\n if (this.isOuter && this.inner) {\n (vm as any)._ = this.inner.getValue();\n }\n // Sync tile data to Rust for toTiles()/toResource()\n this.syncTileData(vm);\n }\n return vm as VM | null;\n };\n\n return new AttrPromise((resolve) => {\n vmPromise.then((vm) => resolve(resolveAttr(vm)));\n }) as AttrPromise<VM>;\n }\n\n /**\n * Sync the ViewModel's tile data to Rust.\n * Called after VM creation/resolution so toTiles()/toResource() can serialize.\n */\n private syncTileData(vm: IViewModel | null): void {\n if (vm === null) {\n this._wasm.setTileData(null);\n return;\n }\n\n // Check if the VM has __asTileData method\n if (typeof (vm as any).__asTileData === 'function') {\n const tileData = (vm as any).__asTileData();\n if (tileData instanceof Promise) {\n // Handle async __asTileData\n tileData.then((data: any) => {\n this._wasm.setTileData(data);\n }).catch((e: Error) => {\n console.warn(\"syncTileData: failed to get tile data\", e);\n });\n } else {\n this._wasm.setTileData(tileData);\n }\n }\n }\n\n public getValue(): AttrPromise<VM | null> {\n return this.updateValue();\n }\n\n getLength(): number {\n return this.getChildren().length;\n }\n\n async getChildTypes(): Promise<object> {\n await this.updateValue();\n let childTypes = {};\n const value = await this._cachedValue;\n if (value && value instanceof Object && 'getChildTypes' in value && typeof (value as any).getChildTypes === 'function') {\n childTypes = (value as any).getChildTypes();\n }\n if (this.inner) {\n Object.assign(childTypes, await this.inner.getChildTypes());\n }\n return childTypes;\n }\n\n getChildren(direct: boolean | null = null): IPseudo[] {\n let children: IPseudo[] = [];\n // Note: This accesses cached value synchronously. May need async version.\n if (this._cachedValue) {\n // Peek at resolved value if available\n // This is tricky with AttrPromise - might need to refactor\n }\n if (this.inner) {\n children = [...children, ...this.inner.getChildren(direct)];\n }\n return children;\n }\n\n async forJson(): Promise<{[key: string]: any} | {[key: string]: any}[] | string | number | boolean | null> {\n const value = await this.getValue();\n return value instanceof Object ? (value as any).forJson() : value;\n }\n}\n\nclass PseudoList extends Array implements IPseudo {\n node: StaticNode | undefined = undefined;\n parent: IRIVM<any> | null | undefined = undefined;\n parentValue: PseudoValue<any> | null = null;\n tile: StaticTile | undefined;\n parenttileId: string | undefined;\n ghostChildren: Set<PseudoValue<any>> | null = null;\n isOuter: boolean = false;\n /** Whether this list represents a cardinality-1 node (should unwrap to single value in forJson) */\n isSingle: boolean = false;\n\n isIterable(): boolean {\n return true;\n }\n\n async sorted() {\n const resolved = await Promise.all(this.map(async (pn) => await pn));\n const test = [];\n const sorted = resolved.sort((a, b) => {\n const vals = [a, b].map(val => {\n if (val && a.__parentPseudo && a.__parentPseudo.tile) {\n if (val.__parentPseudo.tile.sortorder > 0) {\n // RMV\n test.push(1);\n }\n return val.__parentPseudo.tile.sortorder;\n } else {\n return 0;\n }\n });\n return vals[0] - vals[1];\n });\n return sorted;\n }\n\n describeField() {\n if (!this.node) {\n return \"[(uninitialized node)]\";\n }\n\n let fieldName = this.node.name;\n if (this.parent && this.parent.__) {\n fieldName = `${this.parent.__.wkrm.modelName} - ${fieldName}`;\n }\n return `[${fieldName}]`;\n }\n\n describeFieldGroup() {\n if (!this.node) {\n return \"[(uninitialized node)]\";\n }\n\n let fieldName = this.node.name;\n if (this.parent && this.node.nodegroup_id && this.parent.$) {\n const nodegroupName = this.parent.$.model.getNodegroupName(this.node.nodegroup_id);\n if (nodegroupName && this.parent.__) {\n fieldName = `${this.parent.__.wkrm.modelName} - ${nodegroupName}`;\n }\n }\n return `[${fieldName}]`;\n }\n\n // Otherwise interferes with Array methods;\n initialize(node: StaticNode, parent: IRIVM<any> | null) {\n this.node = node;\n if (Array.isArray(this.node)) {\n throw Error(\"Cannot make a list of lists\");\n }\n if (!parent) {\n throw Error(\"Must have a parent or parent class for a pseudo-node\");\n }\n this.parent = parent;\n this.tile = undefined;\n this.parenttileId = undefined;\n this.ghostChildren = new Set();\n }\n\n async forJson(): Promise<{[key: string]: any}[] | {[key: string]: any} | null> {\n const array: {[key: string]: any}[] = Array.from(\n (await this.sorted()).map(\n async (entry: Promise<IViewModel> | IViewModel) => {\n const value = await entry;\n return (value && value instanceof Object && value.forJson) ? value.forJson() : value;\n }\n )\n );\n const resolved = await Promise.all(array);\n\n // If this is a cardinality-1 node, unwrap to single value\n if (this.isSingle) {\n return resolved.length > 0 ? resolved[0] : null;\n }\n return resolved;\n }\n\n getValue(): AttrPromise<PseudoList | IViewModel | null> {\n // For cardinality-1 nodes (isSingle=true), unwrap to single value\n // This matches the behavior of the async retrieve path which returns\n // WasmPseudoValue (not WasmPseudoList) for is_single=true nodes\n if (this.isSingle) {\n if (this.length > 0) {\n // The list contains AttrPromise<IViewModel> items, return the first one\n return this[0] as AttrPromise<IViewModel>;\n } else {\n return new AttrPromise(resolve => resolve(null));\n }\n }\n return new AttrPromise(resolve => resolve(this));\n }\n\n toString() {\n return `<PL: ${this.length}>`;\n }\n}\n\n/**\n * Thin wrapper to convert Rust WasmPseudoValue/WasmPseudoList to TS PseudoValue/PseudoList\n * This is the ONLY place where Rust values should be wrapped in TS classes\n *\n * @param rustValue - WasmPseudoValue or WasmPseudoList from Rust\n * @param wkri - The WKRI wrapper (parent IRIVM)\n * @param model - The model wrapper (for getting nodes - currently unused with new pattern)\n * @returns PseudoValue, PseudoList, or PseudoUnavailable\n */\nfunction wrapRustPseudo(\n rustValue: WasmPseudoValue | WasmPseudoList | null,\n wkri: IRIVM<any>,\n model: any,\n): PseudoValue<any> | PseudoList | PseudoUnavailable | null | undefined {\n // Handle null/unavailable case\n if (rustValue === null || rustValue === undefined) {\n return rustValue === null ? null : undefined;\n }\n\n // Check if it's a WasmPseudoList (has getAllValues method)\n if ('getAllValues' in rustValue && typeof rustValue.getAllValues === 'function') {\n const wasmList = rustValue as WasmPseudoList;\n const wasmValues = wasmList.getAllValues();\n\n const list = new PseudoList();\n // Initialize with first value's node info\n if (wasmValues.length > 0) {\n const firstValue = wasmValues[0];\n const nodeId = firstValue.nodeId;\n const node = model.getNodeObjectFromId(nodeId);\n list.initialize(node, wkri);\n }\n\n // Copy isSingle flag from WASM list (cardinality-1 nodes should unwrap to single value)\n list.isSingle = wasmList.isSingle;\n\n // Wrap each WasmPseudoValue using static factory\n // Push getValue() result (AttrPromise) - PseudoList contract expects\n // IViewModel or Promise<IViewModel>, and AttrPromise allows property chaining\n for (const wasmValue of wasmValues) {\n const pseudoValue = PseudoValue.fromWasm(wasmValue, wkri);\n list.push(pseudoValue.getValue());\n }\n\n return list;\n } else {\n // It's a single WasmPseudoValue - wrap using static factory\n return PseudoValue.fromWasm(rustValue as WasmPseudoValue, wkri);\n }\n}\n\nexport { PseudoNode, PseudoValue, PseudoList, PseudoUnavailable, wrapRustPseudo };\n","import { GraphResult, archesClient, ArchesClient, ArchesClientRemote } from './client';\nimport { staticStore } from './staticStore';\nimport { CardComponent, DEFAULT_CARD_COMPONENT, Widget, getDefaultWidgetForNode } from './cards';\nimport {\n StaticTranslatableString,\n StaticCollection,\n StaticConstraint,\n StaticCard,\n StaticEdge,\n StaticCardsXNodesXWidgets,\n StaticTile,\n StaticGraph,\n StaticNode,\n StaticNodegroup,\n StaticResource,\n StaticResourceSummary,\n StaticGraphMeta\n} from \"./static-types\";\nimport { PseudoValue, PseudoUnavailable, wrapRustPseudo } from \"./pseudos.ts\";\nimport { createInstanceWrapperForResource, createInstanceWrapperForModel, createResourceModelWrapper, createWKRM, getBackend } from \"./backend\";\nimport { ResourceInstanceViewModel, viewContext, SemanticViewModel, NodeViewModel } from \"./viewModels.ts\";\nimport { GetMeta, IRIVM, IStringKeyedObject, IPseudo, IInstanceWrapper, IViewModel, IModelWrapperBackend, IWKRM, ResourceInstanceViewModelConstructor, PermissionValue } from \"./interfaces\";\nimport { nodeConfigManager } from \"./nodeConfig.ts\";\nimport { generateUuidv5, AttrPromise } from \"./utils\";\n\n// Import and re-export timing functions from dedicated module (avoids circular imports)\nimport { recordWasmTiming, printWasmTimings, clearWasmTimings, getWasmTimings } from './wasmTiming';\nexport { recordWasmTiming, printWasmTimings, clearWasmTimings, getWasmTimings };\n\n// Re-export permission types for external use\nexport type { ConditionalPermission, PermissionValue } from \"./interfaces\";\n\nclass ConfigurationOptions {\n graphs: Array<string> | null | boolean = null;\n eagerLoadGraphs: boolean = false;\n defaultAllowAllNodegroups: boolean = false;\n}\n\nexport class ResourceInstanceWrapper<RIVM extends IRIVM<RIVM>> implements IInstanceWrapper<RIVM> {\n wkri: RIVM;\n model: ResourceModelWrapper<RIVM>;\n wasmWrapper: any; // WASMResourceInstanceWrapper or NapiResourceInstanceWrapper\n resource?: StaticResource;\n\n // Local cache for wrapped pseudo values (replaces ValueList)\n private _pseudoCache: Map<string, any> = new Map();\n cache: {[tileId: string]: {[nodeId: string]: IStringKeyedObject}} | undefined;\n scopes?: string[];\n metadata?: {[key: string]: string};\n private tilesLoaded: boolean = false;\n private pruneTiles: boolean = true;\n\n constructor(\n wkri: RIVM,\n model: ResourceModelWrapper<RIVM>,\n resource: StaticResource | null | false, // False to disable dynamic resource-loading\n pruneTiles: boolean = true,\n lazy: boolean = false,\n assumeTilesComprehensiveForNodegroup: boolean = true\n ) {\n const constructorStart = performance.now();\n this.wkri = wkri;\n this.model = model;\n this.pruneTiles = pruneTiles;\n\n // Initialize wrapper for tile management (WASM or NAPI depending on backend)\n let t0 = performance.now();\n if (resource) {\n this.wasmWrapper = createInstanceWrapperForResource(resource);\n this.resource = resource;\n recordWasmTiming(\"createInstanceWrapperForResource\", performance.now() - t0);\n } else {\n this.wasmWrapper = createInstanceWrapperForModel(model.wkrm.graphId);\n recordWasmTiming(\"createInstanceWrapperForModel\", performance.now() - t0);\n }\n\n this._pseudoCache = new Map();\n this.cache = resource ? resource.__cache : undefined;\n this.scopes = resource ? resource.__scopes : undefined;\n this.metadata = resource ? resource.metadata : undefined;\n\n // Set lazy mode (NAPI instance wrapper manages tiles internally)\n if (typeof this.wasmWrapper.setLazy === 'function') {\n t0 = performance.now();\n this.wasmWrapper.setLazy(lazy);\n recordWasmTiming(\"setLazy\", performance.now() - t0);\n }\n\n // Set up tile loader callback\n if (resource && typeof this.wasmWrapper.setTileLoader === 'function') {\n // Create a tile loader that loads from staticStore API\n const resourceId = resource.resourceinstance.resourceinstanceid;\n t0 = performance.now();\n this.wasmWrapper.setTileLoader((nodegroupId: string) => {\n // If nodegroupId is null/undefined, load all tiles\n // Otherwise load tiles for specific nodegroup\n const tiles = staticStore.loadTiles(resourceId, nodegroupId);\n return tiles;\n });\n recordWasmTiming(\"setTileLoader\", performance.now() - t0);\n }\n\n // Load tiles into Rust if we have any - regardless of lazy mode,\n // if tiles are already present we should use them\n let tilesLoaded = false;\n if (typeof this.wasmWrapper.tilesLoaded === 'function') {\n t0 = performance.now();\n tilesLoaded = this.wasmWrapper.tilesLoaded();\n recordWasmTiming(\"tilesLoaded (constructor)\", performance.now() - t0);\n }\n\n // Use loadTilesFromResource to avoid expensive tiles getter (which creates N WASM wrappers)\n if (!tilesLoaded && resource && resource.tilesLoaded && typeof this.wasmWrapper.loadTilesFromResource === 'function') {\n t0 = performance.now();\n this.wasmWrapper.loadTilesFromResource(resource, assumeTilesComprehensiveForNodegroup);\n recordWasmTiming(\"loadTilesFromResource\", performance.now() - t0);\n }\n\n if (pruneTiles && resource) {\n t0 = performance.now();\n this.pruneResourceTiles();\n recordWasmTiming(\"pruneResourceTiles\", performance.now() - t0);\n }\n recordWasmTiming(\"constructor total\", performance.now() - constructorStart);\n }\n\n async ensureTilesLoaded(): Promise<void> {\n if (!this.wasmWrapper.tilesLoaded()) {\n // Use in-memory resource if available (avoids registry/disk lookup)\n if (this.resource && this.resource.tiles && this.resource.tiles.length > 0) {\n this.wasmWrapper.loadTilesFromResource(this.resource, true);\n return;\n }\n\n // Otherwise fetch from staticStore registry\n const resourceId = this.wasmWrapper.getResourceId();\n const fullResource = await staticStore.ensureFullResource(resourceId);\n if (fullResource && fullResource.tilesLoaded) {\n this.wasmWrapper.loadTilesFromResource(fullResource, true);\n }\n }\n }\n\n pruneResourceTiles(): undefined {\n this.wasmWrapper.pruneResourceTiles();\n }\n\n // Direct Rust delegation methods (replaces ValueList)\n\n /**\n * Retrieve pseudo value by alias - queries Rust's pseudo_cache\n * Replaces ValueList.retrieve\n */\n async retrievePseudo(key: string, dflt: any = null, raiseError: boolean = false): Promise<Array<IPseudo> | null> {\n // Check local cache first (for wrapped values)\n let result: any = this._pseudoCache.get(key);\n if (result instanceof Promise) {\n result = await result;\n }\n if (Array.isArray(result) && result.length > 0) {\n return result;\n }\n\n // Query Rust's pseudo_cache\n const rustValue = this.wasmWrapper.getCachedPseudo(key);\n\n if (rustValue) {\n // Wrap the Rust value and cache locally\n const wrappedValue = wrapRustPseudo(rustValue, this.wkri, this.model);\n // Store as array for consistency\n const wrappedArray = [wrappedValue];\n this._pseudoCache.set(key, wrappedArray);\n return wrappedArray;\n }\n\n // Not found in cache\n if (raiseError) {\n throw Error(`Unset key ${key}`);\n }\n return dflt;\n }\n\n async hasPseudo(key: string): Promise<boolean> {\n const value = await this.retrievePseudo(key, null, false);\n return value !== null && value !== undefined;\n }\n\n setPseudo(key: string, value: any): void {\n this._pseudoCache.set(key, value);\n }\n\n async setDefaultPseudo(key: string, value: any): Promise<any> {\n const existingValue = await this.retrievePseudo(key, null, false);\n if (existingValue !== null) {\n return existingValue;\n }\n // Value not found, set the default\n this._pseudoCache.set(key, value);\n return value;\n }\n\n async loadNodes(aliases: Array<string>): Promise<void> {\n for (const key of aliases) {\n await this.retrievePseudo(key);\n }\n }\n\n getName(update: boolean = false): string {\n // Always ensure descriptors are computed (getDescriptors(false) computes if cache is empty)\n this.getDescriptors(update);\n return this.wasmWrapper.getName();\n }\n\n getDescriptors(update: boolean = false) {\n return this.wasmWrapper.getDescriptors(update);\n }\n\n getValuesAtPath(path: string, filterTileId?: string) {\n const rustValue = this.wasmWrapper.getValuesAtPath(path, filterTileId);\n return wrapRustPseudo(rustValue, this.wkri, this.model);\n }\n\n addPseudo(childNode: StaticNode, tile: StaticTile | null): IPseudo {\n const key = childNode.alias;\n if (!key) {\n throw Error(`Cannot add a pseudo node with no alias ${childNode.nodeid}`);\n }\n\n // Phase 4e: Call Rust to create the pseudo value, then wrap in TS class\n try {\n // Calculate permissions\n const isPermitted = this.model.isNodegroupPermitted(\n childNode.nodegroup_id || '',\n tile\n );\n\n // Call Rust makePseudoValue\n const rustValue = this.wasmWrapper.makePseudoValue(\n key,\n tile?.tileid || null,\n isPermitted,\n false // is_single\n );\n\n // Handle unavailable case (Rust returns null for unpermitted)\n if (rustValue === null || rustValue === undefined) {\n const child = new PseudoUnavailable(childNode);\n this.setDefaultPseudo(key, []).then((val: Array<any>) => val.push(child));\n return child;\n }\n\n // Wrap the Rust value in TS PseudoValue/PseudoList\n const child = wrapRustPseudo(rustValue, this.wkri, this.model);\n\n // Phase 4k: Don't use setDefault - it triggers retrieve which may already have\n // created values from Rust. Instead, directly get/set the value.\n this.setDefaultPseudo(key, []).then((val: Array<any>) => val.push(child));\n return child;\n\n // if (existingValue === undefined || existingValue === false) {\n // // No existing value - create a new array\n // valueList.values.set(key, [child]);\n // } else if (Array.isArray(existingValue)) {\n // // Already an array (PseudoList or plain) - push to it\n // // But check if child is already present (by checking tile ID to avoid duplicates)\n // const childTileId = child.tile?.tileid;\n // const alreadyPresent = childTileId && existingValue.some((v: any) => v.tile?.tileid === childTileId);\n // if (!alreadyPresent) {\n // existingValue.push(child);\n // }\n // } else if (existingValue instanceof Promise) {\n // // Value is still loading - wait and then push\n // existingValue.then((val: any) => {\n // if (Array.isArray(val)) {\n // const childTileId = child.tile?.tileid;\n // const alreadyPresent = childTileId && val.some((v: any) => v.tile?.tileid === childTileId);\n // if (!alreadyPresent) {\n // val.push(child);\n // }\n // }\n // });\n // }\n // return child;\n } catch (e) {\n console.error(\"Rust makePseudoValue failed:\", e);\n throw new Error(`Rust makePseudoValue failed: ${e}. This should not happen - check Rust implementation.`);\n }\n }\n\n allEntries(): MapIterator<[string, Array<IPseudo> | false | null]> {\n return this._pseudoCache.entries()\n }\n\n async keys() {\n return (await this.getRootViewModel()).keys();\n }\n\n async values() {\n return (await this.getRootViewModel()).values();\n }\n\n async entries() {\n return (await this.getRootViewModel()).entries();\n }\n\n async getRootViewModel(): Promise<SemanticViewModel> {\n const root = await this.getRoot();\n let value: IViewModel | null = null;\n if (root) {\n const rootValue = await root.getValue();\n if (!Array.isArray(rootValue)) {\n value = rootValue;\n }\n }\n if (!value || !(value instanceof SemanticViewModel)) {\n throw Error(`Tried to get root on ${this.model.wkrm.modelClassName}, which has no root`);\n }\n return value;\n }\n\n getOrmAttribute(key: string): AttrPromise<IViewModel> {\n let promise: Promise<void>;\n if (this.resource === null) {\n //promise = this.model.findStatic(this.wkri.id).then(resource => {\n // this.resource = resource;\n //}).then(() => this.populate(true));\n } else {\n promise = new Promise((resolve) => { resolve(); });\n }\n\n // TODO remapping\n return new AttrPromise(resolve => {\n return promise.then(() => this.getRootViewModel()).then(root => resolve(root[key]));\n });\n }\n\n async getRoot(): Promise<IPseudo | undefined> {\n const node = this.model.getRootNode();\n if (!node) {\n return undefined;\n }\n\n const alias = node.alias;\n if (!(typeof alias == 'string')) {\n throw Error(`Alias missing for node ${node.nodeid}`);\n }\n\n // Try to get root pseudo directly from cache (returns WasmPseudoValue, not list)\n const rootPseudo = this.wasmWrapper.getRootPseudo();\n if (rootPseudo) {\n // Wrap as PseudoValue directly (not via wrapRustPseudo which creates lists)\n return PseudoValue.fromWasm(rootPseudo, this.wkri);\n }\n\n // Not in cache - create a new pseudo value for empty resource\n const rustValue = this.wasmWrapper.makePseudoValue(\n alias,\n null, // tile_id\n true, // is_permitted\n false // is_single\n );\n const value = wrapRustPseudo(rustValue, this.wkri, this.model);\n return value;\n }\n\n setOrmAttribute(key: string, value: any) {\n // TODO remapping\n return this.getRootViewModel().then((root) => {\n if (root) {\n root[key] = value;\n } else {\n throw Error(`Tried to set ${key} on ${self}, which has no root`);\n }\n });\n }\n\n /**\n * Populate all nodegroups for a resource\n * Uses Rust implementation via WASM - Rust caches all values internally\n */\n async populate(lazy: boolean): Promise<void> {\n const populateStart = performance.now();\n const nodegroupObjs = this.model.getNodegroupObjects();\n const rootNode = this.model.getRootNode();\n\n if (rootNode.alias === null) {\n throw Error(\"Cannot populate a model with no proper root node\");\n }\n\n try {\n if (!lazy) {\n // Ensure tiles are loaded in Rust if we need them for non-lazy population.\n // Use tilesLoaded() to check Rust state, not this.resource.tiles (JS state).\n let t0 = performance.now();\n const loaded = this.wasmWrapper.tilesLoaded();\n recordWasmTiming(\"tilesLoaded (populate)\", performance.now() - t0);\n if (!loaded) {\n t0 = performance.now();\n await this.ensureTilesLoaded();\n recordWasmTiming(\"ensureTilesLoaded\", performance.now() - t0);\n }\n }\n\n // Get all nodegroup IDs\n const nodegroupIds = [...nodegroupObjs.keys()];\n\n // Call Rust implementation - Rust stores values in its pseudo_cache\n // Permissions are read directly from the model in Rust (set via setPermittedNodegroups)\n const t0 = performance.now();\n const result = this.wasmWrapper.populate(\n lazy,\n nodegroupIds,\n rootNode.alias\n );\n recordWasmTiming(\"populate (WASM)\", performance.now() - t0);\n\n // Initialize allNodegroups from Rust result\n const allNodegroups: Map<string, boolean> = new Map();\n const updatedNodegroups = result.allNodegroupsMap;\n if (updatedNodegroups instanceof Map) {\n for (const [key, value] of updatedNodegroups.entries()) {\n if (typeof value === 'boolean') {\n allNodegroups.set(key, value);\n }\n }\n } else {\n for (const [key, value] of Object.entries(updatedNodegroups)) {\n if (typeof value === 'boolean') {\n allNodegroups.set(key, value as boolean);\n }\n }\n }\n\n // Clear local cache - Rust is now the source of truth\n this._pseudoCache = new Map();\n\n recordWasmTiming(\"populate total\", performance.now() - populateStart);\n } catch (error) {\n const resourceId = this.wasmWrapper.getResourceId?.() || 'unknown';\n console.error(`[populate] Rust implementation failed for resource ${resourceId}:`, error);\n throw new Error(`populate failed for resource ${resourceId}: ${error}`);\n }\n }\n\n async getValueCache(build: boolean = true, getMeta: GetMeta = undefined): Promise<{[tileId: string]: {[nodeId: string]: IStringKeyedObject}} | undefined> {\n if (build) {\n this.cache = await this.buildValueCache(getMeta);\n }\n return this.cache;\n }\n\n async buildValueCache(getMeta: GetMeta): Promise<{[tileId: string]: {[nodeId: string]: IStringKeyedObject}}> {\n const cacheByTile: {[tileId: string]: {[nodeId: string]: IStringKeyedObject}} = {};\n for (let pseudos of this._pseudoCache.values()) {\n pseudos = await pseudos;\n if (pseudos) {\n await Promise.all(pseudos.map(async (pseudo: IPseudo) => {\n const value = await pseudo.getValue();\n // We do not try to cache pseudolists\n if (pseudo.tile && value && (!Array.isArray(pseudo))) {\n // @ts-expect-error this can be IViewModel[] while using a pseudolist\n const cacheJson = await value.__forJsonCache(getMeta); // caching JSON\n if (cacheJson) {\n const tileId = pseudo.tile.ensureId();\n const nodeId = pseudo.node.nodeid;\n if (!(tileId in cacheByTile)) {\n cacheByTile[tileId] = {};\n }\n if (!(nodeId in cacheByTile[tileId])) {\n cacheByTile[tileId][nodeId] = {};\n }\n cacheByTile[tileId][nodeId] = cacheJson;\n }\n }\n }));\n }\n }\n return cacheByTile;\n }\n\n /**\n * Release WASM memory held by this wrapper.\n * Call this after extracting data from a resource to free memory when processing many resources.\n * This clears tiles, pseudo cache, and other internal state.\n */\n release(): void {\n // Clear JS-side caches\n this._pseudoCache.clear();\n this.cache = undefined;\n this.scopes = undefined;\n this.metadata = undefined;\n\n // Release WASM-side memory\n this.wasmWrapper.release();\n\n // Clear resource reference to allow GC\n this.resource = undefined;\n }\n}\n\ntype GraphMutation = (baseGraph: StaticGraph) => StaticGraph;\n\nclass GraphMutator {\n baseGraph: StaticGraph;\n mutations: GraphMutation[];\n\n autocreateCard: boolean;\n\n constructor(baseGraph: StaticGraph, options: {\n autocreateCard?: boolean\n } = {}) {\n this.baseGraph = baseGraph;\n this.mutations = [];\n this.autocreateCard = options.autocreateCard === undefined || options.autocreateCard;\n }\n\n _generateUuidv5(key: string) {\n return generateUuidv5(['graph', this.baseGraph.graphid], key);\n }\n\n _generateEdge(fromNode: string, toNode: string, ontologyProperty: string, name?: string, description?: string) {\n const edgeId = this._generateUuidv5(`node-${fromNode}-${toNode}`);\n return new StaticEdge({\n description: description || null,\n domainnode_id: fromNode,\n edgeid: edgeId,\n graph_id: this.baseGraph.graphid,\n name: name || null,\n rangenode_id: toNode,\n ontologyproperty: ontologyProperty,\n });\n }\n\n addSemanticNode(parentAlias: string | null, alias: string, name: string, cardinality: 'n' | '1', ontologyClass: string | string[], parentProperty: string, description?: string, options: {\n exportable?: boolean,\n fieldname?: string,\n hascustomalias?: boolean;\n is_collector?: boolean;\n isrequired?: boolean;\n issearchable?: boolean;\n istopnode?: boolean;\n sortorder?: number;\n } = {}, config?: {[key: string]: any}) {\n return this._addGenericNode(\n parentAlias,\n alias,\n name,\n cardinality,\n \"semantic\",\n ontologyClass,\n parentProperty,\n description,\n options,\n config\n );\n }\n\n addConceptNode(parentAlias: string | null, alias: string, name: string, collection: StaticCollection, cardinality: 'n' | '1', ontologyClass: string | string[], parentProperty: string, description?: string, options: {\n is_list?: boolean,\n exportable?: boolean,\n fieldname?: string,\n hascustomalias?: boolean;\n is_collector?: boolean;\n isrequired?: boolean;\n issearchable?: boolean;\n istopnode?: boolean;\n sortorder?: number;\n } = {}, config?: {[key: string]: any}) {\n config = config || {};\n if (collection?.id) {\n config['rdmCollection'] = collection.id\n }\n return this._addGenericNode(\n parentAlias,\n alias,\n name,\n cardinality,\n options.is_list ? \"concept-list\" : \"concept\",\n ontologyClass,\n parentProperty,\n description,\n options,\n config\n );\n }\n\n addCard(nodegroup: string | StaticNodegroup, name: string | StaticTranslatableString, component?: CardComponent, options: {\n active?: boolean,\n constraints?: Array<StaticConstraint>,\n cssclass?: string | null,\n helpenabled?: boolean,\n helptext?: string | null | StaticTranslatableString,\n helptitle?: string | null | StaticTranslatableString,\n instructions?: string | null | StaticTranslatableString,\n is_editable?: boolean,\n description?: string | null,\n sortorder?: number | null,\n visible?: boolean\n } = {}, config?: {[key: string]: any}) {\n const nodegroupId = typeof nodegroup === 'string' ? nodegroup : nodegroup.nodegroupid;\n const cardName = name instanceof StaticTranslatableString ? name : new StaticTranslatableString(name);\n const cardComponent = component || DEFAULT_CARD_COMPONENT;\n const helptext = options?.helptext && (\n options.helptext instanceof StaticTranslatableString ?\n options.helptext : new StaticTranslatableString(options.helptext)\n );\n const helptitle = (options?.helptitle && (\n options.helptitle instanceof StaticTranslatableString ?\n options.helptitle : new StaticTranslatableString(options.helptitle)\n ));\n const instructions = (options?.instructions && (\n options.instructions instanceof StaticTranslatableString ?\n options.instructions : new StaticTranslatableString(options.instructions)\n ));\n this.mutations.push((graph: StaticGraph) => {\n const cards = graph.cards || [];\n if (cards.filter(card => card.nodegroup_id === nodegroup).length > 0) {\n throw Error(`This nodegroup, ${nodegroupId}, already has a card`);\n }\n const cardId = this._generateUuidv5(`card-ng-${nodegroupId}`);\n const card = new StaticCard({\n active: options.active === undefined ? true : options.active,\n cardid: cardId,\n component_id: cardComponent.id,\n config: config || undefined,\n constraints: options.constraints || [],\n cssclass: options.cssclass || null,\n description: options.description || null,\n graph_id: graph.graphid,\n helpenabled: !!(options.helpenabled || (options.helpenabled === undefined && (helptext || helptitle))),\n helptext: helptext || new StaticTranslatableString(''),\n helptitle: helptitle || new StaticTranslatableString(''),\n instructions: instructions || new StaticTranslatableString(''),\n is_editable: options.is_editable === undefined ? true : options.is_editable,\n name: cardName,\n nodegroup_id: nodegroupId,\n sortorder: options.sortorder || null,\n visible: options.visible === undefined ? true : options.visible\n });\n graph.pushCard(card);\n return graph;\n });\n }\n\n addStringNode(parentAlias: string | null, alias: string, name: string, cardinality: 'n' | '1', ontologyClass: string | string[], parentProperty: string, description?: string, options: {\n exportable?: boolean,\n fieldname?: string,\n hascustomalias?: boolean;\n is_collector?: boolean;\n isrequired?: boolean;\n issearchable?: boolean;\n istopnode?: boolean;\n sortorder?: number;\n } = {}, config?: {[key: string]: any}) {\n return this._addGenericNode(\n parentAlias,\n alias,\n name,\n cardinality,\n \"string\",\n ontologyClass,\n parentProperty,\n description,\n options,\n config\n );\n }\n\n _addNodegroup(parentAlias: string | null, nodegroupId: string, cardinality: 'n' | '1', name?: StaticTranslatableString) {\n this.mutations.push((graph: StaticGraph) => {\n const prnt = parentAlias === null ? graph.root : graph.nodes.find(node => node.alias === parentAlias);\n if (!prnt) {\n throw Error(`Missing parent for nodegroup: ${parentAlias}`);\n }\n const nodegroup = new StaticNodegroup({\n cardinality: cardinality,\n legacygroupid: null,\n nodegroupid: nodegroupId,\n parentnodegroup_id: prnt.nodegroup_id\n });\n graph.pushNodegroup(nodegroup);\n return graph;\n });\n if (this.autocreateCard) {\n this.addCard(nodegroupId, name || '(unnamed)');\n }\n return this;\n }\n\n _addGenericNode(parentAlias: string | null, alias: string, name: string, cardinality: 'n' | '1', datatype: string, ontologyClass: string | string[], parentProperty: string, description?: string, options: {\n exportable?: boolean,\n fieldname?: string,\n hascustomalias?: boolean;\n is_collector?: boolean;\n isrequired?: boolean;\n issearchable?: boolean;\n istopnode?: boolean;\n sortorder?: number;\n } = {}, config?: {[key: string]: any}) {\n const nodeId = this._generateUuidv5(`node-${alias}`);\n const node = {\n alias: alias,\n config: config || {},\n datatype: datatype,\n description: description || undefined,\n exportable: options.exportable || false,\n fieldname: options.fieldname || undefined,\n graph_id: this.baseGraph.graphid,\n hascustomalias: options.hascustomalias || false,\n is_collector: options.is_collector || false,\n isrequired: options.isrequired || false,\n issearchable: options.issearchable || true, // This is the default in Arches I believe\n istopnode: options.istopnode || false,\n name: name,\n nodegroup_id: '',\n nodeid: nodeId,\n parentproperty: parentProperty,\n sortorder: options.sortorder || 0,\n ontologyclass: ontologyClass,\n sourcebranchpublication_id: undefined,\n };\n if (cardinality === 'n' || parentAlias === null) {\n node.nodegroup_id = nodeId;\n this._addNodegroup(parentAlias, node.nodegroup_id, cardinality, new StaticTranslatableString(name));\n }\n this.mutations.push((graph: StaticGraph) => {\n const prnt = parentAlias === null ? graph.root : graph.nodes.find(node => node.alias === parentAlias);\n if (!prnt) {\n throw Error(`Parent node does not exist: ${parentAlias}`);\n }\n // FIXME: we assume we are not adding a root node, but nowhere do we say this.\n node.nodegroup_id = node.nodegroup_id !== '' ? node.nodegroup_id : prnt.nodegroup_id || '';\n const newNode = new StaticNode(node);\n graph.pushNode(newNode);\n const edge = this._generateEdge(prnt.nodeid, nodeId, parentProperty);\n graph.pushEdge(edge);\n return graph;\n });\n\n if (this.autocreateCard && datatype !== 'semantic') {\n const widget = getDefaultWidgetForNode(node);\n const config = widget.getDefaultConfig();\n config.label = name;\n this.addWidgetToCard(\n nodeId,\n widget,\n name,\n config,\n {\n sortorder: node.sortorder,\n silentSkip: true // if, for some reason, the card is not present (i.e. was removed), we should not worry\n }\n );\n }\n return this;\n }\n\n addWidgetToCard(\n nodeId: string,\n widget: Widget,\n name: string,\n config: {[key: string]: any},\n options: {\n sortorder?: number | null,\n silentSkip?: boolean,\n visible?: boolean\n } = {}\n ): GraphMutator {\n this.mutations.push((graph: StaticGraph) => {\n const node = graph.nodes.find(node => node.nodeid === nodeId);\n if (!node) {\n throw Error(`Tried to add card to graph ${graph.graphid} for node ${nodeId} but it was not found.`);\n }\n const card = graph.cards?.find(card => card.nodegroup_id === node.nodegroup_id);\n\n if (card) {\n const cardXNodeXWidgetId = this._generateUuidv5(`cxnxw-${nodeId}-${widget.id}`);\n\n const cardXNodeXWidget = new StaticCardsXNodesXWidgets({\n card_id: card.cardid,\n config: config,\n id: cardXNodeXWidgetId,\n label: new StaticTranslatableString(name),\n node_id: nodeId,\n sortorder: options.sortorder || 0,\n visible: options.visible === undefined || options.visible,\n widget_id: widget.id\n });\n graph.pushCardXNodeXWidget(cardXNodeXWidget);\n } else if (!options.silentSkip) {\n throw Error(`Failed adding widget for ${nodeId} to card for ${node.nodegroup_id} on graph ${graph.graphid}, as no card for this nodegroup (yet?)`);\n }\n return graph;\n });\n return this;\n }\n\n apply() {\n if (!this.baseGraph.copy) {\n throw Error(\"Attempt to build a mutator without a proper StaticGraph base graph\");\n }\n // TODO: complete deepcopies\n const graph = this.baseGraph.copy();\n return this.mutations.reduce((graph, mutation) => mutation(graph), graph);\n }\n}\n\n/**\n * ResourceModelWrapper — graph schema access with backend delegation.\n *\n * Stores a backend wrapper (_backend) that is either a WASMResourceModelWrapper\n * or NapiResourceModelWrapper, and delegates node/edge/nodegroup/permission\n * operations to it. WKRM metadata is stored locally.\n */\nclass ResourceModelWrapper<RIVM extends IRIVM<RIVM>> {\n private _backend: IModelWrapperBackend;\n wkrm: IWKRM;\n viewModelClass?: ResourceInstanceViewModelConstructor<RIVM>;\n // Supports both boolean and conditional permission rules\n permittedNodegroups?: Map<string, PermissionValue>;\n pruneTiles: boolean = true;\n\n // Cached copies of backend data (to avoid repeated cross-boundary calls)\n private _nodes: Map<string, StaticNode> | null = null;\n private _nodesByAlias: Map<string, StaticNode> | null = null;\n private _edges: Map<string, string[]> | null = null;\n private _nodegroups: Map<string, StaticNodegroup> | null = null;\n\n constructor(wkrm: IWKRM, graph: StaticGraph, viewModelClass?: ResourceInstanceViewModelConstructor<RIVM>, defaultAllow: boolean = false) {\n this.wkrm = wkrm;\n this._backend = createResourceModelWrapper(wkrm, graph, defaultAllow);\n this.pruneTiles = !defaultAllow;\n this.viewModelClass = viewModelClass;\n }\n\n // =========================================================================\n // Backend-delegated properties\n // =========================================================================\n\n get graph(): StaticGraph {\n return this._backend.graph;\n }\n\n set graph(g: StaticGraph) {\n this._backend.graph = typeof g === 'string' ? g : JSON.stringify(g);\n this._clearCaches();\n }\n\n get nodes(): Map<string, StaticNode> | null {\n if (!this._nodes) {\n const raw = this._backend.nodes;\n if (raw) this._nodes = raw instanceof Map ? raw : new Map(Object.entries(raw));\n }\n return this._nodes;\n }\n\n get nodesByAlias(): Map<string, StaticNode> | null {\n if (!this._nodesByAlias) {\n const raw = this._backend.nodesByAlias;\n if (raw) this._nodesByAlias = raw instanceof Map ? raw : new Map(Object.entries(raw));\n }\n return this._nodesByAlias;\n }\n\n get edges(): Map<string, string[]> | null {\n if (!this._edges) {\n const raw = this._backend.edges;\n if (raw) this._edges = raw instanceof Map ? raw : new Map(Object.entries(raw));\n }\n return this._edges;\n }\n\n get nodegroups(): Map<string, StaticNodegroup> | null {\n if (!this._nodegroups) {\n const raw = this._backend.nodegroups;\n if (raw) this._nodegroups = raw instanceof Map ? raw : new Map(Object.entries(raw));\n }\n return this._nodegroups;\n }\n\n private _clearCaches() {\n this._nodes = null;\n this._nodesByAlias = null;\n this._edges = null;\n this._nodegroups = null;\n }\n\n // =========================================================================\n // Delegated methods\n // =========================================================================\n\n getRootNode(): StaticNode {\n return this._backend.getRootNode();\n }\n\n getChildNodes(nodeId: string): Map<string, StaticNode> {\n const raw = this._backend.getChildNodes(nodeId);\n return raw instanceof Map ? raw : new Map(Object.entries(raw));\n }\n\n getChildNodeAliases(nodeId: string): string[] {\n return this._backend.getChildNodeAliases(nodeId);\n }\n\n getGraphId(): string {\n return this._backend.getGraphId?.() ?? this.wkrm.graphId;\n }\n\n getNodeObjectFromAlias(alias: string): StaticNode {\n return this._backend.getNodeObjectFromAlias(alias);\n }\n\n getNodeObjectFromId(id: string): StaticNode {\n return this._backend.getNodeObjectFromId(id);\n }\n\n getNodeIdFromAlias(alias: string): string {\n return this._backend.getNodeIdFromAlias(alias);\n }\n\n getNodegroupIds(): string[] {\n return this._backend.getNodegroupIds();\n }\n\n getNodegroupName(nodegroupId: string): string {\n return this._backend.getNodegroupName(nodegroupId);\n }\n\n // PseudoNode creation — only available in WASM mode (used for NodeViewModel)\n createPseudoNode(alias?: string): any {\n if (typeof this._backend.createPseudoNode === 'function') {\n return this._backend.createPseudoNode(alias);\n }\n throw new Error('createPseudoNode not available in current backend');\n }\n\n createPseudoNodeChild(childNode: string, parent: any): any {\n if (typeof this._backend.createPseudoNodeChild === 'function') {\n return this._backend.createPseudoNodeChild(childNode, parent);\n }\n throw new Error('createPseudoNodeChild not available in current backend');\n }\n\n createPseudoValue(alias: string | undefined, tile: any, parent: any): any {\n if (typeof this._backend.createPseudoValue === 'function') {\n return this._backend.createPseudoValue(alias, tile, parent);\n }\n throw new Error('createPseudoValue not available in current backend');\n }\n\n // =========================================================================\n // Methods with TS-level logic\n // =========================================================================\n\n getRoot(): NodeViewModel {\n const node = this.getRootNode();\n const pseudoNode = this.createPseudoNode(node.alias);\n return new NodeViewModel(pseudoNode, this);\n }\n\n buildNodes() {\n // WASM backend's buildNodes() is actually buildNodesForGraph(graph) on the\n // raw WASMResourceModelWrapper; NAPI's buildNodes() is a no-op (caches\n // built eagerly in constructor). Use backend type to dispatch correctly.\n if (getBackend() === 'napi') {\n this._backend.buildNodes();\n } else {\n // WASM: the raw class uses buildNodesForGraph(graph)\n const backend = this._backend as any;\n if (typeof backend.buildNodesForGraph === 'function') {\n backend.buildNodesForGraph(this._backend.graph);\n } else {\n this._backend.buildNodes();\n }\n }\n this._clearCaches();\n }\n\n getNodeObjects(): Map<string, StaticNode> {\n if (!this.nodes) {\n this.buildNodes();\n }\n if (!this.nodes) {\n throw Error(\"Could not build nodes\");\n }\n return this.nodes;\n }\n\n getNodeObjectsByAlias(): Map<string, StaticNode> {\n if (!this.nodesByAlias) {\n this.buildNodes();\n }\n if (!this.nodesByAlias) {\n throw Error(\"Could not build nodes\");\n }\n return this.nodesByAlias;\n }\n\n getEdges(): Map<string, string[]> {\n if (!this.edges) {\n this.buildNodes();\n }\n if (!this.edges) {\n throw Error(\"Could not build edges\");\n }\n return this.edges;\n }\n\n getNodegroupObjects(): Map<string, StaticNodegroup> {\n if (!this.nodegroups) {\n this.buildNodes();\n }\n if (!this.nodegroups) {\n throw Error(\"Could not build nodegroups\");\n }\n return this.nodegroups;\n }\n\n // TODO: Switch to getBranches\n getBranchPublicationIds(accessible?: boolean): string[] {\n const accessibleOnly = accessible || false;\n const nodes = [...this.graph.nodes.values()];\n return [...nodes.reduce(\n (acc: Set<string>, node: StaticNode): Set<string> => {\n if (node.sourcebranchpublication_id) {\n if (accessibleOnly) {\n if (this.isNodegroupPermitted(node.nodegroup_id || '', null)) {\n acc.add(node.sourcebranchpublication_id);\n }\n } else {\n acc.add(node.sourcebranchpublication_id);\n }\n }\n return acc;\n }, new Set()\n )];\n }\n\n getCollections(accessible?: boolean): string[] {\n const accessibleOnly = accessible || false;\n const nodes = [...this.graph.nodes.values()];\n return [...nodes.reduce(\n (acc: Set<string>, node: StaticNode): Set<string> => {\n if (['concept', 'concept-list'].includes(node.datatype) && node.config?.rdmCollection) {\n if (accessibleOnly) {\n if (this.isNodegroupPermitted(node.nodegroup_id || '', null)) {\n acc.add(node.config.rdmCollection);\n }\n } else {\n acc.add(node.config.rdmCollection);\n }\n }\n return acc;\n }, new Set()\n )];\n }\n\n pruneGraph(keepFunctions?: string[]): undefined {\n // Delegate to backend (WASM or NAPI) for graph filtering\n this._backend.pruneGraph(keepFunctions);\n this._clearCaches();\n }\n\n getPruneTiles(pruneTiles?: boolean) {\n if (pruneTiles === undefined) {\n pruneTiles = this.pruneTiles;\n }\n return pruneTiles;\n }\n\n async all(params: { limit?: number; lazy?: boolean; pruneTiles?: boolean } | undefined = undefined): Promise<Array<RIVM>> {\n const paramObj = params || { limit: undefined, lazy: undefined, pruneTiles: this.getPruneTiles(params?.pruneTiles) };\n const promises = [];\n for await (const resource of this.iterAll(paramObj)) {\n promises.push(resource);\n }\n return Promise.all(promises);\n }\n\n async* resourceGenerator(staticResources: AsyncIterable<StaticResource, RIVM, unknown>, lazy: boolean=false, pruneTiles?: boolean) {\n for await (const staticResource of staticResources) {\n yield this.fromStaticResource(staticResource, lazy, pruneTiles);\n }\n }\n\n async* iterAll(params: { limit?: number; lazy?: boolean; pruneTiles?: boolean }): AsyncGenerator<RIVM> {\n yield* this.resourceGenerator(staticStore.loadAll(this.wkrm.graphId, params.limit), params.lazy, params.pruneTiles);\n }\n\n // New summary-based methods for performance optimization\n async* summaryGenerator(staticSummaries: AsyncIterable<StaticResourceSummary>, lazy: boolean = true): AsyncGenerator<RIVM> {\n for await (const summary of staticSummaries) {\n // Create lightweight resource from summary\n const summaryResource = StaticResource.fromSummary(summary);\n yield this.fromStaticResource(summaryResource, lazy, false); // lazy=true, pruneTiles=false\n }\n }\n\n async* iterAllSummaries(params: { limit?: number }): AsyncGenerator<RIVM> {\n yield* this.summaryGenerator(staticStore.loadAllSummaries(this.wkrm.graphId, params.limit), true);\n }\n\n async allSummaries(params: { limit?: number } | undefined = undefined): Promise<Array<RIVM>> {\n const paramObj = params || { limit: undefined };\n const promises = [];\n for await (const resource of this.iterAllSummaries(paramObj)) {\n promises.push(resource);\n }\n return Promise.all(promises);\n }\n\n async loadFullResource(id: string): Promise<RIVM> {\n // Check if we have full resource or just summary, load full resource on-demand\n const fullResource = await staticStore.ensureFullResource(id);\n return this.fromStaticResource(fullResource, false, true); // non-lazy, prune tiles\n }\n\n async findStatic(id: string): Promise<StaticResource> {\n return await staticStore.loadOne(id);\n }\n\n async find(id: string, lazy: boolean = true, pruneTiles?: boolean): Promise<RIVM> {\n const rivm = await this.findStatic(id);\n const x = this.fromStaticResource(rivm, lazy, pruneTiles);\n return x;\n }\n\n setDefaultAllowAllNodegroups(defaultAllow: boolean) {\n this.pruneTiles = !defaultAllow;\n if (typeof this._backend.setDefaultAllowAllNodegroups === 'function') {\n this._backend.setDefaultAllowAllNodegroups(defaultAllow);\n }\n }\n\n // Supports both boolean and conditional permission rules\n setPermittedNodegroups(permissions: Map<string, PermissionValue>) {\n const nodegroups = this.getNodegroupObjects();\n const nodes = this.getNodeObjectsByAlias();\n\n this.permittedNodegroups = new Map([...permissions].map(([key, value]): [string, PermissionValue] => {\n const k = key ?? ''; // Convert null/undefined to empty string\n\n // Resolve key to nodegroup ID if it's an alias\n let resolvedKey: string;\n if (nodegroups.has(k) || k === '') {\n resolvedKey = k; // Use normalized key (not original)\n } else {\n const node = nodes.get(k);\n if (node) {\n // The nodeid is the nodegroup ID of the children, but may not be the nodegroup ID of\n // the semantic node itself.\n resolvedKey = node.nodeid ?? ''; // Ensure nodeid is not null\n } else {\n throw Error(`Could not find ${key} in nodegroups for permissions`);\n }\n }\n\n return [resolvedKey, value];\n }));\n\n // Propagate to backend for pruneGraph to work correctly\n // WASM backend accepts Map (js_sys::Map); NAPI backend accepts plain object (serde)\n const permsForBackend = getBackend() === 'napi'\n ? Object.fromEntries(this.permittedNodegroups)\n : this.permittedNodegroups;\n this._backend.setPermittedNodegroups(permsForBackend);\n }\n\n // Defaults to visible, which helps reduce the risk of false sense of security\n // from front-end filtering masking the presence of data transferred to it.\n getPermittedNodegroups(): Map<string, PermissionValue> {\n if (!this.permittedNodegroups) {\n // Auto-initializing with all-true permissions - this will overwrite any WASM-side permissions\n const permissions: Map<string, PermissionValue> = new Map([...this.getNodegroupObjects()].map(\n ([k, _]: [k: string, _: StaticNodegroup]) => [k ?? '', true] // Ensure key is not null\n ));\n permissions.set(\"\", true); // Have to have access to root node.\n this.setPermittedNodegroups(permissions);\n }\n const permittedNodegroups = this.permittedNodegroups;\n if (permittedNodegroups === undefined) {\n throw Error(\"Could not set permitted nodegroups\");\n }\n // TODO allow reducing\n return permittedNodegroups;\n }\n\n // Check if a nodegroup is permitted (for JS-side checks)\n // Note: Conditional rules mean the nodegroup is permitted, but individual tiles may be filtered in Rust\n isNodegroupPermitted(nodegroupId: string, _tile: StaticTile | null): boolean {\n const permitted = this.getPermittedNodegroups().get(nodegroupId ?? '');\n if (permitted === undefined || permitted === false) {\n return false;\n }\n if (permitted === true) {\n return true;\n }\n // Conditional permission - nodegroup is permitted, tiles are filtered in Rust\n if (typeof permitted === 'object' && 'path' in permitted && 'allowed' in permitted) {\n return true; // Nodegroup permitted; tile filtering happens in Rust\n }\n throw Error(`Ambiguous permission state: ${JSON.stringify(permitted)} for nodegroup ${nodegroupId}`);\n }\n\n makeInstance(id: string, resource: StaticResource | null, pruneTiles?: boolean, lazy: boolean = false): RIVM {\n pruneTiles = this.getPruneTiles(pruneTiles);\n if (!this.viewModelClass) {\n throw Error(`Cannot instantiate without a viewModelClass in ${this.wkrm.modelClassName}`);\n }\n // TODO: This line needs fixed.\n const instance: RIVM = new this.viewModelClass(\n id,\n this.viewModelClass.prototype.__,\n (rivm: RIVM) =>\n new ResourceInstanceWrapper(rivm, this, resource, pruneTiles, lazy),\n null\n );\n return instance;\n }\n\n fromStaticResource(\n resource: StaticResource,\n lazy: boolean = false,\n pruneTiles?: boolean\n ): Promise<RIVM> {\n const start = performance.now();\n const wkri: RIVM = this.makeInstance(\n resource.resourceinstance.resourceinstanceid,\n resource,\n pruneTiles,\n lazy\n );\n recordWasmTiming(\"makeInstance\", performance.now() - start);\n\n if (!wkri.$) {\n throw Error(\"Could not load resource from static definition\");\n }\n\n const pop = wkri.$.populate(lazy).then(() => {\n recordWasmTiming(\"fromStaticResource total\", performance.now() - start);\n return wkri;\n });\n return pop;\n }\n\n asTree(): {[key: string]: any} {\n const root = this.getRootNode();\n const nodegroups = this.getNodegroupObjects();\n const addChildren = (node: StaticNode) => {\n const branch: {[key: string]: any} = {};\n const children = this.getChildNodes(node.nodeid);\n if (!children.size) {\n return false;\n }\n for (const child of children.values()) {\n const nodegroup = nodegroups.get(child.nodegroup_id || '');\n const multiple = (\n child.nodegroup_id &&\n child.is_collector &&\n nodegroup &&\n nodegroup.cardinality == 'n' &&\n node.nodegroup_id !== child.nodegroup_id\n ) || child.datatype.endsWith('-list');\n const childBranch = addChildren(child);\n const alias = child.alias || '';\n if (childBranch === false) {\n branch[alias] = child.datatype;\n } else {\n branch[alias] = childBranch;\n if (child.datatype !== 'semantic') {\n branch[alias]['_'] = child.datatype;\n }\n }\n if (multiple) {\n branch[alias] = [branch[alias]];\n }\n }\n return branch;\n }\n return addChildren(root) || {};\n }\n}\n\nfunction makeResourceModelWrapper<T extends IRIVM<T>>(\n viewModelClass: ResourceInstanceViewModelConstructor<T> | undefined,\n wkrm: IWKRM,\n graph: StaticGraph,\n defaultAllow: boolean\n): ResourceInstanceViewModelConstructor<T> {\n let vmc: ResourceInstanceViewModelConstructor<T>;\n if (!viewModelClass) {\n // @ts-expect-error It may be possible to correct this, but TS does not know that\n // the dynamically-defined class meets the IRIVM interface.\n const viewModelClassObj: {[name: string]: ResourceInstanceViewModelConstructor<T>} = {\n [wkrm.modelClassName]: class extends ResourceInstanceViewModel<T> {\n static _: ResourceInstanceWrapper<T> | null;\n static __: ResourceModelWrapper<T> | null;\n },\n };\n vmc = viewModelClassObj[wkrm.modelClassName];\n } else {\n vmc = viewModelClass;\n }\n\n const wrapper = new ResourceModelWrapper<T>(wkrm, graph, vmc, defaultAllow);\n vmc.prototype.__ = wrapper;\n return vmc;\n}\n\nclass GraphManager {\n _initialized: boolean = false;\n archesClient: ArchesClient;\n // These are hydrated graphs - for metadata-only versions\n // of graphs, using wkrms[*].meta\n graphs: Map<string, ResourceModelWrapper<any>>;\n wkrms: Map<string, IWKRM>;\n defaultAllow: boolean = false;\n\n constructor(archesClient: ArchesClient) {\n this.archesClient = archesClient;\n this.graphs = new Map<string, ResourceModelWrapper<any>>();\n this.wkrms = new Map<string, IWKRM>();\n }\n\n getPruneTiles(pruneTiles?: boolean) {\n if (pruneTiles === undefined) {\n pruneTiles = !this.defaultAllow;\n }\n return pruneTiles;\n }\n\n async initialize(configurationOptions: ConfigurationOptions | undefined = undefined) {\n if (this._initialized) {\n return;\n }\n if (configurationOptions === undefined) {\n configurationOptions = new ConfigurationOptions();\n }\n const graphJsons: GraphResult = await this.archesClient.getGraphs();\n this.defaultAllow = configurationOptions.defaultAllowAllNodegroups;\n\n let graphs: Array<[string, StaticGraphMeta]> = Object.entries(graphJsons[\"models\"]);\n const allowedGraphs = configurationOptions.graphs;\n if (allowedGraphs !== null) {\n if (allowedGraphs === false) {\n throw Error(\"No current meaning of allowedGraphs === false\");\n } else if (allowedGraphs !== true) {\n graphs = graphs.filter(\n ([graphId, _]: [string, StaticGraphMeta]) => allowedGraphs.includes(graphId),\n );\n }\n }\n graphs.forEach(([graphId, meta]: [string, StaticGraphMeta]) => {\n if (!(meta instanceof StaticGraphMeta)) {\n meta = new StaticGraphMeta(meta);\n }\n meta.graphid = meta.graphid || graphId;\n const wkrm = createWKRM(meta);\n this.wkrms.set(wkrm.modelClassName, wkrm);\n });\n if (configurationOptions.eagerLoadGraphs) {\n await Promise.all(graphs.map(([g]) => this.loadGraph(g, configurationOptions.defaultAllowAllNodegroups)));\n }\n\n this._initialized = true;\n }\n\n async loadGraph<RIVM extends IRIVM<RIVM>>(modelClass: ResourceInstanceViewModelConstructor<RIVM> | string, defaultAllow: boolean=false): Promise<ResourceModelWrapper<RIVM>> {\n let modelClassName: string;\n if (typeof modelClass == 'string') {\n modelClassName = modelClass;\n } else {\n modelClassName = modelClass.name;\n }\n\n let wkrm = this.wkrms.get(modelClassName);\n if (wkrm === undefined) {\n wkrm = [...this.wkrms.values()].find(wkrm => wkrm.graphId === modelClassName);\n if (wkrm === undefined) {\n throw Error(`Only loading graphs for which metadata is present, not ${modelClassName}`);\n }\n modelClass = wkrm.modelClassName;\n }\n\n const wrapper = this.graphs.get(wkrm.graphId);\n if (wrapper !== undefined) {\n return wrapper;\n }\n\n const graph = await this.archesClient.getGraph(wkrm.meta);\n if (!graph) {\n throw Error(`Could not load graph ${wkrm.graphId}`);\n }\n\n // Load node configs (domain values, booleans, etc.) for this graph\n nodeConfigManager.loadFromGraph(graph);\n\n let model: ResourceInstanceViewModelConstructor<RIVM>;\n if (typeof modelClass == 'string') {\n modelClassName = modelClass;\n model = makeResourceModelWrapper<RIVM>(undefined, wkrm, graph, defaultAllow);\n } else {\n modelClassName = modelClass.name;\n model = makeResourceModelWrapper<RIVM>(modelClass, wkrm, graph, defaultAllow);\n }\n\n this.graphs.set(graph.graphid, model.prototype.__);\n return model.prototype.__;\n }\n\n async get<RIVM extends IRIVM<RIVM>>(modelClass: ResourceInstanceViewModelConstructor<RIVM> | string, defaultAllow: boolean=false): Promise<ResourceModelWrapper<RIVM>> {\n let modelClassName: string;\n if (typeof modelClass == 'string') {\n modelClassName = modelClass;\n } else {\n modelClassName = modelClass.name;\n }\n\n // Initialize as a fallback\n this.initialize(undefined);\n let wkrm = this.wkrms.get(modelClassName);\n if (wkrm === undefined) {\n wkrm = [...this.wkrms.values()].find(w => w.graphId === modelClassName);\n if (wkrm === undefined) {\n throw Error(`Cannot find model requested: ${modelClassName}`);\n }\n }\n\n const wrapper = this.graphs.get(wkrm.graphId);\n if (wrapper === undefined) {\n return this.loadGraph(modelClass, defaultAllow);\n }\n return wrapper;\n }\n\n async getResource<T extends IRIVM<T>>(resourceId: string, lazy: boolean = true, pruneTiles?: boolean): Promise<T> {\n pruneTiles = this.getPruneTiles(pruneTiles);\n const rivm = await staticStore.loadOne(resourceId);\n let graph = this.graphs.get(rivm.resourceinstance.graph_id);\n if (!graph) {\n graph = await this.loadGraph(rivm.resourceinstance.graph_id, !pruneTiles);\n if (!graph) {\n throw Error(`Graph not found for resource ${resourceId}`);\n }\n }\n return graph.fromStaticResource(rivm, lazy, pruneTiles);\n }\n\n getGraph(graphId: string): StaticGraph {\n const wrapper = this.graphs.get(graphId);\n if (wrapper === undefined) {\n throw Error(`Cannot find graph requested: ${graphId}`);\n }\n return wrapper.graph;\n }\n}\n\nconst graphManager = new GraphManager(archesClient);\nviewContext.graphManager = graphManager;\n\n// Re-export WKRM factory and class getter from backend\nexport { createWKRM, getWKRMClass } from \"./backend\";\nexport { GraphManager, graphManager, ArchesClientRemote, staticStore, ResourceModelWrapper, GraphMutator };\n","import { generateUuidv5 } from './utils';\nimport { getCurrentLanguage } from './utils';\nimport { StaticCollection, StaticConcept, StaticValue, SkosNodeType } from './static-types';\n\n/**\n * Options for adding a concept to a collection\n */\nexport interface AddConceptOptions {\n /** The label value (string) or multilingual labels */\n label: string | { [lang: string]: string };\n /** Optional parent concept ID to add this as a child */\n parentId?: string;\n /** Optional source/identifier URI */\n source?: string;\n /** Optional sort order */\n sortOrder?: number;\n /** Optional explicit ID (otherwise generated from label) */\n id?: string;\n /** Optional URI for the concept */\n uri?: string;\n}\n\n/**\n * Result of adding a concept\n */\nexport interface AddConceptResult {\n concept: StaticConcept;\n id: string;\n}\n\n/**\n * Mutator class for StaticCollection that provides methods for adding,\n * modifying, and removing concepts including nested children.\n */\nexport class CollectionMutator {\n private collection: StaticCollection;\n\n constructor(collection: StaticCollection) {\n this.collection = collection;\n }\n\n /**\n * Get the underlying collection\n */\n getCollection(): StaticCollection {\n return this.collection;\n }\n\n /**\n * Create a new empty collection with a mutator.\n *\n * @param name - Collection name (string or multilingual object)\n * @param options - Optional settings\n * @param options.collectionId - Explicit ID (otherwise generated from name)\n * @param options.nodeType - 'ConceptScheme' (default) or 'Collection' for Arches-compatible\n * @param options.uri - Optional URI for the collection\n *\n * Both types support hierarchical concepts via narrower/broader relationships.\n * The difference is how membership is expressed in RDF:\n * - ConceptScheme: uses skos:inScheme on concepts\n * - Collection: uses skos:member to list all concepts (including children)\n *\n * @example\n * // Create a hierarchical ConceptScheme (default)\n * const scheme = CollectionMutator.createEmpty(\"Categories\");\n * scheme.addConcept({ label: \"Parent\" });\n * scheme.addChildConcept(parentId, { label: \"Child\" }); // narrower/broader\n *\n * @example\n * // Create an Arches-compatible Collection with hierarchy\n * const collection = CollectionMutator.createEmpty(\"My Collection\", { nodeType: 'Collection' });\n * const parent = collection.addConcept({ label: \"Parent\" });\n * collection.addChildConcept(parent.id, { label: \"Child\" }); // narrower/broader, all listed as members\n */\n static createEmpty(\n name: string | { [lang: string]: string },\n options?: string | { collectionId?: string; nodeType?: SkosNodeType; uri?: string }\n ): CollectionMutator {\n // Handle backwards compatibility: if options is a string, treat as collectionId\n const opts = typeof options === 'string' ? { collectionId: options } : (options || {});\n const { collectionId, nodeType = 'ConceptScheme', uri } = opts;\n\n const lang = getCurrentLanguage();\n let prefLabels: { [lang: string]: StaticValue };\n let nameValue: string;\n\n if (typeof name === 'string') {\n nameValue = name;\n prefLabels = {\n [lang]: StaticValue.create('', 'prefLabel', name)\n };\n } else {\n // Multilingual name\n nameValue = name[lang] || Object.values(name)[0];\n prefLabels = {};\n for (const [l, v] of Object.entries(name)) {\n prefLabels[l] = StaticValue.create('', 'prefLabel', v);\n }\n }\n\n const id = collectionId || generateUuidv5(['collection'], nameValue);\n\n const collection = new StaticCollection({\n id,\n uri,\n prefLabels,\n nodeType,\n concepts: {},\n __allConcepts: {},\n __values: {}\n });\n\n return new CollectionMutator(collection);\n }\n\n /**\n * Create a new Arches-compatible Collection.\n * Convenience method equivalent to createEmpty(name, { nodeType: 'Collection' })\n * Collections can have hierarchical concepts (narrower/broader) but list all\n * concepts (including children) as members via skos:member.\n */\n static createArchesCollection(\n name: string | { [lang: string]: string },\n options?: { collectionId?: string; uri?: string }\n ): CollectionMutator {\n return CollectionMutator.createEmpty(name, { ...options, nodeType: 'Collection' });\n }\n\n /**\n * Add a top-level concept to the collection.\n * Use parentId to create hierarchy (narrower/broader relationships on concepts).\n */\n addConcept(options: AddConceptOptions): AddConceptResult {\n if (options.parentId) {\n return this.addChildConcept(options.parentId, options);\n }\n\n const concept = this._createConcept(options);\n\n // Add to top-level concepts\n this.collection.concepts[concept.id] = concept;\n\n // Update internal indexes\n this._indexConcept(concept);\n\n return { concept, id: concept.id };\n }\n\n /**\n * Add a top-level member concept (alias for addConcept).\n * Useful when working with Collections to make intent clear.\n * Use addChildConcept() to create hierarchical concepts.\n */\n addMember(options: Omit<AddConceptOptions, 'parentId'>): AddConceptResult {\n if (this.collection.nodeType === 'ConceptScheme') {\n console.warn('addMember called on ConceptScheme - use addConcept for clarity');\n }\n return this.addConcept(options);\n }\n\n /**\n * Add a child concept under an existing concept.\n * For both ConceptScheme and Collection types, this creates a narrower/broader hierarchy\n * on the concepts. Collections list all concepts (including children) as members.\n */\n addChildConcept(parentId: string, options: Omit<AddConceptOptions, 'parentId'>): AddConceptResult {\n const parent = this._findConcept(parentId);\n if (!parent) {\n throw new Error(`Parent concept with ID ${parentId} not found`);\n }\n\n const concept = this._createConcept(options);\n\n // Add to parent's children\n if (!parent.children) {\n parent.children = [];\n }\n parent.children.push(concept);\n\n // Sort children by sortOrder if present\n parent.children.sort((a, b) => (a.sortOrder ?? 999) - (b.sortOrder ?? 999));\n\n // Update internal indexes\n this._indexConcept(concept);\n\n return { concept, id: concept.id };\n }\n\n /**\n * Add multiple concepts at once, supporting nested structure\n * @param concepts Array of concepts with optional children\n * @param parentId Optional parent ID to add all concepts under\n */\n addConcepts(\n concepts: Array<AddConceptOptions & { children?: Array<AddConceptOptions & { children?: any[] }> }>,\n parentId?: string\n ): AddConceptResult[] {\n const results: AddConceptResult[] = [];\n\n for (const conceptData of concepts) {\n const { children, ...conceptOptions } = conceptData;\n\n // Add the concept\n const result = parentId\n ? this.addChildConcept(parentId, conceptOptions)\n : this.addConcept(conceptOptions);\n\n results.push(result);\n\n // Recursively add children\n if (children && children.length > 0) {\n const childResults = this.addConcepts(children, result.id);\n results.push(...childResults);\n }\n }\n\n return results;\n }\n\n /**\n * Remove a concept by ID (and all its children)\n */\n removeConcept(conceptId: string): boolean {\n // Check if it's a top-level concept\n if (this.collection.concepts[conceptId]) {\n const concept = this.collection.concepts[conceptId];\n this._unindexConcept(concept);\n delete this.collection.concepts[conceptId];\n return true;\n }\n\n // Search in children\n for (const topConcept of Object.values(this.collection.concepts)) {\n if (this._removeFromChildren(topConcept, conceptId)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Move a concept to a new parent (or to top level if parentId is null)\n */\n moveConcept(conceptId: string, newParentId: string | null): boolean {\n const concept = this._findConcept(conceptId);\n if (!concept) {\n return false;\n }\n\n // Remove from current location\n this.removeConcept(conceptId);\n\n // Re-index (was unindexed during removal)\n this._indexConcept(concept);\n\n if (newParentId === null) {\n // Move to top level\n this.collection.concepts[concept.id] = concept;\n } else {\n // Move under new parent\n const newParent = this._findConcept(newParentId);\n if (!newParent) {\n // Revert - add back to top level\n this.collection.concepts[concept.id] = concept;\n return false;\n }\n if (!newParent.children) {\n newParent.children = [];\n }\n newParent.children.push(concept);\n newParent.children.sort((a, b) => (a.sortOrder ?? 999) - (b.sortOrder ?? 999));\n }\n\n return true;\n }\n\n /**\n * Update a concept's properties\n */\n updateConcept(conceptId: string, updates: Partial<Omit<AddConceptOptions, 'id' | 'parentId'>>): boolean {\n const concept = this._findConcept(conceptId);\n if (!concept) {\n return false;\n }\n\n if (updates.label !== undefined) {\n // Unindex old values\n for (const value of Object.values(concept.prefLabels)) {\n delete this.collection.__values[value.id];\n }\n\n // Update labels - create plain objects that will be converted to StaticValue\n if (typeof updates.label === 'string') {\n const lang = getCurrentLanguage();\n const valueId = generateUuidv5(['value'], `${concept.id}/prefLabel/${updates.label}/${lang}`);\n const newValue = new StaticValue({ id: valueId, value: updates.label }, concept);\n concept.prefLabels = { [lang]: newValue };\n } else {\n concept.prefLabels = {};\n for (const [lang, value] of Object.entries(updates.label)) {\n const valueId = generateUuidv5(['value'], `${concept.id}/prefLabel/${value}/${lang}`);\n const newValue = new StaticValue({ id: valueId, value: value }, concept);\n concept.prefLabels[lang] = newValue;\n }\n }\n\n // Re-index new values\n for (const value of Object.values(concept.prefLabels)) {\n this.collection.__values[value.id] = value;\n }\n }\n\n if (updates.source !== undefined) {\n concept.source = updates.source;\n }\n\n if (updates.sortOrder !== undefined) {\n concept.sortOrder = updates.sortOrder;\n }\n\n if (updates.uri !== undefined) {\n // StaticConcept doesn't have uri field, but we can store in source\n concept.source = updates.uri;\n }\n\n return true;\n }\n\n /**\n * Get a concept by ID\n */\n getConcept(conceptId: string): StaticConcept | null {\n return this._findConcept(conceptId);\n }\n\n /**\n * Get all concept IDs in the collection (including nested)\n */\n getAllConceptIds(): string[] {\n return Object.keys(this.collection.__allConcepts);\n }\n\n /**\n * Get the path from root to a concept (list of concept IDs)\n */\n getConceptPath(conceptId: string): string[] | null {\n const path: string[] = [];\n\n const findPath = (concepts: StaticConcept[], targetId: string): boolean => {\n for (const concept of concepts) {\n if (concept.id === targetId) {\n path.push(concept.id);\n return true;\n }\n if (concept.children) {\n path.push(concept.id);\n if (findPath(concept.children, targetId)) {\n return true;\n }\n path.pop();\n }\n }\n return false;\n };\n\n if (findPath(Object.values(this.collection.concepts), conceptId)) {\n return path;\n }\n return null;\n }\n\n /**\n * Create a concept object from options\n */\n private _createConcept(options: Omit<AddConceptOptions, 'parentId'>): StaticConcept {\n const lang = getCurrentLanguage();\n let labelValue: string;\n\n if (typeof options.label === 'string') {\n labelValue = options.label;\n } else {\n labelValue = options.label[lang] || Object.values(options.label)[0];\n }\n\n // Generate ID if not provided\n const conceptId = options.id || generateUuidv5(\n ['concept'],\n `${this.collection.id}/${labelValue}`\n );\n\n // Create prefLabels as plain objects with id and value\n // StaticConcept constructor will convert them to StaticValue with proper __concept reference\n const prefLabels: { [lang: string]: { id: string; value: string } } = {};\n if (typeof options.label === 'string') {\n const valueId = generateUuidv5(['value'], `${conceptId}/prefLabel/${options.label}/${lang}`);\n prefLabels[lang] = { id: valueId, value: options.label };\n } else {\n for (const [l, v] of Object.entries(options.label)) {\n const valueId = generateUuidv5(['value'], `${conceptId}/prefLabel/${v}/${l}`);\n prefLabels[l] = { id: valueId, value: v };\n }\n }\n\n return new StaticConcept({\n id: conceptId,\n prefLabels: prefLabels as any,\n source: options.source || options.uri || null,\n sortOrder: options.sortOrder ?? null,\n children: null\n });\n }\n\n /**\n * Find a concept by ID in the entire tree\n */\n private _findConcept(conceptId: string): StaticConcept | null {\n return this.collection.__allConcepts[conceptId] || null;\n }\n\n /**\n * Index a concept and its children in __allConcepts and __values\n */\n private _indexConcept(concept: StaticConcept): void {\n this.collection.__allConcepts[concept.id] = concept;\n for (const value of Object.values(concept.prefLabels)) {\n this.collection.__values[value.id] = value;\n }\n if (concept.children) {\n for (const child of concept.children) {\n this._indexConcept(child);\n }\n }\n }\n\n /**\n * Remove a concept and its children from indexes\n */\n private _unindexConcept(concept: StaticConcept): void {\n delete this.collection.__allConcepts[concept.id];\n for (const value of Object.values(concept.prefLabels)) {\n delete this.collection.__values[value.id];\n }\n if (concept.children) {\n for (const child of concept.children) {\n this._unindexConcept(child);\n }\n }\n }\n\n /**\n * Remove a concept from a parent's children list\n */\n private _removeFromChildren(parent: StaticConcept, conceptId: string): boolean {\n if (!parent.children) {\n return false;\n }\n\n const index = parent.children.findIndex(c => c.id === conceptId);\n if (index !== -1) {\n const removed = parent.children[index];\n this._unindexConcept(removed);\n parent.children.splice(index, 1);\n if (parent.children.length === 0) {\n parent.children = null;\n }\n return true;\n }\n\n // Search deeper\n for (const child of parent.children) {\n if (this._removeFromChildren(child, conceptId)) {\n return true;\n }\n }\n\n return false;\n }\n}\n\n","/**\n * CSV Model Loader\n *\n * Thin TypeScript wrapper over the WASM `buildGraphFromModelCsvs` and\n * `validateModelCsvs` functions. Parses the 3-CSV format (graph.csv,\n * nodes.csv, collections.csv) and builds an Arches resource model graph\n * with SKOS collections.\n *\n * @module csvModelLoader\n */\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore — generated WASM bindings\nimport { buildGraphFromModelCsvs as wasmBuild, validateModelCsvs as wasmValidate, buildResourcesFromBusinessCsv as wasmBuildBusinessData } from '../pkg/alizarin';\n\nexport interface CsvModelDiagnostic {\n level: 'Error' | 'Warning';\n file: string;\n line: number | null;\n message: string;\n}\n\nexport interface CsvModelBuildResult {\n graph: any; // StaticGraph JSON\n collections: any[]; // SkosCollection JSON array\n}\n\n/**\n * Build a graph and collections from the 3-CSV model format.\n *\n * @param graphCsv - Contents of graph.csv\n * @param nodesCsv - Contents of nodes.csv\n * @param rdmNamespace - RDM namespace string (UUID or URL) for deterministic ID generation\n * @param collectionsCsv - Contents of collections.csv (optional)\n * @returns The built graph and collections\n * @throws Error with diagnostics if validation or build fails\n */\nexport function buildGraphFromModelCsvs(\n graphCsv: string,\n nodesCsv: string,\n rdmNamespace: string,\n collectionsCsv?: string,\n): CsvModelBuildResult {\n return wasmBuild(graphCsv, nodesCsv, collectionsCsv ?? null, rdmNamespace);\n}\n\n/**\n * Validate 3-CSV model files without building.\n *\n * @param graphCsv - Contents of graph.csv\n * @param nodesCsv - Contents of nodes.csv\n * @param collectionsCsv - Contents of collections.csv (optional)\n * @returns Array of diagnostics (errors and warnings)\n */\nexport function validateModelCsvs(\n graphCsv: string,\n nodesCsv: string,\n collectionsCsv?: string,\n): CsvModelDiagnostic[] {\n return wasmValidate(graphCsv, nodesCsv, collectionsCsv ?? null);\n}\n\nexport interface BusinessDataResult {\n business_data: {\n resources: any[];\n };\n}\n\n/**\n * Build resource instances from a business data CSV.\n *\n * Columns are node aliases (not UUIDs). Concept values are labels\n * resolved against the collections. ResourceIDs generate deterministic UUIDs.\n *\n * @param csvData - Business data CSV with ResourceID as first column\n * @param graph - Built graph JSON (from buildGraphFromModelCsvs)\n * @param collections - Built collections array (from buildGraphFromModelCsvs)\n * @param defaultLanguage - Default language code (default \"en\")\n * @param strictConcepts - Error on unresolved concept labels (default true)\n * @returns Business data wrapper with resources array\n */\nexport function buildResourcesFromBusinessCsv(\n csvData: string,\n graph: any,\n collections: any[],\n defaultLanguage?: string,\n strictConcepts?: boolean,\n): BusinessDataResult {\n return wasmBuildBusinessData(\n csvData,\n JSON.stringify(graph),\n JSON.stringify(collections),\n defaultLanguage ?? null,\n strictConcepts ?? null,\n );\n}\n","import { staticStore } from \"./staticStore.ts\"\nimport { PseudoList } from \"./pseudos.ts\"\nimport { UrlViewModel, DateViewModel, ResourceInstanceViewModel, DomainValueViewModel, ConceptValueViewModel, NonLocalizedStringViewModel, StringViewModel, SemanticViewModel, BooleanViewModel, NumberViewModel, GeoJSONViewModel } from './viewModels';\n\nclass Cleanable extends String {\n __clean: string | undefined\n}\n\nabstract class BaseRenderer {\n async render(asset: ResourceInstanceViewModel<any>) {\n if (!asset.$) {\n throw Error(\"Cannot render unloaded asset - do you want to await asset.retrieve()?\");\n }\n const root = await (await asset.$.getRootViewModel());\n return this.renderValue(root, 0);\n }\n\n abstract renderDomainValue(value: DomainValueViewModel, _depth: number): Promise<any>;\n abstract renderDate(value: DateViewModel, _depth: number): Promise<any>;\n abstract renderConceptValue(value: ConceptValueViewModel, _depth: number): Promise<any>;\n abstract renderResourceReference(value: ResourceInstanceViewModel<any>, _depth: number): Promise<any>;\n abstract renderSemantic(value: SemanticViewModel, depth: number): Promise<any>;\n abstract renderBlock(block: {[key: string]: string} | {[key: string]: string}[], depth: number): any;\n abstract renderArray(value: any[], depth: number): Promise<any>;\n abstract renderString(value: string | StringViewModel | NonLocalizedStringViewModel, _depth: number): Promise<any>;\n abstract renderBoolean(value: boolean | BooleanViewModel, _depth: number): Promise<any>;\n abstract renderNumber(value: number | NumberViewModel, _depth: number): Promise<any>;\n abstract renderUrl(value: UrlViewModel, _depth: number): Promise<any>;\n\n async renderValue(value: any, depth: number): Promise<any> {\n if (value === null) {\n return null;\n }\n let newValue;\n if (value instanceof Promise) {\n value = await value;\n }\n if (value instanceof DomainValueViewModel) {\n newValue = this.renderDomainValue(value, depth);\n } else if (value instanceof DateViewModel) {\n newValue = this.renderDate(value, depth);\n } else if (value instanceof ConceptValueViewModel) {\n newValue = this.renderConceptValue(value, depth);\n } else if (value instanceof ResourceInstanceViewModel) {\n newValue = this.renderResourceReference(value, depth);\n } else if (value instanceof SemanticViewModel) {\n newValue = this.renderSemantic(value, depth);\n } else if (value instanceof Array) {\n newValue = this.renderArray(value, depth);\n } else if (value instanceof StringViewModel || value instanceof NonLocalizedStringViewModel || typeof value === 'string') {\n newValue = this.renderString(value, depth);\n } else if (value instanceof BooleanViewModel) {\n newValue = this.renderBoolean(value, depth);\n } else if (value instanceof NumberViewModel) {\n newValue = this.renderNumber(value, depth);\n } else if (value instanceof GeoJSONViewModel) {\n newValue = this.renderBlock(await value.forJson(), depth);\n } else if (value instanceof UrlViewModel) {\n newValue = this.renderUrl(await value, depth);\n } else if (value instanceof String && typeof value?.forJson === 'function') {\n // Extension ViewModel that extends String (e.g., ReferenceValueViewModel)\n // Use toString() for display, not forJson() which returns raw data\n newValue = value.toString();\n } else if (typeof value?.getDisplay === 'function') {\n // Extension ViewModel with async display method\n newValue = await value.getDisplay();\n } else if (typeof value?.forJson === 'function') {\n // Custom ViewModel from extension - use forJson to get serializable data\n newValue = this.renderBlock(await value.forJson(), depth);\n } else if (value instanceof Object) {\n newValue = this.renderBlock(value, depth);\n } else {\n newValue = value;\n }\n return newValue;\n }\n}\n\nclass Renderer extends BaseRenderer {\n async renderDomainValue(value: DomainValueViewModel, _depth: number): Promise<any> {\n return value;\n }\n\n async renderString(value: string | StringViewModel | NonLocalizedStringViewModel, _depth: number): Promise<any> {\n return `${value}`;\n }\n\n async renderNumber(value: number | NumberViewModel, _depth: number): Promise<any> {\n return `${value}`;\n }\n\n async renderBoolean(value: boolean | BooleanViewModel, _depth: number): Promise<any> {\n return value.toString();\n }\n\n async renderDate(value: DateViewModel, _depth: number): Promise<any> {\n return value;\n }\n\n async renderConceptValue(value: ConceptValueViewModel, _depth: number): Promise<any> {\n return value;\n }\n\n async renderResourceReference(value: ResourceInstanceViewModel<any>, _depth: number): Promise<any> {\n return value;\n }\n\n async renderSemantic(value: SemanticViewModel, depth: number): Promise<any> {\n return this.renderBlock(await value.toObject(), depth);\n }\n\n async renderUrl(value: UrlViewModel, _depth: number): Promise<any> {\n return value;\n }\n\n renderBlock(block: {[key: string]: string} | {[key: string]: string}[], depth: number): any {\n const renderedBlock: {[key: string]: any} = {};\n const promises: Promise<void>[] = [];\n for (const [key, value] of Object.entries(block)) {\n promises.push(\n this.renderValue(value, depth + 1).then((val: any) => { renderedBlock[key] = val; })\n );\n }\n return Promise.all(promises).then(() => renderedBlock);\n }\n\n async renderArray(value: any, depth: number): Promise<any> {\n return Promise.all(value.map((val: any) => this.renderValue(val, depth + 1)));\n }\n\n}\n\nclass MarkdownRenderer extends Renderer {\n conceptValueToUrl: ((value: ConceptValueViewModel) => string) | undefined\n dateToText: ((value: DateViewModel) => string) | undefined\n domainValueToUrl: ((value: DomainValueViewModel) => string) | undefined\n resourceReferenceToUrl: ((value: ResourceInstanceViewModel<any>) => string) | undefined\n nodeToUrl: ((value: string) => string) | undefined\n\n constructor(callbacks: {\n conceptValueToUrl: ((value: ConceptValueViewModel) => string) | undefined,\n dateToText: ((value: DateViewModel) => string) | undefined,\n domainValueToUrl: ((value: DomainValueViewModel) => string) | undefined,\n resourceReferenceToUrl: ((value: ResourceInstanceViewModel<any>) => string) | undefined,\n nodeToUrl: ((value: string) => string) | undefined,\n }) {\n super();\n this.conceptValueToUrl = callbacks.conceptValueToUrl;\n this.dateToText = callbacks.dateToText;\n this.domainValueToUrl = callbacks.domainValueToUrl;\n this.resourceReferenceToUrl = callbacks.resourceReferenceToUrl;\n this.nodeToUrl = callbacks.nodeToUrl;\n }\n\n async renderUrl(value: UrlViewModel, _depth: number): Promise<any> {\n const text = `[${value}](${value})`;\n const wrapper = new Cleanable(text);\n wrapper.__clean = value.href();\n return wrapper;\n }\n\n override async renderDomainValue(domainValue: DomainValueViewModel, _: number): Promise<any> {\n const value = await domainValue.getValue();\n const url = this.domainValueToUrl ? await this.domainValueToUrl(domainValue): null;\n const text = url ? `[${value.toString()}](${url.trim()})` : value.toString();\n const wrapper = new Cleanable(`\n <span\n class='alizarin-domain-value' data-id='${value.id}'\n >\n ${text}\n </span>`.replace(/\\n/g, ' ').trim());\n wrapper.__clean = domainValue.toString();\n return wrapper;\n }\n\n override async renderDate(date: DateViewModel, _: number): Promise<any> {\n const value = await date;\n const text = this.dateToText ? await this.dateToText(value): value.toISOString();\n const wrapper = new Cleanable(`\n <time datetime='${text}'>\n ${text}\n </time>`.replace(/\\n/g, ' ').trim());\n wrapper.__clean = text;\n return wrapper;\n }\n\n override async renderConceptValue(conceptValue: ConceptValueViewModel, _: number): Promise<any> {\n const value = await conceptValue.getValue();\n const url = this.conceptValueToUrl ? await this.conceptValueToUrl(conceptValue): null;\n const text = url ? `[${value.value}](${url.trim()})` : value.value;\n const wrapper = new Cleanable(`\n <span\n class='alizarin-concept-value' data-id='${value.id}'\n data-concept-id='${value.__concept ? value.__concept.id : \"\"}'\n data-concept-ref='$${value.__concept ? value.__concept.source : \"\"}'\n >\n ${text}\n </span>`.replace(/\\n/g, ' ').trim());\n wrapper.__clean = conceptValue.toString();\n return wrapper;\n }\n\n override async renderResourceReference(rivm: ResourceInstanceViewModel<any>, _: number): Promise<any> {\n const value = await rivm.forJson(false);\n const url = this.resourceReferenceToUrl ? await this.resourceReferenceToUrl(rivm): null;\n let title = value.title || value.type || 'Resource';\n const text = url ? `[${title}](${url.trim()})` : title;\n const resourceMetadata = await staticStore.getMeta(value.id);\n if (resourceMetadata) {\n title = resourceMetadata.name;\n }\n const wrapper = new Cleanable(`\n <span\n class='alizarin-resource-instance alizarin-related-resource' data-id='${value.id}'\n data-graph-id='${value.graphId}'\n >\n ${text}\n </span>`.replace(/\\n/g, ' ').trim());\n wrapper.__clean = rivm.toString();\n return wrapper;\n }\n}\n\nclass FlatMarkdownRenderer extends MarkdownRenderer {\n override async renderSemantic(vm: SemanticViewModel, depth: number): Promise<any> {\n // Get child aliases and their node metadata\n const childAliases = vm.__parentWkri.$.model.getChildNodeAliases(vm.__node.nodeid);\n const nodes = Object.fromEntries(\n childAliases.map(alias => [alias, vm.__parentWkri.$.model.getNodeObjectFromAlias(alias)])\n );\n return super.renderSemantic(vm, depth).then(async block => {\n const text = [\n `* <span class='node-type'>${vm.__node.name}</span> &rarr;`,\n ...Object.entries(await block).map(([key, value]) => {\n const node = nodes[key];\n let nodeName = node.name;\n if (this.nodeToUrl) {\n nodeName = `[${node.name}](${this.nodeToUrl(node)})`;\n }\n if ((typeof value == 'string' || value instanceof String) && value.indexOf('\\n') != -1) {\n return ` * <span class='node-name'>${nodeName}</span> <span class='node-alias'>[*${node.alias}*]</span>:<span class='node-value'>\\n${value.split('\\n').map(x => ` ${x}`).join('\\n')}\\n </span>`;\n } else {\n return ` * <span class='node-name'>${nodeName}</span> <span class='node-alias'>[*${node.alias}*]</span>: <span class='node-value'>${value}</span>`;\n }\n }).join('\\n').split('\\n')\n ];\n if (text[1] == '') {\n text[0] += `<span class='node-empty'>&lt;empty&gt;</span>`;\n text.pop();\n }\n return text.map(line => ` ${line}`).join('\\n');\n });\n }\n\n override async renderArray(value: any, depth: number): Promise<any> {\n const rows = await super.renderArray(value, depth);\n if (value instanceof PseudoList || value.indexOf('\\n') != -1) {\n return rows.map((x: any) => `${x}`).join('\\n');\n } else {\n return rows.join(\", \");\n }\n }\n\n async renderString(value: string | StringViewModel | NonLocalizedStringViewModel, _depth: number): Promise<any> {\n if (value.indexOf('\\n') != -1) {\n value = '\\n ' + value.split('\\n').join('\\n ');\n }\n return value;\n }\n}\n\nexport { MarkdownRenderer, Cleanable, FlatMarkdownRenderer };\n","import * as client from \"./client\";\nimport * as interfaces from \"./interfaces\";\nimport { RDM, ResolveLabelsOptions, registerResolvableDatatype, unregisterResolvableDatatype } from \"./rdm\";\nimport { ResourceModelWrapper, createWKRM, getWKRMClass, graphManager, staticStore, GraphManager, GraphMutator, getWasmTimings } from \"./graphManager\";\nimport * as staticTypes from \"./static-types\";\nimport { CollectionMutator } from \"./collectionMutator\";\nimport { buildGraphFromModelCsvs, validateModelCsvs, buildResourcesFromBusinessCsv } from \"./csvModelLoader\";\nimport type { CsvModelDiagnostic, CsvModelBuildResult, BusinessDataResult } from \"./csvModelLoader\";\nimport * as utils from \"./utils\";\nimport * as viewModels from \"./viewModels\";\nimport * as renderers from \"./renderers\";\nimport * as nodeConfig from \"./nodeConfig\";\nimport { initWasm, setWasmURL, ensureWasmRdmCache, parseSkosXml, parseSkosXmlToCollection, collectionToSkosXml, collectionsToSkosXml, registerExtensionHandler } from \"./_wasm\";\nimport { setBackend, setNapiModule, getBackend, autoDetectBackend, createResourceRegistry } from \"./backend\";\nimport type { BackendType } from \"./backend\";\nimport { resetTimingStats, getTimingStats, logTimingStats } from \"./semantic\";\nimport * as tracing from \"./tracing\";\nimport { IStringKeyedObject } from \"./interfaces\";\n\n// Version injected at build time by Vite\ndeclare const __ALIZARIN_VERSION__: string;\nexport const version: string = __ALIZARIN_VERSION__;\n\n// Register alizarin JS timing getter for unified tracing\ntracing.registerAlizarinTimingGetter(getTimingStats);\n// Register detailed WASM timing getter\ntracing.registerWasmTimingGetter(getWasmTimings);\n\n// Initialize WASM module - deferred to allow consumers to call setWasmURL() first\n// Consumers should await wasmReady before using WASM features\nlet _wasmReadyResolve: () => void;\nconst wasmReady = new Promise<void>(resolve => { _wasmReadyResolve = resolve; });\n\n// Hook into initWasm so that wasmReady resolves on ANY successful call —\n// not just the auto-init. This is critical for consumers like alizarin-loader\n// that poison the auto-init URL and retry with a valid one: extensions\n// (@alizarin/clm, @alizarin/filelist) do wasmReady.then(...) to register\n// handlers, so wasmReady must resolve once WASM is actually available.\nconst _origInitWasm = initWasm;\nconst _wrappedInitWasm = async function() {\n await _origInitWasm();\n _wasmReadyResolve();\n};\n// Replace the export binding\nObject.defineProperty(_wrappedInitWasm, 'name', { value: 'initWasm' });\n\n// Auto-init after a microtask, giving consumers a chance to call setWasmURL() synchronously.\n// SILENT: initial auto-init failure is expected when URL hasn't been configured yet.\n// Consumers must call initWasm() explicitly if auto-init fails (e.g. after setWasmURL()).\nPromise.resolve().then(() => _wrappedInitWasm().catch((e) => {\n console.debug(\"[alizarin] Auto-init WASM deferred:\", e?.message || e);\n}));\n\nconst AlizarinModel = viewModels.ResourceInstanceViewModel;\nconst setCurrentLanguage = utils.setCurrentLanguage;\nconst getCurrentLanguage = utils.getCurrentLanguage;\nconst slugify = utils.slugify;\nexport type {\n IStringKeyedObject,\n ResolveLabelsOptions,\n CsvModelDiagnostic,\n CsvModelBuildResult,\n BusinessDataResult,\n};\nexport {\n AlizarinModel,\n client,\n graphManager,\n GraphManager,\n staticTypes,\n utils,\n slugify,\n viewModels,\n staticStore,\n RDM,\n registerResolvableDatatype,\n unregisterResolvableDatatype,\n renderers,\n interfaces,\n // WKRM factory (replaces direct WASM WKRM import)\n createWKRM,\n getWKRMClass,\n nodeConfig,\n ResourceModelWrapper,\n GraphMutator,\n setCurrentLanguage,\n getCurrentLanguage,\n _wrappedInitWasm as initWasm,\n setWasmURL,\n wasmReady,\n ensureWasmRdmCache,\n // Legacy timing (deprecated - use tracing instead)\n resetTimingStats,\n getTimingStats,\n logTimingStats,\n // New unified tracing\n tracing,\n // SKOS RDF/XML parsing and serialization\n parseSkosXml,\n parseSkosXmlToCollection,\n collectionToSkosXml,\n collectionsToSkosXml,\n // Collection mutator\n CollectionMutator,\n // CSV model loader\n buildGraphFromModelCsvs,\n validateModelCsvs,\n buildResourcesFromBusinessCsv,\n // Extension function\n registerExtensionHandler,\n // Backend selection (WASM vs NAPI)\n setBackend,\n setNapiModule,\n getBackend,\n autoDetectBackend,\n createResourceRegistry,\n};\n\nexport type { BackendType };\n"],"names":["URL","DEFAULT_LANGUAGE","uuidv5","getCurrentLanguage","setCurrentLanguage","slugify","PseudoValue","PseudoList","buildGraphFromModelCsvs","buildResourcesFromBusinessCsv","validateModelCsvs","wasmBuffer","init","uuidv4","resource","archesClient","value","val","ids","collection","str","child","t0","card","node","config","graph","wkrm","wasmBuild","wasmValidate","wasmBuildBusinessData","tracing.registerAlizarinTimingGetter","tracing.registerWasmTimingGetter","viewModels.ResourceInstanceViewModel","utils.setCurrentLanguage","utils.getCurrentLanguage","utils.slugify"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}