@noya-app/noya-multiplayer-react 0.1.74 → 0.1.75

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/tree-visit/lib/access.js","../../../node_modules/tree-visit/lib/sort.js","../../../node_modules/tree-visit/lib/ancestors.js","../../../node_modules/tree-visit/lib/diagram/boxDiagram.js","../../../node_modules/tree-visit/lib/diagram/directoryDiagram.js","../../../node_modules/tree-visit/lib/diagram.js","../../../node_modules/tree-visit/lib/visit.js","../../../node_modules/tree-visit/lib/entries.js","../../../node_modules/tree-visit/lib/find.js","../../../node_modules/tree-visit/lib/reduce.js","../../../node_modules/tree-visit/lib/flat.js","../../../node_modules/tree-visit/lib/map.js","../../../node_modules/tree-visit/lib/transformPath.js","../../../node_modules/tree-visit/lib/operation.js","../../../node_modules/tree-visit/lib/insert.js","../../../node_modules/tree-visit/lib/move.js","../../../node_modules/tree-visit/lib/remove.js","../../../node_modules/tree-visit/lib/replace.js","../../../node_modules/tree-visit/lib/splice.js","../../../node_modules/tree-visit/lib/defineTree.js","../../../node_modules/tree-visit/lib/indexPath.js","../../../node_modules/tree-visit/lib/options.js","../../../node_modules/tree-visit/lib/withOptions.js","../../../node_modules/tree-visit/lib/index.js","../../../node_modules/imfs/lib/types.js","../../../node_modules/imfs/lib/node.js","../../../node_modules/imfs/lib/path.js","../../../node_modules/imfs/lib/entries.js","../../../node_modules/imfs/lib/volume/paths.js","../../../node_modules/imfs/lib/volume/read.js","../../../node_modules/imfs/lib/volume/write.js","../../../node_modules/imfs/lib/volume.js","../../../node_modules/imfs/lib/index.js","../src/index.ts","../src/ai.ts","../../../node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/any/any.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/guard/value.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/clone/value.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/clone/type.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/array/array.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/async-iterator/async-iterator.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/discard/discard.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/never/never.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/mapped/mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/constructor/constructor.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/function/function.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/union/union-create.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/guard/kind.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/union/union-evaluated.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/union/union.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/error/error.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/template-literal/parse.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/template-literal/finite.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/template-literal/generate.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/literal/literal.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/boolean/boolean.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/bigint/bigint.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/number/number.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/string/string.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/template-literal/syntax.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/patterns/patterns.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/template-literal/pattern.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/template-literal/union.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/template-literal/template-literal.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-property-keys.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/indexed/indexed.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-key.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/iterator/iterator.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/object/object.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/promise/promise.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/readonly/readonly.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/readonly/readonly-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/tuple/tuple.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/sets/set.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/mapped/mapped.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/optional/optional.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/optional/optional-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-create.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-evaluated.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intersect/intersect.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/awaited/awaited.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-keys.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/keyof/keyof.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/composite/composite.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/date/date.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/null/null.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/symbol/symbol.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/undefined/undefined.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/uint8array/uint8array.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/unknown/unknown.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/const/const.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/constructor-parameters/constructor-parameters.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/deref/deref.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/enum/enum.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/guard/type.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/extends/extends-check.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/extends/extends.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-key.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-template-literal.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/exclude/exclude.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-template-literal.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/extract/extract.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/instance-type/instance-type.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/integer/integer.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic-from-mapped-key.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intrinsic/capitalize.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intrinsic/lowercase.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intrinsic/uncapitalize.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intrinsic/uppercase.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/not/not.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/omit/omit.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-key.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/parameters/parameters.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/partial/partial.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/partial/partial-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/pick/pick.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-key.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/readonly-optional/readonly-optional.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/record/record.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/recursive/recursive.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/ref/ref.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/regexp/regexp.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/registry/format.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/registry/type.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/required/required.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/required/required-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/rest/rest.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/return-type/return-type.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/strict/strict.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/transform/transform.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/unsafe/unsafe.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/type/type.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/void/void.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/type/index.mjs","../../noya-schemas/src/nullable.ts","../../noya-schemas/src/activityEventSchema.ts","../../noya-schemas/src/asset.ts","../../noya-schemas/src/encode.ts","../../noya-schemas/src/filesSchema.ts","../../noya-schemas/src/gitHubSchema.ts","../../noya-schemas/src/jsonSchema.ts","../../noya-schemas/src/input.ts","../../../node_modules/@sinclair/typebox/build/esm/value/guard/guard.mjs","../../../node_modules/@sinclair/typebox/build/esm/system/policy.mjs","../../../node_modules/@sinclair/typebox/build/esm/system/system.mjs","../../../node_modules/@sinclair/typebox/build/esm/value/hash/hash.mjs","../../../node_modules/@sinclair/typebox/build/esm/errors/errors.mjs","../../../node_modules/@sinclair/typebox/build/esm/value/delta/delta.mjs","../../noya-schemas/src/SchemaTree.ts","../../noya-schemas/src/resourceSchema.ts","../../noya-schemas/src/resourceTree.ts","../../noya-schemas/src/index.ts","../src/NoyaStateContext.tsx","../src/noyaApp.ts","../src/hooks.ts","../src/components/ErrorOverlay.tsx","../src/inspector/useStateInspector.tsx","../../noya-utils/src/base64.ts","../../noya-utils/src/invert.ts","../../noya-utils/src/fileType.ts","../../noya-utils/src/memoize.ts","../../noya-utils/src/memoizeDeep.ts","../../../node_modules/uuid/dist/esm-node/rng.js","../../../node_modules/uuid/dist/esm-node/regex.js","../../../node_modules/uuid/dist/esm-node/validate.js","../../../node_modules/uuid/dist/esm-node/stringify.js","../../../node_modules/uuid/dist/esm-node/v4.js","../../noya-utils/src/uuid.ts","../src/inspector/StateInspector.tsx","../src/useObservable.ts","../src/inspector/ColoredDot.tsx","../src/inspector/inspectorTheme.ts","../src/inspector/sections/ActivityEventsSection.tsx","../src/inspector/StateInspectorButton.tsx","../src/inspector/StateInspectorDisclosureSection.tsx","../src/inspector/StateInspectorArrow.tsx","../src/inspector/StateInspectorRow.tsx","../src/inspector/sections/EventsSection.tsx","../src/inspector/ObjectRootLabel.tsx","../src/inspector/sections/HistorySection.tsx","../src/inspector/utils.ts","../src/inspector/sections/ServerScriptLogsSection.tsx","../src/inspector/serialization.ts","../src/inspector/zip/crc32.ts","../src/inspector/zip/struct.ts","../src/inspector/zip/TinyZip.ts","../src/inspector/StateInspectorTitleLabel.tsx","../src/inspector/StateInspectorToggleButton.tsx","../src/inspector/useLocalStorageState.tsx","../src/singleton.tsx","../src/components/UserPointersOverlay.tsx","../src/WebSocketConnection.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.get = get;\nexports.ancestors = ancestors;\nexports.access = access;\nexports.accessPath = accessPath;\n/**\n * Returns a node by its `IndexPath`.\n *\n * The first node is implicitly included in the `IndexPath` (i.e. no need to pass a `0` first in every `IndexPath`).\n */\nfunction get(node, indexPath, options) {\n if (options.includeTraversalContext) {\n const accessed = _getPath(node, indexPath, options);\n return accessed[accessed.length - 1];\n }\n let path = indexPath.slice();\n while (path.length > 0) {\n let index = path.shift();\n const children = options.getChildren(node, path);\n const child = children[index];\n if (!child) {\n return undefined;\n }\n node = child;\n }\n return node;\n}\n/**\n * Returns an array of each node in an `IndexPath`, excluding the last node.\n *\n * The first node is implicitly included in the `IndexPath` (i.e. no need to pass a `0` first in every `IndexPath`).\n */\nfunction ancestors(node, indexPath, options) {\n return _getPath(node, indexPath, options).slice(0, -1);\n}\nfunction _getPath(node, indexPath, options) {\n let path = indexPath.slice();\n let result = [node];\n while (path.length > 0) {\n let index = path.shift();\n const context = options.includeTraversalContext ? makeTraversalContext(result) : undefined;\n const children = options.getChildren(node, path, context);\n const child = children[index];\n if (!child) {\n return result;\n }\n node = child;\n result.push(node);\n }\n return result;\n}\n/**\n * Returns a node by its `IndexPath`.\n *\n * The first node is implicitly included in the `IndexPath` (i.e. no need to pass a `0` first in every `IndexPath`).\n */\nfunction access(node, indexPath, options) {\n if (options.includeTraversalContext) {\n const accessed = accessPath(node, indexPath, options);\n return accessed[accessed.length - 1];\n }\n let path = indexPath.slice();\n while (path.length > 0) {\n let index = path.shift();\n node = options.getChildren(node, path)[index];\n }\n return node;\n}\n/**\n * Returns an array of each node in an `IndexPath`.\n *\n * The first node is implicitly included in the `IndexPath` (i.e. no need to pass a `0` first in every `IndexPath`).\n */\nfunction accessPath(node, indexPath, options) {\n let path = indexPath.slice();\n let result = [node];\n while (path.length > 0) {\n let index = path.shift();\n const context = options.includeTraversalContext ? makeTraversalContext(result) : undefined;\n node = options.getChildren(node, path, context)[index];\n result.push(node);\n }\n return result;\n}\nfunction makeTraversalContext(array) {\n return {\n getRoot: () => array[0],\n getParent: () => array[array.length - 2],\n getAncestors: () => array.slice(0, -1),\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.comparePathsByComponent = comparePathsByComponent;\nexports.sortPaths = sortPaths;\nfunction comparePathsByComponent(a, b) {\n for (let i = 0; i < Math.min(a.length, b.length); i++) {\n if (a[i] < b[i])\n return -1;\n if (a[i] > b[i])\n return 1;\n }\n // If all preceding components are equal, the shorter array comes first\n return a.length - b.length;\n}\nfunction sortPaths(indexPaths) {\n return [...indexPaths].sort(comparePathsByComponent);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ancestorPaths = ancestorPaths;\nconst sort_1 = require(\"./sort\");\n/**\n * This function cleans up the `indexPaths` array by\n *\n * 1. sorting the `indexPaths`\n * 2. removing any `indexPaths` that are descendants of other `indexPaths`\n * 3. removing any `indexPaths` that are duplicates\n */\nfunction ancestorPaths(paths, options) {\n var _a;\n const result = new Map();\n const compare = (_a = options === null || options === void 0 ? void 0 : options.compare) !== null && _a !== void 0 ? _a : sort_1.comparePathsByComponent;\n const sortedIndexPaths = paths.sort(compare);\n for (const indexPath of sortedIndexPaths) {\n const foundParent = indexPath.some((_, index) => {\n const parentKey = indexPath.slice(0, index).join();\n return result.has(parentKey);\n });\n if (foundParent)\n continue;\n result.set(indexPath.join(), indexPath);\n }\n return Array.from(result.values());\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.boxDiagram = boxDiagram;\nvar BoxDrawing;\n(function (BoxDrawing) {\n BoxDrawing[\"TopLeft\"] = \"\\u250C\";\n BoxDrawing[\"TopRight\"] = \"\\u2510\";\n BoxDrawing[\"BottomLeft\"] = \"\\u2514\";\n BoxDrawing[\"BottomRight\"] = \"\\u2518\";\n BoxDrawing[\"Horizontal\"] = \"\\u2500\";\n BoxDrawing[\"Vertical\"] = \"\\u2502\";\n BoxDrawing[\"BottomConnectorDown\"] = \"\\u252C\";\n BoxDrawing[\"BottomConnectorUp\"] = \"\\u2534\";\n BoxDrawing[\"TopConnectorUp\"] = \"\\u2534\";\n})(BoxDrawing || (BoxDrawing = {}));\nfunction wrapLabelInBox(label) {\n const lines = label.split('\\n');\n const length = Math.max(...lines.map((line) => line.length));\n const horizontalMargin = 1;\n const width = length + horizontalMargin * 2 + 2;\n const height = 2 + lines.length;\n const diagram = [\n [\n BoxDrawing.TopLeft,\n BoxDrawing.Horizontal.repeat(length + horizontalMargin * 2),\n BoxDrawing.TopRight,\n ],\n ...lines.map((line) => [\n BoxDrawing.Vertical,\n ' '.repeat(horizontalMargin),\n line + (line.length < length ? ' '.repeat(length - line.length) : ''),\n ' '.repeat(horizontalMargin),\n BoxDrawing.Vertical,\n ]),\n [\n BoxDrawing.BottomLeft,\n BoxDrawing.Horizontal.repeat(length + horizontalMargin * 2),\n BoxDrawing.BottomRight,\n ],\n ];\n return {\n width,\n height,\n contents: diagram.map((parts) => parts.join('')),\n };\n}\nfunction mergeBoxesHorizontal(boxes) {\n const horizontalMargin = 1;\n if (boxes.length === 0) {\n throw new Error(\"Can't merge empty array of boxes\");\n }\n return boxes.slice(1).reduce((result, box) => {\n const height = Math.max(result.height, box.height);\n const width = result.width + horizontalMargin + box.width;\n const contents = [];\n for (let i = 0; i < height; i++) {\n contents.push((result.contents[i] || ' '.repeat(result.width)) +\n ' '.repeat(horizontalMargin) +\n (box.contents[i] || ' '.repeat(box.width)));\n }\n return { height, width, contents: centerBlock(contents, width) };\n }, boxes[0]);\n}\nfunction mergeBoxesVertical(boxes) {\n const verticalMargin = 1;\n if (boxes.length === 0) {\n throw new Error(\"Can't merge empty array of boxes\");\n }\n const width = Math.max(...boxes.map((box) => box.width));\n return boxes.slice(1).reduce((result, box) => {\n const height = result.height + verticalMargin + box.height;\n const contents = [];\n for (let i = 0; i < height; i++) {\n if (i < result.height) {\n contents.push(result.contents[i]);\n }\n else if (i === result.height) {\n contents.push(' '.repeat(width));\n }\n else {\n contents.push(box.contents[i - result.height - 1]);\n }\n }\n return { height, width, contents: centerBlock(contents, width) };\n }, boxes[0]);\n}\nfunction nodeDiagram(node, indexPath, options) {\n const label = options.getLabel(node, indexPath);\n const box = wrapLabelInBox(label);\n const children = options.getChildren(node, indexPath);\n if (children.length === 0)\n return box;\n const childBoxes = children.map((child, index) => {\n const childBox = nodeDiagram(child, [...indexPath, index], options);\n // Draw top connector for each child\n childBox.contents[0] = insertSubstring(childBox.contents[0], centerIndex(childBox.contents[0].length), BoxDrawing.TopConnectorUp);\n return childBox;\n });\n const result = mergeBoxesVertical([box, mergeBoxesHorizontal(childBoxes)]);\n // Draw connectors\n const contents = result.contents;\n const mid = centerIndex(result.width);\n contents[box.height - 1] = insertSubstring(contents[box.height - 1], mid, BoxDrawing.BottomConnectorDown);\n let min = contents[box.height + 1].indexOf(BoxDrawing.TopConnectorUp);\n let max = contents[box.height + 1].lastIndexOf(BoxDrawing.TopConnectorUp);\n for (let i = min; i <= max; i++) {\n let character;\n if (i === mid) {\n character =\n childBoxes.length > 1\n ? BoxDrawing.BottomConnectorUp\n : BoxDrawing.Vertical;\n }\n else if (i === min) {\n character = BoxDrawing.TopLeft;\n }\n else if (i === max) {\n character = BoxDrawing.TopRight;\n }\n else {\n character = BoxDrawing.Horizontal;\n }\n result.contents[box.height] = insertSubstring(result.contents[box.height], i, character);\n }\n return result;\n}\nfunction boxDiagram(node, options) {\n return nodeDiagram(node, [], options).contents.join('\\n');\n}\nfunction centerIndex(width) {\n return Math.floor(width / 2);\n}\nfunction centerLine(line, width) {\n const remainder = width - line.length;\n if (remainder <= 0)\n return line;\n const prefixLength = centerIndex(remainder);\n const suffixLength = centerIndex(remainder);\n const result = ' '.repeat(prefixLength) + line + ' '.repeat(suffixLength);\n return prefixLength + suffixLength + result.length < width\n ? result + ' '\n : result;\n}\nfunction centerBlock(lines, width) {\n return lines.map((line) => centerLine(line, width));\n}\nfunction insertSubstring(string, index, substring) {\n if (index > string.length - 1)\n return string;\n return string.substring(0, index) + substring + string.substring(index + 1);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.directoryDiagram = directoryDiagram;\nexports.isMultiline = isMultiline;\nexports.prefixBlock = prefixBlock;\nvar LinePrefix;\n(function (LinePrefix) {\n LinePrefix[\"Child\"] = \"\\u251C\\u2500\\u2500 \";\n LinePrefix[\"LastChild\"] = \"\\u2514\\u2500\\u2500 \";\n LinePrefix[\"NestedChild\"] = \"\\u2502 \";\n LinePrefix[\"LastNestedChild\"] = \" \";\n})(LinePrefix || (LinePrefix = {}));\nfunction nodeDiagram(node, indexPath, options) {\n const label = options.getLabel(node, indexPath);\n const depth = indexPath.length;\n let rootLine = { label, depth, prefix: '', multilinePrefix: '' };\n const children = options.getChildren(node, indexPath);\n if (children.length === 0)\n return [rootLine];\n // Special-case nodes with a single child, collapsing their labels to a single line\n if (options.flattenSingleChildNodes &&\n children.length === 1 &&\n !isMultiline(label)) {\n const [line] = nodeDiagram(children[0], [...indexPath, 0], options);\n const hideRoot = indexPath.length === 0 && label === '';\n rootLine.label = hideRoot\n ? `/ ${line.label}`\n : `${rootLine.label} / ${line.label}`;\n return [rootLine];\n }\n const nestedLines = children.flatMap((file, index, array) => {\n const childIsLast = index === array.length - 1;\n const childLines = nodeDiagram(file, [...indexPath, index], options);\n const childPrefix = childIsLast ? LinePrefix.LastChild : LinePrefix.Child;\n const childMultilinePrefix = childIsLast\n ? LinePrefix.LastNestedChild\n : LinePrefix.NestedChild;\n childLines.forEach((line) => {\n if (line.depth === depth + 1) {\n line.prefix = childPrefix + line.prefix;\n line.multilinePrefix = childMultilinePrefix + line.multilinePrefix;\n }\n else if (childIsLast) {\n line.prefix = LinePrefix.LastNestedChild + line.prefix;\n line.multilinePrefix = LinePrefix.LastNestedChild + line.multilinePrefix;\n }\n else {\n line.prefix = LinePrefix.NestedChild + line.prefix;\n line.multilinePrefix = LinePrefix.NestedChild + line.multilinePrefix;\n }\n });\n return childLines;\n });\n return [rootLine, ...nestedLines];\n}\nfunction directoryDiagram(node, options) {\n const lines = nodeDiagram(node, [], options);\n const strings = lines.map((line) => prefixBlock(line.label, line.prefix, line.multilinePrefix));\n return strings.join('\\n');\n}\nfunction isMultiline(line) {\n return line.includes('\\n');\n}\nfunction prefixBlock(block, prefix, multilinePrefix) {\n if (!isMultiline(block))\n return prefix + block;\n return block\n .split('\\n')\n .map((line, index) => (index === 0 ? prefix : multilinePrefix) + line)\n .join('\\n');\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diagram = diagram;\nconst boxDiagram_1 = require(\"./diagram/boxDiagram\");\nconst directoryDiagram_1 = require(\"./diagram/directoryDiagram\");\n/**\n * Generate a diagram of the tree, as a string.\n */\nfunction diagram(node, options) {\n if (options.type === 'box') {\n return (0, boxDiagram_1.boxDiagram)(node, options);\n }\n return (0, directoryDiagram_1.directoryDiagram)(node, options);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STOP = exports.SKIP = void 0;\nexports.visit = visit;\nexports.SKIP = 'skip';\nexports.STOP = 'stop';\n/**\n * Visit each node in the tree, calling an optional `onEnter` and `onLeave` for each.\n *\n * From `onEnter`:\n *\n * - return nothing or `undefined` to continue\n * - return `\"skip\"` to skip the children of that node and the subsequent `onLeave`\n * - return `\"stop\"` to end traversal\n *\n * From `onLeave`:\n *\n * - return nothing or `undefined` to continue\n * - return `\"stop\"` to end traversal\n */\nfunction visit(node, options) {\n const { onEnter, onLeave, getChildren: originalGetChildren, onDetectCycle, getIdentifier, direction = 'forward', } = options;\n const getChildren = (node, indexPath, context) => {\n const children = originalGetChildren(node, indexPath, context);\n return direction === 'forward' ? children : children.slice().reverse();\n };\n let indexPath = [];\n let stack = [{ node }];\n const visited = onDetectCycle ? new Set() : undefined;\n const context = options.includeTraversalContext\n ? {\n getRoot() {\n return node;\n },\n getParent() {\n var _a;\n return (_a = stack[stack.length - 2]) === null || _a === void 0 ? void 0 : _a.node;\n },\n getAncestors() {\n return stack.slice(0, -1).map((wrapper) => wrapper.node);\n },\n }\n : undefined;\n const getIndexPath = options.reuseIndexPath\n ? () => indexPath\n : () => indexPath.slice();\n while (stack.length > 0) {\n let wrapper = stack[stack.length - 1];\n // Visit the wrapped node\n if (wrapper.state === undefined) {\n // Add cycle detection before visiting node\n if (visited) {\n const id = getIdentifier ? getIdentifier(wrapper.node) : wrapper.node;\n if (visited.has(id)) {\n const action = typeof onDetectCycle === 'function'\n ? onDetectCycle(wrapper.node, getIndexPath(), context)\n : onDetectCycle;\n if (action === 'error') {\n throw new Error('Cycle detected in tree');\n }\n else {\n // action === 'skip'\n wrapper.state = -1; // Mark as skipped\n continue;\n }\n }\n visited.add(id);\n }\n const enterResult = onEnter === null || onEnter === void 0 ? void 0 : onEnter(wrapper.node, getIndexPath());\n if (enterResult === exports.STOP)\n return;\n wrapper.state = enterResult === exports.SKIP ? -1 : 0;\n }\n const children = wrapper.children || getChildren(wrapper.node, getIndexPath(), context);\n if (!wrapper.children) {\n wrapper.children = children;\n }\n // If the node wasn't skipped\n if (wrapper.state !== -1) {\n // Visit the next child\n if (wrapper.state < children.length) {\n let currentIndex = wrapper.state;\n indexPath.push(direction === 'forward'\n ? currentIndex\n : children.length - currentIndex - 1);\n stack.push({ node: children[currentIndex] });\n wrapper.state = currentIndex + 1;\n continue;\n }\n const leaveResult = onLeave === null || onLeave === void 0 ? void 0 : onLeave(wrapper.node, getIndexPath());\n if (leaveResult === exports.STOP)\n return;\n }\n // Remove node from visited set when leaving\n if (visited) {\n const id = getIdentifier ? getIdentifier(wrapper.node) : wrapper.node;\n visited.delete(id);\n }\n indexPath.pop();\n stack.pop();\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.entries = entries;\nconst visit_1 = require(\"./visit\");\nfunction entries(node, options) {\n let result = [];\n (0, visit_1.visit)(node, Object.assign(Object.assign({}, options), { onEnter: (item, indexPath) => {\n result.push([indexPath, item]);\n } }));\n return result;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.find = find;\nexports.findAll = findAll;\nexports.findPath = findPath;\nexports.findAllPaths = findAllPaths;\nconst visit_1 = require(\"./visit\");\nfunction find(node, options) {\n let found;\n (0, visit_1.visit)(node, Object.assign(Object.assign({}, options), { onEnter: (child, indexPath) => {\n if (options.predicate(child, indexPath)) {\n found = child;\n return visit_1.STOP;\n }\n } }));\n return found;\n}\nfunction findAll(node, options) {\n let found = [];\n (0, visit_1.visit)(node, {\n onEnter: (child, indexPath) => {\n if (options.predicate(child, indexPath)) {\n found.push(child);\n }\n },\n getChildren: options.getChildren,\n });\n return found;\n}\n/**\n * Find the `IndexPath` of a node matching a predicate function.\n */\nfunction findPath(node, options) {\n let found;\n (0, visit_1.visit)(node, {\n onEnter: (child, indexPath) => {\n if (options.predicate(child, indexPath)) {\n // Copy the indexPath, since indexPath may be mutated\n found = [...indexPath];\n return visit_1.STOP;\n }\n },\n getChildren: options.getChildren,\n });\n return found;\n}\n/**\n * Find the `IndexPath` of all nodes matching a predicate function.\n */\nfunction findAllPaths(node, options) {\n let found = [];\n (0, visit_1.visit)(node, {\n onEnter: (child, indexPath) => {\n if (options.predicate(child, indexPath)) {\n // Copy the indexPath, since indexPath may be mutated\n found.push([...indexPath]);\n }\n },\n getChildren: options.getChildren,\n });\n return found;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reduce = reduce;\nconst visit_1 = require(\"./visit\");\nfunction reduce(node, options) {\n let result = options.initialResult;\n (0, visit_1.visit)(node, Object.assign(Object.assign({}, options), { onEnter: (child, indexPath) => {\n result = options.nextResult(result, child, indexPath);\n } }));\n return result;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flat = flat;\nconst reduce_1 = require(\"./reduce\");\n/**\n * Returns an array containing the root node and all of its descendants.\n *\n * This is analogous to `Array.prototype.flat` for flattening arrays.\n */\nfunction flat(node, options) {\n return (0, reduce_1.reduce)(node, Object.assign(Object.assign({}, options), { initialResult: [], nextResult: (result, child) => {\n result.push(child);\n return result;\n } }));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.map = map;\nexports.flatMap = flatMap;\nconst visit_1 = require(\"./visit\");\n/**\n * Map each node into a new node.\n *\n * The shape of the tree remains the same. You can omit nodes from the tree by\n * filtering them out of the `transformedChildren` argument. The root can't be omitted.\n */\nfunction map(node, options) {\n return flatMap(node, Object.assign(Object.assign({}, options), { transform: (node, transformedChildren, indexPath) => [\n options.transform(node, transformedChildren, indexPath),\n ] }));\n}\n/**\n * Map each node into an array of new nodes.\n *\n * You can omit nodes from the tree by returning an empty array from the `transform` function.\n * The first element of the returned top-level array will be the new root.\n */\nfunction flatMap(node, options) {\n const childrenMap = {};\n (0, visit_1.visit)(node, Object.assign(Object.assign({}, options), { onLeave: (child, indexPath) => {\n var _a, _b;\n // Add a 0 so we can always slice off the last element to get a unique parent key\n const keyIndexPath = [0, ...indexPath];\n const key = keyIndexPath.join();\n const transformed = options.transform(child, (_a = childrenMap[key]) !== null && _a !== void 0 ? _a : [], indexPath);\n const parentKey = keyIndexPath.slice(0, -1).join();\n const parentChildren = (_b = childrenMap[parentKey]) !== null && _b !== void 0 ? _b : [];\n parentChildren.push(...transformed);\n childrenMap[parentKey] = parentChildren;\n } }));\n return childrenMap[''][0];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformPath = transformPath;\nconst sort_1 = require(\"./sort\");\nfunction commonAncestor(path, otherPath) {\n const length = Math.min(path.length, otherPath.length);\n for (let i = 0; i < length; i++) {\n if (path[i] !== otherPath[i]) {\n return path.slice(0, i);\n }\n }\n return path.slice(0, length);\n}\nfunction transformPath(path, operation, otherPath, count = 1) {\n if (otherPath.length > path.length ||\n (0, sort_1.comparePathsByComponent)(otherPath, path) > 0) {\n return path;\n }\n if (otherPath.length === 0 && operation === 'remove') {\n return undefined;\n }\n const common = commonAncestor(path, otherPath);\n const adjustmentIndex = common.length === path.length || common.length === otherPath.length\n ? common.length - 1\n : common.length;\n const pathValue = path[adjustmentIndex];\n const otherPathValue = otherPath[adjustmentIndex];\n if (operation === 'insert' && otherPathValue <= pathValue) {\n const newPath = [...path];\n newPath[adjustmentIndex] += count;\n return newPath;\n }\n else if (operation === 'remove') {\n if (otherPathValue === pathValue) {\n return undefined;\n }\n else if (otherPathValue < pathValue) {\n const newPath = [...path];\n newPath[adjustmentIndex] -= count;\n return newPath;\n }\n }\n return path;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.insertOperation = insertOperation;\nexports.removeOperation = removeOperation;\nexports.replaceOperation = replaceOperation;\nexports.getInsertionOperations = getInsertionOperations;\nexports.getRemovalOperations = getRemovalOperations;\nexports.getReplaceOperations = getReplaceOperations;\nexports.applyOperations = applyOperations;\nexports.arraySplice = arraySplice;\nexports.transformPathsByOperations = transformPathsByOperations;\nconst ancestors_1 = require(\"./ancestors\");\nconst map_1 = require(\"./map\");\nconst transformPath_1 = require(\"./transformPath\");\nfunction insertOperation(index, nodes) {\n return {\n type: 'insert',\n index,\n nodes,\n };\n}\nfunction removeOperation(indexes) {\n return {\n type: 'remove',\n indexes,\n };\n}\nfunction replaceOperation() {\n return {\n type: 'replace',\n };\n}\nfunction splitIndexPath(indexPath) {\n return [indexPath.slice(0, -1), indexPath[indexPath.length - 1]];\n}\nfunction getInsertionOperations(indexPath, nodes, operations = new Map()) {\n var _a;\n const [parentIndexPath, index] = splitIndexPath(indexPath);\n // Mark all parents for replacing\n for (let i = parentIndexPath.length - 1; i >= 0; i--) {\n const parentKey = parentIndexPath.slice(0, i).join();\n switch ((_a = operations.get(parentKey)) === null || _a === void 0 ? void 0 : _a.type) {\n case 'remove':\n continue;\n }\n operations.set(parentKey, replaceOperation());\n }\n const operation = operations.get(parentIndexPath.join());\n // Mark insertion node\n switch (operation === null || operation === void 0 ? void 0 : operation.type) {\n case 'remove':\n operations.set(parentIndexPath.join(), {\n type: 'removeThenInsert',\n removeIndexes: operation.indexes,\n insertIndex: index,\n insertNodes: nodes,\n });\n break;\n default:\n operations.set(parentIndexPath.join(), insertOperation(index, nodes));\n }\n return operations;\n}\nfunction getRemovalOperations(indexPaths) {\n var _a, _b;\n const _ancestorIndexPaths = (0, ancestors_1.ancestorPaths)(indexPaths);\n const indexesToRemove = new Map();\n for (const indexPath of _ancestorIndexPaths) {\n const parentKey = indexPath.slice(0, -1).join();\n const value = (_a = indexesToRemove.get(parentKey)) !== null && _a !== void 0 ? _a : [];\n value.push(indexPath[indexPath.length - 1]);\n indexesToRemove.set(parentKey, value);\n }\n const operations = new Map();\n // Mark all parents for replacing\n for (const indexPath of _ancestorIndexPaths) {\n for (let i = indexPath.length - 1; i >= 0; i--) {\n const parentKey = indexPath.slice(0, i).join();\n operations.set(parentKey, replaceOperation());\n }\n }\n // Mark all nodes for removal\n for (const indexPath of _ancestorIndexPaths) {\n const parentKey = indexPath.slice(0, -1).join();\n operations.set(parentKey, removeOperation((_b = indexesToRemove.get(parentKey)) !== null && _b !== void 0 ? _b : []));\n }\n return operations;\n}\nfunction getReplaceOperations(indexPath, node) {\n const operations = new Map();\n const [parentIndexPath, index] = splitIndexPath(indexPath);\n // Mark all parents for replacing\n for (let i = parentIndexPath.length - 1; i >= 0; i--) {\n const parentKey = parentIndexPath.slice(0, i).join();\n operations.set(parentKey, replaceOperation());\n }\n operations.set(parentIndexPath.join(), {\n type: 'removeThenInsert',\n removeIndexes: [index],\n insertIndex: index,\n insertNodes: [node],\n });\n return operations;\n}\nfunction adjustInsertIndex(index, removeIndexes) {\n return removeIndexes.reduce((index, removedIndex) => (removedIndex < index ? index - 1 : index), index);\n}\nfunction applyOperations(node, operations, options) {\n return (0, map_1.map)(node, Object.assign(Object.assign({}, options), { \n // Avoid calling `getChildren` for every node in the tree.\n // Return [] if we're just going to return the original node anyway.\n getChildren: (node, indexPath) => {\n const key = indexPath.join();\n const operation = operations.get(key);\n switch (operation === null || operation === void 0 ? void 0 : operation.type) {\n case 'replace':\n case 'remove':\n case 'removeThenInsert':\n case 'insert':\n return options.getChildren(node, indexPath);\n default:\n return [];\n }\n }, transform: (node, children, indexPath) => {\n const key = indexPath.join();\n const operation = operations.get(key);\n switch (operation === null || operation === void 0 ? void 0 : operation.type) {\n case 'remove':\n return options.create(node, children.filter((_, index) => !operation.indexes.includes(index)), indexPath);\n case 'removeThenInsert':\n const updatedChildren = children.filter((_, index) => !operation.removeIndexes.includes(index));\n const adjustedIndex = adjustInsertIndex(operation.insertIndex, operation.removeIndexes);\n return options.create(node, arraySplice(updatedChildren, adjustedIndex, 0, ...operation.insertNodes), indexPath);\n case 'insert':\n return options.create(node, arraySplice(children, operation.index, 0, ...operation.nodes), indexPath);\n case 'replace':\n return options.create(node, children, indexPath);\n default:\n return node;\n }\n } }));\n}\nfunction arraySplice(array, start, deleteCount, ...items) {\n return [\n ...array.slice(0, start),\n ...items,\n ...array.slice(start + deleteCount),\n ];\n}\nfunction transformPathsByOperations(paths, operations) {\n let transformedPaths = paths;\n for (const [parentKey, operation] of operations.entries()) {\n const parentPath = parentKey ? parentKey.split(',').map(Number) : [];\n transformedPaths = transformByOperation(transformedPaths, parentPath, operation);\n }\n return transformedPaths;\n}\nfunction transformByOperation(transformedPaths, parentPath, operation) {\n switch (operation.type) {\n case 'insert': {\n const otherPath = parentPath.concat(operation.index);\n return transformedPaths.map((path) => path\n ? (0, transformPath_1.transformPath)(path, 'insert', otherPath, operation.nodes.length)\n : undefined);\n }\n case 'remove': {\n const otherPaths = [...operation.indexes]\n .reverse()\n .map((index) => parentPath.concat(index));\n return transformedPaths.map((path) => {\n for (const otherPath of otherPaths) {\n path = path ? (0, transformPath_1.transformPath)(path, 'remove', otherPath) : undefined;\n }\n return path;\n });\n }\n case 'removeThenInsert': {\n const result = transformByOperation(transformedPaths, parentPath, {\n type: 'remove',\n indexes: operation.removeIndexes,\n });\n const insertIndex = adjustInsertIndex(operation.insertIndex, operation.removeIndexes);\n return transformByOperation(result, parentPath, {\n type: 'insert',\n index: insertIndex,\n nodes: operation.insertNodes,\n });\n }\n case 'replace': {\n return transformedPaths;\n }\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.insert = insert;\nexports.insertWithPathTracking = insertWithPathTracking;\nconst operation_1 = require(\"./operation\");\n/**\n * Insert nodes at a given `IndexPath`.\n */\nfunction insert(node, options) {\n return _insertWithPathTracking(node, options).node;\n}\n/**\n * Insert nodes at a given `IndexPath`.\n */\nfunction insertWithPathTracking(node, options) {\n return _insertWithPathTracking(node, options);\n}\nfunction _insertWithPathTracking(node, options) {\n const { nodes, path: at, track } = options;\n if (at.length === 0) {\n throw new Error(`Can't insert nodes at the root`);\n }\n const state = (0, operation_1.getInsertionOperations)(at, nodes);\n const transformedPaths = track ? (0, operation_1.transformPathsByOperations)(track, state) : [];\n return {\n node: (0, operation_1.applyOperations)(node, state, options),\n paths: transformedPaths,\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.move = move;\nconst access_1 = require(\"./access\");\nconst ancestors_1 = require(\"./ancestors\");\nconst operation_1 = require(\"./operation\");\nfunction move(node, options) {\n if (options.paths.length === 0)\n return node;\n for (const indexPath of options.paths) {\n if (indexPath.length === 0) {\n throw new Error(`Can't move the root node`);\n }\n }\n if (options.to.length === 0) {\n throw new Error(`Can't move nodes to the root`);\n }\n const _ancestorIndexPaths = (0, ancestors_1.ancestorPaths)(options.paths);\n const nodesToInsert = _ancestorIndexPaths.map((indexPath) => (0, access_1.access)(node, indexPath, options));\n const operations = (0, operation_1.getInsertionOperations)(options.to, nodesToInsert, (0, operation_1.getRemovalOperations)(_ancestorIndexPaths));\n return (0, operation_1.applyOperations)(node, operations, options);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.remove = remove;\nexports.removeWithPathTracking = removeWithPathTracking;\nconst operation_1 = require(\"./operation\");\n/**\n * Remove nodes at the given `IndexPath`s.\n */\nfunction remove(node, options) {\n return _removeWithPathTracking(node, options).node;\n}\n/**\n * Remove nodes at the given `IndexPath`s.\n */\nfunction removeWithPathTracking(node, options) {\n return _removeWithPathTracking(node, options);\n}\nfunction _removeWithPathTracking(node, options) {\n const { paths, track } = options;\n const operations = (0, operation_1.getRemovalOperations)(paths);\n const transformedPaths = track\n ? (0, operation_1.transformPathsByOperations)(track, operations)\n : [];\n return {\n node: (0, operation_1.applyOperations)(node, operations, options),\n paths: transformedPaths,\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.replace = replace;\nconst operation_1 = require(\"./operation\");\n/**\n * Replace the node at the given `IndexPath` with another.\n */\nfunction replace(node, options) {\n if (options.path.length === 0)\n return options.node;\n const operations = (0, operation_1.getReplaceOperations)(options.path, options.node);\n return (0, operation_1.applyOperations)(node, operations, options);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splice = splice;\nexports.spliceWithPathTracking = spliceWithPathTracking;\nconst operation_1 = require(\"./operation\");\nfunction splice(node, options) {\n return _spliceWithPathTracking(node, options).node;\n}\nfunction spliceWithPathTracking(node, options) {\n return _spliceWithPathTracking(node, options);\n}\nfunction _spliceWithPathTracking(node, options) {\n const { path, deleteCount = 0, nodes, track } = options;\n if (path.length === 0) {\n throw new Error(`Can't splice at the root`);\n }\n const pathsToRemove = getPathsToRemove(path, deleteCount);\n const operations = (0, operation_1.getInsertionOperations)(path, nodes, (0, operation_1.getRemovalOperations)(pathsToRemove));\n const transformedPaths = track\n ? (0, operation_1.transformPathsByOperations)(track, operations)\n : [];\n return {\n node: (0, operation_1.applyOperations)(node, operations, options),\n paths: transformedPaths,\n };\n}\nfunction getPathsToRemove(path, deleteCount) {\n let pathsToRemove = [];\n let parentPath = path.slice(0, -1);\n let index = path[path.length - 1];\n for (let i = 0; i < deleteCount; i++) {\n pathsToRemove.push(parentPath.concat(index + i));\n }\n return pathsToRemove;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defineTree = defineTree;\nconst access_1 = require(\"./access\");\nconst diagram_1 = require(\"./diagram\");\nconst entries_1 = require(\"./entries\");\nconst find_1 = require(\"./find\");\nconst flat_1 = require(\"./flat\");\nconst insert_1 = require(\"./insert\");\nconst map_1 = require(\"./map\");\nconst move_1 = require(\"./move\");\nconst reduce_1 = require(\"./reduce\");\nconst remove_1 = require(\"./remove\");\nconst replace_1 = require(\"./replace\");\nconst splice_1 = require(\"./splice\");\nconst visit_1 = require(\"./visit\");\nclass Tree {\n constructor(getChildrenOrBaseOptions, appliedOptions) {\n this.appliedOptions = appliedOptions;\n /**\n * Returns the node's children.\n *\n * This is the same as the `getChildren` option passed to `defineTree`, included here for convenience.\n */\n this.getChildren = (node, indexPath, context) => {\n return this._getChildren(node, indexPath, context);\n };\n this.mergeOptions = (options) => (Object.assign(Object.assign(Object.assign({}, this.baseOptions), this.appliedOptions), options));\n this.withOptions = (newOptions) => new Tree(this.baseOptions, Object.assign(Object.assign({}, this.appliedOptions), newOptions));\n /**\n * Returns a node by its `IndexPath`.\n *\n * The first node is implicitly included in the `IndexPath` (i.e. no need to pass a `0` first in every `IndexPath`).\n */\n this.access = (node, indexPath) => (0, access_1.access)(node, indexPath, this.mergeOptions({}));\n /**\n * Returns an array of each node in an `IndexPath`.\n *\n * The first node is implicitly included in the `IndexPath` (i.e. no need to pass a `0` first in every `IndexPath`).\n */\n this.accessPath = (node, indexPath) => (0, access_1.accessPath)(node, indexPath, this.mergeOptions({}));\n /**\n * Returns a node by its `IndexPath`.\n *\n * The first node is implicitly included in the `IndexPath` (i.e. no need to pass a `0` first in every `IndexPath`).\n */\n this.get = (node, indexPath) => (0, access_1.get)(node, indexPath, this.mergeOptions({}));\n /**\n * Returns the ancestors of a node.\n */\n this.ancestors = (node, indexPath) => (0, access_1.ancestors)(node, indexPath, this.mergeOptions({}));\n /**\n * Generate a diagram of the tree, as a string.\n */\n this.diagram = (node, options) => typeof options === 'function'\n ? (0, diagram_1.diagram)(node, this.mergeOptions({ getLabel: options }))\n : (0, diagram_1.diagram)(node, this.mergeOptions(options));\n this.find = (node, predicateOrOptions) => typeof predicateOrOptions === 'function'\n ? (0, find_1.find)(node, this.mergeOptions({ predicate: predicateOrOptions }))\n : (0, find_1.find)(node, this.mergeOptions(Object.assign({}, predicateOrOptions)));\n this.findAll = (node, predicateOrOptions) => typeof predicateOrOptions === 'function'\n ? (0, find_1.findAll)(node, this.mergeOptions({ predicate: predicateOrOptions }))\n : (0, find_1.findAll)(node, this.mergeOptions(Object.assign({}, predicateOrOptions)));\n this.findPath = (node, predicateOrOptions) => typeof predicateOrOptions === 'function'\n ? (0, find_1.findPath)(node, this.mergeOptions({ predicate: predicateOrOptions }))\n : (0, find_1.findPath)(node, this.mergeOptions(Object.assign({}, predicateOrOptions)));\n this.findAllPaths = (node, predicateOrOptions) => typeof predicateOrOptions === 'function'\n ? (0, find_1.findAllPaths)(node, this.mergeOptions({ predicate: predicateOrOptions }))\n : (0, find_1.findAllPaths)(node, this.mergeOptions(Object.assign({}, predicateOrOptions)));\n /**\n * Returns an array of every [IndexPath, Node] pair in the tree.\n */\n this.entries = (node) => (0, entries_1.entries)(node, this.mergeOptions({}));\n /**\n * Returns an array containing the root node and all of its descendants.\n *\n * This is analogous to `Array.prototype.flat` for flattening arrays.\n */\n this.flat = (node) => (0, flat_1.flat)(node, this.mergeOptions({}));\n this.reduce = (node, nextResult, initialResult) => (0, reduce_1.reduce)(node, this.mergeOptions({ nextResult, initialResult }));\n this.map = (node, transform) => (0, map_1.map)(node, this.mergeOptions({ transform }));\n this.flatMap = (node, transform) => (0, map_1.flatMap)(node, this.mergeOptions({ transform }));\n this.visit = (node, onEnterOrOptions) => typeof onEnterOrOptions === 'function'\n ? (0, visit_1.visit)(node, this.mergeOptions({ onEnter: onEnterOrOptions }))\n : (0, visit_1.visit)(node, this.mergeOptions(Object.assign({}, onEnterOrOptions)));\n // --- Mutations ---\n /**\n * Insert nodes at a given `IndexPath`.\n */\n this.insert = (node, options) => (0, insert_1.insert)(node, this.mergeOptions(options));\n /**\n * Insert nodes at a given `IndexPath`.\n */\n this.insertWithPathTracking = (node, options) => (0, insert_1.insertWithPathTracking)(node, this.mergeOptions(options));\n /**\n * Remove nodes at the given `IndexPath`s.\n */\n this.remove = (node, options) => (0, remove_1.remove)(node, this.mergeOptions(options));\n /**\n * Remove nodes at the given `IndexPath`s.\n */\n this.removeWithPathTracking = (node, options) => (0, remove_1.removeWithPathTracking)(node, this.mergeOptions(options));\n /**\n * Move nodes from one `IndexPath` to another.\n */\n this.move = (node, options) => (0, move_1.move)(node, this.mergeOptions(options));\n /**\n * Replace nodes at the given `IndexPath`s with another node.\n */\n this.splice = (node, options) => (0, splice_1.splice)(node, this.mergeOptions(options));\n /**\n * Replace nodes at the given `IndexPath`s with another node.\n */\n this.spliceWithPathTracking = (node, options) => (0, splice_1.spliceWithPathTracking)(node, this.mergeOptions(options));\n /**\n * Replace the node at the given `IndexPath` with another\n */\n this.replace = (node, options) => (0, replace_1.replace)(node, this.mergeOptions(options));\n this.baseOptions =\n typeof getChildrenOrBaseOptions === 'function'\n ? { getChildren: getChildrenOrBaseOptions }\n : getChildrenOrBaseOptions;\n this._getChildren = this.baseOptions.getChildren;\n }\n}\nfunction defineTree(getChildren) {\n return new Tree(getChildren, {});\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withOptions = void 0;\nconst defineTree_1 = require(\"./defineTree\");\n/**\n * Return every tree utility function with options partially applied.\n *\n * @deprecated Use `defineTree` instead\n */\nexports.withOptions = defineTree_1.defineTree;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./access\"), exports);\n__exportStar(require(\"./ancestors\"), exports);\n__exportStar(require(\"./defineTree\"), exports);\n__exportStar(require(\"./diagram\"), exports);\n__exportStar(require(\"./entries\"), exports);\n__exportStar(require(\"./find\"), exports);\n__exportStar(require(\"./flat\"), exports);\n__exportStar(require(\"./indexPath\"), exports);\n__exportStar(require(\"./insert\"), exports);\n__exportStar(require(\"./map\"), exports);\n__exportStar(require(\"./move\"), exports);\n__exportStar(require(\"./options\"), exports);\n__exportStar(require(\"./reduce\"), exports);\n__exportStar(require(\"./remove\"), exports);\n__exportStar(require(\"./replace\"), exports);\n__exportStar(require(\"./sort\"), exports);\n__exportStar(require(\"./splice\"), exports);\n__exportStar(require(\"./transformPath\"), exports);\n__exportStar(require(\"./visit\"), exports);\n__exportStar(require(\"./withOptions\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Nodes = void 0;\nfunction createFile(data, metadata) {\n return { type: 'file', data, metadata };\n}\nfunction createDirectory(children = {}, metadata) {\n return { type: 'directory', children, metadata };\n}\nfunction isFile(node) {\n return node.type === 'file';\n}\nfunction isDirectory(node) {\n return node.type === 'directory';\n}\nfunction getMetadata(node) {\n return node.metadata;\n}\nfunction readDirectory(directory) {\n return Object.keys(directory.children);\n}\nfunction getChild(directory, name) {\n return directory.children[name];\n}\nfunction hasChild(directory, name) {\n return name in directory.children;\n}\nexports.Nodes = {\n createDirectory,\n createFile,\n getChild,\n getMetadata,\n hasChild,\n isDirectory,\n isFile,\n readDirectory,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dirname = exports.basename = exports.extname = exports.join = exports.normalize = exports.sep = void 0;\nexports.sep = '/';\nfunction preserveLeadingAndTrailingSlash(original, updated) {\n if (original.startsWith('/')) {\n updated = '/' + updated;\n }\n if (updated[updated.length - 1] !== '/' && original.endsWith('/')) {\n updated = updated + '/';\n }\n return updated;\n}\nfunction normalize(filename) {\n const components = filename.split(exports.sep).filter((component) => !!component);\n let i = 0;\n let length = components.length - 1;\n while (i < length) {\n if (components[i] === '.') {\n components.splice(i, 1);\n length--;\n }\n else if (components[i] === '..' && i !== 0) {\n components.splice(i - 1, 2);\n length -= 2;\n i -= 1;\n }\n else if (components[i] === '' && components[i + 1] === '') {\n // Consecutive \"/\"\n components.splice(i, 1);\n length--;\n }\n else {\n i++;\n }\n }\n return preserveLeadingAndTrailingSlash(filename, components.join(exports.sep));\n}\nexports.normalize = normalize;\nfunction join(...components) {\n let result = normalize(components.join(exports.sep));\n if (result === '') {\n result = '.';\n }\n return result;\n}\nexports.join = join;\nfunction extname(filename) {\n const index = filename.lastIndexOf('.');\n return index !== -1 ? filename.slice(index) : filename;\n}\nexports.extname = extname;\nfunction basename(filename, extname) {\n if (extname && filename.endsWith(extname)) {\n filename = filename.slice(0, -extname.length);\n }\n let sepIndex = filename.lastIndexOf(exports.sep);\n // If the seperator index is the last character, omit it\n if (sepIndex === filename.length - 1) {\n filename = filename.slice(0, -1);\n return filename.length > 1 ? basename(filename) : filename;\n }\n return filename.slice(sepIndex + 1);\n}\nexports.basename = basename;\nfunction dirname(filename) {\n let base = basename(filename);\n let result = filename.slice(0, -(base.length + 1));\n if (result === '') {\n if (filename.startsWith(exports.sep)) {\n result = exports.sep;\n }\n else {\n result = '.';\n }\n }\n return result;\n}\nexports.dirname = dirname;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Entries = void 0;\nconst node_1 = require(\"./node\");\nconst path_1 = require(\"./path\");\nfunction getEntries(entry) {\n const [pathname, node] = entry;\n return node_1.Nodes.isDirectory(node)\n ? Object.entries(node.children).map(([key, value]) => [\n (0, path_1.join)(pathname, key),\n value,\n ])\n : [];\n}\nfunction createEntry(pathname, node) {\n return [pathname, node];\n}\nexports.Entries = {\n createEntry,\n getEntries,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getNewAndParentName = exports.normalizePathLikeInternal = exports.getPathComponents = void 0;\nconst path_1 = require(\"../path\");\nfunction getPathComponents(filepath) {\n return getPathComponentsNormalized((0, path_1.normalize)(filepath));\n function getPathComponentsNormalized(filepath) {\n if (filepath.startsWith('..')) {\n throw new Error(`Invalid path ${filepath}, can't go up past root.`);\n }\n if (filepath.startsWith('.') || filepath.startsWith('/')) {\n return getPathComponentsNormalized(filepath.slice(1));\n }\n if (filepath === '')\n return [];\n return filepath.split(path_1.sep).filter((component) => !!component);\n }\n}\nexports.getPathComponents = getPathComponents;\nfunction normalizePathLikeInternal(pathlike) {\n return typeof pathlike === 'string' ? getPathComponents(pathlike) : pathlike;\n}\nexports.normalizePathLikeInternal = normalizePathLikeInternal;\nfunction getNewAndParentName(pathlike) {\n const parentName = typeof pathlike === 'string' ? (0, path_1.dirname)(pathlike) : pathlike.slice(0, -1);\n const newName = typeof pathlike === 'string'\n ? (0, path_1.basename)(pathlike)\n : pathlike[pathlike.length - 1];\n return { parentName, newName };\n}\nexports.getNewAndParentName = getNewAndParentName;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMetadata = exports.readDirectory = exports.readFile = exports.getNode = exports.getNodeInternal = void 0;\nconst node_1 = require(\"../node\");\nconst path_1 = require(\"../path\");\nconst paths_1 = require(\"./paths\");\nfunction getNodeInternal(root, pathlike, options) {\n const components = (0, paths_1.normalizePathLikeInternal)(pathlike);\n let i = 0;\n let current = root;\n while (i < components.length) {\n let component = components[i];\n if (current.type !== 'directory') {\n throw new Error(`File ${(0, path_1.join)(...components.slice(0, i))} is not a directory`);\n }\n let node = node_1.Nodes.getChild(current, component);\n if (!node) {\n // Assumes we're in a writable draft\n if (options\n .makeIntermediateDirectoryMetadata) {\n const child = node_1.Nodes.createDirectory({}, options\n .makeIntermediateDirectoryMetadata((0, path_1.join)(...components.slice(0, i + 1))));\n current.children[component] = child;\n node = child;\n }\n else if (options.makeIntermediateDirectories) {\n const child = node_1.Nodes.createDirectory();\n current.children[component] = child;\n node = child;\n }\n else {\n throw new Error(`File ${(0, path_1.join)(...components.slice(0, i + 1))} not found`);\n }\n }\n current = node;\n i++;\n }\n return current;\n}\nexports.getNodeInternal = getNodeInternal;\nfunction getNode(root, pathlike) {\n return getNodeInternal(root, pathlike, {});\n}\nexports.getNode = getNode;\nfunction readFile(root, pathlike) {\n const components = (0, paths_1.normalizePathLikeInternal)(pathlike);\n const node = getNode(root, components);\n if (!node_1.Nodes.isFile(node)) {\n throw new Error(`Can't read, ${(0, path_1.join)(...components)} not a file`);\n }\n return node.data;\n}\nexports.readFile = readFile;\nfunction readDirectory(root, pathlike) {\n const components = (0, paths_1.normalizePathLikeInternal)(pathlike);\n const node = getNode(root, components);\n if (!node_1.Nodes.isDirectory(node)) {\n throw new Error(`Can't read, ${(0, path_1.join)(...components)} not a directory`);\n }\n return node_1.Nodes.readDirectory(node);\n}\nexports.readDirectory = readDirectory;\nfunction getMetadata(root, pathlike) {\n const components = (0, paths_1.normalizePathLikeInternal)(pathlike);\n const node = getNode(root, components);\n return node.metadata;\n}\nexports.getMetadata = getMetadata;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.create = exports.setMetadata = exports.removeFile = exports.makeDirectory = exports.writeFile = exports.setNode = void 0;\nconst node_1 = require(\"../node\");\nconst paths_1 = require(\"./paths\");\nconst read_1 = require(\"./read\");\nfunction setNode(root, pathlike, node, options) {\n const { parentName, newName } = (0, paths_1.getNewAndParentName)(pathlike);\n const parent = (0, read_1.getNodeInternal)(root, parentName, options !== null && options !== void 0 ? options : {});\n if (!node_1.Nodes.isDirectory(parent)) {\n throw new Error(`Can't create ${newName}, ${parentName} not a directory`);\n }\n parent.children[newName] = node;\n}\nexports.setNode = setNode;\nfunction writeFile(root, pathlike, data, options) {\n var _a;\n setNode(root, pathlike, node_1.Nodes.createFile(data, (_a = options) === null || _a === void 0 ? void 0 : _a.metadata), options);\n}\nexports.writeFile = writeFile;\nfunction makeDirectory(root, pathlike, options) {\n var _a;\n const { parentName, newName } = (0, paths_1.getNewAndParentName)(pathlike);\n const parent = (0, read_1.getNodeInternal)(root, parentName, options !== null && options !== void 0 ? options : {});\n if (!node_1.Nodes.isDirectory(parent)) {\n throw new Error(`Can't create ${newName}, ${parentName} not a directory`);\n }\n const existing = node_1.Nodes.getChild(parent, newName);\n // Already a directory\n if (existing && node_1.Nodes.isDirectory(parent.children[newName])) {\n return;\n }\n parent.children[newName] = node_1.Nodes.createDirectory({}, (_a = options) === null || _a === void 0 ? void 0 : _a.metadata);\n}\nexports.makeDirectory = makeDirectory;\nfunction removeFile(root, pathlike) {\n const { parentName, newName } = (0, paths_1.getNewAndParentName)(pathlike);\n const parent = (0, read_1.getNode)(root, parentName);\n if (!node_1.Nodes.isDirectory(parent)) {\n throw new Error(`Can't remove file ${newName}, ${parentName} not a directory`);\n }\n delete parent.children[newName];\n}\nexports.removeFile = removeFile;\nfunction setMetadata(root, pathlike, metadata) {\n const node = (0, read_1.getNode)(root, pathlike);\n node.metadata = metadata;\n}\nexports.setMetadata = setMetadata;\nfunction create(options) {\n return node_1.Nodes.createDirectory({}, options && 'metadata' in options ? options.metadata : undefined);\n}\nexports.create = create;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Volume = void 0;\nconst paths_1 = require(\"./volume/paths\");\nconst read_1 = require(\"./volume/read\");\nconst write_1 = require(\"./volume/write\");\nexports.Volume = {\n // paths\n getPathComponents: paths_1.getPathComponents,\n // read\n getMetadata: read_1.getMetadata,\n getNode: read_1.getNode,\n readDirectory: read_1.readDirectory,\n readFile: read_1.readFile,\n // write\n create: write_1.create,\n makeDirectory: write_1.makeDirectory,\n removeFile: write_1.removeFile,\n setMetadata: write_1.setMetadata,\n setNode: write_1.setNode,\n writeFile: write_1.writeFile,\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.path = void 0;\n__exportStar(require(\"./types\"), exports);\n__exportStar(require(\"./node\"), exports);\n__exportStar(require(\"./entries\"), exports);\n__exportStar(require(\"./volume\"), exports);\nexports.path = __importStar(require(\"./path\"));\n","export * from \"@noya-app/state-manager\";\nexport * from \"./ai\";\nexport * from \"./components/UserPointersOverlay\";\nexport * from \"./hooks\";\nexport * from \"./inspector/serialization\";\nexport * from \"./inspector/StateInspector\";\nexport * from \"./inspector/useStateInspector\";\nexport * from \"./noyaApp\";\nexport * from \"./NoyaStateContext\";\nexport * from \"./singleton\";\nexport * from \"./useObservable\";\nexport { WebSocketConnection } from \"./WebSocketConnection\";\nexport type { ConnectionEvent, ConnectionOptions } from \"./WebSocketConnection\";\n","\"use client\";\n\nimport { AIToolDefinition } from \"@noya-app/state-manager\";\nimport { useEffect } from \"react\";\nimport { useAIManager } from \"./NoyaStateContext\";\nimport { useObservable } from \"./useObservable\";\n\nexport function useRegisterAITool(tool: AIToolDefinition) {\n const aiManager = useAIManager();\n\n useEffect(() => {\n return aiManager.registerTool(tool);\n }, [aiManager, tool]);\n}\n\nexport function useCallableAITools() {\n const aiManager = useAIManager();\n return useObservable(aiManager.callableTools$);\n}\n","/** Symbol key applied to transform types */\nexport const TransformKind = Symbol.for('TypeBox.Transform');\n/** Symbol key applied to readonly types */\nexport const ReadonlyKind = Symbol.for('TypeBox.Readonly');\n/** Symbol key applied to optional types */\nexport const OptionalKind = Symbol.for('TypeBox.Optional');\n/** Symbol key applied to types */\nexport const Hint = Symbol.for('TypeBox.Hint');\n/** Symbol key applied to types */\nexport const Kind = Symbol.for('TypeBox.Kind');\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Any type */\nexport function Any(options = {}) {\n return { ...options, [Kind]: 'Any' };\n}\n","/** Returns true if this value is an async iterator */\nexport function IsAsyncIterator(value) {\n return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.asyncIterator in value;\n}\n/** Returns true if this value is an array */\nexport function IsArray(value) {\n return Array.isArray(value);\n}\n/** Returns true if this value is bigint */\nexport function IsBigInt(value) {\n return typeof value === 'bigint';\n}\n/** Returns true if this value is a boolean */\nexport function IsBoolean(value) {\n return typeof value === 'boolean';\n}\n/** Returns true if this value is a Date object */\nexport function IsDate(value) {\n return value instanceof globalThis.Date;\n}\n/** Returns true if this value is a function */\nexport function IsFunction(value) {\n return typeof value === 'function';\n}\n/** Returns true if this value is an iterator */\nexport function IsIterator(value) {\n return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.iterator in value;\n}\n/** Returns true if this value is null */\nexport function IsNull(value) {\n return value === null;\n}\n/** Returns true if this value is number */\nexport function IsNumber(value) {\n return typeof value === 'number';\n}\n/** Returns true if this value is an object */\nexport function IsObject(value) {\n return typeof value === 'object' && value !== null;\n}\n/** Returns true if this value is RegExp */\nexport function IsRegExp(value) {\n return value instanceof globalThis.RegExp;\n}\n/** Returns true if this value is string */\nexport function IsString(value) {\n return typeof value === 'string';\n}\n/** Returns true if this value is symbol */\nexport function IsSymbol(value) {\n return typeof value === 'symbol';\n}\n/** Returns true if this value is a Uint8Array */\nexport function IsUint8Array(value) {\n return value instanceof globalThis.Uint8Array;\n}\n/** Returns true if this value is undefined */\nexport function IsUndefined(value) {\n return value === undefined;\n}\n","import * as ValueGuard from '../guard/value.mjs';\nfunction ArrayType(value) {\n return value.map((value) => Visit(value));\n}\nfunction DateType(value) {\n return new Date(value.getTime());\n}\nfunction Uint8ArrayType(value) {\n return new Uint8Array(value);\n}\nfunction RegExpType(value) {\n return new RegExp(value.source, value.flags);\n}\nfunction ObjectType(value) {\n const result = {};\n for (const key of Object.getOwnPropertyNames(value)) {\n result[key] = Visit(value[key]);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n result[key] = Visit(value[key]);\n }\n return result;\n}\n// prettier-ignore\nfunction Visit(value) {\n return (ValueGuard.IsArray(value) ? ArrayType(value) :\n ValueGuard.IsDate(value) ? DateType(value) :\n ValueGuard.IsUint8Array(value) ? Uint8ArrayType(value) :\n ValueGuard.IsRegExp(value) ? RegExpType(value) :\n ValueGuard.IsObject(value) ? ObjectType(value) :\n value);\n}\n/** Clones a value */\nexport function Clone(value) {\n return Visit(value);\n}\n","import { Clone } from './value.mjs';\n/** Clones a Rest */\nexport function CloneRest(schemas) {\n return schemas.map((schema) => CloneType(schema));\n}\n/** Clones a Type */\nexport function CloneType(schema, options = {}) {\n return { ...Clone(schema), ...options };\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Array type */\nexport function Array(schema, options = {}) {\n return {\n ...options,\n [Kind]: 'Array',\n type: 'array',\n items: CloneType(schema),\n };\n}\n","import { Kind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\n/** `[JavaScript]` Creates a AsyncIterator type */\nexport function AsyncIterator(items, options = {}) {\n return {\n ...options,\n [Kind]: 'AsyncIterator',\n type: 'AsyncIterator',\n items: CloneType(items),\n };\n}\n","function DiscardKey(value, key) {\n const { [key]: _, ...rest } = value;\n return rest;\n}\nexport function Discard(value, keys) {\n return keys.reduce((acc, key) => DiscardKey(acc, key), value);\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Never type */\nexport function Never(options = {}) {\n return {\n ...options,\n [Kind]: 'Never',\n not: {},\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n// prettier-ignore\nexport function MappedResult(properties) {\n return {\n [Kind]: 'MappedResult',\n properties\n };\n}\n","import { CloneType, CloneRest } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Constructor type */\nexport function Constructor(parameters, returns, options) {\n return {\n ...options,\n [Kind]: 'Constructor',\n type: 'Constructor',\n parameters: CloneRest(parameters),\n returns: CloneType(returns),\n };\n}\n","import { CloneType, CloneRest } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Function type */\nexport function Function(parameters, returns, options) {\n return {\n ...options,\n [Kind]: 'Function',\n type: 'Function',\n parameters: CloneRest(parameters),\n returns: CloneType(returns),\n };\n}\n","import { CloneRest } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\nexport function UnionCreate(T, options) {\n return { ...options, [Kind]: 'Union', anyOf: CloneRest(T) };\n}\n","import * as ValueGuard from './value.mjs';\nimport { Kind, Hint, TransformKind, ReadonlyKind, OptionalKind } from '../symbols/index.mjs';\n/** `[Kind-Only]` Returns true if this value has a Readonly symbol */\nexport function IsReadonly(value) {\n return ValueGuard.IsObject(value) && value[ReadonlyKind] === 'Readonly';\n}\n/** `[Kind-Only]` Returns true if this value has a Optional symbol */\nexport function IsOptional(value) {\n return ValueGuard.IsObject(value) && value[OptionalKind] === 'Optional';\n}\n/** `[Kind-Only]` Returns true if the given value is TAny */\nexport function IsAny(value) {\n return IsKindOf(value, 'Any');\n}\n/** `[Kind-Only]` Returns true if the given value is TArray */\nexport function IsArray(value) {\n return IsKindOf(value, 'Array');\n}\n/** `[Kind-Only]` Returns true if the given value is TAsyncIterator */\nexport function IsAsyncIterator(value) {\n return IsKindOf(value, 'AsyncIterator');\n}\n/** `[Kind-Only]` Returns true if the given value is TBigInt */\nexport function IsBigInt(value) {\n return IsKindOf(value, 'BigInt');\n}\n/** `[Kind-Only]` Returns true if the given value is TBoolean */\nexport function IsBoolean(value) {\n return IsKindOf(value, 'Boolean');\n}\n/** `[Kind-Only]` Returns true if the given value is TConstructor */\nexport function IsConstructor(value) {\n return IsKindOf(value, 'Constructor');\n}\n/** `[Kind-Only]` Returns true if the given value is TDate */\nexport function IsDate(value) {\n return IsKindOf(value, 'Date');\n}\n/** `[Kind-Only]` Returns true if the given value is TFunction */\nexport function IsFunction(value) {\n return IsKindOf(value, 'Function');\n}\n/** `[Kind-Only]` Returns true if the given value is TInteger */\nexport function IsInteger(value) {\n return IsKindOf(value, 'Integer');\n}\n/** `[Kind-Only]` Returns true if the given schema is TProperties */\nexport function IsProperties(value) {\n return ValueGuard.IsObject(value);\n}\n/** `[Kind-Only]` Returns true if the given value is TIntersect */\nexport function IsIntersect(value) {\n return IsKindOf(value, 'Intersect');\n}\n/** `[Kind-Only]` Returns true if the given value is TIterator */\nexport function IsIterator(value) {\n return IsKindOf(value, 'Iterator');\n}\n/** `[Kind-Only]` Returns true if the given value is a TKind with the given name. */\nexport function IsKindOf(value, kind) {\n return ValueGuard.IsObject(value) && Kind in value && value[Kind] === kind;\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral<string> */\nexport function IsLiteralString(value) {\n return IsLiteral(value) && ValueGuard.IsString(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral<number> */\nexport function IsLiteralNumber(value) {\n return IsLiteral(value) && ValueGuard.IsNumber(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral<boolean> */\nexport function IsLiteralBoolean(value) {\n return IsLiteral(value) && ValueGuard.IsBoolean(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral */\nexport function IsLiteral(value) {\n return IsKindOf(value, 'Literal');\n}\n/** `[Kind-Only]` Returns true if the given value is a TMappedKey */\nexport function IsMappedKey(value) {\n return IsKindOf(value, 'MappedKey');\n}\n/** `[Kind-Only]` Returns true if the given value is TMappedResult */\nexport function IsMappedResult(value) {\n return IsKindOf(value, 'MappedResult');\n}\n/** `[Kind-Only]` Returns true if the given value is TNever */\nexport function IsNever(value) {\n return IsKindOf(value, 'Never');\n}\n/** `[Kind-Only]` Returns true if the given value is TNot */\nexport function IsNot(value) {\n return IsKindOf(value, 'Not');\n}\n/** `[Kind-Only]` Returns true if the given value is TNull */\nexport function IsNull(value) {\n return IsKindOf(value, 'Null');\n}\n/** `[Kind-Only]` Returns true if the given value is TNumber */\nexport function IsNumber(value) {\n return IsKindOf(value, 'Number');\n}\n/** `[Kind-Only]` Returns true if the given value is TObject */\nexport function IsObject(value) {\n return IsKindOf(value, 'Object');\n}\n/** `[Kind-Only]` Returns true if the given value is TPromise */\nexport function IsPromise(value) {\n return IsKindOf(value, 'Promise');\n}\n/** `[Kind-Only]` Returns true if the given value is TRecord */\nexport function IsRecord(value) {\n return IsKindOf(value, 'Record');\n}\n/** `[Kind-Only]` Returns true if this value is TRecursive */\nexport function IsRecursive(value) {\n return ValueGuard.IsObject(value) && Hint in value && value[Hint] === 'Recursive';\n}\n/** `[Kind-Only]` Returns true if the given value is TRef */\nexport function IsRef(value) {\n return IsKindOf(value, 'Ref');\n}\n/** `[Kind-Only]` Returns true if the given value is TRegExp */\nexport function IsRegExp(value) {\n return IsKindOf(value, 'RegExp');\n}\n/** `[Kind-Only]` Returns true if the given value is TString */\nexport function IsString(value) {\n return IsKindOf(value, 'String');\n}\n/** `[Kind-Only]` Returns true if the given value is TSymbol */\nexport function IsSymbol(value) {\n return IsKindOf(value, 'Symbol');\n}\n/** `[Kind-Only]` Returns true if the given value is TTemplateLiteral */\nexport function IsTemplateLiteral(value) {\n return IsKindOf(value, 'TemplateLiteral');\n}\n/** `[Kind-Only]` Returns true if the given value is TThis */\nexport function IsThis(value) {\n return IsKindOf(value, 'This');\n}\n/** `[Kind-Only]` Returns true of this value is TTransform */\nexport function IsTransform(value) {\n return ValueGuard.IsObject(value) && TransformKind in value;\n}\n/** `[Kind-Only]` Returns true if the given value is TTuple */\nexport function IsTuple(value) {\n return IsKindOf(value, 'Tuple');\n}\n/** `[Kind-Only]` Returns true if the given value is TUndefined */\nexport function IsUndefined(value) {\n return IsKindOf(value, 'Undefined');\n}\n/** `[Kind-Only]` Returns true if the given value is TUnion */\nexport function IsUnion(value) {\n return IsKindOf(value, 'Union');\n}\n/** `[Kind-Only]` Returns true if the given value is TUint8Array */\nexport function IsUint8Array(value) {\n return IsKindOf(value, 'Uint8Array');\n}\n/** `[Kind-Only]` Returns true if the given value is TUnknown */\nexport function IsUnknown(value) {\n return IsKindOf(value, 'Unknown');\n}\n/** `[Kind-Only]` Returns true if the given value is a raw TUnsafe */\nexport function IsUnsafe(value) {\n return IsKindOf(value, 'Unsafe');\n}\n/** `[Kind-Only]` Returns true if the given value is TVoid */\nexport function IsVoid(value) {\n return IsKindOf(value, 'Void');\n}\n/** `[Kind-Only]` Returns true if the given value is TKind */\nexport function IsKind(value) {\n return ValueGuard.IsObject(value) && Kind in value && ValueGuard.IsString(value[Kind]);\n}\n/** `[Kind-Only]` Returns true if the given value is TSchema */\nexport function IsSchema(value) {\n // prettier-ignore\n return (IsAny(value) ||\n IsArray(value) ||\n IsBoolean(value) ||\n IsBigInt(value) ||\n IsAsyncIterator(value) ||\n IsConstructor(value) ||\n IsDate(value) ||\n IsFunction(value) ||\n IsInteger(value) ||\n IsIntersect(value) ||\n IsIterator(value) ||\n IsLiteral(value) ||\n IsMappedKey(value) ||\n IsMappedResult(value) ||\n IsNever(value) ||\n IsNot(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsObject(value) ||\n IsPromise(value) ||\n IsRecord(value) ||\n IsRef(value) ||\n IsRegExp(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsTemplateLiteral(value) ||\n IsThis(value) ||\n IsTuple(value) ||\n IsUndefined(value) ||\n IsUnion(value) ||\n IsUint8Array(value) ||\n IsUnknown(value) ||\n IsUnsafe(value) ||\n IsVoid(value) ||\n IsKind(value));\n}\n","import { OptionalKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { UnionCreate } from './union-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional } from '../guard/kind.mjs';\n// prettier-ignore\nfunction IsUnionOptional(T) {\n return T.some(L => IsOptional(L));\n}\n// prettier-ignore\nfunction RemoveOptionalFromRest(T) {\n return T.map(L => IsOptional(L) ? RemoveOptionalFromType(L) : L);\n}\n// prettier-ignore\nfunction RemoveOptionalFromType(T) {\n return (Discard(T, [OptionalKind]));\n}\n// prettier-ignore\nfunction ResolveUnion(T, options) {\n return (IsUnionOptional(T)\n ? Optional(UnionCreate(RemoveOptionalFromRest(T), options))\n : UnionCreate(RemoveOptionalFromRest(T), options));\n}\n/** `[Json]` Creates an evaluated Union type */\nexport function UnionEvaluated(T, options = {}) {\n // prettier-ignore\n return (T.length === 0 ? Never(options) :\n T.length === 1 ? CloneType(T[0], options) :\n ResolveUnion(T, options));\n}\n","import { Never } from '../never/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { UnionCreate } from './union-create.mjs';\n/** `[Json]` Creates a Union type */\nexport function Union(T, options = {}) {\n // prettier-ignore\n return (T.length === 0 ? Never(options) :\n T.length === 1 ? CloneType(T[0], options) :\n UnionCreate(T, options));\n}\n","/** The base Error type thrown for all TypeBox exceptions */\nexport class TypeBoxError extends Error {\n constructor(message) {\n super(message);\n }\n}\n","import { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralParserError\n// ------------------------------------------------------------------\nexport class TemplateLiteralParserError extends TypeBoxError {\n}\n// -------------------------------------------------------------------\n// Unescape\n//\n// Unescape for these control characters specifically. Note that this\n// function is only called on non union group content, and where we\n// still want to allow the user to embed control characters in that\n// content. For review.\n// -------------------------------------------------------------------\n// prettier-ignore\nfunction Unescape(pattern) {\n return pattern\n .replace(/\\\\\\$/g, '$')\n .replace(/\\\\\\*/g, '*')\n .replace(/\\\\\\^/g, '^')\n .replace(/\\\\\\|/g, '|')\n .replace(/\\\\\\(/g, '(')\n .replace(/\\\\\\)/g, ')');\n}\n// -------------------------------------------------------------------\n// Control Characters\n// -------------------------------------------------------------------\nfunction IsNonEscaped(pattern, index, char) {\n return pattern[index] === char && pattern.charCodeAt(index - 1) !== 92;\n}\nfunction IsOpenParen(pattern, index) {\n return IsNonEscaped(pattern, index, '(');\n}\nfunction IsCloseParen(pattern, index) {\n return IsNonEscaped(pattern, index, ')');\n}\nfunction IsSeparator(pattern, index) {\n return IsNonEscaped(pattern, index, '|');\n}\n// -------------------------------------------------------------------\n// Control Groups\n// -------------------------------------------------------------------\nfunction IsGroup(pattern) {\n if (!(IsOpenParen(pattern, 0) && IsCloseParen(pattern, pattern.length - 1)))\n return false;\n let count = 0;\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (count === 0 && index !== pattern.length - 1)\n return false;\n }\n return true;\n}\n// prettier-ignore\nfunction InGroup(pattern) {\n return pattern.slice(1, pattern.length - 1);\n}\n// prettier-ignore\nfunction IsPrecedenceOr(pattern) {\n let count = 0;\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (IsSeparator(pattern, index) && count === 0)\n return true;\n }\n return false;\n}\n// prettier-ignore\nfunction IsPrecedenceAnd(pattern) {\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n return true;\n }\n return false;\n}\n// prettier-ignore\nfunction Or(pattern) {\n let [count, start] = [0, 0];\n const expressions = [];\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (IsSeparator(pattern, index) && count === 0) {\n const range = pattern.slice(start, index);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n start = index + 1;\n }\n }\n const range = pattern.slice(start);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n if (expressions.length === 0)\n return { type: 'const', const: '' };\n if (expressions.length === 1)\n return expressions[0];\n return { type: 'or', expr: expressions };\n}\n// prettier-ignore\nfunction And(pattern) {\n function Group(value, index) {\n if (!IsOpenParen(value, index))\n throw new TemplateLiteralParserError(`TemplateLiteralParser: Index must point to open parens`);\n let count = 0;\n for (let scan = index; scan < value.length; scan++) {\n if (IsOpenParen(value, scan))\n count += 1;\n if (IsCloseParen(value, scan))\n count -= 1;\n if (count === 0)\n return [index, scan];\n }\n throw new TemplateLiteralParserError(`TemplateLiteralParser: Unclosed group parens in expression`);\n }\n function Range(pattern, index) {\n for (let scan = index; scan < pattern.length; scan++) {\n if (IsOpenParen(pattern, scan))\n return [index, scan];\n }\n return [index, pattern.length];\n }\n const expressions = [];\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index)) {\n const [start, end] = Group(pattern, index);\n const range = pattern.slice(start, end + 1);\n expressions.push(TemplateLiteralParse(range));\n index = end;\n }\n else {\n const [start, end] = Range(pattern, index);\n const range = pattern.slice(start, end);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n index = end - 1;\n }\n }\n return ((expressions.length === 0) ? { type: 'const', const: '' } :\n (expressions.length === 1) ? expressions[0] :\n { type: 'and', expr: expressions });\n}\n// ------------------------------------------------------------------\n// TemplateLiteralParse\n// ------------------------------------------------------------------\n/** Parses a pattern and returns an expression tree */\nexport function TemplateLiteralParse(pattern) {\n // prettier-ignore\n return (IsGroup(pattern) ? TemplateLiteralParse(InGroup(pattern)) :\n IsPrecedenceOr(pattern) ? Or(pattern) :\n IsPrecedenceAnd(pattern) ? And(pattern) :\n { type: 'const', const: Unescape(pattern) });\n}\n// ------------------------------------------------------------------\n// TemplateLiteralParseExact\n// ------------------------------------------------------------------\n/** Parses a pattern and strips forward and trailing ^ and $ */\nexport function TemplateLiteralParseExact(pattern) {\n return TemplateLiteralParse(pattern.slice(1, pattern.length - 1));\n}\n","import { TemplateLiteralParseExact } from './parse.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralFiniteError\n// ------------------------------------------------------------------\nexport class TemplateLiteralFiniteError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// IsTemplateLiteralFiniteCheck\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsNumberExpression(expression) {\n return (expression.type === 'or' &&\n expression.expr.length === 2 &&\n expression.expr[0].type === 'const' &&\n expression.expr[0].const === '0' &&\n expression.expr[1].type === 'const' &&\n expression.expr[1].const === '[1-9][0-9]*');\n}\n// prettier-ignore\nfunction IsBooleanExpression(expression) {\n return (expression.type === 'or' &&\n expression.expr.length === 2 &&\n expression.expr[0].type === 'const' &&\n expression.expr[0].const === 'true' &&\n expression.expr[1].type === 'const' &&\n expression.expr[1].const === 'false');\n}\n// prettier-ignore\nfunction IsStringExpression(expression) {\n return expression.type === 'const' && expression.const === '.*';\n}\n// ------------------------------------------------------------------\n// IsTemplateLiteralExpressionFinite\n// ------------------------------------------------------------------\n// prettier-ignore\nexport function IsTemplateLiteralExpressionFinite(expression) {\n return (IsNumberExpression(expression) || IsStringExpression(expression) ? false :\n IsBooleanExpression(expression) ? true :\n (expression.type === 'and') ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) :\n (expression.type === 'or') ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) :\n (expression.type === 'const') ? true :\n (() => { throw new TemplateLiteralFiniteError(`Unknown expression type`); })());\n}\n/** Returns true if this TemplateLiteral resolves to a finite set of values */\nexport function IsTemplateLiteralFinite(schema) {\n const expression = TemplateLiteralParseExact(schema.pattern);\n return IsTemplateLiteralExpressionFinite(expression);\n}\n","import { IsTemplateLiteralExpressionFinite } from './finite.mjs';\nimport { TemplateLiteralParseExact } from './parse.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralGenerateError\n// ------------------------------------------------------------------\nexport class TemplateLiteralGenerateError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// TemplateLiteralExpressionGenerate\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction* GenerateReduce(buffer) {\n if (buffer.length === 1)\n return yield* buffer[0];\n for (const left of buffer[0]) {\n for (const right of GenerateReduce(buffer.slice(1))) {\n yield `${left}${right}`;\n }\n }\n}\n// prettier-ignore\nfunction* GenerateAnd(expression) {\n return yield* GenerateReduce(expression.expr.map((expr) => [...TemplateLiteralExpressionGenerate(expr)]));\n}\n// prettier-ignore\nfunction* GenerateOr(expression) {\n for (const expr of expression.expr)\n yield* TemplateLiteralExpressionGenerate(expr);\n}\n// prettier-ignore\nfunction* GenerateConst(expression) {\n return yield expression.const;\n}\nexport function* TemplateLiteralExpressionGenerate(expression) {\n return expression.type === 'and'\n ? yield* GenerateAnd(expression)\n : expression.type === 'or'\n ? yield* GenerateOr(expression)\n : expression.type === 'const'\n ? yield* GenerateConst(expression)\n : (() => {\n throw new TemplateLiteralGenerateError('Unknown expression');\n })();\n}\n/** Generates a tuple of strings from the given TemplateLiteral. Returns an empty tuple if infinite. */\nexport function TemplateLiteralGenerate(schema) {\n const expression = TemplateLiteralParseExact(schema.pattern);\n // prettier-ignore\n return (IsTemplateLiteralExpressionFinite(expression)\n ? [...TemplateLiteralExpressionGenerate(expression)]\n : []);\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Literal type */\nexport function Literal(value, options = {}) {\n return {\n ...options,\n [Kind]: 'Literal',\n const: value,\n type: typeof value,\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Boolean type */\nexport function Boolean(options = {}) {\n return {\n ...options,\n [Kind]: 'Boolean',\n type: 'boolean',\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a BigInt type */\nexport function BigInt(options = {}) {\n return {\n ...options,\n [Kind]: 'BigInt',\n type: 'bigint',\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Number type */\nexport function Number(options = {}) {\n return {\n ...options,\n [Kind]: 'Number',\n type: 'number',\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a String type */\nexport function String(options = {}) {\n return { ...options, [Kind]: 'String', type: 'string' };\n}\n","import { Literal } from '../literal/index.mjs';\nimport { Boolean } from '../boolean/index.mjs';\nimport { BigInt } from '../bigint/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { String } from '../string/index.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\n// ------------------------------------------------------------------\n// SyntaxParsers\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction* FromUnion(syntax) {\n const trim = syntax.trim().replace(/\"|'/g, '');\n return (trim === 'boolean' ? yield Boolean() :\n trim === 'number' ? yield Number() :\n trim === 'bigint' ? yield BigInt() :\n trim === 'string' ? yield String() :\n yield (() => {\n const literals = trim.split('|').map((literal) => Literal(literal.trim()));\n return (literals.length === 0 ? Never() :\n literals.length === 1 ? literals[0] :\n UnionEvaluated(literals));\n })());\n}\n// prettier-ignore\nfunction* FromTerminal(syntax) {\n if (syntax[1] !== '{') {\n const L = Literal('$');\n const R = FromSyntax(syntax.slice(1));\n return yield* [L, ...R];\n }\n for (let i = 2; i < syntax.length; i++) {\n if (syntax[i] === '}') {\n const L = FromUnion(syntax.slice(2, i));\n const R = FromSyntax(syntax.slice(i + 1));\n return yield* [...L, ...R];\n }\n }\n yield Literal(syntax);\n}\n// prettier-ignore\nfunction* FromSyntax(syntax) {\n for (let i = 0; i < syntax.length; i++) {\n if (syntax[i] === '$') {\n const L = Literal(syntax.slice(0, i));\n const R = FromTerminal(syntax.slice(i));\n return yield* [L, ...R];\n }\n }\n yield Literal(syntax);\n}\n/** Parses TemplateLiteralSyntax and returns a tuple of TemplateLiteralKinds */\nexport function TemplateLiteralSyntax(syntax) {\n return [...FromSyntax(syntax)];\n}\n","export const PatternBoolean = '(true|false)';\nexport const PatternNumber = '(0|[1-9][0-9]*)';\nexport const PatternString = '(.*)';\nexport const PatternBooleanExact = `^${PatternBoolean}$`;\nexport const PatternNumberExact = `^${PatternNumber}$`;\nexport const PatternStringExact = `^${PatternString}$`;\n","import { PatternNumber, PatternString, PatternBoolean } from '../patterns/index.mjs';\nimport { Kind } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTemplateLiteral, IsUnion, IsNumber, IsInteger, IsBigInt, IsString, IsLiteral, IsBoolean } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralPatternError\n// ------------------------------------------------------------------\nexport class TemplateLiteralPatternError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// TemplateLiteralPattern\n// ------------------------------------------------------------------\nfunction Escape(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n// prettier-ignore\nfunction Visit(schema, acc) {\n return (IsTemplateLiteral(schema) ? schema.pattern.slice(1, schema.pattern.length - 1) :\n IsUnion(schema) ? `(${schema.anyOf.map((schema) => Visit(schema, acc)).join('|')})` :\n IsNumber(schema) ? `${acc}${PatternNumber}` :\n IsInteger(schema) ? `${acc}${PatternNumber}` :\n IsBigInt(schema) ? `${acc}${PatternNumber}` :\n IsString(schema) ? `${acc}${PatternString}` :\n IsLiteral(schema) ? `${acc}${Escape(schema.const.toString())}` :\n IsBoolean(schema) ? `${acc}${PatternBoolean}` :\n (() => { throw new TemplateLiteralPatternError(`Unexpected Kind '${schema[Kind]}'`); })());\n}\nexport function TemplateLiteralPattern(kinds) {\n return `^${kinds.map((schema) => Visit(schema, '')).join('')}\\$`;\n}\n","import { UnionEvaluated } from '../union/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { TemplateLiteralGenerate } from './generate.mjs';\n/** Returns a Union from the given TemplateLiteral */\nexport function TemplateLiteralToUnion(schema) {\n const R = TemplateLiteralGenerate(schema);\n const L = R.map((S) => Literal(S));\n return UnionEvaluated(L);\n}\n","import { TemplateLiteralSyntax } from './syntax.mjs';\nimport { TemplateLiteralPattern } from './pattern.mjs';\nimport { IsString } from '../guard/value.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a TemplateLiteral type */\n// prettier-ignore\nexport function TemplateLiteral(unresolved, options = {}) {\n const pattern = IsString(unresolved)\n ? TemplateLiteralPattern(TemplateLiteralSyntax(unresolved))\n : TemplateLiteralPattern(unresolved);\n return { ...options, [Kind]: 'TemplateLiteral', type: 'string', pattern };\n}\n","import { TemplateLiteralGenerate } from '../template-literal/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTemplateLiteral, IsUnion, IsLiteral, IsNumber, IsInteger } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromTemplateLiteral(T) {\n const R = TemplateLiteralGenerate(T);\n return R.map(S => S.toString());\n}\n// prettier-ignore\nfunction FromUnion(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...IndexPropertyKeys(L));\n return Acc;\n}\n// prettier-ignore\nfunction FromLiteral(T) {\n return ([T.toString()] // TS 5.4 observes TLiteralValue as not having a toString()\n );\n}\n/** Returns a tuple of PropertyKeys derived from the given TSchema */\n// prettier-ignore\nexport function IndexPropertyKeys(T) {\n return [...new Set((IsTemplateLiteral(T) ? FromTemplateLiteral(T) :\n IsUnion(T) ? FromUnion(T.anyOf) :\n IsLiteral(T) ? FromLiteral(T.const) :\n IsNumber(T) ? ['[number]'] :\n IsInteger(T) ? ['[number]'] :\n []))];\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { IndexPropertyKeys } from './indexed-property-keys.mjs';\nimport { Index } from './index.mjs';\n// prettier-ignore\nfunction FromProperties(T, P, options) {\n const Acc = {};\n for (const K2 of Object.getOwnPropertyNames(P)) {\n Acc[K2] = Index(T, IndexPropertyKeys(P[K2]), options);\n }\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(T, R, options) {\n return FromProperties(T, R.properties, options);\n}\n// prettier-ignore\nexport function IndexFromMappedResult(T, R, options) {\n const P = FromMappedResult(T, R, options);\n return MappedResult(P);\n}\n","import { Never } from '../never/index.mjs';\nimport { IntersectEvaluated } from '../intersect/index.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { IndexPropertyKeys } from './indexed-property-keys.mjs';\nimport { IndexFromMappedKey } from './indexed-from-mapped-key.mjs';\nimport { IndexFromMappedResult } from './indexed-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsIntersect, IsObject, IsMappedKey, IsMappedResult, IsNever, IsSchema, IsTuple, IsUnion } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(T, K) {\n return T.map(L => IndexFromPropertyKey(L, K));\n}\n// prettier-ignore\nfunction FromIntersectRest(T) {\n return T.filter(L => !IsNever(L));\n}\n// prettier-ignore\nfunction FromIntersect(T, K) {\n return (IntersectEvaluated(FromIntersectRest(FromRest(T, K))));\n}\n// prettier-ignore\nfunction FromUnionRest(T) {\n return (T.some(L => IsNever(L))\n ? []\n : T);\n}\n// prettier-ignore\nfunction FromUnion(T, K) {\n return (UnionEvaluated(FromUnionRest(FromRest(T, K))));\n}\n// prettier-ignore\nfunction FromTuple(T, K) {\n return (K in T ? T[K] :\n K === '[number]' ? UnionEvaluated(T) :\n Never());\n}\n// prettier-ignore\nfunction FromArray(T, K) {\n return (K === '[number]'\n ? T\n : Never());\n}\n// prettier-ignore\nfunction FromProperty(T, K) {\n return (K in T ? T[K] : Never());\n}\n// prettier-ignore\nexport function IndexFromPropertyKey(T, K) {\n return (IsIntersect(T) ? FromIntersect(T.allOf, K) :\n IsUnion(T) ? FromUnion(T.anyOf, K) :\n IsTuple(T) ? FromTuple(T.items ?? [], K) :\n IsArray(T) ? FromArray(T.items, K) :\n IsObject(T) ? FromProperty(T.properties, K) :\n Never());\n}\n// prettier-ignore\nexport function IndexFromPropertyKeys(T, K) {\n return K.map(L => IndexFromPropertyKey(T, L));\n}\n// prettier-ignore\nfunction FromSchema(T, K) {\n return (UnionEvaluated(IndexFromPropertyKeys(T, K)));\n}\n/** `[Json]` Returns an Indexed property type for the given keys */\nexport function Index(T, K, options = {}) {\n // prettier-ignore\n return (IsMappedResult(K) ? CloneType(IndexFromMappedResult(T, K, options)) :\n IsMappedKey(K) ? CloneType(IndexFromMappedKey(T, K, options)) :\n IsSchema(K) ? CloneType(FromSchema(T, IndexPropertyKeys(K)), options) :\n CloneType(FromSchema(T, K), options));\n}\n","import { Index } from './indexed.mjs';\nimport { MappedResult } from '../mapped/index.mjs';\n// prettier-ignore\nfunction MappedIndexPropertyKey(T, K, options) {\n return { [K]: Index(T, [K], options) };\n}\n// prettier-ignore\nfunction MappedIndexPropertyKeys(T, K, options) {\n return K.reduce((Acc, L) => {\n return { ...Acc, ...MappedIndexPropertyKey(T, L, options) };\n }, {});\n}\n// prettier-ignore\nfunction MappedIndexProperties(T, K, options) {\n return MappedIndexPropertyKeys(T, K.keys, options);\n}\n// prettier-ignore\nexport function IndexFromMappedKey(T, K, options) {\n const P = MappedIndexProperties(T, K, options);\n return MappedResult(P);\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates an Iterator type */\nexport function Iterator(items, options = {}) {\n return {\n ...options,\n [Kind]: 'Iterator',\n type: 'Iterator',\n items: CloneType(items),\n };\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional, IsSchema } from '../guard/kind.mjs';\n/** `[Json]` Creates an Object type */\nfunction _Object(properties, options = {}) {\n const propertyKeys = globalThis.Object.getOwnPropertyNames(properties);\n const optionalKeys = propertyKeys.filter((key) => IsOptional(properties[key]));\n const requiredKeys = propertyKeys.filter((name) => !optionalKeys.includes(name));\n const clonedAdditionalProperties = IsSchema(options.additionalProperties) ? { additionalProperties: CloneType(options.additionalProperties) } : {};\n const clonedProperties = {};\n for (const key of propertyKeys)\n clonedProperties[key] = CloneType(properties[key]);\n return (requiredKeys.length > 0\n ? { ...options, ...clonedAdditionalProperties, [Kind]: 'Object', type: 'object', properties: clonedProperties, required: requiredKeys }\n : { ...options, ...clonedAdditionalProperties, [Kind]: 'Object', type: 'object', properties: clonedProperties });\n}\n/** `[Json]` Creates an Object type */\nexport const Object = _Object;\n","import { CloneType } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Promise type */\nexport function Promise(item, options = {}) {\n return {\n ...options,\n [Kind]: 'Promise',\n type: 'Promise',\n item: CloneType(item),\n };\n}\n","import { ReadonlyKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { ReadonlyFromMappedResult } from './readonly-from-mapped-result.mjs';\nimport { IsMappedResult } from '../guard/kind.mjs';\nfunction RemoveReadonly(schema) {\n return Discard(CloneType(schema), [ReadonlyKind]);\n}\nfunction AddReadonly(schema) {\n return { ...CloneType(schema), [ReadonlyKind]: 'Readonly' };\n}\n// prettier-ignore\nfunction ReadonlyWithFlag(schema, F) {\n return (F === false\n ? RemoveReadonly(schema)\n : AddReadonly(schema));\n}\n/** `[Json]` Creates a Readonly property */\nexport function Readonly(schema, enable) {\n const F = enable ?? true;\n return IsMappedResult(schema) ? ReadonlyFromMappedResult(schema, F) : ReadonlyWithFlag(schema, F);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Readonly } from './readonly.mjs';\n// prettier-ignore\nfunction FromProperties(K, F) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = Readonly(K[K2], F);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, F) {\n return FromProperties(R.properties, F);\n}\n// prettier-ignore\nexport function ReadonlyFromMappedResult(R, F) {\n const P = FromMappedResult(R, F);\n return MappedResult(P);\n}\n","import { CloneRest } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Tuple type */\nexport function Tuple(items, options = {}) {\n // return TupleResolver.Resolve(T)\n const [additionalItems, minItems, maxItems] = [false, items.length, items.length];\n // prettier-ignore\n return (items.length > 0 ?\n { ...options, [Kind]: 'Tuple', type: 'array', items: CloneRest(items), additionalItems, minItems, maxItems } :\n { ...options, [Kind]: 'Tuple', type: 'array', minItems, maxItems });\n}\n","/** Returns true if element right is in the set of left */\n// prettier-ignore\nexport function SetIncludes(T, S) {\n return T.includes(S);\n}\n/** Returns true if left is a subset of right */\nexport function SetIsSubset(T, S) {\n return T.every((L) => SetIncludes(S, L));\n}\n/** Returns a distinct set of elements */\nexport function SetDistinct(T) {\n return [...new Set(T)];\n}\n/** Returns the Intersect of the given sets */\nexport function SetIntersect(T, S) {\n return T.filter((L) => S.includes(L));\n}\n/** Returns the Union of the given sets */\nexport function SetUnion(T, S) {\n return [...T, ...S];\n}\n/** Returns the Complement by omitting elements in T that are in S */\n// prettier-ignore\nexport function SetComplement(T, S) {\n return T.filter(L => !S.includes(L));\n}\n// prettier-ignore\nfunction SetIntersectManyResolve(T, Init) {\n return T.reduce((Acc, L) => {\n return SetIntersect(Acc, L);\n }, Init);\n}\n// prettier-ignore\nexport function SetIntersectMany(T) {\n return (T.length === 1\n ? T[0]\n // Use left to initialize the accumulator for resolve\n : T.length > 1\n ? SetIntersectManyResolve(T.slice(1), T[0])\n : []);\n}\n/** Returns the Union of multiple sets */\nexport function SetUnionMany(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...L);\n return Acc;\n}\n","import { Kind, OptionalKind, ReadonlyKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\n// evaluation types\nimport { Array } from '../array/index.mjs';\nimport { AsyncIterator } from '../async-iterator/index.mjs';\nimport { Constructor } from '../constructor/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Iterator } from '../iterator/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { Promise } from '../promise/index.mjs';\nimport { Readonly } from '../readonly/index.mjs';\nimport { Tuple } from '../tuple/index.mjs';\nimport { Union } from '../union/index.mjs';\n// operator\nimport { SetIncludes } from '../sets/index.mjs';\n// mapping types\nimport { MappedResult } from './mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsAsyncIterator, IsConstructor, IsFunction, IsIntersect, IsIterator, IsReadonly, IsMappedResult, IsMappedKey, IsObject, IsOptional, IsPromise, IsSchema, IsTuple, IsUnion } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromMappedResult(K, P) {\n return (K in P\n ? FromSchemaType(K, P[K])\n : MappedResult(P));\n}\n// prettier-ignore\nfunction MappedKeyToKnownMappedResultProperties(K) {\n return { [K]: Literal(K) };\n}\n// prettier-ignore\nfunction MappedKeyToUnknownMappedResultProperties(P) {\n const Acc = {};\n for (const L of P)\n Acc[L] = Literal(L);\n return Acc;\n}\n// prettier-ignore\nfunction MappedKeyToMappedResultProperties(K, P) {\n return (SetIncludes(P, K)\n ? MappedKeyToKnownMappedResultProperties(K)\n : MappedKeyToUnknownMappedResultProperties(P));\n}\n// prettier-ignore\nfunction FromMappedKey(K, P) {\n const R = MappedKeyToMappedResultProperties(K, P);\n return FromMappedResult(K, R);\n}\n// prettier-ignore\nfunction FromRest(K, T) {\n return T.map(L => FromSchemaType(K, L));\n}\n// prettier-ignore\nfunction FromProperties(K, T) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(T))\n Acc[K2] = FromSchemaType(K, T[K2]);\n return Acc;\n}\n// prettier-ignore\nfunction FromSchemaType(K, T) {\n return (\n // unevaluated modifier types\n IsOptional(T) ? Optional(FromSchemaType(K, Discard(T, [OptionalKind]))) :\n IsReadonly(T) ? Readonly(FromSchemaType(K, Discard(T, [ReadonlyKind]))) :\n // unevaluated mapped types\n IsMappedResult(T) ? FromMappedResult(K, T.properties) :\n IsMappedKey(T) ? FromMappedKey(K, T.keys) :\n // unevaluated types\n IsConstructor(T) ? Constructor(FromRest(K, T.parameters), FromSchemaType(K, T.returns)) :\n IsFunction(T) ? FunctionType(FromRest(K, T.parameters), FromSchemaType(K, T.returns)) :\n IsAsyncIterator(T) ? AsyncIterator(FromSchemaType(K, T.items)) :\n IsIterator(T) ? Iterator(FromSchemaType(K, T.items)) :\n IsIntersect(T) ? Intersect(FromRest(K, T.allOf)) :\n IsUnion(T) ? Union(FromRest(K, T.anyOf)) :\n IsTuple(T) ? Tuple(FromRest(K, T.items ?? [])) :\n IsObject(T) ? Object(FromProperties(K, T.properties)) :\n IsArray(T) ? Array(FromSchemaType(K, T.items)) :\n IsPromise(T) ? Promise(FromSchemaType(K, T.item)) :\n T);\n}\n// prettier-ignore\nexport function MappedFunctionReturnType(K, T) {\n const Acc = {};\n for (const L of K)\n Acc[L] = FromSchemaType(L, T);\n return Acc;\n}\n/** `[Json]` Creates a Mapped object type */\nexport function Mapped(key, map, options = {}) {\n const K = IsSchema(key) ? IndexPropertyKeys(key) : key;\n const RT = map({ [Kind]: 'MappedKey', keys: K });\n const R = MappedFunctionReturnType(K, RT);\n return CloneType(Object(R), options);\n}\n","import { OptionalKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { OptionalFromMappedResult } from './optional-from-mapped-result.mjs';\nimport { IsMappedResult } from '../guard/kind.mjs';\nfunction RemoveOptional(schema) {\n return Discard(CloneType(schema), [OptionalKind]);\n}\nfunction AddOptional(schema) {\n return { ...CloneType(schema), [OptionalKind]: 'Optional' };\n}\n// prettier-ignore\nfunction OptionalWithFlag(schema, F) {\n return (F === false\n ? RemoveOptional(schema)\n : AddOptional(schema));\n}\n/** `[Json]` Creates a Optional property */\nexport function Optional(schema, enable) {\n const F = enable ?? true;\n return IsMappedResult(schema) ? OptionalFromMappedResult(schema, F) : OptionalWithFlag(schema, F);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Optional } from './optional.mjs';\n// prettier-ignore\nfunction FromProperties(P, F) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Optional(P[K2], F);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, F) {\n return FromProperties(R.properties, F);\n}\n// prettier-ignore\nexport function OptionalFromMappedResult(R, F) {\n const P = FromMappedResult(R, F);\n return MappedResult(P);\n}\n","import { Kind } from '../symbols/index.mjs';\nimport { CloneType, CloneRest } from '../clone/type.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsObject, IsSchema } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// IntersectCreate\n// ------------------------------------------------------------------\n// prettier-ignore\nexport function IntersectCreate(T, options) {\n const allObjects = T.every((schema) => IsObject(schema));\n const clonedUnevaluatedProperties = IsSchema(options.unevaluatedProperties)\n ? { unevaluatedProperties: CloneType(options.unevaluatedProperties) }\n : {};\n return ((options.unevaluatedProperties === false || IsSchema(options.unevaluatedProperties) || allObjects\n ? { ...options, ...clonedUnevaluatedProperties, [Kind]: 'Intersect', type: 'object', allOf: CloneRest(T) }\n : { ...options, ...clonedUnevaluatedProperties, [Kind]: 'Intersect', allOf: CloneRest(T) }));\n}\n","import { OptionalKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { IntersectCreate } from './intersect-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional, IsTransform } from '../guard/kind.mjs';\n// prettier-ignore\nfunction IsIntersectOptional(T) {\n return T.every(L => IsOptional(L));\n}\n// prettier-ignore\nfunction RemoveOptionalFromType(T) {\n return (Discard(T, [OptionalKind]));\n}\n// prettier-ignore\nfunction RemoveOptionalFromRest(T) {\n return T.map(L => IsOptional(L) ? RemoveOptionalFromType(L) : L);\n}\n// prettier-ignore\nfunction ResolveIntersect(T, options) {\n return (IsIntersectOptional(T)\n ? Optional(IntersectCreate(RemoveOptionalFromRest(T), options))\n : IntersectCreate(RemoveOptionalFromRest(T), options));\n}\n/** `[Json]` Creates an evaluated Intersect type */\nexport function IntersectEvaluated(T, options = {}) {\n if (T.length === 0)\n return Never(options);\n if (T.length === 1)\n return CloneType(T[0], options);\n if (T.some((schema) => IsTransform(schema)))\n throw new Error('Cannot intersect transform types');\n return ResolveIntersect(T, options);\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { Never } from '../never/index.mjs';\nimport { IntersectCreate } from './intersect-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform } from '../guard/kind.mjs';\n/** `[Json]` Creates an evaluated Intersect type */\nexport function Intersect(T, options = {}) {\n if (T.length === 0)\n return Never(options);\n if (T.length === 1)\n return CloneType(T[0], options);\n if (T.some((schema) => IsTransform(schema)))\n throw new Error('Cannot intersect transform types');\n return IntersectCreate(T, options);\n}\n","import { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsPromise } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(T) {\n return T.map(L => AwaitedResolve(L));\n}\n// prettier-ignore\nfunction FromIntersect(T) {\n return Intersect(FromRest(T));\n}\n// prettier-ignore\nfunction FromUnion(T) {\n return Union(FromRest(T));\n}\n// prettier-ignore\nfunction FromPromise(T) {\n return AwaitedResolve(T);\n}\n// ----------------------------------------------------------------\n// AwaitedResolve\n// ----------------------------------------------------------------\n// prettier-ignore\nfunction AwaitedResolve(T) {\n return (IsIntersect(T) ? FromIntersect(T.allOf) :\n IsUnion(T) ? FromUnion(T.anyOf) :\n IsPromise(T) ? FromPromise(T.item) :\n T);\n}\n/** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */\nexport function Awaited(T, options = {}) {\n return CloneType(AwaitedResolve(T), options);\n}\n","import { SetUnionMany, SetIntersectMany } from '../sets/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsTuple, IsArray, IsObject, IsRecord } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(KeyOfPropertyKeys(L));\n return Acc;\n}\n// prettier-ignore\nfunction FromIntersect(T) {\n const C = FromRest(T);\n const R = SetUnionMany(C);\n return R;\n}\n// prettier-ignore\nfunction FromUnion(T) {\n const C = FromRest(T);\n const R = SetIntersectMany(C);\n return R;\n}\n// prettier-ignore\nfunction FromTuple(T) {\n return T.map((_, I) => I.toString());\n}\n// prettier-ignore\nfunction FromArray(_) {\n return (['[number]']);\n}\n// prettier-ignore\nfunction FromProperties(T) {\n return (globalThis.Object.getOwnPropertyNames(T));\n}\n// ------------------------------------------------------------------\n// FromPatternProperties\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromPatternProperties(patternProperties) {\n if (!includePatternProperties)\n return [];\n const patternPropertyKeys = globalThis.Object.getOwnPropertyNames(patternProperties);\n return patternPropertyKeys.map(key => {\n return (key[0] === '^' && key[key.length - 1] === '$')\n ? key.slice(1, key.length - 1)\n : key;\n });\n}\n/** Returns a tuple of PropertyKeys derived from the given TSchema. */\n// prettier-ignore\nexport function KeyOfPropertyKeys(T) {\n return (IsIntersect(T) ? FromIntersect(T.allOf) :\n IsUnion(T) ? FromUnion(T.anyOf) :\n IsTuple(T) ? FromTuple(T.items ?? []) :\n IsArray(T) ? FromArray(T.items) :\n IsObject(T) ? FromProperties(T.properties) :\n IsRecord(T) ? FromPatternProperties(T.patternProperties) :\n []);\n}\n// ----------------------------------------------------------------\n// KeyOfPattern\n// ----------------------------------------------------------------\nlet includePatternProperties = false;\n/** Returns a regular expression pattern derived from the given TSchema */\nexport function KeyOfPattern(schema) {\n includePatternProperties = true;\n const keys = KeyOfPropertyKeys(schema);\n includePatternProperties = false;\n const pattern = keys.map((key) => `(${key})`);\n return `^(${pattern.join('|')})$`;\n}\n","import { Literal } from '../literal/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { KeyOfPropertyKeys } from './keyof-property-keys.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { KeyOfFromMappedResult } from './keyof-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult } from '../guard/kind.mjs';\n// prettier-ignore\nexport function KeyOfPropertyKeysToRest(T) {\n return T.map(L => L === '[number]' ? Number() : Literal(L));\n}\n/** `[Json]` Creates a KeyOf type */\nexport function KeyOf(T, options = {}) {\n if (IsMappedResult(T)) {\n return KeyOfFromMappedResult(T, options);\n }\n else {\n const K = KeyOfPropertyKeys(T);\n const S = KeyOfPropertyKeysToRest(K);\n const U = UnionEvaluated(S);\n return CloneType(U, options);\n }\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { KeyOf } from './keyof.mjs';\n// prettier-ignore\nfunction FromProperties(K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = KeyOf(K[K2], options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nexport function KeyOfFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return MappedResult(P);\n}\n","import { IntersectEvaluated } from '../intersect/index.mjs';\nimport { IndexFromPropertyKeys } from '../indexed/index.mjs';\nimport { KeyOfPropertyKeys } from '../keyof/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { SetDistinct } from '../sets/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsNever } from '../guard/kind.mjs';\n// prettier-ignore\nfunction CompositeKeys(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...KeyOfPropertyKeys(L));\n return SetDistinct(Acc);\n}\n// prettier-ignore\nfunction FilterNever(T) {\n return T.filter(L => !IsNever(L));\n}\n// prettier-ignore\nfunction CompositeProperty(T, K) {\n const Acc = [];\n for (const L of T)\n Acc.push(...IndexFromPropertyKeys(L, [K]));\n return FilterNever(Acc);\n}\n// prettier-ignore\nfunction CompositeProperties(T, K) {\n const Acc = {};\n for (const L of K) {\n Acc[L] = IntersectEvaluated(CompositeProperty(T, L));\n }\n return Acc;\n}\n// prettier-ignore\nexport function Composite(T, options = {}) {\n const K = CompositeKeys(T);\n const P = CompositeProperties(T, K);\n const R = Object(P, options);\n return R;\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Date type */\nexport function Date(options = {}) {\n return {\n ...options,\n [Kind]: 'Date',\n type: 'Date',\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Null type */\nexport function Null(options = {}) {\n return {\n ...options,\n [Kind]: 'Null',\n type: 'null',\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Symbol type */\nexport function Symbol(options) {\n return { ...options, [Kind]: 'Symbol', type: 'symbol' };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Undefined type */\nexport function Undefined(options = {}) {\n return { ...options, [Kind]: 'Undefined', type: 'undefined' };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Uint8Array type */\nexport function Uint8Array(options = {}) {\n return { ...options, [Kind]: 'Uint8Array', type: 'Uint8Array' };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Unknown type */\nexport function Unknown(options = {}) {\n return {\n ...options,\n [Kind]: 'Unknown',\n };\n}\n","import { Any } from '../any/index.mjs';\nimport { BigInt } from '../bigint/index.mjs';\nimport { Date } from '../date/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Null } from '../null/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { Symbol } from '../symbol/index.mjs';\nimport { Tuple } from '../tuple/index.mjs';\nimport { Readonly } from '../readonly/index.mjs';\nimport { Undefined } from '../undefined/index.mjs';\nimport { Uint8Array } from '../uint8array/index.mjs';\nimport { Unknown } from '../unknown/index.mjs';\nimport { CloneType } from '../clone/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsNumber, IsBigInt, IsUint8Array, IsDate, IsIterator, IsObject, IsAsyncIterator, IsFunction, IsUndefined, IsNull, IsSymbol, IsBoolean, IsString } from '../guard/value.mjs';\n// prettier-ignore\nfunction FromArray(T) {\n return T.map(L => FromValue(L, false));\n}\n// prettier-ignore\nfunction FromProperties(value) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(value))\n Acc[K] = Readonly(FromValue(value[K], false));\n return Acc;\n}\nfunction ConditionalReadonly(T, root) {\n return (root === true ? T : Readonly(T));\n}\n// prettier-ignore\nfunction FromValue(value, root) {\n return (IsAsyncIterator(value) ? ConditionalReadonly(Any(), root) :\n IsIterator(value) ? ConditionalReadonly(Any(), root) :\n IsArray(value) ? Readonly(Tuple(FromArray(value))) :\n IsUint8Array(value) ? Uint8Array() :\n IsDate(value) ? Date() :\n IsObject(value) ? ConditionalReadonly(Object(FromProperties(value)), root) :\n IsFunction(value) ? ConditionalReadonly(FunctionType([], Unknown()), root) :\n IsUndefined(value) ? Undefined() :\n IsNull(value) ? Null() :\n IsSymbol(value) ? Symbol() :\n IsBigInt(value) ? BigInt() :\n IsNumber(value) ? Literal(value) :\n IsBoolean(value) ? Literal(value) :\n IsString(value) ? Literal(value) :\n Object({}));\n}\n/** `[JavaScript]` Creates a readonly const type from the given value. */\nexport function Const(T, options = {}) {\n return CloneType(FromValue(T, true), options);\n}\n","import { Tuple } from '../tuple/index.mjs';\nimport { CloneRest } from '../clone/type.mjs';\n/** `[JavaScript]` Extracts the ConstructorParameters from the given Constructor type */\nexport function ConstructorParameters(schema, options = {}) {\n return Tuple(CloneRest(schema.parameters), { ...options });\n}\n","import { CloneType, CloneRest } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { IsUndefined } from '../guard/value.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsConstructor, IsFunction, IsIntersect, IsUnion, IsTuple, IsArray, IsObject, IsPromise, IsAsyncIterator, IsIterator, IsRef } from '../guard/kind.mjs';\nfunction FromRest(schema, references) {\n return schema.map((schema) => Deref(schema, references));\n}\n// prettier-ignore\nfunction FromProperties(properties, references) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(properties)) {\n Acc[K] = Deref(properties[K], references);\n }\n return Acc;\n}\n// prettier-ignore\nfunction FromConstructor(schema, references) {\n schema.parameters = FromRest(schema.parameters, references);\n schema.returns = Deref(schema.returns, references);\n return schema;\n}\n// prettier-ignore\nfunction FromFunction(schema, references) {\n schema.parameters = FromRest(schema.parameters, references);\n schema.returns = Deref(schema.returns, references);\n return schema;\n}\n// prettier-ignore\nfunction FromIntersect(schema, references) {\n schema.allOf = FromRest(schema.allOf, references);\n return schema;\n}\n// prettier-ignore\nfunction FromUnion(schema, references) {\n schema.anyOf = FromRest(schema.anyOf, references);\n return schema;\n}\n// prettier-ignore\nfunction FromTuple(schema, references) {\n if (IsUndefined(schema.items))\n return schema;\n schema.items = FromRest(schema.items, references);\n return schema;\n}\n// prettier-ignore\nfunction FromArray(schema, references) {\n schema.items = Deref(schema.items, references);\n return schema;\n}\n// prettier-ignore\nfunction FromObject(schema, references) {\n schema.properties = FromProperties(schema.properties, references);\n return schema;\n}\n// prettier-ignore\nfunction FromPromise(schema, references) {\n schema.item = Deref(schema.item, references);\n return schema;\n}\n// prettier-ignore\nfunction FromAsyncIterator(schema, references) {\n schema.items = Deref(schema.items, references);\n return schema;\n}\n// prettier-ignore\nfunction FromIterator(schema, references) {\n schema.items = Deref(schema.items, references);\n return schema;\n}\n// prettier-ignore\nfunction FromRef(schema, references) {\n const target = references.find(remote => remote.$id === schema.$ref);\n if (target === undefined)\n throw Error(`Unable to dereference schema with $id ${schema.$ref}`);\n const discard = Discard(target, ['$id']);\n return Deref(discard, references);\n}\n// prettier-ignore\nfunction DerefResolve(schema, references) {\n return (IsConstructor(schema) ? FromConstructor(schema, references) :\n IsFunction(schema) ? FromFunction(schema, references) :\n IsIntersect(schema) ? FromIntersect(schema, references) :\n IsUnion(schema) ? FromUnion(schema, references) :\n IsTuple(schema) ? FromTuple(schema, references) :\n IsArray(schema) ? FromArray(schema, references) :\n IsObject(schema) ? FromObject(schema, references) :\n IsPromise(schema) ? FromPromise(schema, references) :\n IsAsyncIterator(schema) ? FromAsyncIterator(schema, references) :\n IsIterator(schema) ? FromIterator(schema, references) :\n IsRef(schema) ? FromRef(schema, references) :\n schema);\n}\n// ------------------------------------------------------------------\n// TDeref\n// ------------------------------------------------------------------\n/** `[Json]` Creates a dereferenced type */\nexport function Deref(schema, references) {\n return DerefResolve(CloneType(schema), CloneRest(references));\n}\n","import { Literal } from '../literal/index.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { Union } from '../union/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/value.mjs';\n/** `[Json]` Creates a Enum type */\nexport function Enum(item, options = {}) {\n if (IsUndefined(item))\n throw new Error('Enum undefined or empty');\n const values1 = globalThis.Object.getOwnPropertyNames(item)\n .filter((key) => isNaN(key))\n .map((key) => item[key]);\n const values2 = [...new Set(values1)];\n const anyOf = values2.map((value) => Literal(value));\n return Union(anyOf, { ...options, [Hint]: 'Enum' });\n}\n","import * as ValueGuard from './value.mjs';\nimport { Kind, Hint, TransformKind, ReadonlyKind, OptionalKind } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\nexport class TypeGuardUnknownTypeError extends TypeBoxError {\n}\nconst KnownTypes = [\n 'Any',\n 'Array',\n 'AsyncIterator',\n 'BigInt',\n 'Boolean',\n 'Constructor',\n 'Date',\n 'Enum',\n 'Function',\n 'Integer',\n 'Intersect',\n 'Iterator',\n 'Literal',\n 'MappedKey',\n 'MappedResult',\n 'Not',\n 'Null',\n 'Number',\n 'Object',\n 'Promise',\n 'Record',\n 'Ref',\n 'RegExp',\n 'String',\n 'Symbol',\n 'TemplateLiteral',\n 'This',\n 'Tuple',\n 'Undefined',\n 'Union',\n 'Uint8Array',\n 'Unknown',\n 'Void',\n];\nfunction IsPattern(value) {\n try {\n new RegExp(value);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction IsControlCharacterFree(value) {\n if (!ValueGuard.IsString(value))\n return false;\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n if ((code >= 7 && code <= 13) || code === 27 || code === 127) {\n return false;\n }\n }\n return true;\n}\nfunction IsAdditionalProperties(value) {\n return IsOptionalBoolean(value) || IsSchema(value);\n}\nfunction IsOptionalBigInt(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsBigInt(value);\n}\nfunction IsOptionalNumber(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsNumber(value);\n}\nfunction IsOptionalBoolean(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsBoolean(value);\n}\nfunction IsOptionalString(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsString(value);\n}\nfunction IsOptionalPattern(value) {\n return ValueGuard.IsUndefined(value) || (ValueGuard.IsString(value) && IsControlCharacterFree(value) && IsPattern(value));\n}\nfunction IsOptionalFormat(value) {\n return ValueGuard.IsUndefined(value) || (ValueGuard.IsString(value) && IsControlCharacterFree(value));\n}\nfunction IsOptionalSchema(value) {\n return ValueGuard.IsUndefined(value) || IsSchema(value);\n}\n// ------------------------------------------------------------------\n// Modifiers\n// ------------------------------------------------------------------\n/** Returns true if this value has a Readonly symbol */\nexport function IsReadonly(value) {\n return ValueGuard.IsObject(value) && value[ReadonlyKind] === 'Readonly';\n}\n/** Returns true if this value has a Optional symbol */\nexport function IsOptional(value) {\n return ValueGuard.IsObject(value) && value[OptionalKind] === 'Optional';\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\n/** Returns true if the given value is TAny */\nexport function IsAny(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Any') &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TArray */\nexport function IsArray(value) {\n return (IsKindOf(value, 'Array') &&\n value.type === 'array' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items) &&\n IsOptionalNumber(value.minItems) &&\n IsOptionalNumber(value.maxItems) &&\n IsOptionalBoolean(value.uniqueItems) &&\n IsOptionalSchema(value.contains) &&\n IsOptionalNumber(value.minContains) &&\n IsOptionalNumber(value.maxContains));\n}\n/** Returns true if the given value is TAsyncIterator */\nexport function IsAsyncIterator(value) {\n // prettier-ignore\n return (IsKindOf(value, 'AsyncIterator') &&\n value.type === 'AsyncIterator' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items));\n}\n/** Returns true if the given value is TBigInt */\nexport function IsBigInt(value) {\n // prettier-ignore\n return (IsKindOf(value, 'BigInt') &&\n value.type === 'bigint' &&\n IsOptionalString(value.$id) &&\n IsOptionalBigInt(value.exclusiveMaximum) &&\n IsOptionalBigInt(value.exclusiveMinimum) &&\n IsOptionalBigInt(value.maximum) &&\n IsOptionalBigInt(value.minimum) &&\n IsOptionalBigInt(value.multipleOf));\n}\n/** Returns true if the given value is TBoolean */\nexport function IsBoolean(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Boolean') &&\n value.type === 'boolean' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TConstructor */\nexport function IsConstructor(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Constructor') &&\n value.type === 'Constructor' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every(schema => IsSchema(schema)) &&\n IsSchema(value.returns));\n}\n/** Returns true if the given value is TDate */\nexport function IsDate(value) {\n return (IsKindOf(value, 'Date') &&\n value.type === 'Date' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximumTimestamp) &&\n IsOptionalNumber(value.exclusiveMinimumTimestamp) &&\n IsOptionalNumber(value.maximumTimestamp) &&\n IsOptionalNumber(value.minimumTimestamp) &&\n IsOptionalNumber(value.multipleOfTimestamp));\n}\n/** Returns true if the given value is TFunction */\nexport function IsFunction(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Function') &&\n value.type === 'Function' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every(schema => IsSchema(schema)) &&\n IsSchema(value.returns));\n}\n/** Returns true if the given value is TInteger */\nexport function IsInteger(value) {\n return (IsKindOf(value, 'Integer') &&\n value.type === 'integer' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximum) &&\n IsOptionalNumber(value.exclusiveMinimum) &&\n IsOptionalNumber(value.maximum) &&\n IsOptionalNumber(value.minimum) &&\n IsOptionalNumber(value.multipleOf));\n}\n/** Returns true if the given schema is TProperties */\nexport function IsProperties(value) {\n // prettier-ignore\n return (ValueGuard.IsObject(value) &&\n Object.entries(value).every(([key, schema]) => IsControlCharacterFree(key) && IsSchema(schema)));\n}\n/** Returns true if the given value is TIntersect */\nexport function IsIntersect(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Intersect') &&\n (ValueGuard.IsString(value.type) && value.type !== 'object' ? false : true) &&\n ValueGuard.IsArray(value.allOf) &&\n value.allOf.every(schema => IsSchema(schema) && !IsTransform(schema)) &&\n IsOptionalString(value.type) &&\n (IsOptionalBoolean(value.unevaluatedProperties) || IsOptionalSchema(value.unevaluatedProperties)) &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TIterator */\nexport function IsIterator(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Iterator') &&\n value.type === 'Iterator' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items));\n}\n/** Returns true if the given value is a TKind with the given name. */\nexport function IsKindOf(value, kind) {\n return ValueGuard.IsObject(value) && Kind in value && value[Kind] === kind;\n}\n/** Returns true if the given value is TLiteral<string> */\nexport function IsLiteralString(value) {\n return IsLiteral(value) && ValueGuard.IsString(value.const);\n}\n/** Returns true if the given value is TLiteral<number> */\nexport function IsLiteralNumber(value) {\n return IsLiteral(value) && ValueGuard.IsNumber(value.const);\n}\n/** Returns true if the given value is TLiteral<boolean> */\nexport function IsLiteralBoolean(value) {\n return IsLiteral(value) && ValueGuard.IsBoolean(value.const);\n}\n/** Returns true if the given value is TLiteral */\nexport function IsLiteral(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Literal') &&\n IsOptionalString(value.$id) && IsLiteralValue(value.const));\n}\n/** Returns true if the given value is a TLiteralValue */\nexport function IsLiteralValue(value) {\n return ValueGuard.IsBoolean(value) || ValueGuard.IsNumber(value) || ValueGuard.IsString(value);\n}\n/** Returns true if the given value is a TMappedKey */\nexport function IsMappedKey(value) {\n // prettier-ignore\n return (IsKindOf(value, 'MappedKey') &&\n ValueGuard.IsArray(value.keys) &&\n value.keys.every(key => ValueGuard.IsNumber(key) || ValueGuard.IsString(key)));\n}\n/** Returns true if the given value is TMappedResult */\nexport function IsMappedResult(value) {\n // prettier-ignore\n return (IsKindOf(value, 'MappedResult') &&\n IsProperties(value.properties));\n}\n/** Returns true if the given value is TNever */\nexport function IsNever(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Never') &&\n ValueGuard.IsObject(value.not) &&\n Object.getOwnPropertyNames(value.not).length === 0);\n}\n/** Returns true if the given value is TNot */\nexport function IsNot(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Not') &&\n IsSchema(value.not));\n}\n/** Returns true if the given value is TNull */\nexport function IsNull(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Null') &&\n value.type === 'null' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TNumber */\nexport function IsNumber(value) {\n return (IsKindOf(value, 'Number') &&\n value.type === 'number' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximum) &&\n IsOptionalNumber(value.exclusiveMinimum) &&\n IsOptionalNumber(value.maximum) &&\n IsOptionalNumber(value.minimum) &&\n IsOptionalNumber(value.multipleOf));\n}\n/** Returns true if the given value is TObject */\nexport function IsObject(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Object') &&\n value.type === 'object' &&\n IsOptionalString(value.$id) &&\n IsProperties(value.properties) &&\n IsAdditionalProperties(value.additionalProperties) &&\n IsOptionalNumber(value.minProperties) &&\n IsOptionalNumber(value.maxProperties));\n}\n/** Returns true if the given value is TPromise */\nexport function IsPromise(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Promise') &&\n value.type === 'Promise' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.item));\n}\n/** Returns true if the given value is TRecord */\nexport function IsRecord(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Record') &&\n value.type === 'object' &&\n IsOptionalString(value.$id) &&\n IsAdditionalProperties(value.additionalProperties) &&\n ValueGuard.IsObject(value.patternProperties) &&\n ((schema) => {\n const keys = Object.getOwnPropertyNames(schema.patternProperties);\n return (keys.length === 1 &&\n IsPattern(keys[0]) &&\n ValueGuard.IsObject(schema.patternProperties) &&\n IsSchema(schema.patternProperties[keys[0]]));\n })(value));\n}\n/** Returns true if this value is TRecursive */\nexport function IsRecursive(value) {\n return ValueGuard.IsObject(value) && Hint in value && value[Hint] === 'Recursive';\n}\n/** Returns true if the given value is TRef */\nexport function IsRef(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Ref') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.$ref));\n}\n/** Returns true if the given value is TRegExp */\nexport function IsRegExp(value) {\n // prettier-ignore\n return (IsKindOf(value, 'RegExp') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.source) &&\n ValueGuard.IsString(value.flags) &&\n IsOptionalNumber(value.maxLength) &&\n IsOptionalNumber(value.minLength));\n}\n/** Returns true if the given value is TString */\nexport function IsString(value) {\n // prettier-ignore\n return (IsKindOf(value, 'String') &&\n value.type === 'string' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.minLength) &&\n IsOptionalNumber(value.maxLength) &&\n IsOptionalPattern(value.pattern) &&\n IsOptionalFormat(value.format));\n}\n/** Returns true if the given value is TSymbol */\nexport function IsSymbol(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Symbol') &&\n value.type === 'symbol' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TTemplateLiteral */\nexport function IsTemplateLiteral(value) {\n // prettier-ignore\n return (IsKindOf(value, 'TemplateLiteral') &&\n value.type === 'string' &&\n ValueGuard.IsString(value.pattern) &&\n value.pattern[0] === '^' &&\n value.pattern[value.pattern.length - 1] === '$');\n}\n/** Returns true if the given value is TThis */\nexport function IsThis(value) {\n // prettier-ignore\n return (IsKindOf(value, 'This') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.$ref));\n}\n/** Returns true of this value is TTransform */\nexport function IsTransform(value) {\n return ValueGuard.IsObject(value) && TransformKind in value;\n}\n/** Returns true if the given value is TTuple */\nexport function IsTuple(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Tuple') &&\n value.type === 'array' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsNumber(value.minItems) &&\n ValueGuard.IsNumber(value.maxItems) &&\n value.minItems === value.maxItems &&\n (( // empty\n ValueGuard.IsUndefined(value.items) &&\n ValueGuard.IsUndefined(value.additionalItems) &&\n value.minItems === 0) || (ValueGuard.IsArray(value.items) &&\n value.items.every(schema => IsSchema(schema)))));\n}\n/** Returns true if the given value is TUndefined */\nexport function IsUndefined(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Undefined') &&\n value.type === 'undefined' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TUnion<Literal<string | number>[]> */\nexport function IsUnionLiteral(value) {\n return IsUnion(value) && value.anyOf.every((schema) => IsLiteralString(schema) || IsLiteralNumber(schema));\n}\n/** Returns true if the given value is TUnion */\nexport function IsUnion(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Union') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsObject(value) &&\n ValueGuard.IsArray(value.anyOf) &&\n value.anyOf.every(schema => IsSchema(schema)));\n}\n/** Returns true if the given value is TUint8Array */\nexport function IsUint8Array(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Uint8Array') &&\n value.type === 'Uint8Array' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.minByteLength) &&\n IsOptionalNumber(value.maxByteLength));\n}\n/** Returns true if the given value is TUnknown */\nexport function IsUnknown(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Unknown') &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is a raw TUnsafe */\nexport function IsUnsafe(value) {\n return IsKindOf(value, 'Unsafe');\n}\n/** Returns true if the given value is TVoid */\nexport function IsVoid(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Void') &&\n value.type === 'void' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TKind */\nexport function IsKind(value) {\n return ValueGuard.IsObject(value) && Kind in value && ValueGuard.IsString(value[Kind]) && !KnownTypes.includes(value[Kind]);\n}\n/** Returns true if the given value is TSchema */\nexport function IsSchema(value) {\n // prettier-ignore\n return (ValueGuard.IsObject(value)) && (IsAny(value) ||\n IsArray(value) ||\n IsBoolean(value) ||\n IsBigInt(value) ||\n IsAsyncIterator(value) ||\n IsConstructor(value) ||\n IsDate(value) ||\n IsFunction(value) ||\n IsInteger(value) ||\n IsIntersect(value) ||\n IsIterator(value) ||\n IsLiteral(value) ||\n IsMappedKey(value) ||\n IsMappedResult(value) ||\n IsNever(value) ||\n IsNot(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsObject(value) ||\n IsPromise(value) ||\n IsRecord(value) ||\n IsRef(value) ||\n IsRegExp(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsTemplateLiteral(value) ||\n IsThis(value) ||\n IsTuple(value) ||\n IsUndefined(value) ||\n IsUnion(value) ||\n IsUint8Array(value) ||\n IsUnknown(value) ||\n IsUnsafe(value) ||\n IsVoid(value) ||\n IsKind(value));\n}\n","import { Any } from '../any/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { String } from '../string/index.mjs';\nimport { Unknown } from '../unknown/index.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nimport { PatternNumberExact, PatternStringExact } from '../patterns/index.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\nimport { TypeGuard, ValueGuard } from '../guard/index.mjs';\nexport class ExtendsResolverError extends TypeBoxError {\n}\nexport var ExtendsResult;\n(function (ExtendsResult) {\n ExtendsResult[ExtendsResult[\"Union\"] = 0] = \"Union\";\n ExtendsResult[ExtendsResult[\"True\"] = 1] = \"True\";\n ExtendsResult[ExtendsResult[\"False\"] = 2] = \"False\";\n})(ExtendsResult || (ExtendsResult = {}));\n// ------------------------------------------------------------------\n// IntoBooleanResult\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IntoBooleanResult(result) {\n return result === ExtendsResult.False ? result : ExtendsResult.True;\n}\n// ------------------------------------------------------------------\n// Throw\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Throw(message) {\n throw new ExtendsResolverError(message);\n}\n// ------------------------------------------------------------------\n// StructuralRight\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsStructuralRight(right) {\n return (TypeGuard.IsNever(right) ||\n TypeGuard.IsIntersect(right) ||\n TypeGuard.IsUnion(right) ||\n TypeGuard.IsUnknown(right) ||\n TypeGuard.IsAny(right));\n}\n// prettier-ignore\nfunction StructuralRight(left, right) {\n return (TypeGuard.IsNever(right) ? FromNeverRight(left, right) :\n TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsUnknown(right) ? FromUnknownRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n Throw('StructuralRight'));\n}\n// ------------------------------------------------------------------\n// Any\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromAnyRight(left, right) {\n return ExtendsResult.True;\n}\n// prettier-ignore\nfunction FromAny(left, right) {\n return (TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n (TypeGuard.IsUnion(right) && right.anyOf.some((schema) => TypeGuard.IsAny(schema) || TypeGuard.IsUnknown(schema))) ? ExtendsResult.True :\n TypeGuard.IsUnion(right) ? ExtendsResult.Union :\n TypeGuard.IsUnknown(right) ? ExtendsResult.True :\n TypeGuard.IsAny(right) ? ExtendsResult.True :\n ExtendsResult.Union);\n}\n// ------------------------------------------------------------------\n// Array\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromArrayRight(left, right) {\n return (TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union :\n TypeGuard.IsNever(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromArray(left, right) {\n return (TypeGuard.IsObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsArray(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// AsyncIterator\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromAsyncIterator(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsAsyncIterator(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// BigInt\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromBigInt(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsBigInt(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Boolean\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromBooleanRight(left, right) {\n return (TypeGuard.IsLiteralBoolean(left) ? ExtendsResult.True :\n TypeGuard.IsBoolean(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromBoolean(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsBoolean(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Constructor\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromConstructor(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsConstructor(right) ? ExtendsResult.False :\n left.parameters.length > right.parameters.length ? ExtendsResult.False :\n (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.returns, right.returns)));\n}\n// ------------------------------------------------------------------\n// Date\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromDate(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsDate(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Function\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromFunction(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsFunction(right) ? ExtendsResult.False :\n left.parameters.length > right.parameters.length ? ExtendsResult.False :\n (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.returns, right.returns)));\n}\n// ------------------------------------------------------------------\n// Integer\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIntegerRight(left, right) {\n return (TypeGuard.IsLiteral(left) && ValueGuard.IsNumber(left.const) ? ExtendsResult.True :\n TypeGuard.IsNumber(left) || TypeGuard.IsInteger(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromInteger(left, right) {\n return (TypeGuard.IsInteger(right) || TypeGuard.IsNumber(right) ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Intersect\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIntersectRight(left, right) {\n return right.allOf.every((schema) => Visit(left, schema) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromIntersect(left, right) {\n return left.allOf.some((schema) => Visit(schema, right) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// ------------------------------------------------------------------\n// Iterator\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIterator(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsIterator(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// Literal\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromLiteral(left, right) {\n return (TypeGuard.IsLiteral(right) && right.const === left.const ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsString(right) ? FromStringRight(left, right) :\n TypeGuard.IsNumber(right) ? FromNumberRight(left, right) :\n TypeGuard.IsInteger(right) ? FromIntegerRight(left, right) :\n TypeGuard.IsBoolean(right) ? FromBooleanRight(left, right) :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Never\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNeverRight(left, right) {\n return ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromNever(left, right) {\n return ExtendsResult.True;\n}\n// ------------------------------------------------------------------\n// Not\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction UnwrapTNot(schema) {\n let [current, depth] = [schema, 0];\n while (true) {\n if (!TypeGuard.IsNot(current))\n break;\n current = current.not;\n depth += 1;\n }\n return depth % 2 === 0 ? current : Unknown();\n}\n// prettier-ignore\nfunction FromNot(left, right) {\n // TypeScript has no concept of negated types, and attempts to correctly check the negated\n // type at runtime would put TypeBox at odds with TypeScripts ability to statically infer\n // the type. Instead we unwrap to either unknown or T and continue evaluating.\n // prettier-ignore\n return (TypeGuard.IsNot(left) ? Visit(UnwrapTNot(left), right) :\n TypeGuard.IsNot(right) ? Visit(left, UnwrapTNot(right)) :\n Throw('Invalid fallthrough for Not'));\n}\n// ------------------------------------------------------------------\n// Null\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNull(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsNull(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Number\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNumberRight(left, right) {\n return (TypeGuard.IsLiteralNumber(left) ? ExtendsResult.True :\n TypeGuard.IsNumber(left) || TypeGuard.IsInteger(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromNumber(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsInteger(right) || TypeGuard.IsNumber(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Object\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsObjectPropertyCount(schema, count) {\n return Object.getOwnPropertyNames(schema.properties).length === count;\n}\n// prettier-ignore\nfunction IsObjectStringLike(schema) {\n return IsObjectArrayLike(schema);\n}\n// prettier-ignore\nfunction IsObjectSymbolLike(schema) {\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'description' in schema.properties && TypeGuard.IsUnion(schema.properties.description) && schema.properties.description.anyOf.length === 2 && ((TypeGuard.IsString(schema.properties.description.anyOf[0]) &&\n TypeGuard.IsUndefined(schema.properties.description.anyOf[1])) || (TypeGuard.IsString(schema.properties.description.anyOf[1]) &&\n TypeGuard.IsUndefined(schema.properties.description.anyOf[0]))));\n}\n// prettier-ignore\nfunction IsObjectNumberLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectBooleanLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectBigIntLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectDateLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectUint8ArrayLike(schema) {\n return IsObjectArrayLike(schema);\n}\n// prettier-ignore\nfunction IsObjectFunctionLike(schema) {\n const length = Number();\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);\n}\n// prettier-ignore\nfunction IsObjectConstructorLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectArrayLike(schema) {\n const length = Number();\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);\n}\n// prettier-ignore\nfunction IsObjectPromiseLike(schema) {\n const then = FunctionType([Any()], Any());\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'then' in schema.properties && IntoBooleanResult(Visit(schema.properties['then'], then)) === ExtendsResult.True);\n}\n// ------------------------------------------------------------------\n// Property\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Property(left, right) {\n return (Visit(left, right) === ExtendsResult.False ? ExtendsResult.False :\n TypeGuard.IsOptional(left) && !TypeGuard.IsOptional(right) ? ExtendsResult.False :\n ExtendsResult.True);\n}\n// prettier-ignore\nfunction FromObjectRight(left, right) {\n return (TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union : (TypeGuard.IsNever(left) ||\n (TypeGuard.IsLiteralString(left) && IsObjectStringLike(right)) ||\n (TypeGuard.IsLiteralNumber(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsLiteralBoolean(left) && IsObjectBooleanLike(right)) ||\n (TypeGuard.IsSymbol(left) && IsObjectSymbolLike(right)) ||\n (TypeGuard.IsBigInt(left) && IsObjectBigIntLike(right)) ||\n (TypeGuard.IsString(left) && IsObjectStringLike(right)) ||\n (TypeGuard.IsSymbol(left) && IsObjectSymbolLike(right)) ||\n (TypeGuard.IsNumber(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsInteger(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsBoolean(left) && IsObjectBooleanLike(right)) ||\n (TypeGuard.IsUint8Array(left) && IsObjectUint8ArrayLike(right)) ||\n (TypeGuard.IsDate(left) && IsObjectDateLike(right)) ||\n (TypeGuard.IsConstructor(left) && IsObjectConstructorLike(right)) ||\n (TypeGuard.IsFunction(left) && IsObjectFunctionLike(right))) ? ExtendsResult.True :\n (TypeGuard.IsRecord(left) && TypeGuard.IsString(RecordKey(left))) ? (() => {\n // When expressing a Record with literal key values, the Record is converted into a Object with\n // the Hint assigned as `Record`. This is used to invert the extends logic.\n return right[Hint] === 'Record' ? ExtendsResult.True : ExtendsResult.False;\n })() :\n (TypeGuard.IsRecord(left) && TypeGuard.IsNumber(RecordKey(left))) ? (() => {\n return IsObjectPropertyCount(right, 0) ? ExtendsResult.True : ExtendsResult.False;\n })() :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromObject(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n !TypeGuard.IsObject(right) ? ExtendsResult.False :\n (() => {\n for (const key of Object.getOwnPropertyNames(right.properties)) {\n if (!(key in left.properties) && !TypeGuard.IsOptional(right.properties[key])) {\n return ExtendsResult.False;\n }\n if (TypeGuard.IsOptional(right.properties[key])) {\n return ExtendsResult.True;\n }\n if (Property(left.properties[key], right.properties[key]) === ExtendsResult.False) {\n return ExtendsResult.False;\n }\n }\n return ExtendsResult.True;\n })());\n}\n// ------------------------------------------------------------------\n// Promise\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromPromise(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) && IsObjectPromiseLike(right) ? ExtendsResult.True :\n !TypeGuard.IsPromise(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.item, right.item)));\n}\n// ------------------------------------------------------------------\n// Record\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordKey(schema) {\n return (PatternNumberExact in schema.patternProperties ? Number() :\n PatternStringExact in schema.patternProperties ? String() :\n Throw('Unknown record key pattern'));\n}\n// prettier-ignore\nfunction RecordValue(schema) {\n return (PatternNumberExact in schema.patternProperties ? schema.patternProperties[PatternNumberExact] :\n PatternStringExact in schema.patternProperties ? schema.patternProperties[PatternStringExact] :\n Throw('Unable to get record value schema'));\n}\n// prettier-ignore\nfunction FromRecordRight(left, right) {\n const [Key, Value] = [RecordKey(right), RecordValue(right)];\n return ((TypeGuard.IsLiteralString(left) && TypeGuard.IsNumber(Key) && IntoBooleanResult(Visit(left, Value)) === ExtendsResult.True) ? ExtendsResult.True :\n TypeGuard.IsUint8Array(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsString(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsArray(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsObject(left) ? (() => {\n for (const key of Object.getOwnPropertyNames(left.properties)) {\n if (Property(Value, left.properties[key]) === ExtendsResult.False) {\n return ExtendsResult.False;\n }\n }\n return ExtendsResult.True;\n })() :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromRecord(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsRecord(right) ? ExtendsResult.False :\n Visit(RecordValue(left), RecordValue(right)));\n}\n// ------------------------------------------------------------------\n// RegExp\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromRegExp(left, right) {\n // Note: RegExp types evaluate as strings, not RegExp objects.\n // Here we remap either into string and continue evaluating.\n const L = TypeGuard.IsRegExp(left) ? String() : left;\n const R = TypeGuard.IsRegExp(right) ? String() : right;\n return Visit(L, R);\n}\n// ------------------------------------------------------------------\n// String\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromStringRight(left, right) {\n return (TypeGuard.IsLiteral(left) && ValueGuard.IsString(left.const) ? ExtendsResult.True :\n TypeGuard.IsString(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromString(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsString(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Symbol\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromSymbol(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsSymbol(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// TemplateLiteral\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromTemplateLiteral(left, right) {\n // TemplateLiteral types are resolved to either unions for finite expressions or string\n // for infinite expressions. Here we call to TemplateLiteralResolver to resolve for\n // either type and continue evaluating.\n return (TypeGuard.IsTemplateLiteral(left) ? Visit(TemplateLiteralToUnion(left), right) :\n TypeGuard.IsTemplateLiteral(right) ? Visit(left, TemplateLiteralToUnion(right)) :\n Throw('Invalid fallthrough for TemplateLiteral'));\n}\n// ------------------------------------------------------------------\n// Tuple\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsArrayOfTuple(left, right) {\n return (TypeGuard.IsArray(right) &&\n left.items !== undefined &&\n left.items.every((schema) => Visit(schema, right.items) === ExtendsResult.True));\n}\n// prettier-ignore\nfunction FromTupleRight(left, right) {\n return (TypeGuard.IsNever(left) ? ExtendsResult.True :\n TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromTuple(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :\n TypeGuard.IsArray(right) && IsArrayOfTuple(left, right) ? ExtendsResult.True :\n !TypeGuard.IsTuple(right) ? ExtendsResult.False :\n (ValueGuard.IsUndefined(left.items) && !ValueGuard.IsUndefined(right.items)) || (!ValueGuard.IsUndefined(left.items) && ValueGuard.IsUndefined(right.items)) ? ExtendsResult.False :\n (ValueGuard.IsUndefined(left.items) && !ValueGuard.IsUndefined(right.items)) ? ExtendsResult.True :\n left.items.every((schema, index) => Visit(schema, right.items[index]) === ExtendsResult.True) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Uint8Array\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUint8Array(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsUint8Array(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Undefined\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUndefined(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsVoid(right) ? FromVoidRight(left, right) :\n TypeGuard.IsUndefined(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Union\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUnionRight(left, right) {\n return right.anyOf.some((schema) => Visit(left, schema) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromUnion(left, right) {\n return left.anyOf.every((schema) => Visit(schema, right) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// ------------------------------------------------------------------\n// Unknown\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUnknownRight(left, right) {\n return ExtendsResult.True;\n}\n// prettier-ignore\nfunction FromUnknown(left, right) {\n return (TypeGuard.IsNever(right) ? FromNeverRight(left, right) :\n TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n TypeGuard.IsString(right) ? FromStringRight(left, right) :\n TypeGuard.IsNumber(right) ? FromNumberRight(left, right) :\n TypeGuard.IsInteger(right) ? FromIntegerRight(left, right) :\n TypeGuard.IsBoolean(right) ? FromBooleanRight(left, right) :\n TypeGuard.IsArray(right) ? FromArrayRight(left, right) :\n TypeGuard.IsTuple(right) ? FromTupleRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsUnknown(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Void\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromVoidRight(left, right) {\n return (TypeGuard.IsUndefined(left) ? ExtendsResult.True :\n TypeGuard.IsUndefined(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromVoid(left, right) {\n return (TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsUnknown(right) ? FromUnknownRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsVoid(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction Visit(left, right) {\n return (\n // resolvable\n (TypeGuard.IsTemplateLiteral(left) || TypeGuard.IsTemplateLiteral(right)) ? FromTemplateLiteral(left, right) :\n (TypeGuard.IsRegExp(left) || TypeGuard.IsRegExp(right)) ? FromRegExp(left, right) :\n (TypeGuard.IsNot(left) || TypeGuard.IsNot(right)) ? FromNot(left, right) :\n // standard\n TypeGuard.IsAny(left) ? FromAny(left, right) :\n TypeGuard.IsArray(left) ? FromArray(left, right) :\n TypeGuard.IsBigInt(left) ? FromBigInt(left, right) :\n TypeGuard.IsBoolean(left) ? FromBoolean(left, right) :\n TypeGuard.IsAsyncIterator(left) ? FromAsyncIterator(left, right) :\n TypeGuard.IsConstructor(left) ? FromConstructor(left, right) :\n TypeGuard.IsDate(left) ? FromDate(left, right) :\n TypeGuard.IsFunction(left) ? FromFunction(left, right) :\n TypeGuard.IsInteger(left) ? FromInteger(left, right) :\n TypeGuard.IsIntersect(left) ? FromIntersect(left, right) :\n TypeGuard.IsIterator(left) ? FromIterator(left, right) :\n TypeGuard.IsLiteral(left) ? FromLiteral(left, right) :\n TypeGuard.IsNever(left) ? FromNever(left, right) :\n TypeGuard.IsNull(left) ? FromNull(left, right) :\n TypeGuard.IsNumber(left) ? FromNumber(left, right) :\n TypeGuard.IsObject(left) ? FromObject(left, right) :\n TypeGuard.IsRecord(left) ? FromRecord(left, right) :\n TypeGuard.IsString(left) ? FromString(left, right) :\n TypeGuard.IsSymbol(left) ? FromSymbol(left, right) :\n TypeGuard.IsTuple(left) ? FromTuple(left, right) :\n TypeGuard.IsPromise(left) ? FromPromise(left, right) :\n TypeGuard.IsUint8Array(left) ? FromUint8Array(left, right) :\n TypeGuard.IsUndefined(left) ? FromUndefined(left, right) :\n TypeGuard.IsUnion(left) ? FromUnion(left, right) :\n TypeGuard.IsUnknown(left) ? FromUnknown(left, right) :\n TypeGuard.IsVoid(left) ? FromVoid(left, right) :\n Throw(`Unknown left type operand '${left[Kind]}'`));\n}\nexport function ExtendsCheck(left, right) {\n return Visit(left, right);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Extends } from './extends.mjs';\n// prettier-ignore\nfunction FromProperties(P, Right, True, False, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Extends(P[K2], Right, True, False, options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(Left, Right, True, False, options) {\n return FromProperties(Left.properties, Right, True, False, options);\n}\n// prettier-ignore\nexport function ExtendsFromMappedResult(Left, Right, True, False, options) {\n const P = FromMappedResult(Left, Right, True, False, options);\n return MappedResult(P);\n}\n","import { Union } from '../union/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from './extends-check.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { ExtendsFromMappedKey } from './extends-from-mapped-key.mjs';\nimport { ExtendsFromMappedResult } from './extends-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsMappedResult } from '../guard/kind.mjs';\n// prettier-ignore\nfunction ExtendsResolve(left, right, trueType, falseType) {\n const R = ExtendsCheck(left, right);\n return (R === ExtendsResult.Union ? Union([trueType, falseType]) :\n R === ExtendsResult.True ? trueType :\n falseType);\n}\n/** `[Json]` Creates a Conditional type */\nexport function Extends(L, R, T, F, options = {}) {\n // prettier-ignore\n return (IsMappedResult(L) ? ExtendsFromMappedResult(L, R, T, F, options) :\n IsMappedKey(L) ? CloneType(ExtendsFromMappedKey(L, R, T, F, options)) :\n CloneType(ExtendsResolve(L, R, T, F), options));\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Extends } from './extends.mjs';\n// prettier-ignore\nfunction FromPropertyKey(K, U, L, R, options) {\n return {\n [K]: Extends(Literal(K), U, L, R, options)\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(K, U, L, R, options) {\n return K.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(LK, U, L, R, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(K, U, L, R, options) {\n return FromPropertyKeys(K.keys, U, L, R, options);\n}\n// prettier-ignore\nexport function ExtendsFromMappedKey(T, U, L, R, options) {\n const P = FromMappedKey(T, U, L, R, options);\n return MappedResult(P);\n}\n","import { Exclude } from './exclude.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nexport function ExcludeFromTemplateLiteral(L, R) {\n return Exclude(TemplateLiteralToUnion(L), R);\n}\n","import { Union } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from '../extends/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { ExcludeFromMappedResult } from './exclude-from-mapped-result.mjs';\nimport { ExcludeFromTemplateLiteral } from './exclude-from-template-literal.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\nfunction ExcludeRest(L, R) {\n const excluded = L.filter((inner) => ExtendsCheck(inner, R) === ExtendsResult.False);\n return excluded.length === 1 ? excluded[0] : Union(excluded);\n}\n/** `[Json]` Constructs a type by excluding from unionType all union members that are assignable to excludedMembers */\nexport function Exclude(L, R, options = {}) {\n // overloads\n if (IsTemplateLiteral(L))\n return CloneType(ExcludeFromTemplateLiteral(L, R), options);\n if (IsMappedResult(L))\n return CloneType(ExcludeFromMappedResult(L, R), options);\n // prettier-ignore\n return CloneType(IsUnion(L) ? ExcludeRest(L.anyOf, R) :\n ExtendsCheck(L, R) !== ExtendsResult.False ? Never() : L, options);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Exclude } from './exclude.mjs';\n// prettier-ignore\nfunction FromProperties(P, U) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Exclude(P[K2], U);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, T) {\n return FromProperties(R.properties, T);\n}\n// prettier-ignore\nexport function ExcludeFromMappedResult(R, T) {\n const P = FromMappedResult(R, T);\n return MappedResult(P);\n}\n","import { Extract } from './extract.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nexport function ExtractFromTemplateLiteral(L, R) {\n return Extract(TemplateLiteralToUnion(L), R);\n}\n","import { Union } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from '../extends/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { ExtractFromMappedResult } from './extract-from-mapped-result.mjs';\nimport { ExtractFromTemplateLiteral } from './extract-from-template-literal.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\nfunction ExtractRest(L, R) {\n const extracted = L.filter((inner) => ExtendsCheck(inner, R) !== ExtendsResult.False);\n return extracted.length === 1 ? extracted[0] : Union(extracted);\n}\n/** `[Json]` Constructs a type by extracting from type all union members that are assignable to union */\nexport function Extract(L, R, options = {}) {\n // overloads\n if (IsTemplateLiteral(L))\n return CloneType(ExtractFromTemplateLiteral(L, R), options);\n if (IsMappedResult(L))\n return CloneType(ExtractFromMappedResult(L, R), options);\n // prettier-ignore\n return CloneType(IsUnion(L) ? ExtractRest(L.anyOf, R) :\n ExtendsCheck(L, R) !== ExtendsResult.False ? L : Never(), options);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Extract } from './extract.mjs';\n// prettier-ignore\nfunction FromProperties(P, T) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Extract(P[K2], T);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, T) {\n return FromProperties(R.properties, T);\n}\n// prettier-ignore\nexport function ExtractFromMappedResult(R, T) {\n const P = FromMappedResult(R, T);\n return MappedResult(P);\n}\n","import { CloneType } from '../clone/type.mjs';\n/** `[JavaScript]` Extracts the InstanceType from the given Constructor type */\nexport function InstanceType(schema, options = {}) {\n return CloneType(schema.returns, options);\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Integer type */\nexport function Integer(options = {}) {\n return {\n ...options,\n [Kind]: 'Integer',\n type: 'integer',\n };\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Intrinsic } from './intrinsic.mjs';\nimport { Literal } from '../literal/index.mjs';\n// prettier-ignore\nfunction MappedIntrinsicPropertyKey(K, M, options) {\n return {\n [K]: Intrinsic(Literal(K), M, options)\n };\n}\n// prettier-ignore\nfunction MappedIntrinsicPropertyKeys(K, M, options) {\n return K.reduce((Acc, L) => {\n return { ...Acc, ...MappedIntrinsicPropertyKey(L, M, options) };\n }, {});\n}\n// prettier-ignore\nfunction MappedIntrinsicProperties(T, M, options) {\n return MappedIntrinsicPropertyKeys(T['keys'], M, options);\n}\n// prettier-ignore\nexport function IntrinsicFromMappedKey(T, M, options) {\n const P = MappedIntrinsicProperties(T, M, options);\n return MappedResult(P);\n}\n","import { TemplateLiteral, TemplateLiteralParseExact, IsTemplateLiteralExpressionFinite, TemplateLiteralExpressionGenerate } from '../template-literal/index.mjs';\nimport { IntrinsicFromMappedKey } from './intrinsic-from-mapped-key.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Union } from '../union/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsTemplateLiteral, IsUnion, IsLiteral } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// Apply\n// ------------------------------------------------------------------\nfunction ApplyUncapitalize(value) {\n const [first, rest] = [value.slice(0, 1), value.slice(1)];\n return [first.toLowerCase(), rest].join('');\n}\nfunction ApplyCapitalize(value) {\n const [first, rest] = [value.slice(0, 1), value.slice(1)];\n return [first.toUpperCase(), rest].join('');\n}\nfunction ApplyUppercase(value) {\n return value.toUpperCase();\n}\nfunction ApplyLowercase(value) {\n return value.toLowerCase();\n}\nfunction FromTemplateLiteral(schema, mode, options) {\n // note: template literals require special runtime handling as they are encoded in string patterns.\n // This diverges from the mapped type which would otherwise map on the template literal kind.\n const expression = TemplateLiteralParseExact(schema.pattern);\n const finite = IsTemplateLiteralExpressionFinite(expression);\n if (!finite)\n return { ...schema, pattern: FromLiteralValue(schema.pattern, mode) };\n const strings = [...TemplateLiteralExpressionGenerate(expression)];\n const literals = strings.map((value) => Literal(value));\n const mapped = FromRest(literals, mode);\n const union = Union(mapped);\n return TemplateLiteral([union], options);\n}\n// prettier-ignore\nfunction FromLiteralValue(value, mode) {\n return (typeof value === 'string' ? (mode === 'Uncapitalize' ? ApplyUncapitalize(value) :\n mode === 'Capitalize' ? ApplyCapitalize(value) :\n mode === 'Uppercase' ? ApplyUppercase(value) :\n mode === 'Lowercase' ? ApplyLowercase(value) :\n value) : value.toString());\n}\n// prettier-ignore\nfunction FromRest(T, M) {\n return T.map(L => Intrinsic(L, M));\n}\n/** Applies an intrinsic string manipulation to the given type. */\nexport function Intrinsic(schema, mode, options = {}) {\n // prettier-ignore\n return (\n // Intrinsic-Mapped-Inference\n IsMappedKey(schema) ? IntrinsicFromMappedKey(schema, mode, options) :\n // Standard-Inference\n IsTemplateLiteral(schema) ? FromTemplateLiteral(schema, mode, schema) :\n IsUnion(schema) ? Union(FromRest(schema.anyOf, mode), options) :\n IsLiteral(schema) ? Literal(FromLiteralValue(schema.const, mode), options) :\n schema);\n}\n","import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Capitalize LiteralString types */\nexport function Capitalize(T, options = {}) {\n return Intrinsic(T, 'Capitalize', options);\n}\n","import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Lowercase LiteralString types */\nexport function Lowercase(T, options = {}) {\n return Intrinsic(T, 'Lowercase', options);\n}\n","import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Uncapitalize LiteralString types */\nexport function Uncapitalize(T, options = {}) {\n return Intrinsic(T, 'Uncapitalize', options);\n}\n","import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Uppercase LiteralString types */\nexport function Uppercase(T, options = {}) {\n return Intrinsic(T, 'Uppercase', options);\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Not type */\nexport function Not(schema, options) {\n return {\n ...options,\n [Kind]: 'Not',\n not: CloneType(schema),\n };\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Omit } from './omit.mjs';\n// prettier-ignore\nfunction FromProperties(P, K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Omit(P[K2], K, options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, K, options) {\n return FromProperties(R.properties, K, options);\n}\n// prettier-ignore\nexport function OmitFromMappedResult(R, K, options) {\n const P = FromMappedResult(R, K, options);\n return MappedResult(P);\n}\n","import { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { TransformKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { OmitFromMappedKey } from './omit-from-mapped-key.mjs';\nimport { OmitFromMappedResult } from './omit-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsIntersect, IsUnion, IsObject, IsSchema, IsMappedResult } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromIntersect(T, K) {\n return T.map((T) => OmitResolve(T, K));\n}\n// prettier-ignore\nfunction FromUnion(T, K) {\n return T.map((T) => OmitResolve(T, K));\n}\n// ------------------------------------------------------------------\n// FromProperty\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromProperty(T, K) {\n const { [K]: _, ...R } = T;\n return R;\n}\n// prettier-ignore\nfunction FromProperties(T, K) {\n return K.reduce((T, K2) => FromProperty(T, K2), T);\n}\n// ------------------------------------------------------------------\n// OmitResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction OmitResolve(T, K) {\n return (IsIntersect(T) ? Intersect(FromIntersect(T.allOf, K)) :\n IsUnion(T) ? Union(FromUnion(T.anyOf, K)) :\n IsObject(T) ? Object(FromProperties(T.properties, K)) :\n Object({}));\n}\nexport function Omit(T, K, options = {}) {\n // mapped\n if (IsMappedKey(K))\n return OmitFromMappedKey(T, K, options);\n if (IsMappedResult(T))\n return OmitFromMappedResult(T, K, options);\n // non-mapped\n const I = IsSchema(K) ? IndexPropertyKeys(K) : K;\n const D = Discard(T, [TransformKind, '$id', 'required']);\n const R = CloneType(OmitResolve(T, I), options);\n return { ...D, ...R };\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Omit } from './omit.mjs';\n// prettier-ignore\nfunction FromPropertyKey(T, K, options) {\n return {\n [K]: Omit(T, [K], options)\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(T, K, options) {\n return K.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(T, LK, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(T, K, options) {\n return FromPropertyKeys(T, K.keys, options);\n}\n// prettier-ignore\nexport function OmitFromMappedKey(T, K, options) {\n const P = FromMappedKey(T, K, options);\n return MappedResult(P);\n}\n","import { Tuple } from '../tuple/index.mjs';\nimport { CloneRest } from '../clone/type.mjs';\n/** `[JavaScript]` Extracts the Parameters from the given Function type */\nexport function Parameters(schema, options = {}) {\n return Tuple(CloneRest(schema.parameters), { ...options });\n}\n","import { Optional } from '../optional/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { TransformKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { PartialFromMappedResult } from './partial-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsIntersect, IsUnion, IsObject } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(T) {\n return T.map(L => PartialResolve(L));\n}\n// prettier-ignore\nfunction FromProperties(T) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(T))\n Acc[K] = Optional(T[K]);\n return Acc;\n}\n// ------------------------------------------------------------------\n// PartialResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction PartialResolve(T) {\n return (IsIntersect(T) ? Intersect(FromRest(T.allOf)) :\n IsUnion(T) ? Union(FromRest(T.anyOf)) :\n IsObject(T) ? Object(FromProperties(T.properties)) :\n Object({}));\n}\n/** `[Json]` Constructs a type where all properties are optional */\nexport function Partial(T, options = {}) {\n if (IsMappedResult(T))\n return PartialFromMappedResult(T, options);\n const D = Discard(T, [TransformKind, '$id', 'required']);\n const R = CloneType(PartialResolve(T), options);\n return { ...D, ...R };\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Partial } from './partial.mjs';\n// prettier-ignore\nfunction FromProperties(K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = Partial(K[K2], options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nexport function PartialFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return MappedResult(P);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Pick } from './pick.mjs';\n// prettier-ignore\nfunction FromProperties(P, K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Pick(P[K2], K, options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, K, options) {\n return FromProperties(R.properties, K, options);\n}\n// prettier-ignore\nexport function PickFromMappedResult(R, K, options) {\n const P = FromMappedResult(R, K, options);\n return MappedResult(P);\n}\n","import { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { TransformKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { PickFromMappedKey } from './pick-from-mapped-key.mjs';\nimport { PickFromMappedResult } from './pick-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsMappedResult, IsIntersect, IsUnion, IsObject, IsSchema } from '../guard/kind.mjs';\nfunction FromIntersect(T, K) {\n return T.map((T) => PickResolve(T, K));\n}\n// prettier-ignore\nfunction FromUnion(T, K) {\n return T.map((T) => PickResolve(T, K));\n}\n// prettier-ignore\nfunction FromProperties(T, K) {\n const Acc = {};\n for (const K2 of K)\n if (K2 in T)\n Acc[K2] = T[K2];\n return Acc;\n}\n// ------------------------------------------------------------------\n// PickResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction PickResolve(T, K) {\n return (IsIntersect(T) ? Intersect(FromIntersect(T.allOf, K)) :\n IsUnion(T) ? Union(FromUnion(T.anyOf, K)) :\n IsObject(T) ? Object(FromProperties(T.properties, K)) :\n Object({}));\n}\nexport function Pick(T, K, options = {}) {\n // mapped\n if (IsMappedKey(K))\n return PickFromMappedKey(T, K, options);\n if (IsMappedResult(T))\n return PickFromMappedResult(T, K, options);\n // non-mapped\n const I = IsSchema(K) ? IndexPropertyKeys(K) : K;\n const D = Discard(T, [TransformKind, '$id', 'required']);\n const R = CloneType(PickResolve(T, I), options);\n return { ...D, ...R };\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Pick } from './pick.mjs';\n// prettier-ignore\nfunction FromPropertyKey(T, K, options) {\n return {\n [K]: Pick(T, [K], options)\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(T, K, options) {\n return K.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(T, LK, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(T, K, options) {\n return FromPropertyKeys(T, K.keys, options);\n}\n// prettier-ignore\nexport function PickFromMappedKey(T, K, options) {\n const P = FromMappedKey(T, K, options);\n return MappedResult(P);\n}\n","import { Readonly } from '../readonly/index.mjs';\nimport { Optional } from '../optional/index.mjs';\n/** `[Json]` Creates a Readonly and Optional property */\nexport function ReadonlyOptional(schema) {\n return Readonly(Optional(schema));\n}\n","import { Object } from '../object/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { IsTemplateLiteralFinite } from '../template-literal/index.mjs';\nimport { PatternStringExact, PatternNumberExact } from '../patterns/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/value.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsInteger, IsLiteral, IsNumber, IsString, IsRegExp, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// RecordCreateFromPattern\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordCreateFromPattern(pattern, T, options) {\n return {\n ...options,\n [Kind]: 'Record',\n type: 'object',\n patternProperties: { [pattern]: CloneType(T) }\n };\n}\n// ------------------------------------------------------------------\n// RecordCreateFromKeys\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordCreateFromKeys(K, T, options) {\n const Acc = {};\n for (const K2 of K)\n Acc[K2] = CloneType(T);\n return Object(Acc, { ...options, [Hint]: 'Record' });\n}\n// prettier-ignore\nfunction FromTemplateLiteralKey(K, T, options) {\n return (IsTemplateLiteralFinite(K)\n ? RecordCreateFromKeys(IndexPropertyKeys(K), T, options)\n : RecordCreateFromPattern(K.pattern, T, options));\n}\n// prettier-ignore\nfunction FromUnionKey(K, T, options) {\n return RecordCreateFromKeys(IndexPropertyKeys(Union(K)), T, options);\n}\n// prettier-ignore\nfunction FromLiteralKey(K, T, options) {\n return RecordCreateFromKeys([K.toString()], T, options);\n}\n// prettier-ignore\nfunction FromRegExpKey(K, T, options) {\n return RecordCreateFromPattern(K.source, T, options);\n}\n// prettier-ignore\nfunction FromStringKey(K, T, options) {\n const pattern = IsUndefined(K.pattern) ? PatternStringExact : K.pattern;\n return RecordCreateFromPattern(pattern, T, options);\n}\n// prettier-ignore\nfunction FromIntegerKey(_, T, options) {\n return RecordCreateFromPattern(PatternNumberExact, T, options);\n}\n// prettier-ignore\nfunction FromNumberKey(_, T, options) {\n return RecordCreateFromPattern(PatternNumberExact, T, options);\n}\n// ------------------------------------------------------------------\n// TRecordOrObject\n// ------------------------------------------------------------------\n/** `[Json]` Creates a Record type */\nexport function Record(K, T, options = {}) {\n // prettier-ignore\n return (IsUnion(K) ? FromUnionKey(K.anyOf, T, options) :\n IsTemplateLiteral(K) ? FromTemplateLiteralKey(K, T, options) :\n IsLiteral(K) ? FromLiteralKey(K.const, T, options) :\n IsInteger(K) ? FromIntegerKey(K, T, options) :\n IsNumber(K) ? FromNumberKey(K, T, options) :\n IsRegExp(K) ? FromRegExpKey(K, T, options) :\n IsString(K) ? FromStringKey(K, T, options) :\n Never(options));\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { IsUndefined } from '../guard/value.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\n// Auto Tracked For Recursive Types without ID's\nlet Ordinal = 0;\n/** `[Json]` Creates a Recursive type */\nexport function Recursive(callback, options = {}) {\n if (IsUndefined(options.$id))\n options.$id = `T${Ordinal++}`;\n const thisType = callback({ [Kind]: 'This', $ref: `${options.$id}` });\n thisType.$id = options.$id;\n // prettier-ignore\n return CloneType({ ...options, [Hint]: 'Recursive', ...thisType });\n}\n","import { Kind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsString, IsUndefined } from '../guard/value.mjs';\n/** `[Json]` Creates a Ref type. */\nexport function Ref(unresolved, options = {}) {\n if (IsString(unresolved))\n return { ...options, [Kind]: 'Ref', $ref: unresolved };\n if (IsUndefined(unresolved.$id))\n throw new Error('Reference target type must specify an $id');\n return {\n ...options,\n [Kind]: 'Ref',\n $ref: unresolved.$id,\n };\n}\n","import { IsString } from '../guard/value.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a RegExp type */\nexport function RegExp(unresolved, options = {}) {\n const expr = IsString(unresolved) ? new globalThis.RegExp(unresolved) : unresolved;\n return { ...options, [Kind]: 'RegExp', type: 'RegExp', source: expr.source, flags: expr.flags };\n}\n","/** A registry for user defined string formats */\nconst map = new Map();\n/** Returns the entries in this registry */\nexport function Entries() {\n return new Map(map);\n}\n/** Clears all user defined string formats */\nexport function Clear() {\n return map.clear();\n}\n/** Deletes a registered format */\nexport function Delete(format) {\n return map.delete(format);\n}\n/** Returns true if the user defined string format exists */\nexport function Has(format) {\n return map.has(format);\n}\n/** Sets a validation function for a user defined string format */\nexport function Set(format, func) {\n map.set(format, func);\n}\n/** Gets a validation function for a user defined string format */\nexport function Get(format) {\n return map.get(format);\n}\n","/** A registry for user defined types */\nconst map = new Map();\n/** Returns the entries in this registry */\nexport function Entries() {\n return new Map(map);\n}\n/** Clears all user defined types */\nexport function Clear() {\n return map.clear();\n}\n/** Deletes a registered type */\nexport function Delete(kind) {\n return map.delete(kind);\n}\n/** Returns true if this registry contains this kind */\nexport function Has(kind) {\n return map.has(kind);\n}\n/** Sets a validation function for a user defined type */\nexport function Set(kind, func) {\n map.set(kind, func);\n}\n/** Gets a custom validation function for a user defined type */\nexport function Get(kind) {\n return map.get(kind);\n}\n","import { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { OptionalKind, TransformKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { RequiredFromMappedResult } from './required-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsIntersect, IsUnion, IsObject } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(T) {\n return T.map(L => RequiredResolve(L));\n}\n// prettier-ignore\nfunction FromProperties(T) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(T))\n Acc[K] = Discard(T[K], [OptionalKind]);\n return Acc;\n}\n// ------------------------------------------------------------------\n// RequiredResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RequiredResolve(T) {\n return (IsIntersect(T) ? Intersect(FromRest(T.allOf)) :\n IsUnion(T) ? Union(FromRest(T.anyOf)) :\n IsObject(T) ? Object(FromProperties(T.properties)) :\n Object({}));\n}\n/** `[Json]` Constructs a type where all properties are required */\nexport function Required(T, options = {}) {\n if (IsMappedResult(T)) {\n return RequiredFromMappedResult(T, options);\n }\n else {\n const D = Discard(T, [TransformKind, '$id', 'required']);\n const R = CloneType(RequiredResolve(T), options);\n return { ...D, ...R };\n }\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Required } from './required.mjs';\n// prettier-ignore\nfunction FromProperties(P, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Required(P[K2], options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nexport function RequiredFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return MappedResult(P);\n}\n","import { CloneRest } from '../clone/type.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsTuple } from '../guard/kind.mjs';\n// prettier-ignore\nfunction RestResolve(T) {\n return (IsIntersect(T) ? CloneRest(T.allOf) :\n IsUnion(T) ? CloneRest(T.anyOf) :\n IsTuple(T) ? CloneRest(T.items ?? []) :\n []);\n}\n/** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */\nexport function Rest(T) {\n return CloneRest(RestResolve(T));\n}\n","import { CloneType } from '../clone/type.mjs';\n/** `[JavaScript]` Extracts the ReturnType from the given Function type */\nexport function ReturnType(schema, options = {}) {\n return CloneType(schema.returns, options);\n}\n","/** `[Json]` Omits compositing symbols from this schema. */\nexport function Strict(schema) {\n return JSON.parse(JSON.stringify(schema));\n}\n","import { TransformKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// TransformBuilders\n// ------------------------------------------------------------------\nexport class TransformDecodeBuilder {\n schema;\n constructor(schema) {\n this.schema = schema;\n }\n Decode(decode) {\n return new TransformEncodeBuilder(this.schema, decode);\n }\n}\n// prettier-ignore\nexport class TransformEncodeBuilder {\n schema;\n decode;\n constructor(schema, decode) {\n this.schema = schema;\n this.decode = decode;\n }\n EncodeTransform(encode, schema) {\n const Encode = (value) => schema[TransformKind].Encode(encode(value));\n const Decode = (value) => this.decode(schema[TransformKind].Decode(value));\n const Codec = { Encode: Encode, Decode: Decode };\n return { ...schema, [TransformKind]: Codec };\n }\n EncodeSchema(encode, schema) {\n const Codec = { Decode: this.decode, Encode: encode };\n return { ...schema, [TransformKind]: Codec };\n }\n Encode(encode) {\n const schema = CloneType(this.schema);\n return (IsTransform(schema) ? this.EncodeTransform(encode, schema) : this.EncodeSchema(encode, schema));\n }\n}\n/** `[Json]` Creates a Transform type */\nexport function Transform(schema) {\n return new TransformDecodeBuilder(schema);\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Unsafe type that will infers as the generic argument T */\nexport function Unsafe(options = {}) {\n return {\n ...options,\n [Kind]: options[Kind] ?? 'Unsafe',\n };\n}\n","// ------------------------------------------------------------------\n// Type: Module\n// ------------------------------------------------------------------\nexport { Any } from '../any/index.mjs';\nexport { Array } from '../array/index.mjs';\nexport { AsyncIterator } from '../async-iterator/index.mjs';\nexport { Awaited } from '../awaited/index.mjs';\nexport { BigInt } from '../bigint/index.mjs';\nexport { Boolean } from '../boolean/index.mjs';\nexport { Composite } from '../composite/index.mjs';\nexport { Const } from '../const/index.mjs';\nexport { Constructor } from '../constructor/index.mjs';\nexport { ConstructorParameters } from '../constructor-parameters/index.mjs';\nexport { Date } from '../date/index.mjs';\nexport { Deref } from '../deref/index.mjs';\nexport { Enum } from '../enum/index.mjs';\nexport { Exclude } from '../exclude/index.mjs';\nexport { Extends } from '../extends/index.mjs';\nexport { Extract } from '../extract/index.mjs';\nexport { Function } from '../function/index.mjs';\nexport { Index } from '../indexed/index.mjs';\nexport { InstanceType } from '../instance-type/index.mjs';\nexport { Integer } from '../integer/index.mjs';\nexport { Intersect } from '../intersect/index.mjs';\nexport { Capitalize, Uncapitalize, Lowercase, Uppercase } from '../intrinsic/index.mjs';\nexport { Iterator } from '../iterator/index.mjs';\nexport { KeyOf } from '../keyof/index.mjs';\nexport { Literal } from '../literal/index.mjs';\nexport { Mapped } from '../mapped/index.mjs';\nexport { Never } from '../never/index.mjs';\nexport { Not } from '../not/index.mjs';\nexport { Null } from '../null/index.mjs';\nexport { Number } from '../number/index.mjs';\nexport { Object } from '../object/index.mjs';\nexport { Omit } from '../omit/index.mjs';\nexport { Optional } from '../optional/index.mjs';\nexport { Parameters } from '../parameters/index.mjs';\nexport { Partial } from '../partial/index.mjs';\nexport { Pick } from '../pick/index.mjs';\nexport { Promise } from '../promise/index.mjs';\nexport { Readonly } from '../readonly/index.mjs';\nexport { ReadonlyOptional } from '../readonly-optional/index.mjs';\nexport { Record } from '../record/index.mjs';\nexport { Recursive } from '../recursive/index.mjs';\nexport { Ref } from '../ref/index.mjs';\nexport { RegExp } from '../regexp/index.mjs';\nexport { Required } from '../required/index.mjs';\nexport { Rest } from '../rest/index.mjs';\nexport { ReturnType } from '../return-type/index.mjs';\nexport { Strict } from '../strict/index.mjs';\nexport { String } from '../string/index.mjs';\nexport { Symbol } from '../symbol/index.mjs';\nexport { TemplateLiteral } from '../template-literal/index.mjs';\nexport { Transform } from '../transform/index.mjs';\nexport { Tuple } from '../tuple/index.mjs';\nexport { Uint8Array } from '../uint8array/index.mjs';\nexport { Undefined } from '../undefined/index.mjs';\nexport { Union } from '../union/index.mjs';\nexport { Unknown } from '../unknown/index.mjs';\nexport { Unsafe } from '../unsafe/index.mjs';\nexport { Void } from '../void/index.mjs';\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Void type */\nexport function Void(options = {}) {\n return {\n ...options,\n [Kind]: 'Void',\n type: 'void',\n };\n}\n","// ------------------------------------------------------------------\n// JsonTypeBuilder\n// ------------------------------------------------------------------\nexport { JsonTypeBuilder } from './json.mjs';\n// ------------------------------------------------------------------\n// JavaScriptTypeBuilder\n// ------------------------------------------------------------------\nimport * as TypeBuilder from './type.mjs';\nimport { JavaScriptTypeBuilder } from './javascript.mjs';\n/** JavaScript Type Builder with Static Resolution for TypeScript */\nconst Type = TypeBuilder;\nexport { JavaScriptTypeBuilder };\nexport { Type };\n","import { TSchema, Type } from \"@sinclair/typebox\";\n\nexport const Nullable = <T extends TSchema>(schema: T) =>\n Type.Union([Type.Null(), schema]);\n","import { Static, Type } from \"@sinclair/typebox\";\nimport { Nullable } from \"./nullable\";\n\nconst userSelectSchema = Type.Object({\n id: Type.String(),\n name: Nullable(Type.String()),\n email: Nullable(Type.String()),\n image: Nullable(Type.String()),\n});\n\nconst workspaceSelectSchema = Type.Object({\n id: Type.String(),\n name: Type.String(),\n});\n\nconst fileSelectSchema = Type.Object({\n id: Type.String(),\n name: Nullable(Type.String()),\n});\n\nconst resourceSelectSchema = Type.Object({\n id: Type.String(),\n path: Type.String(),\n type: Type.Union([\n Type.Literal(\"asset\"),\n Type.Literal(\"file\"),\n Type.Literal(\"fileVersion\"),\n Type.Literal(\"directory\"),\n Type.Literal(\"resource\"),\n ]),\n});\n\nconst siteSelectSchema = Type.Object({\n id: Type.String(),\n subdomain: Nullable(Type.String()),\n});\n\nexport const activityEventSchema = Type.Object({\n id: Type.String(),\n createdAt: Type.String(),\n actorId: Nullable(Type.String()),\n actor: Type.Optional(userSelectSchema),\n type: Type.Union([\n Type.Literal(\"file\"),\n Type.Literal(\"resource\"),\n Type.Literal(\"site\"),\n Type.Literal(\"snapshot\"),\n Type.Literal(\"restore\"),\n ]),\n workspaceId: Nullable(Type.String()),\n workspace: Type.Optional(workspaceSelectSchema),\n fileId: Nullable(Type.String()),\n file: Type.Optional(fileSelectSchema),\n fileVersionId: Nullable(Type.String()),\n resourceId: Nullable(Type.String()),\n resource: Type.Optional(resourceSelectSchema),\n siteId: Nullable(Type.String()),\n site: Type.Optional(siteSelectSchema),\n previousData: Nullable(Type.Any()),\n currentData: Nullable(Type.Any()),\n metadata: Nullable(Type.Any()),\n userAgent: Nullable(Type.String()),\n});\n\nexport type ActivityEvent = Static<typeof activityEventSchema>;\n\nexport const activityEventSelectConfig = {\n id: true,\n createdAt: true,\n actorId: true,\n actor: { $select: { id: true, name: true, email: true, image: true } },\n type: true,\n workspaceId: true,\n workspace: { $select: { id: true, name: true } },\n fileId: true,\n file: { $select: { id: true, name: true } },\n fileVersionId: true,\n resourceId: true,\n resource: { $select: { id: true, path: true, type: true } },\n siteId: true,\n site: { $select: { id: true, subdomain: true } },\n previousData: true,\n currentData: true,\n metadata: true,\n userAgent: true,\n} as const;\n","import { Static, Type } from \"@sinclair/typebox\";\n\nexport const assetSchema = Type.Object({\n id: Type.String(),\n stableId: Type.String(),\n url: Type.String(),\n createdAt: Type.String(),\n size: Type.Number(),\n contentType: Type.Optional(Type.String()),\n width: Type.Union([Type.Null(), Type.Number()]),\n height: Type.Union([Type.Null(), Type.Number()]),\n userId: Type.Union([Type.Null(), Type.String()]),\n});\n\nexport type Asset = Static<typeof assetSchema>;\n","import { Hint, Kind, TSchema } from \"@sinclair/typebox\";\n\nconst SchemaMap = new Map<symbol, string>([\n [Kind, \"_kind\"],\n [Hint, \"_hint\"],\n]);\n\nconst InverseSchemaMap = new Map<string, symbol>(\n Array.from(SchemaMap.entries()).map(([key, value]) => [value, key])\n);\n\nexport type Brand<T> = T & { __brand: string };\n\nexport type EncodedSchema = Brand<\"schema\">;\n\ntype NestedObject = {\n [key: string]: any;\n [sym: symbol]: any;\n};\n\nexport function encodeSchema(\n obj: TSchema,\n symMap: Map<Symbol, string> = SchemaMap\n): EncodedSchema {\n function replaceSymbols(item: any): any {\n if (Array.isArray(item)) {\n return item.map(replaceSymbols);\n } else if (typeof item === \"object\" && item !== null) {\n const newObj: NestedObject = {};\n for (const key in item) {\n if (Object.prototype.hasOwnProperty.call(item, key)) {\n const value = item[key];\n newObj[key] = replaceSymbols(value);\n }\n }\n\n for (const sym of Object.getOwnPropertySymbols(item)) {\n const stringKey = symMap.get(sym);\n if (stringKey) {\n newObj[stringKey] = replaceSymbols(item[sym]);\n }\n }\n return newObj;\n }\n return item;\n }\n\n return replaceSymbols(obj);\n}\n\nexport function decodeSchema(\n obj: EncodedSchema,\n strMap: Map<string, symbol> = InverseSchemaMap\n): TSchema {\n function replaceStringKeys(item: any): any {\n if (Array.isArray(item)) {\n return item.map(replaceStringKeys);\n } else if (typeof item === \"object\" && item !== null) {\n const newObj: NestedObject = {};\n for (const key in item) {\n if (Object.prototype.hasOwnProperty.call(item, key)) {\n const value = item[key];\n const symbolKey = strMap.get(key);\n if (symbolKey) {\n newObj[symbolKey] = replaceStringKeys(value);\n } else {\n newObj[key] = replaceStringKeys(value);\n }\n }\n }\n return newObj;\n }\n return item;\n }\n\n return replaceStringKeys(obj);\n}\n","import { Static, Type } from \"@sinclair/typebox\";\n\nexport const encodingSchema = Type.Union([\n Type.Literal(\"utf-8\"),\n Type.Literal(\"base64\"),\n]);\n\nexport const folderMediaItemSchema = Type.Object({\n id: Type.String({ format: \"uuid\", default: \"\" }),\n kind: Type.Literal(\"folder\"),\n});\n\nexport const assetMediaItemSchema = Type.Object({\n id: Type.String({ format: \"uuid\", default: \"\" }),\n kind: Type.Literal(\"asset\"),\n assetId: Type.String(),\n});\n\nexport const fileSchema = Type.Object({\n id: Type.String({ format: \"uuid\", default: \"\" }),\n kind: Type.Literal(\"file\"),\n content: Type.String(),\n encoding: encodingSchema,\n});\n\nexport const noyaFileSchema = Type.Object({\n id: Type.String({ format: \"uuid\", default: \"\" }),\n kind: Type.Literal(\"noyaFile\"),\n fileId: Type.String(),\n});\n\nexport const mediaItemSchema = Type.Union(\n [folderMediaItemSchema, assetMediaItemSchema, fileSchema, noyaFileSchema],\n {\n discriminator: \"kind\",\n }\n);\n\nexport type FolderMediaItem = Static<typeof folderMediaItemSchema>;\nexport type AssetMediaItem = Static<typeof assetMediaItemSchema>;\nexport type FileMediaItem = Static<typeof fileSchema>;\nexport type NoyaFileMediaItem = Static<typeof noyaFileSchema>;\nexport type MediaItem = Static<typeof mediaItemSchema>;\n\nexport const mediaMapSchema = Type.Record(Type.String(), mediaItemSchema);\nexport type MediaMap = Static<typeof mediaMapSchema>;\n","import { Static, Type } from \"@sinclair/typebox\";\n\nexport const repositorySchema = Type.Object({\n owner: Type.Optional(Type.String()),\n name: Type.Optional(Type.String()),\n ref: Type.Optional(Type.String()),\n path: Type.Optional(Type.String()),\n});\n\nexport type Repository = Static<typeof repositorySchema>;\n\nexport const gistSchema = Type.Object({\n id: Type.Optional(Type.String()),\n});\n\nexport type Gist = Static<typeof gistSchema>;\n","import { Static, Type } from \"@sinclair/typebox\";\n\nconst jsonSchema = Type.Recursive(\n (This) =>\n Type.Union(\n [\n Type.Object({\n type: Type.Literal(\"string\"),\n default: Type.Optional(Type.String()),\n _kind: Type.Literal(\"String\"),\n }),\n Type.Object({\n type: Type.Literal(\"number\"),\n default: Type.Optional(Type.Number()),\n minimum: Type.Optional(Type.Number()),\n maximum: Type.Optional(Type.Number()),\n _kind: Type.Literal(\"Number\"),\n }),\n Type.Object({\n type: Type.Literal(\"boolean\"),\n default: Type.Optional(Type.Boolean()),\n _kind: Type.Literal(\"Boolean\"),\n }),\n Type.Object({\n type: Type.Literal(\"null\"),\n _kind: Type.Literal(\"Null\"),\n }),\n Type.Object({\n type: Type.Literal(\"array\"),\n items: This,\n // default: Type.Optional(Type.Array(Type.Any())),\n // minItems: Type.Optional(Type.Number()),\n // maxItems: Type.Optional(Type.Number()),\n _kind: Type.Literal(\"Array\"),\n }),\n Type.Object({\n type: Type.Literal(\"object\"),\n properties: Type.Record(Type.String(), This),\n required: Type.Optional(Type.Array(Type.String())),\n // default: Type.Optional(Type.Record(Type.String(), Type.Any())),\n _kind: Type.Literal(\"Object\"),\n }),\n ],\n {\n discriminator: \"type\",\n }\n ),\n {\n $id: \"jsonSchema\",\n }\n);\n\nexport type JSONSchema = Static<typeof jsonSchema>;\nexport { jsonSchema };\n","import { Static, TSchema, Type } from \"@sinclair/typebox\";\nimport { jsonSchema } from \"./jsonSchema\";\n\nfunction Nullable<T extends TSchema>(type: T) {\n return Type.Union([type, Type.Null()], { default: null });\n}\n\nconst inputSchemaBase = {\n id: Type.String({ format: \"uuid\", default: \"\" }),\n stableId: Type.String({ format: \"uuid\", default: \"\" }),\n name: Type.String(),\n description: Nullable(Type.String()),\n required: Type.Boolean({ default: false }),\n};\n\nconst fileInputSchema = Type.Object({\n ...inputSchemaBase,\n kind: Type.Literal(\"file\"),\n toolId: Nullable(Type.String()),\n});\n\nexport type FileInput = Static<typeof fileInputSchema>;\n\nconst dataInputSchema = Type.Object({\n ...inputSchemaBase,\n kind: Type.Literal(\"data\"),\n schema: Nullable(jsonSchema),\n});\n\nexport type DataInput = Static<typeof dataInputSchema>;\n\nconst secretInputSchema = Type.Object({\n ...inputSchemaBase,\n kind: Type.Literal(\"secret\"),\n authProvider: Type.Optional(\n Type.Union([Type.Null(), Type.Literal(\"github\"), Type.Literal(\"figma\")], {\n default: null,\n })\n ),\n authScope: Type.Optional(Nullable(Type.String())),\n});\n\nexport type SecretInput = Static<typeof secretInputSchema>;\n\nexport const inputSchema = Type.Union(\n [fileInputSchema, dataInputSchema, secretInputSchema],\n {\n discriminator: \"kind\",\n }\n);\n\nexport type Input = Static<typeof inputSchema>;\n\nconst outputTransformSchemaBase = {\n id: Type.String({ format: \"uuid\", default: \"\" }),\n stableId: Type.String({ format: \"uuid\", default: \"\" }),\n order: Type.Number(),\n};\n\nconst scriptOutputTransformSchema = Type.Object({\n ...outputTransformSchemaBase,\n kind: Type.Literal(\"script\"),\n location: Type.Union([Type.Literal(\"state\"), Type.Literal(\"url\")]),\n value: Type.String(),\n});\n\nexport type ScriptOutputTransform = Static<typeof scriptOutputTransformSchema>;\n\nconst jsonPointerOutputTransformSchema = Type.Object({\n ...outputTransformSchemaBase,\n kind: Type.Literal(\"jsonPointer\"),\n value: Type.String(),\n});\n\nexport type JsonPointerOutputTransform = Static<\n typeof jsonPointerOutputTransformSchema\n>;\n\nexport const outputTransformSchema = Type.Union(\n [scriptOutputTransformSchema, jsonPointerOutputTransformSchema],\n { discriminator: \"kind\" }\n);\n\nexport type OutputTransform = Static<typeof outputTransformSchema>;\n\nexport function createFileInput(\n input: Pick<FileInput, \"id\" | \"name\" | \"stableId\"> & Partial<FileInput>\n): Input {\n return {\n ...input,\n kind: \"file\",\n toolId: input.toolId ?? null,\n description: input.description ?? null,\n required: input.required ?? false,\n };\n}\n\nexport function createDataInput(\n input: Pick<DataInput, \"id\" | \"name\" | \"stableId\"> & Partial<DataInput>\n): Input {\n return {\n ...input,\n kind: \"data\",\n schema: input.schema ?? null,\n description: input.description ?? null,\n required: input.required ?? false,\n };\n}\n\nexport function createSecretInput(\n input: Pick<SecretInput, \"id\" | \"name\" | \"stableId\"> & Partial<SecretInput>\n): Input {\n return {\n ...input,\n kind: \"secret\",\n description: input.description ?? null,\n required: input.required ?? false,\n authProvider: input.authProvider,\n authScope: input.authScope,\n };\n}\n\nexport function createScriptOutputTransform(\n transform: Pick<ScriptOutputTransform, \"id\" | \"order\" | \"stableId\"> &\n Partial<ScriptOutputTransform>\n): OutputTransform {\n return {\n ...transform,\n kind: transform.kind ?? \"script\",\n location: transform.location ?? \"state\",\n value: transform.value ?? \"\",\n };\n}\n\nexport function createJsonPointerOutputTransform(\n transform: Pick<JsonPointerOutputTransform, \"id\" | \"order\" | \"stableId\"> &\n Partial<JsonPointerOutputTransform>\n): OutputTransform {\n return {\n ...transform,\n kind: transform.kind ?? \"jsonPointer\",\n value: transform.value ?? \"\",\n };\n}\n","// --------------------------------------------------------------------------\n// Iterators\n// --------------------------------------------------------------------------\n/** Returns true if this value is an async iterator */\nexport function IsAsyncIterator(value) {\n return IsObject(value) && Symbol.asyncIterator in value;\n}\n/** Returns true if this value is an iterator */\nexport function IsIterator(value) {\n return IsObject(value) && Symbol.iterator in value;\n}\n// --------------------------------------------------------------------------\n// Object Instances\n// --------------------------------------------------------------------------\n/** Returns true if this value is not an instance of a class */\nexport function IsStandardObject(value) {\n return IsObject(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\n/** Returns true if this value is an instance of a class */\nexport function IsInstanceObject(value) {\n return IsObject(value) && !IsArray(value) && IsFunction(value.constructor) && value.constructor.name !== 'Object';\n}\n// --------------------------------------------------------------------------\n// JavaScript\n// --------------------------------------------------------------------------\n/** Returns true if this value is a Promise */\nexport function IsPromise(value) {\n return value instanceof Promise;\n}\n/** Returns true if this value is a Date */\nexport function IsDate(value) {\n return value instanceof Date && Number.isFinite(value.getTime());\n}\n/** Returns true if this value is an instance of Map<K, T> */\nexport function IsMap(value) {\n return value instanceof globalThis.Map;\n}\n/** Returns true if this value is an instance of Set<T> */\nexport function IsSet(value) {\n return value instanceof globalThis.Set;\n}\n/** Returns true if this value is RegExp */\nexport function IsRegExp(value) {\n return value instanceof globalThis.RegExp;\n}\n/** Returns true if this value is a typed array */\nexport function IsTypedArray(value) {\n return ArrayBuffer.isView(value);\n}\n/** Returns true if the value is a Int8Array */\nexport function IsInt8Array(value) {\n return value instanceof globalThis.Int8Array;\n}\n/** Returns true if the value is a Uint8Array */\nexport function IsUint8Array(value) {\n return value instanceof globalThis.Uint8Array;\n}\n/** Returns true if the value is a Uint8ClampedArray */\nexport function IsUint8ClampedArray(value) {\n return value instanceof globalThis.Uint8ClampedArray;\n}\n/** Returns true if the value is a Int16Array */\nexport function IsInt16Array(value) {\n return value instanceof globalThis.Int16Array;\n}\n/** Returns true if the value is a Uint16Array */\nexport function IsUint16Array(value) {\n return value instanceof globalThis.Uint16Array;\n}\n/** Returns true if the value is a Int32Array */\nexport function IsInt32Array(value) {\n return value instanceof globalThis.Int32Array;\n}\n/** Returns true if the value is a Uint32Array */\nexport function IsUint32Array(value) {\n return value instanceof globalThis.Uint32Array;\n}\n/** Returns true if the value is a Float32Array */\nexport function IsFloat32Array(value) {\n return value instanceof globalThis.Float32Array;\n}\n/** Returns true if the value is a Float64Array */\nexport function IsFloat64Array(value) {\n return value instanceof globalThis.Float64Array;\n}\n/** Returns true if the value is a BigInt64Array */\nexport function IsBigInt64Array(value) {\n return value instanceof globalThis.BigInt64Array;\n}\n/** Returns true if the value is a BigUint64Array */\nexport function IsBigUint64Array(value) {\n return value instanceof globalThis.BigUint64Array;\n}\n// --------------------------------------------------------------------------\n// Standard\n// --------------------------------------------------------------------------\n/** Returns true if this value has this property key */\nexport function HasPropertyKey(value, key) {\n return key in value;\n}\n/** Returns true of this value is an object type */\nexport function IsObject(value) {\n return value !== null && typeof value === 'object';\n}\n/** Returns true if this value is an array, but not a typed array */\nexport function IsArray(value) {\n return Array.isArray(value) && !ArrayBuffer.isView(value);\n}\n/** Returns true if this value is an undefined */\nexport function IsUndefined(value) {\n return value === undefined;\n}\n/** Returns true if this value is an null */\nexport function IsNull(value) {\n return value === null;\n}\n/** Returns true if this value is an boolean */\nexport function IsBoolean(value) {\n return typeof value === 'boolean';\n}\n/** Returns true if this value is an number */\nexport function IsNumber(value) {\n return typeof value === 'number';\n}\n/** Returns true if this value is an integer */\nexport function IsInteger(value) {\n return Number.isInteger(value);\n}\n/** Returns true if this value is bigint */\nexport function IsBigInt(value) {\n return typeof value === 'bigint';\n}\n/** Returns true if this value is string */\nexport function IsString(value) {\n return typeof value === 'string';\n}\n/** Returns true if this value is a function */\nexport function IsFunction(value) {\n return typeof value === 'function';\n}\n/** Returns true if this value is a symbol */\nexport function IsSymbol(value) {\n return typeof value === 'symbol';\n}\n/** Returns true if this value is a value type such as number, string, boolean */\nexport function IsValueType(value) {\n // prettier-ignore\n return (IsBigInt(value) ||\n IsBoolean(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsUndefined(value));\n}\n","import { IsObject, IsArray, IsNumber, IsUndefined } from '../value/guard/index.mjs';\nexport var TypeSystemPolicy;\n(function (TypeSystemPolicy) {\n // ------------------------------------------------------------------\n // TypeSystemPolicy\n // ------------------------------------------------------------------\n /** Shared assertion routines used by the value and errors modules */\n /** Sets whether TypeBox should assert optional properties using the TypeScript `exactOptionalPropertyTypes` assertion policy. The default is `false` */\n TypeSystemPolicy.ExactOptionalPropertyTypes = false;\n /** Sets whether arrays should be treated as a kind of objects. The default is `false` */\n TypeSystemPolicy.AllowArrayObject = false;\n /** Sets whether `NaN` or `Infinity` should be treated as valid numeric values. The default is `false` */\n TypeSystemPolicy.AllowNaN = false;\n /** Sets whether `null` should validate for void types. The default is `false` */\n TypeSystemPolicy.AllowNullVoid = false;\n /** Asserts this value using the ExactOptionalPropertyTypes policy */\n function IsExactOptionalProperty(value, key) {\n return TypeSystemPolicy.ExactOptionalPropertyTypes ? key in value : value[key] !== undefined;\n }\n TypeSystemPolicy.IsExactOptionalProperty = IsExactOptionalProperty;\n /** Asserts this value using the AllowArrayObjects policy */\n function IsObjectLike(value) {\n const isObject = IsObject(value);\n return TypeSystemPolicy.AllowArrayObject ? isObject : isObject && !IsArray(value);\n }\n TypeSystemPolicy.IsObjectLike = IsObjectLike;\n /** Asserts this value as a record using the AllowArrayObjects policy */\n function IsRecordLike(value) {\n return IsObjectLike(value) && !(value instanceof Date) && !(value instanceof Uint8Array);\n }\n TypeSystemPolicy.IsRecordLike = IsRecordLike;\n /** Asserts this value using the AllowNaN policy */\n function IsNumberLike(value) {\n return TypeSystemPolicy.AllowNaN ? IsNumber(value) : Number.isFinite(value);\n }\n TypeSystemPolicy.IsNumberLike = IsNumberLike;\n /** Asserts this value using the AllowVoidNull policy */\n function IsVoidLike(value) {\n const isUndefined = IsUndefined(value);\n return TypeSystemPolicy.AllowNullVoid ? isUndefined || value === null : isUndefined;\n }\n TypeSystemPolicy.IsVoidLike = IsVoidLike;\n})(TypeSystemPolicy || (TypeSystemPolicy = {}));\n","import { TypeRegistry, FormatRegistry } from '../type/registry/index.mjs';\nimport { Unsafe } from '../type/unsafe/index.mjs';\nimport { Kind } from '../type/symbols/index.mjs';\nimport { TypeBoxError } from '../type/error/index.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class TypeSystemDuplicateTypeKind extends TypeBoxError {\n constructor(kind) {\n super(`Duplicate type kind '${kind}' detected`);\n }\n}\nexport class TypeSystemDuplicateFormat extends TypeBoxError {\n constructor(kind) {\n super(`Duplicate string format '${kind}' detected`);\n }\n}\n/** Creates user defined types and formats and provides overrides for value checking behaviours */\nexport var TypeSystem;\n(function (TypeSystem) {\n /** Creates a new type */\n function Type(kind, check) {\n if (TypeRegistry.Has(kind))\n throw new TypeSystemDuplicateTypeKind(kind);\n TypeRegistry.Set(kind, check);\n return (options = {}) => Unsafe({ ...options, [Kind]: kind });\n }\n TypeSystem.Type = Type;\n /** Creates a new string format */\n function Format(format, check) {\n if (FormatRegistry.Has(format))\n throw new TypeSystemDuplicateFormat(format);\n FormatRegistry.Set(format, check);\n return format;\n }\n TypeSystem.Format = Format;\n})(TypeSystem || (TypeSystem = {}));\n","import { IsArray, IsBoolean, IsBigInt, IsDate, IsNull, IsNumber, IsStandardObject, IsString, IsSymbol, IsUint8Array, IsUndefined } from '../guard/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueHashError extends TypeBoxError {\n value;\n constructor(value) {\n super(`Unable to hash value`);\n this.value = value;\n }\n}\n// ------------------------------------------------------------------\n// ByteMarker\n// ------------------------------------------------------------------\nvar ByteMarker;\n(function (ByteMarker) {\n ByteMarker[ByteMarker[\"Undefined\"] = 0] = \"Undefined\";\n ByteMarker[ByteMarker[\"Null\"] = 1] = \"Null\";\n ByteMarker[ByteMarker[\"Boolean\"] = 2] = \"Boolean\";\n ByteMarker[ByteMarker[\"Number\"] = 3] = \"Number\";\n ByteMarker[ByteMarker[\"String\"] = 4] = \"String\";\n ByteMarker[ByteMarker[\"Object\"] = 5] = \"Object\";\n ByteMarker[ByteMarker[\"Array\"] = 6] = \"Array\";\n ByteMarker[ByteMarker[\"Date\"] = 7] = \"Date\";\n ByteMarker[ByteMarker[\"Uint8Array\"] = 8] = \"Uint8Array\";\n ByteMarker[ByteMarker[\"Symbol\"] = 9] = \"Symbol\";\n ByteMarker[ByteMarker[\"BigInt\"] = 10] = \"BigInt\";\n})(ByteMarker || (ByteMarker = {}));\n// ------------------------------------------------------------------\n// State\n// ------------------------------------------------------------------\nlet Accumulator = BigInt('14695981039346656037');\nconst [Prime, Size] = [BigInt('1099511628211'), BigInt('2') ** BigInt('64')];\nconst Bytes = Array.from({ length: 256 }).map((_, i) => BigInt(i));\nconst F64 = new Float64Array(1);\nconst F64In = new DataView(F64.buffer);\nconst F64Out = new Uint8Array(F64.buffer);\n// ------------------------------------------------------------------\n// NumberToBytes\n// ------------------------------------------------------------------\nfunction* NumberToBytes(value) {\n const byteCount = value === 0 ? 1 : Math.ceil(Math.floor(Math.log2(value) + 1) / 8);\n for (let i = 0; i < byteCount; i++) {\n yield (value >> (8 * (byteCount - 1 - i))) & 0xff;\n }\n}\n// ------------------------------------------------------------------\n// Hashing Functions\n// ------------------------------------------------------------------\nfunction ArrayType(value) {\n FNV1A64(ByteMarker.Array);\n for (const item of value) {\n Visit(item);\n }\n}\nfunction BooleanType(value) {\n FNV1A64(ByteMarker.Boolean);\n FNV1A64(value ? 1 : 0);\n}\nfunction BigIntType(value) {\n FNV1A64(ByteMarker.BigInt);\n F64In.setBigInt64(0, value);\n for (const byte of F64Out) {\n FNV1A64(byte);\n }\n}\nfunction DateType(value) {\n FNV1A64(ByteMarker.Date);\n Visit(value.getTime());\n}\nfunction NullType(value) {\n FNV1A64(ByteMarker.Null);\n}\nfunction NumberType(value) {\n FNV1A64(ByteMarker.Number);\n F64In.setFloat64(0, value);\n for (const byte of F64Out) {\n FNV1A64(byte);\n }\n}\nfunction ObjectType(value) {\n FNV1A64(ByteMarker.Object);\n for (const key of globalThis.Object.getOwnPropertyNames(value).sort()) {\n Visit(key);\n Visit(value[key]);\n }\n}\nfunction StringType(value) {\n FNV1A64(ByteMarker.String);\n for (let i = 0; i < value.length; i++) {\n for (const byte of NumberToBytes(value.charCodeAt(i))) {\n FNV1A64(byte);\n }\n }\n}\nfunction SymbolType(value) {\n FNV1A64(ByteMarker.Symbol);\n Visit(value.description);\n}\nfunction Uint8ArrayType(value) {\n FNV1A64(ByteMarker.Uint8Array);\n for (let i = 0; i < value.length; i++) {\n FNV1A64(value[i]);\n }\n}\nfunction UndefinedType(value) {\n return FNV1A64(ByteMarker.Undefined);\n}\nfunction Visit(value) {\n if (IsArray(value))\n return ArrayType(value);\n if (IsBoolean(value))\n return BooleanType(value);\n if (IsBigInt(value))\n return BigIntType(value);\n if (IsDate(value))\n return DateType(value);\n if (IsNull(value))\n return NullType(value);\n if (IsNumber(value))\n return NumberType(value);\n if (IsStandardObject(value))\n return ObjectType(value);\n if (IsString(value))\n return StringType(value);\n if (IsSymbol(value))\n return SymbolType(value);\n if (IsUint8Array(value))\n return Uint8ArrayType(value);\n if (IsUndefined(value))\n return UndefinedType(value);\n throw new ValueHashError(value);\n}\nfunction FNV1A64(byte) {\n Accumulator = Accumulator ^ Bytes[byte];\n Accumulator = (Accumulator * Prime) % Size;\n}\n// ------------------------------------------------------------------\n// Hash\n// ------------------------------------------------------------------\n/** Creates a FNV1A-64 non cryptographic hash of the given value */\nexport function Hash(value) {\n Accumulator = BigInt('14695981039346656037');\n Visit(value);\n return Accumulator;\n}\n","import { TypeSystemPolicy } from '../system/index.mjs';\nimport { KeyOfPattern } from '../type/keyof/index.mjs';\nimport { TypeRegistry, FormatRegistry } from '../type/registry/index.mjs';\nimport { ExtendsUndefinedCheck } from '../type/extends/extends-undefined.mjs';\nimport { GetErrorFunction } from './function.mjs';\nimport { TypeBoxError } from '../type/error/index.mjs';\nimport { Deref } from '../value/deref/index.mjs';\nimport { Hash } from '../value/hash/index.mjs';\nimport { Kind } from '../type/symbols/index.mjs';\nimport { Never } from '../type/never/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\n// prettier-ignore\nimport { IsArray, IsUint8Array, IsDate, IsPromise, IsFunction, IsAsyncIterator, IsIterator, IsBoolean, IsNumber, IsBigInt, IsString, IsSymbol, IsInteger, IsNull, IsUndefined } from '../value/guard/index.mjs';\n// ------------------------------------------------------------------\n// ValueErrorType\n// ------------------------------------------------------------------\nexport var ValueErrorType;\n(function (ValueErrorType) {\n ValueErrorType[ValueErrorType[\"ArrayContains\"] = 0] = \"ArrayContains\";\n ValueErrorType[ValueErrorType[\"ArrayMaxContains\"] = 1] = \"ArrayMaxContains\";\n ValueErrorType[ValueErrorType[\"ArrayMaxItems\"] = 2] = \"ArrayMaxItems\";\n ValueErrorType[ValueErrorType[\"ArrayMinContains\"] = 3] = \"ArrayMinContains\";\n ValueErrorType[ValueErrorType[\"ArrayMinItems\"] = 4] = \"ArrayMinItems\";\n ValueErrorType[ValueErrorType[\"ArrayUniqueItems\"] = 5] = \"ArrayUniqueItems\";\n ValueErrorType[ValueErrorType[\"Array\"] = 6] = \"Array\";\n ValueErrorType[ValueErrorType[\"AsyncIterator\"] = 7] = \"AsyncIterator\";\n ValueErrorType[ValueErrorType[\"BigIntExclusiveMaximum\"] = 8] = \"BigIntExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"BigIntExclusiveMinimum\"] = 9] = \"BigIntExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"BigIntMaximum\"] = 10] = \"BigIntMaximum\";\n ValueErrorType[ValueErrorType[\"BigIntMinimum\"] = 11] = \"BigIntMinimum\";\n ValueErrorType[ValueErrorType[\"BigIntMultipleOf\"] = 12] = \"BigIntMultipleOf\";\n ValueErrorType[ValueErrorType[\"BigInt\"] = 13] = \"BigInt\";\n ValueErrorType[ValueErrorType[\"Boolean\"] = 14] = \"Boolean\";\n ValueErrorType[ValueErrorType[\"DateExclusiveMaximumTimestamp\"] = 15] = \"DateExclusiveMaximumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateExclusiveMinimumTimestamp\"] = 16] = \"DateExclusiveMinimumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMaximumTimestamp\"] = 17] = \"DateMaximumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMinimumTimestamp\"] = 18] = \"DateMinimumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMultipleOfTimestamp\"] = 19] = \"DateMultipleOfTimestamp\";\n ValueErrorType[ValueErrorType[\"Date\"] = 20] = \"Date\";\n ValueErrorType[ValueErrorType[\"Function\"] = 21] = \"Function\";\n ValueErrorType[ValueErrorType[\"IntegerExclusiveMaximum\"] = 22] = \"IntegerExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"IntegerExclusiveMinimum\"] = 23] = \"IntegerExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"IntegerMaximum\"] = 24] = \"IntegerMaximum\";\n ValueErrorType[ValueErrorType[\"IntegerMinimum\"] = 25] = \"IntegerMinimum\";\n ValueErrorType[ValueErrorType[\"IntegerMultipleOf\"] = 26] = \"IntegerMultipleOf\";\n ValueErrorType[ValueErrorType[\"Integer\"] = 27] = \"Integer\";\n ValueErrorType[ValueErrorType[\"IntersectUnevaluatedProperties\"] = 28] = \"IntersectUnevaluatedProperties\";\n ValueErrorType[ValueErrorType[\"Intersect\"] = 29] = \"Intersect\";\n ValueErrorType[ValueErrorType[\"Iterator\"] = 30] = \"Iterator\";\n ValueErrorType[ValueErrorType[\"Kind\"] = 31] = \"Kind\";\n ValueErrorType[ValueErrorType[\"Literal\"] = 32] = \"Literal\";\n ValueErrorType[ValueErrorType[\"Never\"] = 33] = \"Never\";\n ValueErrorType[ValueErrorType[\"Not\"] = 34] = \"Not\";\n ValueErrorType[ValueErrorType[\"Null\"] = 35] = \"Null\";\n ValueErrorType[ValueErrorType[\"NumberExclusiveMaximum\"] = 36] = \"NumberExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"NumberExclusiveMinimum\"] = 37] = \"NumberExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"NumberMaximum\"] = 38] = \"NumberMaximum\";\n ValueErrorType[ValueErrorType[\"NumberMinimum\"] = 39] = \"NumberMinimum\";\n ValueErrorType[ValueErrorType[\"NumberMultipleOf\"] = 40] = \"NumberMultipleOf\";\n ValueErrorType[ValueErrorType[\"Number\"] = 41] = \"Number\";\n ValueErrorType[ValueErrorType[\"ObjectAdditionalProperties\"] = 42] = \"ObjectAdditionalProperties\";\n ValueErrorType[ValueErrorType[\"ObjectMaxProperties\"] = 43] = \"ObjectMaxProperties\";\n ValueErrorType[ValueErrorType[\"ObjectMinProperties\"] = 44] = \"ObjectMinProperties\";\n ValueErrorType[ValueErrorType[\"ObjectRequiredProperty\"] = 45] = \"ObjectRequiredProperty\";\n ValueErrorType[ValueErrorType[\"Object\"] = 46] = \"Object\";\n ValueErrorType[ValueErrorType[\"Promise\"] = 47] = \"Promise\";\n ValueErrorType[ValueErrorType[\"RegExp\"] = 48] = \"RegExp\";\n ValueErrorType[ValueErrorType[\"StringFormatUnknown\"] = 49] = \"StringFormatUnknown\";\n ValueErrorType[ValueErrorType[\"StringFormat\"] = 50] = \"StringFormat\";\n ValueErrorType[ValueErrorType[\"StringMaxLength\"] = 51] = \"StringMaxLength\";\n ValueErrorType[ValueErrorType[\"StringMinLength\"] = 52] = \"StringMinLength\";\n ValueErrorType[ValueErrorType[\"StringPattern\"] = 53] = \"StringPattern\";\n ValueErrorType[ValueErrorType[\"String\"] = 54] = \"String\";\n ValueErrorType[ValueErrorType[\"Symbol\"] = 55] = \"Symbol\";\n ValueErrorType[ValueErrorType[\"TupleLength\"] = 56] = \"TupleLength\";\n ValueErrorType[ValueErrorType[\"Tuple\"] = 57] = \"Tuple\";\n ValueErrorType[ValueErrorType[\"Uint8ArrayMaxByteLength\"] = 58] = \"Uint8ArrayMaxByteLength\";\n ValueErrorType[ValueErrorType[\"Uint8ArrayMinByteLength\"] = 59] = \"Uint8ArrayMinByteLength\";\n ValueErrorType[ValueErrorType[\"Uint8Array\"] = 60] = \"Uint8Array\";\n ValueErrorType[ValueErrorType[\"Undefined\"] = 61] = \"Undefined\";\n ValueErrorType[ValueErrorType[\"Union\"] = 62] = \"Union\";\n ValueErrorType[ValueErrorType[\"Void\"] = 63] = \"Void\";\n})(ValueErrorType || (ValueErrorType = {}));\n// ------------------------------------------------------------------\n// ValueErrors\n// ------------------------------------------------------------------\nexport class ValueErrorsUnknownTypeError extends TypeBoxError {\n schema;\n constructor(schema) {\n super('Unknown type');\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// EscapeKey\n// ------------------------------------------------------------------\nfunction EscapeKey(key) {\n return key.replace(/~/g, '~0').replace(/\\//g, '~1'); // RFC6901 Path\n}\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nfunction IsDefined(value) {\n return value !== undefined;\n}\n// ------------------------------------------------------------------\n// ValueErrorIterator\n// ------------------------------------------------------------------\nexport class ValueErrorIterator {\n iterator;\n constructor(iterator) {\n this.iterator = iterator;\n }\n [Symbol.iterator]() {\n return this.iterator;\n }\n /** Returns the first value error or undefined if no errors */\n First() {\n const next = this.iterator.next();\n return next.done ? undefined : next.value;\n }\n}\n// --------------------------------------------------------------------------\n// Create\n// --------------------------------------------------------------------------\nfunction Create(errorType, schema, path, value) {\n return { type: errorType, schema, path, value, message: GetErrorFunction()({ errorType, path, schema, value }) };\n}\n// --------------------------------------------------------------------------\n// Types\n// --------------------------------------------------------------------------\nfunction* FromAny(schema, references, path, value) { }\nfunction* FromArray(schema, references, path, value) {\n if (!IsArray(value)) {\n return yield Create(ValueErrorType.Array, schema, path, value);\n }\n if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) {\n yield Create(ValueErrorType.ArrayMinItems, schema, path, value);\n }\n if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) {\n yield Create(ValueErrorType.ArrayMaxItems, schema, path, value);\n }\n for (let i = 0; i < value.length; i++) {\n yield* Visit(schema.items, references, `${path}/${i}`, value[i]);\n }\n // prettier-ignore\n if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {\n const hashed = Hash(element);\n if (set.has(hashed)) {\n return false;\n }\n else {\n set.add(hashed);\n }\n } return true; })())) {\n yield Create(ValueErrorType.ArrayUniqueItems, schema, path, value);\n }\n // contains\n if (!(IsDefined(schema.contains) || IsDefined(schema.minContains) || IsDefined(schema.maxContains))) {\n return;\n }\n const containsSchema = IsDefined(schema.contains) ? schema.contains : Never();\n const containsCount = value.reduce((acc, value, index) => (Visit(containsSchema, references, `${path}${index}`, value).next().done === true ? acc + 1 : acc), 0);\n if (containsCount === 0) {\n yield Create(ValueErrorType.ArrayContains, schema, path, value);\n }\n if (IsNumber(schema.minContains) && containsCount < schema.minContains) {\n yield Create(ValueErrorType.ArrayMinContains, schema, path, value);\n }\n if (IsNumber(schema.maxContains) && containsCount > schema.maxContains) {\n yield Create(ValueErrorType.ArrayMaxContains, schema, path, value);\n }\n}\nfunction* FromAsyncIterator(schema, references, path, value) {\n if (!IsAsyncIterator(value))\n yield Create(ValueErrorType.AsyncIterator, schema, path, value);\n}\nfunction* FromBigInt(schema, references, path, value) {\n if (!IsBigInt(value))\n return yield Create(ValueErrorType.BigInt, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.BigIntExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.BigIntExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.BigIntMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.BigIntMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) {\n yield Create(ValueErrorType.BigIntMultipleOf, schema, path, value);\n }\n}\nfunction* FromBoolean(schema, references, path, value) {\n if (!IsBoolean(value))\n yield Create(ValueErrorType.Boolean, schema, path, value);\n}\nfunction* FromConstructor(schema, references, path, value) {\n yield* Visit(schema.returns, references, path, value.prototype);\n}\nfunction* FromDate(schema, references, path, value) {\n if (!IsDate(value))\n return yield Create(ValueErrorType.Date, schema, path, value);\n if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) {\n yield Create(ValueErrorType.DateExclusiveMaximumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) {\n yield Create(ValueErrorType.DateExclusiveMinimumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) {\n yield Create(ValueErrorType.DateMaximumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) {\n yield Create(ValueErrorType.DateMinimumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) {\n yield Create(ValueErrorType.DateMultipleOfTimestamp, schema, path, value);\n }\n}\nfunction* FromFunction(schema, references, path, value) {\n if (!IsFunction(value))\n yield Create(ValueErrorType.Function, schema, path, value);\n}\nfunction* FromInteger(schema, references, path, value) {\n if (!IsInteger(value))\n return yield Create(ValueErrorType.Integer, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.IntegerExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.IntegerExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.IntegerMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.IntegerMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n yield Create(ValueErrorType.IntegerMultipleOf, schema, path, value);\n }\n}\nfunction* FromIntersect(schema, references, path, value) {\n for (const inner of schema.allOf) {\n const next = Visit(inner, references, path, value).next();\n if (!next.done) {\n yield Create(ValueErrorType.Intersect, schema, path, value);\n yield next.value;\n }\n }\n if (schema.unevaluatedProperties === false) {\n const keyCheck = new RegExp(KeyOfPattern(schema));\n for (const valueKey of Object.getOwnPropertyNames(value)) {\n if (!keyCheck.test(valueKey)) {\n yield Create(ValueErrorType.IntersectUnevaluatedProperties, schema, `${path}/${valueKey}`, value);\n }\n }\n }\n if (typeof schema.unevaluatedProperties === 'object') {\n const keyCheck = new RegExp(KeyOfPattern(schema));\n for (const valueKey of Object.getOwnPropertyNames(value)) {\n if (!keyCheck.test(valueKey)) {\n const next = Visit(schema.unevaluatedProperties, references, `${path}/${valueKey}`, value[valueKey]).next();\n if (!next.done)\n yield next.value; // yield interior\n }\n }\n }\n}\nfunction* FromIterator(schema, references, path, value) {\n if (!IsIterator(value))\n yield Create(ValueErrorType.Iterator, schema, path, value);\n}\nfunction* FromLiteral(schema, references, path, value) {\n if (!(value === schema.const))\n yield Create(ValueErrorType.Literal, schema, path, value);\n}\nfunction* FromNever(schema, references, path, value) {\n yield Create(ValueErrorType.Never, schema, path, value);\n}\nfunction* FromNot(schema, references, path, value) {\n if (Visit(schema.not, references, path, value).next().done === true)\n yield Create(ValueErrorType.Not, schema, path, value);\n}\nfunction* FromNull(schema, references, path, value) {\n if (!IsNull(value))\n yield Create(ValueErrorType.Null, schema, path, value);\n}\nfunction* FromNumber(schema, references, path, value) {\n if (!TypeSystemPolicy.IsNumberLike(value))\n return yield Create(ValueErrorType.Number, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.NumberExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.NumberExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.NumberMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.NumberMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n yield Create(ValueErrorType.NumberMultipleOf, schema, path, value);\n }\n}\nfunction* FromObject(schema, references, path, value) {\n if (!TypeSystemPolicy.IsObjectLike(value))\n return yield Create(ValueErrorType.Object, schema, path, value);\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n yield Create(ValueErrorType.ObjectMinProperties, schema, path, value);\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n yield Create(ValueErrorType.ObjectMaxProperties, schema, path, value);\n }\n const requiredKeys = Array.isArray(schema.required) ? schema.required : [];\n const knownKeys = Object.getOwnPropertyNames(schema.properties);\n const unknownKeys = Object.getOwnPropertyNames(value);\n for (const requiredKey of requiredKeys) {\n if (unknownKeys.includes(requiredKey))\n continue;\n yield Create(ValueErrorType.ObjectRequiredProperty, schema.properties[requiredKey], `${path}/${EscapeKey(requiredKey)}`, undefined);\n }\n if (schema.additionalProperties === false) {\n for (const valueKey of unknownKeys) {\n if (!knownKeys.includes(valueKey)) {\n yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path}/${EscapeKey(valueKey)}`, value[valueKey]);\n }\n }\n }\n if (typeof schema.additionalProperties === 'object') {\n for (const valueKey of unknownKeys) {\n if (knownKeys.includes(valueKey))\n continue;\n yield* Visit(schema.additionalProperties, references, `${path}/${EscapeKey(valueKey)}`, value[valueKey]);\n }\n }\n for (const knownKey of knownKeys) {\n const property = schema.properties[knownKey];\n if (schema.required && schema.required.includes(knownKey)) {\n yield* Visit(property, references, `${path}/${EscapeKey(knownKey)}`, value[knownKey]);\n if (ExtendsUndefinedCheck(schema) && !(knownKey in value)) {\n yield Create(ValueErrorType.ObjectRequiredProperty, property, `${path}/${EscapeKey(knownKey)}`, undefined);\n }\n }\n else {\n if (TypeSystemPolicy.IsExactOptionalProperty(value, knownKey)) {\n yield* Visit(property, references, `${path}/${EscapeKey(knownKey)}`, value[knownKey]);\n }\n }\n }\n}\nfunction* FromPromise(schema, references, path, value) {\n if (!IsPromise(value))\n yield Create(ValueErrorType.Promise, schema, path, value);\n}\nfunction* FromRecord(schema, references, path, value) {\n if (!TypeSystemPolicy.IsRecordLike(value))\n return yield Create(ValueErrorType.Object, schema, path, value);\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n yield Create(ValueErrorType.ObjectMinProperties, schema, path, value);\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n yield Create(ValueErrorType.ObjectMaxProperties, schema, path, value);\n }\n const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];\n const regex = new RegExp(patternKey);\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (regex.test(propertyKey))\n yield* Visit(patternSchema, references, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n if (typeof schema.additionalProperties === 'object') {\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (!regex.test(propertyKey))\n yield* Visit(schema.additionalProperties, references, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n }\n if (schema.additionalProperties === false) {\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (regex.test(propertyKey))\n continue;\n return yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n }\n}\nfunction* FromRef(schema, references, path, value) {\n yield* Visit(Deref(schema, references), references, path, value);\n}\nfunction* FromRegExp(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) {\n yield Create(ValueErrorType.StringMinLength, schema, path, value);\n }\n if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) {\n yield Create(ValueErrorType.StringMaxLength, schema, path, value);\n }\n const regex = new RegExp(schema.source, schema.flags);\n if (!regex.test(value)) {\n return yield Create(ValueErrorType.RegExp, schema, path, value);\n }\n}\nfunction* FromString(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) {\n yield Create(ValueErrorType.StringMinLength, schema, path, value);\n }\n if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) {\n yield Create(ValueErrorType.StringMaxLength, schema, path, value);\n }\n if (IsString(schema.pattern)) {\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value)) {\n yield Create(ValueErrorType.StringPattern, schema, path, value);\n }\n }\n if (IsString(schema.format)) {\n if (!FormatRegistry.Has(schema.format)) {\n yield Create(ValueErrorType.StringFormatUnknown, schema, path, value);\n }\n else {\n const format = FormatRegistry.Get(schema.format);\n if (!format(value)) {\n yield Create(ValueErrorType.StringFormat, schema, path, value);\n }\n }\n }\n}\nfunction* FromSymbol(schema, references, path, value) {\n if (!IsSymbol(value))\n yield Create(ValueErrorType.Symbol, schema, path, value);\n}\nfunction* FromTemplateLiteral(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value)) {\n yield Create(ValueErrorType.StringPattern, schema, path, value);\n }\n}\nfunction* FromThis(schema, references, path, value) {\n yield* Visit(Deref(schema, references), references, path, value);\n}\nfunction* FromTuple(schema, references, path, value) {\n if (!IsArray(value))\n return yield Create(ValueErrorType.Tuple, schema, path, value);\n if (schema.items === undefined && !(value.length === 0)) {\n return yield Create(ValueErrorType.TupleLength, schema, path, value);\n }\n if (!(value.length === schema.maxItems)) {\n return yield Create(ValueErrorType.TupleLength, schema, path, value);\n }\n if (!schema.items) {\n return;\n }\n for (let i = 0; i < schema.items.length; i++) {\n yield* Visit(schema.items[i], references, `${path}/${i}`, value[i]);\n }\n}\nfunction* FromUndefined(schema, references, path, value) {\n if (!IsUndefined(value))\n yield Create(ValueErrorType.Undefined, schema, path, value);\n}\nfunction* FromUnion(schema, references, path, value) {\n let count = 0;\n for (const subschema of schema.anyOf) {\n const errors = [...Visit(subschema, references, path, value)];\n if (errors.length === 0)\n return; // matched\n count += errors.length;\n }\n if (count > 0) {\n yield Create(ValueErrorType.Union, schema, path, value);\n }\n}\nfunction* FromUint8Array(schema, references, path, value) {\n if (!IsUint8Array(value))\n return yield Create(ValueErrorType.Uint8Array, schema, path, value);\n if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) {\n yield Create(ValueErrorType.Uint8ArrayMaxByteLength, schema, path, value);\n }\n if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) {\n yield Create(ValueErrorType.Uint8ArrayMinByteLength, schema, path, value);\n }\n}\nfunction* FromUnknown(schema, references, path, value) { }\nfunction* FromVoid(schema, references, path, value) {\n if (!TypeSystemPolicy.IsVoidLike(value))\n yield Create(ValueErrorType.Void, schema, path, value);\n}\nfunction* FromKind(schema, references, path, value) {\n const check = TypeRegistry.Get(schema[Kind]);\n if (!check(schema, value))\n yield Create(ValueErrorType.Kind, schema, path, value);\n}\nfunction* Visit(schema, references, path, value) {\n const references_ = IsDefined(schema.$id) ? [...references, schema] : references;\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Any':\n return yield* FromAny(schema_, references_, path, value);\n case 'Array':\n return yield* FromArray(schema_, references_, path, value);\n case 'AsyncIterator':\n return yield* FromAsyncIterator(schema_, references_, path, value);\n case 'BigInt':\n return yield* FromBigInt(schema_, references_, path, value);\n case 'Boolean':\n return yield* FromBoolean(schema_, references_, path, value);\n case 'Constructor':\n return yield* FromConstructor(schema_, references_, path, value);\n case 'Date':\n return yield* FromDate(schema_, references_, path, value);\n case 'Function':\n return yield* FromFunction(schema_, references_, path, value);\n case 'Integer':\n return yield* FromInteger(schema_, references_, path, value);\n case 'Intersect':\n return yield* FromIntersect(schema_, references_, path, value);\n case 'Iterator':\n return yield* FromIterator(schema_, references_, path, value);\n case 'Literal':\n return yield* FromLiteral(schema_, references_, path, value);\n case 'Never':\n return yield* FromNever(schema_, references_, path, value);\n case 'Not':\n return yield* FromNot(schema_, references_, path, value);\n case 'Null':\n return yield* FromNull(schema_, references_, path, value);\n case 'Number':\n return yield* FromNumber(schema_, references_, path, value);\n case 'Object':\n return yield* FromObject(schema_, references_, path, value);\n case 'Promise':\n return yield* FromPromise(schema_, references_, path, value);\n case 'Record':\n return yield* FromRecord(schema_, references_, path, value);\n case 'Ref':\n return yield* FromRef(schema_, references_, path, value);\n case 'RegExp':\n return yield* FromRegExp(schema_, references_, path, value);\n case 'String':\n return yield* FromString(schema_, references_, path, value);\n case 'Symbol':\n return yield* FromSymbol(schema_, references_, path, value);\n case 'TemplateLiteral':\n return yield* FromTemplateLiteral(schema_, references_, path, value);\n case 'This':\n return yield* FromThis(schema_, references_, path, value);\n case 'Tuple':\n return yield* FromTuple(schema_, references_, path, value);\n case 'Undefined':\n return yield* FromUndefined(schema_, references_, path, value);\n case 'Union':\n return yield* FromUnion(schema_, references_, path, value);\n case 'Uint8Array':\n return yield* FromUint8Array(schema_, references_, path, value);\n case 'Unknown':\n return yield* FromUnknown(schema_, references_, path, value);\n case 'Void':\n return yield* FromVoid(schema_, references_, path, value);\n default:\n if (!TypeRegistry.Has(schema_[Kind]))\n throw new ValueErrorsUnknownTypeError(schema);\n return yield* FromKind(schema_, references_, path, value);\n }\n}\n/** Returns an iterator for each error in this value. */\nexport function Errors(...args) {\n const iterator = args.length === 3 ? Visit(args[0], args[1], '', args[2]) : Visit(args[0], [], '', args[1]);\n return new ValueErrorIterator(iterator);\n}\n","import { IsStandardObject, IsArray, IsTypedArray, IsValueType, IsSymbol, IsUndefined } from '../guard/index.mjs';\nimport { ValuePointer } from '../pointer/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { Literal } from '../../type/literal/index.mjs';\nimport { Object } from '../../type/object/index.mjs';\nimport { String } from '../../type/string/index.mjs';\nimport { Unknown } from '../../type/unknown/index.mjs';\nimport { Union } from '../../type/union/index.mjs';\nexport const Insert = Object({\n type: Literal('insert'),\n path: String(),\n value: Unknown(),\n});\nexport const Update = Object({\n type: Literal('update'),\n path: String(),\n value: Unknown(),\n});\nexport const Delete = Object({\n type: Literal('delete'),\n path: String(),\n});\nexport const Edit = Union([Insert, Update, Delete]);\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueDeltaError extends TypeBoxError {\n value;\n constructor(value, message) {\n super(message);\n this.value = value;\n }\n}\nexport class ValueDeltaSymbolError extends ValueDeltaError {\n value;\n constructor(value) {\n super(value, 'Cannot diff objects with symbol keys');\n this.value = value;\n }\n}\n// ------------------------------------------------------------------\n// Command Factory\n// ------------------------------------------------------------------\nfunction CreateUpdate(path, value) {\n return { type: 'update', path, value };\n}\nfunction CreateInsert(path, value) {\n return { type: 'insert', path, value };\n}\nfunction CreateDelete(path) {\n return { type: 'delete', path };\n}\n// ------------------------------------------------------------------\n// Diffing Generators\n// ------------------------------------------------------------------\nfunction* ObjectType(path, current, next) {\n if (!IsStandardObject(next))\n return yield CreateUpdate(path, next);\n const currentKeys = [...globalThis.Object.keys(current), ...globalThis.Object.getOwnPropertySymbols(current)];\n const nextKeys = [...globalThis.Object.keys(next), ...globalThis.Object.getOwnPropertySymbols(next)];\n for (const key of currentKeys) {\n if (IsSymbol(key))\n throw new ValueDeltaSymbolError(key);\n if (IsUndefined(next[key]) && nextKeys.includes(key))\n yield CreateUpdate(`${path}/${globalThis.String(key)}`, undefined);\n }\n for (const key of nextKeys) {\n if (IsUndefined(current[key]) || IsUndefined(next[key]))\n continue;\n if (IsSymbol(key))\n throw new ValueDeltaSymbolError(key);\n yield* Visit(`${path}/${globalThis.String(key)}`, current[key], next[key]);\n }\n for (const key of nextKeys) {\n if (IsSymbol(key))\n throw new ValueDeltaSymbolError(key);\n if (IsUndefined(current[key]))\n yield CreateInsert(`${path}/${globalThis.String(key)}`, next[key]);\n }\n for (const key of currentKeys.reverse()) {\n if (IsSymbol(key))\n throw new ValueDeltaSymbolError(key);\n if (IsUndefined(next[key]) && !nextKeys.includes(key))\n yield CreateDelete(`${path}/${globalThis.String(key)}`);\n }\n}\nfunction* ArrayType(path, current, next) {\n if (!IsArray(next))\n return yield CreateUpdate(path, next);\n for (let i = 0; i < Math.min(current.length, next.length); i++) {\n yield* Visit(`${path}/${i}`, current[i], next[i]);\n }\n for (let i = 0; i < next.length; i++) {\n if (i < current.length)\n continue;\n yield CreateInsert(`${path}/${i}`, next[i]);\n }\n for (let i = current.length - 1; i >= 0; i--) {\n if (i < next.length)\n continue;\n yield CreateDelete(`${path}/${i}`);\n }\n}\nfunction* TypedArrayType(path, current, next) {\n if (!IsTypedArray(next) || current.length !== next.length || globalThis.Object.getPrototypeOf(current).constructor.name !== globalThis.Object.getPrototypeOf(next).constructor.name)\n return yield CreateUpdate(path, next);\n for (let i = 0; i < Math.min(current.length, next.length); i++) {\n yield* Visit(`${path}/${i}`, current[i], next[i]);\n }\n}\nfunction* ValueType(path, current, next) {\n if (current === next)\n return;\n yield CreateUpdate(path, next);\n}\nfunction* Visit(path, current, next) {\n if (IsStandardObject(current))\n return yield* ObjectType(path, current, next);\n if (IsArray(current))\n return yield* ArrayType(path, current, next);\n if (IsTypedArray(current))\n return yield* TypedArrayType(path, current, next);\n if (IsValueType(current))\n return yield* ValueType(path, current, next);\n throw new ValueDeltaError(current, 'Unable to create diff edits for unknown value');\n}\n// ------------------------------------------------------------------\n// Diff\n// ------------------------------------------------------------------\nexport function Diff(current, next) {\n return [...Visit('', current, next)];\n}\n// ------------------------------------------------------------------\n// Patch\n// ------------------------------------------------------------------\nfunction IsRootUpdate(edits) {\n return edits.length > 0 && edits[0].path === '' && edits[0].type === 'update';\n}\nfunction IsIdentity(edits) {\n return edits.length === 0;\n}\nexport function Patch(current, edits) {\n if (IsRootUpdate(edits)) {\n return Clone(edits[0].value);\n }\n if (IsIdentity(edits)) {\n return Clone(current);\n }\n const clone = Clone(current);\n for (const edit of edits) {\n switch (edit.type) {\n case 'insert': {\n ValuePointer.Set(clone, edit.path, edit.value);\n break;\n }\n case 'update': {\n ValuePointer.Set(clone, edit.path, edit.value);\n break;\n }\n case 'delete': {\n ValuePointer.Delete(clone, edit.path);\n break;\n }\n }\n }\n return clone;\n}\n","import { Kind, TSchema, TypeGuard } from \"@sinclair/typebox\";\nimport { defineTree } from \"tree-visit\";\n\nexport const SchemaTree = defineTree<TSchema>((schema) => {\n if (TypeGuard.IsUnion(schema)) {\n return schema.anyOf;\n } else if (TypeGuard.IsObject(schema)) {\n return Object.values(schema.properties);\n } else if (TypeGuard.IsArray(schema)) {\n return [schema.items];\n }\n\n return [];\n}).withOptions({\n getLabel(node) {\n return node[Kind] ?? \"<UnknownKind>\";\n },\n});\n\nexport type SchemaDefs = Record<string, TSchema>;\n\nexport function findAllDefs(schema?: TSchema): TSchema[] {\n if (!schema) return [];\n\n return SchemaTree.flat(schema).flatMap((node) => {\n return node.$id ? [node] : [];\n });\n}\n\nexport type SchemaDefsOrReferences = SchemaDefs | TSchema[];\n\nexport function normalizeDefs(defs: SchemaDefsOrReferences): TSchema[] {\n if (Array.isArray(defs)) {\n return defs;\n }\n\n return Object.values(defs);\n}\n\nexport function toSchemaDefs(defs: SchemaDefsOrReferences): SchemaDefs {\n if (Array.isArray(defs)) {\n return Object.fromEntries(defs.map((def) => [def.$id, def]));\n }\n\n return defs;\n}\n","import { Static, Type } from \"@sinclair/typebox\";\nimport { Nullable } from \"./nullable\";\n\nconst baseSchemaProperties = {\n id: Type.String(),\n stableId: Type.String(),\n path: Type.String(),\n createdAt: Type.String(),\n updatedAt: Type.String(),\n accessibleByFileId: Nullable(Type.String()),\n accessibleByFile: Type.Optional(\n Type.Object({\n id: Type.String(),\n name: Type.String(),\n toolId: Type.String(),\n })\n ),\n accessibleByFileVersionId: Nullable(Type.String()),\n url: Type.Optional(Type.String()),\n} as const;\n\nconst uploadableAssetSchema = Type.Object({\n content: Type.String(),\n contentType: Type.String(),\n encoding: Type.Union([Type.Literal(\"utf-8\"), Type.Literal(\"base64\")]),\n});\n\nconst assetResourceSchema = Type.Object({\n ...baseSchemaProperties,\n type: Type.Literal(\"asset\"),\n assetId: Type.String(),\n});\n\nconst assetResourceCreateSchema = Type.Object({\n ...baseSchemaProperties,\n type: Type.Literal(\"asset\"),\n assetId: Type.Optional(Type.String()),\n asset: Type.Optional(uploadableAssetSchema),\n});\n\nconst fileResourceSchema = Type.Object({\n ...baseSchemaProperties,\n type: Type.Literal(\"file\"),\n fileId: Type.String(),\n});\n\nconst directoryResourceSchema = Type.Object({\n ...baseSchemaProperties,\n type: Type.Literal(\"directory\"),\n});\n\nconst nestedResourceSchema = Type.Object({\n ...baseSchemaProperties,\n type: Type.Literal(\"resource\"),\n fileId: Type.String(),\n resourceId: Type.String(),\n});\n\nexport const resourceSchema = Type.Union(\n [\n assetResourceSchema,\n fileResourceSchema,\n directoryResourceSchema,\n nestedResourceSchema,\n ],\n {\n discriminator: \"type\",\n }\n);\n\nexport const resourceCreateSchema = Type.Union(\n [\n assetResourceCreateSchema,\n fileResourceSchema,\n directoryResourceSchema,\n nestedResourceSchema,\n ],\n {\n discriminator: \"type\",\n }\n);\n\nexport type UploadableAsset = Static<typeof uploadableAssetSchema>;\nexport type AssetResource = Static<typeof assetResourceSchema>;\nexport type AssetResourceCreate = Static<typeof assetResourceCreateSchema>;\nexport type FileResource = Static<typeof fileResourceSchema>;\nexport type DirectoryResource = Static<typeof directoryResourceSchema>;\nexport type NestedResource = Static<typeof nestedResourceSchema>;\nexport type Resource = Static<typeof resourceSchema>;\nexport type ResourceCreate = Static<typeof resourceCreateSchema>;\nexport type ResourceMap = Record<string, Resource>;\nexport type ResourceCreateMap = Record<string, ResourceCreate>;\n\ntype CommonResourceParameters = \"path\" | \"type\" | \"accessibleByFileId\";\ntype CommonResourceParametersWithoutAccessibleByFileId = \"path\" | \"type\";\n\nexport type CreateDirectoryParameters = Pick<\n DirectoryResource,\n CommonResourceParameters\n>;\nexport type CreateDirectoryParametersWithoutAccessibleByFileId = Pick<\n DirectoryResource,\n CommonResourceParametersWithoutAccessibleByFileId\n>;\nexport type CreateAssetParameters = Pick<\n AssetResourceCreate,\n CommonResourceParameters | \"assetId\" | \"asset\"\n>;\n\nexport type CreateNestedParameters = Pick<\n NestedResource,\n CommonResourceParameters | \"fileId\" | \"resourceId\"\n>;\n\nexport type CreateAssetParametersWithoutAccessibleByFileId = Pick<\n AssetResourceCreate,\n CommonResourceParametersWithoutAccessibleByFileId | \"assetId\" | \"asset\"\n>;\nexport type CreateFileParameters = Pick<\n FileResource,\n CommonResourceParameters | \"fileId\"\n>;\nexport type CreateFileParametersWithoutAccessibleByFileId = Pick<\n FileResource,\n CommonResourceParametersWithoutAccessibleByFileId | \"fileId\"\n>;\nexport type CreateNestedParametersWithoutAccessibleByFileId = Pick<\n NestedResource,\n CommonResourceParametersWithoutAccessibleByFileId | \"fileId\" | \"resourceId\"\n>;\n\nexport type CreateResourceParameters =\n | CreateDirectoryParameters\n | CreateAssetParameters\n | CreateFileParameters\n | CreateNestedParameters;\n\nexport type DeleteResourceParameters = { id: string };\n\nexport type CreateResourceParametersWithoutAccessibleByFileId =\n | CreateDirectoryParametersWithoutAccessibleByFileId\n | CreateAssetParametersWithoutAccessibleByFileId\n | CreateFileParametersWithoutAccessibleByFileId\n | CreateNestedParametersWithoutAccessibleByFileId;\n\nexport const resourceSelectConfig = {\n id: true,\n stableId: true,\n path: true,\n type: true,\n createdAt: true,\n updatedAt: true,\n accessibleByFileId: true,\n accessibleByFileVersionId: true,\n assetId: true,\n fileId: true,\n resourceId: true,\n} as const;\n\nexport const flatResourceSchema = Type.Object({\n ...baseSchemaProperties,\n type: Type.Union([\n Type.Literal(\"asset\"),\n Type.Literal(\"file\"),\n Type.Literal(\"directory\"),\n Type.Literal(\"resource\"),\n ]),\n assetId: Nullable(Type.String()),\n fileId: Nullable(Type.String()),\n resourceId: Nullable(Type.String()),\n});\n\nexport type FlatResource = Static<typeof flatResourceSchema>;\n\nexport type ModifiedResource = {\n id: string;\n stableId: string;\n path?: string;\n assetId?: string;\n asset?: UploadableAsset;\n};\n\nexport type DiffResources = {\n addedResources: ResourceCreate[];\n removedResources: Resource[];\n modifiedResources: ModifiedResource[];\n};\n\nfunction getChangedResourceProperties({\n oldResource,\n newResource,\n oldPath,\n newPath,\n}: {\n oldResource: Resource;\n newResource: ResourceCreate;\n oldPath?: string;\n newPath?: string;\n}): Pick<ModifiedResource, \"path\" | \"assetId\" | \"asset\"> {\n const changed: Pick<ModifiedResource, \"path\" | \"assetId\" | \"asset\"> = {};\n\n if (newPath !== undefined && (oldPath ?? oldResource.path) !== newPath) {\n changed.path = newPath;\n }\n\n const oldAssetId =\n oldResource.type === \"asset\" ? oldResource.assetId : undefined;\n const newAssetId =\n newResource.type === \"asset\" ? newResource.assetId : undefined;\n\n if (oldAssetId !== newAssetId) {\n changed.assetId = newAssetId;\n }\n\n if (newResource.type === \"asset\" && newResource.asset !== undefined) {\n changed.asset = newResource.asset;\n }\n\n return changed;\n}\n\nexport function diffResourceMaps(\n resourceMap: ResourceMap,\n newResourceMap: ResourceCreateMap,\n idProperty: \"id\" | \"stableId\"\n): DiffResources {\n const oldIdToPathMap = new Map(\n Object.entries(resourceMap).map(([path, entity]) => [\n entity[idProperty],\n path,\n ])\n );\n const newIdToPathMap = new Map(\n Object.entries(newResourceMap).map(([path, entity]) => [\n entity[idProperty],\n path,\n ])\n );\n const oldIds = new Set(\n Object.values(resourceMap).map((entity) => entity[idProperty])\n );\n const newIds = new Set(\n Object.values(newResourceMap).map((entity) => entity[idProperty])\n );\n const sameIds = oldIds.intersection(newIds);\n const addedResources = Object.values(newResourceMap).filter(\n (entity) => !oldIds.has(entity[idProperty])\n );\n const removedResources = Object.values(resourceMap).filter(\n (entity) => !newIds.has(entity[idProperty])\n );\n const sameIdModifiedResources = [...sameIds].flatMap((id) => {\n const oldResource = Object.values(resourceMap).find(\n (resource) => resource[idProperty] === id\n );\n const newResource = Object.values(newResourceMap).find(\n (resource) => resource[idProperty] === id\n );\n\n if (!oldResource || !newResource) return [];\n\n const oldPath = oldIdToPathMap.get(id);\n const newPath = newIdToPathMap.get(id);\n const changedProperties = getChangedResourceProperties({\n oldResource,\n newResource,\n oldPath,\n newPath,\n });\n\n if (Object.keys(changedProperties).length === 0) return [];\n\n return [{ id, stableId: newResource.stableId, ...changedProperties }];\n });\n\n const removedResourcesByPath = new Map(\n removedResources.map((resource) => [resource.path, resource])\n );\n\n const swappedPaths = new Set<string>();\n const swappedModifiedResources: ModifiedResource[] = [];\n\n for (const addedResource of addedResources) {\n const existingResource = removedResourcesByPath.get(addedResource.path);\n\n if (!existingResource) continue;\n if (existingResource.type !== addedResource.type) continue;\n if (existingResource[idProperty] === addedResource[idProperty]) continue;\n\n swappedPaths.add(addedResource.path);\n\n const changedProperties = getChangedResourceProperties({\n oldResource: existingResource,\n newResource: addedResource,\n oldPath: existingResource.path,\n newPath: addedResource.path,\n });\n\n if (Object.keys(changedProperties).length === 0) continue;\n\n const id = existingResource[idProperty];\n\n swappedModifiedResources.push({\n id,\n stableId: existingResource.stableId,\n ...changedProperties,\n });\n }\n\n const filteredAddedResources = addedResources.filter(\n (resource) => !swappedPaths.has(resource.path)\n );\n const filteredRemovedResources = removedResources.filter(\n (resource) => !swappedPaths.has(resource.path)\n );\n\n return {\n addedResources: filteredAddedResources,\n removedResources: filteredRemovedResources,\n modifiedResources: [\n ...sameIdModifiedResources,\n ...swappedModifiedResources,\n ],\n };\n}\n","import { path } from \"imfs\";\nimport { defineTree } from \"tree-visit\";\nimport {\n AssetResourceCreate,\n DirectoryResource,\n FileResource,\n NestedResource,\n Resource,\n ResourceMap,\n} from \"./resourceSchema\";\n\ntype PartialParameters = Partial<{\n createdAt: string;\n updatedAt: string;\n accessibleByFileId: string | null;\n accessibleByFileVersionId: string | null;\n}>;\n\nexport const createDirectoryResource = (\n parameters: Omit<DirectoryResource, \"type\" | keyof PartialParameters> &\n Partial<PartialParameters>\n): DirectoryResource => {\n return {\n ...parameters,\n accessibleByFileId: parameters.accessibleByFileId ?? null,\n accessibleByFileVersionId: parameters.accessibleByFileVersionId ?? null,\n createdAt: parameters.createdAt ?? new Date().toISOString(),\n updatedAt: parameters.updatedAt ?? new Date().toISOString(),\n type: \"directory\",\n };\n};\n\nexport const createAssetResource = (\n parameters: Omit<AssetResourceCreate, \"type\" | keyof PartialParameters> &\n PartialParameters\n): AssetResourceCreate => {\n return {\n ...parameters,\n accessibleByFileId: parameters.accessibleByFileId ?? null,\n accessibleByFileVersionId: parameters.accessibleByFileVersionId ?? null,\n createdAt: parameters.createdAt ?? new Date().toISOString(),\n updatedAt: parameters.updatedAt ?? new Date().toISOString(),\n type: \"asset\",\n };\n};\n\nexport const createFileResource = (\n parameters: Omit<FileResource, \"type\" | keyof PartialParameters> &\n PartialParameters\n): FileResource => {\n return {\n ...parameters,\n accessibleByFileId: parameters.accessibleByFileId ?? null,\n accessibleByFileVersionId: parameters.accessibleByFileVersionId ?? null,\n createdAt: parameters.createdAt ?? new Date().toISOString(),\n updatedAt: parameters.updatedAt ?? new Date().toISOString(),\n type: \"file\",\n };\n};\n\nexport const createNestedResource = (\n parameters: Omit<NestedResource, \"type\" | keyof PartialParameters> &\n Partial<PartialParameters>\n): NestedResource => {\n return {\n ...parameters,\n accessibleByFileId: parameters.accessibleByFileId ?? null,\n accessibleByFileVersionId: parameters.accessibleByFileVersionId ?? null,\n createdAt: parameters.createdAt ?? new Date().toISOString(),\n updatedAt: parameters.updatedAt ?? new Date().toISOString(),\n type: \"resource\",\n };\n};\n\nexport const createResource = (parameters: Resource) => {\n return {\n ...parameters,\n };\n};\n\nexport const rootResourcePath = \".\";\nexport const rootResourceName = \"All Files\";\nexport const PLACEHOLDER_ITEM_NAME = \"placeholder\";\n\nexport const rootResource: Resource = {\n id: \"root\",\n type: \"directory\",\n path: \".\",\n createdAt: \"\",\n updatedAt: \"\",\n accessibleByFileId: \"\",\n accessibleByFileVersionId: \"\",\n stableId: \"root\",\n};\n\nexport type ResourceTree = ReturnType<typeof defineTree<Resource>> & {\n idToPathMap: Map<string, string>;\n parentToChildrenMap: Map<string, Resource[]>;\n resourcesWithRoot: Resource[];\n getParentIdForId: (id: string) => string | undefined;\n getNameForId: (id: string) => string;\n};\n\nexport const createResourceTree = (resourceMap: ResourceMap): ResourceTree => {\n const sortedResourceMap = Object.fromEntries(\n Object.entries(resourceMap).sort((a, b) => a[0].localeCompare(b[0]))\n );\n const parentToChildrenMap = new Map<string, Resource[]>();\n const idToPathMap = new Map<string, string>();\n idToPathMap.set(rootResource.id, rootResource.path);\n\n for (const [itemPath, item] of Object.entries(sortedResourceMap)) {\n const parentPath = path.dirname(itemPath);\n const children = parentToChildrenMap.get(parentPath) ?? [];\n children.push(item);\n parentToChildrenMap.set(parentPath, children);\n idToPathMap.set(item.id, itemPath);\n }\n\n const tree = defineTree<Resource>({\n getChildren: (item) => {\n const itemPath =\n item === rootResource ? rootResource.path : idToPathMap.get(item.id);\n if (!itemPath) return [];\n return parentToChildrenMap.get(itemPath) ?? [];\n },\n onDetectCycle: \"skip\",\n getIdentifier: (item) => item.id,\n });\n\n const result = tree.withOptions({\n getLabel: (item) => idToPathMap.get(item.id) ?? \"\",\n });\n\n const resourcesWithRoot = [...Object.values(sortedResourceMap), rootResource];\n const getNameForId = (id: string) =>\n id === rootResource.id\n ? rootResourceName\n : path.basename(idToPathMap.get(id) ?? \"\");\n const getParentIdForId = (id: string) => {\n const itemPath = idToPathMap.get(id);\n if (!itemPath) return;\n const parentPath = path.dirname(itemPath);\n return idToPathMap.get(parentPath);\n };\n\n return {\n ...result,\n idToPathMap,\n parentToChildrenMap,\n resourcesWithRoot,\n getParentIdForId,\n getNameForId,\n };\n};\n","import { FormatRegistry } from \"@sinclair/typebox/type\";\n\nexport * from \"./activityEventSchema\";\nexport * from \"./asset\";\nexport * from \"./encode\";\nexport * from \"./filesSchema\";\nexport * from \"./gitHubSchema\";\nexport * from \"./input\";\nexport * from \"./jsonSchema\";\nexport * from \"./nullable\";\nexport * from \"./parseType\";\nexport * from \"./resourceSchema\";\nexport * from \"./resourceTree\";\nexport * from \"./SchemaTree\";\n\nfunction validateUUID(value: string) {\n return /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(\n value\n );\n}\n\n// Register color format\nFormatRegistry.Set(\"color\", () => true);\nFormatRegistry.Set(\"uuid\", validateUUID);\n","\"use client\";\n\nimport { MenuItem } from \"@noya-app/noya-designsystem\";\nimport {\n CreateResourceParametersWithoutAccessibleByFileId,\n DeleteResourceParameters,\n diffResourceMaps,\n Input,\n MediaItem,\n ModifiedResource,\n OutputTransform,\n Resource,\n ResourceCreate,\n ResourceCreateMap,\n ResourceMap,\n} from \"@noya-app/noya-schemas\";\nimport {\n GetAtPath,\n Observable,\n ObservableOptions,\n PathKey,\n} from \"@noya-app/observable\";\nimport { useJsonMemo, useStableCallback } from \"@noya-app/react-utils\";\nimport {\n ActivityEventsManager,\n AssetTranscriptionResult,\n CreateParams,\n ExtractRequestBody,\n MultiplayerPatchMetadata,\n MultiplayerStateManager,\n NoyaManager,\n PublishCallback,\n ResourceManager,\n SafeEval,\n SharedConnectionDataManager,\n StateManagerOptions,\n Static,\n StreamFilter,\n TranscriptionManager,\n TSchema,\n} from \"@noya-app/state-manager\";\nimport React, {\n createContext,\n Dispatch,\n SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport {\n AppTheme,\n AppViewType,\n useNoyaStateInternal,\n UseNoyaStateOptions,\n} from \"./noyaApp\";\nimport { getNoyaManagerSingleton, getNoyaSingletonBindings } from \"./singleton\";\nimport { useObservable } from \"./useObservable\";\n\nexport function resourceToCreateParameters(\n resource: ResourceCreate\n): CreateResourceParametersWithoutAccessibleByFileId {\n switch (resource.type) {\n case \"directory\":\n return {\n path: resource.path,\n type: \"directory\",\n };\n case \"asset\":\n return {\n path: resource.path,\n type: \"asset\",\n assetId: resource.assetId,\n asset: resource.asset,\n };\n case \"file\":\n return {\n path: resource.path,\n type: \"file\",\n fileId: resource.fileId,\n };\n case \"resource\":\n return {\n path: resource.path,\n type: \"resource\",\n fileId: resource.fileId,\n resourceId: resource.resourceId,\n };\n default:\n throw new Error(`Unknown resource type: ${(resource as any).type}`);\n }\n}\n\ntype ResourcePatchRequestBody = ExtractRequestBody<\"PATCH /api/resources\">;\n\ntype BuildResourcePatchPayloadParameters = {\n addedResources: ResourceCreate[];\n modifiedResources: ModifiedResource[];\n removedResources: Resource[];\n};\n\nexport function buildResourcePatchPayload({\n addedResources,\n modifiedResources,\n removedResources,\n}: BuildResourcePatchPayloadParameters): ResourcePatchRequestBody {\n const createEntries = addedResources.map(resourceToCreateParameters);\n\n const dedupedCreateEntries = Array.from(\n new Map(createEntries.map((entry) => [entry.path, entry])).values()\n );\n\n const updateEntries =\n modifiedResources.map((resource) => {\n const update: NonNullable<ResourcePatchRequestBody[\"update\"]>[number] = {\n id: resource.id,\n ...(resource.path !== undefined ? { path: resource.path } : {}),\n ...(resource.assetId !== undefined\n ? { assetId: resource.assetId }\n : {}),\n ...(resource.asset ? { asset: resource.asset } : {}),\n };\n\n return update;\n }) ?? [];\n\n const deleteEntries: DeleteResourceParameters[] = removedResources.map(\n (resource) => ({ id: resource.id })\n );\n\n const patch: ResourcePatchRequestBody = {};\n\n if (dedupedCreateEntries.length) {\n patch.create = dedupedCreateEntries;\n }\n if (updateEntries.length) {\n patch.update = updateEntries;\n }\n if (deleteEntries.length) {\n patch.delete = deleteEntries;\n }\n\n return patch;\n}\n\nexport interface NoyaStateProviderProps<\n S,\n M extends object,\n E extends object,\n MenuT extends string,\n I extends Record<string, any> = Record<string, unknown>,\n> extends Omit<\n UseNoyaStateOptions<S, M, E, MenuT, I>,\n \"schema\" | \"mergeHistoryEntries\"\n > {\n children: React.ReactNode;\n initialState?: S;\n fallback?: React.ReactNode;\n}\n\nexport type AnyNoyaStateContextValue = {\n noyaManager: NoyaManager<any, any, any, any, any>;\n theme: AppTheme;\n viewType: AppViewType;\n};\n\nexport const AnyNoyaStateContext = createContext<\n AnyNoyaStateContextValue | undefined\n>(undefined);\n\nexport function useAnyNoyaStateContext() {\n const value = useContext(AnyNoyaStateContext);\n\n if (!value) {\n const bindings = getNoyaSingletonBindings();\n\n if (bindings) {\n return {\n noyaManager: getNoyaManagerSingleton(),\n theme: bindings.theme,\n viewType: bindings.viewType,\n } as AnyNoyaStateContextValue;\n }\n\n throw new Error(\n \"useNoyaStateContext must be used within a NoyaStateProvider\"\n );\n }\n\n return value;\n}\n\nexport function useAnyNoyaManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager as NoyaManager<any, any, any, any, any>;\n}\n\nexport function useColorScheme() {\n const { theme } = useAnyNoyaStateContext();\n return theme;\n}\n\nexport function useViewType() {\n const { viewType } = useAnyNoyaStateContext();\n return viewType;\n}\n\nexport function useAssets() {\n const { noyaManager } = useAnyNoyaStateContext();\n return useObservable(noyaManager.assetManager.assets$);\n}\n\nexport function useAsset(id: string | undefined) {\n const { noyaManager } = useAnyNoyaStateContext();\n const observable = useMemo(\n () =>\n noyaManager.assetManager.assets$.map(\n (assets) =>\n assets.find((a) => a.stableId === id) ??\n assets.find((a) => a.id === id)\n ),\n [noyaManager, id]\n );\n return useObservable(observable);\n}\n\nexport function useAssetManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n const isInitialized = useObservable(noyaManager.assetManager.isInitialized$);\n return useMemo(\n () => ({\n create: noyaManager.assetManager.create,\n delete: noyaManager.assetManager.delete,\n isInitialized,\n }),\n [noyaManager, isInitialized]\n );\n}\n\nexport function useAIManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.aiManager;\n}\n\nexport function useSecretManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.secretManager;\n}\n\nexport function useSecrets() {\n const { noyaManager } = useAnyNoyaStateContext();\n return useObservable(noyaManager.secretManager.secrets$);\n}\n\nexport function useSecret(name: string) {\n const { noyaManager } = useAnyNoyaStateContext();\n\n return useObservable(\n noyaManager.secretManager.secrets$,\n useCallback((secrets) => secrets.find((s) => s.name === name), [name])\n );\n}\n\nexport function useInputs() {\n const { noyaManager } = useAnyNoyaStateContext();\n return useObservable(noyaManager.ioManager.inputs$);\n}\n\nexport function useOutputTransforms() {\n const { noyaManager } = useAnyNoyaStateContext();\n return useObservable(noyaManager.ioManager.outputTransforms$);\n}\n\nexport function useIOManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.ioManager;\n}\n\nexport function usePublish(callback: PublishCallback) {\n const { noyaManager } = useAnyNoyaStateContext();\n const stableCallback = useStableCallback(callback);\n\n useEffect(() => {\n noyaManager.publishingManager.setPublishingEnabled(true);\n noyaManager.publishingManager.getFilesToPublish = stableCallback;\n\n return () => {\n noyaManager.publishingManager.setPublishingEnabled(false);\n noyaManager.publishingManager.getFilesToPublish = undefined;\n };\n }, [noyaManager, stableCallback]);\n}\n\nexport function useIsInitialized() {\n const { noyaManager, viewType } = useAnyNoyaStateContext();\n\n const isInitializedObservable = useMemo(\n () =>\n Observable.combine(\n [\n ...(viewType === \"preview\"\n ? []\n : [noyaManager.multiplayerStateManager.isInitialized$]),\n noyaManager.secretManager.isInitialized$,\n noyaManager.assetManager.isInitialized$,\n ],\n (values) => values.every((v) => v)\n ),\n [noyaManager, viewType]\n );\n\n return useObservable(isInitializedObservable);\n}\n\nexport function usePipelineManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.pipelineManager;\n}\n\nexport function useUserManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.userManager;\n}\n\nexport function useConnectedUsers() {\n const userManager = useUserManager();\n return useObservable(userManager?.connectedUsers$);\n}\n\nexport function useConnectedUser(userId?: string | null) {\n const userManager = useUserManager();\n return useObservable(\n userManager?.connectedUsers$,\n useCallback(\n (users) => {\n return users.find((user) => {\n const prefix = user.connectionId.slice(0, 8);\n return userId?.includes(prefix);\n });\n },\n [userId]\n )\n );\n}\n\nexport function useAnySharedConnectionData() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.sharedConnectionDataManager;\n}\n\nexport function useEnqueueInput<\n I extends Record<string, any> = Record<string, unknown>\n>() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.enqueueInput as NoyaManager<\n any,\n any,\n any,\n any,\n I\n >[\"enqueueInput\"];\n}\n\nexport function useNoyaUser() {\n const userManager = useUserManager();\n return useObservable(userManager?.currentUser$);\n}\n\nexport function useNoyaId() {\n const userManager = useUserManager();\n return useObservable(userManager?.currentId$);\n}\n\nexport function useNoyaUserId() {\n const userManager = useUserManager();\n return useObservable(userManager?.currentUserId$);\n}\n\nexport function useNoyaConnectionId() {\n const userManager = useUserManager();\n return useObservable(userManager?.currentConnectionId$);\n}\n\nexport function useNoyaClientId() {\n const userManager = useUserManager();\n return useObservable(userManager?.currentClientId$);\n}\n\nexport function useIsProcessing() {\n const { noyaManager } = useAnyNoyaStateContext();\n return useObservable(noyaManager.isProcessing$);\n}\n\nexport function useFileName() {\n const { noyaManager } = useAnyNoyaStateContext();\n return useObservable(noyaManager.filePropertyManager.optimisticValue$);\n}\n\nexport function useFilePropertyManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.filePropertyManager;\n}\n\nexport function useSetFileNameState() {\n const fileName = useFileName();\n const filePropertyManager = useFilePropertyManager();\n return [fileName, filePropertyManager.updateName] as const;\n}\n\nexport function useResourceManager(): ResourceManager {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.resourceManager;\n}\n\nexport function useNoyaTranscriptionManager(): TranscriptionManager {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.transcriptionManager;\n}\n\ntype UseNoyaAssetTranscriptionOptions = {\n endpoint?: string;\n apiKey?: string;\n};\n\n/**\n * Returns a text transcription for the given assetId.\n *\n * - This API is available when running your app on noya.io, not when running it locally.\n * - An asset must first be uploaded via the `useAssetManager().create()` method before\n * it can be transcribed via this API.\n * - The asset must be a valid audio or video file.\n */\nexport function useNoyaAssetTranscription(\n assetId: string,\n options?: UseNoyaAssetTranscriptionOptions\n): AssetTranscriptionResult;\nexport function useNoyaAssetTranscription(\n assetId?: string,\n options?: UseNoyaAssetTranscriptionOptions\n): AssetTranscriptionResult | undefined;\nexport function useNoyaAssetTranscription(\n assetId?: string,\n options?: UseNoyaAssetTranscriptionOptions\n): AssetTranscriptionResult | undefined {\n const transcriptionManager = useNoyaTranscriptionManager();\n\n const observable = useMemo(() => {\n if (!assetId) return undefined;\n\n return transcriptionManager.getAssetTranscription$(assetId, {\n endpoint: options?.endpoint,\n apiKey: options?.apiKey,\n });\n }, [transcriptionManager, assetId, options?.endpoint, options?.apiKey]);\n\n return useObservable(observable);\n}\n\n// export function useResources(): Resource[] {\n// const { noyaManager } = useAnyNoyaStateContext();\n// const resources = useObservable(noyaManager.resourceManager.resources$);\n// return resources;\n// }\n\nexport function resourceToMediaItem(resource: Resource): MediaItem {\n switch (resource.type) {\n case \"asset\":\n return { kind: \"asset\", id: resource.id, assetId: resource.assetId };\n case \"file\":\n return { kind: \"noyaFile\", id: resource.id, fileId: resource.fileId };\n default:\n return { kind: \"folder\", id: resource.id };\n }\n}\n\nexport function useResources({\n shouldDeleteAssets = true,\n}: {\n shouldDeleteAssets?: boolean;\n} = {}): [ResourceMap, Dispatch<SetStateAction<ResourceCreateMap>>] {\n const resourceManager = useResourceManager();\n const assetManager = useAssetManager();\n\n const resourceMap = useObservable(\n resourceManager.optimisticResources$,\n useCallback((resources) => {\n return Object.fromEntries(\n resources.map((resource) => [resource.path, resource])\n );\n }, [])\n );\n\n const setResourceMap = useCallback(\n async (action: SetStateAction<ResourceCreateMap>) => {\n const newResourceMap =\n action instanceof Function ? action(resourceMap) : action;\n\n const { addedResources, removedResources, modifiedResources } =\n diffResourceMaps(resourceMap, newResourceMap, \"id\");\n\n const patchPayload = buildResourcePatchPayload({\n addedResources,\n modifiedResources,\n removedResources,\n });\n\n const hasPatchOperations =\n (patchPayload.create?.length ?? 0) > 0 ||\n (patchPayload.update?.length ?? 0) > 0 ||\n (patchPayload.delete?.length ?? 0) > 0;\n\n if (hasPatchOperations) {\n await resourceManager.patchResources(patchPayload);\n }\n\n if (shouldDeleteAssets) {\n for (const resource of removedResources) {\n if (resource.type === \"asset\") {\n await assetManager.delete(resource.assetId);\n }\n }\n }\n },\n [resourceMap, resourceManager, shouldDeleteAssets, assetManager]\n );\n\n return [resourceMap, setResourceMap];\n}\n\nconst emptyArray: unknown[] = [];\n\nexport function useActivityEvents(streamFilter: StreamFilter) {\n const { noyaManager } = useAnyNoyaStateContext();\n return useActivityEventsForManager(\n streamFilter,\n noyaManager.activityEventsManager\n );\n}\n\nexport function useActivityEventsForManager(\n streamFilter: StreamFilter | undefined,\n activityEventsManager: ActivityEventsManager\n) {\n const [streamId, setStreamId] = useState<string | undefined>(undefined);\n const stableStreamFilter = useJsonMemo(streamFilter);\n\n useEffect(() => {\n if (!stableStreamFilter) return;\n\n const streamId = activityEventsManager.subscribe(stableStreamFilter);\n\n setStreamId(streamId);\n\n return () => {\n setStreamId(undefined);\n\n activityEventsManager.unsubscribe(streamId);\n };\n }, [activityEventsManager, stableStreamFilter]);\n\n const observable = streamId\n ? activityEventsManager.getStream(streamId)\n : undefined;\n\n return useObservable(observable) ?? emptyArray;\n}\n\nexport const FallbackUntilInitialized = ({\n children,\n fallback,\n}: {\n children: React.ReactNode;\n fallback?: React.ReactNode;\n}) => {\n const isInitialized = useIsInitialized();\n\n return isInitialized ? children : fallback ?? null;\n};\n\nexport function createNoyaContext<\n Schema extends TSchema,\n M extends object = object,\n E extends object = object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n>({\n schema,\n mergeHistoryEntries,\n outputTransforms,\n inputs,\n safeEval,\n}: {\n schema: Schema;\n mergeHistoryEntries?: StateManagerOptions<\n Static<Schema>,\n M & Pick<MultiplayerPatchMetadata, \"name\" | \"timestamp\">\n >[\"mergeHistoryEntries\"];\n safeEval?: SafeEval;\n outputTransforms?: CreateParams<OutputTransform>[];\n inputs?: CreateParams<Input>[];\n}) {\n type S = Static<Schema>;\n type PartialM = Partial<\n M & Pick<MultiplayerPatchMetadata, \"name\" | \"timestamp\">\n >;\n\n const NoyaStateContext = AnyNoyaStateContext as React.Context<\n NoyaManager<S, M, E, MenuT, I> | undefined\n >;\n\n function NoyaContextProvider({\n children,\n contextValue,\n }: {\n children: React.ReactNode;\n contextValue: AnyNoyaStateContextValue;\n }) {\n return (\n <AnyNoyaStateContext.Provider value={contextValue}>\n {children}\n </AnyNoyaStateContext.Provider>\n );\n }\n\n function NoyaStateProvider({\n children,\n initialState,\n ...options\n }: NoyaStateProviderProps<S, M, E, MenuT, I>) {\n const [, , { noyaManager, theme, viewType }] = useNoyaStateInternal<\n S,\n M,\n E,\n MenuT,\n I\n >(initialState, {\n schema,\n mergeHistoryEntries,\n outputTransforms,\n inputs,\n safeEval,\n ...(options as any),\n });\n\n const contextValue = useMemo(\n () => ({\n noyaManager,\n theme,\n viewType,\n }),\n [noyaManager, theme, viewType]\n );\n\n return (\n <NoyaContextProvider contextValue={contextValue}>\n {options.fallback !== undefined ? (\n <FallbackUntilInitialized fallback={options.fallback}>\n {children}\n </FallbackUntilInitialized>\n ) : (\n children\n )}\n </NoyaContextProvider>\n );\n }\n\n function useValue(): S;\n function useValue<A>(\n selector: (value: S) => A,\n options?: Pick<ObservableOptions, \"isEqual\">\n ): A;\n function useValue<P extends PathKey[] | string>(path: P): GetAtPath<S, P>;\n function useValue(\n path?: PathKey[] | string | ((value: S) => any),\n options?: Pick<ObservableOptions, \"isEqual\">\n ) {\n const { noyaManager } = useAnyNoyaStateContext();\n\n let actualPath: PathKey[] | string =\n typeof path === \"function\" || !path ? \"\" : path;\n\n const mappedObservable = useMemo(() => {\n if (typeof path === \"function\") {\n return noyaManager.multiplayerStateManager.optimisticState$.map(path, {\n isEqual: options?.isEqual,\n });\n }\n return noyaManager.multiplayerStateManager.optimisticState$;\n }, [noyaManager, path, options?.isEqual]);\n\n const value = useObservable(mappedObservable, actualPath);\n\n return value;\n }\n\n function useSetValue(): (\n ...args:\n | [metadata: PartialM, value: SetStateAction<S>]\n | [value: SetStateAction<S>]\n ) => void;\n function useSetValue<P extends PathKey[] | string>(\n path: P\n ): (\n ...args:\n | [metadata: PartialM, value: SetStateAction<GetAtPath<S, P>>]\n | [value: SetStateAction<GetAtPath<S, P>>]\n ) => void;\n function useSetValue<P extends PathKey[] | string>(path?: P) {\n const { noyaManager } = useAnyNoyaStateContext();\n\n const setValue = useCallback(\n (\n ...args:\n | [metadata: PartialM, value: SetStateAction<GetAtPath<S, P>>]\n | [value: SetStateAction<GetAtPath<S, P>>]\n ): void => {\n const [metadata, value] = args.length === 2 ? args : [{}, args[0]];\n\n noyaManager.multiplayerStateManager.setStateAtPath(\n metadata,\n (path ?? \"\") as P,\n value as never\n );\n },\n [noyaManager, path]\n );\n\n return setValue;\n }\n\n function useValueState(): [\n S,\n (\n ...args:\n | [metadata: PartialM, value: SetStateAction<S>]\n | [value: SetStateAction<S>]\n ) => void,\n ];\n function useValueState<A>(\n selector: (value: S) => A,\n options?: ObservableOptions\n ): [\n A,\n (\n ...args:\n | [metadata: PartialM, value: SetStateAction<S>]\n | [value: SetStateAction<S>]\n ) => void,\n ];\n function useValueState<P extends PathKey[] | string>(\n path?: P\n ): [\n GetAtPath<S, P>,\n (\n ...args:\n | [metadata: PartialM, value: SetStateAction<GetAtPath<S, P>>]\n | [value: SetStateAction<GetAtPath<S, P>>]\n ) => void,\n ];\n function useValueState<P extends PathKey[] | string>(\n ...args: [P?] | [selector: (value: S) => any, options?: ObservableOptions]\n ) {\n const [selector, options, path] =\n args.length >= 1 && typeof args[0] === \"function\"\n ? [args[0], args[1], undefined]\n : [undefined, undefined, args[0] as P | undefined];\n\n const value = useValue((selector ?? path ?? \"\") as any, options);\n const setValue = useSetValue(path ?? \"\");\n return [value, setValue];\n }\n\n function useStateManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n\n return noyaManager.multiplayerStateManager as MultiplayerStateManager<\n S,\n PartialM\n >;\n }\n\n function useSharedConnectionDataManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.sharedConnectionDataManager as SharedConnectionDataManager<E>;\n }\n\n function useNoyaManager() {\n return useAnyNoyaStateContext().noyaManager as NoyaManager<\n S,\n PartialM,\n E,\n MenuT,\n I\n >;\n }\n\n function useLeftMenuItems() {\n const { menuManager } = useNoyaManager();\n\n return useObservable(menuManager.leftMenuItems$);\n }\n\n function useSetLeftMenuItems(leftMenuItems?: MenuItem<MenuT>[]) {\n const { menuManager } = useNoyaManager();\n\n useEffect(() => {\n if (leftMenuItems) {\n menuManager.setLeftMenuItems(leftMenuItems);\n }\n }, [menuManager, leftMenuItems]);\n }\n\n function useRightMenuItems() {\n const { menuManager } = useNoyaManager();\n\n return useObservable(menuManager.rightMenuItems$);\n }\n\n function useSetRightMenuItems(rightMenuItems?: MenuItem<MenuT>[]) {\n const { menuManager } = useNoyaManager();\n\n useEffect(() => {\n if (rightMenuItems) {\n menuManager.setRightMenuItems(rightMenuItems);\n }\n }, [menuManager, rightMenuItems]);\n }\n\n function useHandleMenuItem(callback: (type: MenuT) => void) {\n const { menuManager } = useNoyaManager();\n\n useEffect(() => {\n return menuManager.addListener(callback);\n }, [menuManager, callback]);\n }\n\n function useOnSelectMenuItemCallback(): (type: MenuT) => void {\n const { menuManager } = useNoyaManager();\n\n return useCallback((type: MenuT) => menuManager.emit(type), [menuManager]);\n }\n\n function useMenu(options: {\n leftMenuItems?: MenuItem<MenuT>[];\n rightMenuItems?: MenuItem<MenuT>[];\n onSelectMenuItem?: (type: MenuT) => void;\n }) {\n const { leftMenuItems, rightMenuItems, onSelectMenuItem } = options;\n\n useSetLeftMenuItems(leftMenuItems);\n useSetRightMenuItems(rightMenuItems);\n\n const noop = useCallback(() => {}, []);\n useHandleMenuItem(onSelectMenuItem ?? noop);\n }\n\n return {\n Context: NoyaStateContext,\n Provider: NoyaStateProvider,\n NoyaContextProvider,\n useValue,\n useSetValue,\n useValueState,\n useStateManager,\n useSharedConnectionDataManager,\n useLeftMenuItems,\n useSetLeftMenuItems,\n useRightMenuItems,\n useSetRightMenuItems,\n useHandleMenuItem,\n useOnSelectMenuItemCallback,\n useNoyaManager,\n useMenu,\n };\n}\n","\"use client\";\n\nimport { findAllDefs } from \"@noya-app/noya-schemas\";\nimport type { LocalStorageSyncOptions } from \"@noya-app/state-manager\";\nimport {\n AccessType,\n createOrCastValue,\n isEmbeddedApp,\n localStorageSync,\n NoyaManager,\n parentFrameSync,\n PolicyAuthContext,\n setClientId,\n setClientImage,\n setClientName,\n Static,\n stubSync,\n SyncAdapter,\n TSchema,\n TypeGuard,\n webSocketSync,\n} from \"@noya-app/state-manager\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useBindNoyaManager, UseMultiplayerStateOptions } from \"./hooks\";\nimport { StateInspectorOptions } from \"./inspector/StateInspector\";\n\nexport type AppViewType = \"editable\" | \"readOnly\" | \"preview\";\n\nexport type AppTheme = \"light\" | \"dark\";\n\nexport type AppData<State> = {\n multiplayerUrl?: string;\n theme: AppTheme;\n viewType: AppViewType;\n initialState: State;\n inspector: boolean | StateInspectorOptions;\n userId?: string;\n isDemo: boolean;\n access?: AccessType;\n clientId?: string;\n clientName?: string;\n clientImage?: string;\n};\n\nexport function createDefaultAppData<State>(\n initialState: State\n): AppData<State> {\n return {\n theme: \"light\",\n viewType: \"editable\",\n initialState,\n inspector: false,\n isDemo: false,\n access: undefined,\n };\n}\n\nexport type GetAppDataOptions = {\n window?: { location: { hash: string } };\n overrideExistingState?: boolean;\n};\n\nexport function enforceSchema<State>(\n initialState: State,\n schema?: TSchema\n): State {\n return schema\n ? (createOrCastValue({\n schema,\n value: initialState,\n defs: findAllDefs(schema),\n }) as State)\n : initialState;\n}\n\nexport function parseAppDataParameter(\n options?: GetAppDataOptions\n): AppData<unknown> | null {\n const window = options?.window ?? globalThis;\n const location = window.location;\n if (!location) return null;\n const urlHash = (location.hash || \"\").replace(/^#/, \"\");\n const params = new URLSearchParams(urlHash);\n const data = params.get(\"data\");\n if (!data) return null;\n try {\n return JSON.parse(data);\n } catch (e) {\n return null;\n }\n}\n\nfunction applyClientIdentityFromAppData(appData: {\n clientId?: string;\n clientName?: string;\n clientImage?: string;\n}) {\n if (appData.clientId !== undefined) {\n setClientId(appData.clientId);\n }\n\n if (appData.clientName !== undefined) {\n setClientName(appData.clientName);\n }\n\n if (appData.clientImage !== undefined) {\n setClientImage(appData.clientImage);\n }\n}\n\nexport function getAppData<State>(\n initialState: State | (() => State),\n schema?: TSchema,\n options?: GetAppDataOptions\n): AppData<State> {\n const resolvedInitialState =\n initialState instanceof Function ? initialState() : initialState;\n\n let appData =\n parseAppDataParameter(options) ??\n createDefaultAppData(resolvedInitialState);\n\n if (options?.overrideExistingState || appData.initialState === null) {\n appData.initialState = resolvedInitialState;\n }\n\n appData.initialState = enforceSchema(appData.initialState, schema) as State;\n appData.isDemo = appData.isDemo ?? false;\n const fallbackAccess: AccessType =\n appData.viewType === \"editable\" ? \"write\" : \"read\";\n appData.access = appData.access ?? fallbackAccess;\n\n // If the parent frame provided a client identity (embedded mode), make sure\n // this frame adopts it so the clientId/name/image observables stay in sync.\n applyClientIdentityFromAppData(appData);\n\n return appData as AppData<State>;\n}\n\nexport function getSyncAdapter<\n S,\n M extends object = object,\n E extends object = object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n>(params?: {\n multiplayerUrl?: string;\n offlineStorageKey?: string;\n debug?: boolean;\n policyAuthContext?: PolicyAuthContext;\n serverScripts?: LocalStorageSyncOptions[\"serverScripts\"];\n}): SyncAdapter<S, M, E, MenuT, I> {\n const {\n multiplayerUrl,\n offlineStorageKey,\n debug,\n policyAuthContext,\n serverScripts,\n } = params ?? {};\n\n return isEmbeddedApp()\n ? parentFrameSync<S, M, E, MenuT, I>({ debug, policyAuthContext })\n : multiplayerUrl\n ? webSocketSync<S, M, E, MenuT, I>({ url: multiplayerUrl, debug })\n : offlineStorageKey\n ? localStorageSync<S, M, E, MenuT, I>({\n key: offlineStorageKey,\n ...(serverScripts ? { serverScripts } : {}),\n })\n : stubSync<S, M, E, MenuT, I>();\n}\n\nexport type UseNoyaStateOptions<\n S,\n M extends object = object,\n E extends object = object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n> = UseMultiplayerStateOptions<S, M, E, MenuT, I> & {\n offlineStorageKey?: string;\n};\n\nexport type UseNoyaStateResult<\n S,\n M extends object = object,\n E extends object = object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n> = [\n ReturnType<typeof useBindNoyaManager<S, M, E, MenuT, I>>[0],\n ReturnType<typeof useBindNoyaManager<S, M, E, MenuT, I>>[1],\n ReturnType<typeof useBindNoyaManager<S, M, E, MenuT, I>>[2] & {\n theme: AppTheme;\n viewType: AppViewType;\n isDemo: boolean;\n },\n];\n\n/**\n * Sync data locally or to a multiplayer server.\n *\n * There are 3 ways to use this hook:\n *\n * 1. Pass an initial state: `useNoyaState(initialState)`\n * 2. Pass an initial state and a schema: `useNoyaState(initialState, { schema })`\n * 3. Pass only a schema, and a conforming initial state is created automatically: `useNoyaState({ schema })`\n */\nexport function useNoyaStateInternal<\n S,\n M extends object = object,\n E extends object = object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n O extends UseNoyaStateOptions<S, M, E, MenuT, I> = UseNoyaStateOptions<\n S,\n M,\n E,\n MenuT,\n I\n >,\n>(\n ...args:\n | [\n initialState: O[\"schema\"] extends TSchema\n ? Static<O[\"schema\"]> | (() => Static<O[\"schema\"]>)\n : S | (() => S),\n options?: O,\n ]\n | [options: O & { schema: TSchema }]\n): UseNoyaStateResult<\n O[\"schema\"] extends TSchema ? Static<O[\"schema\"]> : S,\n M,\n E,\n MenuT,\n I\n> {\n const [initialState, options] =\n typeof args[0] === \"object\" &&\n args[0] !== null &&\n \"schema\" in args[0] &&\n TypeGuard.IsSchema(args[0].schema)\n ? [null, args[0]]\n : [args[0], args[1]];\n\n // Keep these stable after initial render\n const [\n {\n multiplayerUrl,\n inspector,\n initialState: noyaAppInitialState,\n theme,\n viewType,\n userId,\n isDemo,\n access,\n },\n ] = useState(() => {\n return getAppData(initialState, options?.schema, {\n overrideExistingState: options?.overrideExistingState,\n });\n });\n\n const basePolicyAuthContext = useMemo((): PolicyAuthContext | undefined => {\n if (!access && userId === undefined) return undefined;\n\n const context: PolicyAuthContext = {};\n\n if (access) {\n context.access = access;\n }\n\n if (userId !== undefined) {\n context.id = userId ?? null;\n }\n\n return context;\n }, [access, userId]);\n\n const sync = useMemo((): SyncAdapter<S, M, E, MenuT, I> => {\n return getSyncAdapter<S, M, E, MenuT, I>({\n multiplayerUrl,\n offlineStorageKey: options?.offlineStorageKey,\n debug: options?.debug,\n policyAuthContext: basePolicyAuthContext,\n });\n }, [\n multiplayerUrl,\n options?.offlineStorageKey,\n options?.debug,\n basePolicyAuthContext,\n ]);\n\n const [noyaManager] = useState(\n () => new NoyaManager<S, M, E, MenuT, I>(noyaAppInitialState as S, options)\n );\n\n useEffect(() => {\n if (!userId) return;\n\n noyaManager.sharedConnectionDataManager.setCurrentConnectionId(userId);\n noyaManager.userManager.setCurrentConnectionId(userId);\n noyaManager.userManager.setCurrentUserId(userId);\n }, [noyaManager, userId]);\n\n useEffect(() => {\n if (!basePolicyAuthContext) return;\n\n noyaManager.multiplayerStateManager.setPolicyAuthContext(\n basePolicyAuthContext\n );\n }, [noyaManager, basePolicyAuthContext]);\n\n const result = useBindNoyaManager<S, M, E, MenuT, I>(noyaManager, {\n inspector: options?.inspector ?? inspector,\n sync: options?.sync ?? sync,\n });\n\n const [, , extras] = result;\n\n const mergedExtras = useMemo(() => {\n return { ...extras, theme, viewType, isDemo } as const;\n }, [extras, theme, viewType, isDemo]);\n\n return [result[0], result[1], mergedExtras] as UseNoyaStateResult<\n O[\"schema\"] extends TSchema ? Static<O[\"schema\"]> : S,\n M,\n E,\n MenuT,\n I\n >;\n}\n\n// function typeTest() {\n// const [a, setA] = useNoyaState(7);\n// const [b, setB] = useNoyaState(7, {\n// schema: Type.Number(),\n// });\n// const [c, setC] = useNoyaState({\n// schema: Type.Number(),\n// });\n// }\n","\"use client\";\n\nimport {\n ActionHandler,\n NoyaManager,\n NoyaManagerOptions,\n StateManager,\n StateManagerOptions,\n stubSync,\n SyncAdapter,\n} from \"@noya-app/state-manager\";\nimport {\n createElement,\n SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { ErrorOverlay } from \"./components/ErrorOverlay\";\nimport { StateInspectorOptions } from \"./inspector/StateInspector\";\nimport { useStateInspector } from \"./inspector/useStateInspector\";\nimport { useObservable } from \"./useObservable\";\n\nexport function useManagedState<S, M = void>(\n createInitialState: () => S,\n options?: StateManagerOptions<S, M>\n) {\n const [stateManager] = useState(\n () => new StateManager<S, M>(createInitialState(), options)\n );\n\n const getSnapshot = useCallback((): S => {\n return stateManager.getState();\n }, [stateManager]);\n\n const state = useSyncExternalStore(\n stateManager.addListener,\n getSnapshot,\n getSnapshot\n );\n\n const setState = useCallback(\n (\n ...args: M extends {}\n ? [metadata: M, action: SetStateAction<S>]\n : [action: SetStateAction<S>]\n ) => {\n const [metadata, action] =\n args.length === 1 ? [undefined, args[0]] : args;\n\n if (metadata === undefined) {\n const performActionNoMetadata = stateManager.performAction as (\n handler: ActionHandler<S>\n ) => void;\n\n if (action instanceof Function) {\n performActionNoMetadata({\n run: action,\n undo: () => state,\n });\n } else {\n performActionNoMetadata({\n run: () => action,\n undo: () => state,\n });\n }\n } else {\n const performActionWithMetadata = stateManager.performAction as (\n metadata: M,\n handler: ActionHandler<S>\n ) => void;\n\n if (action instanceof Function) {\n performActionWithMetadata(metadata, {\n run: action,\n undo: () => state,\n });\n } else {\n performActionWithMetadata(metadata, {\n run: () => action,\n undo: () => state,\n });\n }\n }\n },\n [state, stateManager]\n );\n\n return [state, setState, stateManager] as const;\n}\n\nexport function useManagedHistory<S, M = void>(\n stateManager: StateManager<S, M>\n) {\n return useSyncExternalStore(\n stateManager.historyEmittor.addListener,\n stateManager.getHistorySnapshot,\n stateManager.getHistorySnapshot\n );\n}\n\nexport type UseMultiplayerStateOptions<\n S,\n M extends object = object,\n E extends object = object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n> = NoyaManagerOptions<S, M> & {\n sync?: SyncAdapter<S, M, E, MenuT, I>;\n inspector?: boolean | StateInspectorOptions;\n};\n\n// Bind an existing NoyaManager to React and wire up extras, inspector, and sync\nexport function useBindNoyaManager<\n S,\n M extends object = object,\n E extends object = object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n>(\n noyaManager: NoyaManager<S, M, E, MenuT, I>,\n options?: Pick<\n UseMultiplayerStateOptions<S, M, E, MenuT, I>,\n \"inspector\" | \"sync\"\n >\n) {\n const state = useObservable(\n noyaManager.multiplayerStateManager.optimisticState$\n );\n const assets = useObservable(noyaManager.assetManager.assets$);\n\n type ExtrasType = {\n noyaManager: typeof noyaManager;\n taskManager: typeof noyaManager.taskManager;\n connectionEventManager: typeof noyaManager.connectionEventManager;\n userManager: typeof noyaManager.userManager;\n sharedConnectionDataManager: typeof noyaManager.sharedConnectionDataManager;\n multiplayerStateManager: typeof noyaManager.multiplayerStateManager;\n assetManager: typeof noyaManager.assetManager;\n aiManager: typeof noyaManager.aiManager;\n rpcManager: typeof noyaManager.rpcManager;\n pipelineManager: typeof noyaManager.pipelineManager;\n secretManager: typeof noyaManager.secretManager;\n menuItemsManager: typeof noyaManager.menuManager;\n createAsset: typeof noyaManager.assetManager.create;\n deleteAsset: typeof noyaManager.assetManager.delete;\n assets: typeof assets;\n };\n\n const extras = useMemo<ExtrasType>(() => {\n return {\n noyaManager,\n taskManager: noyaManager.taskManager,\n connectionEventManager: noyaManager.connectionEventManager,\n userManager: noyaManager.userManager,\n sharedConnectionDataManager: noyaManager.sharedConnectionDataManager,\n multiplayerStateManager: noyaManager.multiplayerStateManager,\n assetManager: noyaManager.assetManager,\n aiManager: noyaManager.aiManager,\n rpcManager: noyaManager.rpcManager,\n pipelineManager: noyaManager.pipelineManager,\n secretManager: noyaManager.secretManager,\n menuItemsManager: noyaManager.menuManager,\n createAsset: noyaManager.assetManager.create,\n deleteAsset: noyaManager.assetManager.delete,\n assets,\n };\n }, [noyaManager, assets]);\n\n const syncRef = useRef(options?.sync);\n\n useEffect(() => {\n if (syncRef.current) {\n return syncRef.current({ noyaManager });\n }\n }, [noyaManager]);\n\n useErrorOverlay<MenuT>(noyaManager);\n\n useStateInspector<S, M, E, MenuT, I>({\n noyaManager,\n disabled: !options?.inspector,\n advanced: true,\n ...(typeof options?.inspector === \"object\" && options?.inspector),\n });\n\n return [state, noyaManager.multiplayerStateManager.setState, extras] as const;\n}\n\nexport function useMultiplayerState<\n S,\n M extends object = object,\n E extends object = object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n>(\n initialState: S | (() => S),\n options?: UseMultiplayerStateOptions<S, M, E, MenuT, I>\n) {\n const {\n sync = stubSync<\n unknown,\n object,\n object,\n string,\n Record<string, unknown>\n >() as unknown as SyncAdapter<S, M, E, MenuT, I>,\n inspector,\n ...rest\n } = options ?? {};\n\n const [noyaManager] = useState(\n () => new NoyaManager<S, M, E, MenuT, I>(initialState, rest)\n );\n\n return useBindNoyaManager<S, M, E, MenuT, I>(noyaManager, {\n sync,\n inspector,\n });\n}\n\nfunction useErrorOverlay<MenuT extends string = string>(\n noyaManager: NoyaManager<any, any, any, MenuT, any>\n) {\n const unrecoverableError = useObservable(noyaManager.unrecoverableError);\n\n useEffect(() => {\n if (!unrecoverableError) return;\n const el = document.createElement(\"div\");\n el.id = \"noya-multiplayer-react-error-overlay\";\n document.body.appendChild(el);\n const root = createRoot(el);\n root.render(createElement(ErrorOverlay, { error: unrecoverableError }));\n return () => {\n root.unmount();\n el.remove();\n };\n });\n}\n","import { MultiplayerStateManagerError } from \"@noya-app/state-manager\";\nimport * as React from \"react\";\n\nexport const ErrorOverlay = React.memo(function ErrorOverlay({\n error,\n}: {\n error: MultiplayerStateManagerError;\n}) {\n return (\n <div\n style={{\n position: \"fixed\",\n top: \"20px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n maxWidth: \"80%\",\n width: \"fit-content\",\n padding: \"12px 20px\",\n background: \"white\",\n color: \"black\",\n zIndex: 10000,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n borderRadius: \"4px\",\n boxShadow: \"0 4px 6px rgba(0, 0, 0, 0.1)\",\n fontFamily:\n \"'__Inter_6b0edc', '__Inter_Fallback_6b0edc', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif\",\n fontSize: \"14px\",\n fontWeight: 400,\n lineHeight: \"19px\",\n }}\n >\n {error.reason === \"schemaMigration\" ? (\n <>\n <p>\n An updated version of Noya is available. Please reload the page to\n continue.\n </p>\n </>\n ) : (\n <>\n <p>\n An error occurred:{\" \"}\n <code\n style={{\n background: \"rgba(255, 0, 0, 0.1)\",\n color: \"rgba(255, 0, 0, 0.5)\",\n padding: \"2px 4px\",\n borderRadius: \"4px\",\n }}\n >\n {error.reason}\n </code>\n . Please reload the page to continue.\n <br />\n <br />\n If this happens repeatedly, please get in touch and the Noya team\n can help.\n </p>\n </>\n )}\n <div\n style={{\n height: \"1px\",\n background: \"rgba(0, 0, 0, 0.1)\",\n margin: \"12px -20px\",\n }}\n />\n <button\n style={{\n background: \"black\",\n color: \"white\",\n padding: \"8px 16px\",\n borderRadius: \"4px\",\n cursor: \"pointer\",\n fontSize: \"14px\",\n fontWeight: 700,\n lineHeight: \"19px\",\n }}\n onClick={() => {\n window.location.reload();\n }}\n >\n Reload\n </button>\n </div>\n );\n});\n","\"use client\";\n\nimport { NoyaManager } from \"@noya-app/state-manager\";\nimport React, { ComponentProps } from \"react\";\nimport { createRoot } from \"react-dom/client\";\n\nimport { useIsomorphicLayoutEffect } from \"@noya-app/react-utils\";\nimport { Root } from \"react-dom/client\";\nimport { StateInspector } from \"./StateInspector\";\n\nfunction createShadowRootElement() {\n const host = document.createElement(\"div\");\n host.id = \"noya-multiplayer-react-inspector-host\";\n const shadowRoot = host.attachShadow({ mode: \"open\" });\n const container = document.createElement(\"div\");\n shadowRoot.appendChild(container);\n return { host, container };\n}\n\nexport function createStateInspectorRoot() {\n const { host, container } = createShadowRootElement();\n const root = createRoot(container);\n document.body.appendChild(host);\n\n return {\n root,\n unmount: () => {\n document.body.removeChild(host);\n },\n };\n}\n\nexport function useStateInspector<\n S,\n M extends object,\n E extends object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n>({\n noyaManager,\n disabled = false,\n advanced = false,\n colorScheme,\n anchor,\n}: {\n noyaManager: NoyaManager<S, M, E, MenuT, I>;\n disabled?: boolean;\n advanced?: boolean;\n colorScheme?: ComponentProps<typeof StateInspector>[\"colorScheme\"];\n anchor?: ComponentProps<typeof StateInspector>[\"anchor\"];\n}) {\n const [root, setRoot] = React.useState<Root | null>(null);\n\n useIsomorphicLayoutEffect(() => {\n if (disabled) return;\n\n const { root, unmount } = createStateInspectorRoot();\n\n setRoot(root);\n\n return unmount;\n }, [disabled]);\n\n useIsomorphicLayoutEffect(() => {\n if (!root) return;\n\n root.render(\n <StateInspector\n colorScheme={colorScheme}\n anchor={anchor}\n noyaManager={noyaManager}\n advanced={advanced}\n />\n );\n }, [noyaManager, anchor, colorScheme, root, advanced]);\n}\n","// A simple, unoptimized decoder for small images\nfunction decode(base64String: string): Uint8Array {\n const binaryString = atob(base64String);\n const length = binaryString.length;\n const bytes = new Uint8Array(length);\n\n for (let i = 0; i < length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n\n return bytes;\n}\n\nfunction encode(buffer: ArrayLike<number> | ArrayBufferLike): string {\n const bytes = new Uint8Array(buffer);\n\n let binary = \"\";\n const length = bytes.byteLength;\n\n for (let i = 0; i < length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n\n return globalThis.btoa(binary);\n}\n\nexport const Base64 = {\n encode,\n decode,\n};\n","export type Invert<T extends Record<PropertyKey, PropertyKey>> = {\n [K in keyof T as T[K]]: K;\n};\n\nexport function invert<T extends Record<PropertyKey, PropertyKey>>(\n record: T,\n): Invert<T> {\n return Object.fromEntries(\n Object.entries(record).map(([type, extension]) => [extension, type]),\n ) as Invert<typeof record>;\n}\n","import { isEqualArray } from \"./internal/isEqual\";\nimport { invert } from \"./invert\";\n\nconst FILE_TYPE_TO_EXTENSION = {\n \"image/png\": \"png\",\n \"image/jpeg\": \"jpg\",\n \"image/webp\": \"webp\",\n \"image/svg+xml\": \"svg\",\n \"application/pdf\": \"pdf\",\n \"application/zip\": \"zip\",\n \"application/x-7z-compressed\": \"7z\",\n} as const;\n\nconst FILE_EXTENSION_TO_TYPE = invert(FILE_TYPE_TO_EXTENSION);\n\ntype FileTypeMap = typeof FILE_TYPE_TO_EXTENSION;\ntype FileExtensionMap = typeof FILE_EXTENSION_TO_TYPE;\n\nexport type FileType = keyof typeof FILE_TYPE_TO_EXTENSION;\nexport type FileExtension = (typeof FILE_TYPE_TO_EXTENSION)[FileType];\n\nexport function getFileExtensionForType<K extends keyof FileTypeMap>(\n type: K\n): FileTypeMap[K] {\n return FILE_TYPE_TO_EXTENSION[type];\n}\n\nexport function getFileTypeForExtension<K extends keyof FileExtensionMap>(\n type: K\n): FileExtensionMap[K] {\n return FILE_EXTENSION_TO_TYPE[type];\n}\n\nfunction startsWith(arrayBuffer: Uint8Array, prefix: number[], offset = 0) {\n return isEqualArray(\n [...new Uint8Array(arrayBuffer).slice(offset, offset + prefix.length)],\n prefix,\n false\n );\n}\n\nfunction isPNG(bytes: Uint8Array) {\n return startsWith(bytes, [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n}\n\nfunction isJPG(bytes: Uint8Array) {\n return startsWith(bytes, [0xff, 0xd8, 0xff]);\n}\n\nfunction isWEBP(bytes: Uint8Array) {\n return startsWith(bytes, [87, 69, 66, 80], 8);\n}\n\nfunction isPDF(bytes: Uint8Array) {\n return startsWith(bytes, [37, 80, 68, 70]);\n}\n\nfunction isZip(bytes: Uint8Array) {\n return startsWith(bytes, [0x50, 0x4b]);\n}\n\nfunction is7z(bytes: Uint8Array) {\n return startsWith(bytes, [0x37, 0x7a, 0xbc, 0xaf, 0x27, 0x1c]);\n}\n\nexport function detectFileType(\n arrayBuffer: ArrayLike<number> | ArrayBufferLike\n): keyof typeof FILE_TYPE_TO_EXTENSION | undefined {\n let bytes = new Uint8Array(arrayBuffer);\n\n if (isPNG(bytes)) {\n return \"image/png\";\n } else if (isJPG(bytes)) {\n return \"image/jpeg\";\n } else if (isWEBP(bytes)) {\n return \"image/webp\";\n } else if (isPDF(bytes)) {\n return \"application/pdf\";\n } else if (isZip(bytes)) {\n return \"application/zip\";\n } else if (is7z(bytes)) {\n return \"application/x-7z-compressed\";\n }\n}\n","// TODO: Review this. Is it a good approach for Noya?\nexport function memoize<I extends unknown[], O>(\n f: (...values: I) => O\n): (...values: I) => O {\n const intermediateCache = new Map<I[number], string>();\n const cache: Map<string, O> = new Map();\n let intermediateCacheIndex = 0;\n\n return (...values: I): O => {\n let key = \"\";\n\n for (const value of values) {\n // Assign each argument value a unique index\n if (!intermediateCache.has(value)) {\n intermediateCache.set(value, `${intermediateCacheIndex++}`);\n }\n\n // Assemble a cache key from the combined indexes\n key += intermediateCache.get(value)! + \":\";\n }\n\n if (!cache.has(key)) {\n cache.set(key, f(...values));\n }\n\n return cache.get(key)!;\n };\n}\n\nexport function memoizeOne<I extends unknown[], O>(\n f: (...values: I) => O\n): (...values: I) => O {\n let previous: [I, O] | undefined = undefined;\n\n return (...values: I): O => {\n if (\n previous &&\n previous[0].every((value, index) => value === values[index])\n ) {\n return previous[1];\n }\n\n const result = f(...values);\n previous = [values, result];\n return result;\n };\n}\n","// A trie over a stable tokenization of the input value.\n// This ensures deep-equal values walk the same path and hit the same cache leaf.\n\nconst TOKEN_OBJECT = Symbol(\"object\");\nconst TOKEN_ARRAY = Symbol(\"array\");\nconst TOKEN_KEY = Symbol(\"key\");\nconst TOKEN_END = Symbol(\"end\");\nconst TOKEN_PRIMITIVE = Symbol(\"primitive\");\nconst TOKEN_ARGSEP = Symbol(\"argsep\");\n\nclass TrieNode {\n children: Map<unknown, TrieNode> = new Map();\n hasValue = false;\n // Stored result when this node represents a complete tokenization of input\n value: unknown = undefined;\n}\n\nfunction descend(node: TrieNode, token: unknown): TrieNode {\n let next = node.children.get(token);\n if (!next) {\n next = new TrieNode();\n node.children.set(token, next);\n }\n return next;\n}\n\nfunction getLeafNodeForValue(node: TrieNode, value: unknown): TrieNode {\n // Primitives (including null and undefined) are terminal tokens\n if (value === null || typeof value !== \"object\") {\n node = descend(node, TOKEN_PRIMITIVE);\n node = descend(node, value);\n return node;\n }\n\n if (Array.isArray(value)) {\n node = descend(node, TOKEN_ARRAY);\n for (let i = 0; i < value.length; i++) {\n node = getLeafNodeForValue(node, value[i]);\n }\n node = descend(node, TOKEN_END);\n return node;\n }\n\n // Object: iterate keys in a stable order\n node = descend(node, TOKEN_OBJECT);\n const record = value as Record<string, unknown>;\n const keys = Object.keys(record).sort();\n for (const key of keys) {\n node = descend(node, TOKEN_KEY);\n node = descend(node, key);\n node = getLeafNodeForValue(node, record[key]);\n }\n node = descend(node, TOKEN_END);\n return node;\n}\n\nexport function memoizeDeep<I extends unknown[], O>(\n fn: (...args: I) => O\n): (...args: I) => O {\n const root = new TrieNode();\n\n const memoized = (...args: I): O => {\n let node = root;\n for (let i = 0; i < args.length; i++) {\n node = getLeafNodeForValue(node, args[i]);\n // Separate arguments to avoid collisions between different tuple shapes\n node = descend(node, TOKEN_ARGSEP);\n }\n const leaf = node;\n\n if (leaf.hasValue) {\n return leaf.value as O;\n }\n\n const result = fn(...args);\n leaf.value = result;\n leaf.hasValue = true;\n return result as O;\n };\n\n return memoized;\n}\n","import crypto from 'crypto';\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n crypto.randomFillSync(rnds8Pool);\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import { v4 } from \"uuid\";\n\nexport function uuid(): string {\n return v4();\n}\n","/* eslint-disable no-restricted-globals */\n\"use client\";\n\nimport { Input, OutputTransform } from \"@noya-app/noya-schemas\";\nimport { Base64, memoize, uuid } from \"@noya-app/noya-utils\";\nimport { downloadBlob, memoGeneric } from \"@noya-app/react-utils\";\nimport { NoyaAsset, NoyaManager } from \"@noya-app/state-manager\";\nimport React, {\n CSSProperties,\n ComponentPropsWithoutRef,\n useCallback,\n useEffect,\n useLayoutEffect,\n} from \"react\";\nimport { ObjectInspector } from \"react-inspector\";\nimport { useManagedHistory } from \"../hooks\";\nimport { useObservable } from \"../useObservable\";\nimport { ColoredDot } from \"./ColoredDot\";\nimport {\n getStateInspectorBorderColor,\n getStateInspectorTheme,\n} from \"./inspectorTheme\";\nimport { ActivityEventsSection } from \"./sections/ActivityEventsSection\";\nimport { EventsSection } from \"./sections/EventsSection\";\nimport { HistorySection } from \"./sections/HistorySection\";\nimport { ServerScriptLogsSection } from \"./sections/ServerScriptLogsSection\";\nimport { exportAll, importAll } from \"./serialization\";\nimport { StateInspectorButton } from \"./StateInspectorButton\";\nimport {\n StateInspectorDisclosureRowInner,\n StateInspectorDisclosureSection,\n} from \"./StateInspectorDisclosureSection\";\nimport { StateInspectorRow } from \"./StateInspectorRow\";\nimport { StateInspectorTitleLabel } from \"./StateInspectorTitleLabel\";\nimport { StateInspectorToggleButton } from \"./StateInspectorToggleButton\";\nimport { useLocalStorageState } from \"./useLocalStorageState\";\nimport { ellipsis, uploadFile } from \"./utils\";\n\nexport type StateInspectorAnchor =\n | \"left\"\n | \"right\"\n | \"bottom left\"\n | \"bottom right\";\n\nexport type StateInspectorOptions = {\n colorScheme?: \"light\" | \"dark\";\n anchor?: StateInspectorAnchor;\n advanced?: boolean;\n};\n\nexport const StateInspector = memoGeneric(function StateInspector<\n S,\n M extends object,\n E extends object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n>({\n noyaManager,\n colorScheme = \"light\",\n anchor = \"right\",\n unstyled = false,\n advanced = false,\n ...props\n}: {\n noyaManager: NoyaManager<S, M, E, MenuT, I>;\n unstyled?: boolean;\n} & StateInspectorOptions &\n ComponentPropsWithoutRef<\"div\">) {\n const {\n multiplayerStateManager,\n assetManager,\n userManager,\n secretManager,\n sharedConnectionDataManager,\n connectionEventManager,\n taskManager,\n ioManager,\n resourceManager,\n activityEventsManager,\n logManager,\n } = noyaManager;\n\n const [didMount, setDidMount] = React.useState(false);\n const tasks = useObservable(taskManager.tasks$);\n const inputs = useObservable(ioManager.inputs$);\n const outputTransforms = useObservable(ioManager.outputTransforms$);\n\n useLayoutEffect(() => {\n setDidMount(true);\n }, []);\n\n const eventsContainerRef = React.useRef<HTMLDivElement>(null);\n const activityEventsContainerRef = React.useRef<HTMLDivElement>(null);\n const serverLogsContainerRef = React.useRef<HTMLDivElement>(null);\n\n const [showInspector, setShowInspector] = useLocalStorageState(\n \"noya-multiplayer-react-show-inspector\",\n true\n );\n const [showEvents, setShowEvents] = useLocalStorageState(\n \"noya-multiplayer-react-show-events\",\n false\n );\n const [showHistory, setShowHistory] = useLocalStorageState(\n \"noya-multiplayer-react-show-history\",\n false\n );\n const [showUsers, setShowUsers] = useLocalStorageState(\n \"noya-multiplayer-react-show-users\",\n true\n );\n const [showUserDetails, setShowUserDetails] = useLocalStorageState(\n \"noya-multiplayer-react-show-user-details\",\n false\n );\n const [showData, setShowData] = useLocalStorageState(\n \"noya-multiplayer-react-show-data\",\n true\n );\n const [showTasks, setShowTasks] = useLocalStorageState(\n \"noya-multiplayer-react-show-tasks\",\n false\n );\n const [showShared, setShowShared] = useLocalStorageState(\n \"noya-multiplayer-react-show-shared\",\n false\n );\n const [showAssets, setShowAssets] = useLocalStorageState(\n \"noya-multiplayer-react-show-assets\",\n false\n );\n const [showResources, setShowResources] = useLocalStorageState(\n \"noya-multiplayer-react-show-resources\",\n false\n );\n const [showSecrets, setShowSecrets] = useLocalStorageState(\n \"noya-multiplayer-react-show-secrets\",\n false\n );\n const [showInputs, setShowInputs] = useLocalStorageState(\n \"noya-multiplayer-react-show-inputs\",\n false\n );\n const [showOutputTransforms, setShowOutputTransforms] = useLocalStorageState(\n \"noya-multiplayer-react-show-output-transforms\",\n false\n );\n const [showActivityEvents, setShowActivityEvents] = useLocalStorageState(\n \"noya-multiplayer-react-show-activity-events\",\n false\n );\n const [showServerLogs, setShowServerLogs] = useLocalStorageState(\n \"noya-multiplayer-react-show-server-logs\",\n false\n );\n\n const connectionEvents = useObservable(connectionEventManager.events$);\n useEffect(() => {\n if (eventsContainerRef.current) {\n eventsContainerRef.current.scrollTop =\n eventsContainerRef.current.scrollHeight;\n }\n }, [connectionEvents]);\n const serverLogs = useObservable(logManager.logs$);\n const [serverLogsPaused, setServerLogsPaused] = React.useState(false);\n const [visibleServerLogs, setVisibleServerLogs] = React.useState(\n serverLogs ?? []\n );\n\n const toggleServerLogsPaused = useCallback(() => {\n setServerLogsPaused((value) => {\n if (!value) {\n setVisibleServerLogs(serverLogs ?? []);\n }\n return !value;\n });\n }, [serverLogs]);\n\n useEffect(() => {\n if (serverLogsPaused) return;\n\n setVisibleServerLogs(serverLogs ?? []);\n }, [serverLogs, serverLogsPaused]);\n useEffect(() => {\n if (!showServerLogs) return;\n if (serverLogsContainerRef.current) {\n serverLogsContainerRef.current.scrollTop =\n serverLogsContainerRef.current.scrollHeight;\n }\n }, [showServerLogs, visibleServerLogs]);\n\n const multipeerStateInitialized = useObservable(\n multiplayerStateManager.isInitialized$\n );\n const shared = useObservable(sharedConnectionDataManager.data$);\n const historySnapshot = useManagedHistory(multiplayerStateManager.sm);\n const assets = useObservable(assetManager.assets$);\n const resources = useObservable(resourceManager.resources$);\n const resourcesInitialized = useObservable(resourceManager.isInitialized$);\n const assetsInitialized = useObservable(assetManager.isInitialized$);\n const secrets = useObservable(secretManager.secrets$);\n const secretsInitialized = useObservable(secretManager.isInitialized$);\n const connectedUsers = useObservable(userManager.connectedUsers$);\n const connectionId = useObservable(userManager.currentConnectionId$);\n const state = useObservable(multiplayerStateManager.optimisticState$);\n const inputsInitialized = useObservable(ioManager.inputsInitialized$);\n const outputTransformsInitialized = useObservable(\n ioManager.outputTransformsInitialized$\n );\n const theme = getStateInspectorTheme(colorScheme);\n const solidBorderColor = getStateInspectorBorderColor(colorScheme);\n\n const baseStyle: CSSProperties = {\n position: \"fixed\",\n top: 12,\n ...(anchor.includes(\"right\") ? { right: 12 } : { left: 12 }),\n bottom: 12,\n width: 400,\n background:\n colorScheme === \"light\" ? \"rgba(255,255,255,0.95)\" : \"rgba(0,0,0,0.95)\",\n backdropFilter: \"blur(48px)\",\n border: `1px solid ${solidBorderColor}`,\n // outlineOffset: -1,\n borderRadius: 4,\n display: \"flex\",\n flexDirection: \"column\",\n // gap: 12,\n color: theme.BASE_COLOR,\n overflow: \"hidden\",\n zIndex: 9999,\n lineHeight: \"13px\",\n };\n\n const handleExportAll = useCallback(async () => {\n const buffer = await exportAll(noyaManager);\n\n downloadBlob(new Blob([buffer]), \"state.zip\");\n }, [noyaManager]);\n\n const handleImportAll = useCallback(async () => {\n const file = await uploadFile();\n const buffer = await file.arrayBuffer();\n\n importAll(buffer, noyaManager, {\n shouldAllowSchemaChange: () => {\n return confirm(\n `The imported state uses a different schema than the schema this app expects. Do you want to continue?`\n );\n },\n });\n }, [noyaManager]);\n\n if (!didMount) return null;\n\n if (!showInspector) {\n return (\n <div\n {...props}\n style={{\n ...baseStyle,\n padding: \"4px 10px\",\n width: undefined,\n ...(anchor.includes(\"bottom\")\n ? { bottom: 12, top: undefined }\n : { bottom: undefined }),\n }}\n onClick={() => setShowInspector(true)}\n >\n <StateInspectorToggleButton\n showInspector={showInspector}\n setShowInspector={setShowInspector}\n theme={theme}\n anchor={anchor}\n />\n </div>\n );\n }\n\n return (\n <div\n {...props}\n style={{\n ...(!unstyled && baseStyle),\n ...props.style,\n }}\n >\n <StateInspectorDisclosureSection\n isFirst\n open={showUsers}\n setOpen={setShowUsers}\n title=\"Users\"\n colorScheme={colorScheme}\n style={{\n flex: \"0 0 auto\",\n maxHeight: \"50%\",\n overflowY: \"auto\",\n }}\n right={\n <span style={{ display: \"flex\", gap: \"10px\" }}>\n <StateInspectorButton\n theme={theme}\n onClick={() => setShowUserDetails(!showUserDetails)}\n >\n Toggle details\n </StateInspectorButton>\n <StateInspectorToggleButton\n showInspector={showInspector}\n setShowInspector={setShowInspector}\n theme={theme}\n anchor={anchor}\n />\n </span>\n }\n >\n <StateInspectorDisclosureRowInner style={{ flex: \"0 0 auto\" }}>\n {connectedUsers?.map((user, index, array) => {\n return (\n <StateInspectorRow\n key={user.connectionId}\n colorScheme={colorScheme}\n variant={user.connectionId === connectionId ? \"up\" : undefined}\n bordered={index !== array.length - 1}\n >\n {user.image && (\n <img\n src={user.image}\n alt={user.name}\n style={{\n width: \"13px\",\n height: \"13px\",\n borderRadius: \"50%\",\n marginRight: \"4px\",\n display: \"inline-block\",\n position: \"relative\",\n background: solidBorderColor,\n verticalAlign: \"middle\",\n }}\n />\n )}\n {showUserDetails ? (\n <ObjectInspector data={user} theme={theme} />\n ) : (\n user.name\n )}\n </StateInspectorRow>\n );\n })}\n {!connectedUsers && (\n <div\n style={{\n padding: \"12px\",\n fontSize: \"12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n }}\n >\n <span>No connected users</span>\n </div>\n )}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n <StateInspectorDisclosureSection\n title={\n <StateInspectorTitleLabel>\n Data\n <ColoredDot\n type={multipeerStateInitialized ? \"success\" : \"error\"}\n />\n </StateInspectorTitleLabel>\n }\n colorScheme={colorScheme}\n setOpen={setShowData}\n open={showData}\n right={\n <span\n style={{\n display: \"flex\",\n gap: \"12px\",\n }}\n >\n <StateInspectorButton theme={theme} onClick={handleImportAll}>\n Import\n </StateInspectorButton>\n <StateInspectorButton theme={theme} onClick={handleExportAll}>\n Export\n </StateInspectorButton>\n <StateInspectorButton\n // disabled={!historySnapshot.canUndo}\n theme={theme}\n onClick={() => {\n noyaManager.forceInit();\n }}\n >\n Reset\n </StateInspectorButton>\n </span>\n }\n >\n <StateInspectorDisclosureRowInner>\n <StateInspectorRow colorScheme={colorScheme}>\n <ObjectInspector\n name={multiplayerStateManager.schema ? \"state\" : undefined}\n data={state}\n theme={theme}\n />\n </StateInspectorRow>\n {multiplayerStateManager.schema && (\n <StateInspectorRow colorScheme={colorScheme}>\n <ObjectInspector\n name=\"schema\"\n data={multiplayerStateManager.schema}\n theme={theme}\n />\n </StateInspectorRow>\n )}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n <HistorySection\n showHistory={showHistory}\n setShowHistory={setShowHistory}\n colorScheme={colorScheme}\n historySnapshot={historySnapshot}\n multiplayerStateManager={multiplayerStateManager}\n />\n <StateInspectorDisclosureSection\n open={showAssets}\n setOpen={setShowAssets}\n title={\n <StateInspectorTitleLabel>\n Assets ({assets.length})\n <ColoredDot type={assetsInitialized ? \"success\" : \"error\"} />\n </StateInspectorTitleLabel>\n }\n colorScheme={colorScheme}\n right={\n <span style={{ display: \"flex\", gap: \"10px\" }}>\n <StateInspectorButton\n theme={theme}\n onClick={async () => {\n const ok = confirm(\n \"Are you sure you want to delete all assets?\"\n );\n if (!ok) return;\n await Promise.all(\n assets.map((asset) => assetManager.delete(asset.id))\n );\n }}\n >\n Delete all\n </StateInspectorButton>\n <StateInspectorButton\n theme={theme}\n onClick={() => {\n console.info(\n \"[StateInspector] Reloading assets\",\n noyaManager.id\n );\n assetManager.fetch();\n }}\n >\n Reload\n </StateInspectorButton>\n <StateInspectorButton\n theme={theme}\n onClick={() => {\n // get file input\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = () => {\n const file = input.files?.[0];\n if (file) {\n const reader = new FileReader();\n reader.onload = () => {\n const buffer = reader.result as ArrayBuffer;\n assetManager.create(new Uint8Array(buffer));\n };\n reader.readAsArrayBuffer(file);\n }\n };\n input.click();\n }}\n >\n Upload\n </StateInspectorButton>\n </span>\n }\n >\n <StateInspectorDisclosureRowInner>\n {assets.map((asset) => (\n <StateInspectorRow key={asset.id} colorScheme={colorScheme}>\n <ObjectInspector\n name={asset.id}\n data={truncateAsset(asset)}\n theme={theme}\n />\n <StateInspectorButton\n theme={theme}\n onClick={() => assetManager.delete(asset.id)}\n >\n Delete\n </StateInspectorButton>\n </StateInspectorRow>\n ))}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n {advanced && (\n <StateInspectorDisclosureSection\n title={\n <StateInspectorTitleLabel>\n Resources ({resources.length})\n <ColoredDot type={resourcesInitialized ? \"success\" : \"error\"} />\n </StateInspectorTitleLabel>\n }\n colorScheme={colorScheme}\n open={showResources}\n setOpen={setShowResources}\n right={\n <span style={{ display: \"flex\", gap: \"10px\" }}>\n <StateInspectorButton\n theme={theme}\n onClick={async () => {\n const ok = confirm(\n \"Are you sure you want to delete all resources?\"\n );\n if (!ok) return;\n await resourceManager.deleteResource(\n resources.map((resource) => ({ id: resource.id }))\n );\n }}\n >\n Delete all\n </StateInspectorButton>\n <StateInspectorButton\n theme={theme}\n onClick={async () => {\n const path = prompt(\"Enter directory path\") || uuid();\n await resourceManager.createResource({\n type: \"directory\",\n path,\n });\n }}\n >\n Create Directory\n </StateInspectorButton>\n <StateInspectorButton\n theme={theme}\n onClick={async () => {\n const file = await uploadFile();\n\n resourceManager.createResource({\n type: \"asset\",\n path: file.name || uuid(),\n asset: {\n content: Base64.encode(await file.arrayBuffer()),\n contentType: file.type,\n encoding: \"base64\",\n },\n });\n }}\n >\n Create Asset\n </StateInspectorButton>\n </span>\n }\n >\n <StateInspectorDisclosureRowInner>\n {resources?.map((resource) => (\n <StateInspectorRow key={resource.id} colorScheme={colorScheme}>\n <ObjectInspector\n name={resource.path}\n data={resource}\n theme={theme}\n />\n <div style={{ display: \"flex\", gap: \"4px\" }}>\n <StateInspectorButton\n theme={theme}\n onClick={() =>\n resourceManager.deleteResource({ id: resource.id })\n }\n >\n Delete\n </StateInspectorButton>\n <StateInspectorButton\n theme={theme}\n onClick={() => {\n const path = prompt(\"Enter new path\", resource.path);\n if (!path) return;\n resourceManager.updateResource({ id: resource.id, path });\n }}\n >\n Rename\n </StateInspectorButton>\n </div>\n </StateInspectorRow>\n ))}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n )}\n {advanced && (\n <StateInspectorDisclosureSection\n title={\n <StateInspectorTitleLabel>\n Secrets\n <ColoredDot type={secretsInitialized ? \"success\" : \"error\"} />\n </StateInspectorTitleLabel>\n }\n colorScheme={colorScheme}\n open={showSecrets}\n setOpen={setShowSecrets}\n right={\n <StateInspectorButton\n theme={theme}\n onClick={() => {\n const name = prompt(\"Enter secret name\");\n if (!name) return;\n const value = prompt(\"Enter secret value\");\n if (!value) return;\n secretManager.createSecret(null, name, value);\n }}\n >\n Create\n </StateInspectorButton>\n }\n >\n <StateInspectorDisclosureRowInner>\n {secrets.map((secret) => (\n <StateInspectorRow key={secret.id} colorScheme={colorScheme}>\n <ObjectInspector data={secret} theme={theme} />\n <StateInspectorButton\n theme={theme}\n onClick={() => secretManager.deleteSecret(secret.id)}\n >\n Delete\n </StateInspectorButton>\n </StateInspectorRow>\n ))}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n )}\n {advanced && (\n <StateInspectorDisclosureSection\n open={showInputs}\n setOpen={setShowInputs}\n title={\n <StateInspectorTitleLabel>\n Inputs\n <ColoredDot type={inputsInitialized ? \"success\" : \"error\"} />\n </StateInspectorTitleLabel>\n }\n colorScheme={colorScheme}\n >\n <StateInspectorDisclosureRowInner>\n {inputs?.map((input: Input) => (\n <StateInspectorRow key={input.id} colorScheme={colorScheme}>\n <ObjectInspector data={input} theme={theme} />\n </StateInspectorRow>\n ))}\n {!inputs?.length && (\n <div\n style={{\n padding: \"12px\",\n fontSize: \"12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n }}\n >\n <span>No inputs</span>\n </div>\n )}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n )}\n {advanced && (\n <StateInspectorDisclosureSection\n open={showOutputTransforms}\n setOpen={setShowOutputTransforms}\n title={\n <StateInspectorTitleLabel>\n Output Transforms\n <ColoredDot\n type={outputTransformsInitialized ? \"success\" : \"error\"}\n />\n </StateInspectorTitleLabel>\n }\n colorScheme={colorScheme}\n >\n <StateInspectorDisclosureRowInner>\n {outputTransforms?.map((transform: OutputTransform) => (\n <StateInspectorRow key={transform.id} colorScheme={colorScheme}>\n <ObjectInspector data={transform} theme={theme} />\n </StateInspectorRow>\n ))}\n {!outputTransforms?.length && (\n <div\n style={{\n padding: \"12px\",\n fontSize: \"12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n }}\n >\n <span>No output transforms</span>\n </div>\n )}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n )}\n {advanced && (\n <StateInspectorDisclosureSection\n title=\"Tasks\"\n colorScheme={colorScheme}\n open={showTasks}\n setOpen={setShowTasks}\n >\n <StateInspectorDisclosureRowInner>\n {tasks?.map((task) => (\n <StateInspectorRow\n key={task.id}\n colorScheme={colorScheme}\n style={{\n backgroundColor:\n task.status === \"done\"\n ? \"rgba(0,255,0,0.2)\"\n : task.status === \"error\"\n ? \"rgba(255,0,0,0.2)\"\n : undefined,\n }}\n >\n <ObjectInspector\n name={task.name}\n data={task.payload}\n theme={theme}\n />\n </StateInspectorRow>\n ))}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n )}\n <StateInspectorDisclosureSection\n open={showShared}\n setOpen={setShowShared}\n title=\"Shared Connection Data\"\n colorScheme={colorScheme}\n >\n <StateInspectorDisclosureRowInner>\n {Object.entries(shared).map(([key, value]) => (\n <StateInspectorRow key={key} colorScheme={colorScheme}>\n <ObjectInspector\n name={key}\n data={value}\n theme={theme}\n expandLevel={10}\n />\n </StateInspectorRow>\n ))}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n <ServerScriptLogsSection\n colorScheme={colorScheme}\n showLogs={showServerLogs}\n setShowLogs={setShowServerLogs}\n logs={visibleServerLogs}\n paused={serverLogsPaused}\n onTogglePaused={toggleServerLogsPaused}\n containerRef={serverLogsContainerRef}\n />\n {advanced && (\n <ActivityEventsSection\n colorScheme={colorScheme}\n activityEventsContainerRef={activityEventsContainerRef}\n showEvents={showActivityEvents}\n setShowEvents={setShowActivityEvents}\n activityEventsManager={activityEventsManager}\n />\n )}\n <EventsSection<S>\n connectionEvents={connectionEvents}\n colorScheme={colorScheme}\n eventsContainerRef={eventsContainerRef}\n showEvents={showEvents}\n setShowEvents={setShowEvents}\n />\n </div>\n );\n});\n\nconst truncateAsset = memoize((asset: NoyaAsset) => {\n if (asset.url.startsWith(\"data:\") || asset.url.startsWith(\"blob:\")) {\n return { ...asset, url: ellipsis(asset.url, 40) };\n }\n return asset;\n});\n","\"use client\";\n\nimport {\n GetAtPath,\n Observable,\n ObservableOptions,\n PathKey,\n} from \"@noya-app/observable\";\nimport { useMemo, useSyncExternalStore } from \"react\";\n\n// Overloads for when observable is definitely defined\nexport function useObservable<T>(observable: Observable<T>): T;\nexport function useObservable<T, A>(\n observable: Observable<T>,\n selector: (value: T) => A,\n options?: Pick<ObservableOptions, \"isEqual\">\n): A;\nexport function useObservable<T, P extends PathKey[] | string>(\n observable: Observable<T>,\n path: P\n): GetAtPath<T, P>;\n\n// Overloads for when observable might be undefined\nexport function useObservable<T>(\n observable: Observable<T> | undefined\n): T | undefined;\nexport function useObservable<T, A>(\n observable: Observable<T> | undefined,\n selector: (value: T) => A,\n options?: Pick<ObservableOptions, \"isEqual\">\n): A | undefined;\nexport function useObservable<T, P extends PathKey[] | string>(\n observable: Observable<T> | undefined,\n path: P\n): GetAtPath<T, P> | undefined;\n\n// Implementation\nexport function useObservable<T, P extends PathKey[]>(\n observable: Observable<T> | undefined,\n pathOrSelector?: P | ((value: T) => any),\n options?: Pick<ObservableOptions, \"isEqual\">\n) {\n const { get, listen } = useMemo(() => {\n if (!observable) {\n return {\n get: () => undefined,\n listen: () => () => {},\n };\n }\n\n if (typeof pathOrSelector === \"function\") {\n const mappedObservable = observable.map(pathOrSelector, {\n isEqual: options?.isEqual,\n });\n return {\n get: mappedObservable.get,\n listen: mappedObservable.subscribe,\n };\n }\n\n const listen = pathOrSelector\n ? (callback: (value: GetAtPath<T, P>) => void) =>\n observable.subscribe(pathOrSelector, callback)\n : observable.subscribe;\n\n const get: () => void = pathOrSelector\n ? () => observable.get(pathOrSelector)\n : observable.get;\n\n return { get, listen };\n }, [observable, pathOrSelector, options?.isEqual]);\n\n return useSyncExternalStore(listen, get, get);\n}\n","import React from \"react\";\n\nexport function ColoredDot({ type }: { type: \"success\" | \"error\" }) {\n return (\n <span\n style={{\n display: \"inline-block\",\n width: 6,\n height: 6,\n background:\n type === \"success\" ? \"rgba(0,200,0,0.8)\" : \"rgba(200,0,0,0.8)\",\n borderRadius: \"50%\",\n verticalAlign: \"middle\",\n }}\n />\n );\n}\n","import { chromeDark, chromeLight } from \"react-inspector\";\n\nexport const lightInspectorTheme = {\n ...chromeLight,\n BASE_BACKGROUND_COLOR: \"transparent\",\n OBJECT_NAME_COLOR: \"rgba(0,0,0,0.7)\",\n} as any;\n\nexport const darkInspectorTheme = {\n ...chromeDark,\n BASE_BACKGROUND_COLOR: \"transparent\",\n OBJECT_NAME_COLOR: \"rgba(255,255,255,0.7)\",\n} as any;\n\nexport const getStateInspectorTheme = (colorScheme: \"light\" | \"dark\") => {\n return colorScheme === \"light\" ? lightInspectorTheme : darkInspectorTheme;\n};\n\nexport const getStateInspectorBorderColor = (colorScheme: \"light\" | \"dark\") => {\n return colorScheme === \"light\" ? \"rgb(223 223 223)\" : \"rgb(29 29 29)\";\n};\n","import { ActivityEventsManager, StreamFilter } from \"@noya-app/state-manager\";\nimport React, { useState } from \"react\";\nimport { ObjectInspector } from \"react-inspector\";\nimport { useActivityEventsForManager } from \"../../NoyaStateContext\";\nimport { getStateInspectorTheme } from \"../inspectorTheme\";\nimport { StateInspectorButton } from \"../StateInspectorButton\";\nimport {\n StateInspectorDisclosureRowInner,\n StateInspectorDisclosureSection,\n} from \"../StateInspectorDisclosureSection\";\nimport { StateInspectorRow } from \"../StateInspectorRow\";\n\nfunction isResourceStreamFilter(\n streamFilter: StreamFilter\n): streamFilter is { resourceId: string } {\n return typeof streamFilter === \"object\" && \"resourceId\" in streamFilter;\n}\n\nfunction isResourceActivityEvent(\n activityEvent: unknown\n): activityEvent is { resourceId: string } {\n return (\n typeof activityEvent === \"object\" &&\n activityEvent !== null &&\n \"type\" in activityEvent &&\n activityEvent.type === \"resource\" &&\n \"resourceId\" in activityEvent &&\n typeof activityEvent.resourceId === \"string\"\n );\n}\n\nexport function ActivityEventsSection({\n showEvents,\n setShowEvents,\n colorScheme,\n activityEventsContainerRef,\n activityEventsManager,\n}: {\n showEvents: boolean;\n setShowEvents: (value: boolean) => void;\n colorScheme: \"light\" | \"dark\";\n activityEventsContainerRef: React.RefObject<HTMLDivElement | null>;\n activityEventsManager: ActivityEventsManager;\n}) {\n const [streamFilter, setStreamFilter] = useState<StreamFilter>(\"all\");\n const streamFilterType = isResourceStreamFilter(streamFilter)\n ? \"resource\"\n : \"all\";\n const theme = getStateInspectorTheme(colorScheme);\n const activityEvents = useActivityEventsForManager(\n showEvents ? streamFilter : undefined,\n activityEventsManager\n );\n\n return (\n <StateInspectorDisclosureSection\n open={showEvents}\n setOpen={setShowEvents}\n title={`Activity Events`}\n colorScheme={colorScheme}\n >\n <StateInspectorDisclosureRowInner ref={activityEventsContainerRef}>\n <div style={{ padding: \"4px 12px\", display: \"flex\", gap: \"4px\" }}>\n <select\n name=\"streamFilterType\"\n value={streamFilterType}\n style={{ flex: \"0 0 auto\", height: \"19px\" }}\n onChange={(e) => {\n const value = e.target.value as string;\n if (value === \"all\") {\n setStreamFilter(\"all\");\n } else {\n setStreamFilter({ resourceId: \"\" });\n }\n }}\n >\n <option value=\"all\">All</option>\n <option value=\"resource\">Resource</option>\n </select>\n {isResourceStreamFilter(streamFilter) && (\n <input\n name=\"resourceId\"\n type=\"text\"\n placeholder=\"Resource ID\"\n value={streamFilter.resourceId}\n style={{\n flex: \"1 1 auto\",\n height: \"19px\",\n padding: \"0px 4px\",\n boxSizing: \"border-box\",\n }}\n onChange={(e) =>\n setStreamFilter({ ...streamFilter, resourceId: e.target.value })\n }\n />\n )}\n </div>\n {activityEvents?.map((activityEvent, index) => (\n <StateInspectorRow\n key={index}\n colorScheme={colorScheme}\n style={{\n padding: \"0px 12px 1px\",\n }}\n >\n <ObjectInspector data={activityEvent} theme={theme} />\n {streamFilterType === \"all\" &&\n isResourceActivityEvent(activityEvent) && (\n <StateInspectorButton\n theme={theme}\n onClick={() => {\n setStreamFilter({ resourceId: activityEvent.resourceId });\n }}\n >\n Watch this resource\n </StateInspectorButton>\n )}\n </StateInspectorRow>\n ))}\n {!activityEvents && (\n <div\n style={{\n padding: \"12px\",\n fontSize: \"12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n }}\n >\n <span>No activity events</span>\n </div>\n )}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n );\n}\n","import React, { CSSProperties } from \"react\";\nimport { lightInspectorTheme } from \"./inspectorTheme\";\n\nexport function StateInspectorButton({\n children,\n onClick,\n style,\n theme,\n disabled,\n}: {\n children: React.ReactNode;\n onClick: () => void;\n style?: CSSProperties;\n theme: typeof lightInspectorTheme;\n disabled?: boolean;\n}) {\n return (\n <button\n type=\"button\"\n disabled={disabled}\n onClick={(event) => {\n event.stopPropagation();\n onClick();\n }}\n style={{\n flex: \"0\",\n appearance: \"none\",\n background: \"none\",\n color: theme.BASE_COLOR,\n opacity: disabled ? 0.25 : 1,\n border: \"none\",\n fontSize: \"12px\",\n whiteSpace: \"nowrap\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"0\",\n cursor: \"pointer\",\n ...style,\n }}\n >\n {children}\n </button>\n );\n}\n","\"use client\";\n\nimport React, {\n CSSProperties,\n DetailedHTMLProps,\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n} from \"react\";\nimport { darkInspectorTheme, lightInspectorTheme } from \"./inspectorTheme\";\nimport { StateInspectorArrow } from \"./StateInspectorArrow\";\n\nexport function StateInspectorDisclosureSection({\n open,\n setOpen,\n title,\n right,\n children,\n colorScheme,\n isFirst,\n style,\n}: {\n open: boolean;\n setOpen?: (value: boolean) => void;\n title: React.ReactNode;\n right?: React.ReactNode;\n children: React.ReactNode;\n colorScheme: \"light\" | \"dark\";\n isFirst?: boolean;\n style?: CSSProperties;\n}) {\n const theme =\n colorScheme === \"light\" ? lightInspectorTheme : darkInspectorTheme;\n\n const borderColor =\n colorScheme === \"light\" ? \"rgba(0,0,0,0.1)\" : \"rgba(255,255,255,0.1)\";\n\n return (\n <div\n style={{\n flex: open ? \"1 1 0\" : \"0\",\n display: \"flex\",\n flexDirection: \"column\",\n ...style,\n }}\n >\n <div\n onClick={() => setOpen?.(!open)}\n style={{\n cursor: \"default\",\n fontSize: \"12px\",\n padding: \"4px 10px\",\n display: \"flex\",\n alignItems: \"center\",\n ...(!isFirst && { borderTop: `1px solid ${borderColor}` }),\n ...(open && { borderBottom: `1px solid ${borderColor}` }),\n }}\n >\n {setOpen && (\n <StateInspectorArrow\n expanded={open}\n style={{\n fontSize: theme.ARROW_FONT_SIZE,\n marginRight: theme.ARROW_MARGIN_RIGHT + 1,\n color: theme.ARROW_COLOR,\n }}\n />\n )}\n <span style={{ flex: \"1 1 0\", userSelect: \"none\" }}>{title}</span>\n {right}\n </div>\n {open && children}\n </div>\n );\n}\n\nexport const StateInspectorDisclosureRowInner = forwardRef(\n function StateInspectorDisclosureRowInner(\n props: DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>,\n forwardedRef: ForwardedRef<HTMLDivElement>\n ) {\n return (\n <div\n style={{\n flex: \"1 1 0\",\n overflowY: \"auto\",\n overflowX: \"hidden\",\n display: \"flex\",\n flexDirection: \"column\",\n ...props.style,\n }}\n {...props}\n ref={forwardedRef}\n />\n );\n }\n);\n","import React, { CSSProperties } from \"react\";\n\n// Rotates ▶️ or ▼ based on expanded state\nexport function StateInspectorArrow({\n expanded,\n onClick,\n style,\n}: {\n expanded: boolean;\n onClick?: () => void;\n style?: CSSProperties;\n}) {\n return (\n <span\n role=\"button\"\n onClick={onClick}\n style={{\n display: \"inline-block\",\n textAlign: \"center\",\n transform: expanded ? \"rotate(0deg)\" : \"rotate(-90deg)\",\n fontFamily: \"Menlo, monospace\",\n ...style,\n }}\n >\n {\"▼\"}\n </span>\n );\n}\n","\"use client\";\n\nimport React, { CSSProperties } from \"react\";\n\nexport function StateInspectorRow({\n children,\n colorScheme,\n selected,\n style,\n variant,\n bordered = true,\n}: {\n children: React.ReactNode;\n colorScheme: \"light\" | \"dark\";\n selected?: boolean;\n style?: CSSProperties;\n variant?: \"up\" | \"down\";\n bordered?: boolean;\n}) {\n const solidBorderColor =\n colorScheme === \"light\" ? \"rgb(223 223 223)\" : \"rgb(29 29 29)\";\n\n return (\n <div\n style={{\n borderBottom: bordered ? `1px solid ${solidBorderColor}` : undefined,\n fontSize: \"12px\",\n fontFamily: \"Menlo, monospace\",\n padding: \"2px 12px 1px\",\n display: \"flex\",\n alignItems: \"center\",\n background:\n variant === \"up\"\n ? \"rgba(0,255,0,0.1)\"\n : variant === \"down\"\n ? \"transparent\"\n : selected\n ? \"rgb(59 130 246 / 15%)\"\n : undefined,\n // background:\n // colorScheme === \"light\"\n // ? \"rgba(0,0,0,0.05)\"\n // : \"rgba(255,255,255,0.05)\",\n ...style,\n }}\n >\n <span\n style={{\n fontFamily: \"Menlo, monospace\",\n fontSize: \"11px\",\n borderRadius: 4,\n display: \"inline-block\",\n }}\n >\n {children}\n </span>\n </div>\n );\n}\n","import { ConnectionEvent } from \"@noya-app/state-manager\";\nimport React from \"react\";\nimport { ObjectInspector, ObjectLabel } from \"react-inspector\";\nimport { getStateInspectorTheme } from \"../inspectorTheme\";\nimport { ObjectRootLabel } from \"../ObjectRootLabel\";\nimport {\n StateInspectorDisclosureRowInner,\n StateInspectorDisclosureSection,\n} from \"../StateInspectorDisclosureSection\";\nimport { StateInspectorRow } from \"../StateInspectorRow\";\n\nexport function EventsSection<S>({\n showEvents,\n setShowEvents,\n colorScheme,\n eventsContainerRef,\n connectionEvents,\n}: {\n showEvents: boolean;\n setShowEvents: (value: boolean) => void;\n colorScheme: \"light\" | \"dark\";\n eventsContainerRef: React.RefObject<HTMLDivElement | null>;\n connectionEvents: ConnectionEvent<S>[];\n}) {\n const theme = getStateInspectorTheme(colorScheme);\n\n return (\n <StateInspectorDisclosureSection\n open={showEvents}\n setOpen={setShowEvents}\n title=\"Events\"\n colorScheme={colorScheme}\n >\n <StateInspectorDisclosureRowInner ref={eventsContainerRef}>\n {connectionEvents?.map((event, index) =>\n event.type === \"stateChange\" ? (\n <StateInspectorRow key={index} colorScheme={colorScheme}>\n connection:{\" \"}\n <span style={{ fontStyle: \"italic\" }}>\n {event.state.toLowerCase()}\n </span>\n </StateInspectorRow>\n ) : (\n <StateInspectorRow\n key={index}\n colorScheme={colorScheme}\n variant={event.type === \"send\" ? \"up\" : \"down\"}\n style={{\n padding: \"0px 12px 1px\",\n }}\n >\n <ObjectInspector\n data={event.type === \"error\" ? event.error : event.message}\n theme={theme}\n nodeRenderer={({ depth, name, data, isNonenumerable }: any) => {\n const direction = event.type === \"send\" ? \"up\" : \"down\";\n\n return depth === 0 ? (\n <ObjectRootLabel direction={direction} data={data} />\n ) : (\n <ObjectLabel\n direction={direction}\n name={name}\n data={data}\n isNonenumerable={isNonenumerable}\n />\n );\n }}\n />\n </StateInspectorRow>\n )\n )}\n {!connectionEvents && (\n <div\n style={{\n padding: \"12px\",\n fontSize: \"12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n }}\n >\n <span>No recorded events</span>\n </div>\n )}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n );\n}\n","import React, { FC } from \"react\";\nimport { ObjectName, ObjectPreview } from \"react-inspector\";\n\ntype MessageDirection = \"up\" | \"down\";\n\nexport const ObjectRootLabel: FC<{\n name?: string;\n data: any;\n direction?: MessageDirection;\n}> = ({ name, data, direction }) => {\n if (typeof name === \"string\") {\n return (\n <span>\n <ObjectName name={name} />\n <span>: </span>\n <ObjectPreview data={data} />\n </span>\n );\n }\n if (direction === \"up\" || direction === \"down\") {\n const arrow = direction === \"up\" ? \"↑\" : \"↓\";\n\n return (\n <span>\n <span\n style={{\n background:\n direction === \"up\" ? \"rgba(0,255,0,0.2)\" : \"rgba(255,0,0,0.2)\",\n // color: \"white\",\n width: 12,\n height: 12,\n borderRadius: 2,\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n marginRight: 4,\n lineHeight: \"12px\",\n }}\n >\n {arrow}\n </span>\n <ObjectPreview data={data} />\n </span>\n );\n } else {\n return <ObjectPreview data={data} />;\n }\n};\n","\"use client\";\n\nimport {\n HistorySnapshot,\n MultiplayerPatchMetadata,\n MultiplayerStateManager,\n} from \"@noya-app/state-manager\";\nimport React, { useEffect, useRef } from \"react\";\nimport { ObjectInspector } from \"react-inspector\";\nimport { StateInspectorButton } from \"../StateInspectorButton\";\nimport {\n StateInspectorDisclosureRowInner,\n StateInspectorDisclosureSection,\n} from \"../StateInspectorDisclosureSection\";\nimport {\n getStateInspectorBorderColor,\n getStateInspectorTheme,\n} from \"../inspectorTheme\";\nimport { pathToString } from \"../utils\";\n\nconst HISTORY_ELEMENT_PREFIX = \"noya-multiplayer-history-\";\n\nexport function HistorySection<S, M extends object>({\n showHistory,\n setShowHistory,\n colorScheme,\n historySnapshot,\n multiplayerStateManager,\n}: {\n showHistory: boolean;\n setShowHistory: (value: boolean) => void;\n colorScheme: \"light\" | \"dark\";\n historySnapshot: HistorySnapshot<S, Partial<M> & MultiplayerPatchMetadata>;\n multiplayerStateManager: MultiplayerStateManager<S, M>;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const theme = getStateInspectorTheme(colorScheme);\n const solidBorderColor = getStateInspectorBorderColor(colorScheme);\n\n useEffect(() => {\n if (ref.current) {\n ref.current.scrollTop = ref.current.scrollHeight;\n }\n }, [historySnapshot]);\n\n // If history index changes, scroll to the new history entry into view\n useEffect(() => {\n if (!ref.current) return;\n\n const historyEntry = ref.current.querySelector(\n `#${HISTORY_ELEMENT_PREFIX}${historySnapshot.historyIndex}`\n );\n\n if (historyEntry) {\n historyEntry.scrollIntoView({\n block: \"nearest\",\n inline: \"nearest\",\n });\n }\n }, [historySnapshot.historyIndex]);\n\n return (\n <StateInspectorDisclosureSection\n open={showHistory}\n setOpen={setShowHistory}\n title=\"History\"\n colorScheme={colorScheme}\n right={\n <span\n style={{\n display: \"flex\",\n gap: \"4px\",\n }}\n >\n <StateInspectorButton\n disabled={!historySnapshot.canUndo}\n theme={theme}\n onClick={() => {\n multiplayerStateManager.undo();\n }}\n >\n <span style={{ width: \"12px\", height: \"12px\" }}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fill=\"currentColor\"\n d=\"M12 5H7V2L1 6l6 4V7h5c2.2 0 4 1.8 4 4s-1.8 4-4 4H7v2h5c3.3 0 6-2.7 6-6s-2.7-6-6-6\"\n />\n </svg>\n </span>\n </StateInspectorButton>\n <StateInspectorButton\n disabled={!historySnapshot.canRedo}\n theme={theme}\n onClick={() => {\n multiplayerStateManager.redo();\n }}\n >\n <span style={{ width: \"12px\", height: \"12px\" }}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fill=\"currentColor\"\n d=\"M8 5h5V2l6 4l-6 4V7H8c-2.2 0-4 1.8-4 4s1.8 4 4 4h5v2H8c-3.3 0-6-2.7-6-6s2.7-6 6-6\"\n />\n </svg>\n </span>\n </StateInspectorButton>\n </span>\n }\n >\n <StateInspectorDisclosureRowInner ref={ref}>\n <div\n id={`${HISTORY_ELEMENT_PREFIX}0`}\n style={{\n borderBottom: `1px solid ${solidBorderColor}`,\n fontSize: \"12px\",\n fontFamily: \"Menlo, monospace\",\n padding: \"2px 12px 1px\",\n display: \"flex\",\n alignItems: \"center\",\n background:\n historySnapshot.historyIndex === 0\n ? \"rgb(59 130 246 / 15%)\"\n : undefined,\n }}\n >\n <span\n style={{\n fontFamily: \"Menlo, monospace\",\n fontSize: \"11px\",\n borderRadius: 4,\n display: \"inline-block\",\n }}\n >\n Initial state\n </span>\n </div>\n {historySnapshot.history.map((entry, index) => {\n const metadata = entry.metadata;\n const { id, name, timestamp, ...rest } = metadata;\n\n return (\n <div\n id={`${HISTORY_ELEMENT_PREFIX}${index + 1}`}\n key={index}\n style={{\n padding: \"0px 12px 1px\",\n borderBottom: `1px solid ${solidBorderColor}`,\n background:\n index + 1 === historySnapshot.historyIndex\n ? \"rgb(59 130 246 / 15%)\"\n : undefined,\n }}\n >\n {typeof name === \"string\" && (\n <pre\n style={{\n fontSize: \"11px\",\n display: \"flex\",\n flexWrap: \"wrap\",\n margin: 0,\n }}\n >\n {entry.metadata.name}\n {Object.keys(rest).length > 0 && (\n <ObjectInspector data={rest} theme={theme} />\n )}\n </pre>\n )}\n {entry.redoPatches?.map((patch, j) => (\n <pre\n key={j}\n style={{\n fontSize: \"11px\",\n display: \"flex\",\n flexWrap: \"wrap\",\n margin: 0,\n }}\n >\n {patch.op === \"add\" && (\n <>\n <span style={{ fontStyle: \"italic\" }}>\n {pathToString(patch.path)}\n </span>\n {\" = \"}\n <ObjectInspector data={patch.value} theme={theme} />\n </>\n )}\n {patch.op === \"replace\" && (\n <>\n <span style={{ fontStyle: \"italic\" }}>\n {pathToString(patch.path)}\n </span>\n {\" = \"}\n <ObjectInspector data={patch.value} theme={theme} />\n </>\n )}\n {patch.op === \"remove\" && (\n <>\n <span style={{ color: theme.OBJECT_VALUE_STRING_COLOR }}>\n delete{\" \"}\n </span>\n <span style={{ fontStyle: \"italic\" }}>\n {pathToString(patch.path)}\n </span>\n </>\n )}\n {patch.op === \"move\" && (\n <>\n <span style={{ fontStyle: \"italic\" }}>\n {pathToString(patch.from!)}\n </span>\n {\" -> \"}\n <span style={{ fontStyle: \"italic\" }}>\n {pathToString(patch.path)}\n </span>\n </>\n )}\n </pre>\n ))}\n </div>\n );\n })}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n );\n}\n","import { ExtendedPathKey } from \"@noya-app/state-manager\";\n\nexport function pathToString(extendedPath: ExtendedPathKey[]) {\n return extendedPath\n .map((key) =>\n typeof key === \"object\"\n ? `:${ellipsis(key.id.toString(), 8, \"middle\")}`\n : key\n )\n .map((key, index) =>\n index === 0 || (typeof key === \"string\" && key.startsWith(\":\"))\n ? key\n : `.${key}`\n )\n .join(\"\");\n}\n\nexport type EllipsisPosition = \"start\" | \"middle\" | \"end\";\n\nexport function ellipsis(\n str: string,\n maxLength: number,\n position: EllipsisPosition = \"end\"\n) {\n if (str.length <= maxLength) return str;\n\n switch (position) {\n case \"start\":\n return `…${str.slice(str.length - maxLength)}`;\n case \"middle\": {\n const halfLength = Math.floor(maxLength / 2);\n return `${str.slice(0, halfLength)}…${str.slice(str.length - halfLength)}`;\n }\n case \"end\":\n return `${str.slice(0, maxLength)}…`;\n }\n}\n\nexport function uploadFile() {\n return new Promise<File>((resolve, reject) => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = () => {\n const file = input.files?.[0];\n if (file) {\n const reader = new FileReader();\n reader.onload = () => {\n const buffer = reader.result as ArrayBuffer;\n const blob = new File([buffer], file.name, { type: file.type });\n resolve(blob);\n };\n reader.onerror = () => {\n reject(new Error(\"Failed to read file\"));\n };\n reader.readAsArrayBuffer(file);\n }\n };\n input.click();\n });\n}\n","import { ServerScriptLogEntry } from \"@noya-app/state-manager\";\nimport React from \"react\";\nimport { ObjectInspector } from \"react-inspector\";\nimport { getStateInspectorTheme } from \"../inspectorTheme\";\nimport { StateInspectorButton } from \"../StateInspectorButton\";\nimport {\n StateInspectorDisclosureRowInner,\n StateInspectorDisclosureSection,\n} from \"../StateInspectorDisclosureSection\";\nimport { StateInspectorRow } from \"../StateInspectorRow\";\n\nconst levelColors: Record<ServerScriptLogEntry[\"level\"], string> = {\n error: \"#f87171\",\n warn: \"#facc15\",\n log: \"#9ca3af\",\n};\n\nfunction formatTimestamp(timestamp: number) {\n return new Date(timestamp).toLocaleTimeString();\n}\n\nexport function ServerScriptLogsSection({\n showLogs,\n setShowLogs,\n colorScheme,\n logs,\n containerRef,\n paused,\n onTogglePaused,\n}: {\n showLogs: boolean;\n setShowLogs: (value: boolean) => void;\n colorScheme: \"light\" | \"dark\";\n logs: ServerScriptLogEntry[];\n containerRef: React.RefObject<HTMLDivElement | null>;\n paused: boolean;\n onTogglePaused: () => void;\n}) {\n const theme = getStateInspectorTheme(colorScheme);\n\n return (\n <StateInspectorDisclosureSection\n open={showLogs}\n setOpen={setShowLogs}\n title=\"Server Script Logs\"\n colorScheme={colorScheme}\n right={\n <StateInspectorButton theme={theme} onClick={onTogglePaused}>\n {paused ? \"Resume\" : \"Pause\"}\n </StateInspectorButton>\n }\n >\n <StateInspectorDisclosureRowInner ref={containerRef}>\n {paused && (\n <div\n style={{\n padding: \"4px 12px\",\n fontSize: \"11px\",\n opacity: 0.7,\n }}\n >\n Log streaming paused\n </div>\n )}\n {logs.map((log) => (\n <StateInspectorRow key={log.id} colorScheme={colorScheme}>\n <div\n style={{\n display: \"flex\",\n gap: \"6px\",\n alignItems: \"center\",\n fontSize: \"10px\",\n color: \"inherit\",\n marginBottom: log.values.length ? \"4px\" : 0,\n textTransform: \"uppercase\",\n }}\n >\n <span>{formatTimestamp(log.timestamp)}</span>\n <span style={{ color: levelColors[log.level] }}>{log.level}</span>\n <span\n style={{\n fontFamily: \"monospace\",\n textTransform: \"none\",\n fontSize: \"10px\",\n }}\n >\n {log.scriptId}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n }}\n >\n {log.values.length > 0 ? (\n log.values.map((value, index) => (\n <ObjectInspector\n key={index}\n data={value}\n theme={theme}\n expandLevel={3}\n />\n ))\n ) : (\n <span style={{ fontSize: \"11px\", opacity: 0.7 }}>No data</span>\n )}\n </div>\n </StateInspectorRow>\n ))}\n {!logs?.length && (\n <div\n style={{\n padding: \"12px\",\n fontSize: \"12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n }}\n >\n <span>No logs received</span>\n </div>\n )}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n );\n}\n","import { Asset, decodeSchema, encodeSchema } from \"@noya-app/noya-schemas\";\nimport { createHash, NoyaManager, TSchema } from \"@noya-app/state-manager\";\nimport { TinyZip } from \"./zip/TinyZip\";\n\nexport async function fetchAssetMap(\n assets: Asset[]\n): Promise<Record<string, Uint8Array>> {\n const res = await Promise.all(\n assets.map(async (asset) => {\n const url = asset.url;\n const response = await fetch(url);\n const data = await response.arrayBuffer();\n return [asset.id, data];\n })\n );\n\n return Object.fromEntries(res);\n}\n\nexport async function exportAll(\n noyaManager: NoyaManager<any, any, any, any, any>\n) {\n const { multiplayerStateManager, assetManager } = noyaManager;\n\n const assetMap = await fetchAssetMap(assetManager.assets$.get());\n\n return encodeAll({\n state: multiplayerStateManager.optimisticState$.get(),\n schema: multiplayerStateManager.schema,\n assets: assetManager.assets$.get(),\n assetMap,\n });\n}\n\nexport function encodeAll({\n state,\n schema,\n assets,\n assetMap,\n}: {\n state: unknown;\n schema?: TSchema;\n assets: Asset[];\n assetMap: Record<string, Uint8Array>;\n}) {\n const zip = new TinyZip();\n\n zip.addFile(\"state.json\", JSON.stringify(state, null, 2));\n\n if (schema) {\n const encodedSchema = encodeSchema(schema);\n\n zip.addFile(\"schema.json\", JSON.stringify(encodedSchema, null, 2));\n }\n\n if (assets.length) {\n zip.addFile(\"assets.json\", JSON.stringify(assets, null, 2));\n }\n\n for (const [id, data] of Object.entries(assetMap)) {\n zip.addFile(`assets/${id}`, data);\n }\n\n return zip.finish();\n}\n\nexport async function importAll(\n buffer: Uint8Array | ArrayBuffer,\n noyaManager: NoyaManager<any, any, any, any, any>,\n {\n shouldAllowSchemaChange,\n }: {\n shouldAllowSchemaChange?: ({\n oldSchema,\n newSchema,\n }: {\n oldSchema: TSchema;\n newSchema: TSchema;\n }) => boolean;\n } = {}\n) {\n let { state, schema, assets, assetMap } = await decodeAll(buffer);\n\n if (shouldAllowSchemaChange && noyaManager.options.schema && schema) {\n const oldSchemaHash = createHash(noyaManager.options.schema);\n const newSchemaHash = createHash(schema);\n\n if (oldSchemaHash !== newSchemaHash) {\n const shouldAllow = shouldAllowSchemaChange({\n oldSchema: noyaManager.options.schema,\n newSchema: schema,\n });\n\n if (!shouldAllow) {\n throw new Error(\"Schema change not allowed\");\n }\n }\n }\n\n if (assets.length) {\n await Promise.all(\n noyaManager.assetManager.assets$\n .get()\n .map((asset) => noyaManager.assetManager.delete(asset.stableId))\n );\n\n // Add new assets, preserving stableIds\n await Promise.all(\n assets.map(async (asset) => {\n await noyaManager.assetManager.create({\n data: assetMap[asset.id],\n contentType: asset.contentType,\n stableId: asset.stableId,\n });\n })\n );\n }\n\n // if (schema) {\n // noyaManager.options.schema = schema;\n // }\n\n noyaManager.initialState = state;\n noyaManager.forceInit();\n}\n\nexport function decodeAll(buffer: Uint8Array | ArrayBuffer): {\n state: unknown;\n schema?: TSchema;\n assets: Asset[];\n assetMap: Record<string, Uint8Array>;\n} {\n const zip = TinyZip.extract(buffer);\n\n const stateFile = zip[\"state.json\"];\n const schemaFile = zip[\"schema.json\"];\n const assetsFile = zip[\"assets.json\"];\n\n if (!stateFile) {\n throw new Error(\"State file not found\");\n }\n\n const state = JSON.parse(new TextDecoder().decode(stateFile));\n\n let schema: TSchema | undefined;\n\n if (schemaFile) {\n const encodedSchema = JSON.parse(new TextDecoder().decode(schemaFile));\n schema = decodeSchema(encodedSchema);\n }\n\n let assets: Asset[] = [];\n\n let assetMap: Record<string, Uint8Array> = {};\n\n if (assetsFile) {\n assets = JSON.parse(new TextDecoder().decode(assetsFile));\n\n for (const asset of assets) {\n const data = zip[`assets/${asset.id}`];\n\n if (!data) {\n throw new Error(`Asset ${asset.id} not found`);\n }\n\n assetMap[asset.id] = data;\n }\n }\n\n return { state, schema, assets, assetMap };\n}\n\nexport function replaceDeep<T>(\n obj: T,\n replacementMap: Record<string, string>\n): T {\n switch (typeof obj) {\n case \"object\":\n if (obj === null) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => replaceDeep(item, replacementMap)) as any;\n }\n\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => [\n key,\n replaceDeep(value, replacementMap),\n ])\n ) as any;\n case \"string\":\n return (replacementMap[obj] ?? obj) as any;\n default:\n return obj;\n }\n}\n","const CRC_TABLE: Uint32Array = (() => {\n const t = new Uint32Array(256);\n for (let i = 0; i < 256; i++) {\n let c = i;\n for (let k = 0; k < 8; k++) c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;\n t[i] = c >>> 0;\n }\n return t;\n})();\n\nexport function crc32(u8: Uint8Array): number {\n let c = 0xffffffff;\n for (let i = 0; i < u8.length; i++)\n c = CRC_TABLE[(c ^ u8[i]) & 0xff] ^ (c >>> 8);\n return (c ^ 0xffffffff) >>> 0;\n}\n","// -------------------------\n// Declarative header schemas + (en|de)coders\n// -------------------------\ntype ScalarType = \"u8\" | \"u16\" | \"u32\";\n\ntype LenFn = (ctx: Record<string, any>) => number;\n\n// Typed schema helpers\ntype NumberField<Name extends string, Kind extends ScalarType> = {\n name: Name;\n type: Kind;\n};\n\ntype BytesField<Name extends string> = {\n name: Name;\n type: \"bytes\";\n length: number | LenFn;\n};\n\ntype SchemaFieldConst<Name extends string = string> =\n | NumberField<Name, ScalarType>\n | BytesField<Name>;\n\ntype FieldValue<F> = F extends { type: \"bytes\" } ? Uint8Array : number;\n\ntype StructFromSchema<S extends readonly SchemaFieldConst<string>[]> = {\n [F in S[number] as F[\"name\"] & string]: FieldValue<F>;\n};\n\nexport const defineSchema = <\n const S extends readonly SchemaFieldConst<string>[],\n>(\n s: S\n) => s;\nexport const defineSchemas = <\n const M extends Record<string, readonly SchemaFieldConst<string>[]>,\n>(\n m: M\n) => m;\n\nexport type SchemaStructs<\n M extends Record<string, readonly SchemaFieldConst<string>[]>,\n> = {\n [K in keyof M]: StructFromSchema<M[K]>;\n};\n\nexport function sizeofFieldSpec(\n f: SchemaFieldConst<string>,\n ctx: Record<string, any>\n): number {\n if (f.type === \"bytes\")\n return typeof f.length === \"function\" ? (f.length as LenFn)(ctx) : f.length;\n return f.type === \"u8\" ? 1 : f.type === \"u16\" ? 2 : 4;\n}\n\nexport function writeStruct<S extends readonly SchemaFieldConst<string>[]>(\n schema: S,\n values: StructFromSchema<S>\n): Uint8Array {\n // compute total size (bytes fields may depend on previously set values)\n let total = 0;\n const ctx: Record<string, any> = { ...(values as any) };\n for (const f of schema) total += sizeofFieldSpec(f, ctx);\n\n const out = new Uint8Array(total);\n const view = new DataView(out.buffer);\n let o = 0;\n const vals = values as unknown as Record<string, any>;\n for (const f of schema) {\n if (f.type === \"bytes\") {\n const b: Uint8Array = vals[f.name];\n out.set(b, o);\n o += b.length;\n continue;\n }\n const n = Number(vals[f.name]) >>> 0;\n if (f.type === \"u8\") {\n view.setUint8(o, n);\n o += 1;\n } else if (f.type === \"u16\") {\n view.setUint16(o, n, true);\n o += 2;\n } else {\n view.setUint32(o, n, true);\n o += 4;\n }\n }\n return out;\n}\n\nexport function readStruct<S extends readonly SchemaFieldConst<string>[]>(\n view: DataView,\n offset: number,\n schema: S\n): { value: StructFromSchema<S>; offset: number } {\n const ctx: Record<string, any> = {};\n let o = offset;\n for (const f of schema) {\n if (f.type === \"bytes\") {\n const len =\n typeof f.length === \"function\" ? (f.length as LenFn)(ctx) : f.length;\n const u8 = new Uint8Array(view.buffer, view.byteOffset + o, len);\n ctx[f.name] = new Uint8Array(u8); // copy for safety\n o += len;\n } else if (f.type === \"u8\") {\n ctx[f.name] = view.getUint8(o);\n o += 1;\n } else if (f.type === \"u16\") {\n ctx[f.name] = view.getUint16(o, true);\n o += 2;\n } else {\n ctx[f.name] = view.getUint32(o, true);\n o += 4;\n }\n }\n return { value: ctx as StructFromSchema<S>, offset: o };\n}\n","/* eslint-disable @shopify/prefer-early-return */\n\n// TinyZip.ts — ultra-lightweight ZIP writer (no deps)\n// - UTF-8 file names, Store only (no compression)\n// - Optional top-level root folder so unzip creates a single directory\n// - No Zip64 (files and total size must be < 4 GiB)\n\nimport { crc32 } from \"./crc32\";\nimport { defineSchema, defineSchemas, readStruct, writeStruct } from \"./struct\";\n\nexport interface AddFileOptions {\n date?: Date;\n}\n\nexport interface TinyZipOptions {\n /** Place all entries under this top-level folder; creates the dir entry automatically. */\n root?: string;\n}\n\ninterface CentralEntry {\n nameBytes: Uint8Array;\n crc: number;\n compSize: number;\n uncompSize: number;\n method: number;\n time: number;\n dosDate: number;\n localHeaderOffset: number;\n externalAttrs: number; // DOS attrs low byte (0x10 = directory)\n}\n\n// -------------------------\n// Top-level helpers (no state)\n// -------------------------\nconst te = new TextEncoder();\n\nfunction utf8(s: string): Uint8Array {\n return te.encode(s);\n}\n\nfunction dosDateTime(d: Date = new Date()): {\n time: number;\n date: number;\n} {\n const time =\n (d.getHours() << 11) |\n (d.getMinutes() << 5) |\n Math.floor(d.getSeconds() / 2);\n const date =\n ((d.getFullYear() - 1980) << 9) | ((d.getMonth() + 1) << 5) | d.getDate();\n return { time, date };\n}\n\n// ZIP constants\nconst SIG = {\n LocalFile: 0x04034b50,\n CentralFile: 0x02014b50,\n EOCD: 0x06054b50,\n} as const;\n\nconst SCHEMA = defineSchemas({\n LocalFile: defineSchema([\n { name: \"signature\", type: \"u32\" },\n { name: \"versionNeeded\", type: \"u16\" },\n { name: \"flags\", type: \"u16\" },\n { name: \"method\", type: \"u16\" },\n { name: \"time\", type: \"u16\" },\n { name: \"date\", type: \"u16\" },\n { name: \"crc32\", type: \"u32\" },\n { name: \"compSize\", type: \"u32\" },\n { name: \"uncompSize\", type: \"u32\" },\n { name: \"nameLen\", type: \"u16\" },\n { name: \"extraLen\", type: \"u16\" },\n { name: \"name\", type: \"bytes\", length: (c) => c.nameLen },\n { name: \"extra\", type: \"bytes\", length: (c) => c.extraLen },\n ]),\n CentralFile: defineSchema([\n { name: \"signature\", type: \"u32\" },\n { name: \"versionMadeBy\", type: \"u16\" },\n { name: \"versionNeeded\", type: \"u16\" },\n { name: \"flags\", type: \"u16\" },\n { name: \"method\", type: \"u16\" },\n { name: \"time\", type: \"u16\" },\n { name: \"date\", type: \"u16\" },\n { name: \"crc32\", type: \"u32\" },\n { name: \"compSize\", type: \"u32\" },\n { name: \"uncompSize\", type: \"u32\" },\n { name: \"nameLen\", type: \"u16\" },\n { name: \"extraLen\", type: \"u16\" },\n { name: \"commentLen\", type: \"u16\" },\n { name: \"diskStart\", type: \"u16\" },\n { name: \"intAttrs\", type: \"u16\" },\n { name: \"extAttrs\", type: \"u32\" },\n { name: \"localHeaderOffset\", type: \"u32\" },\n { name: \"name\", type: \"bytes\", length: (c) => c.nameLen },\n { name: \"extra\", type: \"bytes\", length: (c) => c.extraLen },\n { name: \"comment\", type: \"bytes\", length: (c) => c.commentLen },\n ]),\n EOCD: defineSchema([\n { name: \"signature\", type: \"u32\" },\n { name: \"diskNum\", type: \"u16\" },\n { name: \"cdStartDisk\", type: \"u16\" },\n { name: \"cdRecordsOnDisk\", type: \"u16\" },\n { name: \"cdRecordsTotal\", type: \"u16\" },\n { name: \"cdSize\", type: \"u32\" },\n { name: \"cdOffset\", type: \"u32\" },\n { name: \"commentLen\", type: \"u16\" },\n { name: \"comment\", type: \"bytes\", length: (c) => c.commentLen },\n ]),\n});\n\nfunction ensureSig(v: number, expect: number, where: string) {\n if (v !== expect)\n throw new Error(`Invalid signature for ${where}: 0x${v.toString(16)}`);\n}\n\n// -------------------------\n// TinyZip (writer)\n// -------------------------\nexport class TinyZip {\n private _chunks: Uint8Array[] = [];\n private _offset = 0;\n private _files: CentralEntry[] = [];\n\n private _rootPrefix = \"\"; // e.g. \"my-archive/\" or \"\"\n private _rootDirAdded = false;\n\n constructor(opts: TinyZipOptions = {}) {\n if (opts.root) {\n const r = opts.root.replace(/^\\/+|\\/+$/g, \"\");\n if (r) this._rootPrefix = r + \"/\";\n }\n }\n\n private _push(...arrs: Uint8Array[]) {\n for (const a of arrs) {\n this._chunks.push(a);\n this._offset += a.length;\n }\n }\n private _withRoot(name: string): string {\n return this._rootPrefix && !name.startsWith(this._rootPrefix)\n ? this._rootPrefix + name.replace(/^\\/+/, \"\")\n : name;\n }\n\n private _ensureRootDir(date: Date = new Date()) {\n if (!this._rootPrefix || this._rootDirAdded) return;\n this._rootDirAdded = true;\n\n const dirName = this._rootPrefix; // already ends with '/'\n const nameBytes = utf8(dirName);\n const { time, date: dosDate } = dosDateTime(date);\n\n const localHeader = writeStruct(SCHEMA.LocalFile, {\n signature: SIG.LocalFile,\n versionNeeded: 20,\n flags: 0x0800,\n method: 0,\n time,\n date: dosDate,\n crc32: 0,\n compSize: 0,\n uncompSize: 0,\n nameLen: nameBytes.length,\n extraLen: 0,\n name: nameBytes,\n extra: new Uint8Array(0),\n });\n\n const localHeaderOffset = this._offset;\n this._push(localHeader);\n this._files.push({\n nameBytes,\n crc: 0,\n compSize: 0,\n uncompSize: 0,\n method: 0,\n time,\n dosDate,\n localHeaderOffset,\n externalAttrs: 0x10,\n });\n }\n\n /** Add a file to the zip. \"name\" uses forward slashes for paths (e.g., \"dir/file.txt\"). */\n addFile(\n name: string,\n data: string | Uint8Array | ArrayBuffer,\n opts: AddFileOptions = {}\n ): void {\n const { date = new Date() } = opts;\n this._ensureRootDir(date);\n\n const u8 = toU8(data);\n\n const fullName = this._withRoot(name);\n const nameBytes = utf8(fullName);\n const { time, date: dosDate } = dosDateTime(date);\n const crc = crc32(u8);\n\n const compSize = u8.length >>> 0;\n const uncompSize = u8.length >>> 0;\n const localHeaderOffset = this._offset;\n\n const localHeader = writeStruct(SCHEMA.LocalFile, {\n signature: SIG.LocalFile,\n versionNeeded: 20,\n flags: 0x0800,\n method: 0,\n time,\n date: dosDate,\n crc32: crc,\n compSize,\n uncompSize,\n nameLen: nameBytes.length,\n extraLen: 0,\n name: nameBytes,\n extra: new Uint8Array(0),\n });\n\n this._push(localHeader, u8);\n\n this._files.push({\n nameBytes,\n crc,\n compSize,\n uncompSize,\n method: 0,\n time,\n dosDate,\n localHeaderOffset,\n externalAttrs: 0,\n });\n }\n\n // Create an explicit directory entry (name should end with \"/\").\n addDirectory(name: string, opts: { date?: Date } = {}): void {\n const { date = new Date() } = opts;\n this._ensureRootDir(date);\n\n const dirNameRaw = name.endsWith(\"/\") ? name : name + \"/\";\n const fullName = this._withRoot(dirNameRaw);\n const nameBytes = utf8(fullName);\n const { time, date: dosDate } = dosDateTime(date);\n\n const localHeader = writeStruct(SCHEMA.LocalFile, {\n signature: SIG.LocalFile,\n versionNeeded: 20,\n flags: 0x0800,\n method: 0,\n time,\n date: dosDate,\n crc32: 0,\n compSize: 0,\n uncompSize: 0,\n nameLen: nameBytes.length,\n extraLen: 0,\n name: nameBytes,\n extra: new Uint8Array(0),\n });\n\n const localHeaderOffset = this._offset;\n this._push(localHeader);\n\n this._files.push({\n nameBytes,\n crc: 0,\n compSize: 0,\n uncompSize: 0,\n method: 0,\n time,\n dosDate,\n localHeaderOffset,\n externalAttrs: 0x10,\n });\n }\n\n finish(): Uint8Array {\n const cdStart = this._offset;\n\n for (const f of this._files) {\n const central = writeStruct(SCHEMA.CentralFile, {\n signature: SIG.CentralFile,\n versionMadeBy: 20,\n versionNeeded: 20,\n flags: 0x0800,\n method: f.method,\n time: f.time,\n date: f.dosDate,\n crc32: f.crc,\n compSize: f.compSize,\n uncompSize: f.uncompSize,\n nameLen: f.nameBytes.length,\n extraLen: 0,\n commentLen: 0,\n diskStart: 0,\n intAttrs: 0,\n extAttrs: f.externalAttrs,\n localHeaderOffset: f.localHeaderOffset,\n name: f.nameBytes,\n extra: new Uint8Array(0),\n comment: new Uint8Array(0),\n });\n this._push(central);\n }\n\n const cdSize = this._offset - cdStart;\n\n const eocd = writeStruct(SCHEMA.EOCD, {\n signature: SIG.EOCD,\n diskNum: 0,\n cdStartDisk: 0,\n cdRecordsOnDisk: this._files.length,\n cdRecordsTotal: this._files.length,\n cdSize,\n cdOffset: cdStart,\n commentLen: 0,\n comment: new Uint8Array(0),\n });\n\n this._push(eocd);\n\n const merged = new Uint8Array(this._offset);\n let offset = 0;\n for (const chunk of this._chunks) {\n merged.set(chunk, offset);\n offset += chunk.length;\n }\n return merged;\n }\n\n static create(\n files: Record<string, string | Uint8Array | ArrayBuffer>,\n opts: TinyZipOptions = {}\n ): Uint8Array {\n const zip = new TinyZip(opts);\n for (const [name, data] of Object.entries(files)) {\n if (name.endsWith(\"/\")) zip.addDirectory(name);\n else zip.addFile(name, data);\n }\n return zip.finish();\n }\n\n static parse(input: ArrayBuffer | Uint8Array): ParsedEntry[] {\n const u8 = toU8(input);\n const view = new DataView(u8.buffer, u8.byteOffset, u8.byteLength);\n\n // EOCD\n const eocdOff = findEOCDOffset(u8);\n const { value: eocd } = readStruct(view, eocdOff, SCHEMA.EOCD);\n ensureSig(eocd.signature, SIG.EOCD, \"EOCD\");\n if (eocd.commentLen !== 0) throw new Error(\"Unsupported: EOCD comment\");\n if (eocd.diskNum !== 0 || eocd.cdStartDisk !== 0)\n throw new Error(\"Unsupported: multi-disk\");\n\n // Central directory walk\n const entries: {\n name: string;\n isDirectory: boolean;\n crc32: number;\n size: number;\n compSize: number;\n time: number;\n dosDate: number;\n localHeaderOffset: number;\n }[] = [];\n let cdPtr = eocd.cdOffset;\n for (let i = 0; i < eocd.cdRecordsTotal; i++) {\n const { value: cdf, offset: next } = readStruct(\n view,\n cdPtr,\n SCHEMA.CentralFile\n );\n ensureSig(cdf.signature, SIG.CentralFile, \"Central Directory\");\n const name = new TextDecoder().decode(cdf.name);\n const isDir = (cdf.extAttrs & 0x10) !== 0 || name.endsWith(\"/\");\n if (cdf.extraLen !== 0 || cdf.commentLen !== 0)\n throw new Error(\"Unsupported: extra/comment in central dir\");\n entries.push({\n name,\n isDirectory: isDir,\n crc32: cdf.crc32 >>> 0,\n size: cdf.uncompSize >>> 0,\n compSize: cdf.compSize >>> 0,\n time: cdf.time >>> 0,\n dosDate: cdf.date >>> 0,\n localHeaderOffset: cdf.localHeaderOffset >>> 0,\n });\n cdPtr = next;\n }\n\n // Resolve data from local file headers\n const results: ParsedEntry[] = [];\n for (const e of entries) {\n const { value: lfh, offset: afterHeader } = readStruct(\n view,\n e.localHeaderOffset,\n SCHEMA.LocalFile\n );\n ensureSig(lfh.signature, SIG.LocalFile, \"Local File\");\n if (lfh.flags !== 0x0800)\n throw new Error(\"Unsupported: flags (expect UTF-8 only)\");\n if (lfh.method !== 0)\n throw new Error(\"Unsupported: compression (expect store only)\");\n if (lfh.extraLen !== 0)\n throw new Error(\"Unsupported: extra fields in local header\");\n\n const dataStart = afterHeader;\n const dataEnd = dataStart + lfh.compSize;\n const data = e.isDirectory\n ? new Uint8Array(0)\n : new Uint8Array(u8.subarray(dataStart, dataEnd));\n\n results.push({ ...e, data });\n }\n\n return results;\n }\n\n // Quick utility: return a map of file data (directories omitted)\n static extract(input: ArrayBuffer | Uint8Array): Record<string, Uint8Array> {\n const entries = this.parse(input);\n const out: Record<string, Uint8Array> = {};\n for (const e of entries) if (!e.isDirectory) out[e.name] = e.data;\n return out;\n }\n}\n\n// -------------------------\n// Reader for TinyZip archives (our subset only)\n// -------------------------\nexport interface ParsedEntry {\n name: string;\n isDirectory: boolean;\n crc32: number;\n size: number; // uncompressed\n compSize: number; // same as size for store\n time: number;\n dosDate: number;\n localHeaderOffset: number;\n data: Uint8Array; // empty for directories\n}\n\nfunction toU8(input: string | ArrayBuffer | Uint8Array): Uint8Array {\n if (typeof input === \"string\") return utf8(input);\n if (input instanceof Uint8Array) return input;\n return new Uint8Array(input);\n}\n\nfunction findEOCDOffset(u8: Uint8Array): number {\n const view = new DataView(u8.buffer, u8.byteOffset, u8.byteLength);\n const minSize = 22; // EOCD without comment\n if (u8.length >= minSize) {\n const at = u8.length - minSize;\n if (view.getUint32(at, true) === SIG.EOCD) return at;\n }\n // Fallback: scan last 1 KiB for signature\n const start = Math.max(0, u8.length - 1024);\n for (let i = u8.length - 4; i >= start; i--) {\n if (view.getUint32(i, true) === SIG.EOCD) return i;\n }\n throw new Error(\"EOCD not found\");\n}\n","import React from \"react\";\n\nexport function StateInspectorTitleLabel({\n children,\n}: {\n children: React.ReactNode;\n}) {\n return (\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n {children}\n </span>\n );\n}\n","import React from \"react\";\nimport { StateInspectorAnchor } from \"./StateInspector\";\nimport { lightInspectorTheme } from \"./inspectorTheme\";\n\nexport function StateInspectorToggleButton({\n showInspector,\n setShowInspector,\n theme,\n anchor,\n}: {\n showInspector: boolean;\n setShowInspector: (value: boolean) => void;\n theme: typeof lightInspectorTheme;\n anchor: StateInspectorAnchor;\n}) {\n const isRightAnchor = anchor === \"right\";\n\n const rightIcon = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={1.5}\n stroke=\"currentColor\"\n className=\"size-6\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"m5.25 4.5 7.5 7.5-7.5 7.5m6-15 7.5 7.5-7.5 7.5\"\n />\n </svg>\n );\n\n const leftIcon = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={1.5}\n stroke=\"currentColor\"\n className=\"size-6\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"m18.75 4.5-7.5 7.5 7.5 7.5m-6-15L5.25 12l7.5 7.5\"\n />\n </svg>\n );\n\n return (\n <span\n role=\"button\"\n style={{\n flex: \"0\",\n appearance: \"none\",\n color: theme.BASE_COLOR,\n border: \"none\",\n fontSize: \"12px\",\n whiteSpace: \"nowrap\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"2px 0\",\n }}\n onClick={(event) => {\n event.stopPropagation();\n\n setShowInspector(!showInspector);\n }}\n >\n {showInspector ? (\n \"Hide Inspector\"\n ) : (\n <span style={{ width: \"12px\", height: \"12px\" }}>\n {isRightAnchor ? rightIcon : leftIcon}\n </span>\n )}\n </span>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\n\nconst localStorage = typeof window !== \"undefined\" ? window.localStorage : null;\n\nexport function useLocalStorageState<S>(\n key: string,\n defaultValue: S\n): [S, (value: S) => void] {\n const [state, setState] = React.useState<S>(() => {\n const value = localStorage?.getItem(key);\n let result = defaultValue;\n if (value) {\n try {\n result = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing localStorage value\", error);\n }\n }\n return result;\n });\n\n const setLocalStorageState = (value: S) => {\n localStorage?.setItem(key, JSON.stringify(value));\n setState(value);\n };\n\n return [state, setLocalStorageState];\n}\n","\"use client\";\n\nimport type { LocalStorageSyncOptions } from \"@noya-app/state-manager\";\nimport {\n NoyaManager,\n NoyaManagerOptions,\n type SyncAdapter,\n} from \"@noya-app/state-manager\";\nimport React from \"react\";\nimport type { StateInspectorOptions } from \"./inspector/StateInspector\";\nimport { StateInspector } from \"./inspector/StateInspector\";\nimport { createStateInspectorRoot } from \"./inspector/useStateInspector\";\nimport {\n type AppTheme,\n type AppViewType,\n getAppData,\n getSyncAdapter,\n} from \"./noyaApp\";\n\nlet noyaManagerSingleton: NoyaManager<any, any, any, any, any> | undefined;\nlet noyaSingletonBindings: AnyNoyaSingletonBindings | undefined;\n\nexport type AnyNoyaSingletonBindings = {\n sync?: SyncAdapter<any, any, any, any, any>;\n inspector?: boolean | StateInspectorOptions;\n theme: AppTheme;\n viewType: AppViewType;\n userId?: string;\n isDemo: boolean;\n};\n\nexport type AnyNoyaSingletonOptions<\n S,\n M extends object,\n E extends object,\n MenuT extends string,\n I extends Record<string, any> = Record<string, unknown>,\n> = NoyaManagerOptions<S, M> & {\n initialState?: S | (() => S);\n sync?: SyncAdapter<S, M, E, MenuT, I>;\n inspector?: boolean | StateInspectorOptions;\n theme?: AppTheme;\n viewType?: AppViewType;\n offlineStorageKey?: string;\n multiplayerUrl?: string;\n serverScripts?: LocalStorageSyncOptions[\"serverScripts\"];\n};\n\nexport function initializeNoyaSingleton<\n S,\n M extends object,\n E extends object,\n MenuT extends string,\n I extends Record<string, any> = Record<string, unknown>,\n>(options?: AnyNoyaSingletonOptions<S, M, E, MenuT, I>) {\n if (noyaManagerSingleton) {\n throw new Error(\n \"Noya has already been initialized. Call `useNoyaState` instead.\"\n );\n }\n\n const {\n initialState,\n sync,\n inspector,\n theme,\n viewType,\n offlineStorageKey,\n multiplayerUrl,\n serverScripts,\n ...managerOptions\n } = (options ?? {}) as AnyNoyaSingletonOptions<S, M, E, MenuT, I>;\n\n const appData = getAppData<S>(\n (initialState ?? null) as S | (() => S),\n managerOptions?.schema,\n { overrideExistingState: managerOptions?.overrideExistingState }\n );\n\n const policyAuthContext =\n appData.access || appData.userId !== undefined\n ? {\n ...(appData.access ? { access: appData.access } : {}),\n ...(appData.userId !== undefined\n ? { id: appData.userId ?? null }\n : {}),\n }\n : undefined;\n\n noyaManagerSingleton = new NoyaManager<S, M, E, MenuT, I>(\n appData.initialState as S,\n managerOptions\n );\n\n if (appData.userId) {\n noyaManagerSingleton.sharedConnectionDataManager.setCurrentConnectionId(\n appData.userId\n );\n noyaManagerSingleton.userManager.setCurrentConnectionId(appData.userId);\n noyaManagerSingleton.userManager.setCurrentUserId(appData.userId);\n }\n\n const resolvedSync =\n sync ??\n getSyncAdapter<S, M, E, MenuT, I>({\n multiplayerUrl: multiplayerUrl ?? appData.multiplayerUrl,\n offlineStorageKey,\n debug: managerOptions?.debug,\n serverScripts,\n policyAuthContext,\n });\n\n // Activate sync immediately for the singleton\n try {\n resolvedSync({ noyaManager: noyaManagerSingleton });\n } catch (error) {\n console.warn(\"Failed to activate sync\", error);\n }\n\n const resolvedInspector = inspector ?? appData.inspector;\n const resolvedTheme = theme ?? appData.theme ?? \"light\";\n const resolvedViewType = viewType ?? appData.viewType ?? \"editable\";\n\n if (resolvedInspector) {\n const { root } = createStateInspectorRoot();\n\n root.render(\n <StateInspector\n noyaManager={noyaManagerSingleton}\n colorScheme={\n resolvedInspector === true\n ? resolvedTheme\n : resolvedInspector.colorScheme\n }\n anchor={\n resolvedInspector === true ? \"bottom right\" : resolvedInspector.anchor\n }\n advanced={\n resolvedInspector === true ? false : resolvedInspector.advanced\n }\n />\n );\n }\n\n noyaSingletonBindings = {\n sync: resolvedSync,\n inspector: resolvedInspector,\n theme: resolvedTheme,\n viewType: resolvedViewType,\n userId: appData.userId,\n isDemo: appData.isDemo,\n };\n}\n\nexport function getNoyaManagerSingleton(): NoyaManager<\n any,\n any,\n any,\n any,\n any\n> {\n if (!noyaManagerSingleton || !noyaSingletonBindings) {\n throw new Error(\n \"Noya has not been initialized. Call initializeNoya once before using Noya hooks.\"\n );\n }\n\n return noyaManagerSingleton;\n}\n\nexport function getNoyaSingletonBindings() {\n return noyaSingletonBindings;\n}\n\nexport function deleteNoyaSingleton() {\n noyaManagerSingleton = undefined;\n noyaSingletonBindings = undefined;\n}\n","\"use client\";\n\nimport { Observable } from \"@noya-app/observable\";\nimport { memoGeneric } from \"@noya-app/react-utils\";\nimport {\n MultiplayerUser,\n SharedConnectionDataManager,\n UserManager,\n} from \"@noya-app/state-manager\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { useObservable } from \"../useObservable\";\ntype Point = { x: number; y: number };\n\nexport type UserPointerData = { pointer?: Point };\n\nexport type RenderUserPointerProps = {\n userId: string;\n name?: string;\n visible: boolean;\n point: Point;\n};\n\nexport type RenderUserPointer = {\n renderUserPointer: (options: RenderUserPointerProps) => React.ReactNode;\n};\n\ntype InternalUserPointerProps<E extends UserPointerData> = {\n user: MultiplayerUser;\n sharedConnectionDataManager: SharedConnectionDataManager<E>;\n hideAfter?: number;\n} & RenderUserPointer;\n\nfunction shouldShow(hideAfter: number, updatedAt: number) {\n return !!updatedAt && Date.now() - updatedAt < hideAfter;\n}\n\nconst UserPointerInternal = memoGeneric(function UserPointerInternal<\n E extends UserPointerData,\n>({\n user,\n sharedConnectionDataManager,\n hideAfter = 5000,\n renderUserPointer,\n}: InternalUserPointerProps<E>) {\n const observable = useMemo(() => {\n const metadata$ = sharedConnectionDataManager.metadata$\n .observePath([user.connectionId] as const)\n .throttle(50);\n const data$ = sharedConnectionDataManager.data$\n .observePath([user.connectionId] as const)\n .throttle(50);\n\n return Observable.combine([metadata$, data$], ([metadata, data]) => {\n return { metadata, data };\n });\n }, [sharedConnectionDataManager, user.connectionId]);\n\n const { metadata, data } = useObservable(observable);\n\n const [, setForceUpdate] = useState(0);\n\n const updatedAt = metadata?.updatedAt ?? 0;\n const show = shouldShow(hideAfter, updatedAt);\n\n useEffect(() => {\n if (!show) return;\n\n const timeoutId = setTimeout(() => {\n setForceUpdate((prev) => prev + 1);\n }, hideAfter);\n\n return () => clearTimeout(timeoutId);\n }, [hideAfter, show, updatedAt]);\n\n if (!data?.pointer) return null;\n\n return renderUserPointer({\n userId: user.connectionId,\n name: user.name,\n point: data.pointer,\n visible: show,\n });\n});\n\nexport type UserPointersOverlayProps<E extends UserPointerData> = {\n userManager: UserManager;\n sharedConnectionDataManager: SharedConnectionDataManager<E>;\n} & RenderUserPointer;\n\nexport const UserPointersOverlay = memoGeneric(function UserPointers<\n E extends UserPointerData,\n>({\n userManager,\n sharedConnectionDataManager,\n renderUserPointer,\n}: UserPointersOverlayProps<E>) {\n const currentConnectionId = useObservable(\n sharedConnectionDataManager.currentConnectionId$\n );\n const connectedUsers = useObservable(userManager.connectedUsers$);\n\n return (\n <>\n {connectedUsers.map((user) => {\n if (user.connectionId === currentConnectionId) return null;\n\n return (\n <UserPointerInternal\n key={user.connectionId}\n user={user}\n sharedConnectionDataManager={\n sharedConnectionDataManager as unknown as SharedConnectionDataManager<UserPointerData>\n }\n renderUserPointer={renderUserPointer}\n />\n );\n })}\n </>\n );\n});\n","import {\n ClientToServerMessage,\n MultiplayerStateManagerError,\n ReconnectingWebSocket,\n ReconnectingWebSocketState,\n ServerToClientMessage,\n UserActivityDetector,\n} from \"@noya-app/state-manager\";\n\nexport type ConnectionEvent<State> =\n | {\n type: \"stateChange\";\n state: ReconnectingWebSocketState;\n }\n | {\n type: \"send\";\n message: ClientToServerMessage<State>;\n }\n | {\n type: \"receive\";\n message: ServerToClientMessage<State>;\n }\n | {\n type: \"error\";\n error: MultiplayerStateManagerError;\n };\n\nexport type ConnectionOptions<State> = {\n debug?: boolean;\n onConnectionEvent?: (event: ConnectionEvent<State>) => void;\n};\n\nexport class WebSocketConnection<State> {\n private ws: ReconnectingWebSocket;\n private closedForever = false;\n\n constructor(\n private url: URL,\n private options: ConnectionOptions<State> = {}\n ) {\n this.ws = new ReconnectingWebSocket({\n debug: options.debug,\n onopen: this.handleOpen,\n onmessage: this.handleMessage,\n onclose: this.handleClose,\n activityDetector: new UserActivityDetector(),\n });\n }\n\n async connect() {\n if (this.closedForever) return;\n\n this.ws.connect(this.url.toString());\n }\n\n private handleOpen = () => {\n if (this.closedForever) return;\n\n if (this.options.debug) {\n console.info(\"ws connected\");\n }\n\n this.options.onConnectionEvent?.({\n type: \"stateChange\",\n state: \"OPEN\",\n });\n };\n\n private handleMessage = (event: MessageEvent) => {\n if (this.closedForever) return;\n\n if (this.options.debug) {\n console.info(\"ws receiving message \", event.data);\n }\n\n const parsed = JSON.parse(event.data) as ServerToClientMessage<State>;\n\n this.options.onConnectionEvent?.({\n type: \"receive\",\n message: parsed,\n });\n };\n\n private handleClose = () => {\n if (this.closedForever) return;\n\n if (this.options.debug) {\n console.info(\"ws disconnected\");\n }\n\n this.options.onConnectionEvent?.({\n type: \"stateChange\",\n state: \"CLOSED\",\n });\n };\n\n send(message: ClientToServerMessage<State>) {\n if (this.closedForever) return;\n\n if (this.options.debug) {\n console.info(\"ws sending message\", message);\n }\n\n this.options.onConnectionEvent?.({\n type: \"send\",\n message,\n });\n\n this.ws.send(JSON.stringify(message));\n }\n\n close() {\n if (this.closedForever) return;\n\n this.closedForever = true;\n this.ws.shutdown();\n\n // remove all listeners\n this.ws.listeners.forEach((listener) => {\n this.ws.removeListener(listener);\n });\n }\n\n addListener(listener: (state: ReconnectingWebSocketState) => void) {\n return this.ws.addListener(listener);\n }\n\n removeListener(listener: (state: ReconnectingWebSocketState) => void) {\n return this.ws.removeListener(listener);\n }\n}\n"],"mappings":"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","names":["path","BoxDrawing","LinePrefix","node","indexPath","context","map","node","path","index","node","path","path","defineTree","exports","extname","require_entries","filepath","require_lib","exports","useEffect","value","Array","Function","IsArray","IsAsyncIterator","IsBigInt","IsBoolean","IsDate","IsFunction","IsIterator","IsNull","IsNumber","IsObject","IsRegExp","IsString","IsSymbol","IsUndefined","IsUint8Array","IsArray","IsBoolean","IsBigInt","IsAsyncIterator","IsDate","IsFunction","IsIterator","IsNull","IsNumber","IsObject","range","pattern","BigInt","Number","String","Number","BigInt","String","Visit","schema","IsNumber","IsBigInt","IsString","IsBoolean","FromUnion","IsNumber","FromUnion","IsArray","IsObject","Object","Promise","FromProperties","FromMappedResult","FromMappedResult","FromRest","FromProperties","IsFunction","Function","IsAsyncIterator","IsIterator","IsObject","Object","IsArray","Array","Promise","map","FromProperties","FromMappedResult","IsObject","RemoveOptionalFromType","RemoveOptionalFromRest","FromRest","FromIntersect","FromUnion","FromRest","FromIntersect","FromUnion","FromTuple","FromArray","FromProperties","IsArray","IsObject","Number","FromProperties","FromMappedResult","Object","Date","Symbol","Uint8Array","FromArray","FromProperties","Uint8Array","Date","Object","Function","Symbol","BigInt","FromRest","schema","FromProperties","FromIntersect","FromUnion","FromTuple","FromArray","FromPromise","IsFunction","IsArray","IsObject","IsAsyncIterator","IsIterator","IsAny","IsArray","IsAsyncIterator","IsBigInt","IsBoolean","IsConstructor","IsDate","IsFunction","IsInteger","IsIntersect","IsIterator","IsKind","IsKindOf","IsLiteral","IsMappedKey","IsMappedResult","IsNever","IsNot","IsNull","IsNumber","IsObject","IsOptional","IsPromise","IsReadonly","IsRecord","IsRef","IsRegExp","IsSchema","IsString","IsSymbol","IsTemplateLiteral","IsThis","IsTransform","IsTuple","IsUint8Array","IsUndefined","IsUnion","IsUnknown","IsUnsafe","IsVoid","IsSchema","IsReadonly","IsOptional","IsAny","IsKindOf","IsArray","IsAsyncIterator","IsBigInt","IsBoolean","IsConstructor","IsDate","IsFunction","IsInteger","IsIntersect","IsTransform","IsIterator","IsLiteral","IsMappedKey","IsMappedResult","IsNever","IsNot","IsNull","IsNumber","IsObject","IsPromise","IsRecord","IsRef","IsRegExp","IsString","IsSymbol","IsTemplateLiteral","IsThis","IsTuple","IsUndefined","IsUnion","IsUint8Array","IsUnknown","IsUnsafe","IsVoid","IsKind","ExtendsResult","FromArray","Visit","FromAsyncIterator","FromConstructor","FromFunction","FromIntersect","FromIterator","FromLiteral","Number","Function","FromObject","FromPromise","String","FromTemplateLiteral","FromTuple","FromUnion","FromProperties","FromMappedResult","FromMappedKey","FromProperties","FromMappedResult","FromProperties","FromMappedResult","FromTemplateLiteral","FromRest","FromProperties","FromMappedResult","FromIntersect","T","FromUnion","FromProperty","FromProperties","IsObject","Object","FromPropertyKey","FromPropertyKeys","FromMappedKey","FromRest","FromProperties","IsObject","Object","FromProperties","FromMappedResult","FromProperties","FromMappedResult","FromIntersect","T","FromUnion","FromProperties","IsObject","Object","FromPropertyKey","FromPropertyKeys","FromMappedKey","Object","IsNumber","IsRegExp","IsString","RegExp","Set","type_exports","Clear","Delete","Entries","Get","Has","Set","map","FromRest","FromProperties","IsObject","Object","FromProperties","FromMappedResult","decode","encode","type_exports","Array","BigInt","Date","Function","Number","Object","Promise","RegExp","String","Symbol","Uint8Array","type_exports","Nullable","IsObject","IsArray","IsUndefined","IsNumber","TypeSystemPolicy","IsObject","IsArray","IsNumber","IsUndefined","TypeSystem","Type","type_exports","ByteMarker","ValueErrorType","Object","String","Delete","path","import_tree_visit","React","useCallback","useEffect","useMemo","useState","NoyaManager","stubSync","useEffect","useMemo","useState","NoyaManager","createElement","useCallback","useEffect","useMemo","useRef","useState","useSyncExternalStore","createRoot","ErrorOverlay","React","uuid","uuid","React","useEffect","ObjectInspector","listen","get","React","React","React","React","React","React","StateInspectorDisclosureRowInner","React","React","React","ObjectInspector","React","React","ObjectInspector","React","ObjectInspector","React","ObjectInspector","React","ObjectInspector","React","ObjectInspector","React","React","React","StateInspector","React","useEffect","ObjectInspector","path","React","root","useState","useCallback","useSyncExternalStore","useMemo","useRef","useEffect","NoyaManager","createRoot","createElement","window","stubSync","useState","useMemo","NoyaManager","useEffect","NoyaManager","React","NoyaManager","React","useMemo","useCallback","useEffect","useState","streamId","React","path","useEffect","Observable","memoGeneric","React","useEffect","useMemo","useState","memoGeneric","UserPointerInternal","useMemo","Observable","metadata","data","useState","useEffect","React"]}
1
+ {"version":3,"sources":["../../../node_modules/tree-visit/lib/access.js","../../../node_modules/tree-visit/lib/sort.js","../../../node_modules/tree-visit/lib/ancestors.js","../../../node_modules/tree-visit/lib/diagram/boxDiagram.js","../../../node_modules/tree-visit/lib/diagram/directoryDiagram.js","../../../node_modules/tree-visit/lib/diagram.js","../../../node_modules/tree-visit/lib/visit.js","../../../node_modules/tree-visit/lib/entries.js","../../../node_modules/tree-visit/lib/find.js","../../../node_modules/tree-visit/lib/reduce.js","../../../node_modules/tree-visit/lib/flat.js","../../../node_modules/tree-visit/lib/map.js","../../../node_modules/tree-visit/lib/transformPath.js","../../../node_modules/tree-visit/lib/operation.js","../../../node_modules/tree-visit/lib/insert.js","../../../node_modules/tree-visit/lib/move.js","../../../node_modules/tree-visit/lib/remove.js","../../../node_modules/tree-visit/lib/replace.js","../../../node_modules/tree-visit/lib/splice.js","../../../node_modules/tree-visit/lib/defineTree.js","../../../node_modules/tree-visit/lib/indexPath.js","../../../node_modules/tree-visit/lib/options.js","../../../node_modules/tree-visit/lib/withOptions.js","../../../node_modules/tree-visit/lib/index.js","../../../node_modules/imfs/lib/types.js","../../../node_modules/imfs/lib/node.js","../../../node_modules/imfs/lib/path.js","../../../node_modules/imfs/lib/entries.js","../../../node_modules/imfs/lib/volume/paths.js","../../../node_modules/imfs/lib/volume/read.js","../../../node_modules/imfs/lib/volume/write.js","../../../node_modules/imfs/lib/volume.js","../../../node_modules/imfs/lib/index.js","../src/index.ts","../src/ai.ts","../../../node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/any/any.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/guard/value.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/clone/value.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/clone/type.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/array/array.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/async-iterator/async-iterator.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/discard/discard.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/never/never.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/mapped/mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/constructor/constructor.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/function/function.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/union/union-create.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/guard/kind.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/union/union-evaluated.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/union/union.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/error/error.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/template-literal/parse.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/template-literal/finite.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/template-literal/generate.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/literal/literal.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/boolean/boolean.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/bigint/bigint.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/number/number.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/string/string.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/template-literal/syntax.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/patterns/patterns.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/template-literal/pattern.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/template-literal/union.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/template-literal/template-literal.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-property-keys.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/indexed/indexed.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-key.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/iterator/iterator.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/object/object.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/promise/promise.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/readonly/readonly.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/readonly/readonly-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/tuple/tuple.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/sets/set.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/mapped/mapped.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/optional/optional.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/optional/optional-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-create.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-evaluated.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intersect/intersect.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/awaited/awaited.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-keys.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/keyof/keyof.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/composite/composite.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/date/date.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/null/null.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/symbol/symbol.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/undefined/undefined.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/uint8array/uint8array.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/unknown/unknown.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/const/const.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/constructor-parameters/constructor-parameters.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/deref/deref.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/enum/enum.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/guard/type.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/extends/extends-check.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/extends/extends.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-key.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-template-literal.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/exclude/exclude.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-template-literal.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/extract/extract.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/instance-type/instance-type.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/integer/integer.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic-from-mapped-key.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intrinsic/capitalize.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intrinsic/lowercase.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intrinsic/uncapitalize.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/intrinsic/uppercase.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/not/not.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/omit/omit.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-key.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/parameters/parameters.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/partial/partial.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/partial/partial-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/pick/pick.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-key.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/readonly-optional/readonly-optional.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/record/record.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/recursive/recursive.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/ref/ref.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/regexp/regexp.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/registry/format.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/registry/type.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/required/required.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/required/required-from-mapped-result.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/rest/rest.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/return-type/return-type.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/strict/strict.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/transform/transform.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/unsafe/unsafe.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/type/type.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/void/void.mjs","../../../node_modules/@sinclair/typebox/build/esm/type/type/index.mjs","../../noya-schemas/src/nullable.ts","../../noya-schemas/src/activityEventSchema.ts","../../noya-schemas/src/asset.ts","../../noya-schemas/src/encode.ts","../../noya-schemas/src/filesSchema.ts","../../noya-schemas/src/gitHubSchema.ts","../../noya-schemas/src/jsonSchema.ts","../../noya-schemas/src/input.ts","../../../node_modules/@sinclair/typebox/build/esm/value/guard/guard.mjs","../../../node_modules/@sinclair/typebox/build/esm/system/policy.mjs","../../../node_modules/@sinclair/typebox/build/esm/system/system.mjs","../../../node_modules/@sinclair/typebox/build/esm/value/hash/hash.mjs","../../../node_modules/@sinclair/typebox/build/esm/errors/errors.mjs","../../../node_modules/@sinclair/typebox/build/esm/value/delta/delta.mjs","../../noya-schemas/src/SchemaTree.ts","../../noya-schemas/src/resourceSchema.ts","../../noya-schemas/src/resourceTree.ts","../../noya-schemas/src/index.ts","../src/NoyaStateContext.tsx","../src/noyaApp.ts","../src/hooks.ts","../src/components/ErrorOverlay.tsx","../src/inspector/useStateInspector.tsx","../../noya-utils/src/base64.ts","../../noya-utils/src/invert.ts","../../noya-utils/src/fileType.ts","../../noya-utils/src/memoize.ts","../../noya-utils/src/memoizeDeep.ts","../../../node_modules/uuid/dist/esm-node/rng.js","../../../node_modules/uuid/dist/esm-node/regex.js","../../../node_modules/uuid/dist/esm-node/validate.js","../../../node_modules/uuid/dist/esm-node/stringify.js","../../../node_modules/uuid/dist/esm-node/v4.js","../../noya-utils/src/uuid.ts","../src/inspector/StateInspector.tsx","../src/useObservable.ts","../src/inspector/ColoredDot.tsx","../src/inspector/inspectorTheme.ts","../src/inspector/sections/ActivityEventsSection.tsx","../src/inspector/StateInspectorButton.tsx","../src/inspector/StateInspectorDisclosureSection.tsx","../src/inspector/StateInspectorArrow.tsx","../src/inspector/StateInspectorRow.tsx","../src/inspector/sections/EventsSection.tsx","../src/inspector/ObjectRootLabel.tsx","../src/inspector/sections/HistorySection.tsx","../src/inspector/utils.ts","../src/inspector/sections/ServerScriptLogsSection.tsx","../src/inspector/serialization.ts","../src/inspector/zip/crc32.ts","../src/inspector/zip/struct.ts","../src/inspector/zip/TinyZip.ts","../src/inspector/StateInspectorTitleLabel.tsx","../src/inspector/StateInspectorToggleButton.tsx","../src/inspector/useLocalStorageState.tsx","../src/inspector/usePausedStream.ts","../src/singleton.tsx","../src/components/UserPointersOverlay.tsx","../src/WebSocketConnection.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.get = get;\nexports.ancestors = ancestors;\nexports.access = access;\nexports.accessPath = accessPath;\n/**\n * Returns a node by its `IndexPath`.\n *\n * The first node is implicitly included in the `IndexPath` (i.e. no need to pass a `0` first in every `IndexPath`).\n */\nfunction get(node, indexPath, options) {\n if (options.includeTraversalContext) {\n const accessed = _getPath(node, indexPath, options);\n return accessed[accessed.length - 1];\n }\n let path = indexPath.slice();\n while (path.length > 0) {\n let index = path.shift();\n const children = options.getChildren(node, path);\n const child = children[index];\n if (!child) {\n return undefined;\n }\n node = child;\n }\n return node;\n}\n/**\n * Returns an array of each node in an `IndexPath`, excluding the last node.\n *\n * The first node is implicitly included in the `IndexPath` (i.e. no need to pass a `0` first in every `IndexPath`).\n */\nfunction ancestors(node, indexPath, options) {\n return _getPath(node, indexPath, options).slice(0, -1);\n}\nfunction _getPath(node, indexPath, options) {\n let path = indexPath.slice();\n let result = [node];\n while (path.length > 0) {\n let index = path.shift();\n const context = options.includeTraversalContext ? makeTraversalContext(result) : undefined;\n const children = options.getChildren(node, path, context);\n const child = children[index];\n if (!child) {\n return result;\n }\n node = child;\n result.push(node);\n }\n return result;\n}\n/**\n * Returns a node by its `IndexPath`.\n *\n * The first node is implicitly included in the `IndexPath` (i.e. no need to pass a `0` first in every `IndexPath`).\n */\nfunction access(node, indexPath, options) {\n if (options.includeTraversalContext) {\n const accessed = accessPath(node, indexPath, options);\n return accessed[accessed.length - 1];\n }\n let path = indexPath.slice();\n while (path.length > 0) {\n let index = path.shift();\n node = options.getChildren(node, path)[index];\n }\n return node;\n}\n/**\n * Returns an array of each node in an `IndexPath`.\n *\n * The first node is implicitly included in the `IndexPath` (i.e. no need to pass a `0` first in every `IndexPath`).\n */\nfunction accessPath(node, indexPath, options) {\n let path = indexPath.slice();\n let result = [node];\n while (path.length > 0) {\n let index = path.shift();\n const context = options.includeTraversalContext ? makeTraversalContext(result) : undefined;\n node = options.getChildren(node, path, context)[index];\n result.push(node);\n }\n return result;\n}\nfunction makeTraversalContext(array) {\n return {\n getRoot: () => array[0],\n getParent: () => array[array.length - 2],\n getAncestors: () => array.slice(0, -1),\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.comparePathsByComponent = comparePathsByComponent;\nexports.sortPaths = sortPaths;\nfunction comparePathsByComponent(a, b) {\n for (let i = 0; i < Math.min(a.length, b.length); i++) {\n if (a[i] < b[i])\n return -1;\n if (a[i] > b[i])\n return 1;\n }\n // If all preceding components are equal, the shorter array comes first\n return a.length - b.length;\n}\nfunction sortPaths(indexPaths) {\n return [...indexPaths].sort(comparePathsByComponent);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ancestorPaths = ancestorPaths;\nconst sort_1 = require(\"./sort\");\n/**\n * This function cleans up the `indexPaths` array by\n *\n * 1. sorting the `indexPaths`\n * 2. removing any `indexPaths` that are descendants of other `indexPaths`\n * 3. removing any `indexPaths` that are duplicates\n */\nfunction ancestorPaths(paths, options) {\n var _a;\n const result = new Map();\n const compare = (_a = options === null || options === void 0 ? void 0 : options.compare) !== null && _a !== void 0 ? _a : sort_1.comparePathsByComponent;\n const sortedIndexPaths = paths.sort(compare);\n for (const indexPath of sortedIndexPaths) {\n const foundParent = indexPath.some((_, index) => {\n const parentKey = indexPath.slice(0, index).join();\n return result.has(parentKey);\n });\n if (foundParent)\n continue;\n result.set(indexPath.join(), indexPath);\n }\n return Array.from(result.values());\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.boxDiagram = boxDiagram;\nvar BoxDrawing;\n(function (BoxDrawing) {\n BoxDrawing[\"TopLeft\"] = \"\\u250C\";\n BoxDrawing[\"TopRight\"] = \"\\u2510\";\n BoxDrawing[\"BottomLeft\"] = \"\\u2514\";\n BoxDrawing[\"BottomRight\"] = \"\\u2518\";\n BoxDrawing[\"Horizontal\"] = \"\\u2500\";\n BoxDrawing[\"Vertical\"] = \"\\u2502\";\n BoxDrawing[\"BottomConnectorDown\"] = \"\\u252C\";\n BoxDrawing[\"BottomConnectorUp\"] = \"\\u2534\";\n BoxDrawing[\"TopConnectorUp\"] = \"\\u2534\";\n})(BoxDrawing || (BoxDrawing = {}));\nfunction wrapLabelInBox(label) {\n const lines = label.split('\\n');\n const length = Math.max(...lines.map((line) => line.length));\n const horizontalMargin = 1;\n const width = length + horizontalMargin * 2 + 2;\n const height = 2 + lines.length;\n const diagram = [\n [\n BoxDrawing.TopLeft,\n BoxDrawing.Horizontal.repeat(length + horizontalMargin * 2),\n BoxDrawing.TopRight,\n ],\n ...lines.map((line) => [\n BoxDrawing.Vertical,\n ' '.repeat(horizontalMargin),\n line + (line.length < length ? ' '.repeat(length - line.length) : ''),\n ' '.repeat(horizontalMargin),\n BoxDrawing.Vertical,\n ]),\n [\n BoxDrawing.BottomLeft,\n BoxDrawing.Horizontal.repeat(length + horizontalMargin * 2),\n BoxDrawing.BottomRight,\n ],\n ];\n return {\n width,\n height,\n contents: diagram.map((parts) => parts.join('')),\n };\n}\nfunction mergeBoxesHorizontal(boxes) {\n const horizontalMargin = 1;\n if (boxes.length === 0) {\n throw new Error(\"Can't merge empty array of boxes\");\n }\n return boxes.slice(1).reduce((result, box) => {\n const height = Math.max(result.height, box.height);\n const width = result.width + horizontalMargin + box.width;\n const contents = [];\n for (let i = 0; i < height; i++) {\n contents.push((result.contents[i] || ' '.repeat(result.width)) +\n ' '.repeat(horizontalMargin) +\n (box.contents[i] || ' '.repeat(box.width)));\n }\n return { height, width, contents: centerBlock(contents, width) };\n }, boxes[0]);\n}\nfunction mergeBoxesVertical(boxes) {\n const verticalMargin = 1;\n if (boxes.length === 0) {\n throw new Error(\"Can't merge empty array of boxes\");\n }\n const width = Math.max(...boxes.map((box) => box.width));\n return boxes.slice(1).reduce((result, box) => {\n const height = result.height + verticalMargin + box.height;\n const contents = [];\n for (let i = 0; i < height; i++) {\n if (i < result.height) {\n contents.push(result.contents[i]);\n }\n else if (i === result.height) {\n contents.push(' '.repeat(width));\n }\n else {\n contents.push(box.contents[i - result.height - 1]);\n }\n }\n return { height, width, contents: centerBlock(contents, width) };\n }, boxes[0]);\n}\nfunction nodeDiagram(node, indexPath, options) {\n const label = options.getLabel(node, indexPath);\n const box = wrapLabelInBox(label);\n const children = options.getChildren(node, indexPath);\n if (children.length === 0)\n return box;\n const childBoxes = children.map((child, index) => {\n const childBox = nodeDiagram(child, [...indexPath, index], options);\n // Draw top connector for each child\n childBox.contents[0] = insertSubstring(childBox.contents[0], centerIndex(childBox.contents[0].length), BoxDrawing.TopConnectorUp);\n return childBox;\n });\n const result = mergeBoxesVertical([box, mergeBoxesHorizontal(childBoxes)]);\n // Draw connectors\n const contents = result.contents;\n const mid = centerIndex(result.width);\n contents[box.height - 1] = insertSubstring(contents[box.height - 1], mid, BoxDrawing.BottomConnectorDown);\n let min = contents[box.height + 1].indexOf(BoxDrawing.TopConnectorUp);\n let max = contents[box.height + 1].lastIndexOf(BoxDrawing.TopConnectorUp);\n for (let i = min; i <= max; i++) {\n let character;\n if (i === mid) {\n character =\n childBoxes.length > 1\n ? BoxDrawing.BottomConnectorUp\n : BoxDrawing.Vertical;\n }\n else if (i === min) {\n character = BoxDrawing.TopLeft;\n }\n else if (i === max) {\n character = BoxDrawing.TopRight;\n }\n else {\n character = BoxDrawing.Horizontal;\n }\n result.contents[box.height] = insertSubstring(result.contents[box.height], i, character);\n }\n return result;\n}\nfunction boxDiagram(node, options) {\n return nodeDiagram(node, [], options).contents.join('\\n');\n}\nfunction centerIndex(width) {\n return Math.floor(width / 2);\n}\nfunction centerLine(line, width) {\n const remainder = width - line.length;\n if (remainder <= 0)\n return line;\n const prefixLength = centerIndex(remainder);\n const suffixLength = centerIndex(remainder);\n const result = ' '.repeat(prefixLength) + line + ' '.repeat(suffixLength);\n return prefixLength + suffixLength + result.length < width\n ? result + ' '\n : result;\n}\nfunction centerBlock(lines, width) {\n return lines.map((line) => centerLine(line, width));\n}\nfunction insertSubstring(string, index, substring) {\n if (index > string.length - 1)\n return string;\n return string.substring(0, index) + substring + string.substring(index + 1);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.directoryDiagram = directoryDiagram;\nexports.isMultiline = isMultiline;\nexports.prefixBlock = prefixBlock;\nvar LinePrefix;\n(function (LinePrefix) {\n LinePrefix[\"Child\"] = \"\\u251C\\u2500\\u2500 \";\n LinePrefix[\"LastChild\"] = \"\\u2514\\u2500\\u2500 \";\n LinePrefix[\"NestedChild\"] = \"\\u2502 \";\n LinePrefix[\"LastNestedChild\"] = \" \";\n})(LinePrefix || (LinePrefix = {}));\nfunction nodeDiagram(node, indexPath, options) {\n const label = options.getLabel(node, indexPath);\n const depth = indexPath.length;\n let rootLine = { label, depth, prefix: '', multilinePrefix: '' };\n const children = options.getChildren(node, indexPath);\n if (children.length === 0)\n return [rootLine];\n // Special-case nodes with a single child, collapsing their labels to a single line\n if (options.flattenSingleChildNodes &&\n children.length === 1 &&\n !isMultiline(label)) {\n const [line] = nodeDiagram(children[0], [...indexPath, 0], options);\n const hideRoot = indexPath.length === 0 && label === '';\n rootLine.label = hideRoot\n ? `/ ${line.label}`\n : `${rootLine.label} / ${line.label}`;\n return [rootLine];\n }\n const nestedLines = children.flatMap((file, index, array) => {\n const childIsLast = index === array.length - 1;\n const childLines = nodeDiagram(file, [...indexPath, index], options);\n const childPrefix = childIsLast ? LinePrefix.LastChild : LinePrefix.Child;\n const childMultilinePrefix = childIsLast\n ? LinePrefix.LastNestedChild\n : LinePrefix.NestedChild;\n childLines.forEach((line) => {\n if (line.depth === depth + 1) {\n line.prefix = childPrefix + line.prefix;\n line.multilinePrefix = childMultilinePrefix + line.multilinePrefix;\n }\n else if (childIsLast) {\n line.prefix = LinePrefix.LastNestedChild + line.prefix;\n line.multilinePrefix = LinePrefix.LastNestedChild + line.multilinePrefix;\n }\n else {\n line.prefix = LinePrefix.NestedChild + line.prefix;\n line.multilinePrefix = LinePrefix.NestedChild + line.multilinePrefix;\n }\n });\n return childLines;\n });\n return [rootLine, ...nestedLines];\n}\nfunction directoryDiagram(node, options) {\n const lines = nodeDiagram(node, [], options);\n const strings = lines.map((line) => prefixBlock(line.label, line.prefix, line.multilinePrefix));\n return strings.join('\\n');\n}\nfunction isMultiline(line) {\n return line.includes('\\n');\n}\nfunction prefixBlock(block, prefix, multilinePrefix) {\n if (!isMultiline(block))\n return prefix + block;\n return block\n .split('\\n')\n .map((line, index) => (index === 0 ? prefix : multilinePrefix) + line)\n .join('\\n');\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diagram = diagram;\nconst boxDiagram_1 = require(\"./diagram/boxDiagram\");\nconst directoryDiagram_1 = require(\"./diagram/directoryDiagram\");\n/**\n * Generate a diagram of the tree, as a string.\n */\nfunction diagram(node, options) {\n if (options.type === 'box') {\n return (0, boxDiagram_1.boxDiagram)(node, options);\n }\n return (0, directoryDiagram_1.directoryDiagram)(node, options);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STOP = exports.SKIP = void 0;\nexports.visit = visit;\nexports.SKIP = 'skip';\nexports.STOP = 'stop';\n/**\n * Visit each node in the tree, calling an optional `onEnter` and `onLeave` for each.\n *\n * From `onEnter`:\n *\n * - return nothing or `undefined` to continue\n * - return `\"skip\"` to skip the children of that node and the subsequent `onLeave`\n * - return `\"stop\"` to end traversal\n *\n * From `onLeave`:\n *\n * - return nothing or `undefined` to continue\n * - return `\"stop\"` to end traversal\n */\nfunction visit(node, options) {\n const { onEnter, onLeave, getChildren: originalGetChildren, onDetectCycle, getIdentifier, direction = 'forward', } = options;\n const getChildren = (node, indexPath, context) => {\n const children = originalGetChildren(node, indexPath, context);\n return direction === 'forward' ? children : children.slice().reverse();\n };\n let indexPath = [];\n let stack = [{ node }];\n const visited = onDetectCycle ? new Set() : undefined;\n const context = options.includeTraversalContext\n ? {\n getRoot() {\n return node;\n },\n getParent() {\n var _a;\n return (_a = stack[stack.length - 2]) === null || _a === void 0 ? void 0 : _a.node;\n },\n getAncestors() {\n return stack.slice(0, -1).map((wrapper) => wrapper.node);\n },\n }\n : undefined;\n const getIndexPath = options.reuseIndexPath\n ? () => indexPath\n : () => indexPath.slice();\n while (stack.length > 0) {\n let wrapper = stack[stack.length - 1];\n // Visit the wrapped node\n if (wrapper.state === undefined) {\n // Add cycle detection before visiting node\n if (visited) {\n const id = getIdentifier ? getIdentifier(wrapper.node) : wrapper.node;\n if (visited.has(id)) {\n const action = typeof onDetectCycle === 'function'\n ? onDetectCycle(wrapper.node, getIndexPath(), context)\n : onDetectCycle;\n if (action === 'error') {\n throw new Error('Cycle detected in tree');\n }\n else {\n // action === 'skip'\n wrapper.state = -1; // Mark as skipped\n continue;\n }\n }\n visited.add(id);\n }\n const enterResult = onEnter === null || onEnter === void 0 ? void 0 : onEnter(wrapper.node, getIndexPath());\n if (enterResult === exports.STOP)\n return;\n wrapper.state = enterResult === exports.SKIP ? -1 : 0;\n }\n const children = wrapper.children || getChildren(wrapper.node, getIndexPath(), context);\n if (!wrapper.children) {\n wrapper.children = children;\n }\n // If the node wasn't skipped\n if (wrapper.state !== -1) {\n // Visit the next child\n if (wrapper.state < children.length) {\n let currentIndex = wrapper.state;\n indexPath.push(direction === 'forward'\n ? currentIndex\n : children.length - currentIndex - 1);\n stack.push({ node: children[currentIndex] });\n wrapper.state = currentIndex + 1;\n continue;\n }\n const leaveResult = onLeave === null || onLeave === void 0 ? void 0 : onLeave(wrapper.node, getIndexPath());\n if (leaveResult === exports.STOP)\n return;\n }\n // Remove node from visited set when leaving\n if (visited) {\n const id = getIdentifier ? getIdentifier(wrapper.node) : wrapper.node;\n visited.delete(id);\n }\n indexPath.pop();\n stack.pop();\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.entries = entries;\nconst visit_1 = require(\"./visit\");\nfunction entries(node, options) {\n let result = [];\n (0, visit_1.visit)(node, Object.assign(Object.assign({}, options), { onEnter: (item, indexPath) => {\n result.push([indexPath, item]);\n } }));\n return result;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.find = find;\nexports.findAll = findAll;\nexports.findPath = findPath;\nexports.findAllPaths = findAllPaths;\nconst visit_1 = require(\"./visit\");\nfunction find(node, options) {\n let found;\n (0, visit_1.visit)(node, Object.assign(Object.assign({}, options), { onEnter: (child, indexPath) => {\n if (options.predicate(child, indexPath)) {\n found = child;\n return visit_1.STOP;\n }\n } }));\n return found;\n}\nfunction findAll(node, options) {\n let found = [];\n (0, visit_1.visit)(node, {\n onEnter: (child, indexPath) => {\n if (options.predicate(child, indexPath)) {\n found.push(child);\n }\n },\n getChildren: options.getChildren,\n });\n return found;\n}\n/**\n * Find the `IndexPath` of a node matching a predicate function.\n */\nfunction findPath(node, options) {\n let found;\n (0, visit_1.visit)(node, {\n onEnter: (child, indexPath) => {\n if (options.predicate(child, indexPath)) {\n // Copy the indexPath, since indexPath may be mutated\n found = [...indexPath];\n return visit_1.STOP;\n }\n },\n getChildren: options.getChildren,\n });\n return found;\n}\n/**\n * Find the `IndexPath` of all nodes matching a predicate function.\n */\nfunction findAllPaths(node, options) {\n let found = [];\n (0, visit_1.visit)(node, {\n onEnter: (child, indexPath) => {\n if (options.predicate(child, indexPath)) {\n // Copy the indexPath, since indexPath may be mutated\n found.push([...indexPath]);\n }\n },\n getChildren: options.getChildren,\n });\n return found;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reduce = reduce;\nconst visit_1 = require(\"./visit\");\nfunction reduce(node, options) {\n let result = options.initialResult;\n (0, visit_1.visit)(node, Object.assign(Object.assign({}, options), { onEnter: (child, indexPath) => {\n result = options.nextResult(result, child, indexPath);\n } }));\n return result;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flat = flat;\nconst reduce_1 = require(\"./reduce\");\n/**\n * Returns an array containing the root node and all of its descendants.\n *\n * This is analogous to `Array.prototype.flat` for flattening arrays.\n */\nfunction flat(node, options) {\n return (0, reduce_1.reduce)(node, Object.assign(Object.assign({}, options), { initialResult: [], nextResult: (result, child) => {\n result.push(child);\n return result;\n } }));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.map = map;\nexports.flatMap = flatMap;\nconst visit_1 = require(\"./visit\");\n/**\n * Map each node into a new node.\n *\n * The shape of the tree remains the same. You can omit nodes from the tree by\n * filtering them out of the `transformedChildren` argument. The root can't be omitted.\n */\nfunction map(node, options) {\n return flatMap(node, Object.assign(Object.assign({}, options), { transform: (node, transformedChildren, indexPath) => [\n options.transform(node, transformedChildren, indexPath),\n ] }));\n}\n/**\n * Map each node into an array of new nodes.\n *\n * You can omit nodes from the tree by returning an empty array from the `transform` function.\n * The first element of the returned top-level array will be the new root.\n */\nfunction flatMap(node, options) {\n const childrenMap = {};\n (0, visit_1.visit)(node, Object.assign(Object.assign({}, options), { onLeave: (child, indexPath) => {\n var _a, _b;\n // Add a 0 so we can always slice off the last element to get a unique parent key\n const keyIndexPath = [0, ...indexPath];\n const key = keyIndexPath.join();\n const transformed = options.transform(child, (_a = childrenMap[key]) !== null && _a !== void 0 ? _a : [], indexPath);\n const parentKey = keyIndexPath.slice(0, -1).join();\n const parentChildren = (_b = childrenMap[parentKey]) !== null && _b !== void 0 ? _b : [];\n parentChildren.push(...transformed);\n childrenMap[parentKey] = parentChildren;\n } }));\n return childrenMap[''][0];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformPath = transformPath;\nconst sort_1 = require(\"./sort\");\nfunction commonAncestor(path, otherPath) {\n const length = Math.min(path.length, otherPath.length);\n for (let i = 0; i < length; i++) {\n if (path[i] !== otherPath[i]) {\n return path.slice(0, i);\n }\n }\n return path.slice(0, length);\n}\nfunction transformPath(path, operation, otherPath, count = 1) {\n if (otherPath.length > path.length ||\n (0, sort_1.comparePathsByComponent)(otherPath, path) > 0) {\n return path;\n }\n if (otherPath.length === 0 && operation === 'remove') {\n return undefined;\n }\n const common = commonAncestor(path, otherPath);\n const adjustmentIndex = common.length === path.length || common.length === otherPath.length\n ? common.length - 1\n : common.length;\n const pathValue = path[adjustmentIndex];\n const otherPathValue = otherPath[adjustmentIndex];\n if (operation === 'insert' && otherPathValue <= pathValue) {\n const newPath = [...path];\n newPath[adjustmentIndex] += count;\n return newPath;\n }\n else if (operation === 'remove') {\n if (otherPathValue === pathValue) {\n return undefined;\n }\n else if (otherPathValue < pathValue) {\n const newPath = [...path];\n newPath[adjustmentIndex] -= count;\n return newPath;\n }\n }\n return path;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.insertOperation = insertOperation;\nexports.removeOperation = removeOperation;\nexports.replaceOperation = replaceOperation;\nexports.getInsertionOperations = getInsertionOperations;\nexports.getRemovalOperations = getRemovalOperations;\nexports.getReplaceOperations = getReplaceOperations;\nexports.applyOperations = applyOperations;\nexports.arraySplice = arraySplice;\nexports.transformPathsByOperations = transformPathsByOperations;\nconst ancestors_1 = require(\"./ancestors\");\nconst map_1 = require(\"./map\");\nconst transformPath_1 = require(\"./transformPath\");\nfunction insertOperation(index, nodes) {\n return {\n type: 'insert',\n index,\n nodes,\n };\n}\nfunction removeOperation(indexes) {\n return {\n type: 'remove',\n indexes,\n };\n}\nfunction replaceOperation() {\n return {\n type: 'replace',\n };\n}\nfunction splitIndexPath(indexPath) {\n return [indexPath.slice(0, -1), indexPath[indexPath.length - 1]];\n}\nfunction getInsertionOperations(indexPath, nodes, operations = new Map()) {\n var _a;\n const [parentIndexPath, index] = splitIndexPath(indexPath);\n // Mark all parents for replacing\n for (let i = parentIndexPath.length - 1; i >= 0; i--) {\n const parentKey = parentIndexPath.slice(0, i).join();\n switch ((_a = operations.get(parentKey)) === null || _a === void 0 ? void 0 : _a.type) {\n case 'remove':\n continue;\n }\n operations.set(parentKey, replaceOperation());\n }\n const operation = operations.get(parentIndexPath.join());\n // Mark insertion node\n switch (operation === null || operation === void 0 ? void 0 : operation.type) {\n case 'remove':\n operations.set(parentIndexPath.join(), {\n type: 'removeThenInsert',\n removeIndexes: operation.indexes,\n insertIndex: index,\n insertNodes: nodes,\n });\n break;\n default:\n operations.set(parentIndexPath.join(), insertOperation(index, nodes));\n }\n return operations;\n}\nfunction getRemovalOperations(indexPaths) {\n var _a, _b;\n const _ancestorIndexPaths = (0, ancestors_1.ancestorPaths)(indexPaths);\n const indexesToRemove = new Map();\n for (const indexPath of _ancestorIndexPaths) {\n const parentKey = indexPath.slice(0, -1).join();\n const value = (_a = indexesToRemove.get(parentKey)) !== null && _a !== void 0 ? _a : [];\n value.push(indexPath[indexPath.length - 1]);\n indexesToRemove.set(parentKey, value);\n }\n const operations = new Map();\n // Mark all parents for replacing\n for (const indexPath of _ancestorIndexPaths) {\n for (let i = indexPath.length - 1; i >= 0; i--) {\n const parentKey = indexPath.slice(0, i).join();\n operations.set(parentKey, replaceOperation());\n }\n }\n // Mark all nodes for removal\n for (const indexPath of _ancestorIndexPaths) {\n const parentKey = indexPath.slice(0, -1).join();\n operations.set(parentKey, removeOperation((_b = indexesToRemove.get(parentKey)) !== null && _b !== void 0 ? _b : []));\n }\n return operations;\n}\nfunction getReplaceOperations(indexPath, node) {\n const operations = new Map();\n const [parentIndexPath, index] = splitIndexPath(indexPath);\n // Mark all parents for replacing\n for (let i = parentIndexPath.length - 1; i >= 0; i--) {\n const parentKey = parentIndexPath.slice(0, i).join();\n operations.set(parentKey, replaceOperation());\n }\n operations.set(parentIndexPath.join(), {\n type: 'removeThenInsert',\n removeIndexes: [index],\n insertIndex: index,\n insertNodes: [node],\n });\n return operations;\n}\nfunction adjustInsertIndex(index, removeIndexes) {\n return removeIndexes.reduce((index, removedIndex) => (removedIndex < index ? index - 1 : index), index);\n}\nfunction applyOperations(node, operations, options) {\n return (0, map_1.map)(node, Object.assign(Object.assign({}, options), { \n // Avoid calling `getChildren` for every node in the tree.\n // Return [] if we're just going to return the original node anyway.\n getChildren: (node, indexPath) => {\n const key = indexPath.join();\n const operation = operations.get(key);\n switch (operation === null || operation === void 0 ? void 0 : operation.type) {\n case 'replace':\n case 'remove':\n case 'removeThenInsert':\n case 'insert':\n return options.getChildren(node, indexPath);\n default:\n return [];\n }\n }, transform: (node, children, indexPath) => {\n const key = indexPath.join();\n const operation = operations.get(key);\n switch (operation === null || operation === void 0 ? void 0 : operation.type) {\n case 'remove':\n return options.create(node, children.filter((_, index) => !operation.indexes.includes(index)), indexPath);\n case 'removeThenInsert':\n const updatedChildren = children.filter((_, index) => !operation.removeIndexes.includes(index));\n const adjustedIndex = adjustInsertIndex(operation.insertIndex, operation.removeIndexes);\n return options.create(node, arraySplice(updatedChildren, adjustedIndex, 0, ...operation.insertNodes), indexPath);\n case 'insert':\n return options.create(node, arraySplice(children, operation.index, 0, ...operation.nodes), indexPath);\n case 'replace':\n return options.create(node, children, indexPath);\n default:\n return node;\n }\n } }));\n}\nfunction arraySplice(array, start, deleteCount, ...items) {\n return [\n ...array.slice(0, start),\n ...items,\n ...array.slice(start + deleteCount),\n ];\n}\nfunction transformPathsByOperations(paths, operations) {\n let transformedPaths = paths;\n for (const [parentKey, operation] of operations.entries()) {\n const parentPath = parentKey ? parentKey.split(',').map(Number) : [];\n transformedPaths = transformByOperation(transformedPaths, parentPath, operation);\n }\n return transformedPaths;\n}\nfunction transformByOperation(transformedPaths, parentPath, operation) {\n switch (operation.type) {\n case 'insert': {\n const otherPath = parentPath.concat(operation.index);\n return transformedPaths.map((path) => path\n ? (0, transformPath_1.transformPath)(path, 'insert', otherPath, operation.nodes.length)\n : undefined);\n }\n case 'remove': {\n const otherPaths = [...operation.indexes]\n .reverse()\n .map((index) => parentPath.concat(index));\n return transformedPaths.map((path) => {\n for (const otherPath of otherPaths) {\n path = path ? (0, transformPath_1.transformPath)(path, 'remove', otherPath) : undefined;\n }\n return path;\n });\n }\n case 'removeThenInsert': {\n const result = transformByOperation(transformedPaths, parentPath, {\n type: 'remove',\n indexes: operation.removeIndexes,\n });\n const insertIndex = adjustInsertIndex(operation.insertIndex, operation.removeIndexes);\n return transformByOperation(result, parentPath, {\n type: 'insert',\n index: insertIndex,\n nodes: operation.insertNodes,\n });\n }\n case 'replace': {\n return transformedPaths;\n }\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.insert = insert;\nexports.insertWithPathTracking = insertWithPathTracking;\nconst operation_1 = require(\"./operation\");\n/**\n * Insert nodes at a given `IndexPath`.\n */\nfunction insert(node, options) {\n return _insertWithPathTracking(node, options).node;\n}\n/**\n * Insert nodes at a given `IndexPath`.\n */\nfunction insertWithPathTracking(node, options) {\n return _insertWithPathTracking(node, options);\n}\nfunction _insertWithPathTracking(node, options) {\n const { nodes, path: at, track } = options;\n if (at.length === 0) {\n throw new Error(`Can't insert nodes at the root`);\n }\n const state = (0, operation_1.getInsertionOperations)(at, nodes);\n const transformedPaths = track ? (0, operation_1.transformPathsByOperations)(track, state) : [];\n return {\n node: (0, operation_1.applyOperations)(node, state, options),\n paths: transformedPaths,\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.move = move;\nconst access_1 = require(\"./access\");\nconst ancestors_1 = require(\"./ancestors\");\nconst operation_1 = require(\"./operation\");\nfunction move(node, options) {\n if (options.paths.length === 0)\n return node;\n for (const indexPath of options.paths) {\n if (indexPath.length === 0) {\n throw new Error(`Can't move the root node`);\n }\n }\n if (options.to.length === 0) {\n throw new Error(`Can't move nodes to the root`);\n }\n const _ancestorIndexPaths = (0, ancestors_1.ancestorPaths)(options.paths);\n const nodesToInsert = _ancestorIndexPaths.map((indexPath) => (0, access_1.access)(node, indexPath, options));\n const operations = (0, operation_1.getInsertionOperations)(options.to, nodesToInsert, (0, operation_1.getRemovalOperations)(_ancestorIndexPaths));\n return (0, operation_1.applyOperations)(node, operations, options);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.remove = remove;\nexports.removeWithPathTracking = removeWithPathTracking;\nconst operation_1 = require(\"./operation\");\n/**\n * Remove nodes at the given `IndexPath`s.\n */\nfunction remove(node, options) {\n return _removeWithPathTracking(node, options).node;\n}\n/**\n * Remove nodes at the given `IndexPath`s.\n */\nfunction removeWithPathTracking(node, options) {\n return _removeWithPathTracking(node, options);\n}\nfunction _removeWithPathTracking(node, options) {\n const { paths, track } = options;\n const operations = (0, operation_1.getRemovalOperations)(paths);\n const transformedPaths = track\n ? (0, operation_1.transformPathsByOperations)(track, operations)\n : [];\n return {\n node: (0, operation_1.applyOperations)(node, operations, options),\n paths: transformedPaths,\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.replace = replace;\nconst operation_1 = require(\"./operation\");\n/**\n * Replace the node at the given `IndexPath` with another.\n */\nfunction replace(node, options) {\n if (options.path.length === 0)\n return options.node;\n const operations = (0, operation_1.getReplaceOperations)(options.path, options.node);\n return (0, operation_1.applyOperations)(node, operations, options);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splice = splice;\nexports.spliceWithPathTracking = spliceWithPathTracking;\nconst operation_1 = require(\"./operation\");\nfunction splice(node, options) {\n return _spliceWithPathTracking(node, options).node;\n}\nfunction spliceWithPathTracking(node, options) {\n return _spliceWithPathTracking(node, options);\n}\nfunction _spliceWithPathTracking(node, options) {\n const { path, deleteCount = 0, nodes, track } = options;\n if (path.length === 0) {\n throw new Error(`Can't splice at the root`);\n }\n const pathsToRemove = getPathsToRemove(path, deleteCount);\n const operations = (0, operation_1.getInsertionOperations)(path, nodes, (0, operation_1.getRemovalOperations)(pathsToRemove));\n const transformedPaths = track\n ? (0, operation_1.transformPathsByOperations)(track, operations)\n : [];\n return {\n node: (0, operation_1.applyOperations)(node, operations, options),\n paths: transformedPaths,\n };\n}\nfunction getPathsToRemove(path, deleteCount) {\n let pathsToRemove = [];\n let parentPath = path.slice(0, -1);\n let index = path[path.length - 1];\n for (let i = 0; i < deleteCount; i++) {\n pathsToRemove.push(parentPath.concat(index + i));\n }\n return pathsToRemove;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defineTree = defineTree;\nconst access_1 = require(\"./access\");\nconst diagram_1 = require(\"./diagram\");\nconst entries_1 = require(\"./entries\");\nconst find_1 = require(\"./find\");\nconst flat_1 = require(\"./flat\");\nconst insert_1 = require(\"./insert\");\nconst map_1 = require(\"./map\");\nconst move_1 = require(\"./move\");\nconst reduce_1 = require(\"./reduce\");\nconst remove_1 = require(\"./remove\");\nconst replace_1 = require(\"./replace\");\nconst splice_1 = require(\"./splice\");\nconst visit_1 = require(\"./visit\");\nclass Tree {\n constructor(getChildrenOrBaseOptions, appliedOptions) {\n this.appliedOptions = appliedOptions;\n /**\n * Returns the node's children.\n *\n * This is the same as the `getChildren` option passed to `defineTree`, included here for convenience.\n */\n this.getChildren = (node, indexPath, context) => {\n return this._getChildren(node, indexPath, context);\n };\n this.mergeOptions = (options) => (Object.assign(Object.assign(Object.assign({}, this.baseOptions), this.appliedOptions), options));\n this.withOptions = (newOptions) => new Tree(this.baseOptions, Object.assign(Object.assign({}, this.appliedOptions), newOptions));\n /**\n * Returns a node by its `IndexPath`.\n *\n * The first node is implicitly included in the `IndexPath` (i.e. no need to pass a `0` first in every `IndexPath`).\n */\n this.access = (node, indexPath) => (0, access_1.access)(node, indexPath, this.mergeOptions({}));\n /**\n * Returns an array of each node in an `IndexPath`.\n *\n * The first node is implicitly included in the `IndexPath` (i.e. no need to pass a `0` first in every `IndexPath`).\n */\n this.accessPath = (node, indexPath) => (0, access_1.accessPath)(node, indexPath, this.mergeOptions({}));\n /**\n * Returns a node by its `IndexPath`.\n *\n * The first node is implicitly included in the `IndexPath` (i.e. no need to pass a `0` first in every `IndexPath`).\n */\n this.get = (node, indexPath) => (0, access_1.get)(node, indexPath, this.mergeOptions({}));\n /**\n * Returns the ancestors of a node.\n */\n this.ancestors = (node, indexPath) => (0, access_1.ancestors)(node, indexPath, this.mergeOptions({}));\n /**\n * Generate a diagram of the tree, as a string.\n */\n this.diagram = (node, options) => typeof options === 'function'\n ? (0, diagram_1.diagram)(node, this.mergeOptions({ getLabel: options }))\n : (0, diagram_1.diagram)(node, this.mergeOptions(options));\n this.find = (node, predicateOrOptions) => typeof predicateOrOptions === 'function'\n ? (0, find_1.find)(node, this.mergeOptions({ predicate: predicateOrOptions }))\n : (0, find_1.find)(node, this.mergeOptions(Object.assign({}, predicateOrOptions)));\n this.findAll = (node, predicateOrOptions) => typeof predicateOrOptions === 'function'\n ? (0, find_1.findAll)(node, this.mergeOptions({ predicate: predicateOrOptions }))\n : (0, find_1.findAll)(node, this.mergeOptions(Object.assign({}, predicateOrOptions)));\n this.findPath = (node, predicateOrOptions) => typeof predicateOrOptions === 'function'\n ? (0, find_1.findPath)(node, this.mergeOptions({ predicate: predicateOrOptions }))\n : (0, find_1.findPath)(node, this.mergeOptions(Object.assign({}, predicateOrOptions)));\n this.findAllPaths = (node, predicateOrOptions) => typeof predicateOrOptions === 'function'\n ? (0, find_1.findAllPaths)(node, this.mergeOptions({ predicate: predicateOrOptions }))\n : (0, find_1.findAllPaths)(node, this.mergeOptions(Object.assign({}, predicateOrOptions)));\n /**\n * Returns an array of every [IndexPath, Node] pair in the tree.\n */\n this.entries = (node) => (0, entries_1.entries)(node, this.mergeOptions({}));\n /**\n * Returns an array containing the root node and all of its descendants.\n *\n * This is analogous to `Array.prototype.flat` for flattening arrays.\n */\n this.flat = (node) => (0, flat_1.flat)(node, this.mergeOptions({}));\n this.reduce = (node, nextResult, initialResult) => (0, reduce_1.reduce)(node, this.mergeOptions({ nextResult, initialResult }));\n this.map = (node, transform) => (0, map_1.map)(node, this.mergeOptions({ transform }));\n this.flatMap = (node, transform) => (0, map_1.flatMap)(node, this.mergeOptions({ transform }));\n this.visit = (node, onEnterOrOptions) => typeof onEnterOrOptions === 'function'\n ? (0, visit_1.visit)(node, this.mergeOptions({ onEnter: onEnterOrOptions }))\n : (0, visit_1.visit)(node, this.mergeOptions(Object.assign({}, onEnterOrOptions)));\n // --- Mutations ---\n /**\n * Insert nodes at a given `IndexPath`.\n */\n this.insert = (node, options) => (0, insert_1.insert)(node, this.mergeOptions(options));\n /**\n * Insert nodes at a given `IndexPath`.\n */\n this.insertWithPathTracking = (node, options) => (0, insert_1.insertWithPathTracking)(node, this.mergeOptions(options));\n /**\n * Remove nodes at the given `IndexPath`s.\n */\n this.remove = (node, options) => (0, remove_1.remove)(node, this.mergeOptions(options));\n /**\n * Remove nodes at the given `IndexPath`s.\n */\n this.removeWithPathTracking = (node, options) => (0, remove_1.removeWithPathTracking)(node, this.mergeOptions(options));\n /**\n * Move nodes from one `IndexPath` to another.\n */\n this.move = (node, options) => (0, move_1.move)(node, this.mergeOptions(options));\n /**\n * Replace nodes at the given `IndexPath`s with another node.\n */\n this.splice = (node, options) => (0, splice_1.splice)(node, this.mergeOptions(options));\n /**\n * Replace nodes at the given `IndexPath`s with another node.\n */\n this.spliceWithPathTracking = (node, options) => (0, splice_1.spliceWithPathTracking)(node, this.mergeOptions(options));\n /**\n * Replace the node at the given `IndexPath` with another\n */\n this.replace = (node, options) => (0, replace_1.replace)(node, this.mergeOptions(options));\n this.baseOptions =\n typeof getChildrenOrBaseOptions === 'function'\n ? { getChildren: getChildrenOrBaseOptions }\n : getChildrenOrBaseOptions;\n this._getChildren = this.baseOptions.getChildren;\n }\n}\nfunction defineTree(getChildren) {\n return new Tree(getChildren, {});\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withOptions = void 0;\nconst defineTree_1 = require(\"./defineTree\");\n/**\n * Return every tree utility function with options partially applied.\n *\n * @deprecated Use `defineTree` instead\n */\nexports.withOptions = defineTree_1.defineTree;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./access\"), exports);\n__exportStar(require(\"./ancestors\"), exports);\n__exportStar(require(\"./defineTree\"), exports);\n__exportStar(require(\"./diagram\"), exports);\n__exportStar(require(\"./entries\"), exports);\n__exportStar(require(\"./find\"), exports);\n__exportStar(require(\"./flat\"), exports);\n__exportStar(require(\"./indexPath\"), exports);\n__exportStar(require(\"./insert\"), exports);\n__exportStar(require(\"./map\"), exports);\n__exportStar(require(\"./move\"), exports);\n__exportStar(require(\"./options\"), exports);\n__exportStar(require(\"./reduce\"), exports);\n__exportStar(require(\"./remove\"), exports);\n__exportStar(require(\"./replace\"), exports);\n__exportStar(require(\"./sort\"), exports);\n__exportStar(require(\"./splice\"), exports);\n__exportStar(require(\"./transformPath\"), exports);\n__exportStar(require(\"./visit\"), exports);\n__exportStar(require(\"./withOptions\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Nodes = void 0;\nfunction createFile(data, metadata) {\n return { type: 'file', data, metadata };\n}\nfunction createDirectory(children = {}, metadata) {\n return { type: 'directory', children, metadata };\n}\nfunction isFile(node) {\n return node.type === 'file';\n}\nfunction isDirectory(node) {\n return node.type === 'directory';\n}\nfunction getMetadata(node) {\n return node.metadata;\n}\nfunction readDirectory(directory) {\n return Object.keys(directory.children);\n}\nfunction getChild(directory, name) {\n return directory.children[name];\n}\nfunction hasChild(directory, name) {\n return name in directory.children;\n}\nexports.Nodes = {\n createDirectory,\n createFile,\n getChild,\n getMetadata,\n hasChild,\n isDirectory,\n isFile,\n readDirectory,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dirname = exports.basename = exports.extname = exports.join = exports.normalize = exports.sep = void 0;\nexports.sep = '/';\nfunction preserveLeadingAndTrailingSlash(original, updated) {\n if (original.startsWith('/')) {\n updated = '/' + updated;\n }\n if (updated[updated.length - 1] !== '/' && original.endsWith('/')) {\n updated = updated + '/';\n }\n return updated;\n}\nfunction normalize(filename) {\n const components = filename.split(exports.sep).filter((component) => !!component);\n let i = 0;\n let length = components.length - 1;\n while (i < length) {\n if (components[i] === '.') {\n components.splice(i, 1);\n length--;\n }\n else if (components[i] === '..' && i !== 0) {\n components.splice(i - 1, 2);\n length -= 2;\n i -= 1;\n }\n else if (components[i] === '' && components[i + 1] === '') {\n // Consecutive \"/\"\n components.splice(i, 1);\n length--;\n }\n else {\n i++;\n }\n }\n return preserveLeadingAndTrailingSlash(filename, components.join(exports.sep));\n}\nexports.normalize = normalize;\nfunction join(...components) {\n let result = normalize(components.join(exports.sep));\n if (result === '') {\n result = '.';\n }\n return result;\n}\nexports.join = join;\nfunction extname(filename) {\n const index = filename.lastIndexOf('.');\n return index !== -1 ? filename.slice(index) : filename;\n}\nexports.extname = extname;\nfunction basename(filename, extname) {\n if (extname && filename.endsWith(extname)) {\n filename = filename.slice(0, -extname.length);\n }\n let sepIndex = filename.lastIndexOf(exports.sep);\n // If the seperator index is the last character, omit it\n if (sepIndex === filename.length - 1) {\n filename = filename.slice(0, -1);\n return filename.length > 1 ? basename(filename) : filename;\n }\n return filename.slice(sepIndex + 1);\n}\nexports.basename = basename;\nfunction dirname(filename) {\n let base = basename(filename);\n let result = filename.slice(0, -(base.length + 1));\n if (result === '') {\n if (filename.startsWith(exports.sep)) {\n result = exports.sep;\n }\n else {\n result = '.';\n }\n }\n return result;\n}\nexports.dirname = dirname;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Entries = void 0;\nconst node_1 = require(\"./node\");\nconst path_1 = require(\"./path\");\nfunction getEntries(entry) {\n const [pathname, node] = entry;\n return node_1.Nodes.isDirectory(node)\n ? Object.entries(node.children).map(([key, value]) => [\n (0, path_1.join)(pathname, key),\n value,\n ])\n : [];\n}\nfunction createEntry(pathname, node) {\n return [pathname, node];\n}\nexports.Entries = {\n createEntry,\n getEntries,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getNewAndParentName = exports.normalizePathLikeInternal = exports.getPathComponents = void 0;\nconst path_1 = require(\"../path\");\nfunction getPathComponents(filepath) {\n return getPathComponentsNormalized((0, path_1.normalize)(filepath));\n function getPathComponentsNormalized(filepath) {\n if (filepath.startsWith('..')) {\n throw new Error(`Invalid path ${filepath}, can't go up past root.`);\n }\n if (filepath.startsWith('.') || filepath.startsWith('/')) {\n return getPathComponentsNormalized(filepath.slice(1));\n }\n if (filepath === '')\n return [];\n return filepath.split(path_1.sep).filter((component) => !!component);\n }\n}\nexports.getPathComponents = getPathComponents;\nfunction normalizePathLikeInternal(pathlike) {\n return typeof pathlike === 'string' ? getPathComponents(pathlike) : pathlike;\n}\nexports.normalizePathLikeInternal = normalizePathLikeInternal;\nfunction getNewAndParentName(pathlike) {\n const parentName = typeof pathlike === 'string' ? (0, path_1.dirname)(pathlike) : pathlike.slice(0, -1);\n const newName = typeof pathlike === 'string'\n ? (0, path_1.basename)(pathlike)\n : pathlike[pathlike.length - 1];\n return { parentName, newName };\n}\nexports.getNewAndParentName = getNewAndParentName;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMetadata = exports.readDirectory = exports.readFile = exports.getNode = exports.getNodeInternal = void 0;\nconst node_1 = require(\"../node\");\nconst path_1 = require(\"../path\");\nconst paths_1 = require(\"./paths\");\nfunction getNodeInternal(root, pathlike, options) {\n const components = (0, paths_1.normalizePathLikeInternal)(pathlike);\n let i = 0;\n let current = root;\n while (i < components.length) {\n let component = components[i];\n if (current.type !== 'directory') {\n throw new Error(`File ${(0, path_1.join)(...components.slice(0, i))} is not a directory`);\n }\n let node = node_1.Nodes.getChild(current, component);\n if (!node) {\n // Assumes we're in a writable draft\n if (options\n .makeIntermediateDirectoryMetadata) {\n const child = node_1.Nodes.createDirectory({}, options\n .makeIntermediateDirectoryMetadata((0, path_1.join)(...components.slice(0, i + 1))));\n current.children[component] = child;\n node = child;\n }\n else if (options.makeIntermediateDirectories) {\n const child = node_1.Nodes.createDirectory();\n current.children[component] = child;\n node = child;\n }\n else {\n throw new Error(`File ${(0, path_1.join)(...components.slice(0, i + 1))} not found`);\n }\n }\n current = node;\n i++;\n }\n return current;\n}\nexports.getNodeInternal = getNodeInternal;\nfunction getNode(root, pathlike) {\n return getNodeInternal(root, pathlike, {});\n}\nexports.getNode = getNode;\nfunction readFile(root, pathlike) {\n const components = (0, paths_1.normalizePathLikeInternal)(pathlike);\n const node = getNode(root, components);\n if (!node_1.Nodes.isFile(node)) {\n throw new Error(`Can't read, ${(0, path_1.join)(...components)} not a file`);\n }\n return node.data;\n}\nexports.readFile = readFile;\nfunction readDirectory(root, pathlike) {\n const components = (0, paths_1.normalizePathLikeInternal)(pathlike);\n const node = getNode(root, components);\n if (!node_1.Nodes.isDirectory(node)) {\n throw new Error(`Can't read, ${(0, path_1.join)(...components)} not a directory`);\n }\n return node_1.Nodes.readDirectory(node);\n}\nexports.readDirectory = readDirectory;\nfunction getMetadata(root, pathlike) {\n const components = (0, paths_1.normalizePathLikeInternal)(pathlike);\n const node = getNode(root, components);\n return node.metadata;\n}\nexports.getMetadata = getMetadata;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.create = exports.setMetadata = exports.removeFile = exports.makeDirectory = exports.writeFile = exports.setNode = void 0;\nconst node_1 = require(\"../node\");\nconst paths_1 = require(\"./paths\");\nconst read_1 = require(\"./read\");\nfunction setNode(root, pathlike, node, options) {\n const { parentName, newName } = (0, paths_1.getNewAndParentName)(pathlike);\n const parent = (0, read_1.getNodeInternal)(root, parentName, options !== null && options !== void 0 ? options : {});\n if (!node_1.Nodes.isDirectory(parent)) {\n throw new Error(`Can't create ${newName}, ${parentName} not a directory`);\n }\n parent.children[newName] = node;\n}\nexports.setNode = setNode;\nfunction writeFile(root, pathlike, data, options) {\n var _a;\n setNode(root, pathlike, node_1.Nodes.createFile(data, (_a = options) === null || _a === void 0 ? void 0 : _a.metadata), options);\n}\nexports.writeFile = writeFile;\nfunction makeDirectory(root, pathlike, options) {\n var _a;\n const { parentName, newName } = (0, paths_1.getNewAndParentName)(pathlike);\n const parent = (0, read_1.getNodeInternal)(root, parentName, options !== null && options !== void 0 ? options : {});\n if (!node_1.Nodes.isDirectory(parent)) {\n throw new Error(`Can't create ${newName}, ${parentName} not a directory`);\n }\n const existing = node_1.Nodes.getChild(parent, newName);\n // Already a directory\n if (existing && node_1.Nodes.isDirectory(parent.children[newName])) {\n return;\n }\n parent.children[newName] = node_1.Nodes.createDirectory({}, (_a = options) === null || _a === void 0 ? void 0 : _a.metadata);\n}\nexports.makeDirectory = makeDirectory;\nfunction removeFile(root, pathlike) {\n const { parentName, newName } = (0, paths_1.getNewAndParentName)(pathlike);\n const parent = (0, read_1.getNode)(root, parentName);\n if (!node_1.Nodes.isDirectory(parent)) {\n throw new Error(`Can't remove file ${newName}, ${parentName} not a directory`);\n }\n delete parent.children[newName];\n}\nexports.removeFile = removeFile;\nfunction setMetadata(root, pathlike, metadata) {\n const node = (0, read_1.getNode)(root, pathlike);\n node.metadata = metadata;\n}\nexports.setMetadata = setMetadata;\nfunction create(options) {\n return node_1.Nodes.createDirectory({}, options && 'metadata' in options ? options.metadata : undefined);\n}\nexports.create = create;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Volume = void 0;\nconst paths_1 = require(\"./volume/paths\");\nconst read_1 = require(\"./volume/read\");\nconst write_1 = require(\"./volume/write\");\nexports.Volume = {\n // paths\n getPathComponents: paths_1.getPathComponents,\n // read\n getMetadata: read_1.getMetadata,\n getNode: read_1.getNode,\n readDirectory: read_1.readDirectory,\n readFile: read_1.readFile,\n // write\n create: write_1.create,\n makeDirectory: write_1.makeDirectory,\n removeFile: write_1.removeFile,\n setMetadata: write_1.setMetadata,\n setNode: write_1.setNode,\n writeFile: write_1.writeFile,\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.path = void 0;\n__exportStar(require(\"./types\"), exports);\n__exportStar(require(\"./node\"), exports);\n__exportStar(require(\"./entries\"), exports);\n__exportStar(require(\"./volume\"), exports);\nexports.path = __importStar(require(\"./path\"));\n","export * from \"@noya-app/state-manager\";\nexport * from \"./ai\";\nexport * from \"./components/UserPointersOverlay\";\nexport * from \"./hooks\";\nexport * from \"./inspector/serialization\";\nexport * from \"./inspector/StateInspector\";\nexport * from \"./inspector/useStateInspector\";\nexport * from \"./noyaApp\";\nexport * from \"./NoyaStateContext\";\nexport * from \"./singleton\";\nexport * from \"./useObservable\";\nexport { WebSocketConnection } from \"./WebSocketConnection\";\nexport type { ConnectionEvent, ConnectionOptions } from \"./WebSocketConnection\";\n","\"use client\";\n\nimport { AIToolDefinition } from \"@noya-app/state-manager\";\nimport { useEffect } from \"react\";\nimport { useAIManager } from \"./NoyaStateContext\";\nimport { useObservable } from \"./useObservable\";\n\nexport function useRegisterAITool(tool: AIToolDefinition) {\n const aiManager = useAIManager();\n\n useEffect(() => {\n return aiManager.registerTool(tool);\n }, [aiManager, tool]);\n}\n\nexport function useCallableAITools() {\n const aiManager = useAIManager();\n return useObservable(aiManager.callableTools$);\n}\n","/** Symbol key applied to transform types */\nexport const TransformKind = Symbol.for('TypeBox.Transform');\n/** Symbol key applied to readonly types */\nexport const ReadonlyKind = Symbol.for('TypeBox.Readonly');\n/** Symbol key applied to optional types */\nexport const OptionalKind = Symbol.for('TypeBox.Optional');\n/** Symbol key applied to types */\nexport const Hint = Symbol.for('TypeBox.Hint');\n/** Symbol key applied to types */\nexport const Kind = Symbol.for('TypeBox.Kind');\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Any type */\nexport function Any(options = {}) {\n return { ...options, [Kind]: 'Any' };\n}\n","/** Returns true if this value is an async iterator */\nexport function IsAsyncIterator(value) {\n return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.asyncIterator in value;\n}\n/** Returns true if this value is an array */\nexport function IsArray(value) {\n return Array.isArray(value);\n}\n/** Returns true if this value is bigint */\nexport function IsBigInt(value) {\n return typeof value === 'bigint';\n}\n/** Returns true if this value is a boolean */\nexport function IsBoolean(value) {\n return typeof value === 'boolean';\n}\n/** Returns true if this value is a Date object */\nexport function IsDate(value) {\n return value instanceof globalThis.Date;\n}\n/** Returns true if this value is a function */\nexport function IsFunction(value) {\n return typeof value === 'function';\n}\n/** Returns true if this value is an iterator */\nexport function IsIterator(value) {\n return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.iterator in value;\n}\n/** Returns true if this value is null */\nexport function IsNull(value) {\n return value === null;\n}\n/** Returns true if this value is number */\nexport function IsNumber(value) {\n return typeof value === 'number';\n}\n/** Returns true if this value is an object */\nexport function IsObject(value) {\n return typeof value === 'object' && value !== null;\n}\n/** Returns true if this value is RegExp */\nexport function IsRegExp(value) {\n return value instanceof globalThis.RegExp;\n}\n/** Returns true if this value is string */\nexport function IsString(value) {\n return typeof value === 'string';\n}\n/** Returns true if this value is symbol */\nexport function IsSymbol(value) {\n return typeof value === 'symbol';\n}\n/** Returns true if this value is a Uint8Array */\nexport function IsUint8Array(value) {\n return value instanceof globalThis.Uint8Array;\n}\n/** Returns true if this value is undefined */\nexport function IsUndefined(value) {\n return value === undefined;\n}\n","import * as ValueGuard from '../guard/value.mjs';\nfunction ArrayType(value) {\n return value.map((value) => Visit(value));\n}\nfunction DateType(value) {\n return new Date(value.getTime());\n}\nfunction Uint8ArrayType(value) {\n return new Uint8Array(value);\n}\nfunction RegExpType(value) {\n return new RegExp(value.source, value.flags);\n}\nfunction ObjectType(value) {\n const result = {};\n for (const key of Object.getOwnPropertyNames(value)) {\n result[key] = Visit(value[key]);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n result[key] = Visit(value[key]);\n }\n return result;\n}\n// prettier-ignore\nfunction Visit(value) {\n return (ValueGuard.IsArray(value) ? ArrayType(value) :\n ValueGuard.IsDate(value) ? DateType(value) :\n ValueGuard.IsUint8Array(value) ? Uint8ArrayType(value) :\n ValueGuard.IsRegExp(value) ? RegExpType(value) :\n ValueGuard.IsObject(value) ? ObjectType(value) :\n value);\n}\n/** Clones a value */\nexport function Clone(value) {\n return Visit(value);\n}\n","import { Clone } from './value.mjs';\n/** Clones a Rest */\nexport function CloneRest(schemas) {\n return schemas.map((schema) => CloneType(schema));\n}\n/** Clones a Type */\nexport function CloneType(schema, options = {}) {\n return { ...Clone(schema), ...options };\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Array type */\nexport function Array(schema, options = {}) {\n return {\n ...options,\n [Kind]: 'Array',\n type: 'array',\n items: CloneType(schema),\n };\n}\n","import { Kind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\n/** `[JavaScript]` Creates a AsyncIterator type */\nexport function AsyncIterator(items, options = {}) {\n return {\n ...options,\n [Kind]: 'AsyncIterator',\n type: 'AsyncIterator',\n items: CloneType(items),\n };\n}\n","function DiscardKey(value, key) {\n const { [key]: _, ...rest } = value;\n return rest;\n}\nexport function Discard(value, keys) {\n return keys.reduce((acc, key) => DiscardKey(acc, key), value);\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Never type */\nexport function Never(options = {}) {\n return {\n ...options,\n [Kind]: 'Never',\n not: {},\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n// prettier-ignore\nexport function MappedResult(properties) {\n return {\n [Kind]: 'MappedResult',\n properties\n };\n}\n","import { CloneType, CloneRest } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Constructor type */\nexport function Constructor(parameters, returns, options) {\n return {\n ...options,\n [Kind]: 'Constructor',\n type: 'Constructor',\n parameters: CloneRest(parameters),\n returns: CloneType(returns),\n };\n}\n","import { CloneType, CloneRest } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Function type */\nexport function Function(parameters, returns, options) {\n return {\n ...options,\n [Kind]: 'Function',\n type: 'Function',\n parameters: CloneRest(parameters),\n returns: CloneType(returns),\n };\n}\n","import { CloneRest } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\nexport function UnionCreate(T, options) {\n return { ...options, [Kind]: 'Union', anyOf: CloneRest(T) };\n}\n","import * as ValueGuard from './value.mjs';\nimport { Kind, Hint, TransformKind, ReadonlyKind, OptionalKind } from '../symbols/index.mjs';\n/** `[Kind-Only]` Returns true if this value has a Readonly symbol */\nexport function IsReadonly(value) {\n return ValueGuard.IsObject(value) && value[ReadonlyKind] === 'Readonly';\n}\n/** `[Kind-Only]` Returns true if this value has a Optional symbol */\nexport function IsOptional(value) {\n return ValueGuard.IsObject(value) && value[OptionalKind] === 'Optional';\n}\n/** `[Kind-Only]` Returns true if the given value is TAny */\nexport function IsAny(value) {\n return IsKindOf(value, 'Any');\n}\n/** `[Kind-Only]` Returns true if the given value is TArray */\nexport function IsArray(value) {\n return IsKindOf(value, 'Array');\n}\n/** `[Kind-Only]` Returns true if the given value is TAsyncIterator */\nexport function IsAsyncIterator(value) {\n return IsKindOf(value, 'AsyncIterator');\n}\n/** `[Kind-Only]` Returns true if the given value is TBigInt */\nexport function IsBigInt(value) {\n return IsKindOf(value, 'BigInt');\n}\n/** `[Kind-Only]` Returns true if the given value is TBoolean */\nexport function IsBoolean(value) {\n return IsKindOf(value, 'Boolean');\n}\n/** `[Kind-Only]` Returns true if the given value is TConstructor */\nexport function IsConstructor(value) {\n return IsKindOf(value, 'Constructor');\n}\n/** `[Kind-Only]` Returns true if the given value is TDate */\nexport function IsDate(value) {\n return IsKindOf(value, 'Date');\n}\n/** `[Kind-Only]` Returns true if the given value is TFunction */\nexport function IsFunction(value) {\n return IsKindOf(value, 'Function');\n}\n/** `[Kind-Only]` Returns true if the given value is TInteger */\nexport function IsInteger(value) {\n return IsKindOf(value, 'Integer');\n}\n/** `[Kind-Only]` Returns true if the given schema is TProperties */\nexport function IsProperties(value) {\n return ValueGuard.IsObject(value);\n}\n/** `[Kind-Only]` Returns true if the given value is TIntersect */\nexport function IsIntersect(value) {\n return IsKindOf(value, 'Intersect');\n}\n/** `[Kind-Only]` Returns true if the given value is TIterator */\nexport function IsIterator(value) {\n return IsKindOf(value, 'Iterator');\n}\n/** `[Kind-Only]` Returns true if the given value is a TKind with the given name. */\nexport function IsKindOf(value, kind) {\n return ValueGuard.IsObject(value) && Kind in value && value[Kind] === kind;\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral<string> */\nexport function IsLiteralString(value) {\n return IsLiteral(value) && ValueGuard.IsString(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral<number> */\nexport function IsLiteralNumber(value) {\n return IsLiteral(value) && ValueGuard.IsNumber(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral<boolean> */\nexport function IsLiteralBoolean(value) {\n return IsLiteral(value) && ValueGuard.IsBoolean(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral */\nexport function IsLiteral(value) {\n return IsKindOf(value, 'Literal');\n}\n/** `[Kind-Only]` Returns true if the given value is a TMappedKey */\nexport function IsMappedKey(value) {\n return IsKindOf(value, 'MappedKey');\n}\n/** `[Kind-Only]` Returns true if the given value is TMappedResult */\nexport function IsMappedResult(value) {\n return IsKindOf(value, 'MappedResult');\n}\n/** `[Kind-Only]` Returns true if the given value is TNever */\nexport function IsNever(value) {\n return IsKindOf(value, 'Never');\n}\n/** `[Kind-Only]` Returns true if the given value is TNot */\nexport function IsNot(value) {\n return IsKindOf(value, 'Not');\n}\n/** `[Kind-Only]` Returns true if the given value is TNull */\nexport function IsNull(value) {\n return IsKindOf(value, 'Null');\n}\n/** `[Kind-Only]` Returns true if the given value is TNumber */\nexport function IsNumber(value) {\n return IsKindOf(value, 'Number');\n}\n/** `[Kind-Only]` Returns true if the given value is TObject */\nexport function IsObject(value) {\n return IsKindOf(value, 'Object');\n}\n/** `[Kind-Only]` Returns true if the given value is TPromise */\nexport function IsPromise(value) {\n return IsKindOf(value, 'Promise');\n}\n/** `[Kind-Only]` Returns true if the given value is TRecord */\nexport function IsRecord(value) {\n return IsKindOf(value, 'Record');\n}\n/** `[Kind-Only]` Returns true if this value is TRecursive */\nexport function IsRecursive(value) {\n return ValueGuard.IsObject(value) && Hint in value && value[Hint] === 'Recursive';\n}\n/** `[Kind-Only]` Returns true if the given value is TRef */\nexport function IsRef(value) {\n return IsKindOf(value, 'Ref');\n}\n/** `[Kind-Only]` Returns true if the given value is TRegExp */\nexport function IsRegExp(value) {\n return IsKindOf(value, 'RegExp');\n}\n/** `[Kind-Only]` Returns true if the given value is TString */\nexport function IsString(value) {\n return IsKindOf(value, 'String');\n}\n/** `[Kind-Only]` Returns true if the given value is TSymbol */\nexport function IsSymbol(value) {\n return IsKindOf(value, 'Symbol');\n}\n/** `[Kind-Only]` Returns true if the given value is TTemplateLiteral */\nexport function IsTemplateLiteral(value) {\n return IsKindOf(value, 'TemplateLiteral');\n}\n/** `[Kind-Only]` Returns true if the given value is TThis */\nexport function IsThis(value) {\n return IsKindOf(value, 'This');\n}\n/** `[Kind-Only]` Returns true of this value is TTransform */\nexport function IsTransform(value) {\n return ValueGuard.IsObject(value) && TransformKind in value;\n}\n/** `[Kind-Only]` Returns true if the given value is TTuple */\nexport function IsTuple(value) {\n return IsKindOf(value, 'Tuple');\n}\n/** `[Kind-Only]` Returns true if the given value is TUndefined */\nexport function IsUndefined(value) {\n return IsKindOf(value, 'Undefined');\n}\n/** `[Kind-Only]` Returns true if the given value is TUnion */\nexport function IsUnion(value) {\n return IsKindOf(value, 'Union');\n}\n/** `[Kind-Only]` Returns true if the given value is TUint8Array */\nexport function IsUint8Array(value) {\n return IsKindOf(value, 'Uint8Array');\n}\n/** `[Kind-Only]` Returns true if the given value is TUnknown */\nexport function IsUnknown(value) {\n return IsKindOf(value, 'Unknown');\n}\n/** `[Kind-Only]` Returns true if the given value is a raw TUnsafe */\nexport function IsUnsafe(value) {\n return IsKindOf(value, 'Unsafe');\n}\n/** `[Kind-Only]` Returns true if the given value is TVoid */\nexport function IsVoid(value) {\n return IsKindOf(value, 'Void');\n}\n/** `[Kind-Only]` Returns true if the given value is TKind */\nexport function IsKind(value) {\n return ValueGuard.IsObject(value) && Kind in value && ValueGuard.IsString(value[Kind]);\n}\n/** `[Kind-Only]` Returns true if the given value is TSchema */\nexport function IsSchema(value) {\n // prettier-ignore\n return (IsAny(value) ||\n IsArray(value) ||\n IsBoolean(value) ||\n IsBigInt(value) ||\n IsAsyncIterator(value) ||\n IsConstructor(value) ||\n IsDate(value) ||\n IsFunction(value) ||\n IsInteger(value) ||\n IsIntersect(value) ||\n IsIterator(value) ||\n IsLiteral(value) ||\n IsMappedKey(value) ||\n IsMappedResult(value) ||\n IsNever(value) ||\n IsNot(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsObject(value) ||\n IsPromise(value) ||\n IsRecord(value) ||\n IsRef(value) ||\n IsRegExp(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsTemplateLiteral(value) ||\n IsThis(value) ||\n IsTuple(value) ||\n IsUndefined(value) ||\n IsUnion(value) ||\n IsUint8Array(value) ||\n IsUnknown(value) ||\n IsUnsafe(value) ||\n IsVoid(value) ||\n IsKind(value));\n}\n","import { OptionalKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { UnionCreate } from './union-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional } from '../guard/kind.mjs';\n// prettier-ignore\nfunction IsUnionOptional(T) {\n return T.some(L => IsOptional(L));\n}\n// prettier-ignore\nfunction RemoveOptionalFromRest(T) {\n return T.map(L => IsOptional(L) ? RemoveOptionalFromType(L) : L);\n}\n// prettier-ignore\nfunction RemoveOptionalFromType(T) {\n return (Discard(T, [OptionalKind]));\n}\n// prettier-ignore\nfunction ResolveUnion(T, options) {\n return (IsUnionOptional(T)\n ? Optional(UnionCreate(RemoveOptionalFromRest(T), options))\n : UnionCreate(RemoveOptionalFromRest(T), options));\n}\n/** `[Json]` Creates an evaluated Union type */\nexport function UnionEvaluated(T, options = {}) {\n // prettier-ignore\n return (T.length === 0 ? Never(options) :\n T.length === 1 ? CloneType(T[0], options) :\n ResolveUnion(T, options));\n}\n","import { Never } from '../never/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { UnionCreate } from './union-create.mjs';\n/** `[Json]` Creates a Union type */\nexport function Union(T, options = {}) {\n // prettier-ignore\n return (T.length === 0 ? Never(options) :\n T.length === 1 ? CloneType(T[0], options) :\n UnionCreate(T, options));\n}\n","/** The base Error type thrown for all TypeBox exceptions */\nexport class TypeBoxError extends Error {\n constructor(message) {\n super(message);\n }\n}\n","import { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralParserError\n// ------------------------------------------------------------------\nexport class TemplateLiteralParserError extends TypeBoxError {\n}\n// -------------------------------------------------------------------\n// Unescape\n//\n// Unescape for these control characters specifically. Note that this\n// function is only called on non union group content, and where we\n// still want to allow the user to embed control characters in that\n// content. For review.\n// -------------------------------------------------------------------\n// prettier-ignore\nfunction Unescape(pattern) {\n return pattern\n .replace(/\\\\\\$/g, '$')\n .replace(/\\\\\\*/g, '*')\n .replace(/\\\\\\^/g, '^')\n .replace(/\\\\\\|/g, '|')\n .replace(/\\\\\\(/g, '(')\n .replace(/\\\\\\)/g, ')');\n}\n// -------------------------------------------------------------------\n// Control Characters\n// -------------------------------------------------------------------\nfunction IsNonEscaped(pattern, index, char) {\n return pattern[index] === char && pattern.charCodeAt(index - 1) !== 92;\n}\nfunction IsOpenParen(pattern, index) {\n return IsNonEscaped(pattern, index, '(');\n}\nfunction IsCloseParen(pattern, index) {\n return IsNonEscaped(pattern, index, ')');\n}\nfunction IsSeparator(pattern, index) {\n return IsNonEscaped(pattern, index, '|');\n}\n// -------------------------------------------------------------------\n// Control Groups\n// -------------------------------------------------------------------\nfunction IsGroup(pattern) {\n if (!(IsOpenParen(pattern, 0) && IsCloseParen(pattern, pattern.length - 1)))\n return false;\n let count = 0;\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (count === 0 && index !== pattern.length - 1)\n return false;\n }\n return true;\n}\n// prettier-ignore\nfunction InGroup(pattern) {\n return pattern.slice(1, pattern.length - 1);\n}\n// prettier-ignore\nfunction IsPrecedenceOr(pattern) {\n let count = 0;\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (IsSeparator(pattern, index) && count === 0)\n return true;\n }\n return false;\n}\n// prettier-ignore\nfunction IsPrecedenceAnd(pattern) {\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n return true;\n }\n return false;\n}\n// prettier-ignore\nfunction Or(pattern) {\n let [count, start] = [0, 0];\n const expressions = [];\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (IsSeparator(pattern, index) && count === 0) {\n const range = pattern.slice(start, index);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n start = index + 1;\n }\n }\n const range = pattern.slice(start);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n if (expressions.length === 0)\n return { type: 'const', const: '' };\n if (expressions.length === 1)\n return expressions[0];\n return { type: 'or', expr: expressions };\n}\n// prettier-ignore\nfunction And(pattern) {\n function Group(value, index) {\n if (!IsOpenParen(value, index))\n throw new TemplateLiteralParserError(`TemplateLiteralParser: Index must point to open parens`);\n let count = 0;\n for (let scan = index; scan < value.length; scan++) {\n if (IsOpenParen(value, scan))\n count += 1;\n if (IsCloseParen(value, scan))\n count -= 1;\n if (count === 0)\n return [index, scan];\n }\n throw new TemplateLiteralParserError(`TemplateLiteralParser: Unclosed group parens in expression`);\n }\n function Range(pattern, index) {\n for (let scan = index; scan < pattern.length; scan++) {\n if (IsOpenParen(pattern, scan))\n return [index, scan];\n }\n return [index, pattern.length];\n }\n const expressions = [];\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index)) {\n const [start, end] = Group(pattern, index);\n const range = pattern.slice(start, end + 1);\n expressions.push(TemplateLiteralParse(range));\n index = end;\n }\n else {\n const [start, end] = Range(pattern, index);\n const range = pattern.slice(start, end);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n index = end - 1;\n }\n }\n return ((expressions.length === 0) ? { type: 'const', const: '' } :\n (expressions.length === 1) ? expressions[0] :\n { type: 'and', expr: expressions });\n}\n// ------------------------------------------------------------------\n// TemplateLiteralParse\n// ------------------------------------------------------------------\n/** Parses a pattern and returns an expression tree */\nexport function TemplateLiteralParse(pattern) {\n // prettier-ignore\n return (IsGroup(pattern) ? TemplateLiteralParse(InGroup(pattern)) :\n IsPrecedenceOr(pattern) ? Or(pattern) :\n IsPrecedenceAnd(pattern) ? And(pattern) :\n { type: 'const', const: Unescape(pattern) });\n}\n// ------------------------------------------------------------------\n// TemplateLiteralParseExact\n// ------------------------------------------------------------------\n/** Parses a pattern and strips forward and trailing ^ and $ */\nexport function TemplateLiteralParseExact(pattern) {\n return TemplateLiteralParse(pattern.slice(1, pattern.length - 1));\n}\n","import { TemplateLiteralParseExact } from './parse.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralFiniteError\n// ------------------------------------------------------------------\nexport class TemplateLiteralFiniteError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// IsTemplateLiteralFiniteCheck\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsNumberExpression(expression) {\n return (expression.type === 'or' &&\n expression.expr.length === 2 &&\n expression.expr[0].type === 'const' &&\n expression.expr[0].const === '0' &&\n expression.expr[1].type === 'const' &&\n expression.expr[1].const === '[1-9][0-9]*');\n}\n// prettier-ignore\nfunction IsBooleanExpression(expression) {\n return (expression.type === 'or' &&\n expression.expr.length === 2 &&\n expression.expr[0].type === 'const' &&\n expression.expr[0].const === 'true' &&\n expression.expr[1].type === 'const' &&\n expression.expr[1].const === 'false');\n}\n// prettier-ignore\nfunction IsStringExpression(expression) {\n return expression.type === 'const' && expression.const === '.*';\n}\n// ------------------------------------------------------------------\n// IsTemplateLiteralExpressionFinite\n// ------------------------------------------------------------------\n// prettier-ignore\nexport function IsTemplateLiteralExpressionFinite(expression) {\n return (IsNumberExpression(expression) || IsStringExpression(expression) ? false :\n IsBooleanExpression(expression) ? true :\n (expression.type === 'and') ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) :\n (expression.type === 'or') ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) :\n (expression.type === 'const') ? true :\n (() => { throw new TemplateLiteralFiniteError(`Unknown expression type`); })());\n}\n/** Returns true if this TemplateLiteral resolves to a finite set of values */\nexport function IsTemplateLiteralFinite(schema) {\n const expression = TemplateLiteralParseExact(schema.pattern);\n return IsTemplateLiteralExpressionFinite(expression);\n}\n","import { IsTemplateLiteralExpressionFinite } from './finite.mjs';\nimport { TemplateLiteralParseExact } from './parse.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralGenerateError\n// ------------------------------------------------------------------\nexport class TemplateLiteralGenerateError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// TemplateLiteralExpressionGenerate\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction* GenerateReduce(buffer) {\n if (buffer.length === 1)\n return yield* buffer[0];\n for (const left of buffer[0]) {\n for (const right of GenerateReduce(buffer.slice(1))) {\n yield `${left}${right}`;\n }\n }\n}\n// prettier-ignore\nfunction* GenerateAnd(expression) {\n return yield* GenerateReduce(expression.expr.map((expr) => [...TemplateLiteralExpressionGenerate(expr)]));\n}\n// prettier-ignore\nfunction* GenerateOr(expression) {\n for (const expr of expression.expr)\n yield* TemplateLiteralExpressionGenerate(expr);\n}\n// prettier-ignore\nfunction* GenerateConst(expression) {\n return yield expression.const;\n}\nexport function* TemplateLiteralExpressionGenerate(expression) {\n return expression.type === 'and'\n ? yield* GenerateAnd(expression)\n : expression.type === 'or'\n ? yield* GenerateOr(expression)\n : expression.type === 'const'\n ? yield* GenerateConst(expression)\n : (() => {\n throw new TemplateLiteralGenerateError('Unknown expression');\n })();\n}\n/** Generates a tuple of strings from the given TemplateLiteral. Returns an empty tuple if infinite. */\nexport function TemplateLiteralGenerate(schema) {\n const expression = TemplateLiteralParseExact(schema.pattern);\n // prettier-ignore\n return (IsTemplateLiteralExpressionFinite(expression)\n ? [...TemplateLiteralExpressionGenerate(expression)]\n : []);\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Literal type */\nexport function Literal(value, options = {}) {\n return {\n ...options,\n [Kind]: 'Literal',\n const: value,\n type: typeof value,\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Boolean type */\nexport function Boolean(options = {}) {\n return {\n ...options,\n [Kind]: 'Boolean',\n type: 'boolean',\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a BigInt type */\nexport function BigInt(options = {}) {\n return {\n ...options,\n [Kind]: 'BigInt',\n type: 'bigint',\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Number type */\nexport function Number(options = {}) {\n return {\n ...options,\n [Kind]: 'Number',\n type: 'number',\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a String type */\nexport function String(options = {}) {\n return { ...options, [Kind]: 'String', type: 'string' };\n}\n","import { Literal } from '../literal/index.mjs';\nimport { Boolean } from '../boolean/index.mjs';\nimport { BigInt } from '../bigint/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { String } from '../string/index.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\n// ------------------------------------------------------------------\n// SyntaxParsers\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction* FromUnion(syntax) {\n const trim = syntax.trim().replace(/\"|'/g, '');\n return (trim === 'boolean' ? yield Boolean() :\n trim === 'number' ? yield Number() :\n trim === 'bigint' ? yield BigInt() :\n trim === 'string' ? yield String() :\n yield (() => {\n const literals = trim.split('|').map((literal) => Literal(literal.trim()));\n return (literals.length === 0 ? Never() :\n literals.length === 1 ? literals[0] :\n UnionEvaluated(literals));\n })());\n}\n// prettier-ignore\nfunction* FromTerminal(syntax) {\n if (syntax[1] !== '{') {\n const L = Literal('$');\n const R = FromSyntax(syntax.slice(1));\n return yield* [L, ...R];\n }\n for (let i = 2; i < syntax.length; i++) {\n if (syntax[i] === '}') {\n const L = FromUnion(syntax.slice(2, i));\n const R = FromSyntax(syntax.slice(i + 1));\n return yield* [...L, ...R];\n }\n }\n yield Literal(syntax);\n}\n// prettier-ignore\nfunction* FromSyntax(syntax) {\n for (let i = 0; i < syntax.length; i++) {\n if (syntax[i] === '$') {\n const L = Literal(syntax.slice(0, i));\n const R = FromTerminal(syntax.slice(i));\n return yield* [L, ...R];\n }\n }\n yield Literal(syntax);\n}\n/** Parses TemplateLiteralSyntax and returns a tuple of TemplateLiteralKinds */\nexport function TemplateLiteralSyntax(syntax) {\n return [...FromSyntax(syntax)];\n}\n","export const PatternBoolean = '(true|false)';\nexport const PatternNumber = '(0|[1-9][0-9]*)';\nexport const PatternString = '(.*)';\nexport const PatternBooleanExact = `^${PatternBoolean}$`;\nexport const PatternNumberExact = `^${PatternNumber}$`;\nexport const PatternStringExact = `^${PatternString}$`;\n","import { PatternNumber, PatternString, PatternBoolean } from '../patterns/index.mjs';\nimport { Kind } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTemplateLiteral, IsUnion, IsNumber, IsInteger, IsBigInt, IsString, IsLiteral, IsBoolean } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralPatternError\n// ------------------------------------------------------------------\nexport class TemplateLiteralPatternError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// TemplateLiteralPattern\n// ------------------------------------------------------------------\nfunction Escape(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n// prettier-ignore\nfunction Visit(schema, acc) {\n return (IsTemplateLiteral(schema) ? schema.pattern.slice(1, schema.pattern.length - 1) :\n IsUnion(schema) ? `(${schema.anyOf.map((schema) => Visit(schema, acc)).join('|')})` :\n IsNumber(schema) ? `${acc}${PatternNumber}` :\n IsInteger(schema) ? `${acc}${PatternNumber}` :\n IsBigInt(schema) ? `${acc}${PatternNumber}` :\n IsString(schema) ? `${acc}${PatternString}` :\n IsLiteral(schema) ? `${acc}${Escape(schema.const.toString())}` :\n IsBoolean(schema) ? `${acc}${PatternBoolean}` :\n (() => { throw new TemplateLiteralPatternError(`Unexpected Kind '${schema[Kind]}'`); })());\n}\nexport function TemplateLiteralPattern(kinds) {\n return `^${kinds.map((schema) => Visit(schema, '')).join('')}\\$`;\n}\n","import { UnionEvaluated } from '../union/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { TemplateLiteralGenerate } from './generate.mjs';\n/** Returns a Union from the given TemplateLiteral */\nexport function TemplateLiteralToUnion(schema) {\n const R = TemplateLiteralGenerate(schema);\n const L = R.map((S) => Literal(S));\n return UnionEvaluated(L);\n}\n","import { TemplateLiteralSyntax } from './syntax.mjs';\nimport { TemplateLiteralPattern } from './pattern.mjs';\nimport { IsString } from '../guard/value.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a TemplateLiteral type */\n// prettier-ignore\nexport function TemplateLiteral(unresolved, options = {}) {\n const pattern = IsString(unresolved)\n ? TemplateLiteralPattern(TemplateLiteralSyntax(unresolved))\n : TemplateLiteralPattern(unresolved);\n return { ...options, [Kind]: 'TemplateLiteral', type: 'string', pattern };\n}\n","import { TemplateLiteralGenerate } from '../template-literal/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTemplateLiteral, IsUnion, IsLiteral, IsNumber, IsInteger } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromTemplateLiteral(T) {\n const R = TemplateLiteralGenerate(T);\n return R.map(S => S.toString());\n}\n// prettier-ignore\nfunction FromUnion(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...IndexPropertyKeys(L));\n return Acc;\n}\n// prettier-ignore\nfunction FromLiteral(T) {\n return ([T.toString()] // TS 5.4 observes TLiteralValue as not having a toString()\n );\n}\n/** Returns a tuple of PropertyKeys derived from the given TSchema */\n// prettier-ignore\nexport function IndexPropertyKeys(T) {\n return [...new Set((IsTemplateLiteral(T) ? FromTemplateLiteral(T) :\n IsUnion(T) ? FromUnion(T.anyOf) :\n IsLiteral(T) ? FromLiteral(T.const) :\n IsNumber(T) ? ['[number]'] :\n IsInteger(T) ? ['[number]'] :\n []))];\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { IndexPropertyKeys } from './indexed-property-keys.mjs';\nimport { Index } from './index.mjs';\n// prettier-ignore\nfunction FromProperties(T, P, options) {\n const Acc = {};\n for (const K2 of Object.getOwnPropertyNames(P)) {\n Acc[K2] = Index(T, IndexPropertyKeys(P[K2]), options);\n }\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(T, R, options) {\n return FromProperties(T, R.properties, options);\n}\n// prettier-ignore\nexport function IndexFromMappedResult(T, R, options) {\n const P = FromMappedResult(T, R, options);\n return MappedResult(P);\n}\n","import { Never } from '../never/index.mjs';\nimport { IntersectEvaluated } from '../intersect/index.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { IndexPropertyKeys } from './indexed-property-keys.mjs';\nimport { IndexFromMappedKey } from './indexed-from-mapped-key.mjs';\nimport { IndexFromMappedResult } from './indexed-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsIntersect, IsObject, IsMappedKey, IsMappedResult, IsNever, IsSchema, IsTuple, IsUnion } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(T, K) {\n return T.map(L => IndexFromPropertyKey(L, K));\n}\n// prettier-ignore\nfunction FromIntersectRest(T) {\n return T.filter(L => !IsNever(L));\n}\n// prettier-ignore\nfunction FromIntersect(T, K) {\n return (IntersectEvaluated(FromIntersectRest(FromRest(T, K))));\n}\n// prettier-ignore\nfunction FromUnionRest(T) {\n return (T.some(L => IsNever(L))\n ? []\n : T);\n}\n// prettier-ignore\nfunction FromUnion(T, K) {\n return (UnionEvaluated(FromUnionRest(FromRest(T, K))));\n}\n// prettier-ignore\nfunction FromTuple(T, K) {\n return (K in T ? T[K] :\n K === '[number]' ? UnionEvaluated(T) :\n Never());\n}\n// prettier-ignore\nfunction FromArray(T, K) {\n return (K === '[number]'\n ? T\n : Never());\n}\n// prettier-ignore\nfunction FromProperty(T, K) {\n return (K in T ? T[K] : Never());\n}\n// prettier-ignore\nexport function IndexFromPropertyKey(T, K) {\n return (IsIntersect(T) ? FromIntersect(T.allOf, K) :\n IsUnion(T) ? FromUnion(T.anyOf, K) :\n IsTuple(T) ? FromTuple(T.items ?? [], K) :\n IsArray(T) ? FromArray(T.items, K) :\n IsObject(T) ? FromProperty(T.properties, K) :\n Never());\n}\n// prettier-ignore\nexport function IndexFromPropertyKeys(T, K) {\n return K.map(L => IndexFromPropertyKey(T, L));\n}\n// prettier-ignore\nfunction FromSchema(T, K) {\n return (UnionEvaluated(IndexFromPropertyKeys(T, K)));\n}\n/** `[Json]` Returns an Indexed property type for the given keys */\nexport function Index(T, K, options = {}) {\n // prettier-ignore\n return (IsMappedResult(K) ? CloneType(IndexFromMappedResult(T, K, options)) :\n IsMappedKey(K) ? CloneType(IndexFromMappedKey(T, K, options)) :\n IsSchema(K) ? CloneType(FromSchema(T, IndexPropertyKeys(K)), options) :\n CloneType(FromSchema(T, K), options));\n}\n","import { Index } from './indexed.mjs';\nimport { MappedResult } from '../mapped/index.mjs';\n// prettier-ignore\nfunction MappedIndexPropertyKey(T, K, options) {\n return { [K]: Index(T, [K], options) };\n}\n// prettier-ignore\nfunction MappedIndexPropertyKeys(T, K, options) {\n return K.reduce((Acc, L) => {\n return { ...Acc, ...MappedIndexPropertyKey(T, L, options) };\n }, {});\n}\n// prettier-ignore\nfunction MappedIndexProperties(T, K, options) {\n return MappedIndexPropertyKeys(T, K.keys, options);\n}\n// prettier-ignore\nexport function IndexFromMappedKey(T, K, options) {\n const P = MappedIndexProperties(T, K, options);\n return MappedResult(P);\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates an Iterator type */\nexport function Iterator(items, options = {}) {\n return {\n ...options,\n [Kind]: 'Iterator',\n type: 'Iterator',\n items: CloneType(items),\n };\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional, IsSchema } from '../guard/kind.mjs';\n/** `[Json]` Creates an Object type */\nfunction _Object(properties, options = {}) {\n const propertyKeys = globalThis.Object.getOwnPropertyNames(properties);\n const optionalKeys = propertyKeys.filter((key) => IsOptional(properties[key]));\n const requiredKeys = propertyKeys.filter((name) => !optionalKeys.includes(name));\n const clonedAdditionalProperties = IsSchema(options.additionalProperties) ? { additionalProperties: CloneType(options.additionalProperties) } : {};\n const clonedProperties = {};\n for (const key of propertyKeys)\n clonedProperties[key] = CloneType(properties[key]);\n return (requiredKeys.length > 0\n ? { ...options, ...clonedAdditionalProperties, [Kind]: 'Object', type: 'object', properties: clonedProperties, required: requiredKeys }\n : { ...options, ...clonedAdditionalProperties, [Kind]: 'Object', type: 'object', properties: clonedProperties });\n}\n/** `[Json]` Creates an Object type */\nexport const Object = _Object;\n","import { CloneType } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Promise type */\nexport function Promise(item, options = {}) {\n return {\n ...options,\n [Kind]: 'Promise',\n type: 'Promise',\n item: CloneType(item),\n };\n}\n","import { ReadonlyKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { ReadonlyFromMappedResult } from './readonly-from-mapped-result.mjs';\nimport { IsMappedResult } from '../guard/kind.mjs';\nfunction RemoveReadonly(schema) {\n return Discard(CloneType(schema), [ReadonlyKind]);\n}\nfunction AddReadonly(schema) {\n return { ...CloneType(schema), [ReadonlyKind]: 'Readonly' };\n}\n// prettier-ignore\nfunction ReadonlyWithFlag(schema, F) {\n return (F === false\n ? RemoveReadonly(schema)\n : AddReadonly(schema));\n}\n/** `[Json]` Creates a Readonly property */\nexport function Readonly(schema, enable) {\n const F = enable ?? true;\n return IsMappedResult(schema) ? ReadonlyFromMappedResult(schema, F) : ReadonlyWithFlag(schema, F);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Readonly } from './readonly.mjs';\n// prettier-ignore\nfunction FromProperties(K, F) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = Readonly(K[K2], F);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, F) {\n return FromProperties(R.properties, F);\n}\n// prettier-ignore\nexport function ReadonlyFromMappedResult(R, F) {\n const P = FromMappedResult(R, F);\n return MappedResult(P);\n}\n","import { CloneRest } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Tuple type */\nexport function Tuple(items, options = {}) {\n // return TupleResolver.Resolve(T)\n const [additionalItems, minItems, maxItems] = [false, items.length, items.length];\n // prettier-ignore\n return (items.length > 0 ?\n { ...options, [Kind]: 'Tuple', type: 'array', items: CloneRest(items), additionalItems, minItems, maxItems } :\n { ...options, [Kind]: 'Tuple', type: 'array', minItems, maxItems });\n}\n","/** Returns true if element right is in the set of left */\n// prettier-ignore\nexport function SetIncludes(T, S) {\n return T.includes(S);\n}\n/** Returns true if left is a subset of right */\nexport function SetIsSubset(T, S) {\n return T.every((L) => SetIncludes(S, L));\n}\n/** Returns a distinct set of elements */\nexport function SetDistinct(T) {\n return [...new Set(T)];\n}\n/** Returns the Intersect of the given sets */\nexport function SetIntersect(T, S) {\n return T.filter((L) => S.includes(L));\n}\n/** Returns the Union of the given sets */\nexport function SetUnion(T, S) {\n return [...T, ...S];\n}\n/** Returns the Complement by omitting elements in T that are in S */\n// prettier-ignore\nexport function SetComplement(T, S) {\n return T.filter(L => !S.includes(L));\n}\n// prettier-ignore\nfunction SetIntersectManyResolve(T, Init) {\n return T.reduce((Acc, L) => {\n return SetIntersect(Acc, L);\n }, Init);\n}\n// prettier-ignore\nexport function SetIntersectMany(T) {\n return (T.length === 1\n ? T[0]\n // Use left to initialize the accumulator for resolve\n : T.length > 1\n ? SetIntersectManyResolve(T.slice(1), T[0])\n : []);\n}\n/** Returns the Union of multiple sets */\nexport function SetUnionMany(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...L);\n return Acc;\n}\n","import { Kind, OptionalKind, ReadonlyKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\n// evaluation types\nimport { Array } from '../array/index.mjs';\nimport { AsyncIterator } from '../async-iterator/index.mjs';\nimport { Constructor } from '../constructor/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Iterator } from '../iterator/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { Promise } from '../promise/index.mjs';\nimport { Readonly } from '../readonly/index.mjs';\nimport { Tuple } from '../tuple/index.mjs';\nimport { Union } from '../union/index.mjs';\n// operator\nimport { SetIncludes } from '../sets/index.mjs';\n// mapping types\nimport { MappedResult } from './mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsAsyncIterator, IsConstructor, IsFunction, IsIntersect, IsIterator, IsReadonly, IsMappedResult, IsMappedKey, IsObject, IsOptional, IsPromise, IsSchema, IsTuple, IsUnion } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromMappedResult(K, P) {\n return (K in P\n ? FromSchemaType(K, P[K])\n : MappedResult(P));\n}\n// prettier-ignore\nfunction MappedKeyToKnownMappedResultProperties(K) {\n return { [K]: Literal(K) };\n}\n// prettier-ignore\nfunction MappedKeyToUnknownMappedResultProperties(P) {\n const Acc = {};\n for (const L of P)\n Acc[L] = Literal(L);\n return Acc;\n}\n// prettier-ignore\nfunction MappedKeyToMappedResultProperties(K, P) {\n return (SetIncludes(P, K)\n ? MappedKeyToKnownMappedResultProperties(K)\n : MappedKeyToUnknownMappedResultProperties(P));\n}\n// prettier-ignore\nfunction FromMappedKey(K, P) {\n const R = MappedKeyToMappedResultProperties(K, P);\n return FromMappedResult(K, R);\n}\n// prettier-ignore\nfunction FromRest(K, T) {\n return T.map(L => FromSchemaType(K, L));\n}\n// prettier-ignore\nfunction FromProperties(K, T) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(T))\n Acc[K2] = FromSchemaType(K, T[K2]);\n return Acc;\n}\n// prettier-ignore\nfunction FromSchemaType(K, T) {\n return (\n // unevaluated modifier types\n IsOptional(T) ? Optional(FromSchemaType(K, Discard(T, [OptionalKind]))) :\n IsReadonly(T) ? Readonly(FromSchemaType(K, Discard(T, [ReadonlyKind]))) :\n // unevaluated mapped types\n IsMappedResult(T) ? FromMappedResult(K, T.properties) :\n IsMappedKey(T) ? FromMappedKey(K, T.keys) :\n // unevaluated types\n IsConstructor(T) ? Constructor(FromRest(K, T.parameters), FromSchemaType(K, T.returns)) :\n IsFunction(T) ? FunctionType(FromRest(K, T.parameters), FromSchemaType(K, T.returns)) :\n IsAsyncIterator(T) ? AsyncIterator(FromSchemaType(K, T.items)) :\n IsIterator(T) ? Iterator(FromSchemaType(K, T.items)) :\n IsIntersect(T) ? Intersect(FromRest(K, T.allOf)) :\n IsUnion(T) ? Union(FromRest(K, T.anyOf)) :\n IsTuple(T) ? Tuple(FromRest(K, T.items ?? [])) :\n IsObject(T) ? Object(FromProperties(K, T.properties)) :\n IsArray(T) ? Array(FromSchemaType(K, T.items)) :\n IsPromise(T) ? Promise(FromSchemaType(K, T.item)) :\n T);\n}\n// prettier-ignore\nexport function MappedFunctionReturnType(K, T) {\n const Acc = {};\n for (const L of K)\n Acc[L] = FromSchemaType(L, T);\n return Acc;\n}\n/** `[Json]` Creates a Mapped object type */\nexport function Mapped(key, map, options = {}) {\n const K = IsSchema(key) ? IndexPropertyKeys(key) : key;\n const RT = map({ [Kind]: 'MappedKey', keys: K });\n const R = MappedFunctionReturnType(K, RT);\n return CloneType(Object(R), options);\n}\n","import { OptionalKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { OptionalFromMappedResult } from './optional-from-mapped-result.mjs';\nimport { IsMappedResult } from '../guard/kind.mjs';\nfunction RemoveOptional(schema) {\n return Discard(CloneType(schema), [OptionalKind]);\n}\nfunction AddOptional(schema) {\n return { ...CloneType(schema), [OptionalKind]: 'Optional' };\n}\n// prettier-ignore\nfunction OptionalWithFlag(schema, F) {\n return (F === false\n ? RemoveOptional(schema)\n : AddOptional(schema));\n}\n/** `[Json]` Creates a Optional property */\nexport function Optional(schema, enable) {\n const F = enable ?? true;\n return IsMappedResult(schema) ? OptionalFromMappedResult(schema, F) : OptionalWithFlag(schema, F);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Optional } from './optional.mjs';\n// prettier-ignore\nfunction FromProperties(P, F) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Optional(P[K2], F);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, F) {\n return FromProperties(R.properties, F);\n}\n// prettier-ignore\nexport function OptionalFromMappedResult(R, F) {\n const P = FromMappedResult(R, F);\n return MappedResult(P);\n}\n","import { Kind } from '../symbols/index.mjs';\nimport { CloneType, CloneRest } from '../clone/type.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsObject, IsSchema } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// IntersectCreate\n// ------------------------------------------------------------------\n// prettier-ignore\nexport function IntersectCreate(T, options) {\n const allObjects = T.every((schema) => IsObject(schema));\n const clonedUnevaluatedProperties = IsSchema(options.unevaluatedProperties)\n ? { unevaluatedProperties: CloneType(options.unevaluatedProperties) }\n : {};\n return ((options.unevaluatedProperties === false || IsSchema(options.unevaluatedProperties) || allObjects\n ? { ...options, ...clonedUnevaluatedProperties, [Kind]: 'Intersect', type: 'object', allOf: CloneRest(T) }\n : { ...options, ...clonedUnevaluatedProperties, [Kind]: 'Intersect', allOf: CloneRest(T) }));\n}\n","import { OptionalKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { IntersectCreate } from './intersect-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional, IsTransform } from '../guard/kind.mjs';\n// prettier-ignore\nfunction IsIntersectOptional(T) {\n return T.every(L => IsOptional(L));\n}\n// prettier-ignore\nfunction RemoveOptionalFromType(T) {\n return (Discard(T, [OptionalKind]));\n}\n// prettier-ignore\nfunction RemoveOptionalFromRest(T) {\n return T.map(L => IsOptional(L) ? RemoveOptionalFromType(L) : L);\n}\n// prettier-ignore\nfunction ResolveIntersect(T, options) {\n return (IsIntersectOptional(T)\n ? Optional(IntersectCreate(RemoveOptionalFromRest(T), options))\n : IntersectCreate(RemoveOptionalFromRest(T), options));\n}\n/** `[Json]` Creates an evaluated Intersect type */\nexport function IntersectEvaluated(T, options = {}) {\n if (T.length === 0)\n return Never(options);\n if (T.length === 1)\n return CloneType(T[0], options);\n if (T.some((schema) => IsTransform(schema)))\n throw new Error('Cannot intersect transform types');\n return ResolveIntersect(T, options);\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { Never } from '../never/index.mjs';\nimport { IntersectCreate } from './intersect-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform } from '../guard/kind.mjs';\n/** `[Json]` Creates an evaluated Intersect type */\nexport function Intersect(T, options = {}) {\n if (T.length === 0)\n return Never(options);\n if (T.length === 1)\n return CloneType(T[0], options);\n if (T.some((schema) => IsTransform(schema)))\n throw new Error('Cannot intersect transform types');\n return IntersectCreate(T, options);\n}\n","import { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsPromise } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(T) {\n return T.map(L => AwaitedResolve(L));\n}\n// prettier-ignore\nfunction FromIntersect(T) {\n return Intersect(FromRest(T));\n}\n// prettier-ignore\nfunction FromUnion(T) {\n return Union(FromRest(T));\n}\n// prettier-ignore\nfunction FromPromise(T) {\n return AwaitedResolve(T);\n}\n// ----------------------------------------------------------------\n// AwaitedResolve\n// ----------------------------------------------------------------\n// prettier-ignore\nfunction AwaitedResolve(T) {\n return (IsIntersect(T) ? FromIntersect(T.allOf) :\n IsUnion(T) ? FromUnion(T.anyOf) :\n IsPromise(T) ? FromPromise(T.item) :\n T);\n}\n/** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */\nexport function Awaited(T, options = {}) {\n return CloneType(AwaitedResolve(T), options);\n}\n","import { SetUnionMany, SetIntersectMany } from '../sets/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsTuple, IsArray, IsObject, IsRecord } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(KeyOfPropertyKeys(L));\n return Acc;\n}\n// prettier-ignore\nfunction FromIntersect(T) {\n const C = FromRest(T);\n const R = SetUnionMany(C);\n return R;\n}\n// prettier-ignore\nfunction FromUnion(T) {\n const C = FromRest(T);\n const R = SetIntersectMany(C);\n return R;\n}\n// prettier-ignore\nfunction FromTuple(T) {\n return T.map((_, I) => I.toString());\n}\n// prettier-ignore\nfunction FromArray(_) {\n return (['[number]']);\n}\n// prettier-ignore\nfunction FromProperties(T) {\n return (globalThis.Object.getOwnPropertyNames(T));\n}\n// ------------------------------------------------------------------\n// FromPatternProperties\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromPatternProperties(patternProperties) {\n if (!includePatternProperties)\n return [];\n const patternPropertyKeys = globalThis.Object.getOwnPropertyNames(patternProperties);\n return patternPropertyKeys.map(key => {\n return (key[0] === '^' && key[key.length - 1] === '$')\n ? key.slice(1, key.length - 1)\n : key;\n });\n}\n/** Returns a tuple of PropertyKeys derived from the given TSchema. */\n// prettier-ignore\nexport function KeyOfPropertyKeys(T) {\n return (IsIntersect(T) ? FromIntersect(T.allOf) :\n IsUnion(T) ? FromUnion(T.anyOf) :\n IsTuple(T) ? FromTuple(T.items ?? []) :\n IsArray(T) ? FromArray(T.items) :\n IsObject(T) ? FromProperties(T.properties) :\n IsRecord(T) ? FromPatternProperties(T.patternProperties) :\n []);\n}\n// ----------------------------------------------------------------\n// KeyOfPattern\n// ----------------------------------------------------------------\nlet includePatternProperties = false;\n/** Returns a regular expression pattern derived from the given TSchema */\nexport function KeyOfPattern(schema) {\n includePatternProperties = true;\n const keys = KeyOfPropertyKeys(schema);\n includePatternProperties = false;\n const pattern = keys.map((key) => `(${key})`);\n return `^(${pattern.join('|')})$`;\n}\n","import { Literal } from '../literal/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { KeyOfPropertyKeys } from './keyof-property-keys.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { KeyOfFromMappedResult } from './keyof-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult } from '../guard/kind.mjs';\n// prettier-ignore\nexport function KeyOfPropertyKeysToRest(T) {\n return T.map(L => L === '[number]' ? Number() : Literal(L));\n}\n/** `[Json]` Creates a KeyOf type */\nexport function KeyOf(T, options = {}) {\n if (IsMappedResult(T)) {\n return KeyOfFromMappedResult(T, options);\n }\n else {\n const K = KeyOfPropertyKeys(T);\n const S = KeyOfPropertyKeysToRest(K);\n const U = UnionEvaluated(S);\n return CloneType(U, options);\n }\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { KeyOf } from './keyof.mjs';\n// prettier-ignore\nfunction FromProperties(K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = KeyOf(K[K2], options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nexport function KeyOfFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return MappedResult(P);\n}\n","import { IntersectEvaluated } from '../intersect/index.mjs';\nimport { IndexFromPropertyKeys } from '../indexed/index.mjs';\nimport { KeyOfPropertyKeys } from '../keyof/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { SetDistinct } from '../sets/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsNever } from '../guard/kind.mjs';\n// prettier-ignore\nfunction CompositeKeys(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...KeyOfPropertyKeys(L));\n return SetDistinct(Acc);\n}\n// prettier-ignore\nfunction FilterNever(T) {\n return T.filter(L => !IsNever(L));\n}\n// prettier-ignore\nfunction CompositeProperty(T, K) {\n const Acc = [];\n for (const L of T)\n Acc.push(...IndexFromPropertyKeys(L, [K]));\n return FilterNever(Acc);\n}\n// prettier-ignore\nfunction CompositeProperties(T, K) {\n const Acc = {};\n for (const L of K) {\n Acc[L] = IntersectEvaluated(CompositeProperty(T, L));\n }\n return Acc;\n}\n// prettier-ignore\nexport function Composite(T, options = {}) {\n const K = CompositeKeys(T);\n const P = CompositeProperties(T, K);\n const R = Object(P, options);\n return R;\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Date type */\nexport function Date(options = {}) {\n return {\n ...options,\n [Kind]: 'Date',\n type: 'Date',\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Null type */\nexport function Null(options = {}) {\n return {\n ...options,\n [Kind]: 'Null',\n type: 'null',\n };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Symbol type */\nexport function Symbol(options) {\n return { ...options, [Kind]: 'Symbol', type: 'symbol' };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Undefined type */\nexport function Undefined(options = {}) {\n return { ...options, [Kind]: 'Undefined', type: 'undefined' };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Uint8Array type */\nexport function Uint8Array(options = {}) {\n return { ...options, [Kind]: 'Uint8Array', type: 'Uint8Array' };\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Unknown type */\nexport function Unknown(options = {}) {\n return {\n ...options,\n [Kind]: 'Unknown',\n };\n}\n","import { Any } from '../any/index.mjs';\nimport { BigInt } from '../bigint/index.mjs';\nimport { Date } from '../date/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Null } from '../null/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { Symbol } from '../symbol/index.mjs';\nimport { Tuple } from '../tuple/index.mjs';\nimport { Readonly } from '../readonly/index.mjs';\nimport { Undefined } from '../undefined/index.mjs';\nimport { Uint8Array } from '../uint8array/index.mjs';\nimport { Unknown } from '../unknown/index.mjs';\nimport { CloneType } from '../clone/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsNumber, IsBigInt, IsUint8Array, IsDate, IsIterator, IsObject, IsAsyncIterator, IsFunction, IsUndefined, IsNull, IsSymbol, IsBoolean, IsString } from '../guard/value.mjs';\n// prettier-ignore\nfunction FromArray(T) {\n return T.map(L => FromValue(L, false));\n}\n// prettier-ignore\nfunction FromProperties(value) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(value))\n Acc[K] = Readonly(FromValue(value[K], false));\n return Acc;\n}\nfunction ConditionalReadonly(T, root) {\n return (root === true ? T : Readonly(T));\n}\n// prettier-ignore\nfunction FromValue(value, root) {\n return (IsAsyncIterator(value) ? ConditionalReadonly(Any(), root) :\n IsIterator(value) ? ConditionalReadonly(Any(), root) :\n IsArray(value) ? Readonly(Tuple(FromArray(value))) :\n IsUint8Array(value) ? Uint8Array() :\n IsDate(value) ? Date() :\n IsObject(value) ? ConditionalReadonly(Object(FromProperties(value)), root) :\n IsFunction(value) ? ConditionalReadonly(FunctionType([], Unknown()), root) :\n IsUndefined(value) ? Undefined() :\n IsNull(value) ? Null() :\n IsSymbol(value) ? Symbol() :\n IsBigInt(value) ? BigInt() :\n IsNumber(value) ? Literal(value) :\n IsBoolean(value) ? Literal(value) :\n IsString(value) ? Literal(value) :\n Object({}));\n}\n/** `[JavaScript]` Creates a readonly const type from the given value. */\nexport function Const(T, options = {}) {\n return CloneType(FromValue(T, true), options);\n}\n","import { Tuple } from '../tuple/index.mjs';\nimport { CloneRest } from '../clone/type.mjs';\n/** `[JavaScript]` Extracts the ConstructorParameters from the given Constructor type */\nexport function ConstructorParameters(schema, options = {}) {\n return Tuple(CloneRest(schema.parameters), { ...options });\n}\n","import { CloneType, CloneRest } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { IsUndefined } from '../guard/value.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsConstructor, IsFunction, IsIntersect, IsUnion, IsTuple, IsArray, IsObject, IsPromise, IsAsyncIterator, IsIterator, IsRef } from '../guard/kind.mjs';\nfunction FromRest(schema, references) {\n return schema.map((schema) => Deref(schema, references));\n}\n// prettier-ignore\nfunction FromProperties(properties, references) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(properties)) {\n Acc[K] = Deref(properties[K], references);\n }\n return Acc;\n}\n// prettier-ignore\nfunction FromConstructor(schema, references) {\n schema.parameters = FromRest(schema.parameters, references);\n schema.returns = Deref(schema.returns, references);\n return schema;\n}\n// prettier-ignore\nfunction FromFunction(schema, references) {\n schema.parameters = FromRest(schema.parameters, references);\n schema.returns = Deref(schema.returns, references);\n return schema;\n}\n// prettier-ignore\nfunction FromIntersect(schema, references) {\n schema.allOf = FromRest(schema.allOf, references);\n return schema;\n}\n// prettier-ignore\nfunction FromUnion(schema, references) {\n schema.anyOf = FromRest(schema.anyOf, references);\n return schema;\n}\n// prettier-ignore\nfunction FromTuple(schema, references) {\n if (IsUndefined(schema.items))\n return schema;\n schema.items = FromRest(schema.items, references);\n return schema;\n}\n// prettier-ignore\nfunction FromArray(schema, references) {\n schema.items = Deref(schema.items, references);\n return schema;\n}\n// prettier-ignore\nfunction FromObject(schema, references) {\n schema.properties = FromProperties(schema.properties, references);\n return schema;\n}\n// prettier-ignore\nfunction FromPromise(schema, references) {\n schema.item = Deref(schema.item, references);\n return schema;\n}\n// prettier-ignore\nfunction FromAsyncIterator(schema, references) {\n schema.items = Deref(schema.items, references);\n return schema;\n}\n// prettier-ignore\nfunction FromIterator(schema, references) {\n schema.items = Deref(schema.items, references);\n return schema;\n}\n// prettier-ignore\nfunction FromRef(schema, references) {\n const target = references.find(remote => remote.$id === schema.$ref);\n if (target === undefined)\n throw Error(`Unable to dereference schema with $id ${schema.$ref}`);\n const discard = Discard(target, ['$id']);\n return Deref(discard, references);\n}\n// prettier-ignore\nfunction DerefResolve(schema, references) {\n return (IsConstructor(schema) ? FromConstructor(schema, references) :\n IsFunction(schema) ? FromFunction(schema, references) :\n IsIntersect(schema) ? FromIntersect(schema, references) :\n IsUnion(schema) ? FromUnion(schema, references) :\n IsTuple(schema) ? FromTuple(schema, references) :\n IsArray(schema) ? FromArray(schema, references) :\n IsObject(schema) ? FromObject(schema, references) :\n IsPromise(schema) ? FromPromise(schema, references) :\n IsAsyncIterator(schema) ? FromAsyncIterator(schema, references) :\n IsIterator(schema) ? FromIterator(schema, references) :\n IsRef(schema) ? FromRef(schema, references) :\n schema);\n}\n// ------------------------------------------------------------------\n// TDeref\n// ------------------------------------------------------------------\n/** `[Json]` Creates a dereferenced type */\nexport function Deref(schema, references) {\n return DerefResolve(CloneType(schema), CloneRest(references));\n}\n","import { Literal } from '../literal/index.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { Union } from '../union/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/value.mjs';\n/** `[Json]` Creates a Enum type */\nexport function Enum(item, options = {}) {\n if (IsUndefined(item))\n throw new Error('Enum undefined or empty');\n const values1 = globalThis.Object.getOwnPropertyNames(item)\n .filter((key) => isNaN(key))\n .map((key) => item[key]);\n const values2 = [...new Set(values1)];\n const anyOf = values2.map((value) => Literal(value));\n return Union(anyOf, { ...options, [Hint]: 'Enum' });\n}\n","import * as ValueGuard from './value.mjs';\nimport { Kind, Hint, TransformKind, ReadonlyKind, OptionalKind } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\nexport class TypeGuardUnknownTypeError extends TypeBoxError {\n}\nconst KnownTypes = [\n 'Any',\n 'Array',\n 'AsyncIterator',\n 'BigInt',\n 'Boolean',\n 'Constructor',\n 'Date',\n 'Enum',\n 'Function',\n 'Integer',\n 'Intersect',\n 'Iterator',\n 'Literal',\n 'MappedKey',\n 'MappedResult',\n 'Not',\n 'Null',\n 'Number',\n 'Object',\n 'Promise',\n 'Record',\n 'Ref',\n 'RegExp',\n 'String',\n 'Symbol',\n 'TemplateLiteral',\n 'This',\n 'Tuple',\n 'Undefined',\n 'Union',\n 'Uint8Array',\n 'Unknown',\n 'Void',\n];\nfunction IsPattern(value) {\n try {\n new RegExp(value);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction IsControlCharacterFree(value) {\n if (!ValueGuard.IsString(value))\n return false;\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n if ((code >= 7 && code <= 13) || code === 27 || code === 127) {\n return false;\n }\n }\n return true;\n}\nfunction IsAdditionalProperties(value) {\n return IsOptionalBoolean(value) || IsSchema(value);\n}\nfunction IsOptionalBigInt(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsBigInt(value);\n}\nfunction IsOptionalNumber(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsNumber(value);\n}\nfunction IsOptionalBoolean(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsBoolean(value);\n}\nfunction IsOptionalString(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsString(value);\n}\nfunction IsOptionalPattern(value) {\n return ValueGuard.IsUndefined(value) || (ValueGuard.IsString(value) && IsControlCharacterFree(value) && IsPattern(value));\n}\nfunction IsOptionalFormat(value) {\n return ValueGuard.IsUndefined(value) || (ValueGuard.IsString(value) && IsControlCharacterFree(value));\n}\nfunction IsOptionalSchema(value) {\n return ValueGuard.IsUndefined(value) || IsSchema(value);\n}\n// ------------------------------------------------------------------\n// Modifiers\n// ------------------------------------------------------------------\n/** Returns true if this value has a Readonly symbol */\nexport function IsReadonly(value) {\n return ValueGuard.IsObject(value) && value[ReadonlyKind] === 'Readonly';\n}\n/** Returns true if this value has a Optional symbol */\nexport function IsOptional(value) {\n return ValueGuard.IsObject(value) && value[OptionalKind] === 'Optional';\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\n/** Returns true if the given value is TAny */\nexport function IsAny(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Any') &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TArray */\nexport function IsArray(value) {\n return (IsKindOf(value, 'Array') &&\n value.type === 'array' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items) &&\n IsOptionalNumber(value.minItems) &&\n IsOptionalNumber(value.maxItems) &&\n IsOptionalBoolean(value.uniqueItems) &&\n IsOptionalSchema(value.contains) &&\n IsOptionalNumber(value.minContains) &&\n IsOptionalNumber(value.maxContains));\n}\n/** Returns true if the given value is TAsyncIterator */\nexport function IsAsyncIterator(value) {\n // prettier-ignore\n return (IsKindOf(value, 'AsyncIterator') &&\n value.type === 'AsyncIterator' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items));\n}\n/** Returns true if the given value is TBigInt */\nexport function IsBigInt(value) {\n // prettier-ignore\n return (IsKindOf(value, 'BigInt') &&\n value.type === 'bigint' &&\n IsOptionalString(value.$id) &&\n IsOptionalBigInt(value.exclusiveMaximum) &&\n IsOptionalBigInt(value.exclusiveMinimum) &&\n IsOptionalBigInt(value.maximum) &&\n IsOptionalBigInt(value.minimum) &&\n IsOptionalBigInt(value.multipleOf));\n}\n/** Returns true if the given value is TBoolean */\nexport function IsBoolean(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Boolean') &&\n value.type === 'boolean' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TConstructor */\nexport function IsConstructor(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Constructor') &&\n value.type === 'Constructor' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every(schema => IsSchema(schema)) &&\n IsSchema(value.returns));\n}\n/** Returns true if the given value is TDate */\nexport function IsDate(value) {\n return (IsKindOf(value, 'Date') &&\n value.type === 'Date' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximumTimestamp) &&\n IsOptionalNumber(value.exclusiveMinimumTimestamp) &&\n IsOptionalNumber(value.maximumTimestamp) &&\n IsOptionalNumber(value.minimumTimestamp) &&\n IsOptionalNumber(value.multipleOfTimestamp));\n}\n/** Returns true if the given value is TFunction */\nexport function IsFunction(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Function') &&\n value.type === 'Function' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every(schema => IsSchema(schema)) &&\n IsSchema(value.returns));\n}\n/** Returns true if the given value is TInteger */\nexport function IsInteger(value) {\n return (IsKindOf(value, 'Integer') &&\n value.type === 'integer' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximum) &&\n IsOptionalNumber(value.exclusiveMinimum) &&\n IsOptionalNumber(value.maximum) &&\n IsOptionalNumber(value.minimum) &&\n IsOptionalNumber(value.multipleOf));\n}\n/** Returns true if the given schema is TProperties */\nexport function IsProperties(value) {\n // prettier-ignore\n return (ValueGuard.IsObject(value) &&\n Object.entries(value).every(([key, schema]) => IsControlCharacterFree(key) && IsSchema(schema)));\n}\n/** Returns true if the given value is TIntersect */\nexport function IsIntersect(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Intersect') &&\n (ValueGuard.IsString(value.type) && value.type !== 'object' ? false : true) &&\n ValueGuard.IsArray(value.allOf) &&\n value.allOf.every(schema => IsSchema(schema) && !IsTransform(schema)) &&\n IsOptionalString(value.type) &&\n (IsOptionalBoolean(value.unevaluatedProperties) || IsOptionalSchema(value.unevaluatedProperties)) &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TIterator */\nexport function IsIterator(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Iterator') &&\n value.type === 'Iterator' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items));\n}\n/** Returns true if the given value is a TKind with the given name. */\nexport function IsKindOf(value, kind) {\n return ValueGuard.IsObject(value) && Kind in value && value[Kind] === kind;\n}\n/** Returns true if the given value is TLiteral<string> */\nexport function IsLiteralString(value) {\n return IsLiteral(value) && ValueGuard.IsString(value.const);\n}\n/** Returns true if the given value is TLiteral<number> */\nexport function IsLiteralNumber(value) {\n return IsLiteral(value) && ValueGuard.IsNumber(value.const);\n}\n/** Returns true if the given value is TLiteral<boolean> */\nexport function IsLiteralBoolean(value) {\n return IsLiteral(value) && ValueGuard.IsBoolean(value.const);\n}\n/** Returns true if the given value is TLiteral */\nexport function IsLiteral(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Literal') &&\n IsOptionalString(value.$id) && IsLiteralValue(value.const));\n}\n/** Returns true if the given value is a TLiteralValue */\nexport function IsLiteralValue(value) {\n return ValueGuard.IsBoolean(value) || ValueGuard.IsNumber(value) || ValueGuard.IsString(value);\n}\n/** Returns true if the given value is a TMappedKey */\nexport function IsMappedKey(value) {\n // prettier-ignore\n return (IsKindOf(value, 'MappedKey') &&\n ValueGuard.IsArray(value.keys) &&\n value.keys.every(key => ValueGuard.IsNumber(key) || ValueGuard.IsString(key)));\n}\n/** Returns true if the given value is TMappedResult */\nexport function IsMappedResult(value) {\n // prettier-ignore\n return (IsKindOf(value, 'MappedResult') &&\n IsProperties(value.properties));\n}\n/** Returns true if the given value is TNever */\nexport function IsNever(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Never') &&\n ValueGuard.IsObject(value.not) &&\n Object.getOwnPropertyNames(value.not).length === 0);\n}\n/** Returns true if the given value is TNot */\nexport function IsNot(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Not') &&\n IsSchema(value.not));\n}\n/** Returns true if the given value is TNull */\nexport function IsNull(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Null') &&\n value.type === 'null' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TNumber */\nexport function IsNumber(value) {\n return (IsKindOf(value, 'Number') &&\n value.type === 'number' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximum) &&\n IsOptionalNumber(value.exclusiveMinimum) &&\n IsOptionalNumber(value.maximum) &&\n IsOptionalNumber(value.minimum) &&\n IsOptionalNumber(value.multipleOf));\n}\n/** Returns true if the given value is TObject */\nexport function IsObject(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Object') &&\n value.type === 'object' &&\n IsOptionalString(value.$id) &&\n IsProperties(value.properties) &&\n IsAdditionalProperties(value.additionalProperties) &&\n IsOptionalNumber(value.minProperties) &&\n IsOptionalNumber(value.maxProperties));\n}\n/** Returns true if the given value is TPromise */\nexport function IsPromise(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Promise') &&\n value.type === 'Promise' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.item));\n}\n/** Returns true if the given value is TRecord */\nexport function IsRecord(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Record') &&\n value.type === 'object' &&\n IsOptionalString(value.$id) &&\n IsAdditionalProperties(value.additionalProperties) &&\n ValueGuard.IsObject(value.patternProperties) &&\n ((schema) => {\n const keys = Object.getOwnPropertyNames(schema.patternProperties);\n return (keys.length === 1 &&\n IsPattern(keys[0]) &&\n ValueGuard.IsObject(schema.patternProperties) &&\n IsSchema(schema.patternProperties[keys[0]]));\n })(value));\n}\n/** Returns true if this value is TRecursive */\nexport function IsRecursive(value) {\n return ValueGuard.IsObject(value) && Hint in value && value[Hint] === 'Recursive';\n}\n/** Returns true if the given value is TRef */\nexport function IsRef(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Ref') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.$ref));\n}\n/** Returns true if the given value is TRegExp */\nexport function IsRegExp(value) {\n // prettier-ignore\n return (IsKindOf(value, 'RegExp') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.source) &&\n ValueGuard.IsString(value.flags) &&\n IsOptionalNumber(value.maxLength) &&\n IsOptionalNumber(value.minLength));\n}\n/** Returns true if the given value is TString */\nexport function IsString(value) {\n // prettier-ignore\n return (IsKindOf(value, 'String') &&\n value.type === 'string' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.minLength) &&\n IsOptionalNumber(value.maxLength) &&\n IsOptionalPattern(value.pattern) &&\n IsOptionalFormat(value.format));\n}\n/** Returns true if the given value is TSymbol */\nexport function IsSymbol(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Symbol') &&\n value.type === 'symbol' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TTemplateLiteral */\nexport function IsTemplateLiteral(value) {\n // prettier-ignore\n return (IsKindOf(value, 'TemplateLiteral') &&\n value.type === 'string' &&\n ValueGuard.IsString(value.pattern) &&\n value.pattern[0] === '^' &&\n value.pattern[value.pattern.length - 1] === '$');\n}\n/** Returns true if the given value is TThis */\nexport function IsThis(value) {\n // prettier-ignore\n return (IsKindOf(value, 'This') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.$ref));\n}\n/** Returns true of this value is TTransform */\nexport function IsTransform(value) {\n return ValueGuard.IsObject(value) && TransformKind in value;\n}\n/** Returns true if the given value is TTuple */\nexport function IsTuple(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Tuple') &&\n value.type === 'array' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsNumber(value.minItems) &&\n ValueGuard.IsNumber(value.maxItems) &&\n value.minItems === value.maxItems &&\n (( // empty\n ValueGuard.IsUndefined(value.items) &&\n ValueGuard.IsUndefined(value.additionalItems) &&\n value.minItems === 0) || (ValueGuard.IsArray(value.items) &&\n value.items.every(schema => IsSchema(schema)))));\n}\n/** Returns true if the given value is TUndefined */\nexport function IsUndefined(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Undefined') &&\n value.type === 'undefined' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TUnion<Literal<string | number>[]> */\nexport function IsUnionLiteral(value) {\n return IsUnion(value) && value.anyOf.every((schema) => IsLiteralString(schema) || IsLiteralNumber(schema));\n}\n/** Returns true if the given value is TUnion */\nexport function IsUnion(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Union') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsObject(value) &&\n ValueGuard.IsArray(value.anyOf) &&\n value.anyOf.every(schema => IsSchema(schema)));\n}\n/** Returns true if the given value is TUint8Array */\nexport function IsUint8Array(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Uint8Array') &&\n value.type === 'Uint8Array' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.minByteLength) &&\n IsOptionalNumber(value.maxByteLength));\n}\n/** Returns true if the given value is TUnknown */\nexport function IsUnknown(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Unknown') &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is a raw TUnsafe */\nexport function IsUnsafe(value) {\n return IsKindOf(value, 'Unsafe');\n}\n/** Returns true if the given value is TVoid */\nexport function IsVoid(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Void') &&\n value.type === 'void' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TKind */\nexport function IsKind(value) {\n return ValueGuard.IsObject(value) && Kind in value && ValueGuard.IsString(value[Kind]) && !KnownTypes.includes(value[Kind]);\n}\n/** Returns true if the given value is TSchema */\nexport function IsSchema(value) {\n // prettier-ignore\n return (ValueGuard.IsObject(value)) && (IsAny(value) ||\n IsArray(value) ||\n IsBoolean(value) ||\n IsBigInt(value) ||\n IsAsyncIterator(value) ||\n IsConstructor(value) ||\n IsDate(value) ||\n IsFunction(value) ||\n IsInteger(value) ||\n IsIntersect(value) ||\n IsIterator(value) ||\n IsLiteral(value) ||\n IsMappedKey(value) ||\n IsMappedResult(value) ||\n IsNever(value) ||\n IsNot(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsObject(value) ||\n IsPromise(value) ||\n IsRecord(value) ||\n IsRef(value) ||\n IsRegExp(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsTemplateLiteral(value) ||\n IsThis(value) ||\n IsTuple(value) ||\n IsUndefined(value) ||\n IsUnion(value) ||\n IsUint8Array(value) ||\n IsUnknown(value) ||\n IsUnsafe(value) ||\n IsVoid(value) ||\n IsKind(value));\n}\n","import { Any } from '../any/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { String } from '../string/index.mjs';\nimport { Unknown } from '../unknown/index.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nimport { PatternNumberExact, PatternStringExact } from '../patterns/index.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\nimport { TypeGuard, ValueGuard } from '../guard/index.mjs';\nexport class ExtendsResolverError extends TypeBoxError {\n}\nexport var ExtendsResult;\n(function (ExtendsResult) {\n ExtendsResult[ExtendsResult[\"Union\"] = 0] = \"Union\";\n ExtendsResult[ExtendsResult[\"True\"] = 1] = \"True\";\n ExtendsResult[ExtendsResult[\"False\"] = 2] = \"False\";\n})(ExtendsResult || (ExtendsResult = {}));\n// ------------------------------------------------------------------\n// IntoBooleanResult\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IntoBooleanResult(result) {\n return result === ExtendsResult.False ? result : ExtendsResult.True;\n}\n// ------------------------------------------------------------------\n// Throw\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Throw(message) {\n throw new ExtendsResolverError(message);\n}\n// ------------------------------------------------------------------\n// StructuralRight\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsStructuralRight(right) {\n return (TypeGuard.IsNever(right) ||\n TypeGuard.IsIntersect(right) ||\n TypeGuard.IsUnion(right) ||\n TypeGuard.IsUnknown(right) ||\n TypeGuard.IsAny(right));\n}\n// prettier-ignore\nfunction StructuralRight(left, right) {\n return (TypeGuard.IsNever(right) ? FromNeverRight(left, right) :\n TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsUnknown(right) ? FromUnknownRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n Throw('StructuralRight'));\n}\n// ------------------------------------------------------------------\n// Any\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromAnyRight(left, right) {\n return ExtendsResult.True;\n}\n// prettier-ignore\nfunction FromAny(left, right) {\n return (TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n (TypeGuard.IsUnion(right) && right.anyOf.some((schema) => TypeGuard.IsAny(schema) || TypeGuard.IsUnknown(schema))) ? ExtendsResult.True :\n TypeGuard.IsUnion(right) ? ExtendsResult.Union :\n TypeGuard.IsUnknown(right) ? ExtendsResult.True :\n TypeGuard.IsAny(right) ? ExtendsResult.True :\n ExtendsResult.Union);\n}\n// ------------------------------------------------------------------\n// Array\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromArrayRight(left, right) {\n return (TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union :\n TypeGuard.IsNever(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromArray(left, right) {\n return (TypeGuard.IsObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsArray(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// AsyncIterator\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromAsyncIterator(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsAsyncIterator(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// BigInt\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromBigInt(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsBigInt(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Boolean\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromBooleanRight(left, right) {\n return (TypeGuard.IsLiteralBoolean(left) ? ExtendsResult.True :\n TypeGuard.IsBoolean(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromBoolean(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsBoolean(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Constructor\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromConstructor(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsConstructor(right) ? ExtendsResult.False :\n left.parameters.length > right.parameters.length ? ExtendsResult.False :\n (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.returns, right.returns)));\n}\n// ------------------------------------------------------------------\n// Date\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromDate(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsDate(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Function\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromFunction(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsFunction(right) ? ExtendsResult.False :\n left.parameters.length > right.parameters.length ? ExtendsResult.False :\n (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.returns, right.returns)));\n}\n// ------------------------------------------------------------------\n// Integer\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIntegerRight(left, right) {\n return (TypeGuard.IsLiteral(left) && ValueGuard.IsNumber(left.const) ? ExtendsResult.True :\n TypeGuard.IsNumber(left) || TypeGuard.IsInteger(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromInteger(left, right) {\n return (TypeGuard.IsInteger(right) || TypeGuard.IsNumber(right) ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Intersect\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIntersectRight(left, right) {\n return right.allOf.every((schema) => Visit(left, schema) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromIntersect(left, right) {\n return left.allOf.some((schema) => Visit(schema, right) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// ------------------------------------------------------------------\n// Iterator\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIterator(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsIterator(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// Literal\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromLiteral(left, right) {\n return (TypeGuard.IsLiteral(right) && right.const === left.const ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsString(right) ? FromStringRight(left, right) :\n TypeGuard.IsNumber(right) ? FromNumberRight(left, right) :\n TypeGuard.IsInteger(right) ? FromIntegerRight(left, right) :\n TypeGuard.IsBoolean(right) ? FromBooleanRight(left, right) :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Never\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNeverRight(left, right) {\n return ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromNever(left, right) {\n return ExtendsResult.True;\n}\n// ------------------------------------------------------------------\n// Not\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction UnwrapTNot(schema) {\n let [current, depth] = [schema, 0];\n while (true) {\n if (!TypeGuard.IsNot(current))\n break;\n current = current.not;\n depth += 1;\n }\n return depth % 2 === 0 ? current : Unknown();\n}\n// prettier-ignore\nfunction FromNot(left, right) {\n // TypeScript has no concept of negated types, and attempts to correctly check the negated\n // type at runtime would put TypeBox at odds with TypeScripts ability to statically infer\n // the type. Instead we unwrap to either unknown or T and continue evaluating.\n // prettier-ignore\n return (TypeGuard.IsNot(left) ? Visit(UnwrapTNot(left), right) :\n TypeGuard.IsNot(right) ? Visit(left, UnwrapTNot(right)) :\n Throw('Invalid fallthrough for Not'));\n}\n// ------------------------------------------------------------------\n// Null\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNull(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsNull(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Number\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNumberRight(left, right) {\n return (TypeGuard.IsLiteralNumber(left) ? ExtendsResult.True :\n TypeGuard.IsNumber(left) || TypeGuard.IsInteger(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromNumber(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsInteger(right) || TypeGuard.IsNumber(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Object\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsObjectPropertyCount(schema, count) {\n return Object.getOwnPropertyNames(schema.properties).length === count;\n}\n// prettier-ignore\nfunction IsObjectStringLike(schema) {\n return IsObjectArrayLike(schema);\n}\n// prettier-ignore\nfunction IsObjectSymbolLike(schema) {\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'description' in schema.properties && TypeGuard.IsUnion(schema.properties.description) && schema.properties.description.anyOf.length === 2 && ((TypeGuard.IsString(schema.properties.description.anyOf[0]) &&\n TypeGuard.IsUndefined(schema.properties.description.anyOf[1])) || (TypeGuard.IsString(schema.properties.description.anyOf[1]) &&\n TypeGuard.IsUndefined(schema.properties.description.anyOf[0]))));\n}\n// prettier-ignore\nfunction IsObjectNumberLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectBooleanLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectBigIntLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectDateLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectUint8ArrayLike(schema) {\n return IsObjectArrayLike(schema);\n}\n// prettier-ignore\nfunction IsObjectFunctionLike(schema) {\n const length = Number();\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);\n}\n// prettier-ignore\nfunction IsObjectConstructorLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectArrayLike(schema) {\n const length = Number();\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);\n}\n// prettier-ignore\nfunction IsObjectPromiseLike(schema) {\n const then = FunctionType([Any()], Any());\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'then' in schema.properties && IntoBooleanResult(Visit(schema.properties['then'], then)) === ExtendsResult.True);\n}\n// ------------------------------------------------------------------\n// Property\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Property(left, right) {\n return (Visit(left, right) === ExtendsResult.False ? ExtendsResult.False :\n TypeGuard.IsOptional(left) && !TypeGuard.IsOptional(right) ? ExtendsResult.False :\n ExtendsResult.True);\n}\n// prettier-ignore\nfunction FromObjectRight(left, right) {\n return (TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union : (TypeGuard.IsNever(left) ||\n (TypeGuard.IsLiteralString(left) && IsObjectStringLike(right)) ||\n (TypeGuard.IsLiteralNumber(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsLiteralBoolean(left) && IsObjectBooleanLike(right)) ||\n (TypeGuard.IsSymbol(left) && IsObjectSymbolLike(right)) ||\n (TypeGuard.IsBigInt(left) && IsObjectBigIntLike(right)) ||\n (TypeGuard.IsString(left) && IsObjectStringLike(right)) ||\n (TypeGuard.IsSymbol(left) && IsObjectSymbolLike(right)) ||\n (TypeGuard.IsNumber(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsInteger(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsBoolean(left) && IsObjectBooleanLike(right)) ||\n (TypeGuard.IsUint8Array(left) && IsObjectUint8ArrayLike(right)) ||\n (TypeGuard.IsDate(left) && IsObjectDateLike(right)) ||\n (TypeGuard.IsConstructor(left) && IsObjectConstructorLike(right)) ||\n (TypeGuard.IsFunction(left) && IsObjectFunctionLike(right))) ? ExtendsResult.True :\n (TypeGuard.IsRecord(left) && TypeGuard.IsString(RecordKey(left))) ? (() => {\n // When expressing a Record with literal key values, the Record is converted into a Object with\n // the Hint assigned as `Record`. This is used to invert the extends logic.\n return right[Hint] === 'Record' ? ExtendsResult.True : ExtendsResult.False;\n })() :\n (TypeGuard.IsRecord(left) && TypeGuard.IsNumber(RecordKey(left))) ? (() => {\n return IsObjectPropertyCount(right, 0) ? ExtendsResult.True : ExtendsResult.False;\n })() :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromObject(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n !TypeGuard.IsObject(right) ? ExtendsResult.False :\n (() => {\n for (const key of Object.getOwnPropertyNames(right.properties)) {\n if (!(key in left.properties) && !TypeGuard.IsOptional(right.properties[key])) {\n return ExtendsResult.False;\n }\n if (TypeGuard.IsOptional(right.properties[key])) {\n return ExtendsResult.True;\n }\n if (Property(left.properties[key], right.properties[key]) === ExtendsResult.False) {\n return ExtendsResult.False;\n }\n }\n return ExtendsResult.True;\n })());\n}\n// ------------------------------------------------------------------\n// Promise\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromPromise(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) && IsObjectPromiseLike(right) ? ExtendsResult.True :\n !TypeGuard.IsPromise(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.item, right.item)));\n}\n// ------------------------------------------------------------------\n// Record\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordKey(schema) {\n return (PatternNumberExact in schema.patternProperties ? Number() :\n PatternStringExact in schema.patternProperties ? String() :\n Throw('Unknown record key pattern'));\n}\n// prettier-ignore\nfunction RecordValue(schema) {\n return (PatternNumberExact in schema.patternProperties ? schema.patternProperties[PatternNumberExact] :\n PatternStringExact in schema.patternProperties ? schema.patternProperties[PatternStringExact] :\n Throw('Unable to get record value schema'));\n}\n// prettier-ignore\nfunction FromRecordRight(left, right) {\n const [Key, Value] = [RecordKey(right), RecordValue(right)];\n return ((TypeGuard.IsLiteralString(left) && TypeGuard.IsNumber(Key) && IntoBooleanResult(Visit(left, Value)) === ExtendsResult.True) ? ExtendsResult.True :\n TypeGuard.IsUint8Array(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsString(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsArray(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsObject(left) ? (() => {\n for (const key of Object.getOwnPropertyNames(left.properties)) {\n if (Property(Value, left.properties[key]) === ExtendsResult.False) {\n return ExtendsResult.False;\n }\n }\n return ExtendsResult.True;\n })() :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromRecord(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsRecord(right) ? ExtendsResult.False :\n Visit(RecordValue(left), RecordValue(right)));\n}\n// ------------------------------------------------------------------\n// RegExp\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromRegExp(left, right) {\n // Note: RegExp types evaluate as strings, not RegExp objects.\n // Here we remap either into string and continue evaluating.\n const L = TypeGuard.IsRegExp(left) ? String() : left;\n const R = TypeGuard.IsRegExp(right) ? String() : right;\n return Visit(L, R);\n}\n// ------------------------------------------------------------------\n// String\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromStringRight(left, right) {\n return (TypeGuard.IsLiteral(left) && ValueGuard.IsString(left.const) ? ExtendsResult.True :\n TypeGuard.IsString(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromString(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsString(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Symbol\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromSymbol(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsSymbol(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// TemplateLiteral\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromTemplateLiteral(left, right) {\n // TemplateLiteral types are resolved to either unions for finite expressions or string\n // for infinite expressions. Here we call to TemplateLiteralResolver to resolve for\n // either type and continue evaluating.\n return (TypeGuard.IsTemplateLiteral(left) ? Visit(TemplateLiteralToUnion(left), right) :\n TypeGuard.IsTemplateLiteral(right) ? Visit(left, TemplateLiteralToUnion(right)) :\n Throw('Invalid fallthrough for TemplateLiteral'));\n}\n// ------------------------------------------------------------------\n// Tuple\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsArrayOfTuple(left, right) {\n return (TypeGuard.IsArray(right) &&\n left.items !== undefined &&\n left.items.every((schema) => Visit(schema, right.items) === ExtendsResult.True));\n}\n// prettier-ignore\nfunction FromTupleRight(left, right) {\n return (TypeGuard.IsNever(left) ? ExtendsResult.True :\n TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromTuple(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :\n TypeGuard.IsArray(right) && IsArrayOfTuple(left, right) ? ExtendsResult.True :\n !TypeGuard.IsTuple(right) ? ExtendsResult.False :\n (ValueGuard.IsUndefined(left.items) && !ValueGuard.IsUndefined(right.items)) || (!ValueGuard.IsUndefined(left.items) && ValueGuard.IsUndefined(right.items)) ? ExtendsResult.False :\n (ValueGuard.IsUndefined(left.items) && !ValueGuard.IsUndefined(right.items)) ? ExtendsResult.True :\n left.items.every((schema, index) => Visit(schema, right.items[index]) === ExtendsResult.True) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Uint8Array\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUint8Array(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsUint8Array(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Undefined\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUndefined(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsVoid(right) ? FromVoidRight(left, right) :\n TypeGuard.IsUndefined(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Union\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUnionRight(left, right) {\n return right.anyOf.some((schema) => Visit(left, schema) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromUnion(left, right) {\n return left.anyOf.every((schema) => Visit(schema, right) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// ------------------------------------------------------------------\n// Unknown\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUnknownRight(left, right) {\n return ExtendsResult.True;\n}\n// prettier-ignore\nfunction FromUnknown(left, right) {\n return (TypeGuard.IsNever(right) ? FromNeverRight(left, right) :\n TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n TypeGuard.IsString(right) ? FromStringRight(left, right) :\n TypeGuard.IsNumber(right) ? FromNumberRight(left, right) :\n TypeGuard.IsInteger(right) ? FromIntegerRight(left, right) :\n TypeGuard.IsBoolean(right) ? FromBooleanRight(left, right) :\n TypeGuard.IsArray(right) ? FromArrayRight(left, right) :\n TypeGuard.IsTuple(right) ? FromTupleRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsUnknown(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Void\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromVoidRight(left, right) {\n return (TypeGuard.IsUndefined(left) ? ExtendsResult.True :\n TypeGuard.IsUndefined(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromVoid(left, right) {\n return (TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsUnknown(right) ? FromUnknownRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsVoid(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction Visit(left, right) {\n return (\n // resolvable\n (TypeGuard.IsTemplateLiteral(left) || TypeGuard.IsTemplateLiteral(right)) ? FromTemplateLiteral(left, right) :\n (TypeGuard.IsRegExp(left) || TypeGuard.IsRegExp(right)) ? FromRegExp(left, right) :\n (TypeGuard.IsNot(left) || TypeGuard.IsNot(right)) ? FromNot(left, right) :\n // standard\n TypeGuard.IsAny(left) ? FromAny(left, right) :\n TypeGuard.IsArray(left) ? FromArray(left, right) :\n TypeGuard.IsBigInt(left) ? FromBigInt(left, right) :\n TypeGuard.IsBoolean(left) ? FromBoolean(left, right) :\n TypeGuard.IsAsyncIterator(left) ? FromAsyncIterator(left, right) :\n TypeGuard.IsConstructor(left) ? FromConstructor(left, right) :\n TypeGuard.IsDate(left) ? FromDate(left, right) :\n TypeGuard.IsFunction(left) ? FromFunction(left, right) :\n TypeGuard.IsInteger(left) ? FromInteger(left, right) :\n TypeGuard.IsIntersect(left) ? FromIntersect(left, right) :\n TypeGuard.IsIterator(left) ? FromIterator(left, right) :\n TypeGuard.IsLiteral(left) ? FromLiteral(left, right) :\n TypeGuard.IsNever(left) ? FromNever(left, right) :\n TypeGuard.IsNull(left) ? FromNull(left, right) :\n TypeGuard.IsNumber(left) ? FromNumber(left, right) :\n TypeGuard.IsObject(left) ? FromObject(left, right) :\n TypeGuard.IsRecord(left) ? FromRecord(left, right) :\n TypeGuard.IsString(left) ? FromString(left, right) :\n TypeGuard.IsSymbol(left) ? FromSymbol(left, right) :\n TypeGuard.IsTuple(left) ? FromTuple(left, right) :\n TypeGuard.IsPromise(left) ? FromPromise(left, right) :\n TypeGuard.IsUint8Array(left) ? FromUint8Array(left, right) :\n TypeGuard.IsUndefined(left) ? FromUndefined(left, right) :\n TypeGuard.IsUnion(left) ? FromUnion(left, right) :\n TypeGuard.IsUnknown(left) ? FromUnknown(left, right) :\n TypeGuard.IsVoid(left) ? FromVoid(left, right) :\n Throw(`Unknown left type operand '${left[Kind]}'`));\n}\nexport function ExtendsCheck(left, right) {\n return Visit(left, right);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Extends } from './extends.mjs';\n// prettier-ignore\nfunction FromProperties(P, Right, True, False, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Extends(P[K2], Right, True, False, options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(Left, Right, True, False, options) {\n return FromProperties(Left.properties, Right, True, False, options);\n}\n// prettier-ignore\nexport function ExtendsFromMappedResult(Left, Right, True, False, options) {\n const P = FromMappedResult(Left, Right, True, False, options);\n return MappedResult(P);\n}\n","import { Union } from '../union/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from './extends-check.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { ExtendsFromMappedKey } from './extends-from-mapped-key.mjs';\nimport { ExtendsFromMappedResult } from './extends-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsMappedResult } from '../guard/kind.mjs';\n// prettier-ignore\nfunction ExtendsResolve(left, right, trueType, falseType) {\n const R = ExtendsCheck(left, right);\n return (R === ExtendsResult.Union ? Union([trueType, falseType]) :\n R === ExtendsResult.True ? trueType :\n falseType);\n}\n/** `[Json]` Creates a Conditional type */\nexport function Extends(L, R, T, F, options = {}) {\n // prettier-ignore\n return (IsMappedResult(L) ? ExtendsFromMappedResult(L, R, T, F, options) :\n IsMappedKey(L) ? CloneType(ExtendsFromMappedKey(L, R, T, F, options)) :\n CloneType(ExtendsResolve(L, R, T, F), options));\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Extends } from './extends.mjs';\n// prettier-ignore\nfunction FromPropertyKey(K, U, L, R, options) {\n return {\n [K]: Extends(Literal(K), U, L, R, options)\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(K, U, L, R, options) {\n return K.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(LK, U, L, R, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(K, U, L, R, options) {\n return FromPropertyKeys(K.keys, U, L, R, options);\n}\n// prettier-ignore\nexport function ExtendsFromMappedKey(T, U, L, R, options) {\n const P = FromMappedKey(T, U, L, R, options);\n return MappedResult(P);\n}\n","import { Exclude } from './exclude.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nexport function ExcludeFromTemplateLiteral(L, R) {\n return Exclude(TemplateLiteralToUnion(L), R);\n}\n","import { Union } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from '../extends/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { ExcludeFromMappedResult } from './exclude-from-mapped-result.mjs';\nimport { ExcludeFromTemplateLiteral } from './exclude-from-template-literal.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\nfunction ExcludeRest(L, R) {\n const excluded = L.filter((inner) => ExtendsCheck(inner, R) === ExtendsResult.False);\n return excluded.length === 1 ? excluded[0] : Union(excluded);\n}\n/** `[Json]` Constructs a type by excluding from unionType all union members that are assignable to excludedMembers */\nexport function Exclude(L, R, options = {}) {\n // overloads\n if (IsTemplateLiteral(L))\n return CloneType(ExcludeFromTemplateLiteral(L, R), options);\n if (IsMappedResult(L))\n return CloneType(ExcludeFromMappedResult(L, R), options);\n // prettier-ignore\n return CloneType(IsUnion(L) ? ExcludeRest(L.anyOf, R) :\n ExtendsCheck(L, R) !== ExtendsResult.False ? Never() : L, options);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Exclude } from './exclude.mjs';\n// prettier-ignore\nfunction FromProperties(P, U) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Exclude(P[K2], U);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, T) {\n return FromProperties(R.properties, T);\n}\n// prettier-ignore\nexport function ExcludeFromMappedResult(R, T) {\n const P = FromMappedResult(R, T);\n return MappedResult(P);\n}\n","import { Extract } from './extract.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nexport function ExtractFromTemplateLiteral(L, R) {\n return Extract(TemplateLiteralToUnion(L), R);\n}\n","import { Union } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from '../extends/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { ExtractFromMappedResult } from './extract-from-mapped-result.mjs';\nimport { ExtractFromTemplateLiteral } from './extract-from-template-literal.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\nfunction ExtractRest(L, R) {\n const extracted = L.filter((inner) => ExtendsCheck(inner, R) !== ExtendsResult.False);\n return extracted.length === 1 ? extracted[0] : Union(extracted);\n}\n/** `[Json]` Constructs a type by extracting from type all union members that are assignable to union */\nexport function Extract(L, R, options = {}) {\n // overloads\n if (IsTemplateLiteral(L))\n return CloneType(ExtractFromTemplateLiteral(L, R), options);\n if (IsMappedResult(L))\n return CloneType(ExtractFromMappedResult(L, R), options);\n // prettier-ignore\n return CloneType(IsUnion(L) ? ExtractRest(L.anyOf, R) :\n ExtendsCheck(L, R) !== ExtendsResult.False ? L : Never(), options);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Extract } from './extract.mjs';\n// prettier-ignore\nfunction FromProperties(P, T) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Extract(P[K2], T);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, T) {\n return FromProperties(R.properties, T);\n}\n// prettier-ignore\nexport function ExtractFromMappedResult(R, T) {\n const P = FromMappedResult(R, T);\n return MappedResult(P);\n}\n","import { CloneType } from '../clone/type.mjs';\n/** `[JavaScript]` Extracts the InstanceType from the given Constructor type */\nexport function InstanceType(schema, options = {}) {\n return CloneType(schema.returns, options);\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Integer type */\nexport function Integer(options = {}) {\n return {\n ...options,\n [Kind]: 'Integer',\n type: 'integer',\n };\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Intrinsic } from './intrinsic.mjs';\nimport { Literal } from '../literal/index.mjs';\n// prettier-ignore\nfunction MappedIntrinsicPropertyKey(K, M, options) {\n return {\n [K]: Intrinsic(Literal(K), M, options)\n };\n}\n// prettier-ignore\nfunction MappedIntrinsicPropertyKeys(K, M, options) {\n return K.reduce((Acc, L) => {\n return { ...Acc, ...MappedIntrinsicPropertyKey(L, M, options) };\n }, {});\n}\n// prettier-ignore\nfunction MappedIntrinsicProperties(T, M, options) {\n return MappedIntrinsicPropertyKeys(T['keys'], M, options);\n}\n// prettier-ignore\nexport function IntrinsicFromMappedKey(T, M, options) {\n const P = MappedIntrinsicProperties(T, M, options);\n return MappedResult(P);\n}\n","import { TemplateLiteral, TemplateLiteralParseExact, IsTemplateLiteralExpressionFinite, TemplateLiteralExpressionGenerate } from '../template-literal/index.mjs';\nimport { IntrinsicFromMappedKey } from './intrinsic-from-mapped-key.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Union } from '../union/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsTemplateLiteral, IsUnion, IsLiteral } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// Apply\n// ------------------------------------------------------------------\nfunction ApplyUncapitalize(value) {\n const [first, rest] = [value.slice(0, 1), value.slice(1)];\n return [first.toLowerCase(), rest].join('');\n}\nfunction ApplyCapitalize(value) {\n const [first, rest] = [value.slice(0, 1), value.slice(1)];\n return [first.toUpperCase(), rest].join('');\n}\nfunction ApplyUppercase(value) {\n return value.toUpperCase();\n}\nfunction ApplyLowercase(value) {\n return value.toLowerCase();\n}\nfunction FromTemplateLiteral(schema, mode, options) {\n // note: template literals require special runtime handling as they are encoded in string patterns.\n // This diverges from the mapped type which would otherwise map on the template literal kind.\n const expression = TemplateLiteralParseExact(schema.pattern);\n const finite = IsTemplateLiteralExpressionFinite(expression);\n if (!finite)\n return { ...schema, pattern: FromLiteralValue(schema.pattern, mode) };\n const strings = [...TemplateLiteralExpressionGenerate(expression)];\n const literals = strings.map((value) => Literal(value));\n const mapped = FromRest(literals, mode);\n const union = Union(mapped);\n return TemplateLiteral([union], options);\n}\n// prettier-ignore\nfunction FromLiteralValue(value, mode) {\n return (typeof value === 'string' ? (mode === 'Uncapitalize' ? ApplyUncapitalize(value) :\n mode === 'Capitalize' ? ApplyCapitalize(value) :\n mode === 'Uppercase' ? ApplyUppercase(value) :\n mode === 'Lowercase' ? ApplyLowercase(value) :\n value) : value.toString());\n}\n// prettier-ignore\nfunction FromRest(T, M) {\n return T.map(L => Intrinsic(L, M));\n}\n/** Applies an intrinsic string manipulation to the given type. */\nexport function Intrinsic(schema, mode, options = {}) {\n // prettier-ignore\n return (\n // Intrinsic-Mapped-Inference\n IsMappedKey(schema) ? IntrinsicFromMappedKey(schema, mode, options) :\n // Standard-Inference\n IsTemplateLiteral(schema) ? FromTemplateLiteral(schema, mode, schema) :\n IsUnion(schema) ? Union(FromRest(schema.anyOf, mode), options) :\n IsLiteral(schema) ? Literal(FromLiteralValue(schema.const, mode), options) :\n schema);\n}\n","import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Capitalize LiteralString types */\nexport function Capitalize(T, options = {}) {\n return Intrinsic(T, 'Capitalize', options);\n}\n","import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Lowercase LiteralString types */\nexport function Lowercase(T, options = {}) {\n return Intrinsic(T, 'Lowercase', options);\n}\n","import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Uncapitalize LiteralString types */\nexport function Uncapitalize(T, options = {}) {\n return Intrinsic(T, 'Uncapitalize', options);\n}\n","import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Uppercase LiteralString types */\nexport function Uppercase(T, options = {}) {\n return Intrinsic(T, 'Uppercase', options);\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Not type */\nexport function Not(schema, options) {\n return {\n ...options,\n [Kind]: 'Not',\n not: CloneType(schema),\n };\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Omit } from './omit.mjs';\n// prettier-ignore\nfunction FromProperties(P, K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Omit(P[K2], K, options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, K, options) {\n return FromProperties(R.properties, K, options);\n}\n// prettier-ignore\nexport function OmitFromMappedResult(R, K, options) {\n const P = FromMappedResult(R, K, options);\n return MappedResult(P);\n}\n","import { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { TransformKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { OmitFromMappedKey } from './omit-from-mapped-key.mjs';\nimport { OmitFromMappedResult } from './omit-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsIntersect, IsUnion, IsObject, IsSchema, IsMappedResult } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromIntersect(T, K) {\n return T.map((T) => OmitResolve(T, K));\n}\n// prettier-ignore\nfunction FromUnion(T, K) {\n return T.map((T) => OmitResolve(T, K));\n}\n// ------------------------------------------------------------------\n// FromProperty\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromProperty(T, K) {\n const { [K]: _, ...R } = T;\n return R;\n}\n// prettier-ignore\nfunction FromProperties(T, K) {\n return K.reduce((T, K2) => FromProperty(T, K2), T);\n}\n// ------------------------------------------------------------------\n// OmitResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction OmitResolve(T, K) {\n return (IsIntersect(T) ? Intersect(FromIntersect(T.allOf, K)) :\n IsUnion(T) ? Union(FromUnion(T.anyOf, K)) :\n IsObject(T) ? Object(FromProperties(T.properties, K)) :\n Object({}));\n}\nexport function Omit(T, K, options = {}) {\n // mapped\n if (IsMappedKey(K))\n return OmitFromMappedKey(T, K, options);\n if (IsMappedResult(T))\n return OmitFromMappedResult(T, K, options);\n // non-mapped\n const I = IsSchema(K) ? IndexPropertyKeys(K) : K;\n const D = Discard(T, [TransformKind, '$id', 'required']);\n const R = CloneType(OmitResolve(T, I), options);\n return { ...D, ...R };\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Omit } from './omit.mjs';\n// prettier-ignore\nfunction FromPropertyKey(T, K, options) {\n return {\n [K]: Omit(T, [K], options)\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(T, K, options) {\n return K.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(T, LK, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(T, K, options) {\n return FromPropertyKeys(T, K.keys, options);\n}\n// prettier-ignore\nexport function OmitFromMappedKey(T, K, options) {\n const P = FromMappedKey(T, K, options);\n return MappedResult(P);\n}\n","import { Tuple } from '../tuple/index.mjs';\nimport { CloneRest } from '../clone/type.mjs';\n/** `[JavaScript]` Extracts the Parameters from the given Function type */\nexport function Parameters(schema, options = {}) {\n return Tuple(CloneRest(schema.parameters), { ...options });\n}\n","import { Optional } from '../optional/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { TransformKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { PartialFromMappedResult } from './partial-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsIntersect, IsUnion, IsObject } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(T) {\n return T.map(L => PartialResolve(L));\n}\n// prettier-ignore\nfunction FromProperties(T) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(T))\n Acc[K] = Optional(T[K]);\n return Acc;\n}\n// ------------------------------------------------------------------\n// PartialResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction PartialResolve(T) {\n return (IsIntersect(T) ? Intersect(FromRest(T.allOf)) :\n IsUnion(T) ? Union(FromRest(T.anyOf)) :\n IsObject(T) ? Object(FromProperties(T.properties)) :\n Object({}));\n}\n/** `[Json]` Constructs a type where all properties are optional */\nexport function Partial(T, options = {}) {\n if (IsMappedResult(T))\n return PartialFromMappedResult(T, options);\n const D = Discard(T, [TransformKind, '$id', 'required']);\n const R = CloneType(PartialResolve(T), options);\n return { ...D, ...R };\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Partial } from './partial.mjs';\n// prettier-ignore\nfunction FromProperties(K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = Partial(K[K2], options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nexport function PartialFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return MappedResult(P);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Pick } from './pick.mjs';\n// prettier-ignore\nfunction FromProperties(P, K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Pick(P[K2], K, options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, K, options) {\n return FromProperties(R.properties, K, options);\n}\n// prettier-ignore\nexport function PickFromMappedResult(R, K, options) {\n const P = FromMappedResult(R, K, options);\n return MappedResult(P);\n}\n","import { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { TransformKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { PickFromMappedKey } from './pick-from-mapped-key.mjs';\nimport { PickFromMappedResult } from './pick-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsMappedResult, IsIntersect, IsUnion, IsObject, IsSchema } from '../guard/kind.mjs';\nfunction FromIntersect(T, K) {\n return T.map((T) => PickResolve(T, K));\n}\n// prettier-ignore\nfunction FromUnion(T, K) {\n return T.map((T) => PickResolve(T, K));\n}\n// prettier-ignore\nfunction FromProperties(T, K) {\n const Acc = {};\n for (const K2 of K)\n if (K2 in T)\n Acc[K2] = T[K2];\n return Acc;\n}\n// ------------------------------------------------------------------\n// PickResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction PickResolve(T, K) {\n return (IsIntersect(T) ? Intersect(FromIntersect(T.allOf, K)) :\n IsUnion(T) ? Union(FromUnion(T.anyOf, K)) :\n IsObject(T) ? Object(FromProperties(T.properties, K)) :\n Object({}));\n}\nexport function Pick(T, K, options = {}) {\n // mapped\n if (IsMappedKey(K))\n return PickFromMappedKey(T, K, options);\n if (IsMappedResult(T))\n return PickFromMappedResult(T, K, options);\n // non-mapped\n const I = IsSchema(K) ? IndexPropertyKeys(K) : K;\n const D = Discard(T, [TransformKind, '$id', 'required']);\n const R = CloneType(PickResolve(T, I), options);\n return { ...D, ...R };\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Pick } from './pick.mjs';\n// prettier-ignore\nfunction FromPropertyKey(T, K, options) {\n return {\n [K]: Pick(T, [K], options)\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(T, K, options) {\n return K.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(T, LK, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(T, K, options) {\n return FromPropertyKeys(T, K.keys, options);\n}\n// prettier-ignore\nexport function PickFromMappedKey(T, K, options) {\n const P = FromMappedKey(T, K, options);\n return MappedResult(P);\n}\n","import { Readonly } from '../readonly/index.mjs';\nimport { Optional } from '../optional/index.mjs';\n/** `[Json]` Creates a Readonly and Optional property */\nexport function ReadonlyOptional(schema) {\n return Readonly(Optional(schema));\n}\n","import { Object } from '../object/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { IsTemplateLiteralFinite } from '../template-literal/index.mjs';\nimport { PatternStringExact, PatternNumberExact } from '../patterns/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/value.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsInteger, IsLiteral, IsNumber, IsString, IsRegExp, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// RecordCreateFromPattern\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordCreateFromPattern(pattern, T, options) {\n return {\n ...options,\n [Kind]: 'Record',\n type: 'object',\n patternProperties: { [pattern]: CloneType(T) }\n };\n}\n// ------------------------------------------------------------------\n// RecordCreateFromKeys\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordCreateFromKeys(K, T, options) {\n const Acc = {};\n for (const K2 of K)\n Acc[K2] = CloneType(T);\n return Object(Acc, { ...options, [Hint]: 'Record' });\n}\n// prettier-ignore\nfunction FromTemplateLiteralKey(K, T, options) {\n return (IsTemplateLiteralFinite(K)\n ? RecordCreateFromKeys(IndexPropertyKeys(K), T, options)\n : RecordCreateFromPattern(K.pattern, T, options));\n}\n// prettier-ignore\nfunction FromUnionKey(K, T, options) {\n return RecordCreateFromKeys(IndexPropertyKeys(Union(K)), T, options);\n}\n// prettier-ignore\nfunction FromLiteralKey(K, T, options) {\n return RecordCreateFromKeys([K.toString()], T, options);\n}\n// prettier-ignore\nfunction FromRegExpKey(K, T, options) {\n return RecordCreateFromPattern(K.source, T, options);\n}\n// prettier-ignore\nfunction FromStringKey(K, T, options) {\n const pattern = IsUndefined(K.pattern) ? PatternStringExact : K.pattern;\n return RecordCreateFromPattern(pattern, T, options);\n}\n// prettier-ignore\nfunction FromIntegerKey(_, T, options) {\n return RecordCreateFromPattern(PatternNumberExact, T, options);\n}\n// prettier-ignore\nfunction FromNumberKey(_, T, options) {\n return RecordCreateFromPattern(PatternNumberExact, T, options);\n}\n// ------------------------------------------------------------------\n// TRecordOrObject\n// ------------------------------------------------------------------\n/** `[Json]` Creates a Record type */\nexport function Record(K, T, options = {}) {\n // prettier-ignore\n return (IsUnion(K) ? FromUnionKey(K.anyOf, T, options) :\n IsTemplateLiteral(K) ? FromTemplateLiteralKey(K, T, options) :\n IsLiteral(K) ? FromLiteralKey(K.const, T, options) :\n IsInteger(K) ? FromIntegerKey(K, T, options) :\n IsNumber(K) ? FromNumberKey(K, T, options) :\n IsRegExp(K) ? FromRegExpKey(K, T, options) :\n IsString(K) ? FromStringKey(K, T, options) :\n Never(options));\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { IsUndefined } from '../guard/value.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\n// Auto Tracked For Recursive Types without ID's\nlet Ordinal = 0;\n/** `[Json]` Creates a Recursive type */\nexport function Recursive(callback, options = {}) {\n if (IsUndefined(options.$id))\n options.$id = `T${Ordinal++}`;\n const thisType = callback({ [Kind]: 'This', $ref: `${options.$id}` });\n thisType.$id = options.$id;\n // prettier-ignore\n return CloneType({ ...options, [Hint]: 'Recursive', ...thisType });\n}\n","import { Kind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsString, IsUndefined } from '../guard/value.mjs';\n/** `[Json]` Creates a Ref type. */\nexport function Ref(unresolved, options = {}) {\n if (IsString(unresolved))\n return { ...options, [Kind]: 'Ref', $ref: unresolved };\n if (IsUndefined(unresolved.$id))\n throw new Error('Reference target type must specify an $id');\n return {\n ...options,\n [Kind]: 'Ref',\n $ref: unresolved.$id,\n };\n}\n","import { IsString } from '../guard/value.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a RegExp type */\nexport function RegExp(unresolved, options = {}) {\n const expr = IsString(unresolved) ? new globalThis.RegExp(unresolved) : unresolved;\n return { ...options, [Kind]: 'RegExp', type: 'RegExp', source: expr.source, flags: expr.flags };\n}\n","/** A registry for user defined string formats */\nconst map = new Map();\n/** Returns the entries in this registry */\nexport function Entries() {\n return new Map(map);\n}\n/** Clears all user defined string formats */\nexport function Clear() {\n return map.clear();\n}\n/** Deletes a registered format */\nexport function Delete(format) {\n return map.delete(format);\n}\n/** Returns true if the user defined string format exists */\nexport function Has(format) {\n return map.has(format);\n}\n/** Sets a validation function for a user defined string format */\nexport function Set(format, func) {\n map.set(format, func);\n}\n/** Gets a validation function for a user defined string format */\nexport function Get(format) {\n return map.get(format);\n}\n","/** A registry for user defined types */\nconst map = new Map();\n/** Returns the entries in this registry */\nexport function Entries() {\n return new Map(map);\n}\n/** Clears all user defined types */\nexport function Clear() {\n return map.clear();\n}\n/** Deletes a registered type */\nexport function Delete(kind) {\n return map.delete(kind);\n}\n/** Returns true if this registry contains this kind */\nexport function Has(kind) {\n return map.has(kind);\n}\n/** Sets a validation function for a user defined type */\nexport function Set(kind, func) {\n map.set(kind, func);\n}\n/** Gets a custom validation function for a user defined type */\nexport function Get(kind) {\n return map.get(kind);\n}\n","import { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { OptionalKind, TransformKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { RequiredFromMappedResult } from './required-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsIntersect, IsUnion, IsObject } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(T) {\n return T.map(L => RequiredResolve(L));\n}\n// prettier-ignore\nfunction FromProperties(T) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(T))\n Acc[K] = Discard(T[K], [OptionalKind]);\n return Acc;\n}\n// ------------------------------------------------------------------\n// RequiredResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RequiredResolve(T) {\n return (IsIntersect(T) ? Intersect(FromRest(T.allOf)) :\n IsUnion(T) ? Union(FromRest(T.anyOf)) :\n IsObject(T) ? Object(FromProperties(T.properties)) :\n Object({}));\n}\n/** `[Json]` Constructs a type where all properties are required */\nexport function Required(T, options = {}) {\n if (IsMappedResult(T)) {\n return RequiredFromMappedResult(T, options);\n }\n else {\n const D = Discard(T, [TransformKind, '$id', 'required']);\n const R = CloneType(RequiredResolve(T), options);\n return { ...D, ...R };\n }\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Required } from './required.mjs';\n// prettier-ignore\nfunction FromProperties(P, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Required(P[K2], options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nexport function RequiredFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return MappedResult(P);\n}\n","import { CloneRest } from '../clone/type.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsTuple } from '../guard/kind.mjs';\n// prettier-ignore\nfunction RestResolve(T) {\n return (IsIntersect(T) ? CloneRest(T.allOf) :\n IsUnion(T) ? CloneRest(T.anyOf) :\n IsTuple(T) ? CloneRest(T.items ?? []) :\n []);\n}\n/** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */\nexport function Rest(T) {\n return CloneRest(RestResolve(T));\n}\n","import { CloneType } from '../clone/type.mjs';\n/** `[JavaScript]` Extracts the ReturnType from the given Function type */\nexport function ReturnType(schema, options = {}) {\n return CloneType(schema.returns, options);\n}\n","/** `[Json]` Omits compositing symbols from this schema. */\nexport function Strict(schema) {\n return JSON.parse(JSON.stringify(schema));\n}\n","import { TransformKind } from '../symbols/index.mjs';\nimport { CloneType } from '../clone/type.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// TransformBuilders\n// ------------------------------------------------------------------\nexport class TransformDecodeBuilder {\n schema;\n constructor(schema) {\n this.schema = schema;\n }\n Decode(decode) {\n return new TransformEncodeBuilder(this.schema, decode);\n }\n}\n// prettier-ignore\nexport class TransformEncodeBuilder {\n schema;\n decode;\n constructor(schema, decode) {\n this.schema = schema;\n this.decode = decode;\n }\n EncodeTransform(encode, schema) {\n const Encode = (value) => schema[TransformKind].Encode(encode(value));\n const Decode = (value) => this.decode(schema[TransformKind].Decode(value));\n const Codec = { Encode: Encode, Decode: Decode };\n return { ...schema, [TransformKind]: Codec };\n }\n EncodeSchema(encode, schema) {\n const Codec = { Decode: this.decode, Encode: encode };\n return { ...schema, [TransformKind]: Codec };\n }\n Encode(encode) {\n const schema = CloneType(this.schema);\n return (IsTransform(schema) ? this.EncodeTransform(encode, schema) : this.EncodeSchema(encode, schema));\n }\n}\n/** `[Json]` Creates a Transform type */\nexport function Transform(schema) {\n return new TransformDecodeBuilder(schema);\n}\n","import { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Unsafe type that will infers as the generic argument T */\nexport function Unsafe(options = {}) {\n return {\n ...options,\n [Kind]: options[Kind] ?? 'Unsafe',\n };\n}\n","// ------------------------------------------------------------------\n// Type: Module\n// ------------------------------------------------------------------\nexport { Any } from '../any/index.mjs';\nexport { Array } from '../array/index.mjs';\nexport { AsyncIterator } from '../async-iterator/index.mjs';\nexport { Awaited } from '../awaited/index.mjs';\nexport { BigInt } from '../bigint/index.mjs';\nexport { Boolean } from '../boolean/index.mjs';\nexport { Composite } from '../composite/index.mjs';\nexport { Const } from '../const/index.mjs';\nexport { Constructor } from '../constructor/index.mjs';\nexport { ConstructorParameters } from '../constructor-parameters/index.mjs';\nexport { Date } from '../date/index.mjs';\nexport { Deref } from '../deref/index.mjs';\nexport { Enum } from '../enum/index.mjs';\nexport { Exclude } from '../exclude/index.mjs';\nexport { Extends } from '../extends/index.mjs';\nexport { Extract } from '../extract/index.mjs';\nexport { Function } from '../function/index.mjs';\nexport { Index } from '../indexed/index.mjs';\nexport { InstanceType } from '../instance-type/index.mjs';\nexport { Integer } from '../integer/index.mjs';\nexport { Intersect } from '../intersect/index.mjs';\nexport { Capitalize, Uncapitalize, Lowercase, Uppercase } from '../intrinsic/index.mjs';\nexport { Iterator } from '../iterator/index.mjs';\nexport { KeyOf } from '../keyof/index.mjs';\nexport { Literal } from '../literal/index.mjs';\nexport { Mapped } from '../mapped/index.mjs';\nexport { Never } from '../never/index.mjs';\nexport { Not } from '../not/index.mjs';\nexport { Null } from '../null/index.mjs';\nexport { Number } from '../number/index.mjs';\nexport { Object } from '../object/index.mjs';\nexport { Omit } from '../omit/index.mjs';\nexport { Optional } from '../optional/index.mjs';\nexport { Parameters } from '../parameters/index.mjs';\nexport { Partial } from '../partial/index.mjs';\nexport { Pick } from '../pick/index.mjs';\nexport { Promise } from '../promise/index.mjs';\nexport { Readonly } from '../readonly/index.mjs';\nexport { ReadonlyOptional } from '../readonly-optional/index.mjs';\nexport { Record } from '../record/index.mjs';\nexport { Recursive } from '../recursive/index.mjs';\nexport { Ref } from '../ref/index.mjs';\nexport { RegExp } from '../regexp/index.mjs';\nexport { Required } from '../required/index.mjs';\nexport { Rest } from '../rest/index.mjs';\nexport { ReturnType } from '../return-type/index.mjs';\nexport { Strict } from '../strict/index.mjs';\nexport { String } from '../string/index.mjs';\nexport { Symbol } from '../symbol/index.mjs';\nexport { TemplateLiteral } from '../template-literal/index.mjs';\nexport { Transform } from '../transform/index.mjs';\nexport { Tuple } from '../tuple/index.mjs';\nexport { Uint8Array } from '../uint8array/index.mjs';\nexport { Undefined } from '../undefined/index.mjs';\nexport { Union } from '../union/index.mjs';\nexport { Unknown } from '../unknown/index.mjs';\nexport { Unsafe } from '../unsafe/index.mjs';\nexport { Void } from '../void/index.mjs';\n","import { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Void type */\nexport function Void(options = {}) {\n return {\n ...options,\n [Kind]: 'Void',\n type: 'void',\n };\n}\n","// ------------------------------------------------------------------\n// JsonTypeBuilder\n// ------------------------------------------------------------------\nexport { JsonTypeBuilder } from './json.mjs';\n// ------------------------------------------------------------------\n// JavaScriptTypeBuilder\n// ------------------------------------------------------------------\nimport * as TypeBuilder from './type.mjs';\nimport { JavaScriptTypeBuilder } from './javascript.mjs';\n/** JavaScript Type Builder with Static Resolution for TypeScript */\nconst Type = TypeBuilder;\nexport { JavaScriptTypeBuilder };\nexport { Type };\n","import { TSchema, Type } from \"@sinclair/typebox\";\n\nexport const Nullable = <T extends TSchema>(schema: T) =>\n Type.Union([Type.Null(), schema]);\n","import { Static, Type } from \"@sinclair/typebox\";\nimport { Nullable } from \"./nullable\";\n\nconst userSelectSchema = Type.Object({\n id: Type.String(),\n name: Nullable(Type.String()),\n email: Nullable(Type.String()),\n image: Nullable(Type.String()),\n});\n\nconst workspaceSelectSchema = Type.Object({\n id: Type.String(),\n name: Type.String(),\n});\n\nconst fileSelectSchema = Type.Object({\n id: Type.String(),\n name: Nullable(Type.String()),\n});\n\nconst resourceSelectSchema = Type.Object({\n id: Type.String(),\n path: Type.String(),\n type: Type.Union([\n Type.Literal(\"asset\"),\n Type.Literal(\"file\"),\n Type.Literal(\"fileVersion\"),\n Type.Literal(\"directory\"),\n Type.Literal(\"resource\"),\n ]),\n});\n\nconst siteSelectSchema = Type.Object({\n id: Type.String(),\n subdomain: Nullable(Type.String()),\n});\n\nexport const activityEventSchema = Type.Object({\n id: Type.String(),\n createdAt: Type.String(),\n actorId: Nullable(Type.String()),\n actor: Type.Optional(userSelectSchema),\n type: Type.Union([\n Type.Literal(\"file\"),\n Type.Literal(\"resource\"),\n Type.Literal(\"site\"),\n Type.Literal(\"snapshot\"),\n Type.Literal(\"restore\"),\n ]),\n workspaceId: Nullable(Type.String()),\n workspace: Type.Optional(workspaceSelectSchema),\n fileId: Nullable(Type.String()),\n file: Type.Optional(fileSelectSchema),\n fileVersionId: Nullable(Type.String()),\n resourceId: Nullable(Type.String()),\n resource: Type.Optional(resourceSelectSchema),\n siteId: Nullable(Type.String()),\n site: Type.Optional(siteSelectSchema),\n previousData: Nullable(Type.Any()),\n currentData: Nullable(Type.Any()),\n metadata: Nullable(Type.Any()),\n userAgent: Nullable(Type.String()),\n});\n\nexport type ActivityEvent = Static<typeof activityEventSchema>;\n\nexport const activityEventSelectConfig = {\n id: true,\n createdAt: true,\n actorId: true,\n actor: { $select: { id: true, name: true, email: true, image: true } },\n type: true,\n workspaceId: true,\n workspace: { $select: { id: true, name: true } },\n fileId: true,\n file: { $select: { id: true, name: true } },\n fileVersionId: true,\n resourceId: true,\n resource: { $select: { id: true, path: true, type: true } },\n siteId: true,\n site: { $select: { id: true, subdomain: true } },\n previousData: true,\n currentData: true,\n metadata: true,\n userAgent: true,\n} as const;\n","import { Static, Type } from \"@sinclair/typebox\";\n\nexport const assetSchema = Type.Object({\n id: Type.String(),\n stableId: Type.String(),\n url: Type.String(),\n createdAt: Type.String(),\n size: Type.Number(),\n contentType: Type.Optional(Type.String()),\n width: Type.Union([Type.Null(), Type.Number()]),\n height: Type.Union([Type.Null(), Type.Number()]),\n userId: Type.Union([Type.Null(), Type.String()]),\n});\n\nexport type Asset = Static<typeof assetSchema>;\n","import { Hint, Kind, TSchema } from \"@sinclair/typebox\";\n\nconst SchemaMap = new Map<symbol, string>([\n [Kind, \"_kind\"],\n [Hint, \"_hint\"],\n]);\n\nconst InverseSchemaMap = new Map<string, symbol>(\n Array.from(SchemaMap.entries()).map(([key, value]) => [value, key])\n);\n\nexport type Brand<T> = T & { __brand: string };\n\nexport type EncodedSchema = Brand<\"schema\">;\n\ntype NestedObject = {\n [key: string]: any;\n [sym: symbol]: any;\n};\n\nexport function encodeSchema(\n obj: TSchema,\n symMap: Map<Symbol, string> = SchemaMap\n): EncodedSchema {\n function replaceSymbols(item: any): any {\n if (Array.isArray(item)) {\n return item.map(replaceSymbols);\n } else if (typeof item === \"object\" && item !== null) {\n const newObj: NestedObject = {};\n for (const key in item) {\n if (Object.prototype.hasOwnProperty.call(item, key)) {\n const value = item[key];\n newObj[key] = replaceSymbols(value);\n }\n }\n\n for (const sym of Object.getOwnPropertySymbols(item)) {\n const stringKey = symMap.get(sym);\n if (stringKey) {\n newObj[stringKey] = replaceSymbols(item[sym]);\n }\n }\n return newObj;\n }\n return item;\n }\n\n return replaceSymbols(obj);\n}\n\nexport function decodeSchema(\n obj: EncodedSchema,\n strMap: Map<string, symbol> = InverseSchemaMap\n): TSchema {\n function replaceStringKeys(item: any): any {\n if (Array.isArray(item)) {\n return item.map(replaceStringKeys);\n } else if (typeof item === \"object\" && item !== null) {\n const newObj: NestedObject = {};\n for (const key in item) {\n if (Object.prototype.hasOwnProperty.call(item, key)) {\n const value = item[key];\n const symbolKey = strMap.get(key);\n if (symbolKey) {\n newObj[symbolKey] = replaceStringKeys(value);\n } else {\n newObj[key] = replaceStringKeys(value);\n }\n }\n }\n return newObj;\n }\n return item;\n }\n\n return replaceStringKeys(obj);\n}\n","import { Static, Type } from \"@sinclair/typebox\";\n\nexport const encodingSchema = Type.Union([\n Type.Literal(\"utf-8\"),\n Type.Literal(\"base64\"),\n]);\n\nexport const folderMediaItemSchema = Type.Object({\n id: Type.String({ format: \"uuid\", default: \"\" }),\n kind: Type.Literal(\"folder\"),\n});\n\nexport const assetMediaItemSchema = Type.Object({\n id: Type.String({ format: \"uuid\", default: \"\" }),\n kind: Type.Literal(\"asset\"),\n assetId: Type.String(),\n});\n\nexport const fileSchema = Type.Object({\n id: Type.String({ format: \"uuid\", default: \"\" }),\n kind: Type.Literal(\"file\"),\n content: Type.String(),\n encoding: encodingSchema,\n});\n\nexport const noyaFileSchema = Type.Object({\n id: Type.String({ format: \"uuid\", default: \"\" }),\n kind: Type.Literal(\"noyaFile\"),\n fileId: Type.String(),\n});\n\nexport const mediaItemSchema = Type.Union(\n [folderMediaItemSchema, assetMediaItemSchema, fileSchema, noyaFileSchema],\n {\n discriminator: \"kind\",\n }\n);\n\nexport type FolderMediaItem = Static<typeof folderMediaItemSchema>;\nexport type AssetMediaItem = Static<typeof assetMediaItemSchema>;\nexport type FileMediaItem = Static<typeof fileSchema>;\nexport type NoyaFileMediaItem = Static<typeof noyaFileSchema>;\nexport type MediaItem = Static<typeof mediaItemSchema>;\n\nexport const mediaMapSchema = Type.Record(Type.String(), mediaItemSchema);\nexport type MediaMap = Static<typeof mediaMapSchema>;\n","import { Static, Type } from \"@sinclair/typebox\";\n\nexport const repositorySchema = Type.Object({\n owner: Type.Optional(Type.String()),\n name: Type.Optional(Type.String()),\n ref: Type.Optional(Type.String()),\n path: Type.Optional(Type.String()),\n});\n\nexport type Repository = Static<typeof repositorySchema>;\n\nexport const gistSchema = Type.Object({\n id: Type.Optional(Type.String()),\n});\n\nexport type Gist = Static<typeof gistSchema>;\n","import { Static, Type } from \"@sinclair/typebox\";\n\nconst jsonSchema = Type.Recursive(\n (This) =>\n Type.Union(\n [\n Type.Object({\n type: Type.Literal(\"string\"),\n default: Type.Optional(Type.String()),\n _kind: Type.Literal(\"String\"),\n }),\n Type.Object({\n type: Type.Literal(\"number\"),\n default: Type.Optional(Type.Number()),\n minimum: Type.Optional(Type.Number()),\n maximum: Type.Optional(Type.Number()),\n _kind: Type.Literal(\"Number\"),\n }),\n Type.Object({\n type: Type.Literal(\"boolean\"),\n default: Type.Optional(Type.Boolean()),\n _kind: Type.Literal(\"Boolean\"),\n }),\n Type.Object({\n type: Type.Literal(\"null\"),\n _kind: Type.Literal(\"Null\"),\n }),\n Type.Object({\n type: Type.Literal(\"array\"),\n items: This,\n // default: Type.Optional(Type.Array(Type.Any())),\n // minItems: Type.Optional(Type.Number()),\n // maxItems: Type.Optional(Type.Number()),\n _kind: Type.Literal(\"Array\"),\n }),\n Type.Object({\n type: Type.Literal(\"object\"),\n properties: Type.Record(Type.String(), This),\n required: Type.Optional(Type.Array(Type.String())),\n // default: Type.Optional(Type.Record(Type.String(), Type.Any())),\n _kind: Type.Literal(\"Object\"),\n }),\n ],\n {\n discriminator: \"type\",\n }\n ),\n {\n $id: \"jsonSchema\",\n }\n);\n\nexport type JSONSchema = Static<typeof jsonSchema>;\nexport { jsonSchema };\n","import { Static, TSchema, Type } from \"@sinclair/typebox\";\nimport { jsonSchema } from \"./jsonSchema\";\n\nfunction Nullable<T extends TSchema>(type: T) {\n return Type.Union([type, Type.Null()], { default: null });\n}\n\nconst inputSchemaBase = {\n id: Type.String({ format: \"uuid\", default: \"\" }),\n stableId: Type.String({ format: \"uuid\", default: \"\" }),\n name: Type.String(),\n description: Nullable(Type.String()),\n required: Type.Boolean({ default: false }),\n};\n\nconst fileInputSchema = Type.Object({\n ...inputSchemaBase,\n kind: Type.Literal(\"file\"),\n toolId: Nullable(Type.String()),\n});\n\nexport type FileInput = Static<typeof fileInputSchema>;\n\nconst dataInputSchema = Type.Object({\n ...inputSchemaBase,\n kind: Type.Literal(\"data\"),\n schema: Nullable(jsonSchema),\n});\n\nexport type DataInput = Static<typeof dataInputSchema>;\n\nconst secretInputSchema = Type.Object({\n ...inputSchemaBase,\n kind: Type.Literal(\"secret\"),\n authProvider: Type.Optional(\n Type.Union([Type.Null(), Type.Literal(\"github\"), Type.Literal(\"figma\")], {\n default: null,\n })\n ),\n authScope: Type.Optional(Nullable(Type.String())),\n});\n\nexport type SecretInput = Static<typeof secretInputSchema>;\n\nexport const inputSchema = Type.Union(\n [fileInputSchema, dataInputSchema, secretInputSchema],\n {\n discriminator: \"kind\",\n }\n);\n\nexport type Input = Static<typeof inputSchema>;\n\nconst outputTransformSchemaBase = {\n id: Type.String({ format: \"uuid\", default: \"\" }),\n stableId: Type.String({ format: \"uuid\", default: \"\" }),\n order: Type.Number(),\n};\n\nconst scriptOutputTransformSchema = Type.Object({\n ...outputTransformSchemaBase,\n kind: Type.Literal(\"script\"),\n location: Type.Union([Type.Literal(\"state\"), Type.Literal(\"url\")]),\n value: Type.String(),\n});\n\nexport type ScriptOutputTransform = Static<typeof scriptOutputTransformSchema>;\n\nconst jsonPointerOutputTransformSchema = Type.Object({\n ...outputTransformSchemaBase,\n kind: Type.Literal(\"jsonPointer\"),\n value: Type.String(),\n});\n\nexport type JsonPointerOutputTransform = Static<\n typeof jsonPointerOutputTransformSchema\n>;\n\nexport const outputTransformSchema = Type.Union(\n [scriptOutputTransformSchema, jsonPointerOutputTransformSchema],\n { discriminator: \"kind\" }\n);\n\nexport type OutputTransform = Static<typeof outputTransformSchema>;\n\nexport function createFileInput(\n input: Pick<FileInput, \"id\" | \"name\" | \"stableId\"> & Partial<FileInput>\n): Input {\n return {\n ...input,\n kind: \"file\",\n toolId: input.toolId ?? null,\n description: input.description ?? null,\n required: input.required ?? false,\n };\n}\n\nexport function createDataInput(\n input: Pick<DataInput, \"id\" | \"name\" | \"stableId\"> & Partial<DataInput>\n): Input {\n return {\n ...input,\n kind: \"data\",\n schema: input.schema ?? null,\n description: input.description ?? null,\n required: input.required ?? false,\n };\n}\n\nexport function createSecretInput(\n input: Pick<SecretInput, \"id\" | \"name\" | \"stableId\"> & Partial<SecretInput>\n): Input {\n return {\n ...input,\n kind: \"secret\",\n description: input.description ?? null,\n required: input.required ?? false,\n authProvider: input.authProvider,\n authScope: input.authScope,\n };\n}\n\nexport function createScriptOutputTransform(\n transform: Pick<ScriptOutputTransform, \"id\" | \"order\" | \"stableId\"> &\n Partial<ScriptOutputTransform>\n): OutputTransform {\n return {\n ...transform,\n kind: transform.kind ?? \"script\",\n location: transform.location ?? \"state\",\n value: transform.value ?? \"\",\n };\n}\n\nexport function createJsonPointerOutputTransform(\n transform: Pick<JsonPointerOutputTransform, \"id\" | \"order\" | \"stableId\"> &\n Partial<JsonPointerOutputTransform>\n): OutputTransform {\n return {\n ...transform,\n kind: transform.kind ?? \"jsonPointer\",\n value: transform.value ?? \"\",\n };\n}\n","// --------------------------------------------------------------------------\n// Iterators\n// --------------------------------------------------------------------------\n/** Returns true if this value is an async iterator */\nexport function IsAsyncIterator(value) {\n return IsObject(value) && Symbol.asyncIterator in value;\n}\n/** Returns true if this value is an iterator */\nexport function IsIterator(value) {\n return IsObject(value) && Symbol.iterator in value;\n}\n// --------------------------------------------------------------------------\n// Object Instances\n// --------------------------------------------------------------------------\n/** Returns true if this value is not an instance of a class */\nexport function IsStandardObject(value) {\n return IsObject(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\n/** Returns true if this value is an instance of a class */\nexport function IsInstanceObject(value) {\n return IsObject(value) && !IsArray(value) && IsFunction(value.constructor) && value.constructor.name !== 'Object';\n}\n// --------------------------------------------------------------------------\n// JavaScript\n// --------------------------------------------------------------------------\n/** Returns true if this value is a Promise */\nexport function IsPromise(value) {\n return value instanceof Promise;\n}\n/** Returns true if this value is a Date */\nexport function IsDate(value) {\n return value instanceof Date && Number.isFinite(value.getTime());\n}\n/** Returns true if this value is an instance of Map<K, T> */\nexport function IsMap(value) {\n return value instanceof globalThis.Map;\n}\n/** Returns true if this value is an instance of Set<T> */\nexport function IsSet(value) {\n return value instanceof globalThis.Set;\n}\n/** Returns true if this value is RegExp */\nexport function IsRegExp(value) {\n return value instanceof globalThis.RegExp;\n}\n/** Returns true if this value is a typed array */\nexport function IsTypedArray(value) {\n return ArrayBuffer.isView(value);\n}\n/** Returns true if the value is a Int8Array */\nexport function IsInt8Array(value) {\n return value instanceof globalThis.Int8Array;\n}\n/** Returns true if the value is a Uint8Array */\nexport function IsUint8Array(value) {\n return value instanceof globalThis.Uint8Array;\n}\n/** Returns true if the value is a Uint8ClampedArray */\nexport function IsUint8ClampedArray(value) {\n return value instanceof globalThis.Uint8ClampedArray;\n}\n/** Returns true if the value is a Int16Array */\nexport function IsInt16Array(value) {\n return value instanceof globalThis.Int16Array;\n}\n/** Returns true if the value is a Uint16Array */\nexport function IsUint16Array(value) {\n return value instanceof globalThis.Uint16Array;\n}\n/** Returns true if the value is a Int32Array */\nexport function IsInt32Array(value) {\n return value instanceof globalThis.Int32Array;\n}\n/** Returns true if the value is a Uint32Array */\nexport function IsUint32Array(value) {\n return value instanceof globalThis.Uint32Array;\n}\n/** Returns true if the value is a Float32Array */\nexport function IsFloat32Array(value) {\n return value instanceof globalThis.Float32Array;\n}\n/** Returns true if the value is a Float64Array */\nexport function IsFloat64Array(value) {\n return value instanceof globalThis.Float64Array;\n}\n/** Returns true if the value is a BigInt64Array */\nexport function IsBigInt64Array(value) {\n return value instanceof globalThis.BigInt64Array;\n}\n/** Returns true if the value is a BigUint64Array */\nexport function IsBigUint64Array(value) {\n return value instanceof globalThis.BigUint64Array;\n}\n// --------------------------------------------------------------------------\n// Standard\n// --------------------------------------------------------------------------\n/** Returns true if this value has this property key */\nexport function HasPropertyKey(value, key) {\n return key in value;\n}\n/** Returns true of this value is an object type */\nexport function IsObject(value) {\n return value !== null && typeof value === 'object';\n}\n/** Returns true if this value is an array, but not a typed array */\nexport function IsArray(value) {\n return Array.isArray(value) && !ArrayBuffer.isView(value);\n}\n/** Returns true if this value is an undefined */\nexport function IsUndefined(value) {\n return value === undefined;\n}\n/** Returns true if this value is an null */\nexport function IsNull(value) {\n return value === null;\n}\n/** Returns true if this value is an boolean */\nexport function IsBoolean(value) {\n return typeof value === 'boolean';\n}\n/** Returns true if this value is an number */\nexport function IsNumber(value) {\n return typeof value === 'number';\n}\n/** Returns true if this value is an integer */\nexport function IsInteger(value) {\n return Number.isInteger(value);\n}\n/** Returns true if this value is bigint */\nexport function IsBigInt(value) {\n return typeof value === 'bigint';\n}\n/** Returns true if this value is string */\nexport function IsString(value) {\n return typeof value === 'string';\n}\n/** Returns true if this value is a function */\nexport function IsFunction(value) {\n return typeof value === 'function';\n}\n/** Returns true if this value is a symbol */\nexport function IsSymbol(value) {\n return typeof value === 'symbol';\n}\n/** Returns true if this value is a value type such as number, string, boolean */\nexport function IsValueType(value) {\n // prettier-ignore\n return (IsBigInt(value) ||\n IsBoolean(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsUndefined(value));\n}\n","import { IsObject, IsArray, IsNumber, IsUndefined } from '../value/guard/index.mjs';\nexport var TypeSystemPolicy;\n(function (TypeSystemPolicy) {\n // ------------------------------------------------------------------\n // TypeSystemPolicy\n // ------------------------------------------------------------------\n /** Shared assertion routines used by the value and errors modules */\n /** Sets whether TypeBox should assert optional properties using the TypeScript `exactOptionalPropertyTypes` assertion policy. The default is `false` */\n TypeSystemPolicy.ExactOptionalPropertyTypes = false;\n /** Sets whether arrays should be treated as a kind of objects. The default is `false` */\n TypeSystemPolicy.AllowArrayObject = false;\n /** Sets whether `NaN` or `Infinity` should be treated as valid numeric values. The default is `false` */\n TypeSystemPolicy.AllowNaN = false;\n /** Sets whether `null` should validate for void types. The default is `false` */\n TypeSystemPolicy.AllowNullVoid = false;\n /** Asserts this value using the ExactOptionalPropertyTypes policy */\n function IsExactOptionalProperty(value, key) {\n return TypeSystemPolicy.ExactOptionalPropertyTypes ? key in value : value[key] !== undefined;\n }\n TypeSystemPolicy.IsExactOptionalProperty = IsExactOptionalProperty;\n /** Asserts this value using the AllowArrayObjects policy */\n function IsObjectLike(value) {\n const isObject = IsObject(value);\n return TypeSystemPolicy.AllowArrayObject ? isObject : isObject && !IsArray(value);\n }\n TypeSystemPolicy.IsObjectLike = IsObjectLike;\n /** Asserts this value as a record using the AllowArrayObjects policy */\n function IsRecordLike(value) {\n return IsObjectLike(value) && !(value instanceof Date) && !(value instanceof Uint8Array);\n }\n TypeSystemPolicy.IsRecordLike = IsRecordLike;\n /** Asserts this value using the AllowNaN policy */\n function IsNumberLike(value) {\n return TypeSystemPolicy.AllowNaN ? IsNumber(value) : Number.isFinite(value);\n }\n TypeSystemPolicy.IsNumberLike = IsNumberLike;\n /** Asserts this value using the AllowVoidNull policy */\n function IsVoidLike(value) {\n const isUndefined = IsUndefined(value);\n return TypeSystemPolicy.AllowNullVoid ? isUndefined || value === null : isUndefined;\n }\n TypeSystemPolicy.IsVoidLike = IsVoidLike;\n})(TypeSystemPolicy || (TypeSystemPolicy = {}));\n","import { TypeRegistry, FormatRegistry } from '../type/registry/index.mjs';\nimport { Unsafe } from '../type/unsafe/index.mjs';\nimport { Kind } from '../type/symbols/index.mjs';\nimport { TypeBoxError } from '../type/error/index.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class TypeSystemDuplicateTypeKind extends TypeBoxError {\n constructor(kind) {\n super(`Duplicate type kind '${kind}' detected`);\n }\n}\nexport class TypeSystemDuplicateFormat extends TypeBoxError {\n constructor(kind) {\n super(`Duplicate string format '${kind}' detected`);\n }\n}\n/** Creates user defined types and formats and provides overrides for value checking behaviours */\nexport var TypeSystem;\n(function (TypeSystem) {\n /** Creates a new type */\n function Type(kind, check) {\n if (TypeRegistry.Has(kind))\n throw new TypeSystemDuplicateTypeKind(kind);\n TypeRegistry.Set(kind, check);\n return (options = {}) => Unsafe({ ...options, [Kind]: kind });\n }\n TypeSystem.Type = Type;\n /** Creates a new string format */\n function Format(format, check) {\n if (FormatRegistry.Has(format))\n throw new TypeSystemDuplicateFormat(format);\n FormatRegistry.Set(format, check);\n return format;\n }\n TypeSystem.Format = Format;\n})(TypeSystem || (TypeSystem = {}));\n","import { IsArray, IsBoolean, IsBigInt, IsDate, IsNull, IsNumber, IsStandardObject, IsString, IsSymbol, IsUint8Array, IsUndefined } from '../guard/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueHashError extends TypeBoxError {\n value;\n constructor(value) {\n super(`Unable to hash value`);\n this.value = value;\n }\n}\n// ------------------------------------------------------------------\n// ByteMarker\n// ------------------------------------------------------------------\nvar ByteMarker;\n(function (ByteMarker) {\n ByteMarker[ByteMarker[\"Undefined\"] = 0] = \"Undefined\";\n ByteMarker[ByteMarker[\"Null\"] = 1] = \"Null\";\n ByteMarker[ByteMarker[\"Boolean\"] = 2] = \"Boolean\";\n ByteMarker[ByteMarker[\"Number\"] = 3] = \"Number\";\n ByteMarker[ByteMarker[\"String\"] = 4] = \"String\";\n ByteMarker[ByteMarker[\"Object\"] = 5] = \"Object\";\n ByteMarker[ByteMarker[\"Array\"] = 6] = \"Array\";\n ByteMarker[ByteMarker[\"Date\"] = 7] = \"Date\";\n ByteMarker[ByteMarker[\"Uint8Array\"] = 8] = \"Uint8Array\";\n ByteMarker[ByteMarker[\"Symbol\"] = 9] = \"Symbol\";\n ByteMarker[ByteMarker[\"BigInt\"] = 10] = \"BigInt\";\n})(ByteMarker || (ByteMarker = {}));\n// ------------------------------------------------------------------\n// State\n// ------------------------------------------------------------------\nlet Accumulator = BigInt('14695981039346656037');\nconst [Prime, Size] = [BigInt('1099511628211'), BigInt('2') ** BigInt('64')];\nconst Bytes = Array.from({ length: 256 }).map((_, i) => BigInt(i));\nconst F64 = new Float64Array(1);\nconst F64In = new DataView(F64.buffer);\nconst F64Out = new Uint8Array(F64.buffer);\n// ------------------------------------------------------------------\n// NumberToBytes\n// ------------------------------------------------------------------\nfunction* NumberToBytes(value) {\n const byteCount = value === 0 ? 1 : Math.ceil(Math.floor(Math.log2(value) + 1) / 8);\n for (let i = 0; i < byteCount; i++) {\n yield (value >> (8 * (byteCount - 1 - i))) & 0xff;\n }\n}\n// ------------------------------------------------------------------\n// Hashing Functions\n// ------------------------------------------------------------------\nfunction ArrayType(value) {\n FNV1A64(ByteMarker.Array);\n for (const item of value) {\n Visit(item);\n }\n}\nfunction BooleanType(value) {\n FNV1A64(ByteMarker.Boolean);\n FNV1A64(value ? 1 : 0);\n}\nfunction BigIntType(value) {\n FNV1A64(ByteMarker.BigInt);\n F64In.setBigInt64(0, value);\n for (const byte of F64Out) {\n FNV1A64(byte);\n }\n}\nfunction DateType(value) {\n FNV1A64(ByteMarker.Date);\n Visit(value.getTime());\n}\nfunction NullType(value) {\n FNV1A64(ByteMarker.Null);\n}\nfunction NumberType(value) {\n FNV1A64(ByteMarker.Number);\n F64In.setFloat64(0, value);\n for (const byte of F64Out) {\n FNV1A64(byte);\n }\n}\nfunction ObjectType(value) {\n FNV1A64(ByteMarker.Object);\n for (const key of globalThis.Object.getOwnPropertyNames(value).sort()) {\n Visit(key);\n Visit(value[key]);\n }\n}\nfunction StringType(value) {\n FNV1A64(ByteMarker.String);\n for (let i = 0; i < value.length; i++) {\n for (const byte of NumberToBytes(value.charCodeAt(i))) {\n FNV1A64(byte);\n }\n }\n}\nfunction SymbolType(value) {\n FNV1A64(ByteMarker.Symbol);\n Visit(value.description);\n}\nfunction Uint8ArrayType(value) {\n FNV1A64(ByteMarker.Uint8Array);\n for (let i = 0; i < value.length; i++) {\n FNV1A64(value[i]);\n }\n}\nfunction UndefinedType(value) {\n return FNV1A64(ByteMarker.Undefined);\n}\nfunction Visit(value) {\n if (IsArray(value))\n return ArrayType(value);\n if (IsBoolean(value))\n return BooleanType(value);\n if (IsBigInt(value))\n return BigIntType(value);\n if (IsDate(value))\n return DateType(value);\n if (IsNull(value))\n return NullType(value);\n if (IsNumber(value))\n return NumberType(value);\n if (IsStandardObject(value))\n return ObjectType(value);\n if (IsString(value))\n return StringType(value);\n if (IsSymbol(value))\n return SymbolType(value);\n if (IsUint8Array(value))\n return Uint8ArrayType(value);\n if (IsUndefined(value))\n return UndefinedType(value);\n throw new ValueHashError(value);\n}\nfunction FNV1A64(byte) {\n Accumulator = Accumulator ^ Bytes[byte];\n Accumulator = (Accumulator * Prime) % Size;\n}\n// ------------------------------------------------------------------\n// Hash\n// ------------------------------------------------------------------\n/** Creates a FNV1A-64 non cryptographic hash of the given value */\nexport function Hash(value) {\n Accumulator = BigInt('14695981039346656037');\n Visit(value);\n return Accumulator;\n}\n","import { TypeSystemPolicy } from '../system/index.mjs';\nimport { KeyOfPattern } from '../type/keyof/index.mjs';\nimport { TypeRegistry, FormatRegistry } from '../type/registry/index.mjs';\nimport { ExtendsUndefinedCheck } from '../type/extends/extends-undefined.mjs';\nimport { GetErrorFunction } from './function.mjs';\nimport { TypeBoxError } from '../type/error/index.mjs';\nimport { Deref } from '../value/deref/index.mjs';\nimport { Hash } from '../value/hash/index.mjs';\nimport { Kind } from '../type/symbols/index.mjs';\nimport { Never } from '../type/never/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\n// prettier-ignore\nimport { IsArray, IsUint8Array, IsDate, IsPromise, IsFunction, IsAsyncIterator, IsIterator, IsBoolean, IsNumber, IsBigInt, IsString, IsSymbol, IsInteger, IsNull, IsUndefined } from '../value/guard/index.mjs';\n// ------------------------------------------------------------------\n// ValueErrorType\n// ------------------------------------------------------------------\nexport var ValueErrorType;\n(function (ValueErrorType) {\n ValueErrorType[ValueErrorType[\"ArrayContains\"] = 0] = \"ArrayContains\";\n ValueErrorType[ValueErrorType[\"ArrayMaxContains\"] = 1] = \"ArrayMaxContains\";\n ValueErrorType[ValueErrorType[\"ArrayMaxItems\"] = 2] = \"ArrayMaxItems\";\n ValueErrorType[ValueErrorType[\"ArrayMinContains\"] = 3] = \"ArrayMinContains\";\n ValueErrorType[ValueErrorType[\"ArrayMinItems\"] = 4] = \"ArrayMinItems\";\n ValueErrorType[ValueErrorType[\"ArrayUniqueItems\"] = 5] = \"ArrayUniqueItems\";\n ValueErrorType[ValueErrorType[\"Array\"] = 6] = \"Array\";\n ValueErrorType[ValueErrorType[\"AsyncIterator\"] = 7] = \"AsyncIterator\";\n ValueErrorType[ValueErrorType[\"BigIntExclusiveMaximum\"] = 8] = \"BigIntExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"BigIntExclusiveMinimum\"] = 9] = \"BigIntExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"BigIntMaximum\"] = 10] = \"BigIntMaximum\";\n ValueErrorType[ValueErrorType[\"BigIntMinimum\"] = 11] = \"BigIntMinimum\";\n ValueErrorType[ValueErrorType[\"BigIntMultipleOf\"] = 12] = \"BigIntMultipleOf\";\n ValueErrorType[ValueErrorType[\"BigInt\"] = 13] = \"BigInt\";\n ValueErrorType[ValueErrorType[\"Boolean\"] = 14] = \"Boolean\";\n ValueErrorType[ValueErrorType[\"DateExclusiveMaximumTimestamp\"] = 15] = \"DateExclusiveMaximumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateExclusiveMinimumTimestamp\"] = 16] = \"DateExclusiveMinimumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMaximumTimestamp\"] = 17] = \"DateMaximumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMinimumTimestamp\"] = 18] = \"DateMinimumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMultipleOfTimestamp\"] = 19] = \"DateMultipleOfTimestamp\";\n ValueErrorType[ValueErrorType[\"Date\"] = 20] = \"Date\";\n ValueErrorType[ValueErrorType[\"Function\"] = 21] = \"Function\";\n ValueErrorType[ValueErrorType[\"IntegerExclusiveMaximum\"] = 22] = \"IntegerExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"IntegerExclusiveMinimum\"] = 23] = \"IntegerExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"IntegerMaximum\"] = 24] = \"IntegerMaximum\";\n ValueErrorType[ValueErrorType[\"IntegerMinimum\"] = 25] = \"IntegerMinimum\";\n ValueErrorType[ValueErrorType[\"IntegerMultipleOf\"] = 26] = \"IntegerMultipleOf\";\n ValueErrorType[ValueErrorType[\"Integer\"] = 27] = \"Integer\";\n ValueErrorType[ValueErrorType[\"IntersectUnevaluatedProperties\"] = 28] = \"IntersectUnevaluatedProperties\";\n ValueErrorType[ValueErrorType[\"Intersect\"] = 29] = \"Intersect\";\n ValueErrorType[ValueErrorType[\"Iterator\"] = 30] = \"Iterator\";\n ValueErrorType[ValueErrorType[\"Kind\"] = 31] = \"Kind\";\n ValueErrorType[ValueErrorType[\"Literal\"] = 32] = \"Literal\";\n ValueErrorType[ValueErrorType[\"Never\"] = 33] = \"Never\";\n ValueErrorType[ValueErrorType[\"Not\"] = 34] = \"Not\";\n ValueErrorType[ValueErrorType[\"Null\"] = 35] = \"Null\";\n ValueErrorType[ValueErrorType[\"NumberExclusiveMaximum\"] = 36] = \"NumberExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"NumberExclusiveMinimum\"] = 37] = \"NumberExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"NumberMaximum\"] = 38] = \"NumberMaximum\";\n ValueErrorType[ValueErrorType[\"NumberMinimum\"] = 39] = \"NumberMinimum\";\n ValueErrorType[ValueErrorType[\"NumberMultipleOf\"] = 40] = \"NumberMultipleOf\";\n ValueErrorType[ValueErrorType[\"Number\"] = 41] = \"Number\";\n ValueErrorType[ValueErrorType[\"ObjectAdditionalProperties\"] = 42] = \"ObjectAdditionalProperties\";\n ValueErrorType[ValueErrorType[\"ObjectMaxProperties\"] = 43] = \"ObjectMaxProperties\";\n ValueErrorType[ValueErrorType[\"ObjectMinProperties\"] = 44] = \"ObjectMinProperties\";\n ValueErrorType[ValueErrorType[\"ObjectRequiredProperty\"] = 45] = \"ObjectRequiredProperty\";\n ValueErrorType[ValueErrorType[\"Object\"] = 46] = \"Object\";\n ValueErrorType[ValueErrorType[\"Promise\"] = 47] = \"Promise\";\n ValueErrorType[ValueErrorType[\"RegExp\"] = 48] = \"RegExp\";\n ValueErrorType[ValueErrorType[\"StringFormatUnknown\"] = 49] = \"StringFormatUnknown\";\n ValueErrorType[ValueErrorType[\"StringFormat\"] = 50] = \"StringFormat\";\n ValueErrorType[ValueErrorType[\"StringMaxLength\"] = 51] = \"StringMaxLength\";\n ValueErrorType[ValueErrorType[\"StringMinLength\"] = 52] = \"StringMinLength\";\n ValueErrorType[ValueErrorType[\"StringPattern\"] = 53] = \"StringPattern\";\n ValueErrorType[ValueErrorType[\"String\"] = 54] = \"String\";\n ValueErrorType[ValueErrorType[\"Symbol\"] = 55] = \"Symbol\";\n ValueErrorType[ValueErrorType[\"TupleLength\"] = 56] = \"TupleLength\";\n ValueErrorType[ValueErrorType[\"Tuple\"] = 57] = \"Tuple\";\n ValueErrorType[ValueErrorType[\"Uint8ArrayMaxByteLength\"] = 58] = \"Uint8ArrayMaxByteLength\";\n ValueErrorType[ValueErrorType[\"Uint8ArrayMinByteLength\"] = 59] = \"Uint8ArrayMinByteLength\";\n ValueErrorType[ValueErrorType[\"Uint8Array\"] = 60] = \"Uint8Array\";\n ValueErrorType[ValueErrorType[\"Undefined\"] = 61] = \"Undefined\";\n ValueErrorType[ValueErrorType[\"Union\"] = 62] = \"Union\";\n ValueErrorType[ValueErrorType[\"Void\"] = 63] = \"Void\";\n})(ValueErrorType || (ValueErrorType = {}));\n// ------------------------------------------------------------------\n// ValueErrors\n// ------------------------------------------------------------------\nexport class ValueErrorsUnknownTypeError extends TypeBoxError {\n schema;\n constructor(schema) {\n super('Unknown type');\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// EscapeKey\n// ------------------------------------------------------------------\nfunction EscapeKey(key) {\n return key.replace(/~/g, '~0').replace(/\\//g, '~1'); // RFC6901 Path\n}\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nfunction IsDefined(value) {\n return value !== undefined;\n}\n// ------------------------------------------------------------------\n// ValueErrorIterator\n// ------------------------------------------------------------------\nexport class ValueErrorIterator {\n iterator;\n constructor(iterator) {\n this.iterator = iterator;\n }\n [Symbol.iterator]() {\n return this.iterator;\n }\n /** Returns the first value error or undefined if no errors */\n First() {\n const next = this.iterator.next();\n return next.done ? undefined : next.value;\n }\n}\n// --------------------------------------------------------------------------\n// Create\n// --------------------------------------------------------------------------\nfunction Create(errorType, schema, path, value) {\n return { type: errorType, schema, path, value, message: GetErrorFunction()({ errorType, path, schema, value }) };\n}\n// --------------------------------------------------------------------------\n// Types\n// --------------------------------------------------------------------------\nfunction* FromAny(schema, references, path, value) { }\nfunction* FromArray(schema, references, path, value) {\n if (!IsArray(value)) {\n return yield Create(ValueErrorType.Array, schema, path, value);\n }\n if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) {\n yield Create(ValueErrorType.ArrayMinItems, schema, path, value);\n }\n if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) {\n yield Create(ValueErrorType.ArrayMaxItems, schema, path, value);\n }\n for (let i = 0; i < value.length; i++) {\n yield* Visit(schema.items, references, `${path}/${i}`, value[i]);\n }\n // prettier-ignore\n if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {\n const hashed = Hash(element);\n if (set.has(hashed)) {\n return false;\n }\n else {\n set.add(hashed);\n }\n } return true; })())) {\n yield Create(ValueErrorType.ArrayUniqueItems, schema, path, value);\n }\n // contains\n if (!(IsDefined(schema.contains) || IsDefined(schema.minContains) || IsDefined(schema.maxContains))) {\n return;\n }\n const containsSchema = IsDefined(schema.contains) ? schema.contains : Never();\n const containsCount = value.reduce((acc, value, index) => (Visit(containsSchema, references, `${path}${index}`, value).next().done === true ? acc + 1 : acc), 0);\n if (containsCount === 0) {\n yield Create(ValueErrorType.ArrayContains, schema, path, value);\n }\n if (IsNumber(schema.minContains) && containsCount < schema.minContains) {\n yield Create(ValueErrorType.ArrayMinContains, schema, path, value);\n }\n if (IsNumber(schema.maxContains) && containsCount > schema.maxContains) {\n yield Create(ValueErrorType.ArrayMaxContains, schema, path, value);\n }\n}\nfunction* FromAsyncIterator(schema, references, path, value) {\n if (!IsAsyncIterator(value))\n yield Create(ValueErrorType.AsyncIterator, schema, path, value);\n}\nfunction* FromBigInt(schema, references, path, value) {\n if (!IsBigInt(value))\n return yield Create(ValueErrorType.BigInt, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.BigIntExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.BigIntExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.BigIntMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.BigIntMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) {\n yield Create(ValueErrorType.BigIntMultipleOf, schema, path, value);\n }\n}\nfunction* FromBoolean(schema, references, path, value) {\n if (!IsBoolean(value))\n yield Create(ValueErrorType.Boolean, schema, path, value);\n}\nfunction* FromConstructor(schema, references, path, value) {\n yield* Visit(schema.returns, references, path, value.prototype);\n}\nfunction* FromDate(schema, references, path, value) {\n if (!IsDate(value))\n return yield Create(ValueErrorType.Date, schema, path, value);\n if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) {\n yield Create(ValueErrorType.DateExclusiveMaximumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) {\n yield Create(ValueErrorType.DateExclusiveMinimumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) {\n yield Create(ValueErrorType.DateMaximumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) {\n yield Create(ValueErrorType.DateMinimumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) {\n yield Create(ValueErrorType.DateMultipleOfTimestamp, schema, path, value);\n }\n}\nfunction* FromFunction(schema, references, path, value) {\n if (!IsFunction(value))\n yield Create(ValueErrorType.Function, schema, path, value);\n}\nfunction* FromInteger(schema, references, path, value) {\n if (!IsInteger(value))\n return yield Create(ValueErrorType.Integer, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.IntegerExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.IntegerExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.IntegerMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.IntegerMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n yield Create(ValueErrorType.IntegerMultipleOf, schema, path, value);\n }\n}\nfunction* FromIntersect(schema, references, path, value) {\n for (const inner of schema.allOf) {\n const next = Visit(inner, references, path, value).next();\n if (!next.done) {\n yield Create(ValueErrorType.Intersect, schema, path, value);\n yield next.value;\n }\n }\n if (schema.unevaluatedProperties === false) {\n const keyCheck = new RegExp(KeyOfPattern(schema));\n for (const valueKey of Object.getOwnPropertyNames(value)) {\n if (!keyCheck.test(valueKey)) {\n yield Create(ValueErrorType.IntersectUnevaluatedProperties, schema, `${path}/${valueKey}`, value);\n }\n }\n }\n if (typeof schema.unevaluatedProperties === 'object') {\n const keyCheck = new RegExp(KeyOfPattern(schema));\n for (const valueKey of Object.getOwnPropertyNames(value)) {\n if (!keyCheck.test(valueKey)) {\n const next = Visit(schema.unevaluatedProperties, references, `${path}/${valueKey}`, value[valueKey]).next();\n if (!next.done)\n yield next.value; // yield interior\n }\n }\n }\n}\nfunction* FromIterator(schema, references, path, value) {\n if (!IsIterator(value))\n yield Create(ValueErrorType.Iterator, schema, path, value);\n}\nfunction* FromLiteral(schema, references, path, value) {\n if (!(value === schema.const))\n yield Create(ValueErrorType.Literal, schema, path, value);\n}\nfunction* FromNever(schema, references, path, value) {\n yield Create(ValueErrorType.Never, schema, path, value);\n}\nfunction* FromNot(schema, references, path, value) {\n if (Visit(schema.not, references, path, value).next().done === true)\n yield Create(ValueErrorType.Not, schema, path, value);\n}\nfunction* FromNull(schema, references, path, value) {\n if (!IsNull(value))\n yield Create(ValueErrorType.Null, schema, path, value);\n}\nfunction* FromNumber(schema, references, path, value) {\n if (!TypeSystemPolicy.IsNumberLike(value))\n return yield Create(ValueErrorType.Number, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.NumberExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.NumberExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.NumberMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.NumberMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n yield Create(ValueErrorType.NumberMultipleOf, schema, path, value);\n }\n}\nfunction* FromObject(schema, references, path, value) {\n if (!TypeSystemPolicy.IsObjectLike(value))\n return yield Create(ValueErrorType.Object, schema, path, value);\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n yield Create(ValueErrorType.ObjectMinProperties, schema, path, value);\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n yield Create(ValueErrorType.ObjectMaxProperties, schema, path, value);\n }\n const requiredKeys = Array.isArray(schema.required) ? schema.required : [];\n const knownKeys = Object.getOwnPropertyNames(schema.properties);\n const unknownKeys = Object.getOwnPropertyNames(value);\n for (const requiredKey of requiredKeys) {\n if (unknownKeys.includes(requiredKey))\n continue;\n yield Create(ValueErrorType.ObjectRequiredProperty, schema.properties[requiredKey], `${path}/${EscapeKey(requiredKey)}`, undefined);\n }\n if (schema.additionalProperties === false) {\n for (const valueKey of unknownKeys) {\n if (!knownKeys.includes(valueKey)) {\n yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path}/${EscapeKey(valueKey)}`, value[valueKey]);\n }\n }\n }\n if (typeof schema.additionalProperties === 'object') {\n for (const valueKey of unknownKeys) {\n if (knownKeys.includes(valueKey))\n continue;\n yield* Visit(schema.additionalProperties, references, `${path}/${EscapeKey(valueKey)}`, value[valueKey]);\n }\n }\n for (const knownKey of knownKeys) {\n const property = schema.properties[knownKey];\n if (schema.required && schema.required.includes(knownKey)) {\n yield* Visit(property, references, `${path}/${EscapeKey(knownKey)}`, value[knownKey]);\n if (ExtendsUndefinedCheck(schema) && !(knownKey in value)) {\n yield Create(ValueErrorType.ObjectRequiredProperty, property, `${path}/${EscapeKey(knownKey)}`, undefined);\n }\n }\n else {\n if (TypeSystemPolicy.IsExactOptionalProperty(value, knownKey)) {\n yield* Visit(property, references, `${path}/${EscapeKey(knownKey)}`, value[knownKey]);\n }\n }\n }\n}\nfunction* FromPromise(schema, references, path, value) {\n if (!IsPromise(value))\n yield Create(ValueErrorType.Promise, schema, path, value);\n}\nfunction* FromRecord(schema, references, path, value) {\n if (!TypeSystemPolicy.IsRecordLike(value))\n return yield Create(ValueErrorType.Object, schema, path, value);\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n yield Create(ValueErrorType.ObjectMinProperties, schema, path, value);\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n yield Create(ValueErrorType.ObjectMaxProperties, schema, path, value);\n }\n const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];\n const regex = new RegExp(patternKey);\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (regex.test(propertyKey))\n yield* Visit(patternSchema, references, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n if (typeof schema.additionalProperties === 'object') {\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (!regex.test(propertyKey))\n yield* Visit(schema.additionalProperties, references, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n }\n if (schema.additionalProperties === false) {\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (regex.test(propertyKey))\n continue;\n return yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n }\n}\nfunction* FromRef(schema, references, path, value) {\n yield* Visit(Deref(schema, references), references, path, value);\n}\nfunction* FromRegExp(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) {\n yield Create(ValueErrorType.StringMinLength, schema, path, value);\n }\n if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) {\n yield Create(ValueErrorType.StringMaxLength, schema, path, value);\n }\n const regex = new RegExp(schema.source, schema.flags);\n if (!regex.test(value)) {\n return yield Create(ValueErrorType.RegExp, schema, path, value);\n }\n}\nfunction* FromString(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) {\n yield Create(ValueErrorType.StringMinLength, schema, path, value);\n }\n if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) {\n yield Create(ValueErrorType.StringMaxLength, schema, path, value);\n }\n if (IsString(schema.pattern)) {\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value)) {\n yield Create(ValueErrorType.StringPattern, schema, path, value);\n }\n }\n if (IsString(schema.format)) {\n if (!FormatRegistry.Has(schema.format)) {\n yield Create(ValueErrorType.StringFormatUnknown, schema, path, value);\n }\n else {\n const format = FormatRegistry.Get(schema.format);\n if (!format(value)) {\n yield Create(ValueErrorType.StringFormat, schema, path, value);\n }\n }\n }\n}\nfunction* FromSymbol(schema, references, path, value) {\n if (!IsSymbol(value))\n yield Create(ValueErrorType.Symbol, schema, path, value);\n}\nfunction* FromTemplateLiteral(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value)) {\n yield Create(ValueErrorType.StringPattern, schema, path, value);\n }\n}\nfunction* FromThis(schema, references, path, value) {\n yield* Visit(Deref(schema, references), references, path, value);\n}\nfunction* FromTuple(schema, references, path, value) {\n if (!IsArray(value))\n return yield Create(ValueErrorType.Tuple, schema, path, value);\n if (schema.items === undefined && !(value.length === 0)) {\n return yield Create(ValueErrorType.TupleLength, schema, path, value);\n }\n if (!(value.length === schema.maxItems)) {\n return yield Create(ValueErrorType.TupleLength, schema, path, value);\n }\n if (!schema.items) {\n return;\n }\n for (let i = 0; i < schema.items.length; i++) {\n yield* Visit(schema.items[i], references, `${path}/${i}`, value[i]);\n }\n}\nfunction* FromUndefined(schema, references, path, value) {\n if (!IsUndefined(value))\n yield Create(ValueErrorType.Undefined, schema, path, value);\n}\nfunction* FromUnion(schema, references, path, value) {\n let count = 0;\n for (const subschema of schema.anyOf) {\n const errors = [...Visit(subschema, references, path, value)];\n if (errors.length === 0)\n return; // matched\n count += errors.length;\n }\n if (count > 0) {\n yield Create(ValueErrorType.Union, schema, path, value);\n }\n}\nfunction* FromUint8Array(schema, references, path, value) {\n if (!IsUint8Array(value))\n return yield Create(ValueErrorType.Uint8Array, schema, path, value);\n if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) {\n yield Create(ValueErrorType.Uint8ArrayMaxByteLength, schema, path, value);\n }\n if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) {\n yield Create(ValueErrorType.Uint8ArrayMinByteLength, schema, path, value);\n }\n}\nfunction* FromUnknown(schema, references, path, value) { }\nfunction* FromVoid(schema, references, path, value) {\n if (!TypeSystemPolicy.IsVoidLike(value))\n yield Create(ValueErrorType.Void, schema, path, value);\n}\nfunction* FromKind(schema, references, path, value) {\n const check = TypeRegistry.Get(schema[Kind]);\n if (!check(schema, value))\n yield Create(ValueErrorType.Kind, schema, path, value);\n}\nfunction* Visit(schema, references, path, value) {\n const references_ = IsDefined(schema.$id) ? [...references, schema] : references;\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Any':\n return yield* FromAny(schema_, references_, path, value);\n case 'Array':\n return yield* FromArray(schema_, references_, path, value);\n case 'AsyncIterator':\n return yield* FromAsyncIterator(schema_, references_, path, value);\n case 'BigInt':\n return yield* FromBigInt(schema_, references_, path, value);\n case 'Boolean':\n return yield* FromBoolean(schema_, references_, path, value);\n case 'Constructor':\n return yield* FromConstructor(schema_, references_, path, value);\n case 'Date':\n return yield* FromDate(schema_, references_, path, value);\n case 'Function':\n return yield* FromFunction(schema_, references_, path, value);\n case 'Integer':\n return yield* FromInteger(schema_, references_, path, value);\n case 'Intersect':\n return yield* FromIntersect(schema_, references_, path, value);\n case 'Iterator':\n return yield* FromIterator(schema_, references_, path, value);\n case 'Literal':\n return yield* FromLiteral(schema_, references_, path, value);\n case 'Never':\n return yield* FromNever(schema_, references_, path, value);\n case 'Not':\n return yield* FromNot(schema_, references_, path, value);\n case 'Null':\n return yield* FromNull(schema_, references_, path, value);\n case 'Number':\n return yield* FromNumber(schema_, references_, path, value);\n case 'Object':\n return yield* FromObject(schema_, references_, path, value);\n case 'Promise':\n return yield* FromPromise(schema_, references_, path, value);\n case 'Record':\n return yield* FromRecord(schema_, references_, path, value);\n case 'Ref':\n return yield* FromRef(schema_, references_, path, value);\n case 'RegExp':\n return yield* FromRegExp(schema_, references_, path, value);\n case 'String':\n return yield* FromString(schema_, references_, path, value);\n case 'Symbol':\n return yield* FromSymbol(schema_, references_, path, value);\n case 'TemplateLiteral':\n return yield* FromTemplateLiteral(schema_, references_, path, value);\n case 'This':\n return yield* FromThis(schema_, references_, path, value);\n case 'Tuple':\n return yield* FromTuple(schema_, references_, path, value);\n case 'Undefined':\n return yield* FromUndefined(schema_, references_, path, value);\n case 'Union':\n return yield* FromUnion(schema_, references_, path, value);\n case 'Uint8Array':\n return yield* FromUint8Array(schema_, references_, path, value);\n case 'Unknown':\n return yield* FromUnknown(schema_, references_, path, value);\n case 'Void':\n return yield* FromVoid(schema_, references_, path, value);\n default:\n if (!TypeRegistry.Has(schema_[Kind]))\n throw new ValueErrorsUnknownTypeError(schema);\n return yield* FromKind(schema_, references_, path, value);\n }\n}\n/** Returns an iterator for each error in this value. */\nexport function Errors(...args) {\n const iterator = args.length === 3 ? Visit(args[0], args[1], '', args[2]) : Visit(args[0], [], '', args[1]);\n return new ValueErrorIterator(iterator);\n}\n","import { IsStandardObject, IsArray, IsTypedArray, IsValueType, IsSymbol, IsUndefined } from '../guard/index.mjs';\nimport { ValuePointer } from '../pointer/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { Literal } from '../../type/literal/index.mjs';\nimport { Object } from '../../type/object/index.mjs';\nimport { String } from '../../type/string/index.mjs';\nimport { Unknown } from '../../type/unknown/index.mjs';\nimport { Union } from '../../type/union/index.mjs';\nexport const Insert = Object({\n type: Literal('insert'),\n path: String(),\n value: Unknown(),\n});\nexport const Update = Object({\n type: Literal('update'),\n path: String(),\n value: Unknown(),\n});\nexport const Delete = Object({\n type: Literal('delete'),\n path: String(),\n});\nexport const Edit = Union([Insert, Update, Delete]);\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueDeltaError extends TypeBoxError {\n value;\n constructor(value, message) {\n super(message);\n this.value = value;\n }\n}\nexport class ValueDeltaSymbolError extends ValueDeltaError {\n value;\n constructor(value) {\n super(value, 'Cannot diff objects with symbol keys');\n this.value = value;\n }\n}\n// ------------------------------------------------------------------\n// Command Factory\n// ------------------------------------------------------------------\nfunction CreateUpdate(path, value) {\n return { type: 'update', path, value };\n}\nfunction CreateInsert(path, value) {\n return { type: 'insert', path, value };\n}\nfunction CreateDelete(path) {\n return { type: 'delete', path };\n}\n// ------------------------------------------------------------------\n// Diffing Generators\n// ------------------------------------------------------------------\nfunction* ObjectType(path, current, next) {\n if (!IsStandardObject(next))\n return yield CreateUpdate(path, next);\n const currentKeys = [...globalThis.Object.keys(current), ...globalThis.Object.getOwnPropertySymbols(current)];\n const nextKeys = [...globalThis.Object.keys(next), ...globalThis.Object.getOwnPropertySymbols(next)];\n for (const key of currentKeys) {\n if (IsSymbol(key))\n throw new ValueDeltaSymbolError(key);\n if (IsUndefined(next[key]) && nextKeys.includes(key))\n yield CreateUpdate(`${path}/${globalThis.String(key)}`, undefined);\n }\n for (const key of nextKeys) {\n if (IsUndefined(current[key]) || IsUndefined(next[key]))\n continue;\n if (IsSymbol(key))\n throw new ValueDeltaSymbolError(key);\n yield* Visit(`${path}/${globalThis.String(key)}`, current[key], next[key]);\n }\n for (const key of nextKeys) {\n if (IsSymbol(key))\n throw new ValueDeltaSymbolError(key);\n if (IsUndefined(current[key]))\n yield CreateInsert(`${path}/${globalThis.String(key)}`, next[key]);\n }\n for (const key of currentKeys.reverse()) {\n if (IsSymbol(key))\n throw new ValueDeltaSymbolError(key);\n if (IsUndefined(next[key]) && !nextKeys.includes(key))\n yield CreateDelete(`${path}/${globalThis.String(key)}`);\n }\n}\nfunction* ArrayType(path, current, next) {\n if (!IsArray(next))\n return yield CreateUpdate(path, next);\n for (let i = 0; i < Math.min(current.length, next.length); i++) {\n yield* Visit(`${path}/${i}`, current[i], next[i]);\n }\n for (let i = 0; i < next.length; i++) {\n if (i < current.length)\n continue;\n yield CreateInsert(`${path}/${i}`, next[i]);\n }\n for (let i = current.length - 1; i >= 0; i--) {\n if (i < next.length)\n continue;\n yield CreateDelete(`${path}/${i}`);\n }\n}\nfunction* TypedArrayType(path, current, next) {\n if (!IsTypedArray(next) || current.length !== next.length || globalThis.Object.getPrototypeOf(current).constructor.name !== globalThis.Object.getPrototypeOf(next).constructor.name)\n return yield CreateUpdate(path, next);\n for (let i = 0; i < Math.min(current.length, next.length); i++) {\n yield* Visit(`${path}/${i}`, current[i], next[i]);\n }\n}\nfunction* ValueType(path, current, next) {\n if (current === next)\n return;\n yield CreateUpdate(path, next);\n}\nfunction* Visit(path, current, next) {\n if (IsStandardObject(current))\n return yield* ObjectType(path, current, next);\n if (IsArray(current))\n return yield* ArrayType(path, current, next);\n if (IsTypedArray(current))\n return yield* TypedArrayType(path, current, next);\n if (IsValueType(current))\n return yield* ValueType(path, current, next);\n throw new ValueDeltaError(current, 'Unable to create diff edits for unknown value');\n}\n// ------------------------------------------------------------------\n// Diff\n// ------------------------------------------------------------------\nexport function Diff(current, next) {\n return [...Visit('', current, next)];\n}\n// ------------------------------------------------------------------\n// Patch\n// ------------------------------------------------------------------\nfunction IsRootUpdate(edits) {\n return edits.length > 0 && edits[0].path === '' && edits[0].type === 'update';\n}\nfunction IsIdentity(edits) {\n return edits.length === 0;\n}\nexport function Patch(current, edits) {\n if (IsRootUpdate(edits)) {\n return Clone(edits[0].value);\n }\n if (IsIdentity(edits)) {\n return Clone(current);\n }\n const clone = Clone(current);\n for (const edit of edits) {\n switch (edit.type) {\n case 'insert': {\n ValuePointer.Set(clone, edit.path, edit.value);\n break;\n }\n case 'update': {\n ValuePointer.Set(clone, edit.path, edit.value);\n break;\n }\n case 'delete': {\n ValuePointer.Delete(clone, edit.path);\n break;\n }\n }\n }\n return clone;\n}\n","import { Kind, TSchema, TypeGuard } from \"@sinclair/typebox\";\nimport { defineTree } from \"tree-visit\";\n\nexport const SchemaTree = defineTree<TSchema>((schema) => {\n if (TypeGuard.IsUnion(schema)) {\n return schema.anyOf;\n } else if (TypeGuard.IsObject(schema)) {\n return Object.values(schema.properties);\n } else if (TypeGuard.IsArray(schema)) {\n return [schema.items];\n }\n\n return [];\n}).withOptions({\n getLabel(node) {\n return node[Kind] ?? \"<UnknownKind>\";\n },\n});\n\nexport type SchemaDefs = Record<string, TSchema>;\n\nexport function findAllDefs(schema?: TSchema): TSchema[] {\n if (!schema) return [];\n\n return SchemaTree.flat(schema).flatMap((node) => {\n return node.$id ? [node] : [];\n });\n}\n\nexport type SchemaDefsOrReferences = SchemaDefs | TSchema[];\n\nexport function normalizeDefs(defs: SchemaDefsOrReferences): TSchema[] {\n if (Array.isArray(defs)) {\n return defs;\n }\n\n return Object.values(defs);\n}\n\nexport function toSchemaDefs(defs: SchemaDefsOrReferences): SchemaDefs {\n if (Array.isArray(defs)) {\n return Object.fromEntries(defs.map((def) => [def.$id, def]));\n }\n\n return defs;\n}\n","import { Static, Type } from \"@sinclair/typebox\";\nimport { Nullable } from \"./nullable\";\n\nconst baseSchemaProperties = {\n id: Type.String(),\n stableId: Type.String(),\n path: Type.String(),\n createdAt: Type.String(),\n updatedAt: Type.String(),\n accessibleByFileId: Nullable(Type.String()),\n accessibleByFile: Type.Optional(\n Type.Object({\n id: Type.String(),\n name: Type.String(),\n toolId: Type.String(),\n })\n ),\n accessibleByFileVersionId: Nullable(Type.String()),\n url: Type.Optional(Type.String()),\n} as const;\n\nconst uploadableAssetSchema = Type.Object({\n content: Type.String(),\n contentType: Type.String(),\n encoding: Type.Union([Type.Literal(\"utf-8\"), Type.Literal(\"base64\")]),\n});\n\nconst assetResourceSchema = Type.Object({\n ...baseSchemaProperties,\n type: Type.Literal(\"asset\"),\n assetId: Type.String(),\n});\n\nconst assetResourceCreateSchema = Type.Object({\n ...baseSchemaProperties,\n type: Type.Literal(\"asset\"),\n assetId: Type.Optional(Type.String()),\n asset: Type.Optional(uploadableAssetSchema),\n});\n\nconst fileResourceSchema = Type.Object({\n ...baseSchemaProperties,\n type: Type.Literal(\"file\"),\n fileId: Type.String(),\n});\n\nconst directoryResourceSchema = Type.Object({\n ...baseSchemaProperties,\n type: Type.Literal(\"directory\"),\n});\n\nconst nestedResourceSchema = Type.Object({\n ...baseSchemaProperties,\n type: Type.Literal(\"resource\"),\n fileId: Type.String(),\n resourceId: Type.String(),\n});\n\nexport const resourceSchema = Type.Union(\n [\n assetResourceSchema,\n fileResourceSchema,\n directoryResourceSchema,\n nestedResourceSchema,\n ],\n {\n discriminator: \"type\",\n }\n);\n\nexport const resourceCreateSchema = Type.Union(\n [\n assetResourceCreateSchema,\n fileResourceSchema,\n directoryResourceSchema,\n nestedResourceSchema,\n ],\n {\n discriminator: \"type\",\n }\n);\n\nexport type UploadableAsset = Static<typeof uploadableAssetSchema>;\nexport type AssetResource = Static<typeof assetResourceSchema>;\nexport type AssetResourceCreate = Static<typeof assetResourceCreateSchema>;\nexport type FileResource = Static<typeof fileResourceSchema>;\nexport type DirectoryResource = Static<typeof directoryResourceSchema>;\nexport type NestedResource = Static<typeof nestedResourceSchema>;\nexport type Resource = Static<typeof resourceSchema>;\nexport type ResourceCreate = Static<typeof resourceCreateSchema>;\nexport type ResourceMap = Record<string, Resource>;\nexport type ResourceCreateMap = Record<string, ResourceCreate>;\n\ntype CommonResourceParameters = \"path\" | \"type\" | \"accessibleByFileId\";\ntype CommonResourceParametersWithoutAccessibleByFileId = \"path\" | \"type\";\n\nexport type CreateDirectoryParameters = Pick<\n DirectoryResource,\n CommonResourceParameters\n>;\nexport type CreateDirectoryParametersWithoutAccessibleByFileId = Pick<\n DirectoryResource,\n CommonResourceParametersWithoutAccessibleByFileId\n>;\nexport type CreateAssetParameters = Pick<\n AssetResourceCreate,\n CommonResourceParameters | \"assetId\" | \"asset\"\n>;\n\nexport type CreateNestedParameters = Pick<\n NestedResource,\n CommonResourceParameters | \"fileId\" | \"resourceId\"\n>;\n\nexport type CreateAssetParametersWithoutAccessibleByFileId = Pick<\n AssetResourceCreate,\n CommonResourceParametersWithoutAccessibleByFileId | \"assetId\" | \"asset\"\n>;\nexport type CreateFileParameters = Pick<\n FileResource,\n CommonResourceParameters | \"fileId\"\n>;\nexport type CreateFileParametersWithoutAccessibleByFileId = Pick<\n FileResource,\n CommonResourceParametersWithoutAccessibleByFileId | \"fileId\"\n>;\nexport type CreateNestedParametersWithoutAccessibleByFileId = Pick<\n NestedResource,\n CommonResourceParametersWithoutAccessibleByFileId | \"fileId\" | \"resourceId\"\n>;\n\nexport type CreateResourceParameters =\n | CreateDirectoryParameters\n | CreateAssetParameters\n | CreateFileParameters\n | CreateNestedParameters;\n\nexport type DeleteResourceParameters = { id: string };\n\nexport type CreateResourceParametersWithoutAccessibleByFileId =\n | CreateDirectoryParametersWithoutAccessibleByFileId\n | CreateAssetParametersWithoutAccessibleByFileId\n | CreateFileParametersWithoutAccessibleByFileId\n | CreateNestedParametersWithoutAccessibleByFileId;\n\nexport const resourceSelectConfig = {\n id: true,\n stableId: true,\n path: true,\n type: true,\n createdAt: true,\n updatedAt: true,\n accessibleByFileId: true,\n accessibleByFileVersionId: true,\n assetId: true,\n fileId: true,\n resourceId: true,\n} as const;\n\nexport const flatResourceSchema = Type.Object({\n ...baseSchemaProperties,\n type: Type.Union([\n Type.Literal(\"asset\"),\n Type.Literal(\"file\"),\n Type.Literal(\"directory\"),\n Type.Literal(\"resource\"),\n ]),\n assetId: Nullable(Type.String()),\n fileId: Nullable(Type.String()),\n resourceId: Nullable(Type.String()),\n});\n\nexport type FlatResource = Static<typeof flatResourceSchema>;\n\nexport type ModifiedResource = {\n id: string;\n stableId: string;\n path?: string;\n assetId?: string;\n asset?: UploadableAsset;\n};\n\nexport type DiffResources = {\n addedResources: ResourceCreate[];\n removedResources: Resource[];\n modifiedResources: ModifiedResource[];\n};\n\nfunction getChangedResourceProperties({\n oldResource,\n newResource,\n oldPath,\n newPath,\n}: {\n oldResource: Resource;\n newResource: ResourceCreate;\n oldPath?: string;\n newPath?: string;\n}): Pick<ModifiedResource, \"path\" | \"assetId\" | \"asset\"> {\n const changed: Pick<ModifiedResource, \"path\" | \"assetId\" | \"asset\"> = {};\n\n if (newPath !== undefined && (oldPath ?? oldResource.path) !== newPath) {\n changed.path = newPath;\n }\n\n const oldAssetId =\n oldResource.type === \"asset\" ? oldResource.assetId : undefined;\n const newAssetId =\n newResource.type === \"asset\" ? newResource.assetId : undefined;\n\n if (oldAssetId !== newAssetId) {\n changed.assetId = newAssetId;\n }\n\n if (newResource.type === \"asset\" && newResource.asset !== undefined) {\n changed.asset = newResource.asset;\n }\n\n return changed;\n}\n\nexport function diffResourceMaps(\n resourceMap: ResourceMap,\n newResourceMap: ResourceCreateMap,\n idProperty: \"id\" | \"stableId\"\n): DiffResources {\n const oldIdToPathMap = new Map(\n Object.entries(resourceMap).map(([path, entity]) => [\n entity[idProperty],\n path,\n ])\n );\n const newIdToPathMap = new Map(\n Object.entries(newResourceMap).map(([path, entity]) => [\n entity[idProperty],\n path,\n ])\n );\n const oldIds = new Set(\n Object.values(resourceMap).map((entity) => entity[idProperty])\n );\n const newIds = new Set(\n Object.values(newResourceMap).map((entity) => entity[idProperty])\n );\n const sameIds = oldIds.intersection(newIds);\n const addedResources = Object.values(newResourceMap).filter(\n (entity) => !oldIds.has(entity[idProperty])\n );\n const removedResources = Object.values(resourceMap).filter(\n (entity) => !newIds.has(entity[idProperty])\n );\n const sameIdModifiedResources = [...sameIds].flatMap((id) => {\n const oldResource = Object.values(resourceMap).find(\n (resource) => resource[idProperty] === id\n );\n const newResource = Object.values(newResourceMap).find(\n (resource) => resource[idProperty] === id\n );\n\n if (!oldResource || !newResource) return [];\n\n const oldPath = oldIdToPathMap.get(id);\n const newPath = newIdToPathMap.get(id);\n const changedProperties = getChangedResourceProperties({\n oldResource,\n newResource,\n oldPath,\n newPath,\n });\n\n if (Object.keys(changedProperties).length === 0) return [];\n\n return [{ id, stableId: newResource.stableId, ...changedProperties }];\n });\n\n const removedResourcesByPath = new Map(\n removedResources.map((resource) => [resource.path, resource])\n );\n\n const swappedPaths = new Set<string>();\n const swappedModifiedResources: ModifiedResource[] = [];\n\n for (const addedResource of addedResources) {\n const existingResource = removedResourcesByPath.get(addedResource.path);\n\n if (!existingResource) continue;\n if (existingResource.type !== addedResource.type) continue;\n if (existingResource[idProperty] === addedResource[idProperty]) continue;\n\n swappedPaths.add(addedResource.path);\n\n const changedProperties = getChangedResourceProperties({\n oldResource: existingResource,\n newResource: addedResource,\n oldPath: existingResource.path,\n newPath: addedResource.path,\n });\n\n if (Object.keys(changedProperties).length === 0) continue;\n\n const id = existingResource[idProperty];\n\n swappedModifiedResources.push({\n id,\n stableId: existingResource.stableId,\n ...changedProperties,\n });\n }\n\n const filteredAddedResources = addedResources.filter(\n (resource) => !swappedPaths.has(resource.path)\n );\n const filteredRemovedResources = removedResources.filter(\n (resource) => !swappedPaths.has(resource.path)\n );\n\n return {\n addedResources: filteredAddedResources,\n removedResources: filteredRemovedResources,\n modifiedResources: [\n ...sameIdModifiedResources,\n ...swappedModifiedResources,\n ],\n };\n}\n","import { path } from \"imfs\";\nimport { defineTree } from \"tree-visit\";\nimport {\n AssetResourceCreate,\n DirectoryResource,\n FileResource,\n NestedResource,\n Resource,\n ResourceMap,\n} from \"./resourceSchema\";\n\ntype PartialParameters = Partial<{\n createdAt: string;\n updatedAt: string;\n accessibleByFileId: string | null;\n accessibleByFileVersionId: string | null;\n}>;\n\nexport const createDirectoryResource = (\n parameters: Omit<DirectoryResource, \"type\" | keyof PartialParameters> &\n Partial<PartialParameters>\n): DirectoryResource => {\n return {\n ...parameters,\n accessibleByFileId: parameters.accessibleByFileId ?? null,\n accessibleByFileVersionId: parameters.accessibleByFileVersionId ?? null,\n createdAt: parameters.createdAt ?? new Date().toISOString(),\n updatedAt: parameters.updatedAt ?? new Date().toISOString(),\n type: \"directory\",\n };\n};\n\nexport const createAssetResource = (\n parameters: Omit<AssetResourceCreate, \"type\" | keyof PartialParameters> &\n PartialParameters\n): AssetResourceCreate => {\n return {\n ...parameters,\n accessibleByFileId: parameters.accessibleByFileId ?? null,\n accessibleByFileVersionId: parameters.accessibleByFileVersionId ?? null,\n createdAt: parameters.createdAt ?? new Date().toISOString(),\n updatedAt: parameters.updatedAt ?? new Date().toISOString(),\n type: \"asset\",\n };\n};\n\nexport const createFileResource = (\n parameters: Omit<FileResource, \"type\" | keyof PartialParameters> &\n PartialParameters\n): FileResource => {\n return {\n ...parameters,\n accessibleByFileId: parameters.accessibleByFileId ?? null,\n accessibleByFileVersionId: parameters.accessibleByFileVersionId ?? null,\n createdAt: parameters.createdAt ?? new Date().toISOString(),\n updatedAt: parameters.updatedAt ?? new Date().toISOString(),\n type: \"file\",\n };\n};\n\nexport const createNestedResource = (\n parameters: Omit<NestedResource, \"type\" | keyof PartialParameters> &\n Partial<PartialParameters>\n): NestedResource => {\n return {\n ...parameters,\n accessibleByFileId: parameters.accessibleByFileId ?? null,\n accessibleByFileVersionId: parameters.accessibleByFileVersionId ?? null,\n createdAt: parameters.createdAt ?? new Date().toISOString(),\n updatedAt: parameters.updatedAt ?? new Date().toISOString(),\n type: \"resource\",\n };\n};\n\nexport const createResource = (parameters: Resource) => {\n return {\n ...parameters,\n };\n};\n\nexport const rootResourcePath = \".\";\nexport const rootResourceName = \"All Files\";\nexport const PLACEHOLDER_ITEM_NAME = \"placeholder\";\n\nexport const rootResource: Resource = {\n id: \"root\",\n type: \"directory\",\n path: \".\",\n createdAt: \"\",\n updatedAt: \"\",\n accessibleByFileId: \"\",\n accessibleByFileVersionId: \"\",\n stableId: \"root\",\n};\n\nexport type ResourceTree = ReturnType<typeof defineTree<Resource>> & {\n idToPathMap: Map<string, string>;\n parentToChildrenMap: Map<string, Resource[]>;\n resourcesWithRoot: Resource[];\n getParentIdForId: (id: string) => string | undefined;\n getNameForId: (id: string) => string;\n};\n\nexport const createResourceTree = (resourceMap: ResourceMap): ResourceTree => {\n const sortedResourceMap = Object.fromEntries(\n Object.entries(resourceMap).sort((a, b) => a[0].localeCompare(b[0]))\n );\n const parentToChildrenMap = new Map<string, Resource[]>();\n const idToPathMap = new Map<string, string>();\n idToPathMap.set(rootResource.id, rootResource.path);\n\n for (const [itemPath, item] of Object.entries(sortedResourceMap)) {\n const parentPath = path.dirname(itemPath);\n const children = parentToChildrenMap.get(parentPath) ?? [];\n children.push(item);\n parentToChildrenMap.set(parentPath, children);\n idToPathMap.set(item.id, itemPath);\n }\n\n const tree = defineTree<Resource>({\n getChildren: (item) => {\n const itemPath =\n item === rootResource ? rootResource.path : idToPathMap.get(item.id);\n if (!itemPath) return [];\n return parentToChildrenMap.get(itemPath) ?? [];\n },\n onDetectCycle: \"skip\",\n getIdentifier: (item) => item.id,\n });\n\n const result = tree.withOptions({\n getLabel: (item) => idToPathMap.get(item.id) ?? \"\",\n });\n\n const resourcesWithRoot = [...Object.values(sortedResourceMap), rootResource];\n const getNameForId = (id: string) =>\n id === rootResource.id\n ? rootResourceName\n : path.basename(idToPathMap.get(id) ?? \"\");\n const getParentIdForId = (id: string) => {\n const itemPath = idToPathMap.get(id);\n if (!itemPath) return;\n const parentPath = path.dirname(itemPath);\n return idToPathMap.get(parentPath);\n };\n\n return {\n ...result,\n idToPathMap,\n parentToChildrenMap,\n resourcesWithRoot,\n getParentIdForId,\n getNameForId,\n };\n};\n","import { FormatRegistry } from \"@sinclair/typebox/type\";\n\nexport * from \"./activityEventSchema\";\nexport * from \"./asset\";\nexport * from \"./encode\";\nexport * from \"./filesSchema\";\nexport * from \"./gitHubSchema\";\nexport * from \"./input\";\nexport * from \"./jsonSchema\";\nexport * from \"./nullable\";\nexport * from \"./parseType\";\nexport * from \"./resourceSchema\";\nexport * from \"./resourceTree\";\nexport * from \"./SchemaTree\";\n\nfunction validateUUID(value: string) {\n return /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(\n value\n );\n}\n\n// Register color format\nFormatRegistry.Set(\"color\", () => true);\nFormatRegistry.Set(\"uuid\", validateUUID);\n","\"use client\";\n\nimport { MenuItem } from \"@noya-app/noya-designsystem\";\nimport {\n CreateResourceParametersWithoutAccessibleByFileId,\n DeleteResourceParameters,\n diffResourceMaps,\n Input,\n MediaItem,\n ModifiedResource,\n OutputTransform,\n Resource,\n ResourceCreate,\n ResourceCreateMap,\n ResourceMap,\n} from \"@noya-app/noya-schemas\";\nimport {\n GetAtPath,\n Observable,\n ObservableOptions,\n PathKey,\n} from \"@noya-app/observable\";\nimport { useJsonMemo, useStableCallback } from \"@noya-app/react-utils\";\nimport {\n ActivityEventsManager,\n AssetTranscriptionResult,\n CreateParams,\n ExtractRequestBody,\n findNoyaUser,\n MultiplayerPatchMetadata,\n MultiplayerStateManager,\n NoyaManager,\n PublishCallback,\n ResourceManager,\n SafeEval,\n SharedConnectionDataManager,\n StateManagerOptions,\n Static,\n StreamFilter,\n TranscriptionManager,\n TSchema,\n} from \"@noya-app/state-manager\";\nimport React, {\n createContext,\n Dispatch,\n SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport {\n AppTheme,\n AppViewType,\n useNoyaStateInternal,\n UseNoyaStateOptions,\n} from \"./noyaApp\";\nimport { getNoyaManagerSingleton, getNoyaSingletonBindings } from \"./singleton\";\nimport { useObservable } from \"./useObservable\";\n\nexport function resourceToCreateParameters(\n resource: ResourceCreate\n): CreateResourceParametersWithoutAccessibleByFileId {\n switch (resource.type) {\n case \"directory\":\n return {\n path: resource.path,\n type: \"directory\",\n };\n case \"asset\":\n return {\n path: resource.path,\n type: \"asset\",\n assetId: resource.assetId,\n asset: resource.asset,\n };\n case \"file\":\n return {\n path: resource.path,\n type: \"file\",\n fileId: resource.fileId,\n };\n case \"resource\":\n return {\n path: resource.path,\n type: \"resource\",\n fileId: resource.fileId,\n resourceId: resource.resourceId,\n };\n default:\n throw new Error(`Unknown resource type: ${(resource as any).type}`);\n }\n}\n\ntype ResourcePatchRequestBody = ExtractRequestBody<\"PATCH /api/resources\">;\n\ntype BuildResourcePatchPayloadParameters = {\n addedResources: ResourceCreate[];\n modifiedResources: ModifiedResource[];\n removedResources: Resource[];\n};\n\nexport function buildResourcePatchPayload({\n addedResources,\n modifiedResources,\n removedResources,\n}: BuildResourcePatchPayloadParameters): ResourcePatchRequestBody {\n const createEntries = addedResources.map(resourceToCreateParameters);\n\n const dedupedCreateEntries = Array.from(\n new Map(createEntries.map((entry) => [entry.path, entry])).values()\n );\n\n const updateEntries =\n modifiedResources.map((resource) => {\n const update: NonNullable<ResourcePatchRequestBody[\"update\"]>[number] = {\n id: resource.id,\n ...(resource.path !== undefined ? { path: resource.path } : {}),\n ...(resource.assetId !== undefined\n ? { assetId: resource.assetId }\n : {}),\n ...(resource.asset ? { asset: resource.asset } : {}),\n };\n\n return update;\n }) ?? [];\n\n const deleteEntries: DeleteResourceParameters[] = removedResources.map(\n (resource) => ({ id: resource.id })\n );\n\n const patch: ResourcePatchRequestBody = {};\n\n if (dedupedCreateEntries.length) {\n patch.create = dedupedCreateEntries;\n }\n if (updateEntries.length) {\n patch.update = updateEntries;\n }\n if (deleteEntries.length) {\n patch.delete = deleteEntries;\n }\n\n return patch;\n}\n\nexport interface NoyaStateProviderProps<\n S,\n M extends object,\n E extends object,\n MenuT extends string,\n I extends Record<string, any> = Record<string, unknown>,\n> extends Omit<\n UseNoyaStateOptions<S, M, E, MenuT, I>,\n \"schema\" | \"mergeHistoryEntries\"\n > {\n children: React.ReactNode;\n initialState?: S;\n fallback?: React.ReactNode;\n}\n\nexport type AnyNoyaStateContextValue = {\n noyaManager: NoyaManager<any, any, any, any, any>;\n theme: AppTheme;\n viewType: AppViewType;\n};\n\nexport const AnyNoyaStateContext = createContext<\n AnyNoyaStateContextValue | undefined\n>(undefined);\n\nexport function useAnyNoyaStateContext() {\n const value = useContext(AnyNoyaStateContext);\n\n if (!value) {\n const bindings = getNoyaSingletonBindings();\n\n if (bindings) {\n return {\n noyaManager: getNoyaManagerSingleton(),\n theme: bindings.theme,\n viewType: bindings.viewType,\n } as AnyNoyaStateContextValue;\n }\n\n throw new Error(\n \"useNoyaStateContext must be used within a NoyaStateProvider\"\n );\n }\n\n return value;\n}\n\nexport function useAnyNoyaManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager as NoyaManager<any, any, any, any, any>;\n}\n\nexport function useColorScheme() {\n const { theme } = useAnyNoyaStateContext();\n return theme;\n}\n\nexport function useViewType() {\n const { viewType } = useAnyNoyaStateContext();\n return viewType;\n}\n\nexport function useAssets() {\n const { noyaManager } = useAnyNoyaStateContext();\n return useObservable(noyaManager.assetManager.assets$);\n}\n\nexport function useAsset(id: string | undefined) {\n const { noyaManager } = useAnyNoyaStateContext();\n const observable = useMemo(\n () =>\n noyaManager.assetManager.assets$.map(\n (assets) =>\n assets.find((a) => a.stableId === id) ??\n assets.find((a) => a.id === id)\n ),\n [noyaManager, id]\n );\n return useObservable(observable);\n}\n\nexport function useAssetManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n const isInitialized = useObservable(noyaManager.assetManager.isInitialized$);\n return useMemo(\n () => ({\n create: noyaManager.assetManager.create,\n delete: noyaManager.assetManager.delete,\n isInitialized,\n }),\n [noyaManager, isInitialized]\n );\n}\n\nexport function useAIManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.aiManager;\n}\n\nexport function useSecretManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.secretManager;\n}\n\nexport function useSecrets() {\n const { noyaManager } = useAnyNoyaStateContext();\n return useObservable(noyaManager.secretManager.secrets$);\n}\n\nexport function useSecret(name: string) {\n const { noyaManager } = useAnyNoyaStateContext();\n\n return useObservable(\n noyaManager.secretManager.secrets$,\n useCallback((secrets) => secrets.find((s) => s.name === name), [name])\n );\n}\n\nexport function useInputs() {\n const { noyaManager } = useAnyNoyaStateContext();\n return useObservable(noyaManager.ioManager.inputs$);\n}\n\nexport function useOutputTransforms() {\n const { noyaManager } = useAnyNoyaStateContext();\n return useObservable(noyaManager.ioManager.outputTransforms$);\n}\n\nexport function useIOManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.ioManager;\n}\n\nexport function usePublish(callback: PublishCallback) {\n const { noyaManager } = useAnyNoyaStateContext();\n const stableCallback = useStableCallback(callback);\n\n useEffect(() => {\n noyaManager.publishingManager.setPublishingEnabled(true);\n noyaManager.publishingManager.getFilesToPublish = stableCallback;\n\n return () => {\n noyaManager.publishingManager.setPublishingEnabled(false);\n noyaManager.publishingManager.getFilesToPublish = undefined;\n };\n }, [noyaManager, stableCallback]);\n}\n\nexport function useIsInitialized() {\n const { noyaManager, viewType } = useAnyNoyaStateContext();\n\n const isInitializedObservable = useMemo(\n () =>\n Observable.combine(\n [\n ...(viewType === \"preview\"\n ? []\n : [noyaManager.multiplayerStateManager.isInitialized$]),\n noyaManager.secretManager.isInitialized$,\n noyaManager.assetManager.isInitialized$,\n ],\n (values) => values.every((v) => v)\n ),\n [noyaManager, viewType]\n );\n\n return useObservable(isInitializedObservable);\n}\n\nexport function usePipelineManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.pipelineManager;\n}\n\nexport function useNoyaUserManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.userManager;\n}\n\nexport function useNoyaUsers() {\n const userManager = useNoyaUserManager();\n return useObservable(userManager?.allUsers$);\n}\n\nexport function useNoyaUser(id?: string) {\n const userManager = useNoyaUserManager();\n\n return useObservable(\n userManager?.allUsers$,\n useCallback((users) => findNoyaUser(users, id), [id])\n );\n}\n\nexport function useNoyaActiveUsers() {\n const userManager = useNoyaUserManager();\n return useObservable(userManager?.connectedUsers$);\n}\n\nexport function useNoyaCurrentUser() {\n const userManager = useNoyaUserManager();\n return useObservable(userManager?.currentUser$);\n}\n\nexport function useNoyaCurrentUserId() {\n const userManager = useNoyaUserManager();\n return useObservable(userManager?.currentId$);\n}\n\nexport function useAnySharedConnectionData() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.sharedConnectionDataManager;\n}\n\nexport function useEnqueueInput<\n I extends Record<string, any> = Record<string, unknown>,\n>() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.enqueueInput as NoyaManager<\n any,\n any,\n any,\n any,\n I\n >[\"enqueueInput\"];\n}\n\nexport function useIsProcessing() {\n const { noyaManager } = useAnyNoyaStateContext();\n return useObservable(noyaManager.isProcessing$);\n}\n\nexport function useFileName() {\n const { noyaManager } = useAnyNoyaStateContext();\n return useObservable(noyaManager.filePropertyManager.optimisticValue$);\n}\n\nexport function useFilePropertyManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.filePropertyManager;\n}\n\nexport function useSetFileNameState() {\n const fileName = useFileName();\n const filePropertyManager = useFilePropertyManager();\n return [fileName, filePropertyManager.updateName] as const;\n}\n\nexport function useResourceManager(): ResourceManager {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.resourceManager;\n}\n\nexport function useNoyaTranscriptionManager(): TranscriptionManager {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.transcriptionManager;\n}\n\ntype UseNoyaAssetTranscriptionOptions = {\n endpoint?: string;\n apiKey?: string;\n};\n\n/**\n * Returns a text transcription for the given assetId.\n *\n * - This API is available when running your app on noya.io, not when running it locally.\n * - An asset must first be uploaded via the `useAssetManager().create()` method before\n * it can be transcribed via this API.\n * - The asset must be a valid audio or video file.\n */\nexport function useNoyaAssetTranscription(\n assetId: string,\n options?: UseNoyaAssetTranscriptionOptions\n): AssetTranscriptionResult;\nexport function useNoyaAssetTranscription(\n assetId?: string,\n options?: UseNoyaAssetTranscriptionOptions\n): AssetTranscriptionResult | undefined;\nexport function useNoyaAssetTranscription(\n assetId?: string,\n options?: UseNoyaAssetTranscriptionOptions\n): AssetTranscriptionResult | undefined {\n const transcriptionManager = useNoyaTranscriptionManager();\n\n const observable = useMemo(() => {\n if (!assetId) return undefined;\n\n return transcriptionManager.getAssetTranscription$(assetId, {\n endpoint: options?.endpoint,\n apiKey: options?.apiKey,\n });\n }, [transcriptionManager, assetId, options?.endpoint, options?.apiKey]);\n\n return useObservable(observable);\n}\n\n// export function useResources(): Resource[] {\n// const { noyaManager } = useAnyNoyaStateContext();\n// const resources = useObservable(noyaManager.resourceManager.resources$);\n// return resources;\n// }\n\nexport function resourceToMediaItem(resource: Resource): MediaItem {\n switch (resource.type) {\n case \"asset\":\n return { kind: \"asset\", id: resource.id, assetId: resource.assetId };\n case \"file\":\n return { kind: \"noyaFile\", id: resource.id, fileId: resource.fileId };\n default:\n return { kind: \"folder\", id: resource.id };\n }\n}\n\nexport function useResources({\n shouldDeleteAssets = true,\n}: {\n shouldDeleteAssets?: boolean;\n} = {}): [ResourceMap, Dispatch<SetStateAction<ResourceCreateMap>>] {\n const resourceManager = useResourceManager();\n const assetManager = useAssetManager();\n\n const resourceMap = useObservable(\n resourceManager.optimisticResources$,\n useCallback((resources) => {\n return Object.fromEntries(\n resources.map((resource) => [resource.path, resource])\n );\n }, [])\n );\n\n const setResourceMap = useCallback(\n async (action: SetStateAction<ResourceCreateMap>) => {\n const newResourceMap =\n action instanceof Function ? action(resourceMap) : action;\n\n const { addedResources, removedResources, modifiedResources } =\n diffResourceMaps(resourceMap, newResourceMap, \"id\");\n\n const patchPayload = buildResourcePatchPayload({\n addedResources,\n modifiedResources,\n removedResources,\n });\n\n const hasPatchOperations =\n (patchPayload.create?.length ?? 0) > 0 ||\n (patchPayload.update?.length ?? 0) > 0 ||\n (patchPayload.delete?.length ?? 0) > 0;\n\n if (hasPatchOperations) {\n await resourceManager.patchResources(patchPayload);\n }\n\n if (shouldDeleteAssets) {\n for (const resource of removedResources) {\n if (resource.type === \"asset\") {\n await assetManager.delete(resource.assetId);\n }\n }\n }\n },\n [resourceMap, resourceManager, shouldDeleteAssets, assetManager]\n );\n\n return [resourceMap, setResourceMap];\n}\n\nconst emptyArray: unknown[] = [];\n\nexport function useActivityEvents(streamFilter: StreamFilter) {\n const { noyaManager } = useAnyNoyaStateContext();\n return useActivityEventsForManager(\n streamFilter,\n noyaManager.activityEventsManager\n );\n}\n\nexport function useActivityEventsForManager(\n streamFilter: StreamFilter | undefined,\n activityEventsManager: ActivityEventsManager\n) {\n const [streamId, setStreamId] = useState<string | undefined>(undefined);\n const stableStreamFilter = useJsonMemo(streamFilter);\n\n useEffect(() => {\n if (!stableStreamFilter) return;\n\n const streamId = activityEventsManager.subscribe(stableStreamFilter);\n\n setStreamId(streamId);\n\n return () => {\n setStreamId(undefined);\n\n activityEventsManager.unsubscribe(streamId);\n };\n }, [activityEventsManager, stableStreamFilter]);\n\n const observable = streamId\n ? activityEventsManager.getStream(streamId)\n : undefined;\n\n return useObservable(observable) ?? emptyArray;\n}\n\nexport const FallbackUntilInitialized = ({\n children,\n fallback,\n}: {\n children: React.ReactNode;\n fallback?: React.ReactNode;\n}) => {\n const isInitialized = useIsInitialized();\n\n return isInitialized ? children : fallback ?? null;\n};\n\nexport function createNoyaContext<\n Schema extends TSchema,\n M extends object = object,\n E extends object = object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n>({\n schema,\n mergeHistoryEntries,\n outputTransforms,\n inputs,\n safeEval,\n}: {\n schema: Schema;\n mergeHistoryEntries?: StateManagerOptions<\n Static<Schema>,\n M & Pick<MultiplayerPatchMetadata, \"name\" | \"timestamp\">\n >[\"mergeHistoryEntries\"];\n safeEval?: SafeEval;\n outputTransforms?: CreateParams<OutputTransform>[];\n inputs?: CreateParams<Input>[];\n}) {\n type S = Static<Schema>;\n type PartialM = Partial<\n M & Pick<MultiplayerPatchMetadata, \"name\" | \"timestamp\">\n >;\n\n const NoyaStateContext = AnyNoyaStateContext as React.Context<\n NoyaManager<S, M, E, MenuT, I> | undefined\n >;\n\n function NoyaContextProvider({\n children,\n contextValue,\n }: {\n children: React.ReactNode;\n contextValue: AnyNoyaStateContextValue;\n }) {\n return (\n <AnyNoyaStateContext.Provider value={contextValue}>\n {children}\n </AnyNoyaStateContext.Provider>\n );\n }\n\n function NoyaStateProvider({\n children,\n initialState,\n ...options\n }: NoyaStateProviderProps<S, M, E, MenuT, I>) {\n const [, , { noyaManager, theme, viewType }] = useNoyaStateInternal<\n S,\n M,\n E,\n MenuT,\n I\n >(initialState, {\n schema,\n mergeHistoryEntries,\n outputTransforms,\n inputs,\n safeEval,\n ...(options as any),\n });\n\n const contextValue = useMemo(\n () => ({\n noyaManager,\n theme,\n viewType,\n }),\n [noyaManager, theme, viewType]\n );\n\n return (\n <NoyaContextProvider contextValue={contextValue}>\n {options.fallback !== undefined ? (\n <FallbackUntilInitialized fallback={options.fallback}>\n {children}\n </FallbackUntilInitialized>\n ) : (\n children\n )}\n </NoyaContextProvider>\n );\n }\n\n function useValue(): S;\n function useValue<A>(\n selector: (value: S) => A,\n options?: Pick<ObservableOptions, \"isEqual\">\n ): A;\n function useValue<P extends PathKey[] | string>(path: P): GetAtPath<S, P>;\n function useValue(\n path?: PathKey[] | string | ((value: S) => any),\n options?: Pick<ObservableOptions, \"isEqual\">\n ) {\n const { noyaManager } = useAnyNoyaStateContext();\n\n let actualPath: PathKey[] | string =\n typeof path === \"function\" || !path ? \"\" : path;\n\n const mappedObservable = useMemo(() => {\n if (typeof path === \"function\") {\n return noyaManager.multiplayerStateManager.optimisticState$.map(path, {\n isEqual: options?.isEqual,\n });\n }\n return noyaManager.multiplayerStateManager.optimisticState$;\n }, [noyaManager, path, options?.isEqual]);\n\n const value = useObservable(mappedObservable, actualPath);\n\n return value;\n }\n\n function useSetValue(): (\n ...args:\n | [metadata: PartialM, value: SetStateAction<S>]\n | [value: SetStateAction<S>]\n ) => void;\n function useSetValue<P extends PathKey[] | string>(\n path: P\n ): (\n ...args:\n | [metadata: PartialM, value: SetStateAction<GetAtPath<S, P>>]\n | [value: SetStateAction<GetAtPath<S, P>>]\n ) => void;\n function useSetValue<P extends PathKey[] | string>(path?: P) {\n const { noyaManager } = useAnyNoyaStateContext();\n\n const setValue = useCallback(\n (\n ...args:\n | [metadata: PartialM, value: SetStateAction<GetAtPath<S, P>>]\n | [value: SetStateAction<GetAtPath<S, P>>]\n ): void => {\n const [metadata, value] = args.length === 2 ? args : [{}, args[0]];\n\n noyaManager.multiplayerStateManager.setStateAtPath(\n metadata,\n (path ?? \"\") as P,\n value as never\n );\n },\n [noyaManager, path]\n );\n\n return setValue;\n }\n\n function useValueState(): [\n S,\n (\n ...args:\n | [metadata: PartialM, value: SetStateAction<S>]\n | [value: SetStateAction<S>]\n ) => void,\n ];\n function useValueState<A>(\n selector: (value: S) => A,\n options?: ObservableOptions\n ): [\n A,\n (\n ...args:\n | [metadata: PartialM, value: SetStateAction<S>]\n | [value: SetStateAction<S>]\n ) => void,\n ];\n function useValueState<P extends PathKey[] | string>(\n path?: P\n ): [\n GetAtPath<S, P>,\n (\n ...args:\n | [metadata: PartialM, value: SetStateAction<GetAtPath<S, P>>]\n | [value: SetStateAction<GetAtPath<S, P>>]\n ) => void,\n ];\n function useValueState<P extends PathKey[] | string>(\n ...args: [P?] | [selector: (value: S) => any, options?: ObservableOptions]\n ) {\n const [selector, options, path] =\n args.length >= 1 && typeof args[0] === \"function\"\n ? [args[0], args[1], undefined]\n : [undefined, undefined, args[0] as P | undefined];\n\n const value = useValue((selector ?? path ?? \"\") as any, options);\n const setValue = useSetValue(path ?? \"\");\n return [value, setValue];\n }\n\n function useStateManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n\n return noyaManager.multiplayerStateManager as MultiplayerStateManager<\n S,\n PartialM\n >;\n }\n\n function useSharedConnectionDataManager() {\n const { noyaManager } = useAnyNoyaStateContext();\n return noyaManager.sharedConnectionDataManager as SharedConnectionDataManager<E>;\n }\n\n function useNoyaManager() {\n return useAnyNoyaStateContext().noyaManager as NoyaManager<\n S,\n PartialM,\n E,\n MenuT,\n I\n >;\n }\n\n function useLeftMenuItems() {\n const { menuManager } = useNoyaManager();\n\n return useObservable(menuManager.leftMenuItems$);\n }\n\n function useSetLeftMenuItems(leftMenuItems?: MenuItem<MenuT>[]) {\n const { menuManager } = useNoyaManager();\n\n useEffect(() => {\n if (leftMenuItems) {\n menuManager.setLeftMenuItems(leftMenuItems);\n }\n }, [menuManager, leftMenuItems]);\n }\n\n function useRightMenuItems() {\n const { menuManager } = useNoyaManager();\n\n return useObservable(menuManager.rightMenuItems$);\n }\n\n function useSetRightMenuItems(rightMenuItems?: MenuItem<MenuT>[]) {\n const { menuManager } = useNoyaManager();\n\n useEffect(() => {\n if (rightMenuItems) {\n menuManager.setRightMenuItems(rightMenuItems);\n }\n }, [menuManager, rightMenuItems]);\n }\n\n function useHandleMenuItem(callback: (type: MenuT) => void) {\n const { menuManager } = useNoyaManager();\n\n useEffect(() => {\n return menuManager.addListener(callback);\n }, [menuManager, callback]);\n }\n\n function useOnSelectMenuItemCallback(): (type: MenuT) => void {\n const { menuManager } = useNoyaManager();\n\n return useCallback((type: MenuT) => menuManager.emit(type), [menuManager]);\n }\n\n function useMenu(options: {\n leftMenuItems?: MenuItem<MenuT>[];\n rightMenuItems?: MenuItem<MenuT>[];\n onSelectMenuItem?: (type: MenuT) => void;\n }) {\n const { leftMenuItems, rightMenuItems, onSelectMenuItem } = options;\n\n useSetLeftMenuItems(leftMenuItems);\n useSetRightMenuItems(rightMenuItems);\n\n const noop = useCallback(() => {}, []);\n useHandleMenuItem(onSelectMenuItem ?? noop);\n }\n\n return {\n Context: NoyaStateContext,\n Provider: NoyaStateProvider,\n NoyaContextProvider,\n useValue,\n useSetValue,\n useValueState,\n useStateManager,\n useSharedConnectionDataManager,\n useLeftMenuItems,\n useSetLeftMenuItems,\n useRightMenuItems,\n useSetRightMenuItems,\n useHandleMenuItem,\n useOnSelectMenuItemCallback,\n useNoyaManager,\n useMenu,\n };\n}\n","\"use client\";\n\nimport { findAllDefs } from \"@noya-app/noya-schemas\";\nimport type { LocalStorageSyncOptions } from \"@noya-app/state-manager\";\nimport {\n AccessType,\n createOrCastValue,\n isEmbeddedApp,\n localStorageSync,\n NoyaManager,\n parentFrameSync,\n PolicyAuthContext,\n setClientId,\n setClientImage,\n setClientName,\n Static,\n stubSync,\n SyncAdapter,\n TSchema,\n TypeGuard,\n webSocketSync,\n} from \"@noya-app/state-manager\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useBindNoyaManager, UseMultiplayerStateOptions } from \"./hooks\";\nimport { StateInspectorOptions } from \"./inspector/StateInspector\";\n\nexport type AppViewType = \"editable\" | \"readOnly\" | \"preview\";\n\nexport type AppTheme = \"light\" | \"dark\";\n\nexport type AppData<State> = {\n multiplayerUrl?: string;\n theme: AppTheme;\n viewType: AppViewType;\n initialState: State;\n inspector: boolean | StateInspectorOptions;\n userId?: string;\n isDemo: boolean;\n access?: AccessType;\n clientId?: string;\n clientName?: string;\n clientImage?: string;\n};\n\nexport function createDefaultAppData<State>(\n initialState: State\n): AppData<State> {\n return {\n theme: \"light\",\n viewType: \"editable\",\n initialState,\n inspector: false,\n isDemo: false,\n access: undefined,\n };\n}\n\nexport type GetAppDataOptions = {\n window?: { location: { hash: string } };\n overrideExistingState?: boolean;\n};\n\nexport function enforceSchema<State>(\n initialState: State,\n schema?: TSchema\n): State {\n return schema\n ? (createOrCastValue({\n schema,\n value: initialState,\n defs: findAllDefs(schema),\n }) as State)\n : initialState;\n}\n\nexport function parseAppDataParameter(\n options?: GetAppDataOptions\n): AppData<unknown> | null {\n const window = options?.window ?? globalThis;\n const location = window.location;\n if (!location) return null;\n const urlHash = (location.hash || \"\").replace(/^#/, \"\");\n const params = new URLSearchParams(urlHash);\n const data = params.get(\"data\");\n if (!data) return null;\n try {\n return JSON.parse(data);\n } catch (e) {\n return null;\n }\n}\n\nfunction applyClientIdentityFromAppData(appData: {\n clientId?: string;\n clientName?: string;\n clientImage?: string;\n}) {\n if (appData.clientId !== undefined) {\n setClientId(appData.clientId);\n }\n\n if (appData.clientName !== undefined) {\n setClientName(appData.clientName);\n }\n\n if (appData.clientImage !== undefined) {\n setClientImage(appData.clientImage);\n }\n}\n\nexport function getAppData<State>(\n initialState: State | (() => State),\n schema?: TSchema,\n options?: GetAppDataOptions\n): AppData<State> {\n const resolvedInitialState =\n initialState instanceof Function ? initialState() : initialState;\n\n let appData =\n parseAppDataParameter(options) ??\n createDefaultAppData(resolvedInitialState);\n\n if (options?.overrideExistingState || appData.initialState === null) {\n appData.initialState = resolvedInitialState;\n }\n\n appData.initialState = enforceSchema(appData.initialState, schema) as State;\n appData.isDemo = appData.isDemo ?? false;\n const fallbackAccess: AccessType =\n appData.viewType === \"editable\" ? \"write\" : \"read\";\n appData.access = appData.access ?? fallbackAccess;\n\n // If the parent frame provided a client identity (embedded mode), make sure\n // this frame adopts it so the clientId/name/image observables stay in sync.\n applyClientIdentityFromAppData(appData);\n\n return appData as AppData<State>;\n}\n\nexport function getSyncAdapter<\n S,\n M extends object = object,\n E extends object = object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n>(params?: {\n multiplayerUrl?: string;\n offlineStorageKey?: string;\n debug?: boolean;\n policyAuthContext?: PolicyAuthContext;\n serverScripts?: LocalStorageSyncOptions[\"serverScripts\"];\n}): SyncAdapter<S, M, E, MenuT, I> {\n const {\n multiplayerUrl,\n offlineStorageKey,\n debug,\n policyAuthContext,\n serverScripts,\n } = params ?? {};\n\n return isEmbeddedApp()\n ? parentFrameSync<S, M, E, MenuT, I>({ debug, policyAuthContext })\n : multiplayerUrl\n ? webSocketSync<S, M, E, MenuT, I>({ url: multiplayerUrl, debug })\n : offlineStorageKey\n ? localStorageSync<S, M, E, MenuT, I>({\n key: offlineStorageKey,\n ...(serverScripts ? { serverScripts } : {}),\n })\n : stubSync<S, M, E, MenuT, I>();\n}\n\nexport type UseNoyaStateOptions<\n S,\n M extends object = object,\n E extends object = object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n> = UseMultiplayerStateOptions<S, M, E, MenuT, I> & {\n offlineStorageKey?: string;\n};\n\nexport type UseNoyaStateResult<\n S,\n M extends object = object,\n E extends object = object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n> = [\n ReturnType<typeof useBindNoyaManager<S, M, E, MenuT, I>>[0],\n ReturnType<typeof useBindNoyaManager<S, M, E, MenuT, I>>[1],\n ReturnType<typeof useBindNoyaManager<S, M, E, MenuT, I>>[2] & {\n theme: AppTheme;\n viewType: AppViewType;\n isDemo: boolean;\n },\n];\n\n/**\n * Sync data locally or to a multiplayer server.\n *\n * There are 3 ways to use this hook:\n *\n * 1. Pass an initial state: `useNoyaState(initialState)`\n * 2. Pass an initial state and a schema: `useNoyaState(initialState, { schema })`\n * 3. Pass only a schema, and a conforming initial state is created automatically: `useNoyaState({ schema })`\n */\nexport function useNoyaStateInternal<\n S,\n M extends object = object,\n E extends object = object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n O extends UseNoyaStateOptions<S, M, E, MenuT, I> = UseNoyaStateOptions<\n S,\n M,\n E,\n MenuT,\n I\n >,\n>(\n ...args:\n | [\n initialState: O[\"schema\"] extends TSchema\n ? Static<O[\"schema\"]> | (() => Static<O[\"schema\"]>)\n : S | (() => S),\n options?: O,\n ]\n | [options: O & { schema: TSchema }]\n): UseNoyaStateResult<\n O[\"schema\"] extends TSchema ? Static<O[\"schema\"]> : S,\n M,\n E,\n MenuT,\n I\n> {\n const [initialState, options] =\n typeof args[0] === \"object\" &&\n args[0] !== null &&\n \"schema\" in args[0] &&\n TypeGuard.IsSchema(args[0].schema)\n ? [null, args[0]]\n : [args[0], args[1]];\n\n // Keep these stable after initial render\n const [\n {\n multiplayerUrl,\n inspector,\n initialState: noyaAppInitialState,\n theme,\n viewType,\n userId,\n isDemo,\n access,\n },\n ] = useState(() => {\n return getAppData(initialState, options?.schema, {\n overrideExistingState: options?.overrideExistingState,\n });\n });\n\n const basePolicyAuthContext = useMemo((): PolicyAuthContext | undefined => {\n if (!access && userId === undefined) return undefined;\n\n const context: PolicyAuthContext = {};\n\n if (access) {\n context.access = access;\n }\n\n if (userId !== undefined) {\n context.id = userId ?? null;\n }\n\n return context;\n }, [access, userId]);\n\n const sync = useMemo((): SyncAdapter<S, M, E, MenuT, I> => {\n return getSyncAdapter<S, M, E, MenuT, I>({\n multiplayerUrl,\n offlineStorageKey: options?.offlineStorageKey,\n debug: options?.debug,\n policyAuthContext: basePolicyAuthContext,\n });\n }, [\n multiplayerUrl,\n options?.offlineStorageKey,\n options?.debug,\n basePolicyAuthContext,\n ]);\n\n const [noyaManager] = useState(\n () => new NoyaManager<S, M, E, MenuT, I>(noyaAppInitialState as S, options)\n );\n\n useEffect(() => {\n if (!userId) return;\n\n noyaManager.sharedConnectionDataManager.setCurrentConnectionId(userId);\n noyaManager.userManager.setCurrentConnectionId(userId);\n noyaManager.userManager.setCurrentUserId(userId);\n }, [noyaManager, userId]);\n\n useEffect(() => {\n if (!basePolicyAuthContext) return;\n\n noyaManager.multiplayerStateManager.setPolicyAuthContext(\n basePolicyAuthContext\n );\n }, [noyaManager, basePolicyAuthContext]);\n\n const result = useBindNoyaManager<S, M, E, MenuT, I>(noyaManager, {\n inspector: options?.inspector ?? inspector,\n sync: options?.sync ?? sync,\n });\n\n const [, , extras] = result;\n\n const mergedExtras = useMemo(() => {\n return { ...extras, theme, viewType, isDemo } as const;\n }, [extras, theme, viewType, isDemo]);\n\n return [result[0], result[1], mergedExtras] as UseNoyaStateResult<\n O[\"schema\"] extends TSchema ? Static<O[\"schema\"]> : S,\n M,\n E,\n MenuT,\n I\n >;\n}\n\n// function typeTest() {\n// const [a, setA] = useNoyaState(7);\n// const [b, setB] = useNoyaState(7, {\n// schema: Type.Number(),\n// });\n// const [c, setC] = useNoyaState({\n// schema: Type.Number(),\n// });\n// }\n","\"use client\";\n\nimport {\n ActionHandler,\n NoyaManager,\n NoyaManagerOptions,\n StateManager,\n StateManagerOptions,\n stubSync,\n SyncAdapter,\n} from \"@noya-app/state-manager\";\nimport {\n createElement,\n SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { ErrorOverlay } from \"./components/ErrorOverlay\";\nimport { StateInspectorOptions } from \"./inspector/StateInspector\";\nimport { useStateInspector } from \"./inspector/useStateInspector\";\nimport { useObservable } from \"./useObservable\";\n\nexport function useManagedState<S, M = void>(\n createInitialState: () => S,\n options?: StateManagerOptions<S, M>\n) {\n const [stateManager] = useState(\n () => new StateManager<S, M>(createInitialState(), options)\n );\n\n const getSnapshot = useCallback((): S => {\n return stateManager.getState();\n }, [stateManager]);\n\n const state = useSyncExternalStore(\n stateManager.addListener,\n getSnapshot,\n getSnapshot\n );\n\n const setState = useCallback(\n (\n ...args: M extends {}\n ? [metadata: M, action: SetStateAction<S>]\n : [action: SetStateAction<S>]\n ) => {\n const [metadata, action] =\n args.length === 1 ? [undefined, args[0]] : args;\n\n if (metadata === undefined) {\n const performActionNoMetadata = stateManager.performAction as (\n handler: ActionHandler<S>\n ) => void;\n\n if (action instanceof Function) {\n performActionNoMetadata({\n run: action,\n undo: () => state,\n });\n } else {\n performActionNoMetadata({\n run: () => action,\n undo: () => state,\n });\n }\n } else {\n const performActionWithMetadata = stateManager.performAction as (\n metadata: M,\n handler: ActionHandler<S>\n ) => void;\n\n if (action instanceof Function) {\n performActionWithMetadata(metadata, {\n run: action,\n undo: () => state,\n });\n } else {\n performActionWithMetadata(metadata, {\n run: () => action,\n undo: () => state,\n });\n }\n }\n },\n [state, stateManager]\n );\n\n return [state, setState, stateManager] as const;\n}\n\nexport function useManagedHistory<S, M = void>(\n stateManager: StateManager<S, M>\n) {\n return useSyncExternalStore(\n stateManager.historyEmittor.addListener,\n stateManager.getHistorySnapshot,\n stateManager.getHistorySnapshot\n );\n}\n\nexport type UseMultiplayerStateOptions<\n S,\n M extends object = object,\n E extends object = object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n> = NoyaManagerOptions<S, M> & {\n sync?: SyncAdapter<S, M, E, MenuT, I>;\n inspector?: boolean | StateInspectorOptions;\n};\n\n// Bind an existing NoyaManager to React and wire up extras, inspector, and sync\nexport function useBindNoyaManager<\n S,\n M extends object = object,\n E extends object = object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n>(\n noyaManager: NoyaManager<S, M, E, MenuT, I>,\n options?: Pick<\n UseMultiplayerStateOptions<S, M, E, MenuT, I>,\n \"inspector\" | \"sync\"\n >\n) {\n const state = useObservable(\n noyaManager.multiplayerStateManager.optimisticState$\n );\n const assets = useObservable(noyaManager.assetManager.assets$);\n\n type ExtrasType = {\n noyaManager: typeof noyaManager;\n taskManager: typeof noyaManager.taskManager;\n connectionEventManager: typeof noyaManager.connectionEventManager;\n userManager: typeof noyaManager.userManager;\n sharedConnectionDataManager: typeof noyaManager.sharedConnectionDataManager;\n multiplayerStateManager: typeof noyaManager.multiplayerStateManager;\n assetManager: typeof noyaManager.assetManager;\n aiManager: typeof noyaManager.aiManager;\n rpcManager: typeof noyaManager.rpcManager;\n pipelineManager: typeof noyaManager.pipelineManager;\n secretManager: typeof noyaManager.secretManager;\n menuItemsManager: typeof noyaManager.menuManager;\n createAsset: typeof noyaManager.assetManager.create;\n deleteAsset: typeof noyaManager.assetManager.delete;\n assets: typeof assets;\n };\n\n const extras = useMemo<ExtrasType>(() => {\n return {\n noyaManager,\n taskManager: noyaManager.taskManager,\n connectionEventManager: noyaManager.connectionEventManager,\n userManager: noyaManager.userManager,\n sharedConnectionDataManager: noyaManager.sharedConnectionDataManager,\n multiplayerStateManager: noyaManager.multiplayerStateManager,\n assetManager: noyaManager.assetManager,\n aiManager: noyaManager.aiManager,\n rpcManager: noyaManager.rpcManager,\n pipelineManager: noyaManager.pipelineManager,\n secretManager: noyaManager.secretManager,\n menuItemsManager: noyaManager.menuManager,\n createAsset: noyaManager.assetManager.create,\n deleteAsset: noyaManager.assetManager.delete,\n assets,\n };\n }, [noyaManager, assets]);\n\n const syncRef = useRef(options?.sync);\n\n useEffect(() => {\n if (syncRef.current) {\n return syncRef.current({ noyaManager });\n }\n }, [noyaManager]);\n\n useErrorOverlay<MenuT>(noyaManager);\n\n useStateInspector<S, M, E, MenuT, I>({\n noyaManager,\n disabled: !options?.inspector,\n advanced: true,\n ...(typeof options?.inspector === \"object\" && options?.inspector),\n });\n\n return [state, noyaManager.multiplayerStateManager.setState, extras] as const;\n}\n\nexport function useMultiplayerState<\n S,\n M extends object = object,\n E extends object = object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n>(\n initialState: S | (() => S),\n options?: UseMultiplayerStateOptions<S, M, E, MenuT, I>\n) {\n const {\n sync = stubSync<\n unknown,\n object,\n object,\n string,\n Record<string, unknown>\n >() as unknown as SyncAdapter<S, M, E, MenuT, I>,\n inspector,\n ...rest\n } = options ?? {};\n\n const [noyaManager] = useState(\n () => new NoyaManager<S, M, E, MenuT, I>(initialState, rest)\n );\n\n return useBindNoyaManager<S, M, E, MenuT, I>(noyaManager, {\n sync,\n inspector,\n });\n}\n\nfunction useErrorOverlay<MenuT extends string = string>(\n noyaManager: NoyaManager<any, any, any, MenuT, any>\n) {\n const unrecoverableError = useObservable(noyaManager.unrecoverableError);\n\n useEffect(() => {\n if (!unrecoverableError) return;\n const el = document.createElement(\"div\");\n el.id = \"noya-multiplayer-react-error-overlay\";\n document.body.appendChild(el);\n const root = createRoot(el);\n root.render(createElement(ErrorOverlay, { error: unrecoverableError }));\n return () => {\n root.unmount();\n el.remove();\n };\n });\n}\n","import { MultiplayerStateManagerError } from \"@noya-app/state-manager\";\nimport * as React from \"react\";\n\nexport const ErrorOverlay = React.memo(function ErrorOverlay({\n error,\n}: {\n error: MultiplayerStateManagerError;\n}) {\n return (\n <div\n style={{\n position: \"fixed\",\n top: \"20px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n maxWidth: \"80%\",\n width: \"fit-content\",\n padding: \"12px 20px\",\n background: \"white\",\n color: \"black\",\n zIndex: 10000,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n borderRadius: \"4px\",\n boxShadow: \"0 4px 6px rgba(0, 0, 0, 0.1)\",\n fontFamily:\n \"'__Inter_6b0edc', '__Inter_Fallback_6b0edc', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif\",\n fontSize: \"14px\",\n fontWeight: 400,\n lineHeight: \"19px\",\n }}\n >\n {error.reason === \"schemaMigration\" ? (\n <>\n <p>\n An updated version of Noya is available. Please reload the page to\n continue.\n </p>\n </>\n ) : (\n <>\n <p>\n An error occurred:{\" \"}\n <code\n style={{\n background: \"rgba(255, 0, 0, 0.1)\",\n color: \"rgba(255, 0, 0, 0.5)\",\n padding: \"2px 4px\",\n borderRadius: \"4px\",\n }}\n >\n {error.reason}\n </code>\n . Please reload the page to continue.\n <br />\n <br />\n If this happens repeatedly, please get in touch and the Noya team\n can help.\n </p>\n </>\n )}\n <div\n style={{\n height: \"1px\",\n background: \"rgba(0, 0, 0, 0.1)\",\n margin: \"12px -20px\",\n }}\n />\n <button\n style={{\n background: \"black\",\n color: \"white\",\n padding: \"8px 16px\",\n borderRadius: \"4px\",\n cursor: \"pointer\",\n fontSize: \"14px\",\n fontWeight: 700,\n lineHeight: \"19px\",\n }}\n onClick={() => {\n window.location.reload();\n }}\n >\n Reload\n </button>\n </div>\n );\n});\n","\"use client\";\n\nimport { NoyaManager } from \"@noya-app/state-manager\";\nimport React, { ComponentProps } from \"react\";\nimport { createRoot } from \"react-dom/client\";\n\nimport { useIsomorphicLayoutEffect } from \"@noya-app/react-utils\";\nimport { Root } from \"react-dom/client\";\nimport { StateInspector } from \"./StateInspector\";\n\nfunction createShadowRootElement() {\n const host = document.createElement(\"div\");\n host.id = \"noya-multiplayer-react-inspector-host\";\n const shadowRoot = host.attachShadow({ mode: \"open\" });\n const container = document.createElement(\"div\");\n shadowRoot.appendChild(container);\n return { host, container };\n}\n\nexport function createStateInspectorRoot() {\n const { host, container } = createShadowRootElement();\n const root = createRoot(container);\n document.body.appendChild(host);\n\n return {\n root,\n unmount: () => {\n document.body.removeChild(host);\n },\n };\n}\n\nexport function useStateInspector<\n S,\n M extends object,\n E extends object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n>({\n noyaManager,\n disabled = false,\n advanced = false,\n colorScheme,\n anchor,\n}: {\n noyaManager: NoyaManager<S, M, E, MenuT, I>;\n disabled?: boolean;\n advanced?: boolean;\n colorScheme?: ComponentProps<typeof StateInspector>[\"colorScheme\"];\n anchor?: ComponentProps<typeof StateInspector>[\"anchor\"];\n}) {\n const [root, setRoot] = React.useState<Root | null>(null);\n\n useIsomorphicLayoutEffect(() => {\n if (disabled) return;\n\n const { root, unmount } = createStateInspectorRoot();\n\n setRoot(root);\n\n return unmount;\n }, [disabled]);\n\n useIsomorphicLayoutEffect(() => {\n if (!root) return;\n\n root.render(\n <StateInspector\n colorScheme={colorScheme}\n anchor={anchor}\n noyaManager={noyaManager}\n advanced={advanced}\n />\n );\n }, [noyaManager, anchor, colorScheme, root, advanced]);\n}\n","// A simple, unoptimized decoder for small images\nfunction decode(base64String: string): Uint8Array {\n const binaryString = atob(base64String);\n const length = binaryString.length;\n const bytes = new Uint8Array(length);\n\n for (let i = 0; i < length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n\n return bytes;\n}\n\nfunction encode(buffer: ArrayLike<number> | ArrayBufferLike): string {\n const bytes = new Uint8Array(buffer);\n\n let binary = \"\";\n const length = bytes.byteLength;\n\n for (let i = 0; i < length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n\n return globalThis.btoa(binary);\n}\n\nexport const Base64 = {\n encode,\n decode,\n};\n","export type Invert<T extends Record<PropertyKey, PropertyKey>> = {\n [K in keyof T as T[K]]: K;\n};\n\nexport function invert<T extends Record<PropertyKey, PropertyKey>>(\n record: T,\n): Invert<T> {\n return Object.fromEntries(\n Object.entries(record).map(([type, extension]) => [extension, type]),\n ) as Invert<typeof record>;\n}\n","import { isEqualArray } from \"./internal/isEqual\";\nimport { invert } from \"./invert\";\n\nconst FILE_TYPE_TO_EXTENSION = {\n \"image/png\": \"png\",\n \"image/jpeg\": \"jpg\",\n \"image/webp\": \"webp\",\n \"image/svg+xml\": \"svg\",\n \"application/pdf\": \"pdf\",\n \"application/zip\": \"zip\",\n \"application/x-7z-compressed\": \"7z\",\n} as const;\n\nconst FILE_EXTENSION_TO_TYPE = invert(FILE_TYPE_TO_EXTENSION);\n\ntype FileTypeMap = typeof FILE_TYPE_TO_EXTENSION;\ntype FileExtensionMap = typeof FILE_EXTENSION_TO_TYPE;\n\nexport type FileType = keyof typeof FILE_TYPE_TO_EXTENSION;\nexport type FileExtension = (typeof FILE_TYPE_TO_EXTENSION)[FileType];\n\nexport function getFileExtensionForType<K extends keyof FileTypeMap>(\n type: K\n): FileTypeMap[K] {\n return FILE_TYPE_TO_EXTENSION[type];\n}\n\nexport function getFileTypeForExtension<K extends keyof FileExtensionMap>(\n type: K\n): FileExtensionMap[K] {\n return FILE_EXTENSION_TO_TYPE[type];\n}\n\nfunction startsWith(arrayBuffer: Uint8Array, prefix: number[], offset = 0) {\n return isEqualArray(\n [...new Uint8Array(arrayBuffer).slice(offset, offset + prefix.length)],\n prefix,\n false\n );\n}\n\nfunction isPNG(bytes: Uint8Array) {\n return startsWith(bytes, [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n}\n\nfunction isJPG(bytes: Uint8Array) {\n return startsWith(bytes, [0xff, 0xd8, 0xff]);\n}\n\nfunction isWEBP(bytes: Uint8Array) {\n return startsWith(bytes, [87, 69, 66, 80], 8);\n}\n\nfunction isPDF(bytes: Uint8Array) {\n return startsWith(bytes, [37, 80, 68, 70]);\n}\n\nfunction isZip(bytes: Uint8Array) {\n return startsWith(bytes, [0x50, 0x4b]);\n}\n\nfunction is7z(bytes: Uint8Array) {\n return startsWith(bytes, [0x37, 0x7a, 0xbc, 0xaf, 0x27, 0x1c]);\n}\n\nexport function detectFileType(\n arrayBuffer: ArrayLike<number> | ArrayBufferLike\n): keyof typeof FILE_TYPE_TO_EXTENSION | undefined {\n let bytes = new Uint8Array(arrayBuffer);\n\n if (isPNG(bytes)) {\n return \"image/png\";\n } else if (isJPG(bytes)) {\n return \"image/jpeg\";\n } else if (isWEBP(bytes)) {\n return \"image/webp\";\n } else if (isPDF(bytes)) {\n return \"application/pdf\";\n } else if (isZip(bytes)) {\n return \"application/zip\";\n } else if (is7z(bytes)) {\n return \"application/x-7z-compressed\";\n }\n}\n","// TODO: Review this. Is it a good approach for Noya?\nexport function memoize<I extends unknown[], O>(\n f: (...values: I) => O\n): (...values: I) => O {\n const intermediateCache = new Map<I[number], string>();\n const cache: Map<string, O> = new Map();\n let intermediateCacheIndex = 0;\n\n return (...values: I): O => {\n let key = \"\";\n\n for (const value of values) {\n // Assign each argument value a unique index\n if (!intermediateCache.has(value)) {\n intermediateCache.set(value, `${intermediateCacheIndex++}`);\n }\n\n // Assemble a cache key from the combined indexes\n key += intermediateCache.get(value)! + \":\";\n }\n\n if (!cache.has(key)) {\n cache.set(key, f(...values));\n }\n\n return cache.get(key)!;\n };\n}\n\nexport function memoizeOne<I extends unknown[], O>(\n f: (...values: I) => O\n): (...values: I) => O {\n let previous: [I, O] | undefined = undefined;\n\n return (...values: I): O => {\n if (\n previous &&\n previous[0].every((value, index) => value === values[index])\n ) {\n return previous[1];\n }\n\n const result = f(...values);\n previous = [values, result];\n return result;\n };\n}\n","// A trie over a stable tokenization of the input value.\n// This ensures deep-equal values walk the same path and hit the same cache leaf.\n\nconst TOKEN_OBJECT = Symbol(\"object\");\nconst TOKEN_ARRAY = Symbol(\"array\");\nconst TOKEN_KEY = Symbol(\"key\");\nconst TOKEN_END = Symbol(\"end\");\nconst TOKEN_PRIMITIVE = Symbol(\"primitive\");\nconst TOKEN_ARGSEP = Symbol(\"argsep\");\n\nclass TrieNode {\n children: Map<unknown, TrieNode> = new Map();\n hasValue = false;\n // Stored result when this node represents a complete tokenization of input\n value: unknown = undefined;\n}\n\nfunction descend(node: TrieNode, token: unknown): TrieNode {\n let next = node.children.get(token);\n if (!next) {\n next = new TrieNode();\n node.children.set(token, next);\n }\n return next;\n}\n\nfunction getLeafNodeForValue(node: TrieNode, value: unknown): TrieNode {\n // Primitives (including null and undefined) are terminal tokens\n if (value === null || typeof value !== \"object\") {\n node = descend(node, TOKEN_PRIMITIVE);\n node = descend(node, value);\n return node;\n }\n\n if (Array.isArray(value)) {\n node = descend(node, TOKEN_ARRAY);\n for (let i = 0; i < value.length; i++) {\n node = getLeafNodeForValue(node, value[i]);\n }\n node = descend(node, TOKEN_END);\n return node;\n }\n\n // Object: iterate keys in a stable order\n node = descend(node, TOKEN_OBJECT);\n const record = value as Record<string, unknown>;\n const keys = Object.keys(record).sort();\n for (const key of keys) {\n node = descend(node, TOKEN_KEY);\n node = descend(node, key);\n node = getLeafNodeForValue(node, record[key]);\n }\n node = descend(node, TOKEN_END);\n return node;\n}\n\nexport function memoizeDeep<I extends unknown[], O>(\n fn: (...args: I) => O\n): (...args: I) => O {\n const root = new TrieNode();\n\n const memoized = (...args: I): O => {\n let node = root;\n for (let i = 0; i < args.length; i++) {\n node = getLeafNodeForValue(node, args[i]);\n // Separate arguments to avoid collisions between different tuple shapes\n node = descend(node, TOKEN_ARGSEP);\n }\n const leaf = node;\n\n if (leaf.hasValue) {\n return leaf.value as O;\n }\n\n const result = fn(...args);\n leaf.value = result;\n leaf.hasValue = true;\n return result as O;\n };\n\n return memoized;\n}\n","import crypto from 'crypto';\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n crypto.randomFillSync(rnds8Pool);\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import { v4 } from \"uuid\";\n\nexport function uuid(): string {\n return v4();\n}\n","/* eslint-disable no-restricted-globals */\n\"use client\";\n\nimport { Input, OutputTransform } from \"@noya-app/noya-schemas\";\nimport { Base64, memoize, uuid } from \"@noya-app/noya-utils\";\nimport { downloadBlob, memoGeneric } from \"@noya-app/react-utils\";\nimport { NoyaAsset, NoyaManager } from \"@noya-app/state-manager\";\nimport React, {\n CSSProperties,\n ComponentPropsWithoutRef,\n useCallback,\n useEffect,\n useLayoutEffect,\n} from \"react\";\nimport { ObjectInspector } from \"react-inspector\";\nimport { useManagedHistory } from \"../hooks\";\nimport { useObservable } from \"../useObservable\";\nimport { ColoredDot } from \"./ColoredDot\";\nimport {\n getStateInspectorBorderColor,\n getStateInspectorTheme,\n} from \"./inspectorTheme\";\nimport { ActivityEventsSection } from \"./sections/ActivityEventsSection\";\nimport { EventsSection } from \"./sections/EventsSection\";\nimport { HistorySection } from \"./sections/HistorySection\";\nimport { ServerScriptLogsSection } from \"./sections/ServerScriptLogsSection\";\nimport { exportAll, importAll } from \"./serialization\";\nimport { StateInspectorButton } from \"./StateInspectorButton\";\nimport {\n StateInspectorDisclosureRowInner,\n StateInspectorDisclosureSection,\n} from \"./StateInspectorDisclosureSection\";\nimport { StateInspectorRow } from \"./StateInspectorRow\";\nimport { StateInspectorTitleLabel } from \"./StateInspectorTitleLabel\";\nimport { StateInspectorToggleButton } from \"./StateInspectorToggleButton\";\nimport { useLocalStorageState } from \"./useLocalStorageState\";\nimport { usePausedStream } from \"./usePausedStream\";\nimport { ellipsis, uploadFile } from \"./utils\";\n\nexport type StateInspectorAnchor =\n | \"left\"\n | \"right\"\n | \"bottom left\"\n | \"bottom right\";\n\nexport type StateInspectorOptions = {\n colorScheme?: \"light\" | \"dark\";\n anchor?: StateInspectorAnchor;\n advanced?: boolean;\n};\n\nexport const StateInspector = memoGeneric(function StateInspector<\n S,\n M extends object,\n E extends object,\n MenuT extends string = string,\n I extends Record<string, any> = Record<string, unknown>,\n>({\n noyaManager,\n colorScheme = \"light\",\n anchor = \"right\",\n unstyled = false,\n advanced = false,\n ...props\n}: {\n noyaManager: NoyaManager<S, M, E, MenuT, I>;\n unstyled?: boolean;\n} & StateInspectorOptions &\n ComponentPropsWithoutRef<\"div\">) {\n const {\n multiplayerStateManager,\n assetManager,\n userManager,\n secretManager,\n sharedConnectionDataManager,\n connectionEventManager,\n taskManager,\n ioManager,\n resourceManager,\n activityEventsManager,\n logManager,\n } = noyaManager;\n\n const [didMount, setDidMount] = React.useState(false);\n const tasks = useObservable(taskManager.tasks$);\n const inputs = useObservable(ioManager.inputs$);\n const outputTransforms = useObservable(ioManager.outputTransforms$);\n\n useLayoutEffect(() => {\n setDidMount(true);\n }, []);\n\n const eventsContainerRef = React.useRef<HTMLDivElement>(null);\n const activityEventsContainerRef = React.useRef<HTMLDivElement>(null);\n const serverLogsContainerRef = React.useRef<HTMLDivElement>(null);\n const serverSimulationLogsContainerRef = React.useRef<HTMLDivElement>(null);\n\n const [showInspector, setShowInspector] = useLocalStorageState(\n \"noya-multiplayer-react-show-inspector\",\n true\n );\n const [showEvents, setShowEvents] = useLocalStorageState(\n \"noya-multiplayer-react-show-events\",\n false\n );\n const [showHistory, setShowHistory] = useLocalStorageState(\n \"noya-multiplayer-react-show-history\",\n false\n );\n const [showUsers, setShowUsers] = useLocalStorageState(\n \"noya-multiplayer-react-show-users\",\n true\n );\n const [showUserDetails, setShowUserDetails] = useLocalStorageState(\n \"noya-multiplayer-react-show-user-details\",\n false\n );\n const [showData, setShowData] = useLocalStorageState(\n \"noya-multiplayer-react-show-data\",\n true\n );\n const [showTasks, setShowTasks] = useLocalStorageState(\n \"noya-multiplayer-react-show-tasks\",\n false\n );\n const [showShared, setShowShared] = useLocalStorageState(\n \"noya-multiplayer-react-show-shared\",\n false\n );\n const [showAssets, setShowAssets] = useLocalStorageState(\n \"noya-multiplayer-react-show-assets\",\n false\n );\n const [showResources, setShowResources] = useLocalStorageState(\n \"noya-multiplayer-react-show-resources\",\n false\n );\n const [showSecrets, setShowSecrets] = useLocalStorageState(\n \"noya-multiplayer-react-show-secrets\",\n false\n );\n const [showInputs, setShowInputs] = useLocalStorageState(\n \"noya-multiplayer-react-show-inputs\",\n false\n );\n const [showOutputTransforms, setShowOutputTransforms] = useLocalStorageState(\n \"noya-multiplayer-react-show-output-transforms\",\n false\n );\n const [showActivityEvents, setShowActivityEvents] = useLocalStorageState(\n \"noya-multiplayer-react-show-activity-events\",\n false\n );\n const [showServerLogs, setShowServerLogs] = useLocalStorageState(\n \"noya-multiplayer-react-show-server-logs\",\n false\n );\n const [showServerSimulationLogs, setShowServerSimulationLogs] =\n useLocalStorageState(\n \"noya-multiplayer-react-show-server-simulation-logs\",\n false\n );\n const [showSimulation, setShowSimulation] = useLocalStorageState(\n \"noya-multiplayer-react-show-simulation\",\n false\n );\n\n const connectionEvents = useObservable(connectionEventManager.events$);\n const {\n visibleItems: visibleConnectionEvents,\n paused: connectionEventsPaused,\n togglePaused: toggleConnectionEventsPaused,\n } = usePausedStream(connectionEvents);\n\n useEffect(() => {\n if (eventsContainerRef.current) {\n eventsContainerRef.current.scrollTop =\n eventsContainerRef.current.scrollHeight;\n }\n }, [visibleConnectionEvents]);\n\n const serverLogs = useObservable(logManager.logs$);\n const {\n visibleItems: visibleServerLogs,\n paused: serverLogsPaused,\n togglePaused: toggleServerLogsPaused,\n } = usePausedStream(serverLogs);\n const serverSimulationLogs = useObservable(\n multiplayerStateManager.serverSimulationLogs$\n );\n const {\n visibleItems: visibleServerSimulationLogs,\n paused: serverSimulationLogsPaused,\n togglePaused: toggleServerSimulationLogsPaused,\n } = usePausedStream(serverSimulationLogs);\n\n useEffect(() => {\n if (!showServerLogs) return;\n if (serverLogsContainerRef.current) {\n serverLogsContainerRef.current.scrollTop =\n serverLogsContainerRef.current.scrollHeight;\n }\n }, [showServerLogs, visibleServerLogs]);\n useEffect(() => {\n if (!showServerSimulationLogs) return;\n if (serverSimulationLogsContainerRef.current) {\n serverSimulationLogsContainerRef.current.scrollTop =\n serverSimulationLogsContainerRef.current.scrollHeight;\n }\n }, [showServerSimulationLogs, visibleServerSimulationLogs]);\n\n const multipeerStateInitialized = useObservable(\n multiplayerStateManager.isInitialized$\n );\n const shared = useObservable(sharedConnectionDataManager.data$);\n const historySnapshot = useManagedHistory(multiplayerStateManager.sm);\n const assets = useObservable(assetManager.assets$);\n const resources = useObservable(resourceManager.resources$);\n const resourcesInitialized = useObservable(resourceManager.isInitialized$);\n const assetsInitialized = useObservable(assetManager.isInitialized$);\n const secrets = useObservable(secretManager.secrets$);\n const secretsInitialized = useObservable(secretManager.isInitialized$);\n const connectedUsers = useObservable(userManager.allUsers$);\n const connectionId = useObservable(userManager.currentConnectionId$);\n const simulationDiagnostics =\n multiplayerStateManager.getServerSimulationDiagnostics?.() ?? null;\n const showSimulationLogsSection =\n (simulationDiagnostics?.simulateLocally ?? false) ||\n visibleServerSimulationLogs.length > 0;\n const state = useObservable(multiplayerStateManager.optimisticState$);\n const inputsInitialized = useObservable(ioManager.inputsInitialized$);\n const outputTransformsInitialized = useObservable(\n ioManager.outputTransformsInitialized$\n );\n const theme = getStateInspectorTheme(colorScheme);\n const solidBorderColor = getStateInspectorBorderColor(colorScheme);\n\n const baseStyle: CSSProperties = {\n position: \"fixed\",\n top: 12,\n ...(anchor.includes(\"right\") ? { right: 12 } : { left: 12 }),\n bottom: 12,\n width: 400,\n background:\n colorScheme === \"light\" ? \"rgba(255,255,255,0.95)\" : \"rgba(0,0,0,0.95)\",\n backdropFilter: \"blur(48px)\",\n border: `1px solid ${solidBorderColor}`,\n // outlineOffset: -1,\n borderRadius: 4,\n display: \"flex\",\n flexDirection: \"column\",\n // gap: 12,\n color: theme.BASE_COLOR,\n overflow: \"hidden\",\n zIndex: 9999,\n lineHeight: \"13px\",\n };\n\n const handleExportAll = useCallback(async () => {\n const buffer = await exportAll(noyaManager);\n\n downloadBlob(new Blob([buffer]), \"state.zip\");\n }, [noyaManager]);\n\n const handleImportAll = useCallback(async () => {\n const file = await uploadFile();\n const buffer = await file.arrayBuffer();\n\n importAll(buffer, noyaManager, {\n shouldAllowSchemaChange: () => {\n return confirm(\n `The imported state uses a different schema than the schema this app expects. Do you want to continue?`\n );\n },\n });\n }, [noyaManager]);\n\n if (!didMount) return null;\n\n if (!showInspector) {\n return (\n <div\n {...props}\n style={{\n ...baseStyle,\n padding: \"4px 10px\",\n width: undefined,\n ...(anchor.includes(\"bottom\")\n ? { bottom: 12, top: undefined }\n : { bottom: undefined }),\n }}\n onClick={() => setShowInspector(true)}\n >\n <StateInspectorToggleButton\n showInspector={showInspector}\n setShowInspector={setShowInspector}\n theme={theme}\n anchor={anchor}\n />\n </div>\n );\n }\n\n return (\n <div\n {...props}\n style={{\n ...(!unstyled && baseStyle),\n ...props.style,\n }}\n >\n <StateInspectorDisclosureSection\n isFirst\n open={showUsers}\n setOpen={setShowUsers}\n title=\"Users\"\n colorScheme={colorScheme}\n style={{\n flex: \"0 0 auto\",\n maxHeight: \"50%\",\n overflowY: \"auto\",\n }}\n right={\n <span style={{ display: \"flex\", gap: \"10px\" }}>\n <StateInspectorButton\n theme={theme}\n onClick={() => setShowUserDetails(!showUserDetails)}\n >\n Toggle details\n </StateInspectorButton>\n <StateInspectorToggleButton\n showInspector={showInspector}\n setShowInspector={setShowInspector}\n theme={theme}\n anchor={anchor}\n />\n </span>\n }\n >\n <StateInspectorDisclosureRowInner style={{ flex: \"0 0 auto\" }}>\n {connectedUsers\n ?.filter((user) => showUserDetails || !user.inactive)\n .map((user, index, array) => {\n return (\n <StateInspectorRow\n key={user.connectionId}\n colorScheme={colorScheme}\n variant={\n user.connectionId === connectionId ? \"up\" : undefined\n }\n bordered={index !== array.length - 1}\n style={{\n opacity: user.inactive ? 0.5 : 1,\n }}\n >\n {user.image && (\n <img\n src={user.image}\n alt={user.name}\n style={{\n width: \"13px\",\n height: \"13px\",\n borderRadius: \"50%\",\n marginRight: \"4px\",\n display: \"inline-block\",\n position: \"relative\",\n background: solidBorderColor,\n verticalAlign: \"middle\",\n }}\n />\n )}\n {showUserDetails ? (\n <ObjectInspector data={user} theme={theme} />\n ) : (\n user.name\n )}\n </StateInspectorRow>\n );\n })}\n {!connectedUsers && (\n <div\n style={{\n padding: \"12px\",\n fontSize: \"12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n }}\n >\n <span>No connected users</span>\n </div>\n )}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n <StateInspectorDisclosureSection\n title={\n <StateInspectorTitleLabel>\n Data\n <ColoredDot\n type={multipeerStateInitialized ? \"success\" : \"error\"}\n />\n </StateInspectorTitleLabel>\n }\n colorScheme={colorScheme}\n setOpen={setShowData}\n open={showData}\n right={\n <span\n style={{\n display: \"flex\",\n gap: \"12px\",\n }}\n >\n <StateInspectorButton theme={theme} onClick={handleImportAll}>\n Import\n </StateInspectorButton>\n <StateInspectorButton theme={theme} onClick={handleExportAll}>\n Export\n </StateInspectorButton>\n <StateInspectorButton\n // disabled={!historySnapshot.canUndo}\n theme={theme}\n onClick={() => {\n noyaManager.forceInit();\n }}\n >\n Reset\n </StateInspectorButton>\n </span>\n }\n >\n <StateInspectorDisclosureRowInner>\n <StateInspectorRow colorScheme={colorScheme}>\n <ObjectInspector\n name={multiplayerStateManager.schema ? \"state\" : undefined}\n data={state}\n theme={theme}\n />\n </StateInspectorRow>\n {multiplayerStateManager.schema && (\n <StateInspectorRow colorScheme={colorScheme}>\n <ObjectInspector\n name=\"schema\"\n data={multiplayerStateManager.schema}\n theme={theme}\n />\n </StateInspectorRow>\n )}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n <HistorySection\n showHistory={showHistory}\n setShowHistory={setShowHistory}\n colorScheme={colorScheme}\n historySnapshot={historySnapshot}\n multiplayerStateManager={multiplayerStateManager}\n />\n <StateInspectorDisclosureSection\n open={showAssets}\n setOpen={setShowAssets}\n title={\n <StateInspectorTitleLabel>\n Assets ({assets.length})\n <ColoredDot type={assetsInitialized ? \"success\" : \"error\"} />\n </StateInspectorTitleLabel>\n }\n colorScheme={colorScheme}\n right={\n <span style={{ display: \"flex\", gap: \"10px\" }}>\n <StateInspectorButton\n theme={theme}\n onClick={async () => {\n const ok = confirm(\n \"Are you sure you want to delete all assets?\"\n );\n if (!ok) return;\n await Promise.all(\n assets.map((asset) => assetManager.delete(asset.id))\n );\n }}\n >\n Delete all\n </StateInspectorButton>\n <StateInspectorButton\n theme={theme}\n onClick={() => {\n console.info(\n \"[StateInspector] Reloading assets\",\n noyaManager.id\n );\n assetManager.fetch();\n }}\n >\n Reload\n </StateInspectorButton>\n <StateInspectorButton\n theme={theme}\n onClick={() => {\n // get file input\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = () => {\n const file = input.files?.[0];\n if (file) {\n const reader = new FileReader();\n reader.onload = () => {\n const buffer = reader.result as ArrayBuffer;\n assetManager.create(new Uint8Array(buffer));\n };\n reader.readAsArrayBuffer(file);\n }\n };\n input.click();\n }}\n >\n Upload\n </StateInspectorButton>\n </span>\n }\n >\n <StateInspectorDisclosureRowInner>\n {assets.map((asset) => (\n <StateInspectorRow key={asset.id} colorScheme={colorScheme}>\n <ObjectInspector\n name={asset.id}\n data={truncateAsset(asset)}\n theme={theme}\n />\n <StateInspectorButton\n theme={theme}\n onClick={() => assetManager.delete(asset.id)}\n >\n Delete\n </StateInspectorButton>\n </StateInspectorRow>\n ))}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n {advanced && (\n <StateInspectorDisclosureSection\n title={\n <StateInspectorTitleLabel>\n Resources ({resources.length})\n <ColoredDot type={resourcesInitialized ? \"success\" : \"error\"} />\n </StateInspectorTitleLabel>\n }\n colorScheme={colorScheme}\n open={showResources}\n setOpen={setShowResources}\n right={\n <span style={{ display: \"flex\", gap: \"10px\" }}>\n <StateInspectorButton\n theme={theme}\n onClick={async () => {\n const ok = confirm(\n \"Are you sure you want to delete all resources?\"\n );\n if (!ok) return;\n await resourceManager.deleteResource(\n resources.map((resource) => ({ id: resource.id }))\n );\n }}\n >\n Delete all\n </StateInspectorButton>\n <StateInspectorButton\n theme={theme}\n onClick={async () => {\n const path = prompt(\"Enter directory path\") || uuid();\n await resourceManager.createResource({\n type: \"directory\",\n path,\n });\n }}\n >\n Create Directory\n </StateInspectorButton>\n <StateInspectorButton\n theme={theme}\n onClick={async () => {\n const file = await uploadFile();\n\n resourceManager.createResource({\n type: \"asset\",\n path: file.name || uuid(),\n asset: {\n content: Base64.encode(await file.arrayBuffer()),\n contentType: file.type,\n encoding: \"base64\",\n },\n });\n }}\n >\n Create Asset\n </StateInspectorButton>\n </span>\n }\n >\n <StateInspectorDisclosureRowInner>\n {resources?.map((resource) => (\n <StateInspectorRow key={resource.id} colorScheme={colorScheme}>\n <ObjectInspector\n name={resource.path}\n data={resource}\n theme={theme}\n />\n <div style={{ display: \"flex\", gap: \"4px\" }}>\n <StateInspectorButton\n theme={theme}\n onClick={() =>\n resourceManager.deleteResource({ id: resource.id })\n }\n >\n Delete\n </StateInspectorButton>\n <StateInspectorButton\n theme={theme}\n onClick={() => {\n const path = prompt(\"Enter new path\", resource.path);\n if (!path) return;\n resourceManager.updateResource({ id: resource.id, path });\n }}\n >\n Rename\n </StateInspectorButton>\n </div>\n </StateInspectorRow>\n ))}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n )}\n {advanced && (\n <StateInspectorDisclosureSection\n title={\n <StateInspectorTitleLabel>\n Secrets\n <ColoredDot type={secretsInitialized ? \"success\" : \"error\"} />\n </StateInspectorTitleLabel>\n }\n colorScheme={colorScheme}\n open={showSecrets}\n setOpen={setShowSecrets}\n right={\n <StateInspectorButton\n theme={theme}\n onClick={() => {\n const name = prompt(\"Enter secret name\");\n if (!name) return;\n const value = prompt(\"Enter secret value\");\n if (!value) return;\n secretManager.createSecret(null, name, value);\n }}\n >\n Create\n </StateInspectorButton>\n }\n >\n <StateInspectorDisclosureRowInner>\n {secrets.map((secret) => (\n <StateInspectorRow key={secret.id} colorScheme={colorScheme}>\n <ObjectInspector data={secret} theme={theme} />\n <StateInspectorButton\n theme={theme}\n onClick={() => secretManager.deleteSecret(secret.id)}\n >\n Delete\n </StateInspectorButton>\n </StateInspectorRow>\n ))}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n )}\n {advanced && (\n <StateInspectorDisclosureSection\n open={showInputs}\n setOpen={setShowInputs}\n title={\n <StateInspectorTitleLabel>\n Inputs\n <ColoredDot type={inputsInitialized ? \"success\" : \"error\"} />\n </StateInspectorTitleLabel>\n }\n colorScheme={colorScheme}\n >\n <StateInspectorDisclosureRowInner>\n {inputs?.map((input: Input) => (\n <StateInspectorRow key={input.id} colorScheme={colorScheme}>\n <ObjectInspector data={input} theme={theme} />\n </StateInspectorRow>\n ))}\n {!inputs?.length && (\n <div\n style={{\n padding: \"12px\",\n fontSize: \"12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n }}\n >\n <span>No inputs</span>\n </div>\n )}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n )}\n {advanced && (\n <StateInspectorDisclosureSection\n open={showOutputTransforms}\n setOpen={setShowOutputTransforms}\n title={\n <StateInspectorTitleLabel>\n Output Transforms\n <ColoredDot\n type={outputTransformsInitialized ? \"success\" : \"error\"}\n />\n </StateInspectorTitleLabel>\n }\n colorScheme={colorScheme}\n >\n <StateInspectorDisclosureRowInner>\n {outputTransforms?.map((transform: OutputTransform) => (\n <StateInspectorRow key={transform.id} colorScheme={colorScheme}>\n <ObjectInspector data={transform} theme={theme} />\n </StateInspectorRow>\n ))}\n {!outputTransforms?.length && (\n <div\n style={{\n padding: \"12px\",\n fontSize: \"12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n }}\n >\n <span>No output transforms</span>\n </div>\n )}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n )}\n {advanced && (\n <StateInspectorDisclosureSection\n title=\"Tasks\"\n colorScheme={colorScheme}\n open={showTasks}\n setOpen={setShowTasks}\n >\n <StateInspectorDisclosureRowInner>\n {tasks?.map((task) => (\n <StateInspectorRow\n key={task.id}\n colorScheme={colorScheme}\n style={{\n backgroundColor:\n task.status === \"done\"\n ? \"rgba(0,255,0,0.2)\"\n : task.status === \"error\"\n ? \"rgba(255,0,0,0.2)\"\n : undefined,\n }}\n >\n <ObjectInspector\n name={task.name}\n data={task.payload}\n theme={theme}\n />\n </StateInspectorRow>\n ))}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n )}\n <StateInspectorDisclosureSection\n open={showShared}\n setOpen={setShowShared}\n title=\"Shared Connection Data\"\n colorScheme={colorScheme}\n >\n <StateInspectorDisclosureRowInner>\n {Object.entries(shared).map(([key, value]) => (\n <StateInspectorRow key={key} colorScheme={colorScheme}>\n <ObjectInspector\n name={key}\n data={value}\n theme={theme}\n expandLevel={10}\n />\n </StateInspectorRow>\n ))}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n <ServerScriptLogsSection\n colorScheme={colorScheme}\n showLogs={showServerLogs}\n setShowLogs={setShowServerLogs}\n logs={visibleServerLogs}\n paused={serverLogsPaused}\n onTogglePaused={toggleServerLogsPaused}\n containerRef={serverLogsContainerRef}\n />\n {showSimulationLogsSection && (\n <ServerScriptLogsSection\n title=\"Server Script Simulation Logs\"\n colorScheme={colorScheme}\n showLogs={showServerSimulationLogs}\n setShowLogs={setShowServerSimulationLogs}\n logs={visibleServerSimulationLogs}\n paused={serverSimulationLogsPaused}\n onTogglePaused={toggleServerSimulationLogsPaused}\n containerRef={serverSimulationLogsContainerRef}\n />\n )}\n <StateInspectorDisclosureSection\n open={showSimulation}\n setOpen={setShowSimulation}\n title=\"Server Simulation\"\n colorScheme={colorScheme}\n >\n <StateInspectorDisclosureRowInner>\n <StateInspectorRow colorScheme={colorScheme}>\n <ObjectInspector\n name=\"status\"\n data={\n simulationDiagnostics ?? {\n simulateLocally: false,\n simulatorActive: false,\n clockSkewMs: 0,\n invocations: [],\n pendingPredictions: [],\n }\n }\n theme={theme}\n expandLevel={2}\n />\n </StateInspectorRow>\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n {advanced && (\n <ActivityEventsSection\n colorScheme={colorScheme}\n activityEventsContainerRef={activityEventsContainerRef}\n showEvents={showActivityEvents}\n setShowEvents={setShowActivityEvents}\n activityEventsManager={activityEventsManager}\n />\n )}\n <EventsSection<S>\n connectionEvents={visibleConnectionEvents}\n paused={connectionEventsPaused}\n onTogglePaused={toggleConnectionEventsPaused}\n colorScheme={colorScheme}\n eventsContainerRef={eventsContainerRef}\n showEvents={showEvents}\n setShowEvents={setShowEvents}\n />\n </div>\n );\n});\n\nconst truncateAsset = memoize((asset: NoyaAsset) => {\n if (asset.url.startsWith(\"data:\") || asset.url.startsWith(\"blob:\")) {\n return { ...asset, url: ellipsis(asset.url, 40) };\n }\n return asset;\n});\n","\"use client\";\n\nimport {\n GetAtPath,\n Observable,\n ObservableOptions,\n PathKey,\n} from \"@noya-app/observable\";\nimport { useMemo, useSyncExternalStore } from \"react\";\n\n// Overloads for when observable is definitely defined\nexport function useObservable<T>(observable: Observable<T>): T;\nexport function useObservable<T, A>(\n observable: Observable<T>,\n selector: (value: T) => A,\n options?: Pick<ObservableOptions, \"isEqual\">\n): A;\nexport function useObservable<T, P extends PathKey[] | string>(\n observable: Observable<T>,\n path: P\n): GetAtPath<T, P>;\n\n// Overloads for when observable might be undefined\nexport function useObservable<T>(\n observable: Observable<T> | undefined\n): T | undefined;\nexport function useObservable<T, A>(\n observable: Observable<T> | undefined,\n selector: (value: T) => A,\n options?: Pick<ObservableOptions, \"isEqual\">\n): A | undefined;\nexport function useObservable<T, P extends PathKey[] | string>(\n observable: Observable<T> | undefined,\n path: P\n): GetAtPath<T, P> | undefined;\n\n// Implementation\nexport function useObservable<T, P extends PathKey[]>(\n observable: Observable<T> | undefined,\n pathOrSelector?: P | ((value: T) => any),\n options?: Pick<ObservableOptions, \"isEqual\">\n) {\n const { get, listen } = useMemo(() => {\n if (!observable) {\n return {\n get: () => undefined,\n listen: () => () => {},\n };\n }\n\n if (typeof pathOrSelector === \"function\") {\n const mappedObservable = observable.map(pathOrSelector, {\n isEqual: options?.isEqual,\n });\n return {\n get: mappedObservable.get,\n listen: mappedObservable.subscribe,\n };\n }\n\n const listen = pathOrSelector\n ? (callback: (value: GetAtPath<T, P>) => void) =>\n observable.subscribe(pathOrSelector, callback)\n : observable.subscribe;\n\n const get: () => void = pathOrSelector\n ? () => observable.get(pathOrSelector)\n : observable.get;\n\n return { get, listen };\n }, [observable, pathOrSelector, options?.isEqual]);\n\n return useSyncExternalStore(listen, get, get);\n}\n","import React from \"react\";\n\nexport function ColoredDot({ type }: { type: \"success\" | \"error\" }) {\n return (\n <span\n style={{\n display: \"inline-block\",\n width: 6,\n height: 6,\n background:\n type === \"success\" ? \"rgba(0,200,0,0.8)\" : \"rgba(200,0,0,0.8)\",\n borderRadius: \"50%\",\n verticalAlign: \"middle\",\n }}\n />\n );\n}\n","import { chromeDark, chromeLight } from \"react-inspector\";\n\nexport const lightInspectorTheme = {\n ...chromeLight,\n BASE_BACKGROUND_COLOR: \"transparent\",\n OBJECT_NAME_COLOR: \"rgba(0,0,0,0.7)\",\n} as any;\n\nexport const darkInspectorTheme = {\n ...chromeDark,\n BASE_BACKGROUND_COLOR: \"transparent\",\n OBJECT_NAME_COLOR: \"rgba(255,255,255,0.7)\",\n} as any;\n\nexport const getStateInspectorTheme = (colorScheme: \"light\" | \"dark\") => {\n return colorScheme === \"light\" ? lightInspectorTheme : darkInspectorTheme;\n};\n\nexport const getStateInspectorBorderColor = (colorScheme: \"light\" | \"dark\") => {\n return colorScheme === \"light\" ? \"rgb(223 223 223)\" : \"rgb(29 29 29)\";\n};\n","import { ActivityEventsManager, StreamFilter } from \"@noya-app/state-manager\";\nimport React, { useState } from \"react\";\nimport { ObjectInspector } from \"react-inspector\";\nimport { useActivityEventsForManager } from \"../../NoyaStateContext\";\nimport { getStateInspectorTheme } from \"../inspectorTheme\";\nimport { StateInspectorButton } from \"../StateInspectorButton\";\nimport {\n StateInspectorDisclosureRowInner,\n StateInspectorDisclosureSection,\n} from \"../StateInspectorDisclosureSection\";\nimport { StateInspectorRow } from \"../StateInspectorRow\";\n\nfunction isResourceStreamFilter(\n streamFilter: StreamFilter\n): streamFilter is { resourceId: string } {\n return typeof streamFilter === \"object\" && \"resourceId\" in streamFilter;\n}\n\nfunction isResourceActivityEvent(\n activityEvent: unknown\n): activityEvent is { resourceId: string } {\n return (\n typeof activityEvent === \"object\" &&\n activityEvent !== null &&\n \"type\" in activityEvent &&\n activityEvent.type === \"resource\" &&\n \"resourceId\" in activityEvent &&\n typeof activityEvent.resourceId === \"string\"\n );\n}\n\nexport function ActivityEventsSection({\n showEvents,\n setShowEvents,\n colorScheme,\n activityEventsContainerRef,\n activityEventsManager,\n}: {\n showEvents: boolean;\n setShowEvents: (value: boolean) => void;\n colorScheme: \"light\" | \"dark\";\n activityEventsContainerRef: React.RefObject<HTMLDivElement | null>;\n activityEventsManager: ActivityEventsManager;\n}) {\n const [streamFilter, setStreamFilter] = useState<StreamFilter>(\"all\");\n const streamFilterType = isResourceStreamFilter(streamFilter)\n ? \"resource\"\n : \"all\";\n const theme = getStateInspectorTheme(colorScheme);\n const activityEvents = useActivityEventsForManager(\n showEvents ? streamFilter : undefined,\n activityEventsManager\n );\n\n return (\n <StateInspectorDisclosureSection\n open={showEvents}\n setOpen={setShowEvents}\n title={`Activity Events`}\n colorScheme={colorScheme}\n >\n <StateInspectorDisclosureRowInner ref={activityEventsContainerRef}>\n <div style={{ padding: \"4px 12px\", display: \"flex\", gap: \"4px\" }}>\n <select\n name=\"streamFilterType\"\n value={streamFilterType}\n style={{ flex: \"0 0 auto\", height: \"19px\" }}\n onChange={(e) => {\n const value = e.target.value as string;\n if (value === \"all\") {\n setStreamFilter(\"all\");\n } else {\n setStreamFilter({ resourceId: \"\" });\n }\n }}\n >\n <option value=\"all\">All</option>\n <option value=\"resource\">Resource</option>\n </select>\n {isResourceStreamFilter(streamFilter) && (\n <input\n name=\"resourceId\"\n type=\"text\"\n placeholder=\"Resource ID\"\n value={streamFilter.resourceId}\n style={{\n flex: \"1 1 auto\",\n height: \"19px\",\n padding: \"0px 4px\",\n boxSizing: \"border-box\",\n }}\n onChange={(e) =>\n setStreamFilter({ ...streamFilter, resourceId: e.target.value })\n }\n />\n )}\n </div>\n {activityEvents?.map((activityEvent, index) => (\n <StateInspectorRow\n key={index}\n colorScheme={colorScheme}\n style={{\n padding: \"0px 12px 1px\",\n }}\n >\n <ObjectInspector data={activityEvent} theme={theme} />\n {streamFilterType === \"all\" &&\n isResourceActivityEvent(activityEvent) && (\n <StateInspectorButton\n theme={theme}\n onClick={() => {\n setStreamFilter({ resourceId: activityEvent.resourceId });\n }}\n >\n Watch this resource\n </StateInspectorButton>\n )}\n </StateInspectorRow>\n ))}\n {!activityEvents && (\n <div\n style={{\n padding: \"12px\",\n fontSize: \"12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n }}\n >\n <span>No activity events</span>\n </div>\n )}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n );\n}\n","import React, { CSSProperties } from \"react\";\nimport { lightInspectorTheme } from \"./inspectorTheme\";\n\nexport function StateInspectorButton({\n children,\n onClick,\n style,\n theme,\n disabled,\n}: {\n children: React.ReactNode;\n onClick: () => void;\n style?: CSSProperties;\n theme: typeof lightInspectorTheme;\n disabled?: boolean;\n}) {\n return (\n <button\n type=\"button\"\n disabled={disabled}\n onClick={(event) => {\n event.stopPropagation();\n onClick();\n }}\n style={{\n flex: \"0\",\n appearance: \"none\",\n background: \"none\",\n color: theme.BASE_COLOR,\n opacity: disabled ? 0.25 : 1,\n border: \"none\",\n fontSize: \"12px\",\n whiteSpace: \"nowrap\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"0\",\n cursor: \"pointer\",\n ...style,\n }}\n >\n {children}\n </button>\n );\n}\n","\"use client\";\n\nimport React, {\n CSSProperties,\n DetailedHTMLProps,\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n} from \"react\";\nimport { darkInspectorTheme, lightInspectorTheme } from \"./inspectorTheme\";\nimport { StateInspectorArrow } from \"./StateInspectorArrow\";\n\nexport function StateInspectorDisclosureSection({\n open,\n setOpen,\n title,\n right,\n children,\n colorScheme,\n isFirst,\n style,\n}: {\n open: boolean;\n setOpen?: (value: boolean) => void;\n title: React.ReactNode;\n right?: React.ReactNode;\n children: React.ReactNode;\n colorScheme: \"light\" | \"dark\";\n isFirst?: boolean;\n style?: CSSProperties;\n}) {\n const theme =\n colorScheme === \"light\" ? lightInspectorTheme : darkInspectorTheme;\n\n const borderColor =\n colorScheme === \"light\" ? \"rgba(0,0,0,0.1)\" : \"rgba(255,255,255,0.1)\";\n\n return (\n <div\n style={{\n flex: open ? \"1 1 0\" : \"0\",\n display: \"flex\",\n flexDirection: \"column\",\n ...style,\n }}\n >\n <div\n onClick={() => setOpen?.(!open)}\n style={{\n cursor: \"default\",\n fontSize: \"12px\",\n padding: \"4px 10px\",\n display: \"flex\",\n alignItems: \"center\",\n ...(!isFirst && { borderTop: `1px solid ${borderColor}` }),\n ...(open && { borderBottom: `1px solid ${borderColor}` }),\n }}\n >\n {setOpen && (\n <StateInspectorArrow\n expanded={open}\n style={{\n fontSize: theme.ARROW_FONT_SIZE,\n marginRight: theme.ARROW_MARGIN_RIGHT + 1,\n color: theme.ARROW_COLOR,\n }}\n />\n )}\n <span style={{ flex: \"1 1 0\", userSelect: \"none\" }}>{title}</span>\n {right}\n </div>\n {open && children}\n </div>\n );\n}\n\nexport const StateInspectorDisclosureRowInner = forwardRef(\n function StateInspectorDisclosureRowInner(\n props: DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>,\n forwardedRef: ForwardedRef<HTMLDivElement>\n ) {\n return (\n <div\n style={{\n flex: \"1 1 0\",\n overflowY: \"auto\",\n overflowX: \"hidden\",\n display: \"flex\",\n flexDirection: \"column\",\n ...props.style,\n }}\n {...props}\n ref={forwardedRef}\n />\n );\n }\n);\n","import React, { CSSProperties } from \"react\";\n\n// Rotates ▶️ or ▼ based on expanded state\nexport function StateInspectorArrow({\n expanded,\n onClick,\n style,\n}: {\n expanded: boolean;\n onClick?: () => void;\n style?: CSSProperties;\n}) {\n return (\n <span\n role=\"button\"\n onClick={onClick}\n style={{\n display: \"inline-block\",\n textAlign: \"center\",\n transform: expanded ? \"rotate(0deg)\" : \"rotate(-90deg)\",\n fontFamily: \"Menlo, monospace\",\n ...style,\n }}\n >\n {\"▼\"}\n </span>\n );\n}\n","\"use client\";\n\nimport React, { CSSProperties } from \"react\";\n\nexport function StateInspectorRow({\n children,\n colorScheme,\n selected,\n style,\n variant,\n bordered = true,\n}: {\n children: React.ReactNode;\n colorScheme: \"light\" | \"dark\";\n selected?: boolean;\n style?: CSSProperties;\n variant?: \"up\" | \"down\";\n bordered?: boolean;\n}) {\n const solidBorderColor =\n colorScheme === \"light\" ? \"rgb(223 223 223)\" : \"rgb(29 29 29)\";\n\n return (\n <div\n style={{\n borderBottom: bordered ? `1px solid ${solidBorderColor}` : undefined,\n fontSize: \"12px\",\n fontFamily: \"Menlo, monospace\",\n padding: \"2px 12px 1px\",\n display: \"flex\",\n alignItems: \"center\",\n background:\n variant === \"up\"\n ? \"rgba(0,255,0,0.1)\"\n : variant === \"down\"\n ? \"transparent\"\n : selected\n ? \"rgb(59 130 246 / 15%)\"\n : undefined,\n // background:\n // colorScheme === \"light\"\n // ? \"rgba(0,0,0,0.05)\"\n // : \"rgba(255,255,255,0.05)\",\n ...style,\n }}\n >\n <span\n style={{\n fontFamily: \"Menlo, monospace\",\n fontSize: \"11px\",\n borderRadius: 4,\n display: \"inline-block\",\n }}\n >\n {children}\n </span>\n </div>\n );\n}\n","import { ConnectionEvent } from \"@noya-app/state-manager\";\nimport React from \"react\";\nimport { ObjectInspector, ObjectLabel } from \"react-inspector\";\nimport { getStateInspectorTheme } from \"../inspectorTheme\";\nimport { ObjectRootLabel } from \"../ObjectRootLabel\";\nimport { StateInspectorButton } from \"../StateInspectorButton\";\nimport {\n StateInspectorDisclosureRowInner,\n StateInspectorDisclosureSection,\n} from \"../StateInspectorDisclosureSection\";\nimport { StateInspectorRow } from \"../StateInspectorRow\";\n\nexport function EventsSection<S>({\n showEvents,\n setShowEvents,\n colorScheme,\n eventsContainerRef,\n connectionEvents,\n paused,\n onTogglePaused,\n}: {\n showEvents: boolean;\n setShowEvents: (value: boolean) => void;\n colorScheme: \"light\" | \"dark\";\n eventsContainerRef: React.RefObject<HTMLDivElement | null>;\n connectionEvents: ConnectionEvent<S>[];\n paused: boolean;\n onTogglePaused: () => void;\n}) {\n const theme = getStateInspectorTheme(colorScheme);\n\n return (\n <StateInspectorDisclosureSection\n open={showEvents}\n setOpen={setShowEvents}\n title=\"Events\"\n colorScheme={colorScheme}\n right={\n <StateInspectorButton theme={theme} onClick={onTogglePaused}>\n {paused ? \"Resume\" : \"Pause\"}\n </StateInspectorButton>\n }\n >\n <StateInspectorDisclosureRowInner ref={eventsContainerRef}>\n {paused && (\n <div\n style={{\n padding: \"4px 12px\",\n fontSize: \"11px\",\n opacity: 0.7,\n }}\n >\n Event streaming paused\n </div>\n )}\n {connectionEvents?.map((event, index) =>\n event.type === \"stateChange\" ? (\n <StateInspectorRow key={index} colorScheme={colorScheme}>\n connection:{\" \"}\n <span style={{ fontStyle: \"italic\" }}>\n {event.state.toLowerCase()}\n </span>\n </StateInspectorRow>\n ) : (\n <StateInspectorRow\n key={index}\n colorScheme={colorScheme}\n variant={event.type === \"send\" ? \"up\" : \"down\"}\n style={{\n padding: \"0px 12px 1px\",\n }}\n >\n <ObjectInspector\n data={event.type === \"error\" ? event.error : event.message}\n theme={theme}\n nodeRenderer={({ depth, name, data, isNonenumerable }: any) => {\n const direction = event.type === \"send\" ? \"up\" : \"down\";\n\n return depth === 0 ? (\n <ObjectRootLabel direction={direction} data={data} />\n ) : (\n <ObjectLabel\n direction={direction}\n name={name}\n data={data}\n isNonenumerable={isNonenumerable}\n />\n );\n }}\n />\n </StateInspectorRow>\n )\n )}\n {!connectionEvents?.length && (\n <div\n style={{\n padding: \"12px\",\n fontSize: \"12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n }}\n >\n <span>No recorded events</span>\n </div>\n )}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n );\n}\n","import React, { FC } from \"react\";\nimport { ObjectName, ObjectPreview } from \"react-inspector\";\n\ntype MessageDirection = \"up\" | \"down\";\n\nexport const ObjectRootLabel: FC<{\n name?: string;\n data: any;\n direction?: MessageDirection;\n}> = ({ name, data, direction }) => {\n if (typeof name === \"string\") {\n return (\n <span>\n <ObjectName name={name} />\n <span>: </span>\n <ObjectPreview data={data} />\n </span>\n );\n }\n if (direction === \"up\" || direction === \"down\") {\n const arrow = direction === \"up\" ? \"↑\" : \"↓\";\n\n return (\n <span>\n <span\n style={{\n background:\n direction === \"up\" ? \"rgba(0,255,0,0.2)\" : \"rgba(255,0,0,0.2)\",\n // color: \"white\",\n width: 12,\n height: 12,\n borderRadius: 2,\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n marginRight: 4,\n lineHeight: \"12px\",\n }}\n >\n {arrow}\n </span>\n <ObjectPreview data={data} />\n </span>\n );\n } else {\n return <ObjectPreview data={data} />;\n }\n};\n","\"use client\";\n\nimport {\n HistorySnapshot,\n MultiplayerPatchMetadata,\n MultiplayerStateManager,\n} from \"@noya-app/state-manager\";\nimport React, { useEffect, useRef } from \"react\";\nimport { ObjectInspector } from \"react-inspector\";\nimport { StateInspectorButton } from \"../StateInspectorButton\";\nimport {\n StateInspectorDisclosureRowInner,\n StateInspectorDisclosureSection,\n} from \"../StateInspectorDisclosureSection\";\nimport {\n getStateInspectorBorderColor,\n getStateInspectorTheme,\n} from \"../inspectorTheme\";\nimport { pathToString } from \"../utils\";\n\nconst HISTORY_ELEMENT_PREFIX = \"noya-multiplayer-history-\";\n\nexport function HistorySection<S, M extends object>({\n showHistory,\n setShowHistory,\n colorScheme,\n historySnapshot,\n multiplayerStateManager,\n}: {\n showHistory: boolean;\n setShowHistory: (value: boolean) => void;\n colorScheme: \"light\" | \"dark\";\n historySnapshot: HistorySnapshot<S, Partial<M> & MultiplayerPatchMetadata>;\n multiplayerStateManager: MultiplayerStateManager<S, M>;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const theme = getStateInspectorTheme(colorScheme);\n const solidBorderColor = getStateInspectorBorderColor(colorScheme);\n\n useEffect(() => {\n if (ref.current) {\n ref.current.scrollTop = ref.current.scrollHeight;\n }\n }, [historySnapshot]);\n\n // If history index changes, scroll to the new history entry into view\n useEffect(() => {\n if (!ref.current) return;\n\n const historyEntry = ref.current.querySelector(\n `#${HISTORY_ELEMENT_PREFIX}${historySnapshot.historyIndex}`\n );\n\n if (historyEntry) {\n historyEntry.scrollIntoView({\n block: \"nearest\",\n inline: \"nearest\",\n });\n }\n }, [historySnapshot.historyIndex]);\n\n return (\n <StateInspectorDisclosureSection\n open={showHistory}\n setOpen={setShowHistory}\n title=\"History\"\n colorScheme={colorScheme}\n right={\n <span\n style={{\n display: \"flex\",\n gap: \"4px\",\n }}\n >\n <StateInspectorButton\n disabled={!historySnapshot.canUndo}\n theme={theme}\n onClick={() => {\n multiplayerStateManager.undo();\n }}\n >\n <span style={{ width: \"12px\", height: \"12px\" }}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fill=\"currentColor\"\n d=\"M12 5H7V2L1 6l6 4V7h5c2.2 0 4 1.8 4 4s-1.8 4-4 4H7v2h5c3.3 0 6-2.7 6-6s-2.7-6-6-6\"\n />\n </svg>\n </span>\n </StateInspectorButton>\n <StateInspectorButton\n disabled={!historySnapshot.canRedo}\n theme={theme}\n onClick={() => {\n multiplayerStateManager.redo();\n }}\n >\n <span style={{ width: \"12px\", height: \"12px\" }}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fill=\"currentColor\"\n d=\"M8 5h5V2l6 4l-6 4V7H8c-2.2 0-4 1.8-4 4s1.8 4 4 4h5v2H8c-3.3 0-6-2.7-6-6s2.7-6 6-6\"\n />\n </svg>\n </span>\n </StateInspectorButton>\n </span>\n }\n >\n <StateInspectorDisclosureRowInner ref={ref}>\n <div\n id={`${HISTORY_ELEMENT_PREFIX}0`}\n style={{\n borderBottom: `1px solid ${solidBorderColor}`,\n fontSize: \"12px\",\n fontFamily: \"Menlo, monospace\",\n padding: \"2px 12px 1px\",\n display: \"flex\",\n alignItems: \"center\",\n background:\n historySnapshot.historyIndex === 0\n ? \"rgb(59 130 246 / 15%)\"\n : undefined,\n }}\n >\n <span\n style={{\n fontFamily: \"Menlo, monospace\",\n fontSize: \"11px\",\n borderRadius: 4,\n display: \"inline-block\",\n }}\n >\n Initial state\n </span>\n </div>\n {historySnapshot.history.map((entry, index) => {\n const metadata = entry.metadata;\n const { id, name, timestamp, ...rest } = metadata;\n\n return (\n <div\n id={`${HISTORY_ELEMENT_PREFIX}${index + 1}`}\n key={index}\n style={{\n padding: \"0px 12px 1px\",\n borderBottom: `1px solid ${solidBorderColor}`,\n background:\n index + 1 === historySnapshot.historyIndex\n ? \"rgb(59 130 246 / 15%)\"\n : undefined,\n }}\n >\n {typeof name === \"string\" && (\n <pre\n style={{\n fontSize: \"11px\",\n display: \"flex\",\n flexWrap: \"wrap\",\n margin: 0,\n }}\n >\n {entry.metadata.name}\n {Object.keys(rest).length > 0 && (\n <ObjectInspector data={rest} theme={theme} />\n )}\n </pre>\n )}\n {entry.redoPatches?.map((patch, j) => (\n <pre\n key={j}\n style={{\n fontSize: \"11px\",\n display: \"flex\",\n flexWrap: \"wrap\",\n margin: 0,\n }}\n >\n {patch.op === \"add\" && (\n <>\n <span style={{ fontStyle: \"italic\" }}>\n {pathToString(patch.path)}\n </span>\n {\" = \"}\n <ObjectInspector data={patch.value} theme={theme} />\n </>\n )}\n {patch.op === \"replace\" && (\n <>\n <span style={{ fontStyle: \"italic\" }}>\n {pathToString(patch.path)}\n </span>\n {\" = \"}\n <ObjectInspector data={patch.value} theme={theme} />\n </>\n )}\n {patch.op === \"remove\" && (\n <>\n <span style={{ color: theme.OBJECT_VALUE_STRING_COLOR }}>\n delete{\" \"}\n </span>\n <span style={{ fontStyle: \"italic\" }}>\n {pathToString(patch.path)}\n </span>\n </>\n )}\n {patch.op === \"move\" && (\n <>\n <span style={{ fontStyle: \"italic\" }}>\n {pathToString(patch.from!)}\n </span>\n {\" -> \"}\n <span style={{ fontStyle: \"italic\" }}>\n {pathToString(patch.path)}\n </span>\n </>\n )}\n </pre>\n ))}\n </div>\n );\n })}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n );\n}\n","import { ExtendedPathKey } from \"@noya-app/state-manager\";\n\nexport function pathToString(extendedPath: ExtendedPathKey[]) {\n return extendedPath\n .map((key) =>\n typeof key === \"object\"\n ? `:${ellipsis(key.id.toString(), 8, \"middle\")}`\n : key\n )\n .map((key, index) =>\n index === 0 || (typeof key === \"string\" && key.startsWith(\":\"))\n ? key\n : `.${key}`\n )\n .join(\"\");\n}\n\nexport type EllipsisPosition = \"start\" | \"middle\" | \"end\";\n\nexport function ellipsis(\n str: string,\n maxLength: number,\n position: EllipsisPosition = \"end\"\n) {\n if (str.length <= maxLength) return str;\n\n switch (position) {\n case \"start\":\n return `…${str.slice(str.length - maxLength)}`;\n case \"middle\": {\n const halfLength = Math.floor(maxLength / 2);\n return `${str.slice(0, halfLength)}…${str.slice(str.length - halfLength)}`;\n }\n case \"end\":\n return `${str.slice(0, maxLength)}…`;\n }\n}\n\nexport function uploadFile() {\n return new Promise<File>((resolve, reject) => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = () => {\n const file = input.files?.[0];\n if (file) {\n const reader = new FileReader();\n reader.onload = () => {\n const buffer = reader.result as ArrayBuffer;\n const blob = new File([buffer], file.name, { type: file.type });\n resolve(blob);\n };\n reader.onerror = () => {\n reject(new Error(\"Failed to read file\"));\n };\n reader.readAsArrayBuffer(file);\n }\n };\n input.click();\n });\n}\n","import { ServerScriptLogEntry } from \"@noya-app/state-manager\";\nimport React from \"react\";\nimport { ObjectInspector } from \"react-inspector\";\nimport { getStateInspectorTheme } from \"../inspectorTheme\";\nimport { StateInspectorButton } from \"../StateInspectorButton\";\nimport {\n StateInspectorDisclosureRowInner,\n StateInspectorDisclosureSection,\n} from \"../StateInspectorDisclosureSection\";\nimport { StateInspectorRow } from \"../StateInspectorRow\";\n\nconst levelColors: Record<ServerScriptLogEntry[\"level\"], string> = {\n error: \"#f87171\",\n warn: \"#facc15\",\n log: \"#9ca3af\",\n};\n\nfunction formatTimestamp(timestamp: number) {\n return new Date(timestamp).toLocaleTimeString();\n}\n\nexport function ServerScriptLogsSection({\n showLogs,\n setShowLogs,\n colorScheme,\n logs,\n containerRef,\n paused,\n onTogglePaused,\n title = \"Server Script Logs\",\n}: {\n showLogs: boolean;\n setShowLogs: (value: boolean) => void;\n colorScheme: \"light\" | \"dark\";\n logs: ServerScriptLogEntry[];\n containerRef: React.RefObject<HTMLDivElement | null>;\n paused: boolean;\n onTogglePaused: () => void;\n title?: string;\n}) {\n const theme = getStateInspectorTheme(colorScheme);\n\n return (\n <StateInspectorDisclosureSection\n open={showLogs}\n setOpen={setShowLogs}\n title={title}\n colorScheme={colorScheme}\n right={\n <StateInspectorButton theme={theme} onClick={onTogglePaused}>\n {paused ? \"Resume\" : \"Pause\"}\n </StateInspectorButton>\n }\n >\n <StateInspectorDisclosureRowInner ref={containerRef}>\n {paused && (\n <div\n style={{\n padding: \"4px 12px\",\n fontSize: \"11px\",\n opacity: 0.7,\n }}\n >\n Log streaming paused\n </div>\n )}\n {logs.map((log) => (\n <StateInspectorRow key={log.id} colorScheme={colorScheme}>\n <div\n style={{\n display: \"flex\",\n gap: \"6px\",\n alignItems: \"center\",\n fontSize: \"10px\",\n color: \"inherit\",\n marginBottom: log.values.length ? \"4px\" : 0,\n textTransform: \"uppercase\",\n }}\n >\n <span>{formatTimestamp(log.timestamp)}</span>\n <span style={{ color: levelColors[log.level] }}>{log.level}</span>\n {(log.origin || log.target || log.mode) && (\n <span\n style={{\n fontFamily: \"monospace\",\n textTransform: \"none\",\n fontSize: \"10px\",\n opacity: 0.75,\n }}\n >\n {[log.origin ?? log.target, log.mode]\n .filter(Boolean)\n .join(\" / \")}\n </span>\n )}\n <span\n style={{\n fontFamily: \"monospace\",\n textTransform: \"none\",\n fontSize: \"10px\",\n }}\n >\n {log.scriptId}\n </span>\n </div>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n }}\n >\n {log.values.length > 0 ? (\n log.values.map((value, index) => (\n <ObjectInspector\n key={index}\n data={value}\n theme={theme}\n // expandLevel={3}\n />\n ))\n ) : (\n <span style={{ fontSize: \"11px\", opacity: 0.7 }}>No data</span>\n )}\n </div>\n </StateInspectorRow>\n ))}\n {!logs?.length && (\n <div\n style={{\n padding: \"12px\",\n fontSize: \"12px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n }}\n >\n <span>No logs received</span>\n </div>\n )}\n </StateInspectorDisclosureRowInner>\n </StateInspectorDisclosureSection>\n );\n}\n","import { Asset, decodeSchema, encodeSchema } from \"@noya-app/noya-schemas\";\nimport { createHash, NoyaManager, TSchema } from \"@noya-app/state-manager\";\nimport { TinyZip } from \"./zip/TinyZip\";\n\nexport async function fetchAssetMap(\n assets: Asset[]\n): Promise<Record<string, Uint8Array>> {\n const res = await Promise.all(\n assets.map(async (asset) => {\n const url = asset.url;\n const response = await fetch(url);\n const data = await response.arrayBuffer();\n return [asset.id, data];\n })\n );\n\n return Object.fromEntries(res);\n}\n\nexport async function exportAll(\n noyaManager: NoyaManager<any, any, any, any, any>\n) {\n const { multiplayerStateManager, assetManager } = noyaManager;\n\n const assetMap = await fetchAssetMap(assetManager.assets$.get());\n\n return encodeAll({\n state: multiplayerStateManager.optimisticState$.get(),\n schema: multiplayerStateManager.schema,\n assets: assetManager.assets$.get(),\n assetMap,\n });\n}\n\nexport function encodeAll({\n state,\n schema,\n assets,\n assetMap,\n}: {\n state: unknown;\n schema?: TSchema;\n assets: Asset[];\n assetMap: Record<string, Uint8Array>;\n}) {\n const zip = new TinyZip();\n\n zip.addFile(\"state.json\", JSON.stringify(state, null, 2));\n\n if (schema) {\n const encodedSchema = encodeSchema(schema);\n\n zip.addFile(\"schema.json\", JSON.stringify(encodedSchema, null, 2));\n }\n\n if (assets.length) {\n zip.addFile(\"assets.json\", JSON.stringify(assets, null, 2));\n }\n\n for (const [id, data] of Object.entries(assetMap)) {\n zip.addFile(`assets/${id}`, data);\n }\n\n return zip.finish();\n}\n\nexport async function importAll(\n buffer: Uint8Array | ArrayBuffer,\n noyaManager: NoyaManager<any, any, any, any, any>,\n {\n shouldAllowSchemaChange,\n }: {\n shouldAllowSchemaChange?: ({\n oldSchema,\n newSchema,\n }: {\n oldSchema: TSchema;\n newSchema: TSchema;\n }) => boolean;\n } = {}\n) {\n let { state, schema, assets, assetMap } = await decodeAll(buffer);\n\n if (shouldAllowSchemaChange && noyaManager.options.schema && schema) {\n const oldSchemaHash = createHash(noyaManager.options.schema);\n const newSchemaHash = createHash(schema);\n\n if (oldSchemaHash !== newSchemaHash) {\n const shouldAllow = shouldAllowSchemaChange({\n oldSchema: noyaManager.options.schema,\n newSchema: schema,\n });\n\n if (!shouldAllow) {\n throw new Error(\"Schema change not allowed\");\n }\n }\n }\n\n if (assets.length) {\n await Promise.all(\n noyaManager.assetManager.assets$\n .get()\n .map((asset) => noyaManager.assetManager.delete(asset.stableId))\n );\n\n // Add new assets, preserving stableIds\n await Promise.all(\n assets.map(async (asset) => {\n await noyaManager.assetManager.create({\n data: assetMap[asset.id],\n contentType: asset.contentType,\n stableId: asset.stableId,\n });\n })\n );\n }\n\n // if (schema) {\n // noyaManager.options.schema = schema;\n // }\n\n noyaManager.initialState = state;\n noyaManager.forceInit();\n}\n\nexport function decodeAll(buffer: Uint8Array | ArrayBuffer): {\n state: unknown;\n schema?: TSchema;\n assets: Asset[];\n assetMap: Record<string, Uint8Array>;\n} {\n const zip = TinyZip.extract(buffer);\n\n const stateFile = zip[\"state.json\"];\n const schemaFile = zip[\"schema.json\"];\n const assetsFile = zip[\"assets.json\"];\n\n if (!stateFile) {\n throw new Error(\"State file not found\");\n }\n\n const state = JSON.parse(new TextDecoder().decode(stateFile));\n\n let schema: TSchema | undefined;\n\n if (schemaFile) {\n const encodedSchema = JSON.parse(new TextDecoder().decode(schemaFile));\n schema = decodeSchema(encodedSchema);\n }\n\n let assets: Asset[] = [];\n\n let assetMap: Record<string, Uint8Array> = {};\n\n if (assetsFile) {\n assets = JSON.parse(new TextDecoder().decode(assetsFile));\n\n for (const asset of assets) {\n const data = zip[`assets/${asset.id}`];\n\n if (!data) {\n throw new Error(`Asset ${asset.id} not found`);\n }\n\n assetMap[asset.id] = data;\n }\n }\n\n return { state, schema, assets, assetMap };\n}\n\nexport function replaceDeep<T>(\n obj: T,\n replacementMap: Record<string, string>\n): T {\n switch (typeof obj) {\n case \"object\":\n if (obj === null) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => replaceDeep(item, replacementMap)) as any;\n }\n\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => [\n key,\n replaceDeep(value, replacementMap),\n ])\n ) as any;\n case \"string\":\n return (replacementMap[obj] ?? obj) as any;\n default:\n return obj;\n }\n}\n","const CRC_TABLE: Uint32Array = (() => {\n const t = new Uint32Array(256);\n for (let i = 0; i < 256; i++) {\n let c = i;\n for (let k = 0; k < 8; k++) c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;\n t[i] = c >>> 0;\n }\n return t;\n})();\n\nexport function crc32(u8: Uint8Array): number {\n let c = 0xffffffff;\n for (let i = 0; i < u8.length; i++)\n c = CRC_TABLE[(c ^ u8[i]) & 0xff] ^ (c >>> 8);\n return (c ^ 0xffffffff) >>> 0;\n}\n","// -------------------------\n// Declarative header schemas + (en|de)coders\n// -------------------------\ntype ScalarType = \"u8\" | \"u16\" | \"u32\";\n\ntype LenFn = (ctx: Record<string, any>) => number;\n\n// Typed schema helpers\ntype NumberField<Name extends string, Kind extends ScalarType> = {\n name: Name;\n type: Kind;\n};\n\ntype BytesField<Name extends string> = {\n name: Name;\n type: \"bytes\";\n length: number | LenFn;\n};\n\ntype SchemaFieldConst<Name extends string = string> =\n | NumberField<Name, ScalarType>\n | BytesField<Name>;\n\ntype FieldValue<F> = F extends { type: \"bytes\" } ? Uint8Array : number;\n\ntype StructFromSchema<S extends readonly SchemaFieldConst<string>[]> = {\n [F in S[number] as F[\"name\"] & string]: FieldValue<F>;\n};\n\nexport const defineSchema = <\n const S extends readonly SchemaFieldConst<string>[],\n>(\n s: S\n) => s;\nexport const defineSchemas = <\n const M extends Record<string, readonly SchemaFieldConst<string>[]>,\n>(\n m: M\n) => m;\n\nexport type SchemaStructs<\n M extends Record<string, readonly SchemaFieldConst<string>[]>,\n> = {\n [K in keyof M]: StructFromSchema<M[K]>;\n};\n\nexport function sizeofFieldSpec(\n f: SchemaFieldConst<string>,\n ctx: Record<string, any>\n): number {\n if (f.type === \"bytes\")\n return typeof f.length === \"function\" ? (f.length as LenFn)(ctx) : f.length;\n return f.type === \"u8\" ? 1 : f.type === \"u16\" ? 2 : 4;\n}\n\nexport function writeStruct<S extends readonly SchemaFieldConst<string>[]>(\n schema: S,\n values: StructFromSchema<S>\n): Uint8Array {\n // compute total size (bytes fields may depend on previously set values)\n let total = 0;\n const ctx: Record<string, any> = { ...(values as any) };\n for (const f of schema) total += sizeofFieldSpec(f, ctx);\n\n const out = new Uint8Array(total);\n const view = new DataView(out.buffer);\n let o = 0;\n const vals = values as unknown as Record<string, any>;\n for (const f of schema) {\n if (f.type === \"bytes\") {\n const b: Uint8Array = vals[f.name];\n out.set(b, o);\n o += b.length;\n continue;\n }\n const n = Number(vals[f.name]) >>> 0;\n if (f.type === \"u8\") {\n view.setUint8(o, n);\n o += 1;\n } else if (f.type === \"u16\") {\n view.setUint16(o, n, true);\n o += 2;\n } else {\n view.setUint32(o, n, true);\n o += 4;\n }\n }\n return out;\n}\n\nexport function readStruct<S extends readonly SchemaFieldConst<string>[]>(\n view: DataView,\n offset: number,\n schema: S\n): { value: StructFromSchema<S>; offset: number } {\n const ctx: Record<string, any> = {};\n let o = offset;\n for (const f of schema) {\n if (f.type === \"bytes\") {\n const len =\n typeof f.length === \"function\" ? (f.length as LenFn)(ctx) : f.length;\n const u8 = new Uint8Array(view.buffer, view.byteOffset + o, len);\n ctx[f.name] = new Uint8Array(u8); // copy for safety\n o += len;\n } else if (f.type === \"u8\") {\n ctx[f.name] = view.getUint8(o);\n o += 1;\n } else if (f.type === \"u16\") {\n ctx[f.name] = view.getUint16(o, true);\n o += 2;\n } else {\n ctx[f.name] = view.getUint32(o, true);\n o += 4;\n }\n }\n return { value: ctx as StructFromSchema<S>, offset: o };\n}\n","/* eslint-disable @shopify/prefer-early-return */\n\n// TinyZip.ts — ultra-lightweight ZIP writer (no deps)\n// - UTF-8 file names, Store only (no compression)\n// - Optional top-level root folder so unzip creates a single directory\n// - No Zip64 (files and total size must be < 4 GiB)\n\nimport { crc32 } from \"./crc32\";\nimport { defineSchema, defineSchemas, readStruct, writeStruct } from \"./struct\";\n\nexport interface AddFileOptions {\n date?: Date;\n}\n\nexport interface TinyZipOptions {\n /** Place all entries under this top-level folder; creates the dir entry automatically. */\n root?: string;\n}\n\ninterface CentralEntry {\n nameBytes: Uint8Array;\n crc: number;\n compSize: number;\n uncompSize: number;\n method: number;\n time: number;\n dosDate: number;\n localHeaderOffset: number;\n externalAttrs: number; // DOS attrs low byte (0x10 = directory)\n}\n\n// -------------------------\n// Top-level helpers (no state)\n// -------------------------\nconst te = new TextEncoder();\n\nfunction utf8(s: string): Uint8Array {\n return te.encode(s);\n}\n\nfunction dosDateTime(d: Date = new Date()): {\n time: number;\n date: number;\n} {\n const time =\n (d.getHours() << 11) |\n (d.getMinutes() << 5) |\n Math.floor(d.getSeconds() / 2);\n const date =\n ((d.getFullYear() - 1980) << 9) | ((d.getMonth() + 1) << 5) | d.getDate();\n return { time, date };\n}\n\n// ZIP constants\nconst SIG = {\n LocalFile: 0x04034b50,\n CentralFile: 0x02014b50,\n EOCD: 0x06054b50,\n} as const;\n\nconst SCHEMA = defineSchemas({\n LocalFile: defineSchema([\n { name: \"signature\", type: \"u32\" },\n { name: \"versionNeeded\", type: \"u16\" },\n { name: \"flags\", type: \"u16\" },\n { name: \"method\", type: \"u16\" },\n { name: \"time\", type: \"u16\" },\n { name: \"date\", type: \"u16\" },\n { name: \"crc32\", type: \"u32\" },\n { name: \"compSize\", type: \"u32\" },\n { name: \"uncompSize\", type: \"u32\" },\n { name: \"nameLen\", type: \"u16\" },\n { name: \"extraLen\", type: \"u16\" },\n { name: \"name\", type: \"bytes\", length: (c) => c.nameLen },\n { name: \"extra\", type: \"bytes\", length: (c) => c.extraLen },\n ]),\n CentralFile: defineSchema([\n { name: \"signature\", type: \"u32\" },\n { name: \"versionMadeBy\", type: \"u16\" },\n { name: \"versionNeeded\", type: \"u16\" },\n { name: \"flags\", type: \"u16\" },\n { name: \"method\", type: \"u16\" },\n { name: \"time\", type: \"u16\" },\n { name: \"date\", type: \"u16\" },\n { name: \"crc32\", type: \"u32\" },\n { name: \"compSize\", type: \"u32\" },\n { name: \"uncompSize\", type: \"u32\" },\n { name: \"nameLen\", type: \"u16\" },\n { name: \"extraLen\", type: \"u16\" },\n { name: \"commentLen\", type: \"u16\" },\n { name: \"diskStart\", type: \"u16\" },\n { name: \"intAttrs\", type: \"u16\" },\n { name: \"extAttrs\", type: \"u32\" },\n { name: \"localHeaderOffset\", type: \"u32\" },\n { name: \"name\", type: \"bytes\", length: (c) => c.nameLen },\n { name: \"extra\", type: \"bytes\", length: (c) => c.extraLen },\n { name: \"comment\", type: \"bytes\", length: (c) => c.commentLen },\n ]),\n EOCD: defineSchema([\n { name: \"signature\", type: \"u32\" },\n { name: \"diskNum\", type: \"u16\" },\n { name: \"cdStartDisk\", type: \"u16\" },\n { name: \"cdRecordsOnDisk\", type: \"u16\" },\n { name: \"cdRecordsTotal\", type: \"u16\" },\n { name: \"cdSize\", type: \"u32\" },\n { name: \"cdOffset\", type: \"u32\" },\n { name: \"commentLen\", type: \"u16\" },\n { name: \"comment\", type: \"bytes\", length: (c) => c.commentLen },\n ]),\n});\n\nfunction ensureSig(v: number, expect: number, where: string) {\n if (v !== expect)\n throw new Error(`Invalid signature for ${where}: 0x${v.toString(16)}`);\n}\n\n// -------------------------\n// TinyZip (writer)\n// -------------------------\nexport class TinyZip {\n private _chunks: Uint8Array[] = [];\n private _offset = 0;\n private _files: CentralEntry[] = [];\n\n private _rootPrefix = \"\"; // e.g. \"my-archive/\" or \"\"\n private _rootDirAdded = false;\n\n constructor(opts: TinyZipOptions = {}) {\n if (opts.root) {\n const r = opts.root.replace(/^\\/+|\\/+$/g, \"\");\n if (r) this._rootPrefix = r + \"/\";\n }\n }\n\n private _push(...arrs: Uint8Array[]) {\n for (const a of arrs) {\n this._chunks.push(a);\n this._offset += a.length;\n }\n }\n private _withRoot(name: string): string {\n return this._rootPrefix && !name.startsWith(this._rootPrefix)\n ? this._rootPrefix + name.replace(/^\\/+/, \"\")\n : name;\n }\n\n private _ensureRootDir(date: Date = new Date()) {\n if (!this._rootPrefix || this._rootDirAdded) return;\n this._rootDirAdded = true;\n\n const dirName = this._rootPrefix; // already ends with '/'\n const nameBytes = utf8(dirName);\n const { time, date: dosDate } = dosDateTime(date);\n\n const localHeader = writeStruct(SCHEMA.LocalFile, {\n signature: SIG.LocalFile,\n versionNeeded: 20,\n flags: 0x0800,\n method: 0,\n time,\n date: dosDate,\n crc32: 0,\n compSize: 0,\n uncompSize: 0,\n nameLen: nameBytes.length,\n extraLen: 0,\n name: nameBytes,\n extra: new Uint8Array(0),\n });\n\n const localHeaderOffset = this._offset;\n this._push(localHeader);\n this._files.push({\n nameBytes,\n crc: 0,\n compSize: 0,\n uncompSize: 0,\n method: 0,\n time,\n dosDate,\n localHeaderOffset,\n externalAttrs: 0x10,\n });\n }\n\n /** Add a file to the zip. \"name\" uses forward slashes for paths (e.g., \"dir/file.txt\"). */\n addFile(\n name: string,\n data: string | Uint8Array | ArrayBuffer,\n opts: AddFileOptions = {}\n ): void {\n const { date = new Date() } = opts;\n this._ensureRootDir(date);\n\n const u8 = toU8(data);\n\n const fullName = this._withRoot(name);\n const nameBytes = utf8(fullName);\n const { time, date: dosDate } = dosDateTime(date);\n const crc = crc32(u8);\n\n const compSize = u8.length >>> 0;\n const uncompSize = u8.length >>> 0;\n const localHeaderOffset = this._offset;\n\n const localHeader = writeStruct(SCHEMA.LocalFile, {\n signature: SIG.LocalFile,\n versionNeeded: 20,\n flags: 0x0800,\n method: 0,\n time,\n date: dosDate,\n crc32: crc,\n compSize,\n uncompSize,\n nameLen: nameBytes.length,\n extraLen: 0,\n name: nameBytes,\n extra: new Uint8Array(0),\n });\n\n this._push(localHeader, u8);\n\n this._files.push({\n nameBytes,\n crc,\n compSize,\n uncompSize,\n method: 0,\n time,\n dosDate,\n localHeaderOffset,\n externalAttrs: 0,\n });\n }\n\n // Create an explicit directory entry (name should end with \"/\").\n addDirectory(name: string, opts: { date?: Date } = {}): void {\n const { date = new Date() } = opts;\n this._ensureRootDir(date);\n\n const dirNameRaw = name.endsWith(\"/\") ? name : name + \"/\";\n const fullName = this._withRoot(dirNameRaw);\n const nameBytes = utf8(fullName);\n const { time, date: dosDate } = dosDateTime(date);\n\n const localHeader = writeStruct(SCHEMA.LocalFile, {\n signature: SIG.LocalFile,\n versionNeeded: 20,\n flags: 0x0800,\n method: 0,\n time,\n date: dosDate,\n crc32: 0,\n compSize: 0,\n uncompSize: 0,\n nameLen: nameBytes.length,\n extraLen: 0,\n name: nameBytes,\n extra: new Uint8Array(0),\n });\n\n const localHeaderOffset = this._offset;\n this._push(localHeader);\n\n this._files.push({\n nameBytes,\n crc: 0,\n compSize: 0,\n uncompSize: 0,\n method: 0,\n time,\n dosDate,\n localHeaderOffset,\n externalAttrs: 0x10,\n });\n }\n\n finish(): Uint8Array {\n const cdStart = this._offset;\n\n for (const f of this._files) {\n const central = writeStruct(SCHEMA.CentralFile, {\n signature: SIG.CentralFile,\n versionMadeBy: 20,\n versionNeeded: 20,\n flags: 0x0800,\n method: f.method,\n time: f.time,\n date: f.dosDate,\n crc32: f.crc,\n compSize: f.compSize,\n uncompSize: f.uncompSize,\n nameLen: f.nameBytes.length,\n extraLen: 0,\n commentLen: 0,\n diskStart: 0,\n intAttrs: 0,\n extAttrs: f.externalAttrs,\n localHeaderOffset: f.localHeaderOffset,\n name: f.nameBytes,\n extra: new Uint8Array(0),\n comment: new Uint8Array(0),\n });\n this._push(central);\n }\n\n const cdSize = this._offset - cdStart;\n\n const eocd = writeStruct(SCHEMA.EOCD, {\n signature: SIG.EOCD,\n diskNum: 0,\n cdStartDisk: 0,\n cdRecordsOnDisk: this._files.length,\n cdRecordsTotal: this._files.length,\n cdSize,\n cdOffset: cdStart,\n commentLen: 0,\n comment: new Uint8Array(0),\n });\n\n this._push(eocd);\n\n const merged = new Uint8Array(this._offset);\n let offset = 0;\n for (const chunk of this._chunks) {\n merged.set(chunk, offset);\n offset += chunk.length;\n }\n return merged;\n }\n\n static create(\n files: Record<string, string | Uint8Array | ArrayBuffer>,\n opts: TinyZipOptions = {}\n ): Uint8Array {\n const zip = new TinyZip(opts);\n for (const [name, data] of Object.entries(files)) {\n if (name.endsWith(\"/\")) zip.addDirectory(name);\n else zip.addFile(name, data);\n }\n return zip.finish();\n }\n\n static parse(input: ArrayBuffer | Uint8Array): ParsedEntry[] {\n const u8 = toU8(input);\n const view = new DataView(u8.buffer, u8.byteOffset, u8.byteLength);\n\n // EOCD\n const eocdOff = findEOCDOffset(u8);\n const { value: eocd } = readStruct(view, eocdOff, SCHEMA.EOCD);\n ensureSig(eocd.signature, SIG.EOCD, \"EOCD\");\n if (eocd.commentLen !== 0) throw new Error(\"Unsupported: EOCD comment\");\n if (eocd.diskNum !== 0 || eocd.cdStartDisk !== 0)\n throw new Error(\"Unsupported: multi-disk\");\n\n // Central directory walk\n const entries: {\n name: string;\n isDirectory: boolean;\n crc32: number;\n size: number;\n compSize: number;\n time: number;\n dosDate: number;\n localHeaderOffset: number;\n }[] = [];\n let cdPtr = eocd.cdOffset;\n for (let i = 0; i < eocd.cdRecordsTotal; i++) {\n const { value: cdf, offset: next } = readStruct(\n view,\n cdPtr,\n SCHEMA.CentralFile\n );\n ensureSig(cdf.signature, SIG.CentralFile, \"Central Directory\");\n const name = new TextDecoder().decode(cdf.name);\n const isDir = (cdf.extAttrs & 0x10) !== 0 || name.endsWith(\"/\");\n if (cdf.extraLen !== 0 || cdf.commentLen !== 0)\n throw new Error(\"Unsupported: extra/comment in central dir\");\n entries.push({\n name,\n isDirectory: isDir,\n crc32: cdf.crc32 >>> 0,\n size: cdf.uncompSize >>> 0,\n compSize: cdf.compSize >>> 0,\n time: cdf.time >>> 0,\n dosDate: cdf.date >>> 0,\n localHeaderOffset: cdf.localHeaderOffset >>> 0,\n });\n cdPtr = next;\n }\n\n // Resolve data from local file headers\n const results: ParsedEntry[] = [];\n for (const e of entries) {\n const { value: lfh, offset: afterHeader } = readStruct(\n view,\n e.localHeaderOffset,\n SCHEMA.LocalFile\n );\n ensureSig(lfh.signature, SIG.LocalFile, \"Local File\");\n if (lfh.flags !== 0x0800)\n throw new Error(\"Unsupported: flags (expect UTF-8 only)\");\n if (lfh.method !== 0)\n throw new Error(\"Unsupported: compression (expect store only)\");\n if (lfh.extraLen !== 0)\n throw new Error(\"Unsupported: extra fields in local header\");\n\n const dataStart = afterHeader;\n const dataEnd = dataStart + lfh.compSize;\n const data = e.isDirectory\n ? new Uint8Array(0)\n : new Uint8Array(u8.subarray(dataStart, dataEnd));\n\n results.push({ ...e, data });\n }\n\n return results;\n }\n\n // Quick utility: return a map of file data (directories omitted)\n static extract(input: ArrayBuffer | Uint8Array): Record<string, Uint8Array> {\n const entries = this.parse(input);\n const out: Record<string, Uint8Array> = {};\n for (const e of entries) if (!e.isDirectory) out[e.name] = e.data;\n return out;\n }\n}\n\n// -------------------------\n// Reader for TinyZip archives (our subset only)\n// -------------------------\nexport interface ParsedEntry {\n name: string;\n isDirectory: boolean;\n crc32: number;\n size: number; // uncompressed\n compSize: number; // same as size for store\n time: number;\n dosDate: number;\n localHeaderOffset: number;\n data: Uint8Array; // empty for directories\n}\n\nfunction toU8(input: string | ArrayBuffer | Uint8Array): Uint8Array {\n if (typeof input === \"string\") return utf8(input);\n if (input instanceof Uint8Array) return input;\n return new Uint8Array(input);\n}\n\nfunction findEOCDOffset(u8: Uint8Array): number {\n const view = new DataView(u8.buffer, u8.byteOffset, u8.byteLength);\n const minSize = 22; // EOCD without comment\n if (u8.length >= minSize) {\n const at = u8.length - minSize;\n if (view.getUint32(at, true) === SIG.EOCD) return at;\n }\n // Fallback: scan last 1 KiB for signature\n const start = Math.max(0, u8.length - 1024);\n for (let i = u8.length - 4; i >= start; i--) {\n if (view.getUint32(i, true) === SIG.EOCD) return i;\n }\n throw new Error(\"EOCD not found\");\n}\n","import React from \"react\";\n\nexport function StateInspectorTitleLabel({\n children,\n}: {\n children: React.ReactNode;\n}) {\n return (\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n {children}\n </span>\n );\n}\n","import React from \"react\";\nimport { StateInspectorAnchor } from \"./StateInspector\";\nimport { lightInspectorTheme } from \"./inspectorTheme\";\n\nexport function StateInspectorToggleButton({\n showInspector,\n setShowInspector,\n theme,\n anchor,\n}: {\n showInspector: boolean;\n setShowInspector: (value: boolean) => void;\n theme: typeof lightInspectorTheme;\n anchor: StateInspectorAnchor;\n}) {\n const isRightAnchor = anchor === \"right\";\n\n const rightIcon = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={1.5}\n stroke=\"currentColor\"\n className=\"size-6\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"m5.25 4.5 7.5 7.5-7.5 7.5m6-15 7.5 7.5-7.5 7.5\"\n />\n </svg>\n );\n\n const leftIcon = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={1.5}\n stroke=\"currentColor\"\n className=\"size-6\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"m18.75 4.5-7.5 7.5 7.5 7.5m-6-15L5.25 12l7.5 7.5\"\n />\n </svg>\n );\n\n return (\n <span\n role=\"button\"\n style={{\n flex: \"0\",\n appearance: \"none\",\n color: theme.BASE_COLOR,\n border: \"none\",\n fontSize: \"12px\",\n whiteSpace: \"nowrap\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"2px 0\",\n }}\n onClick={(event) => {\n event.stopPropagation();\n\n setShowInspector(!showInspector);\n }}\n >\n {showInspector ? (\n \"Hide Inspector\"\n ) : (\n <span style={{ width: \"12px\", height: \"12px\" }}>\n {isRightAnchor ? rightIcon : leftIcon}\n </span>\n )}\n </span>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\n\nconst localStorage = typeof window !== \"undefined\" ? window.localStorage : null;\n\nexport function useLocalStorageState<S>(\n key: string,\n defaultValue: S\n): [S, (value: S) => void] {\n const [state, setState] = React.useState<S>(() => {\n const value = localStorage?.getItem(key);\n let result = defaultValue;\n if (value) {\n try {\n result = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing localStorage value\", error);\n }\n }\n return result;\n });\n\n const setLocalStorageState = (value: S) => {\n localStorage?.setItem(key, JSON.stringify(value));\n setState(value);\n };\n\n return [state, setLocalStorageState];\n}\n","\"use client\";\n\nimport React from \"react\";\n\n/**\n * Keeps a snapshot of items while paused, resuming updates when unpaused.\n */\nexport function usePausedStream<T>(items: T[] | undefined) {\n const [paused, setPaused] = React.useState(false);\n const [visibleItems, setVisibleItems] = React.useState(items ?? []);\n\n const togglePaused = React.useCallback(() => {\n setPaused((value) => {\n if (!value) {\n setVisibleItems(items ?? []);\n }\n return !value;\n });\n }, [items]);\n\n React.useEffect(() => {\n if (paused) return;\n\n setVisibleItems(items ?? []);\n }, [items, paused]);\n\n return {\n paused,\n setPaused,\n togglePaused,\n visibleItems,\n };\n}\n","\"use client\";\n\nimport type { LocalStorageSyncOptions } from \"@noya-app/state-manager\";\nimport {\n NoyaManager,\n NoyaManagerOptions,\n type SyncAdapter,\n} from \"@noya-app/state-manager\";\nimport React from \"react\";\nimport type { StateInspectorOptions } from \"./inspector/StateInspector\";\nimport { StateInspector } from \"./inspector/StateInspector\";\nimport { createStateInspectorRoot } from \"./inspector/useStateInspector\";\nimport {\n type AppTheme,\n type AppViewType,\n getAppData,\n getSyncAdapter,\n} from \"./noyaApp\";\n\nlet noyaManagerSingleton: NoyaManager<any, any, any, any, any> | undefined;\nlet noyaSingletonBindings: AnyNoyaSingletonBindings | undefined;\n\nexport type AnyNoyaSingletonBindings = {\n sync?: SyncAdapter<any, any, any, any, any>;\n inspector?: boolean | StateInspectorOptions;\n theme: AppTheme;\n viewType: AppViewType;\n userId?: string;\n isDemo: boolean;\n};\n\nexport type AnyNoyaSingletonOptions<\n S,\n M extends object,\n E extends object,\n MenuT extends string,\n I extends Record<string, any> = Record<string, unknown>,\n> = NoyaManagerOptions<S, M> & {\n initialState?: S | (() => S);\n sync?: SyncAdapter<S, M, E, MenuT, I>;\n inspector?: boolean | StateInspectorOptions;\n theme?: AppTheme;\n viewType?: AppViewType;\n offlineStorageKey?: string;\n multiplayerUrl?: string;\n serverScripts?: LocalStorageSyncOptions[\"serverScripts\"];\n};\n\nexport function initializeNoyaSingleton<\n S,\n M extends object,\n E extends object,\n MenuT extends string,\n I extends Record<string, any> = Record<string, unknown>,\n>(options?: AnyNoyaSingletonOptions<S, M, E, MenuT, I>) {\n if (noyaManagerSingleton) {\n throw new Error(\n \"Noya has already been initialized. Call `useNoyaState` instead.\"\n );\n }\n\n const {\n initialState,\n sync,\n inspector,\n theme,\n viewType,\n offlineStorageKey,\n multiplayerUrl,\n ...managerOptions\n } = options ?? {};\n\n const appData = getAppData<S>(\n (initialState ?? null) as S | (() => S),\n managerOptions?.schema,\n { overrideExistingState: managerOptions?.overrideExistingState }\n );\n\n const policyAuthContext =\n appData.access || appData.userId !== undefined\n ? {\n ...(appData.access ? { access: appData.access } : {}),\n ...(appData.userId !== undefined\n ? { id: appData.userId ?? null }\n : {}),\n }\n : undefined;\n\n noyaManagerSingleton = new NoyaManager<S, M, E, MenuT, I>(\n appData.initialState as S,\n managerOptions\n );\n\n if (appData.userId) {\n noyaManagerSingleton.sharedConnectionDataManager.setCurrentConnectionId(\n appData.userId\n );\n noyaManagerSingleton.userManager.setCurrentConnectionId(appData.userId);\n noyaManagerSingleton.userManager.setCurrentUserId(appData.userId);\n }\n\n const resolvedSync =\n sync ??\n getSyncAdapter<S, M, E, MenuT, I>({\n multiplayerUrl: multiplayerUrl ?? appData.multiplayerUrl,\n offlineStorageKey,\n debug: managerOptions?.debug,\n serverScripts: managerOptions?.serverScripts,\n policyAuthContext,\n });\n\n // Activate sync immediately for the singleton\n try {\n resolvedSync({ noyaManager: noyaManagerSingleton });\n } catch (error) {\n console.warn(\"Failed to activate sync\", error);\n }\n\n const resolvedInspector = inspector ?? appData.inspector;\n const resolvedTheme = theme ?? appData.theme ?? \"light\";\n const resolvedViewType = viewType ?? appData.viewType ?? \"editable\";\n\n if (resolvedInspector) {\n const { root } = createStateInspectorRoot();\n\n root.render(\n <StateInspector\n noyaManager={noyaManagerSingleton}\n colorScheme={\n resolvedInspector === true\n ? resolvedTheme\n : resolvedInspector.colorScheme\n }\n anchor={\n resolvedInspector === true ? \"bottom right\" : resolvedInspector.anchor\n }\n advanced={\n resolvedInspector === true ? false : resolvedInspector.advanced\n }\n />\n );\n }\n\n noyaSingletonBindings = {\n sync: resolvedSync,\n inspector: resolvedInspector,\n theme: resolvedTheme,\n viewType: resolvedViewType,\n userId: appData.userId,\n isDemo: appData.isDemo,\n };\n}\n\nexport function getNoyaManagerSingleton(): NoyaManager<\n any,\n any,\n any,\n any,\n any\n> {\n if (!noyaManagerSingleton || !noyaSingletonBindings) {\n throw new Error(\n \"Noya has not been initialized. Call initializeNoya once before using Noya hooks.\"\n );\n }\n\n return noyaManagerSingleton;\n}\n\nexport function getNoyaSingletonBindings() {\n return noyaSingletonBindings;\n}\n\nexport function deleteNoyaSingleton() {\n noyaManagerSingleton = undefined;\n noyaSingletonBindings = undefined;\n}\n","\"use client\";\n\nimport { Observable } from \"@noya-app/observable\";\nimport { memoGeneric } from \"@noya-app/react-utils\";\nimport {\n MultiplayerUser,\n SharedConnectionDataManager,\n UserManager,\n} from \"@noya-app/state-manager\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { useObservable } from \"../useObservable\";\ntype Point = { x: number; y: number };\n\nexport type UserPointerData = { pointer?: Point };\n\nexport type RenderUserPointerProps = {\n userId: string;\n name?: string;\n visible: boolean;\n point: Point;\n};\n\nexport type RenderUserPointer = {\n renderUserPointer: (options: RenderUserPointerProps) => React.ReactNode;\n};\n\ntype InternalUserPointerProps<E extends UserPointerData> = {\n user: MultiplayerUser;\n sharedConnectionDataManager: SharedConnectionDataManager<E>;\n hideAfter?: number;\n} & RenderUserPointer;\n\nfunction shouldShow(hideAfter: number, updatedAt: number) {\n return !!updatedAt && Date.now() - updatedAt < hideAfter;\n}\n\nconst UserPointerInternal = memoGeneric(function UserPointerInternal<\n E extends UserPointerData,\n>({\n user,\n sharedConnectionDataManager,\n hideAfter = 5000,\n renderUserPointer,\n}: InternalUserPointerProps<E>) {\n const observable = useMemo(() => {\n const metadata$ = sharedConnectionDataManager.metadata$\n .observePath([user.connectionId] as const)\n .throttle(50);\n const data$ = sharedConnectionDataManager.data$\n .observePath([user.connectionId] as const)\n .throttle(50);\n\n return Observable.combine([metadata$, data$], ([metadata, data]) => {\n return { metadata, data };\n });\n }, [sharedConnectionDataManager, user.connectionId]);\n\n const { metadata, data } = useObservable(observable);\n\n const [, setForceUpdate] = useState(0);\n\n const updatedAt = metadata?.updatedAt ?? 0;\n const show = shouldShow(hideAfter, updatedAt);\n\n useEffect(() => {\n if (!show) return;\n\n const timeoutId = setTimeout(() => {\n setForceUpdate((prev) => prev + 1);\n }, hideAfter);\n\n return () => clearTimeout(timeoutId);\n }, [hideAfter, show, updatedAt]);\n\n if (!data?.pointer) return null;\n\n return renderUserPointer({\n userId: user.connectionId,\n name: user.name,\n point: data.pointer,\n visible: show,\n });\n});\n\nexport type UserPointersOverlayProps<E extends UserPointerData> = {\n userManager: UserManager;\n sharedConnectionDataManager: SharedConnectionDataManager<E>;\n} & RenderUserPointer;\n\nexport const UserPointersOverlay = memoGeneric(function UserPointers<\n E extends UserPointerData,\n>({\n userManager,\n sharedConnectionDataManager,\n renderUserPointer,\n}: UserPointersOverlayProps<E>) {\n const currentConnectionId = useObservable(\n sharedConnectionDataManager.currentConnectionId$\n );\n const connectedUsers = useObservable(userManager.connectedUsers$);\n\n return (\n <>\n {connectedUsers.map((user) => {\n if (user.connectionId === currentConnectionId) return null;\n\n return (\n <UserPointerInternal\n key={user.connectionId}\n user={user}\n sharedConnectionDataManager={\n sharedConnectionDataManager as unknown as SharedConnectionDataManager<UserPointerData>\n }\n renderUserPointer={renderUserPointer}\n />\n );\n })}\n </>\n );\n});\n","import {\n ClientToServerMessage,\n MultiplayerStateManagerError,\n ReconnectingWebSocket,\n ReconnectingWebSocketState,\n ServerToClientMessage,\n UserActivityDetector,\n} from \"@noya-app/state-manager\";\n\nexport type ConnectionEvent<State> =\n | {\n type: \"stateChange\";\n state: ReconnectingWebSocketState;\n }\n | {\n type: \"send\";\n message: ClientToServerMessage<State>;\n }\n | {\n type: \"receive\";\n message: ServerToClientMessage<State>;\n }\n | {\n type: \"error\";\n error: MultiplayerStateManagerError;\n };\n\nexport type ConnectionOptions<State> = {\n debug?: boolean;\n onConnectionEvent?: (event: ConnectionEvent<State>) => void;\n};\n\nexport class WebSocketConnection<State> {\n private ws: ReconnectingWebSocket;\n private closedForever = false;\n\n constructor(\n private url: URL,\n private options: ConnectionOptions<State> = {}\n ) {\n this.ws = new ReconnectingWebSocket({\n debug: options.debug,\n onopen: this.handleOpen,\n onmessage: this.handleMessage,\n onclose: this.handleClose,\n activityDetector: new UserActivityDetector(),\n });\n }\n\n async connect() {\n if (this.closedForever) return;\n\n this.ws.connect(this.url.toString());\n }\n\n private handleOpen = () => {\n if (this.closedForever) return;\n\n if (this.options.debug) {\n console.info(\"ws connected\");\n }\n\n this.options.onConnectionEvent?.({\n type: \"stateChange\",\n state: \"OPEN\",\n });\n };\n\n private handleMessage = (event: MessageEvent) => {\n if (this.closedForever) return;\n\n if (this.options.debug) {\n console.info(\"ws receiving message \", event.data);\n }\n\n const parsed = JSON.parse(event.data) as ServerToClientMessage<State>;\n\n this.options.onConnectionEvent?.({\n type: \"receive\",\n message: parsed,\n });\n };\n\n private handleClose = () => {\n if (this.closedForever) return;\n\n if (this.options.debug) {\n console.info(\"ws disconnected\");\n }\n\n this.options.onConnectionEvent?.({\n type: \"stateChange\",\n state: \"CLOSED\",\n });\n };\n\n send(message: ClientToServerMessage<State>) {\n if (this.closedForever) return;\n\n if (this.options.debug) {\n console.info(\"ws sending message\", message);\n }\n\n this.options.onConnectionEvent?.({\n type: \"send\",\n message,\n });\n\n this.ws.send(JSON.stringify(message));\n }\n\n close() {\n if (this.closedForever) return;\n\n this.closedForever = true;\n this.ws.shutdown();\n\n // remove all listeners\n this.ws.listeners.forEach((listener) => {\n this.ws.removeListener(listener);\n });\n }\n\n addListener(listener: (state: ReconnectingWebSocketState) => void) {\n return this.ws.addListener(listener);\n }\n\n removeListener(listener: (state: ReconnectingWebSocketState) => void) {\n return this.ws.removeListener(listener);\n }\n}\n"],"mappings":"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","names":["path","BoxDrawing","LinePrefix","node","indexPath","context","map","node","path","index","node","path","path","defineTree","exports","extname","require_entries","filepath","require_lib","exports","useEffect","value","Array","Function","IsArray","IsAsyncIterator","IsBigInt","IsBoolean","IsDate","IsFunction","IsIterator","IsNull","IsNumber","IsObject","IsRegExp","IsString","IsSymbol","IsUndefined","IsUint8Array","IsArray","IsBoolean","IsBigInt","IsAsyncIterator","IsDate","IsFunction","IsIterator","IsNull","IsNumber","IsObject","range","pattern","Boolean","BigInt","Number","String","Boolean","Number","BigInt","String","Visit","schema","IsNumber","IsBigInt","IsString","IsBoolean","FromUnion","IsNumber","FromUnion","IsArray","IsObject","Object","Promise","FromProperties","FromMappedResult","FromMappedResult","FromRest","FromProperties","IsFunction","Function","IsAsyncIterator","IsIterator","IsObject","Object","IsArray","Array","Promise","map","FromProperties","FromMappedResult","IsObject","RemoveOptionalFromType","RemoveOptionalFromRest","FromRest","FromIntersect","FromUnion","FromRest","FromIntersect","FromUnion","FromTuple","FromArray","FromProperties","IsArray","IsObject","Number","FromProperties","FromMappedResult","Object","Date","Symbol","Uint8Array","FromArray","FromProperties","Uint8Array","Date","Object","Function","Symbol","BigInt","FromRest","schema","FromProperties","FromIntersect","FromUnion","FromTuple","FromArray","FromPromise","IsFunction","IsArray","IsObject","IsAsyncIterator","IsIterator","IsAny","IsArray","IsAsyncIterator","IsBigInt","IsBoolean","IsConstructor","IsDate","IsFunction","IsInteger","IsIntersect","IsIterator","IsKind","IsKindOf","IsLiteral","IsMappedKey","IsMappedResult","IsNever","IsNot","IsNull","IsNumber","IsObject","IsOptional","IsPromise","IsReadonly","IsRecord","IsRef","IsRegExp","IsSchema","IsString","IsSymbol","IsTemplateLiteral","IsThis","IsTransform","IsTuple","IsUint8Array","IsUndefined","IsUnion","IsUnknown","IsUnsafe","IsVoid","IsSchema","IsReadonly","IsOptional","IsAny","IsKindOf","IsArray","IsAsyncIterator","IsBigInt","IsBoolean","IsConstructor","IsDate","IsFunction","IsInteger","IsIntersect","IsTransform","IsIterator","IsLiteral","IsMappedKey","IsMappedResult","IsNever","IsNot","IsNull","IsNumber","IsObject","IsPromise","IsRecord","IsRef","IsRegExp","IsString","IsSymbol","IsTemplateLiteral","IsThis","IsTuple","IsUndefined","IsUnion","IsUint8Array","IsUnknown","IsUnsafe","IsVoid","IsKind","ExtendsResult","FromArray","Visit","FromAsyncIterator","FromConstructor","FromFunction","FromIntersect","FromIterator","FromLiteral","Number","Function","FromObject","FromPromise","String","FromTemplateLiteral","FromTuple","FromUnion","FromProperties","FromMappedResult","FromMappedKey","FromProperties","FromMappedResult","FromProperties","FromMappedResult","FromTemplateLiteral","FromRest","FromProperties","FromMappedResult","FromIntersect","T","FromUnion","FromProperty","FromProperties","IsObject","Object","FromPropertyKey","FromPropertyKeys","FromMappedKey","FromRest","FromProperties","IsObject","Object","FromProperties","FromMappedResult","FromProperties","FromMappedResult","FromIntersect","T","FromUnion","FromProperties","IsObject","Object","FromPropertyKey","FromPropertyKeys","FromMappedKey","Object","IsNumber","IsRegExp","IsString","RegExp","Set","type_exports","Clear","Delete","Entries","Get","Has","Set","map","FromRest","FromProperties","IsObject","Object","FromProperties","FromMappedResult","decode","encode","type_exports","Array","BigInt","Boolean","Date","Function","Number","Object","Promise","RegExp","String","Symbol","Uint8Array","type_exports","Nullable","IsObject","IsArray","IsUndefined","IsNumber","TypeSystemPolicy","IsObject","IsArray","IsNumber","IsUndefined","TypeSystem","Type","type_exports","ByteMarker","ValueErrorType","Object","String","Delete","path","import_tree_visit","React","useCallback","useEffect","useMemo","useState","NoyaManager","stubSync","useEffect","useMemo","useState","NoyaManager","createElement","useCallback","useEffect","useMemo","useRef","useState","useSyncExternalStore","createRoot","ErrorOverlay","React","uuid","uuid","React","useEffect","ObjectInspector","listen","get","React","React","React","React","React","React","StateInspectorDisclosureRowInner","React","React","React","ObjectInspector","React","React","ObjectInspector","React","ObjectInspector","React","ObjectInspector","React","ObjectInspector","React","ObjectInspector","React","React","React","React","StateInspector","React","useEffect","ObjectInspector","path","React","root","useState","useCallback","useSyncExternalStore","useMemo","useRef","useEffect","NoyaManager","createRoot","createElement","window","stubSync","useState","useMemo","NoyaManager","useEffect","NoyaManager","React","NoyaManager","React","useMemo","useCallback","useEffect","useState","streamId","React","path","useEffect","Observable","memoGeneric","React","useEffect","useMemo","useState","memoGeneric","UserPointerInternal","useMemo","Observable","metadata","data","useState","useEffect","React"]}