@babylonjs/loaders 9.26.2 → 9.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/glTF/2.0/Extensions/EXT_texture_avif.pure.js +1 -1
  2. package/glTF/2.0/Extensions/EXT_texture_avif.pure.js.map +1 -1
  3. package/glTF/2.0/Extensions/EXT_texture_webp.pure.js +1 -1
  4. package/glTF/2.0/Extensions/EXT_texture_webp.pure.js.map +1 -1
  5. package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.d.ts +33 -0
  6. package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js +166 -37
  7. package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js.map +1 -1
  8. package/glTF/2.0/Extensions/KHR_interactivity/index.d.ts +1 -0
  9. package/glTF/2.0/Extensions/KHR_interactivity/index.js +1 -0
  10. package/glTF/2.0/Extensions/KHR_interactivity/index.js.map +1 -1
  11. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphExporter.d.ts +243 -0
  12. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphExporter.js +2335 -0
  13. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphExporter.js.map +1 -0
  14. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.d.ts +82 -1
  15. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.js +180 -34
  16. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.js.map +1 -1
  17. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.d.ts +14 -2
  18. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js +220 -34
  19. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js.map +1 -1
  20. package/glTF/2.0/Extensions/KHR_interactivity/pure.d.ts +1 -0
  21. package/glTF/2.0/Extensions/KHR_interactivity/pure.js +1 -0
  22. package/glTF/2.0/Extensions/KHR_interactivity/pure.js.map +1 -1
  23. package/glTF/2.0/Extensions/KHR_interactivity.pure.d.ts +4 -0
  24. package/glTF/2.0/Extensions/KHR_interactivity.pure.js +6 -2
  25. package/glTF/2.0/Extensions/KHR_interactivity.pure.js.map +1 -1
  26. package/glTF/2.0/Extensions/KHR_texture_basisu.pure.js +1 -1
  27. package/glTF/2.0/Extensions/KHR_texture_basisu.pure.js.map +1 -1
  28. package/glTF/2.0/glTFLoader.pure.d.ts +2 -1
  29. package/glTF/2.0/glTFLoader.pure.js +41 -4
  30. package/glTF/2.0/glTFLoader.pure.js.map +1 -1
  31. package/glTF/2.0/glTFLoaderInterfaces.d.ts +9 -0
  32. package/glTF/2.0/glTFLoaderInterfaces.js.map +1 -1
  33. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"interactivityGraphModel.js","sourceRoot":"","sources":["../../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport {\n type IKHRInteractivity,\n type IKHRInteractivity_Declaration,\n type IKHRInteractivity_Graph,\n type IKHRInteractivity_Node,\n type IKHRInteractivity_Variable,\n} from \"babylonjs-gltf2interface\";\nimport {\n getMappingForDeclaration,\n getNoOpMappingForDeclaration,\n ParseDebugLogTemplate,\n type IGLTFToFlowGraphMapping,\n type IGLTFToFlowGraphMappingObject,\n} from \"./declarationMapper\";\nimport { FlowGraphTypes } from \"core/FlowGraph/flowGraphRichTypes\";\n\n/**\n * Ratified KHR_interactivity specification baseline used by this importer.\n */\nexport const KHR_INTERACTIVITY_SPECIFICATION_COMMIT = \"f798712c5685bc9223a628140fba707db8889300\";\n\n/**\n * Runtime representation of every ratified built-in KHR_interactivity type.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const gltfTypeToBabylonType: {\n [key: string]: { length: number; flowGraphType: FlowGraphTypes; elementType: \"number\" | \"boolean\" | \"string\" | \"any\" };\n} = {\n float: { length: 1, flowGraphType: FlowGraphTypes.Number, elementType: \"number\" },\n bool: { length: 1, flowGraphType: FlowGraphTypes.Boolean, elementType: \"boolean\" },\n float2: { length: 2, flowGraphType: FlowGraphTypes.Vector2, elementType: \"number\" },\n float3: { length: 3, flowGraphType: FlowGraphTypes.Vector3, elementType: \"number\" },\n float4: { length: 4, flowGraphType: FlowGraphTypes.Vector4, elementType: \"number\" },\n float4x4: { length: 16, flowGraphType: FlowGraphTypes.Matrix, elementType: \"number\" },\n float2x2: { length: 4, flowGraphType: FlowGraphTypes.Matrix2D, elementType: \"number\" },\n float3x3: { length: 9, flowGraphType: FlowGraphTypes.Matrix3D, elementType: \"number\" },\n int: { length: 1, flowGraphType: FlowGraphTypes.Integer, elementType: \"number\" },\n ref: { length: 1, flowGraphType: FlowGraphTypes.String, elementType: \"string\" },\n custom: { length: 0, flowGraphType: FlowGraphTypes.Any, elementType: \"any\" },\n};\n\n/**\n * Classification of a KHR_interactivity declaration.\n */\nexport type KHRInteractivityDeclarationSupport = \"core\" | \"extension\" | \"unsupported-extension\" | \"unknown-core\";\n\n/**\n * A structured KHR_interactivity import diagnostic.\n */\nexport interface IKHRInteractivityDiagnostic {\n /** JSON pointer identifying the source location. */\n path: string;\n /** Human-readable diagnostic text. */\n message: string;\n /** Diagnostic severity. */\n severity: \"error\" | \"warning\";\n}\n\n/**\n * Canonical declaration information retained during import.\n */\nexport interface IKHRInteractivityDeclarationModel {\n /** Declaration index in the source graph. */\n index: number;\n /** Full operation name, including the defining extension when present. */\n operation: string;\n /** Whether Babylon can execute the declaration. */\n support: KHRInteractivityDeclarationSupport;\n /** Exact source declaration. */\n source: IKHRInteractivity_Declaration;\n}\n\n/**\n * Canonical graph information retained during import.\n */\nexport interface IKHRInteractivityGraphModel {\n /** Graph index in the root extension. */\n index: number;\n /** Stable source path. */\n path: string;\n /** Human-readable graph name. */\n name: string;\n /** Exact source graph, including extension and extras payloads. */\n source: IKHRInteractivity_Graph;\n /** Executable graph with specification defaults and fallbacks applied. */\n effectiveSource: IKHRInteractivity_Graph;\n /** Canonical declarations in source order. */\n declarations: IKHRInteractivityDeclarationModel[];\n /** Validation diagnostics for this graph. */\n diagnostics: IKHRInteractivityDiagnostic[];\n /** Whether this graph is valid and can be lowered to FlowGraph. */\n valid: boolean;\n}\n\n/**\n * Lossless canonical representation of a KHR_interactivity root extension.\n */\nexport interface IKHRInteractivityDocument {\n /** Ratified specification revision used for validation. */\n specificationCommit: string;\n /** Exact source extension, including unknown extensions and extras. */\n source: IKHRInteractivity;\n /** Default graph index, or -1 when the source selection is invalid. */\n defaultGraphIndex: number;\n /** Canonical graph models in source order. */\n graphs: IKHRInteractivityGraphModel[];\n /** Root-level validation diagnostics. */\n diagnostics: IKHRInteractivityDiagnostic[];\n}\n\nfunction _cloneJson<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map((entry) => _cloneJson(entry)) as T;\n }\n if (value !== null && typeof value === \"object\") {\n const clone: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n Object.defineProperty(clone, key, {\n configurable: true,\n enumerable: true,\n value: _cloneJson(entry),\n writable: true,\n });\n }\n return clone as T;\n }\n return value;\n}\n\n/**\n * Creates a detached JSON copy of a KHR_interactivity graph.\n * @param graph source graph\n * @returns a lossless JSON copy\n */\nexport function CloneKHRInteractivityGraph(graph: IKHRInteractivity_Graph): IKHRInteractivity_Graph {\n return _cloneJson(graph);\n}\n\nfunction _isValidIndex(value: unknown, length: number): value is number {\n return typeof value === \"number\" && Number.isInteger(value) && value >= 0 && value < length;\n}\n\nfunction _addError(diagnostics: IKHRInteractivityDiagnostic[], path: string, message: string): void {\n diagnostics.push({ path, message, severity: \"error\" });\n}\n\nfunction _addWarning(diagnostics: IKHRInteractivityDiagnostic[], path: string, message: string): void {\n diagnostics.push({ path, message, severity: \"warning\" });\n}\n\nfunction _isValidJsonPointer(value: string): boolean {\n return value === \"\" || /^(?:\\/(?:[^~]|~[01])*)*$/.test(value);\n}\n\nfunction _matchesOutputSocket(\n mapping: { [name: string]: IGLTFToFlowGraphMappingObject } | undefined,\n socket: string,\n declaration: IKHRInteractivityDeclarationModel,\n node: IKHRInteractivity_Node,\n graph: IKHRInteractivity_Graph,\n defaultSocket?: string\n): boolean {\n if (mapping && Object.prototype.hasOwnProperty.call(mapping, socket)) {\n return true;\n }\n if (socket === defaultSocket && mapping && Object.prototype.hasOwnProperty.call(mapping, defaultSocket)) {\n return true;\n }\n if (!Object.keys(mapping ?? {}).some((name) => name.startsWith(\"[\") && name.endsWith(\"]\"))) {\n return false;\n }\n if (declaration.operation === \"event/receive\") {\n const eventIndex = node.configuration?.event?.value?.[0];\n return typeof eventIndex === \"number\" && Object.prototype.hasOwnProperty.call(graph.events?.[eventIndex]?.values ?? {}, socket);\n }\n return true;\n}\n\nfunction _validateTypeIndex(typeIndex: unknown, graph: IKHRInteractivity_Graph, diagnostics: IKHRInteractivityDiagnostic[], path: string): typeIndex is number {\n if (!_isValidIndex(typeIndex, graph.types?.length ?? 0)) {\n _addError(diagnostics, path, `Type index ${String(typeIndex)} is out of range.`);\n return false;\n }\n return true;\n}\n\nfunction _validateValue(value: IKHRInteractivity_Variable, graph: IKHRInteractivity_Graph, diagnostics: IKHRInteractivityDiagnostic[], path: string): void {\n if (!_validateTypeIndex(value.type, graph, diagnostics, `${path}/type`)) {\n return;\n }\n if (value.value === undefined) {\n return;\n }\n const type = graph.types![value.type];\n const runtimeType = gltfTypeToBabylonType[type.signature];\n if (runtimeType && type.signature !== \"custom\" && value.value.length !== runtimeType.length) {\n _addError(diagnostics, `${path}/value`, `Expected ${runtimeType.length} value component(s) for type \"${type.signature}\", received ${value.value.length}.`);\n }\n for (let componentIndex = 0; componentIndex < value.value.length; componentIndex++) {\n const component = value.value[componentIndex];\n let valid = true;\n switch (type.signature) {\n case \"bool\":\n valid = typeof component === \"boolean\";\n break;\n case \"int\":\n valid = typeof component === \"number\" && Number.isInteger(component) && component >= -2147483648 && component <= 2147483647;\n break;\n case \"float\":\n case \"float2\":\n case \"float3\":\n case \"float4\":\n case \"float2x2\":\n case \"float3x3\":\n case \"float4x4\":\n valid = typeof component === \"number\" && Number.isFinite(component);\n break;\n case \"ref\":\n valid = typeof component === \"string\" && _isValidJsonPointer(component);\n break;\n default:\n break;\n }\n if (!valid) {\n _addError(diagnostics, `${path}/value/${componentIndex}`, `Value component is invalid for type \"${type.signature}\".`);\n }\n }\n}\n\nfunction _getDeclarationMapping(\n declaration: IKHRInteractivity_Declaration,\n graph: IKHRInteractivity_Graph,\n supportedExtensions?: ReadonlySet<string>\n): {\n mapping: IGLTFToFlowGraphMapping | undefined;\n support: KHRInteractivityDeclarationSupport;\n} {\n const extensionEnabled = !declaration.extension || !supportedExtensions || supportedExtensions.has(declaration.extension);\n const mapping = extensionEnabled ? getMappingForDeclaration(declaration, false) : undefined;\n if (mapping) {\n if (declaration.extension && mapping.declarationSchema && !_isCompatibleExtensionDeclaration(declaration, graph, mapping.declarationSchema)) {\n return { mapping: undefined, support: \"unsupported-extension\" };\n }\n return { mapping, support: declaration.extension ? \"extension\" : \"core\" };\n }\n\n return {\n mapping: undefined,\n support: declaration.extension ? \"unsupported-extension\" : \"unknown-core\",\n };\n}\n\nfunction _isCompatibleExtensionDeclaration(\n declaration: IKHRInteractivity_Declaration,\n graph: IKHRInteractivity_Graph,\n schema: NonNullable<IGLTFToFlowGraphMapping[\"declarationSchema\"]>\n): boolean {\n const matches = (actual: typeof declaration.inputValueSockets, expected: Record<string, string>): boolean => {\n const actualKeys = Object.keys(actual ?? {}).sort();\n const expectedKeys = Object.keys(expected).sort();\n if (actualKeys.length !== expectedKeys.length || actualKeys.some((key, index) => key !== expectedKeys[index])) {\n return false;\n }\n return actualKeys.every((key) => graph.types?.[actual![key].type]?.signature === expected[key]);\n };\n return matches(declaration.inputValueSockets, schema.inputValueSockets) && matches(declaration.outputValueSockets, schema.outputValueSockets);\n}\n\nfunction _validateConfigurationValue(value: unknown[] | undefined, type: IGLTFToFlowGraphMappingObject[\"configurationType\"]): boolean {\n if (!value) {\n return false;\n }\n const isInt = (entry: unknown) => typeof entry === \"number\" && Number.isInteger(entry) && entry >= -2147483648 && entry <= 2147483647;\n switch (type) {\n case \"bool\":\n return value.length === 1 && typeof value[0] === \"boolean\";\n case \"int\":\n return value.length === 1 && isInt(value[0]);\n case \"int[]\":\n return value.every(isInt);\n case \"string\":\n return value.length === 1 && typeof value[0] === \"string\";\n default:\n return value.length > 0;\n }\n}\n\nfunction _getIndexedArrayLength(graph: IKHRInteractivity_Graph, source: IGLTFToFlowGraphMappingObject[\"indexSource\"], assetNodeCount?: number): number {\n switch (source) {\n case \"types\":\n return graph.types?.length ?? 0;\n case \"variables\":\n return graph.variables?.length ?? 0;\n case \"events\":\n return graph.events?.length ?? 0;\n case \"nodes\":\n return graph.nodes?.length ?? 0;\n case \"assetNodes\":\n return assetNodeCount ?? 0;\n default:\n return 0;\n }\n}\n\nfunction _isEffectiveConfigurationValue(\n configuration: { value?: unknown[] } | undefined,\n property: IGLTFToFlowGraphMappingObject,\n graph: IKHRInteractivity_Graph,\n assetNodeCount?: number\n): boolean {\n if (!configuration || !_validateConfigurationValue(configuration.value, property.configurationType) || !configuration.value) {\n return false;\n }\n if (property.minItems !== undefined && configuration.value.length < property.minItems) {\n return false;\n }\n if (property.minimum !== undefined && configuration.value.some((value) => typeof value !== \"number\" || value < property.minimum!)) {\n return false;\n }\n if (property.maximum !== undefined && configuration.value.some((value) => typeof value !== \"number\" || value > property.maximum!)) {\n return false;\n }\n if (property.indexSource) {\n const length = _getIndexedArrayLength(graph, property.indexSource, assetNodeCount);\n if (configuration.value.some((value) => !_isValidIndex(value, length))) {\n return false;\n }\n }\n if (property.allowedSignatures) {\n const typeIndex = configuration.value[0];\n const signature = typeof typeIndex === \"number\" ? graph.types?.[typeIndex]?.signature : undefined;\n if (!signature || !property.allowedSignatures.includes(signature)) {\n return false;\n }\n }\n if (property.debugLogTemplate && !ParseDebugLogTemplate(configuration.value[0] as string).valid) {\n return false;\n }\n return true;\n}\n\nfunction _getAllowedDynamicFlowOutputSockets(\n node: IKHRInteractivity_Node,\n mapping: IGLTFToFlowGraphMapping,\n graph: IKHRInteractivity_Graph,\n assetNodeCount?: number\n): ReadonlySet<string> | undefined {\n for (const [key, property] of Object.entries(mapping.configuration ?? {})) {\n if (!property.generatesOutputFlowSockets) {\n continue;\n }\n const configured = node.configuration?.[key];\n const values = _isEffectiveConfigurationValue(configured, property, graph, assetNodeCount) ? configured!.value : property.defaultValue;\n return new Set(Array.isArray(values) ? values.map(String) : []);\n }\n return undefined;\n}\n\nfunction _matchesFlowOutputSocket(mapping: IGLTFToFlowGraphMapping, socket: string, allowedDynamicSockets: ReadonlySet<string> | undefined): boolean {\n const flowMappings = mapping.outputs?.flows;\n if (flowMappings && Object.prototype.hasOwnProperty.call(flowMappings, socket)) {\n return true;\n }\n const hasWildcard = Object.keys(flowMappings ?? {}).some((name) => name.startsWith(\"[\") && name.endsWith(\"]\"));\n return !hasWildcard || !allowedDynamicSockets || allowedDynamicSockets.has(socket);\n}\n\n/**\n * Creates the executable graph view with all ratified configuration defaults and fallback rules\n * applied without modifying the lossless source graph.\n * @param graph source graph\n * @param declarations canonical declarations\n * @param assetNodeCount number of glTF nodes in the containing asset\n * @returns normalized executable graph\n */\nexport function CreateEffectiveKHRInteractivityGraph(\n graph: IKHRInteractivity_Graph,\n declarations: readonly IKHRInteractivityDeclarationModel[],\n assetNodeCount?: number\n): IKHRInteractivity_Graph {\n const effective = CloneKHRInteractivityGraph(graph);\n for (let nodeIndex = 0; nodeIndex < (effective.nodes?.length ?? 0); nodeIndex++) {\n const node = effective.nodes![nodeIndex];\n const declaration = declarations[node.declaration];\n if (!declaration || declaration.support === \"unknown-core\" || declaration.support === \"unsupported-extension\") {\n continue;\n }\n const mapping = getMappingForDeclaration(declaration.source, false);\n if (!mapping?.configuration) {\n continue;\n }\n const groupedValidity = new Map<string, boolean>();\n for (const [key, property] of Object.entries(mapping.configuration)) {\n if (property.configurationGroup) {\n const valid = _isEffectiveConfigurationValue(node.configuration?.[key], property, effective, assetNodeCount);\n groupedValidity.set(property.configurationGroup, (groupedValidity.get(property.configurationGroup) ?? true) && valid);\n }\n }\n for (const [key, property] of Object.entries(mapping.configuration)) {\n const valid =\n (!property.configurationGroup || groupedValidity.get(property.configurationGroup) === true) &&\n _isEffectiveConfigurationValue(node.configuration?.[key], property, effective, assetNodeCount);\n if (!valid && property.defaultValue !== undefined) {\n node.configuration ??= {};\n node.configuration[key] = {\n value: Array.isArray(property.defaultValue) ? _cloneJson(property.defaultValue) : [property.defaultValue],\n };\n } else if (valid && property.uniqueValues && node.configuration?.[key]?.value) {\n node.configuration[key].value = Array.from(new Set(node.configuration[key].value));\n }\n }\n }\n return effective;\n}\n\nfunction _getPointerTemplateSockets(pointer: string): { name: string; signature: \"int\" | \"ref\" }[] {\n const sockets: { name: string; signature: \"int\" | \"ref\" }[] = [];\n for (const segment of pointer.split(\"/\")) {\n const signature = segment.startsWith(\"[\") && !segment.startsWith(\"[[\") ? \"int\" : segment.startsWith(\"{\") && !segment.startsWith(\"{{\") ? \"ref\" : undefined;\n if (signature) {\n const name = segment\n .substring(1, segment.length - 1)\n .replace(/~1/g, \"/\")\n .replace(/~0/g, \"~\");\n sockets.push({ name, signature });\n }\n }\n return sockets;\n}\n\nfunction _resolveValueTypeIndex(\n value: IKHRInteractivity_Variable | { node: number; socket?: string; type?: number },\n graph: IKHRInteractivity_Graph,\n declarations: readonly IKHRInteractivityDeclarationModel[],\n visited: Set<string> = new Set()\n): number | undefined {\n if (\"node\" in value) {\n return _resolveOutputTypeIndex(value.node, value.socket ?? \"value\", graph, declarations, visited);\n }\n return value.type;\n}\n\nfunction _resolveOutputTypeIndex(\n nodeIndex: number,\n socket: string,\n graph: IKHRInteractivity_Graph,\n declarations: readonly IKHRInteractivityDeclarationModel[],\n visited: Set<string> = new Set()\n): number | undefined {\n const key = `${nodeIndex}:${socket}`;\n if (visited.has(key)) {\n return undefined;\n }\n visited.add(key);\n if (!_isValidIndex(nodeIndex, graph.nodes?.length ?? 0)) {\n return undefined;\n }\n const sourceNode = graph.nodes![nodeIndex];\n if (!_isValidIndex(sourceNode.declaration, declarations.length)) {\n return undefined;\n }\n const declaration = declarations[sourceNode.declaration];\n const declaredType = declaration.source.outputValueSockets?.[socket]?.type;\n if (declaredType !== undefined) {\n return declaredType;\n }\n const booleanType = () => graph.types?.findIndex((type) => type.signature === \"bool\");\n if (socket === \"isValid\") {\n return booleanType();\n }\n if (declaration.operation === \"pointer/get\" && socket === \"value\") {\n const configuredType = sourceNode.configuration?.type?.value?.[0];\n return typeof configuredType === \"number\" ? configuredType : undefined;\n }\n if (declaration.operation === \"variable/get\" && socket === \"value\") {\n const variableIndex = sourceNode.configuration?.variable?.value?.[0];\n return typeof variableIndex === \"number\" ? graph.variables?.[variableIndex]?.type : undefined;\n }\n if (declaration.operation === \"math/switch\" && socket === \"value\") {\n const defaultInput = sourceNode.values?.default;\n return defaultInput ? _resolveValueTypeIndex(defaultInput, graph, declarations, visited) : undefined;\n }\n if (declaration.operation === \"event/receive\" && socket !== \"event\") {\n const eventIndex = sourceNode.configuration?.event?.value?.[0];\n return typeof eventIndex === \"number\" ? graph.events?.[eventIndex]?.values?.[socket]?.type : undefined;\n }\n const fixedSignature = _getFixedOutputSignature(declaration.operation, socket);\n if (fixedSignature) {\n return graph.types?.findIndex((type) => type.signature === fixedSignature);\n }\n const mapping = getMappingForDeclaration(declaration.source, false);\n const outputMapping = mapping?.outputs?.values?.[socket];\n const mappedType = outputMapping?.gltfType;\n const signature = mappedType === \"number\" ? \"float\" : mappedType === \"boolean\" ? \"bool\" : mappedType;\n if (signature && signature in gltfTypeToBabylonType) {\n return graph.types?.findIndex((type) => type.signature === signature);\n }\n const typeSource = outputMapping?.typeSourceInput ? sourceNode.values?.[outputMapping.typeSourceInput] : undefined;\n return typeSource ? _resolveValueTypeIndex(typeSource, graph, declarations, visited) : undefined;\n}\n\nfunction _getFixedOutputSignature(operation: string, socket: string): keyof typeof gltfTypeToBabylonType | undefined {\n if (socket !== \"value\") {\n if (\n (operation === \"math/rgbToOkLCh\" && [\"l\", \"c\", \"h\"].includes(socket)) ||\n (operation === \"math/rgbFromOkLCh\" && [\"r\", \"g\", \"b\"].includes(socket)) ||\n operation.startsWith(\"math/extract\")\n ) {\n return \"float\";\n }\n if (operation === \"math/matDecompose\") {\n return socket === \"rotation\" ? \"float4\" : socket === \"translation\" || socket === \"scale\" ? \"float3\" : undefined;\n }\n if (operation === \"math/quatToAxisAngle\") {\n return socket === \"axis\" ? \"float3\" : socket === \"angle\" ? \"float\" : undefined;\n }\n if ((operation === \"flow/doN\" && socket === \"currentCount\") || (operation === \"flow/for\" && socket === \"index\")) {\n return \"int\";\n }\n if (operation === \"flow/setDelay\" && socket === \"lastDelay\") {\n return \"ref\";\n }\n if (operation === \"flow/throttle\" && socket === \"lastRemainingTime\") {\n return \"float\";\n }\n if ((operation === \"event/onStart\" || operation === \"event/onTick\" || operation === \"event/receive\") && socket === \"event\") {\n return \"ref\";\n }\n if (operation === \"event/onTick\" && socket === \"timeSinceLastTick\") {\n return \"float\";\n }\n if (operation === \"event/onTick\" && socket === \"timeSinceStart\") {\n return \"float\";\n }\n return undefined;\n }\n if ([\"math/E\", \"math/Pi\", \"math/Tau\", \"math/Inf\", \"math/NaN\", \"math/random\", \"math/length\", \"math/dot\", \"math/determinant\", \"math/quatAngleBetween\"].includes(operation)) {\n return \"float\";\n }\n if ([\"math/eq\", \"ref/eq\", \"math/lt\", \"math/le\", \"math/gt\", \"math/ge\", \"math/isNaN\", \"math/isInf\", \"type/intToBool\", \"type/floatToBool\"].includes(operation)) {\n return \"bool\";\n }\n if ([\"math/clz\", \"math/ctz\", \"math/popcnt\", \"type/boolToInt\", \"type/floatToInt\"].includes(operation)) {\n return \"int\";\n }\n if ([\"type/boolToFloat\", \"type/intToFloat\"].includes(operation)) {\n return \"float\";\n }\n return undefined;\n}\n\nfunction _validateNode(\n node: IKHRInteractivity_Node,\n nodeIndex: number,\n graph: IKHRInteractivity_Graph,\n declarations: IKHRInteractivityDeclarationModel[],\n diagnostics: IKHRInteractivityDiagnostic[],\n graphPath: string,\n assetNodeCount?: number\n): void {\n const path = `${graphPath}/nodes/${nodeIndex}`;\n if (!_isValidIndex(node.declaration, declarations.length)) {\n _addError(diagnostics, `${path}/declaration`, `Declaration index ${String(node.declaration)} is out of range.`);\n return;\n }\n\n const declarationModel = declarations[node.declaration];\n const mapping =\n declarationModel.support === \"unsupported-extension\" ? getNoOpMappingForDeclaration(declarationModel.source) : getMappingForDeclaration(declarationModel.source, false);\n if (declarationModel.support === \"unknown-core\" || !mapping) {\n return;\n }\n\n const reportConfigurationIssue = (property: IGLTFToFlowGraphMappingObject, issuePath: string, message: string): void => {\n if (property.invalidUsesDefault || property.defaultValue !== undefined) {\n _addWarning(diagnostics, issuePath, `${message} The default configuration will be used.`);\n } else {\n _addError(diagnostics, issuePath, message);\n }\n };\n for (const [key, configuration] of Object.entries(node.configuration ?? {})) {\n if (configuration.value && configuration.value.length === 0) {\n _addError(diagnostics, `${path}/configuration/${key}/value`, \"Configuration value arrays must contain at least one item when present.\");\n }\n }\n for (const [key, property] of Object.entries(mapping.configuration ?? {})) {\n const configuration = node.configuration?.[key];\n const isConfigurationValid = !!configuration && _validateConfigurationValue(configuration.value, property.configurationType);\n if (!configuration && property.required) {\n _addError(diagnostics, `${path}/configuration/${key}`, `Required configuration \"${key}\" is missing.`);\n } else if (configuration && !isConfigurationValid) {\n reportConfigurationIssue(property, `${path}/configuration/${key}`, `Configuration \"${key}\" is invalid.`);\n }\n if (isConfigurationValid && configuration.value && property.minItems !== undefined && configuration.value.length < property.minItems) {\n _addError(diagnostics, `${path}/configuration/${key}/value`, `Configuration \"${key}\" requires at least ${property.minItems} value(s).`);\n }\n if (isConfigurationValid && configuration.value && property.indexSource) {\n const length = _getIndexedArrayLength(graph, property.indexSource, assetNodeCount);\n for (let index = 0; index < configuration.value.length; index++) {\n if (!_isValidIndex(configuration.value[index], length)) {\n reportConfigurationIssue(property, `${path}/configuration/${key}/value/${index}`, `Index is out of range for graph ${property.indexSource}.`);\n }\n }\n }\n if (isConfigurationValid && configuration.value && property.allowedSignatures) {\n const typeIndex = configuration.value[0];\n const signature = typeof typeIndex === \"number\" ? graph.types?.[typeIndex]?.signature : undefined;\n if (!signature || !property.allowedSignatures.includes(signature)) {\n reportConfigurationIssue(property, `${path}/configuration/${key}/value/0`, `Type \"${String(signature)}\" is not supported by this operation.`);\n }\n }\n if (isConfigurationValid && configuration.value && property.debugLogTemplate && !ParseDebugLogTemplate(configuration.value[0] as string).valid) {\n reportConfigurationIssue(property, `${path}/configuration/${key}/value/0`, `Configuration \"${key}\" is not a valid debug message template.`);\n }\n if (isConfigurationValid && configuration.value && (property.minimum !== undefined || property.maximum !== undefined)) {\n const numericValue = configuration.value[0] as number;\n if ((property.minimum !== undefined && numericValue < property.minimum) || (property.maximum !== undefined && numericValue > property.maximum)) {\n reportConfigurationIssue(\n property,\n `${path}/configuration/${key}/value/0`,\n `Configuration \"${key}\" must be between ${String(property.minimum)} and ${String(property.maximum)}.`\n );\n }\n }\n if (isConfigurationValid && configuration.value && property.generatesInputValueSockets) {\n for (const configuredIndex of configuration.value) {\n if (typeof configuredIndex !== \"number\" || !_isValidIndex(configuredIndex, graph.variables?.length ?? 0)) {\n continue;\n }\n const socket = node.values?.[String(configuredIndex)];\n if (!socket) {\n _addError(diagnostics, `${path}/values/${configuredIndex}`, `Required configured input value socket \"${configuredIndex}\" is missing.`);\n } else if (_resolveValueTypeIndex(socket, graph, declarations) !== graph.variables![configuredIndex].type) {\n _addError(diagnostics, `${path}/values/${configuredIndex}/type`, `Configured input value socket \"${configuredIndex}\" has the wrong type.`);\n }\n }\n }\n if (isConfigurationValid && configuration.value && property.generatesCaseInputValueSockets) {\n const defaultType = node.values?.default ? _resolveValueTypeIndex(node.values.default, graph, declarations) : undefined;\n for (const caseValue of configuration.value) {\n const socket = node.values?.[String(caseValue)];\n if (!socket) {\n _addError(diagnostics, `${path}/values/${caseValue}`, `Required case input value socket \"${caseValue}\" is missing.`);\n } else if (defaultType !== undefined && _resolveValueTypeIndex(socket, graph, declarations) !== defaultType) {\n _addError(diagnostics, `${path}/values/${caseValue}/type`, `Case input value socket \"${caseValue}\" must match the default socket type.`);\n }\n }\n }\n if (isConfigurationValid && configuration.value && property.pointerTemplate && typeof configuration.value[0] === \"string\") {\n for (const socketDefinition of _getPointerTemplateSockets(configuration.value[0])) {\n const socket = node.values?.[socketDefinition.name];\n const expectedType = graph.types?.findIndex((type) => type.signature === socketDefinition.signature) ?? -1;\n if (!socket) {\n _addError(diagnostics, `${path}/values/${socketDefinition.name}`, `Required pointer template input \"${socketDefinition.name}\" is missing.`);\n } else if (expectedType < 0 || _resolveValueTypeIndex(socket, graph, declarations) !== expectedType) {\n _addError(\n diagnostics,\n `${path}/values/${socketDefinition.name}/type`,\n `Pointer template input \"${socketDefinition.name}\" must have type \"${socketDefinition.signature}\".`\n );\n }\n }\n }\n }\n\n if (declarationModel.operation === \"debug/log\") {\n const severityProperty = mapping.configuration?.severity;\n const messageProperty = mapping.configuration?.message;\n const severityValid = !!severityProperty && _isEffectiveConfigurationValue(node.configuration?.severity, severityProperty, graph, assetNodeCount);\n const messageValid = !!messageProperty && _isEffectiveConfigurationValue(node.configuration?.message, messageProperty, graph, assetNodeCount);\n const message = severityValid && messageValid ? (node.configuration!.message.value![0] as string) : \"\";\n for (const socket of ParseDebugLogTemplate(message).sockets) {\n if (!node.values?.[socket]) {\n _addError(diagnostics, `${path}/values/${socket}`, `Required debug message template input \"${socket}\" is missing.`);\n }\n }\n }\n\n for (const [key, property] of Object.entries(mapping.inputs?.values ?? {})) {\n if (!key.startsWith(\"[\") && !node.values?.[key]) {\n _addError(diagnostics, `${path}/values/${key}`, `Required input value socket \"${key}\" is missing.`);\n }\n if (declarationModel.operation === \"event/send\") {\n const eventIndex = node.configuration?.event?.value?.[0];\n const event = typeof eventIndex === \"number\" ? graph.events?.[eventIndex] : undefined;\n for (const [socket, eventValue] of Object.entries(event?.values ?? {})) {\n const source = node.values?.[socket];\n if (!source) {\n _addError(diagnostics, `${path}/values/${socket}`, `Required custom event input value socket \"${socket}\" is missing.`);\n } else if (_resolveValueTypeIndex(source, graph, declarations) !== eventValue.type) {\n _addError(diagnostics, `${path}/values/${socket}/type`, `Custom event input value socket \"${socket}\" has the wrong type.`);\n }\n }\n }\n const expectedSignature = property.gltfType === \"number\" ? \"float\" : property.gltfType === \"boolean\" ? \"bool\" : property.gltfType;\n const source = node.values?.[key];\n if (source && expectedSignature && expectedSignature in gltfTypeToBabylonType) {\n const typeIndex = _resolveValueTypeIndex(source, graph, declarations);\n if (typeIndex !== undefined && graph.types?.[typeIndex]?.signature !== expectedSignature) {\n _addError(diagnostics, `${path}/values/${key}/type`, `Input value socket \"${key}\" must have type \"${expectedSignature}\".`);\n }\n }\n }\n if (mapping.validation) {\n try {\n const validationNode = _cloneJson(node);\n for (const value of Object.values(validationNode.values ?? {})) {\n if (value.type === undefined) {\n value.type = _resolveValueTypeIndex(value, graph, declarations);\n }\n }\n const result = mapping.validation(validationNode, graph);\n if (!result.valid) {\n _addError(diagnostics, path, result.error ?? `Operation \"${declarationModel.operation}\" is invalid.`);\n }\n } catch (error) {\n _addError(diagnostics, path, (error as Error).message);\n }\n }\n for (const [key, value] of Object.entries(node.values ?? {})) {\n if (declarationModel.support === \"unsupported-extension\" && !declarationModel.source.inputValueSockets?.[key]) {\n _addError(diagnostics, `${path}/values/${key}`, `Input value socket \"${key}\" is not defined by operation \"${declarationModel.operation}\".`);\n }\n if (\"node\" in value) {\n if (\"value\" in value) {\n _addError(diagnostics, `${path}/values/${key}`, \"An input value socket cannot define both inline and node sources.\");\n }\n if (!_isValidIndex(value.node, graph.nodes?.length ?? 0)) {\n _addError(diagnostics, `${path}/values/${key}/node`, `Node index ${String(value.node)} is out of range.`);\n continue;\n }\n if (value.node >= nodeIndex) {\n _addError(diagnostics, `${path}/values/${key}/node`, \"Value connections must reference an earlier node.\");\n }\n if (value.type !== undefined) {\n _validateTypeIndex(value.type, graph, diagnostics, `${path}/values/${key}/type`);\n }\n const sourceNode = graph.nodes![value.node];\n if (_isValidIndex(sourceNode.declaration, declarations.length)) {\n const sourceDeclaration = declarations[sourceNode.declaration];\n const sourceMapping =\n sourceDeclaration.support === \"unsupported-extension\"\n ? getNoOpMappingForDeclaration(sourceDeclaration.source)\n : getMappingForDeclaration(sourceDeclaration.source, false);\n const sourceSocket = value.socket ?? \"value\";\n const hasMappedSocket = _matchesOutputSocket(sourceMapping?.outputs?.values, sourceSocket, sourceDeclaration, sourceNode, graph, \"value\");\n if (sourceMapping && !hasMappedSocket) {\n _addError(diagnostics, `${path}/values/${key}/socket`, `Output value socket \"${sourceSocket}\" does not exist on node ${value.node}.`);\n }\n const declaredOutputType = sourceDeclaration.source.outputValueSockets?.[sourceSocket]?.type;\n const effectiveOutputType = declaredOutputType ?? _resolveOutputTypeIndex(value.node, sourceSocket, graph, declarations);\n if (value.type !== undefined && effectiveOutputType !== undefined && value.type !== effectiveOutputType) {\n _addError(diagnostics, `${path}/values/${key}/type`, `Type assertion does not match output socket \"${sourceSocket}\".`);\n }\n }\n } else {\n _validateValue(value, graph, diagnostics, `${path}/values/${key}`);\n }\n }\n\n for (const [key, flow] of Object.entries(node.flows ?? {})) {\n const allowedDynamicSockets = _getAllowedDynamicFlowOutputSockets(node, mapping, graph, assetNodeCount);\n if (!_matchesFlowOutputSocket(mapping, key, allowedDynamicSockets)) {\n _addError(diagnostics, `${path}/flows/${key}`, `Output flow socket \"${key}\" is not defined by operation \"${declarationModel.operation}\".`);\n }\n if (!_isValidIndex(flow.node, graph.nodes?.length ?? 0)) {\n _addError(diagnostics, `${path}/flows/${key}/node`, `Node index ${String(flow.node)} is out of range.`);\n continue;\n }\n if (flow.node <= nodeIndex) {\n _addError(diagnostics, `${path}/flows/${key}/node`, \"Flow connections must reference a later node.\");\n }\n }\n}\n\n/**\n * Creates and validates a canonical copy of one KHR_interactivity graph.\n * @param graph source graph\n * @param index graph index in the root extension\n * @param supportedExtensions enabled extensions that may provide executable operations\n * @param assetNodeCount number of nodes in the containing glTF asset\n * @returns the canonical graph model\n */\nexport function CreateKHRInteractivityGraphModel(\n graph: IKHRInteractivity_Graph | null | undefined,\n index: number = 0,\n supportedExtensions?: ReadonlySet<string>,\n assetNodeCount?: number\n): IKHRInteractivityGraphModel {\n const diagnostics: IKHRInteractivityDiagnostic[] = [];\n const path = `/extensions/KHR_interactivity/graphs/${index}`;\n if (graph === null || typeof graph !== \"object\" || Array.isArray(graph)) {\n _addError(diagnostics, path, \"Behavior graph must be an object.\");\n graph = {};\n } else {\n graph = CloneKHRInteractivityGraph(graph);\n }\n const invalidEntryDefaults = {\n types: () => ({ signature: \"custom\" }),\n variables: () => ({ type: -1 }),\n events: () => ({}),\n declarations: () => ({ op: \"\" }),\n nodes: () => ({ declaration: -1 }),\n } as const;\n for (const key of [\"types\", \"variables\", \"events\", \"declarations\", \"nodes\"] as const) {\n const collection = graph[key] as unknown;\n if (collection !== undefined && !Array.isArray(collection)) {\n _addError(diagnostics, `${path}/${key}`, `\"${key}\" must be an array when present.`);\n (graph as any)[key] = [];\n } else if (Array.isArray(collection) && collection.length === 0) {\n _addError(diagnostics, `${path}/${key}`, `\"${key}\" must contain at least one item when present.`);\n } else if (Array.isArray(collection)) {\n (graph as any)[key] = collection.map((entry, entryIndex) => {\n if (entry === null || typeof entry !== \"object\" || Array.isArray(entry)) {\n _addError(diagnostics, `${path}/${key}/${entryIndex}`, `Each \"${key}\" item must be an object.`);\n return invalidEntryDefaults[key]();\n }\n return entry;\n });\n }\n }\n for (let eventIndex = 0; eventIndex < (graph.events?.length ?? 0); eventIndex++) {\n if (graph.events![eventIndex].values && Object.keys(graph.events![eventIndex].values!).length === 0) {\n _addError(diagnostics, `${path}/events/${eventIndex}/values`, '\"values\" must contain at least one property when present.');\n }\n }\n for (let declarationIndex = 0; declarationIndex < (graph.declarations?.length ?? 0); declarationIndex++) {\n const declaration = graph.declarations![declarationIndex];\n for (const key of [\"inputValueSockets\", \"outputValueSockets\"] as const) {\n if (declaration[key] && Object.keys(declaration[key]!).length === 0) {\n _addError(diagnostics, `${path}/declarations/${declarationIndex}/${key}`, `\"${key}\" must contain at least one property when present.`);\n }\n }\n }\n for (let nodeIndex = 0; nodeIndex < (graph.nodes?.length ?? 0); nodeIndex++) {\n const node = graph.nodes![nodeIndex];\n for (const key of [\"configuration\", \"values\", \"flows\"] as const) {\n if (node[key] && Object.keys(node[key]!).length === 0) {\n _addError(diagnostics, `${path}/nodes/${nodeIndex}/${key}`, `\"${key}\" must contain at least one property when present.`);\n }\n }\n }\n const declarationKeys = new Set<string>();\n const declarations = (graph.declarations ?? []).map((declaration, declarationIndex) => {\n const inputSockets = Object.keys(declaration.inputValueSockets ?? {})\n .sort()\n .map((key) => `${JSON.stringify(key)}:${declaration.inputValueSockets![key].type}`)\n .join(\",\");\n const declarationKey = `${JSON.stringify(declaration.op)}:${JSON.stringify(declaration.extension ?? \"\")}:${inputSockets}`;\n if (declarationKeys.has(declarationKey)) {\n _addError(diagnostics, `${path}/declarations/${declarationIndex}`, \"Duplicate equivalent declaration.\");\n }\n declarationKeys.add(declarationKey);\n const { support } = _getDeclarationMapping(declaration, graph, supportedExtensions);\n if (support === \"unknown-core\") {\n _addError(diagnostics, `${path}/declarations/${declarationIndex}/op`, `Unknown core operation \"${declaration.op}\".`);\n }\n if (!declaration.extension && (declaration.inputValueSockets || declaration.outputValueSockets)) {\n _addError(diagnostics, `${path}/declarations/${declarationIndex}`, \"Core operation declarations cannot define dynamic value sockets.\");\n }\n for (const [socket, definition] of Object.entries(declaration.inputValueSockets ?? {})) {\n _validateTypeIndex(definition.type, graph, diagnostics, `${path}/declarations/${declarationIndex}/inputValueSockets/${socket}/type`);\n }\n for (const [socket, definition] of Object.entries(declaration.outputValueSockets ?? {})) {\n _validateTypeIndex(definition.type, graph, diagnostics, `${path}/declarations/${declarationIndex}/outputValueSockets/${socket}/type`);\n }\n return {\n index: declarationIndex,\n operation: declaration.extension ? `${declaration.op}:${declaration.extension}` : declaration.op,\n support,\n source: declaration,\n };\n });\n\n const signatures = new Set<string>();\n for (let typeIndex = 0; typeIndex < (graph.types?.length ?? 0); typeIndex++) {\n const signature = graph.types![typeIndex].signature;\n if (signature !== \"custom\" && signatures.has(signature)) {\n _addError(diagnostics, `${path}/types/${typeIndex}/signature`, `Duplicate built-in type signature \"${signature}\".`);\n }\n signatures.add(signature);\n if (signature !== \"custom\" && !gltfTypeToBabylonType[signature]) {\n _addError(diagnostics, `${path}/types/${typeIndex}/signature`, `Unknown built-in type signature \"${signature}\".`);\n }\n }\n\n for (let variableIndex = 0; variableIndex < (graph.variables?.length ?? 0); variableIndex++) {\n _validateValue(graph.variables![variableIndex], graph, diagnostics, `${path}/variables/${variableIndex}`);\n }\n for (let eventIndex = 0; eventIndex < (graph.events?.length ?? 0); eventIndex++) {\n const eventId = graph.events![eventIndex].id;\n if (eventId !== undefined && graph.events!.slice(0, eventIndex).some((event) => event.id === eventId)) {\n _addError(diagnostics, `${path}/events/${eventIndex}/id`, `Duplicate event id \"${eventId}\".`);\n }\n if (graph.events![eventIndex].values && Object.prototype.hasOwnProperty.call(graph.events![eventIndex].values, \"event\")) {\n _addError(diagnostics, `${path}/events/${eventIndex}/values/event`, 'Custom event value socket id \"event\" is reserved.');\n }\n for (const [socket, value] of Object.entries(graph.events![eventIndex].values ?? {})) {\n _validateValue(value, graph, diagnostics, `${path}/events/${eventIndex}/values/${socket}`);\n }\n }\n for (let nodeIndex = 0; nodeIndex < (graph.nodes?.length ?? 0); nodeIndex++) {\n _validateNode(graph.nodes![nodeIndex], nodeIndex, graph, declarations, diagnostics, path, assetNodeCount);\n }\n\n return {\n index,\n path,\n name: graph.name ?? `Graph ${index + 1}`,\n source: graph,\n effectiveSource: CreateEffectiveKHRInteractivityGraph(graph, declarations, assetNodeCount),\n declarations,\n diagnostics,\n valid: !diagnostics.some((diagnostic) => diagnostic.severity === \"error\"),\n };\n}\n\n/**\n * Creates an immutable canonical KHR_interactivity document and validates all graph-local references.\n * @param extension source extension object from the glTF document\n * @param supportedExtensions enabled extensions that may provide executable operations\n * @param assetNodeCount number of nodes in the containing glTF asset\n * @returns the canonical document\n */\nexport function CreateKHRInteractivityDocument(extension: IKHRInteractivity, supportedExtensions?: ReadonlySet<string>, assetNodeCount?: number): IKHRInteractivityDocument {\n const source = _cloneJson(extension);\n const diagnostics: IKHRInteractivityDiagnostic[] = [];\n if (!Array.isArray(source.graphs)) {\n _addError(diagnostics, \"/extensions/KHR_interactivity/graphs\", '\"graphs\" must be an array.');\n source.graphs = [];\n }\n if (source.graphs.length === 0) {\n _addError(diagnostics, \"/extensions/KHR_interactivity/graphs\", \"At least one behavior graph is required.\");\n }\n const requestedDefaultGraphIndex = source.graph ?? 0;\n const defaultGraphIndex = _isValidIndex(requestedDefaultGraphIndex, source.graphs.length) ? requestedDefaultGraphIndex : -1;\n if (defaultGraphIndex === -1) {\n _addError(diagnostics, \"/extensions/KHR_interactivity/graph\", `Default graph index ${String(requestedDefaultGraphIndex)} is out of range.`);\n }\n const graphs = source.graphs.map((graph, index) => CreateKHRInteractivityGraphModel(graph, index, supportedExtensions, assetNodeCount));\n source.graphs = graphs.map((graph) => graph.source);\n\n return {\n specificationCommit: KHR_INTERACTIVITY_SPECIFICATION_COMMIT,\n source,\n defaultGraphIndex,\n graphs,\n diagnostics,\n };\n}\n"]}
1
+ {"version":3,"file":"interactivityGraphModel.js","sourceRoot":"","sources":["../../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport {\n type IKHRInteractivity,\n type IKHRInteractivity_Declaration,\n type IKHRInteractivity_Graph,\n type IKHRInteractivity_Node,\n type IKHRInteractivity_OutputSocketReference,\n type IKHRInteractivity_Variable,\n} from \"babylonjs-gltf2interface\";\nimport {\n getMappingForDeclaration,\n getNoOpMappingForDeclaration,\n ParseDebugLogTemplate,\n type IGLTFToFlowGraphMapping,\n type IGLTFToFlowGraphMappingObject,\n} from \"./declarationMapper\";\nimport { FlowGraphTypes } from \"core/FlowGraph/flowGraphRichTypes\";\n\n/**\n * Ratified KHR_interactivity specification baseline used by this importer.\n */\nexport const KHR_INTERACTIVITY_SPECIFICATION_COMMIT = \"f798712c5685bc9223a628140fba707db8889300\";\n\n/**\n * Runtime representation of every ratified built-in KHR_interactivity type.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const gltfTypeToBabylonType: {\n [key: string]: { length: number; flowGraphType: FlowGraphTypes; elementType: \"number\" | \"boolean\" | \"string\" | \"any\" };\n} = {\n float: { length: 1, flowGraphType: FlowGraphTypes.Number, elementType: \"number\" },\n bool: { length: 1, flowGraphType: FlowGraphTypes.Boolean, elementType: \"boolean\" },\n float2: { length: 2, flowGraphType: FlowGraphTypes.Vector2, elementType: \"number\" },\n float3: { length: 3, flowGraphType: FlowGraphTypes.Vector3, elementType: \"number\" },\n float4: { length: 4, flowGraphType: FlowGraphTypes.Vector4, elementType: \"number\" },\n float4x4: { length: 16, flowGraphType: FlowGraphTypes.Matrix, elementType: \"number\" },\n float2x2: { length: 4, flowGraphType: FlowGraphTypes.Matrix2D, elementType: \"number\" },\n float3x3: { length: 9, flowGraphType: FlowGraphTypes.Matrix3D, elementType: \"number\" },\n int: { length: 1, flowGraphType: FlowGraphTypes.Integer, elementType: \"number\" },\n ref: { length: 1, flowGraphType: FlowGraphTypes.String, elementType: \"string\" },\n custom: { length: 0, flowGraphType: FlowGraphTypes.Any, elementType: \"any\" },\n};\n\n/**\n * Classification of a KHR_interactivity declaration.\n */\nexport type KHRInteractivityDeclarationSupport = \"core\" | \"extension\" | \"unsupported-extension\" | \"unknown-core\";\n\n/**\n * A structured KHR_interactivity import diagnostic.\n */\nexport interface IKHRInteractivityDiagnostic {\n /** JSON pointer identifying the source location. */\n path: string;\n /** Human-readable diagnostic text. */\n message: string;\n /** Diagnostic severity. */\n severity: \"error\" | \"warning\";\n}\n\n/**\n * Stable source identity retained on every FlowGraph block lowered from a KHR_interactivity node.\n */\nexport interface IKHRInteractivityBlockProvenance {\n /** Source graph index. */\n graphIndex: number;\n /** Source node index. */\n nodeIndex: number;\n /** Source declaration index. */\n declarationIndex: number;\n /** Full operation name. */\n operation: string;\n /** Role of this block in a one-to-many mapping. Negative roles identify generated helper blocks. */\n role: number;\n /** Stable JSON pointer to the source node. */\n sourcePath: string;\n /** Original and lowered configuration values used for safe inverse transforms. */\n configuration?: Record<string, IKHRInteractivityConfigurationProvenance>;\n /** Importer-generated primitive configuration that must remain unchanged for inverse export. */\n generatedConfiguration?: Record<string, unknown>;\n /** Runtime fingerprints for generated configuration that changes representation while parsing. */\n generatedConfigurationRuntime?: Record<string, IKHRInteractivityInputDefaultProvenance>;\n /** Importer-generated unconnected input defaults that have no authored KHR socket representation. */\n generatedInputDefaults?: Record<string, IKHRInteractivityInputDefaultProvenance>;\n}\n\n/**\n * Import-time value retained for an unconnected FlowGraph input that is not represented by an authored KHR socket.\n */\nexport interface IKHRInteractivityInputDefaultProvenance {\n /** Type-tagged JSON-stable fingerprint of the normalized runtime input value. */\n runtimeValueFingerprint?: string;\n /** Whether the import-time value could not be fingerprinted safely. */\n unrepresentable?: true;\n}\n\n/**\n * Provenance for a transformed KHR configuration value.\n */\nexport interface IKHRInteractivityConfigurationProvenance {\n /** Exact source configuration array. */\n sourceValue?: unknown[];\n /** Lowered FlowGraph configuration value immediately after import. */\n runtimeValue?: unknown;\n}\n\n/** @internal */\nexport function _NormalizeKHRInteractivityRuntimeValue(value: unknown): unknown[] | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (value !== null && typeof value === \"object\") {\n const asArray = (value as { asArray?: () => ArrayLike<unknown> }).asArray;\n if (typeof asArray === \"function\") {\n return Array.from(asArray.call(value));\n }\n if (\"value\" in value && typeof (value as { value?: unknown }).value !== \"object\") {\n return [(value as { value: unknown }).value];\n }\n }\n return Array.isArray(value) ? value.slice() : [value];\n}\n\nfunction _EncodeRuntimeValueSnapshot(value: unknown, ancestors: Set<object>): unknown {\n if (value === undefined) {\n return [\"undefined\"];\n }\n if (value === null) {\n return [\"null\"];\n }\n switch (typeof value) {\n case \"boolean\":\n return [\"boolean\", value];\n case \"number\":\n return [\"number\", Number.isNaN(value) ? \"NaN\" : value === Infinity ? \"Infinity\" : value === -Infinity ? \"-Infinity\" : Object.is(value, -0) ? \"-0\" : value];\n case \"string\":\n return [\"string\", value];\n case \"object\": {\n if (Object.getOwnPropertySymbols(value).length > 0) {\n return undefined;\n }\n if (Array.isArray(value)) {\n const hasNonIndexProperty = Object.getOwnPropertyNames(value).some(\n (key) => key !== \"length\" && (!/^(0|[1-9]\\d*)$/.test(key) || Number(key) >= value.length || !(\"value\" in Object.getOwnPropertyDescriptor(value, key)!))\n );\n if (hasNonIndexProperty) {\n return undefined;\n }\n } else {\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n return undefined;\n }\n const hasNonJsonProperty = Object.getOwnPropertyNames(value).some(\n (key) => !Object.prototype.propertyIsEnumerable.call(value, key) || !(\"value\" in Object.getOwnPropertyDescriptor(value, key)!)\n );\n if (hasNonJsonProperty) {\n return undefined;\n }\n }\n if (ancestors.has(value)) {\n return undefined;\n }\n ancestors.add(value);\n let encoded: unknown;\n if (Array.isArray(value)) {\n const entries = value.map((entry) => _EncodeRuntimeValueSnapshot(entry, ancestors));\n encoded = entries.some((entry) => entry === undefined) ? undefined : [\"array\", entries];\n } else {\n const entries: unknown[] = [];\n let unrepresentable = false;\n for (const key of Object.keys(value).sort()) {\n const entry = _EncodeRuntimeValueSnapshot((value as Record<string, unknown>)[key], ancestors);\n if (entry === undefined) {\n unrepresentable = true;\n break;\n }\n entries.push([key, entry]);\n }\n encoded = unrepresentable ? undefined : [\"object\", entries];\n }\n ancestors.delete(value);\n return encoded;\n }\n default:\n return undefined;\n }\n}\n\n/** @internal */\nexport function _CreateKHRInteractivityRuntimeValueSnapshot(value: unknown): IKHRInteractivityInputDefaultProvenance {\n try {\n const encoded = _EncodeRuntimeValueSnapshot(Array.isArray(value) ? value : _NormalizeKHRInteractivityRuntimeValue(value), new Set<object>());\n return encoded === undefined ? { unrepresentable: true } : { runtimeValueFingerprint: JSON.stringify(encoded) };\n } catch {\n return { unrepresentable: true };\n }\n}\n\n/**\n * Stable source identity retained on a FlowGraph connection lowered from a KHR_interactivity socket.\n */\nexport interface IKHRInteractivitySocketProvenance extends IKHRInteractivityBlockProvenance {\n /** Socket category. */\n kind: \"value\" | \"flow\";\n /** Whether the socket is consumed by or produced from the logical KHR node. */\n direction: \"input\" | \"output\";\n /** Exact source KHR socket identifier. */\n socket: string;\n /** Exact canonical source value, when this is an input value socket. */\n sourceValue?: IKHRInteractivity_Variable | IKHRInteractivity_OutputSocketReference;\n /** Lowered inline runtime value immediately after import. */\n runtimeValue?: unknown[];\n /** Type-tagged runtime fingerprint used to distinguish parsing precision changes from edits. */\n runtimeValueSnapshot?: IKHRInteractivityInputDefaultProvenance;\n}\n\n/**\n * Canonical source retained on a FlowGraph lowered from KHR_interactivity.\n */\nexport interface IKHRInteractivityGraphProvenance {\n /** Source graph index. */\n graphIndex: number;\n /** Ratified specification revision used by the importer. */\n specificationCommit: string;\n /** Detached canonical source graph. */\n source: IKHRInteractivity_Graph;\n /** Explicit editor-authored variable defaults keyed by canonical variable index. */\n authoredVariableValues?: Record<number, unknown[]>;\n /** Explicit editor-authored FlowGraph variable types keyed by canonical variable index. */\n authoredVariableTypes?: Record<number, string>;\n /** True when variables were explicitly added, renamed, or deleted in the editor. */\n authoredVariableStructureChanged?: boolean;\n}\n\n/**\n * Canonical declaration information retained during import.\n */\nexport interface IKHRInteractivityDeclarationModel {\n /** Declaration index in the source graph. */\n index: number;\n /** Full operation name, including the defining extension when present. */\n operation: string;\n /** Whether Babylon can execute the declaration. */\n support: KHRInteractivityDeclarationSupport;\n /** Exact source declaration. */\n source: IKHRInteractivity_Declaration;\n}\n\n/**\n * Canonical graph information retained during import.\n */\nexport interface IKHRInteractivityGraphModel {\n /** Graph index in the root extension. */\n index: number;\n /** Stable source path. */\n path: string;\n /** Human-readable graph name. */\n name: string;\n /** Exact source graph, including extension and extras payloads. */\n source: IKHRInteractivity_Graph;\n /** Executable graph with specification defaults and fallbacks applied. */\n effectiveSource: IKHRInteractivity_Graph;\n /** Canonical declarations in source order. */\n declarations: IKHRInteractivityDeclarationModel[];\n /** Validation diagnostics for this graph. */\n diagnostics: IKHRInteractivityDiagnostic[];\n /** Whether this graph is valid and can be lowered to FlowGraph. */\n valid: boolean;\n}\n\n/**\n * Lossless canonical representation of a KHR_interactivity root extension.\n */\nexport interface IKHRInteractivityDocument {\n /** Ratified specification revision used for validation. */\n specificationCommit: string;\n /** Exact source extension, including unknown extensions and extras. */\n source: IKHRInteractivity;\n /** Default graph index, or -1 when the source selection is invalid. */\n defaultGraphIndex: number;\n /** Canonical graph models in source order. */\n graphs: IKHRInteractivityGraphModel[];\n /** Root-level validation diagnostics. */\n diagnostics: IKHRInteractivityDiagnostic[];\n}\n\nfunction _cloneJson<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map((entry) => _cloneJson(entry)) as T;\n }\n if (value !== null && typeof value === \"object\") {\n const clone: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n Object.defineProperty(clone, key, {\n configurable: true,\n enumerable: true,\n value: _cloneJson(entry),\n writable: true,\n });\n }\n return clone as T;\n }\n return value;\n}\n\n/**\n * Creates a detached JSON copy of a KHR_interactivity graph.\n * @param graph source graph\n * @returns a lossless JSON copy\n */\nexport function CloneKHRInteractivityGraph(graph: IKHRInteractivity_Graph): IKHRInteractivity_Graph {\n return _cloneJson(graph);\n}\n\nfunction _isValidIndex(value: unknown, length: number): value is number {\n return typeof value === \"number\" && Number.isInteger(value) && value >= 0 && value < length;\n}\n\nfunction _isRecord(value: unknown): boolean {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction _addError(diagnostics: IKHRInteractivityDiagnostic[], path: string, message: string): void {\n diagnostics.push({ path, message, severity: \"error\" });\n}\n\nfunction _addWarning(diagnostics: IKHRInteractivityDiagnostic[], path: string, message: string): void {\n diagnostics.push({ path, message, severity: \"warning\" });\n}\n\nfunction _isValidJsonPointer(value: string): boolean {\n return value === \"\" || /^(?:\\/(?:[^~]|~[01])*)*$/.test(value);\n}\n\nfunction _matchesOutputSocket(\n mapping: { [name: string]: IGLTFToFlowGraphMappingObject } | undefined,\n socket: string,\n declaration: IKHRInteractivityDeclarationModel,\n node: IKHRInteractivity_Node,\n graph: IKHRInteractivity_Graph,\n defaultSocket?: string\n): boolean {\n if (mapping && Object.prototype.hasOwnProperty.call(mapping, socket)) {\n return true;\n }\n if (socket === defaultSocket && mapping && Object.prototype.hasOwnProperty.call(mapping, defaultSocket)) {\n return true;\n }\n if (!Object.keys(mapping ?? {}).some((name) => name.startsWith(\"[\") && name.endsWith(\"]\"))) {\n return false;\n }\n if (declaration.operation === \"event/receive\") {\n const eventIndex = node.configuration?.event?.value?.[0];\n return typeof eventIndex === \"number\" && Object.prototype.hasOwnProperty.call(graph.events?.[eventIndex]?.values ?? {}, socket);\n }\n return true;\n}\n\nfunction _validateTypeIndex(typeIndex: unknown, graph: IKHRInteractivity_Graph, diagnostics: IKHRInteractivityDiagnostic[], path: string): typeIndex is number {\n if (!_isValidIndex(typeIndex, graph.types?.length ?? 0)) {\n _addError(diagnostics, path, `Type index ${String(typeIndex)} is out of range.`);\n return false;\n }\n return true;\n}\n\nfunction _validateValue(value: IKHRInteractivity_Variable, graph: IKHRInteractivity_Graph, diagnostics: IKHRInteractivityDiagnostic[], path: string): void {\n if (!_validateTypeIndex(value.type, graph, diagnostics, `${path}/type`)) {\n return;\n }\n if (value.value === undefined) {\n return;\n }\n if (!Array.isArray(value.value)) {\n _addError(diagnostics, `${path}/value`, \"Value must be an array when present.\");\n return;\n }\n const type = graph.types![value.type];\n const runtimeType = gltfTypeToBabylonType[type.signature];\n if (runtimeType && type.signature !== \"custom\" && value.value.length !== runtimeType.length) {\n _addError(diagnostics, `${path}/value`, `Expected ${runtimeType.length} value component(s) for type \"${type.signature}\", received ${value.value.length}.`);\n }\n for (let componentIndex = 0; componentIndex < value.value.length; componentIndex++) {\n const component = value.value[componentIndex];\n let valid = true;\n switch (type.signature) {\n case \"bool\":\n valid = typeof component === \"boolean\";\n break;\n case \"int\":\n valid = typeof component === \"number\" && Number.isInteger(component) && component >= -2147483648 && component <= 2147483647;\n break;\n case \"float\":\n case \"float2\":\n case \"float3\":\n case \"float4\":\n case \"float2x2\":\n case \"float3x3\":\n case \"float4x4\":\n valid = typeof component === \"number\" && Number.isFinite(component);\n break;\n case \"ref\":\n valid = typeof component === \"string\" && _isValidJsonPointer(component);\n break;\n default:\n break;\n }\n if (!valid) {\n _addError(diagnostics, `${path}/value/${componentIndex}`, `Value component is invalid for type \"${type.signature}\".`);\n }\n }\n}\n\nfunction _getDeclarationMapping(\n declaration: IKHRInteractivity_Declaration,\n graph: IKHRInteractivity_Graph,\n supportedExtensions?: ReadonlySet<string>\n): {\n mapping: IGLTFToFlowGraphMapping | undefined;\n support: KHRInteractivityDeclarationSupport;\n} {\n const extensionEnabled = !declaration.extension || !supportedExtensions || supportedExtensions.has(declaration.extension);\n const mapping = extensionEnabled ? getMappingForDeclaration(declaration, false) : undefined;\n if (mapping) {\n if (declaration.extension && mapping.declarationSchema && !_isCompatibleExtensionDeclaration(declaration, graph, mapping.declarationSchema)) {\n return { mapping: undefined, support: \"unsupported-extension\" };\n }\n return { mapping, support: declaration.extension ? \"extension\" : \"core\" };\n }\n\n return {\n mapping: undefined,\n support: declaration.extension ? \"unsupported-extension\" : \"unknown-core\",\n };\n}\n\nfunction _isCompatibleExtensionDeclaration(\n declaration: IKHRInteractivity_Declaration,\n graph: IKHRInteractivity_Graph,\n schema: NonNullable<IGLTFToFlowGraphMapping[\"declarationSchema\"]>\n): boolean {\n const matches = (actual: typeof declaration.inputValueSockets, expected: Record<string, string>): boolean => {\n const actualKeys = Object.keys(actual ?? {}).sort();\n const expectedKeys = Object.keys(expected).sort();\n if (actualKeys.length !== expectedKeys.length || actualKeys.some((key, index) => key !== expectedKeys[index])) {\n return false;\n }\n return actualKeys.every((key) => _isRecord(actual![key]) && graph.types?.[actual![key].type]?.signature === expected[key]);\n };\n return matches(declaration.inputValueSockets, schema.inputValueSockets) && matches(declaration.outputValueSockets, schema.outputValueSockets);\n}\n\nfunction _validateConfigurationValue(value: unknown[] | undefined, type: IGLTFToFlowGraphMappingObject[\"configurationType\"]): boolean {\n if (!Array.isArray(value)) {\n return false;\n }\n const isInt = (entry: unknown) => typeof entry === \"number\" && Number.isInteger(entry) && entry >= -2147483648 && entry <= 2147483647;\n switch (type) {\n case \"bool\":\n return value.length === 1 && typeof value[0] === \"boolean\";\n case \"int\":\n return value.length === 1 && isInt(value[0]);\n case \"int[]\":\n return value.every(isInt);\n case \"string\":\n return value.length === 1 && typeof value[0] === \"string\";\n default:\n return value.length > 0;\n }\n}\n\nfunction _getIndexedArrayLength(graph: IKHRInteractivity_Graph, source: IGLTFToFlowGraphMappingObject[\"indexSource\"], assetNodeCount?: number): number {\n switch (source) {\n case \"types\":\n return graph.types?.length ?? 0;\n case \"variables\":\n return graph.variables?.length ?? 0;\n case \"events\":\n return graph.events?.length ?? 0;\n case \"nodes\":\n return graph.nodes?.length ?? 0;\n case \"assetNodes\":\n return assetNodeCount ?? 0;\n default:\n return 0;\n }\n}\n\nfunction _isEffectiveConfigurationValue(\n configuration: { value?: unknown[] } | undefined,\n property: IGLTFToFlowGraphMappingObject,\n graph: IKHRInteractivity_Graph,\n assetNodeCount?: number\n): boolean {\n if (!configuration || !_validateConfigurationValue(configuration.value, property.configurationType) || !configuration.value) {\n return false;\n }\n if (property.minItems !== undefined && configuration.value.length < property.minItems) {\n return false;\n }\n if (property.minimum !== undefined && configuration.value.some((value) => typeof value !== \"number\" || value < property.minimum!)) {\n return false;\n }\n if (property.maximum !== undefined && configuration.value.some((value) => typeof value !== \"number\" || value > property.maximum!)) {\n return false;\n }\n if (property.indexSource) {\n const length = _getIndexedArrayLength(graph, property.indexSource, assetNodeCount);\n if (configuration.value.some((value) => !_isValidIndex(value, length))) {\n return false;\n }\n }\n if (property.allowedSignatures) {\n const typeIndex = configuration.value[0];\n const signature = typeof typeIndex === \"number\" ? graph.types?.[typeIndex]?.signature : undefined;\n if (!signature || !property.allowedSignatures.includes(signature)) {\n return false;\n }\n }\n if (property.allowedValues && configuration.value.some((value) => !property.allowedValues!.includes(value as boolean | number | string))) {\n return false;\n }\n if (property.debugLogTemplate && !ParseDebugLogTemplate(configuration.value[0] as string).valid) {\n return false;\n }\n return true;\n}\n\n/**\n * Creates the executable graph view with all ratified configuration defaults and fallback rules\n * applied without modifying the lossless source graph.\n * @param graph source graph\n * @param declarations canonical declarations\n * @param assetNodeCount number of glTF nodes in the containing asset\n * @returns normalized executable graph\n */\nexport function CreateEffectiveKHRInteractivityGraph(\n graph: IKHRInteractivity_Graph,\n declarations: readonly IKHRInteractivityDeclarationModel[],\n assetNodeCount?: number\n): IKHRInteractivity_Graph {\n const effective = CloneKHRInteractivityGraph(graph);\n for (let nodeIndex = 0; nodeIndex < (effective.nodes?.length ?? 0); nodeIndex++) {\n const node = effective.nodes![nodeIndex];\n const declaration = declarations[node.declaration];\n if (!declaration || declaration.support === \"unknown-core\" || declaration.support === \"unsupported-extension\") {\n continue;\n }\n const mapping = getMappingForDeclaration(declaration.source, false);\n if (!mapping?.configuration) {\n continue;\n }\n const groupedValidity = new Map<string, boolean>();\n for (const [key, property] of Object.entries(mapping.configuration)) {\n if (property.configurationGroup) {\n const valid = _isEffectiveConfigurationValue(node.configuration?.[key], property, effective, assetNodeCount);\n groupedValidity.set(property.configurationGroup, (groupedValidity.get(property.configurationGroup) ?? true) && valid);\n }\n }\n for (const [key, property] of Object.entries(mapping.configuration)) {\n const valid =\n (!property.configurationGroup || groupedValidity.get(property.configurationGroup) === true) &&\n _isEffectiveConfigurationValue(node.configuration?.[key], property, effective, assetNodeCount);\n if (!valid && property.defaultValue !== undefined) {\n node.configuration ??= {};\n node.configuration[key] = {\n value: Array.isArray(property.defaultValue) ? _cloneJson(property.defaultValue) : [property.defaultValue],\n };\n } else if (valid && property.uniqueValues && node.configuration?.[key]?.value) {\n node.configuration[key].value = Array.from(new Set(node.configuration[key].value));\n }\n }\n }\n return effective;\n}\n\nfunction _getPointerTemplateSockets(pointer: string): { name: string; signature: \"int\" | \"ref\" }[] {\n const sockets: { name: string; signature: \"int\" | \"ref\" }[] = [];\n for (const segment of pointer.split(\"/\")) {\n const signature = segment.startsWith(\"[\") && !segment.startsWith(\"[[\") ? \"int\" : segment.startsWith(\"{\") && !segment.startsWith(\"{{\") ? \"ref\" : undefined;\n if (signature) {\n const name = segment\n .substring(1, segment.length - 1)\n .replace(/~1/g, \"/\")\n .replace(/~0/g, \"~\");\n sockets.push({ name, signature });\n }\n }\n return sockets;\n}\n\nfunction _resolveValueTypeIndex(\n value: IKHRInteractivity_Variable | { node: number; socket?: string; type?: number },\n graph: IKHRInteractivity_Graph,\n declarations: readonly IKHRInteractivityDeclarationModel[],\n visited: Set<string> = new Set()\n): number | undefined {\n if (\"node\" in value) {\n return _resolveOutputTypeIndex(value.node, value.socket ?? \"value\", graph, declarations, visited);\n }\n return value.type;\n}\n\nfunction _resolveOutputTypeIndex(\n nodeIndex: number,\n socket: string,\n graph: IKHRInteractivity_Graph,\n declarations: readonly IKHRInteractivityDeclarationModel[],\n visited: Set<string> = new Set()\n): number | undefined {\n const key = `${nodeIndex}:${socket}`;\n if (visited.has(key)) {\n return undefined;\n }\n visited.add(key);\n if (!_isValidIndex(nodeIndex, graph.nodes?.length ?? 0)) {\n return undefined;\n }\n const sourceNode = graph.nodes![nodeIndex];\n if (!_isValidIndex(sourceNode.declaration, declarations.length)) {\n return undefined;\n }\n const declaration = declarations[sourceNode.declaration];\n const declaredType = declaration.source.outputValueSockets?.[socket]?.type;\n if (declaredType !== undefined) {\n return declaredType;\n }\n const findTypeIndex = (signature: string): number | undefined => {\n const index = graph.types?.findIndex((type) => type.signature === signature) ?? -1;\n return index >= 0 ? index : undefined;\n };\n const booleanType = () => findTypeIndex(\"bool\");\n if (socket === \"isValid\") {\n return booleanType();\n }\n if (declaration.operation === \"pointer/get\" && socket === \"value\") {\n const configuredType = sourceNode.configuration?.type?.value?.[0];\n return typeof configuredType === \"number\" ? configuredType : undefined;\n }\n if (declaration.operation === \"variable/get\" && socket === \"value\") {\n const variableIndex = sourceNode.configuration?.variable?.value?.[0];\n return typeof variableIndex === \"number\" ? graph.variables?.[variableIndex]?.type : undefined;\n }\n if (declaration.operation === \"math/switch\" && socket === \"value\") {\n const defaultInput = sourceNode.values?.default;\n return defaultInput ? _resolveValueTypeIndex(defaultInput, graph, declarations, visited) : undefined;\n }\n if (declaration.operation === \"event/receive\" && socket !== \"event\") {\n const eventIndex = sourceNode.configuration?.event?.value?.[0];\n return typeof eventIndex === \"number\" ? graph.events?.[eventIndex]?.values?.[socket]?.type : undefined;\n }\n const fixedSignature = _getFixedOutputSignature(declaration.operation, socket);\n if (fixedSignature) {\n return findTypeIndex(String(fixedSignature));\n }\n const mapping = getMappingForDeclaration(declaration.source, false);\n const outputMapping = mapping?.outputs?.values?.[socket];\n const mappedType = outputMapping?.gltfType;\n const signature = mappedType === \"number\" ? \"float\" : mappedType === \"boolean\" ? \"bool\" : mappedType;\n if (signature && signature in gltfTypeToBabylonType) {\n return findTypeIndex(signature);\n }\n const typeSource = outputMapping?.typeSourceInput ? sourceNode.values?.[outputMapping.typeSourceInput] : undefined;\n return typeSource ? _resolveValueTypeIndex(typeSource, graph, declarations, visited) : undefined;\n}\n\nfunction _getFixedOutputSignature(operation: string, socket: string): keyof typeof gltfTypeToBabylonType | undefined {\n if (socket !== \"value\") {\n if (\n (operation === \"math/rgbToOkLCh\" && [\"l\", \"c\", \"h\"].includes(socket)) ||\n (operation === \"math/rgbFromOkLCh\" && [\"r\", \"g\", \"b\"].includes(socket)) ||\n operation.startsWith(\"math/extract\")\n ) {\n return \"float\";\n }\n if (operation === \"math/matDecompose\") {\n return socket === \"rotation\" ? \"float4\" : socket === \"translation\" || socket === \"scale\" ? \"float3\" : undefined;\n }\n if (operation === \"math/quatToAxisAngle\") {\n return socket === \"axis\" ? \"float3\" : socket === \"angle\" ? \"float\" : undefined;\n }\n if ((operation === \"flow/doN\" && socket === \"currentCount\") || (operation === \"flow/for\" && socket === \"index\")) {\n return \"int\";\n }\n if (operation === \"flow/setDelay\" && socket === \"lastDelay\") {\n return \"ref\";\n }\n if (operation === \"flow/throttle\" && socket === \"lastRemainingTime\") {\n return \"float\";\n }\n if ((operation === \"event/onStart\" || operation === \"event/onTick\" || operation === \"event/receive\") && socket === \"event\") {\n return \"ref\";\n }\n if (operation === \"event/onTick\" && socket === \"timeSinceLastTick\") {\n return \"float\";\n }\n if (operation === \"event/onTick\" && socket === \"timeSinceStart\") {\n return \"float\";\n }\n return undefined;\n }\n if ([\"math/E\", \"math/Pi\", \"math/Tau\", \"math/Inf\", \"math/NaN\", \"math/random\", \"math/length\", \"math/dot\", \"math/determinant\", \"math/quatAngleBetween\"].includes(operation)) {\n return \"float\";\n }\n if ([\"math/eq\", \"ref/eq\", \"math/lt\", \"math/le\", \"math/gt\", \"math/ge\", \"math/isNaN\", \"math/isInf\", \"type/intToBool\", \"type/floatToBool\"].includes(operation)) {\n return \"bool\";\n }\n if ([\"math/clz\", \"math/ctz\", \"math/popcnt\", \"type/boolToInt\", \"type/floatToInt\"].includes(operation)) {\n return \"int\";\n }\n if ([\"type/boolToFloat\", \"type/intToFloat\"].includes(operation)) {\n return \"float\";\n }\n return undefined;\n}\n\nfunction _validateNode(\n node: IKHRInteractivity_Node,\n nodeIndex: number,\n graph: IKHRInteractivity_Graph,\n declarations: IKHRInteractivityDeclarationModel[],\n diagnostics: IKHRInteractivityDiagnostic[],\n graphPath: string,\n assetNodeCount?: number\n): void {\n const path = `${graphPath}/nodes/${nodeIndex}`;\n if (!_isValidIndex(node.declaration, declarations.length)) {\n _addError(diagnostics, `${path}/declaration`, `Declaration index ${String(node.declaration)} is out of range.`);\n return;\n }\n\n const declarationModel = declarations[node.declaration];\n const mapping =\n declarationModel.support === \"unsupported-extension\" ? getNoOpMappingForDeclaration(declarationModel.source) : getMappingForDeclaration(declarationModel.source, false);\n if (declarationModel.support === \"unknown-core\" || !mapping) {\n return;\n }\n\n const reportConfigurationIssue = (property: IGLTFToFlowGraphMappingObject, issuePath: string, message: string): void => {\n if (property.invalidUsesDefault || property.defaultValue !== undefined) {\n _addWarning(diagnostics, issuePath, `${message} The default configuration will be used.`);\n } else {\n _addError(diagnostics, issuePath, message);\n }\n };\n for (const [key, configuration] of Object.entries(node.configuration ?? {})) {\n if (!_isRecord(configuration)) {\n _addError(diagnostics, `${path}/configuration/${key}`, `Configuration \"${key}\" must be an object.`);\n continue;\n }\n if (configuration.value !== undefined && !Array.isArray(configuration.value)) {\n _addError(diagnostics, `${path}/configuration/${key}/value`, \"Configuration value must be an array when present.\");\n } else if (configuration.value && configuration.value.length === 0) {\n _addError(diagnostics, `${path}/configuration/${key}/value`, \"Configuration value arrays must contain at least one item when present.\");\n }\n }\n for (const [key, property] of Object.entries(mapping.configuration ?? {})) {\n const configuration = node.configuration?.[key];\n const isConfigurationValid = !!configuration && _validateConfigurationValue(configuration.value, property.configurationType);\n if (!configuration && property.required) {\n _addError(diagnostics, `${path}/configuration/${key}`, `Required configuration \"${key}\" is missing.`);\n } else if (configuration && !isConfigurationValid) {\n reportConfigurationIssue(property, `${path}/configuration/${key}`, `Configuration \"${key}\" is invalid.`);\n }\n if (isConfigurationValid && configuration.value && property.minItems !== undefined && configuration.value.length < property.minItems) {\n _addError(diagnostics, `${path}/configuration/${key}/value`, `Configuration \"${key}\" requires at least ${property.minItems} value(s).`);\n }\n if (isConfigurationValid && configuration.value && property.indexSource) {\n const length = _getIndexedArrayLength(graph, property.indexSource, assetNodeCount);\n for (let index = 0; index < configuration.value.length; index++) {\n if (!_isValidIndex(configuration.value[index], length)) {\n reportConfigurationIssue(property, `${path}/configuration/${key}/value/${index}`, `Index is out of range for graph ${property.indexSource}.`);\n }\n }\n }\n if (isConfigurationValid && configuration.value && property.allowedSignatures) {\n const typeIndex = configuration.value[0];\n const signature = typeof typeIndex === \"number\" ? graph.types?.[typeIndex]?.signature : undefined;\n if (!signature || !property.allowedSignatures.includes(signature)) {\n reportConfigurationIssue(property, `${path}/configuration/${key}/value/0`, `Type \"${String(signature)}\" is not supported by this operation.`);\n }\n }\n if (isConfigurationValid && configuration.value && property.allowedValues && configuration.value.some((value) => !property.allowedValues!.includes(value))) {\n reportConfigurationIssue(property, `${path}/configuration/${key}/value`, `Configuration \"${key}\" contains an unsupported value.`);\n }\n if (isConfigurationValid && configuration.value && property.debugLogTemplate && !ParseDebugLogTemplate(configuration.value[0] as string).valid) {\n reportConfigurationIssue(property, `${path}/configuration/${key}/value/0`, `Configuration \"${key}\" is not a valid debug message template.`);\n }\n if (isConfigurationValid && configuration.value && (property.minimum !== undefined || property.maximum !== undefined)) {\n const numericValue = configuration.value[0] as number;\n if ((property.minimum !== undefined && numericValue < property.minimum) || (property.maximum !== undefined && numericValue > property.maximum)) {\n reportConfigurationIssue(\n property,\n `${path}/configuration/${key}/value/0`,\n `Configuration \"${key}\" must be between ${String(property.minimum)} and ${String(property.maximum)}.`\n );\n }\n }\n if (isConfigurationValid && configuration.value && property.generatesInputValueSockets) {\n for (const configuredIndex of configuration.value) {\n if (typeof configuredIndex !== \"number\" || !_isValidIndex(configuredIndex, graph.variables?.length ?? 0)) {\n continue;\n }\n const socket = node.values?.[String(configuredIndex)];\n if (!socket) {\n _addError(diagnostics, `${path}/values/${configuredIndex}`, `Required configured input value socket \"${configuredIndex}\" is missing.`);\n } else if (_resolveValueTypeIndex(socket, graph, declarations) !== graph.variables![configuredIndex].type) {\n _addError(diagnostics, `${path}/values/${configuredIndex}/type`, `Configured input value socket \"${configuredIndex}\" has the wrong type.`);\n }\n }\n }\n if (isConfigurationValid && configuration.value && property.generatesCaseInputValueSockets) {\n const defaultType = node.values?.default ? _resolveValueTypeIndex(node.values.default, graph, declarations) : undefined;\n for (const caseValue of configuration.value) {\n const socket = node.values?.[String(caseValue)];\n if (!socket) {\n _addError(diagnostics, `${path}/values/${caseValue}`, `Required case input value socket \"${caseValue}\" is missing.`);\n } else if (defaultType !== undefined && _resolveValueTypeIndex(socket, graph, declarations) !== defaultType) {\n _addError(diagnostics, `${path}/values/${caseValue}/type`, `Case input value socket \"${caseValue}\" must match the default socket type.`);\n }\n }\n }\n if (isConfigurationValid && configuration.value && property.pointerTemplate && typeof configuration.value[0] === \"string\") {\n for (const socketDefinition of _getPointerTemplateSockets(configuration.value[0])) {\n const socket = node.values?.[socketDefinition.name];\n const expectedType = graph.types?.findIndex((type) => type.signature === socketDefinition.signature) ?? -1;\n if (!socket) {\n _addError(diagnostics, `${path}/values/${socketDefinition.name}`, `Required pointer template input \"${socketDefinition.name}\" is missing.`);\n } else if (expectedType < 0 || _resolveValueTypeIndex(socket, graph, declarations) !== expectedType) {\n _addError(\n diagnostics,\n `${path}/values/${socketDefinition.name}/type`,\n `Pointer template input \"${socketDefinition.name}\" must have type \"${socketDefinition.signature}\".`\n );\n }\n }\n }\n }\n\n if (declarationModel.operation === \"debug/log\") {\n const severityProperty = mapping.configuration?.severity;\n const messageProperty = mapping.configuration?.message;\n const severityValid = !!severityProperty && _isEffectiveConfigurationValue(node.configuration?.severity, severityProperty, graph, assetNodeCount);\n const messageValid = !!messageProperty && _isEffectiveConfigurationValue(node.configuration?.message, messageProperty, graph, assetNodeCount);\n const message = severityValid && messageValid ? (node.configuration!.message.value![0] as string) : \"\";\n for (const socket of ParseDebugLogTemplate(message).sockets) {\n if (!node.values?.[socket]) {\n _addError(diagnostics, `${path}/values/${socket}`, `Required debug message template input \"${socket}\" is missing.`);\n }\n }\n }\n\n for (const [key, property] of Object.entries(mapping.inputs?.values ?? {})) {\n if (!key.startsWith(\"[\") && !node.values?.[key]) {\n _addError(diagnostics, `${path}/values/${key}`, `Required input value socket \"${key}\" is missing.`);\n }\n if (declarationModel.operation === \"event/send\") {\n const eventIndex = node.configuration?.event?.value?.[0];\n const event = typeof eventIndex === \"number\" ? graph.events?.[eventIndex] : undefined;\n for (const [socket, eventValue] of Object.entries(event?.values ?? {})) {\n const source = node.values?.[socket];\n if (!source) {\n _addError(diagnostics, `${path}/values/${socket}`, `Required custom event input value socket \"${socket}\" is missing.`);\n } else if (_resolveValueTypeIndex(source, graph, declarations) !== eventValue.type) {\n _addError(diagnostics, `${path}/values/${socket}/type`, `Custom event input value socket \"${socket}\" has the wrong type.`);\n }\n }\n }\n const expectedSignature = property.gltfType === \"number\" ? \"float\" : property.gltfType === \"boolean\" ? \"bool\" : property.gltfType;\n const source = node.values?.[key];\n if (source && expectedSignature && expectedSignature in gltfTypeToBabylonType) {\n const typeIndex = _resolveValueTypeIndex(source, graph, declarations);\n if (typeIndex !== undefined && graph.types?.[typeIndex]?.signature !== expectedSignature) {\n _addError(diagnostics, `${path}/values/${key}/type`, `Input value socket \"${key}\" must have type \"${expectedSignature}\".`);\n }\n }\n }\n if (mapping.validation) {\n try {\n const validationNode = _cloneJson(node);\n for (const value of Object.values(validationNode.values ?? {})) {\n if (value.type === undefined) {\n value.type = _resolveValueTypeIndex(value, graph, declarations);\n }\n }\n const result = mapping.validation(validationNode, graph);\n if (!result.valid) {\n _addError(diagnostics, path, result.error ?? `Operation \"${declarationModel.operation}\" is invalid.`);\n }\n } catch (error) {\n _addError(diagnostics, path, (error as Error).message);\n }\n }\n for (const [key, value] of Object.entries(node.values ?? {})) {\n if (!_isRecord(value)) {\n _addError(diagnostics, `${path}/values/${key}`, `Input value socket \"${key}\" must be an object.`);\n continue;\n }\n if (declarationModel.support === \"unsupported-extension\" && !declarationModel.source.inputValueSockets?.[key]) {\n _addError(diagnostics, `${path}/values/${key}`, `Input value socket \"${key}\" is not defined by operation \"${declarationModel.operation}\".`);\n }\n if (\"node\" in value) {\n if (\"value\" in value) {\n _addError(diagnostics, `${path}/values/${key}`, \"An input value socket cannot define both inline and node sources.\");\n }\n if (!_isValidIndex(value.node, graph.nodes?.length ?? 0)) {\n _addError(diagnostics, `${path}/values/${key}/node`, `Node index ${String(value.node)} is out of range.`);\n continue;\n }\n if (value.node >= nodeIndex) {\n _addError(diagnostics, `${path}/values/${key}/node`, \"Value connections must reference an earlier node.\");\n }\n if (value.type !== undefined) {\n _validateTypeIndex(value.type, graph, diagnostics, `${path}/values/${key}/type`);\n }\n const sourceNode = graph.nodes![value.node];\n if (_isValidIndex(sourceNode.declaration, declarations.length)) {\n const sourceDeclaration = declarations[sourceNode.declaration];\n const sourceMapping =\n sourceDeclaration.support === \"unsupported-extension\"\n ? getNoOpMappingForDeclaration(sourceDeclaration.source)\n : getMappingForDeclaration(sourceDeclaration.source, false);\n const sourceSocket = value.socket ?? \"value\";\n const hasMappedSocket = _matchesOutputSocket(sourceMapping?.outputs?.values, sourceSocket, sourceDeclaration, sourceNode, graph, \"value\");\n if (sourceMapping && !hasMappedSocket) {\n _addError(diagnostics, `${path}/values/${key}/socket`, `Output value socket \"${sourceSocket}\" does not exist on node ${value.node}.`);\n }\n const declaredOutputType = sourceDeclaration.source.outputValueSockets?.[sourceSocket]?.type;\n const effectiveOutputType = declaredOutputType ?? _resolveOutputTypeIndex(value.node, sourceSocket, graph, declarations);\n if (value.type !== undefined) {\n const mappedOutputs = sourceMapping?.outputs?.values;\n const mappedOutput = mappedOutputs && Object.prototype.hasOwnProperty.call(mappedOutputs, sourceSocket) ? mappedOutputs[sourceSocket] : undefined;\n const mappedType = mappedOutput?.gltfType;\n const mappedOutputSignature =\n mappedType === \"number\"\n ? \"float\"\n : mappedType === \"boolean\"\n ? \"bool\"\n : mappedType === \"vector2\"\n ? \"float2\"\n : mappedType === \"vector3\"\n ? \"float3\"\n : mappedType === \"vector4\"\n ? \"float4\"\n : mappedType;\n const fixedOutputSignature =\n _getFixedOutputSignature(sourceDeclaration.operation, sourceSocket) ??\n (mappedOutputSignature && Object.prototype.hasOwnProperty.call(gltfTypeToBabylonType, mappedOutputSignature) ? mappedOutputSignature : undefined);\n const assertedSignature = graph.types?.[value.type]?.signature;\n if (\n (fixedOutputSignature !== undefined && assertedSignature !== fixedOutputSignature) ||\n (fixedOutputSignature === undefined && effectiveOutputType !== undefined && value.type !== effectiveOutputType)\n ) {\n _addError(diagnostics, `${path}/values/${key}/type`, `Type assertion does not match output socket \"${sourceSocket}\".`);\n }\n }\n }\n } else {\n _validateValue(value, graph, diagnostics, `${path}/values/${key}`);\n }\n }\n\n for (const [key, flow] of Object.entries(node.flows ?? {})) {\n if (!_isRecord(flow)) {\n _addError(diagnostics, `${path}/flows/${key}`, `Output flow socket \"${key}\" must be an object.`);\n continue;\n }\n if (!_isValidIndex(flow.node, graph.nodes?.length ?? 0)) {\n _addError(diagnostics, `${path}/flows/${key}/node`, `Node index ${String(flow.node)} is out of range.`);\n continue;\n }\n if (flow.node <= nodeIndex) {\n _addError(diagnostics, `${path}/flows/${key}/node`, \"Flow connections must reference a later node.\");\n }\n }\n}\n\n/**\n * Creates and validates a canonical copy of one KHR_interactivity graph.\n * @param graph source graph\n * @param index graph index in the root extension\n * @param supportedExtensions enabled extensions that may provide executable operations\n * @param assetNodeCount number of nodes in the containing glTF asset\n * @returns the canonical graph model\n */\nexport function CreateKHRInteractivityGraphModel(\n graph: IKHRInteractivity_Graph | null | undefined,\n index: number = 0,\n supportedExtensions?: ReadonlySet<string>,\n assetNodeCount?: number\n): IKHRInteractivityGraphModel {\n const diagnostics: IKHRInteractivityDiagnostic[] = [];\n const path = `/extensions/KHR_interactivity/graphs/${index}`;\n if (graph === null || typeof graph !== \"object\" || Array.isArray(graph)) {\n _addError(diagnostics, path, \"Behavior graph must be an object.\");\n graph = {};\n } else {\n graph = CloneKHRInteractivityGraph(graph);\n }\n const invalidEntryDefaults = {\n types: () => ({ signature: \"custom\" }),\n variables: () => ({ type: -1 }),\n events: () => ({}),\n declarations: () => ({ op: \"\" }),\n nodes: () => ({ declaration: -1 }),\n } as const;\n for (const key of [\"types\", \"variables\", \"events\", \"declarations\", \"nodes\"] as const) {\n const collection = graph[key] as unknown;\n if (collection !== undefined && !Array.isArray(collection)) {\n _addError(diagnostics, `${path}/${key}`, `\"${key}\" must be an array when present.`);\n (graph as any)[key] = [];\n } else if (Array.isArray(collection) && collection.length === 0) {\n _addError(diagnostics, `${path}/${key}`, `\"${key}\" must contain at least one item when present.`);\n } else if (Array.isArray(collection)) {\n (graph as any)[key] = collection.map((entry, entryIndex) => {\n if (entry === null || typeof entry !== \"object\" || Array.isArray(entry)) {\n _addError(diagnostics, `${path}/${key}/${entryIndex}`, `Each \"${key}\" item must be an object.`);\n return invalidEntryDefaults[key]();\n }\n return entry;\n });\n }\n }\n for (let eventIndex = 0; eventIndex < (graph.events?.length ?? 0); eventIndex++) {\n const event = graph.events![eventIndex];\n if (event.values !== undefined && !_isRecord(event.values)) {\n _addError(diagnostics, `${path}/events/${eventIndex}/values`, '\"values\" must be an object when present.');\n event.values = undefined;\n } else if (event.values && Object.keys(event.values).length === 0) {\n _addError(diagnostics, `${path}/events/${eventIndex}/values`, '\"values\" must contain at least one property when present.');\n }\n }\n for (let declarationIndex = 0; declarationIndex < (graph.declarations?.length ?? 0); declarationIndex++) {\n const declaration = graph.declarations![declarationIndex];\n for (const key of [\"inputValueSockets\", \"outputValueSockets\"] as const) {\n if (declaration[key] !== undefined && !_isRecord(declaration[key])) {\n _addError(diagnostics, `${path}/declarations/${declarationIndex}/${key}`, `\"${key}\" must be an object when present.`);\n declaration[key] = undefined;\n } else if (declaration[key] && Object.keys(declaration[key]!).length === 0) {\n _addError(diagnostics, `${path}/declarations/${declarationIndex}/${key}`, `\"${key}\" must contain at least one property when present.`);\n }\n }\n }\n for (let nodeIndex = 0; nodeIndex < (graph.nodes?.length ?? 0); nodeIndex++) {\n const node = graph.nodes![nodeIndex];\n for (const key of [\"configuration\", \"values\", \"flows\"] as const) {\n if (node[key] !== undefined && !_isRecord(node[key])) {\n _addError(diagnostics, `${path}/nodes/${nodeIndex}/${key}`, `\"${key}\" must be an object when present.`);\n node[key] = undefined;\n } else if (node[key] && Object.keys(node[key]!).length === 0) {\n _addError(diagnostics, `${path}/nodes/${nodeIndex}/${key}`, `\"${key}\" must contain at least one property when present.`);\n }\n }\n }\n const declarationKeys = new Set<string>();\n const declarations = (graph.declarations ?? []).map((declaration, declarationIndex) => {\n const inputSockets = Object.keys(declaration.inputValueSockets ?? {})\n .sort()\n .map((key) => {\n const definition = declaration.inputValueSockets![key];\n return `${JSON.stringify(key)}:${_isRecord(definition) ? String(definition.type) : \"invalid\"}`;\n })\n .join(\",\");\n const declarationKey = `${JSON.stringify(declaration.op)}:${JSON.stringify(declaration.extension ?? \"\")}:${inputSockets}`;\n if (declarationKeys.has(declarationKey)) {\n _addError(diagnostics, `${path}/declarations/${declarationIndex}`, \"Duplicate equivalent declaration.\");\n }\n declarationKeys.add(declarationKey);\n const { support } = _getDeclarationMapping(declaration, graph, supportedExtensions);\n if (support === \"unknown-core\") {\n _addError(diagnostics, `${path}/declarations/${declarationIndex}/op`, `Unknown core operation \"${declaration.op}\".`);\n }\n if (!declaration.extension && (declaration.inputValueSockets || declaration.outputValueSockets)) {\n _addError(diagnostics, `${path}/declarations/${declarationIndex}`, \"Core operation declarations cannot define dynamic value sockets.\");\n }\n for (const [socket, definition] of Object.entries(declaration.inputValueSockets ?? {})) {\n if (!_isRecord(definition)) {\n _addError(diagnostics, `${path}/declarations/${declarationIndex}/inputValueSockets/${socket}`, `Input value socket \"${socket}\" must be an object.`);\n continue;\n }\n _validateTypeIndex(definition.type, graph, diagnostics, `${path}/declarations/${declarationIndex}/inputValueSockets/${socket}/type`);\n }\n for (const [socket, definition] of Object.entries(declaration.outputValueSockets ?? {})) {\n if (!_isRecord(definition)) {\n _addError(diagnostics, `${path}/declarations/${declarationIndex}/outputValueSockets/${socket}`, `Output value socket \"${socket}\" must be an object.`);\n continue;\n }\n _validateTypeIndex(definition.type, graph, diagnostics, `${path}/declarations/${declarationIndex}/outputValueSockets/${socket}/type`);\n }\n return {\n index: declarationIndex,\n operation: declaration.extension ? `${declaration.op}:${declaration.extension}` : declaration.op,\n support,\n source: declaration,\n };\n });\n\n const signatures = new Set<string>();\n for (let typeIndex = 0; typeIndex < (graph.types?.length ?? 0); typeIndex++) {\n const signature = graph.types![typeIndex].signature;\n if (signature !== \"custom\" && signatures.has(signature)) {\n _addError(diagnostics, `${path}/types/${typeIndex}/signature`, `Duplicate built-in type signature \"${signature}\".`);\n }\n signatures.add(signature);\n if (signature !== \"custom\" && !gltfTypeToBabylonType[signature]) {\n _addError(diagnostics, `${path}/types/${typeIndex}/signature`, `Unknown built-in type signature \"${signature}\".`);\n }\n }\n\n for (let variableIndex = 0; variableIndex < (graph.variables?.length ?? 0); variableIndex++) {\n _validateValue(graph.variables![variableIndex], graph, diagnostics, `${path}/variables/${variableIndex}`);\n }\n for (let eventIndex = 0; eventIndex < (graph.events?.length ?? 0); eventIndex++) {\n const eventId = graph.events![eventIndex].id;\n if (eventId !== undefined && graph.events!.slice(0, eventIndex).some((event) => event.id === eventId)) {\n _addError(diagnostics, `${path}/events/${eventIndex}/id`, `Duplicate event id \"${eventId}\".`);\n }\n if (graph.events![eventIndex].values && Object.prototype.hasOwnProperty.call(graph.events![eventIndex].values, \"event\")) {\n _addError(diagnostics, `${path}/events/${eventIndex}/values/event`, 'Custom event value socket id \"event\" is reserved.');\n }\n for (const [socket, value] of Object.entries(graph.events![eventIndex].values ?? {})) {\n if (!_isRecord(value)) {\n _addError(diagnostics, `${path}/events/${eventIndex}/values/${socket}`, `Event value socket \"${socket}\" must be an object.`);\n continue;\n }\n _validateValue(value, graph, diagnostics, `${path}/events/${eventIndex}/values/${socket}`);\n }\n }\n for (let nodeIndex = 0; nodeIndex < (graph.nodes?.length ?? 0); nodeIndex++) {\n _validateNode(graph.nodes![nodeIndex], nodeIndex, graph, declarations, diagnostics, path, assetNodeCount);\n }\n\n return {\n index,\n path,\n name: graph.name ?? `Graph ${index + 1}`,\n source: graph,\n effectiveSource: CreateEffectiveKHRInteractivityGraph(graph, declarations, assetNodeCount),\n declarations,\n diagnostics,\n valid: !diagnostics.some((diagnostic) => diagnostic.severity === \"error\"),\n };\n}\n\n/**\n * Creates an immutable canonical KHR_interactivity document and validates all graph-local references.\n * @param extension source extension object from the glTF document\n * @param supportedExtensions enabled extensions that may provide executable operations\n * @param assetNodeCount number of nodes in the containing glTF asset\n * @returns the canonical document\n */\nexport function CreateKHRInteractivityDocument(extension: IKHRInteractivity, supportedExtensions?: ReadonlySet<string>, assetNodeCount?: number): IKHRInteractivityDocument {\n const source = _cloneJson(extension);\n const diagnostics: IKHRInteractivityDiagnostic[] = [];\n if (!Array.isArray(source.graphs)) {\n _addError(diagnostics, \"/extensions/KHR_interactivity/graphs\", '\"graphs\" must be an array.');\n source.graphs = [];\n }\n if (source.graphs.length === 0) {\n _addError(diagnostics, \"/extensions/KHR_interactivity/graphs\", \"At least one behavior graph is required.\");\n }\n const requestedDefaultGraphIndex = source.graph ?? 0;\n const defaultGraphIndex = _isValidIndex(requestedDefaultGraphIndex, source.graphs.length) ? requestedDefaultGraphIndex : -1;\n if (defaultGraphIndex === -1) {\n _addError(diagnostics, \"/extensions/KHR_interactivity/graph\", `Default graph index ${String(requestedDefaultGraphIndex)} is out of range.`);\n }\n const graphs = source.graphs.map((graph, index) => CreateKHRInteractivityGraphModel(graph, index, supportedExtensions, assetNodeCount));\n source.graphs = graphs.map((graph) => graph.source);\n\n return {\n specificationCommit: KHR_INTERACTIVITY_SPECIFICATION_COMMIT,\n source,\n defaultGraphIndex,\n graphs,\n diagnostics,\n };\n}\n"]}
@@ -2,6 +2,7 @@ import { type IKHRInteractivity_Graph } from "babylonjs-gltf2interface";
2
2
  import { type IGLTF } from "../../glTFLoaderInterfaces.js";
3
3
  import { type IGLTFToFlowGraphMapping } from "./declarationMapper.js";
4
4
  import { type ISerializedFlowGraph, type ISerializedFlowGraphBlock } from "@babylonjs/core/FlowGraph/typeDefinitions.js";
5
+ import { type FlowGraph } from "@babylonjs/core/FlowGraph/flowGraph.js";
5
6
  import { FlowGraphTypes } from "@babylonjs/core/FlowGraph/flowGraphRichTypes.js";
6
7
  import { type IKHRInteractivityDeclarationModel } from "./interactivityGraphModel.js";
7
8
  /**
@@ -26,6 +27,12 @@ export interface InteractivityEvent {
26
27
  }[];
27
28
  }
28
29
  export { gltfTypeToBabylonType } from "./interactivityGraphModel.js";
30
+ /**
31
+ * Captures import-time defaults for unconnected runtime inputs that have no authored KHR socket.
32
+ * @param flowGraph the fully parsed FlowGraph
33
+ * @internal
34
+ */
35
+ export declare function _CaptureKHRInteractivityRuntimeInputDefaults(flowGraph: FlowGraph): void;
29
36
  /**
30
37
  * Parses a KHR_interactivity graph definition (the raw glTF JSON object) into
31
38
  * the serialized FlowGraph form consumed by {@link ParseFlowGraphAsync}.
@@ -57,10 +64,10 @@ export declare class InteractivityGraphToFlowGraphParser {
57
64
  * the last block) is not disturbed, then concatenated into the serialized graph.
58
65
  */
59
66
  private _insertedBlocks;
60
- constructor(interactivityGraph: IKHRInteractivity_Graph, _gltf: IGLTF, _animationTargetFps?: number, _graphIndex?: number, _supportedExtensions?: ReadonlySet<string> | undefined, _declarationModels?: readonly IKHRInteractivityDeclarationModel[] | undefined);
67
+ constructor(interactivityGraph: IKHRInteractivity_Graph, _gltf: IGLTF, _animationTargetFps?: number, _graphIndex?: number, _supportedExtensions?: ReadonlySet<string> | undefined, _declarationModels?: readonly IKHRInteractivityDeclarationModel[] | undefined, canonicalGraph?: IKHRInteractivity_Graph);
61
68
  private _interactivityGraph;
69
+ private _canonicalGraph;
62
70
  private get _strictValidation();
63
- private _hasDefaultFlowInput;
64
71
  private _getAllowedDynamicValueSockets;
65
72
  private _getAllowedDynamicFlowSockets;
66
73
  get arrays(): {
@@ -91,10 +98,14 @@ export declare class InteractivityGraphToFlowGraphParser {
91
98
  private _normalizeStaticReference;
92
99
  private _parseEvents;
93
100
  private _parseNodes;
101
+ private _createBlockProvenance;
94
102
  private _getEmptyBlock;
103
+ private _setSocketProvenance;
104
+ private _getBlockRole;
95
105
  private _createUnsupportedExtensionBlock;
96
106
  private _parseNodeConfiguration;
97
107
  private _parseNodeConnections;
108
+ private _ensureMappedSocketProvenance;
98
109
  private _createNewSocketConnection;
99
110
  private _isUnsupportedExtensionBlock;
100
111
  /**
@@ -108,6 +119,7 @@ export declare class InteractivityGraphToFlowGraphParser {
108
119
  * @param downstreamInput the data input socket that expects the time in frames
109
120
  * @param nodeIndex source node receiving the converted value
110
121
  * @param declarationIndex source declaration used by the receiving node
122
+ * @param operation owning KHR operation
111
123
  */
112
124
  private _connectWithSecondsToFramesConversion;
113
125
  private _connectFlowGraphNodes;