{"version":3,"file":"index-C18wCgZY.cjs","sources":["../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/guard/value.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/clone/value.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/clone/type.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/value/guard/guard.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/system/policy.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/create/immutable.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/create/type.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/error/error.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/guard/kind.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/guard/type.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/patterns/patterns.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/registry/format.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/registry/type.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/sets/set.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/any/any.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/array/array.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/async-iterator/async-iterator.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/discard/discard.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/never/never.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/mapped/mapped-result.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/constructor/constructor.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/function/function.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/union/union-create.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/union/union-evaluated.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/union/union.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/template-literal/parse.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/template-literal/finite.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/template-literal/generate.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/literal/literal.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/boolean/boolean.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/bigint/bigint.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/number/number.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/string/string.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/template-literal/syntax.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/template-literal/pattern.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/template-literal/union.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/template-literal/template-literal.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-property-keys.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-result.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-key.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/iterator/iterator.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/object/object.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/promise/promise.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/readonly/readonly.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/readonly/readonly-from-mapped-result.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/tuple/tuple.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/mapped/mapped.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/optional/optional.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/optional/optional-from-mapped-result.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-create.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-evaluated.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/awaited/awaited.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-keys.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-from-mapped-result.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-entries.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/composite/composite.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/date/date.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/null/null.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/symbol/symbol.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/undefined/undefined.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/uint8array/uint8array.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/unknown/unknown.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/const/const.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/constructor-parameters/constructor-parameters.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/deref/deref.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/enum/enum.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/extends/extends-check.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-result.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/extends/extends.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-key.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/extends/extends-undefined.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-template-literal.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-mapped-result.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-template-literal.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/extract/extract.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-mapped-result.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/instance-type/instance-type.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/integer/integer.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic-from-mapped-key.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/intrinsic/capitalize.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/intrinsic/lowercase.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/intrinsic/uncapitalize.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/intrinsic/uppercase.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/not/not.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-result.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/omit/omit.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-key.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/parameters/parameters.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/partial/partial.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/partial/partial-from-mapped-result.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-result.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/pick/pick.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-key.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/readonly-optional/readonly-optional.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/record/record.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/recursive/recursive.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/ref/ref.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/regexp/regexp.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/required/required.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/required/required-from-mapped-result.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/rest/rest.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/return-type/return-type.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/strict/strict.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/transform/transform.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/unsafe/unsafe.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/void/void.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/type/type/index.mjs","../../mvf-core/dist/core/identifiers/identifiers.js","../../mvf-core/dist/utility-types/details/details.js","../../mvf-core/dist/utility-types/extra/extra.js","../../mvf-core/dist/utility-types/geometry-anchor/geometry-anchor.js","../../mvf-core/dist/core/geojson/geojson.js","../../mvf-core/dist/errors/integrity.js","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/system/system.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/errors/function.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/value/deref/deref.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/value/hash/hash.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/value/check/check.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/errors/errors.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/value/transform/decode.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/value/transform/encode.mjs","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/value/transform/has.mjs","../../mvf-core/dist/test/short-error.js","../../mvf-core/dist/errors/compress.js","../../mvf-core/dist/errors/decompress.js","../../mvf-core/dist/utils/ensure-unique-ids.js","../../mvf-core/dist/core/floors/floors.integrity.js","../../mvf-core/dist/core/floors/floors.js","../../mvf-core/dist/core/floors/floors.validation.js","../../mvf-core/dist/utility-types/partial-record.js","../../mvf-core/dist/core/geometry/geometry.integrity.js","../../mvf-core/dist/core/geometry/geometry.js","../../mvf-core/dist/core/geometry/geometry.validation.js","../../mvf-core/dist/core/manifest/manifest.js","../../mvf-core/dist/utility-types/geometry-id/geometry-id.js","../../mvf-core/dist/utility-types/safe-enum/safe-enum.js","../../mvf-annotations/dist/errors.js","../../mvf-annotations/dist/integrity.js","../../mvf-annotations/dist/index.js","../../typebox-fast-transform/dist/deref.js","../../typebox-fast-transform/dist/transform-cache.js","../../typebox-fast-transform/dist/fast-decode.js","../../typebox-fast-transform/dist/fast-encode.js","../../../node_modules/.pnpm/@sinclair+typebox@0.33.22/node_modules/@sinclair/typebox/build/esm/compiler/compiler.mjs","../../mvf-core/dist/formats/date.js","../../mvf-core/dist/formats/time.js","../../mvf-core/dist/formats/date-time.js","../../mvf-core/dist/formats/uri.js","../../mvf-core/dist/formats/register.js","../../../node_modules/.pnpm/@mappedin+safe-types@1.2.0/node_modules/@mappedin/safe-types/dist/result/as-error.js","../../../node_modules/.pnpm/@mappedin+safe-types@1.2.0/node_modules/@mappedin/safe-types/dist/result/safe-fn.js","../../mvf-core/dist/utils/bundling/compress.js","../../mvf-core/dist/utils/bundling/decompress.js","../../mvf-core/dist/utils/fix-duplicate-all-of.js","../../mvf-core/dist/utils/prefix-references.js","../../mvf-core/dist/parser.js","../../mvf-core/dist/parser.builder.js","../../mvf-core/dist/index.js","../../mvf-locations/dist/category.js","../../mvf-locations/dist/error.js","../../mvf-locations/dist/integrity.js","../../mvf-locations/dist/location.js","../../mvf-locations/dist/index.js","../../mvf-cms/dist/error.js","../../mvf-cms/dist/integrity.js","../../mvf-cms/dist/subSchemas/identifiers.js","../../mvf-cms/dist/subSchemas/enterpriseCategories.js","../../mvf-cms/dist/subSchemas/enterpriseFloorText.js","../../mvf-cms/dist/subSchemas/enterpriseLayers.js","../../mvf-cms/dist/subSchemas/utils.js","../../mvf-cms/dist/subSchemas/enterpriseLocations.js","../../mvf-cms/dist/subSchemas/enterpriseLocationInstance.js","../../mvf-cms/dist/subSchemas/enterpriseTextAreas.js","../../mvf-cms/dist/subSchemas/enterpriseTextures.js","../../mvf-cms/dist/subSchemas/enterpriseVenue.js","../../mvf-cms/dist/index.js","../../mvf-navigation-flags/dist/errors.js","../../mvf-navigation-flags/dist/integrity.js","../../mvf-navigation-flags/dist/validation.js","../../mvf-navigation-flags/dist/index.js","../../mvf-connections/dist/integrity.js","../../mvf-connections/dist/index.js","../../mvf-default-style/dist/integrity.js","../../mvf-default-style/dist/index.js","../../mvf-floor-stacks/dist/error.js","../../mvf-floor-stacks/dist/integrity.js","../../mvf-floor-stacks/dist/index.js","../../mvf-facade/dist/error.js","../../mvf-facade/dist/integrity.js","../../mvf-facade/dist/index.js","../../mvf-floor-images/dist/integrity.js","../../mvf-floor-images/dist/index.js","../../mvf-kinds/dist/integrity.js","../../mvf-kinds/dist/index.js","../../mvf-nodes/dist/errors.js","../../mvf-nodes/dist/integrity.js","../../mvf-nodes/dist/index.js","../../mvf-outdoors/dist/error.js","../../mvf-outdoors/dist/integrity.js","../../mvf-outdoors/dist/index.js","../../mvf-tileset/dist/errors.js","../../mvf-tileset/dist/integrity.js","../../mvf-tileset/dist/index.js","../../mvf-traversability/dist/index.js","../src/converter/index.ts"],"sourcesContent":["// --------------------------------------------------------------------------\n// PropertyKey\n// --------------------------------------------------------------------------\n/** Returns true if this value has this property key */\nexport function HasPropertyKey(value, key) {\n    return key in value;\n}\n// --------------------------------------------------------------------------\n// Object Instances\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 options === undefined ? Clone(schema) : Clone({ ...options, ...schema });\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// PropertyKey\n// --------------------------------------------------------------------------\n/** Returns true if this value has this property key */\nexport function HasPropertyKey(value, key) {\n    return key in value;\n}\n// --------------------------------------------------------------------------\n// Standard\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: Instancing\n    // ------------------------------------------------------------------\n    /**\n     * Configures the instantiation behavior of TypeBox types. The `default` option assigns raw JavaScript\n     * references for embedded types, which may cause side effects if type properties are explicitly updated\n     * outside the TypeBox type builder. The `clone` option creates copies of any shared types upon creation,\n     * preventing unintended side effects. The `freeze` option applies `Object.freeze()` to the type, making\n     * it fully readonly and immutable. Implementations should use `default` whenever possible, as it is the\n     * fastest way to instantiate types. The default setting is `default`.\n     */\n    TypeSystemPolicy.InstanceMode = 'default';\n    // ------------------------------------------------------------------\n    // TypeSystemPolicy: Checking\n    // ------------------------------------------------------------------\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    /** Checks 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    /** Checks 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    /** Checks 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    /** Checks 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    /** Checks 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 * as ValueGuard from '../guard/value.mjs';\nfunction ImmutableArray(value) {\n    return globalThis.Object.freeze(value).map((value) => Immutable(value));\n}\nfunction ImmutableDate(value) {\n    return value;\n}\nfunction ImmutableUint8Array(value) {\n    return value;\n}\nfunction ImmutableRegExp(value) {\n    return value;\n}\nfunction ImmutableObject(value) {\n    const result = {};\n    for (const key of Object.getOwnPropertyNames(value)) {\n        result[key] = Immutable(value[key]);\n    }\n    for (const key of Object.getOwnPropertySymbols(value)) {\n        result[key] = Immutable(value[key]);\n    }\n    return globalThis.Object.freeze(result);\n}\n/** Specialized deep immutable value. Applies freeze recursively to the given value */\n// prettier-ignore\nexport function Immutable(value) {\n    return (ValueGuard.IsArray(value) ? ImmutableArray(value) :\n        ValueGuard.IsDate(value) ? ImmutableDate(value) :\n            ValueGuard.IsUint8Array(value) ? ImmutableUint8Array(value) :\n                ValueGuard.IsRegExp(value) ? ImmutableRegExp(value) :\n                    ValueGuard.IsObject(value) ? ImmutableObject(value) :\n                        value);\n}\n","import { TypeSystemPolicy } from '../../system/policy.mjs';\nimport { Immutable } from './immutable.mjs';\nimport { Clone } from '../clone/value.mjs';\n/** Creates TypeBox schematics using the configured InstanceMode */\nexport function CreateType(schema, options) {\n    const result = options !== undefined ? { ...options, ...schema } : schema;\n    switch (TypeSystemPolicy.InstanceMode) {\n        case 'freeze':\n            return Immutable(result);\n        case 'clone':\n            return Clone(result);\n        default:\n            return result;\n    }\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","/** 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 * 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 * 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","export const PatternBoolean = '(true|false)';\nexport const PatternNumber = '(0|[1-9][0-9]*)';\nexport const PatternString = '(.*)';\nexport const PatternNever = '(?!.*)';\nexport const PatternBooleanExact = `^${PatternBoolean}$`;\nexport const PatternNumberExact = `^${PatternNumber}$`;\nexport const PatternStringExact = `^${PatternString}$`;\nexport const PatternNeverExact = `^${PatternNever}$`;\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","/** 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 { CreateType } from '../create/index.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Any type */\nexport function Any(options) {\n    return CreateType({ [Kind]: 'Any' }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Array type */\nexport function Array(items, options) {\n    return CreateType({ [Kind]: 'Array', type: 'array', items }, options);\n}\n","import { Kind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/type.mjs';\n/** `[JavaScript]` Creates a AsyncIterator type */\nexport function AsyncIterator(items, options) {\n    return CreateType({ [Kind]: 'AsyncIterator', type: 'AsyncIterator', items }, options);\n}\n","function DiscardKey(value, key) {\n    const { [key]: _, ...rest } = value;\n    return rest;\n}\n/** Discards property keys from the given value. This function returns a shallow Clone. */\nexport function Discard(value, keys) {\n    return keys.reduce((acc, key) => DiscardKey(acc, key), value);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Never type */\nexport function Never(options) {\n    return CreateType({ [Kind]: 'Never', not: {} }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// prettier-ignore\nexport function MappedResult(properties) {\n    return CreateType({\n        [Kind]: 'MappedResult',\n        properties\n    });\n}\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Constructor type */\nexport function Constructor(parameters, returns, options) {\n    return CreateType({ [Kind]: 'Constructor', type: 'Constructor', parameters, returns }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Function type */\nexport function Function(parameters, returns, options) {\n    return CreateType({ [Kind]: 'Function', type: 'Function', parameters, returns }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\nexport function UnionCreate(T, options) {\n    return CreateType({ [Kind]: 'Union', anyOf: T }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { OptionalKind } from '../symbols/index.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 ? CreateType(T[0], options) :\n            ResolveUnion(T, options));\n}\n","import { Never } from '../never/index.mjs';\nimport { CreateType } from '../create/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 ? CreateType(T[0], options) :\n            UnionCreate(T, options));\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 { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Literal type */\nexport function Literal(value, options) {\n    return CreateType({\n        [Kind]: 'Literal',\n        const: value,\n        type: typeof value,\n    }, options);\n}\n","import { Kind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/index.mjs';\n/** `[Json]` Creates a Boolean type */\nexport function Boolean(options) {\n    return CreateType({ [Kind]: 'Boolean', type: 'boolean' }, options);\n}\n","import { Kind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/index.mjs';\n/** `[JavaScript]` Creates a BigInt type */\nexport function BigInt(options) {\n    return CreateType({ [Kind]: 'BigInt', type: 'bigint' }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Number type */\nexport function Number(options) {\n    return CreateType({ [Kind]: 'Number', type: 'number' }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a String type */\nexport function String(options) {\n    return CreateType({ [Kind]: 'String', type: 'string' }, options);\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","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 { CreateType } from '../create/type.mjs';\nimport { 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 CreateType({ [Kind]: 'TemplateLiteral', type: 'string', pattern }, options);\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 { CreateType } from '../create/type.mjs';\nimport { Never } from '../never/index.mjs';\nimport { IntersectEvaluated } from '../intersect/index.mjs';\nimport { UnionEvaluated } from '../union/index.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    // mapped-types\n    if (IsMappedResult(K))\n        return IndexFromMappedResult(T, K, options);\n    if (IsMappedKey(K))\n        return IndexFromMappedKey(T, K, options);\n    // prettier-ignore\n    return CreateType(IsSchema(K)\n        ? FromSchema(T, IndexPropertyKeys(K))\n        : FromSchema(T, K), options);\n}\n","import { Index } from './indexed.mjs';\nimport { MappedResult } from '../mapped/index.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction MappedIndexPropertyKey(T, K, options) {\n    return { [K]: Index(T, [K], Clone(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 { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates an Iterator type */\nexport function Iterator(items, options) {\n    return CreateType({ [Kind]: 'Iterator', type: 'Iterator', items }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional } from '../guard/kind.mjs';\nfunction RequiredKeys(properties) {\n    const keys = [];\n    for (let key in properties) {\n        if (!IsOptional(properties[key]))\n            keys.push(key);\n    }\n    return keys;\n}\n/** `[Json]` Creates an Object type */\nfunction _Object(properties, options) {\n    const required = RequiredKeys(properties);\n    const schematic = required.length > 0 ? { [Kind]: 'Object', type: 'object', properties, required } : { [Kind]: 'Object', type: 'object', properties };\n    return CreateType(schematic, options);\n}\n/** `[Json]` Creates an Object type */\nexport var Object = _Object;\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Promise type */\nexport function Promise(item, options) {\n    return CreateType({ [Kind]: 'Promise', type: 'Promise', item }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { ReadonlyKind } from '../symbols/index.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 CreateType(Discard(schema, [ReadonlyKind]));\n}\nfunction AddReadonly(schema) {\n    return CreateType({ ...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 { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Tuple type */\nexport function Tuple(items, options) {\n    // prettier-ignore\n    return CreateType(items.length > 0 ?\n        { [Kind]: 'Tuple', type: 'array', items, additionalItems: false, minItems: items.length, maxItems: items.length } :\n        { [Kind]: 'Tuple', type: 'array', minItems: items.length, maxItems: items.length }, options);\n}\n","import { Kind, OptionalKind, ReadonlyKind } from '../symbols/index.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    // required to retain user defined options for mapped type\n    const options = { ...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), options) :\n                        IsFunction(T) ? FunctionType(FromRest(K, T.parameters), FromSchemaType(K, T.returns), options) :\n                            IsAsyncIterator(T) ? AsyncIterator(FromSchemaType(K, T.items), options) :\n                                IsIterator(T) ? Iterator(FromSchemaType(K, T.items), options) :\n                                    IsIntersect(T) ? Intersect(FromRest(K, T.allOf), options) :\n                                        IsUnion(T) ? Union(FromRest(K, T.anyOf), options) :\n                                            IsTuple(T) ? Tuple(FromRest(K, T.items ?? []), options) :\n                                                IsObject(T) ? Object(FromProperties(K, T.properties), options) :\n                                                    IsArray(T) ? Array(FromSchemaType(K, T.items), options) :\n                                                        IsPromise(T) ? Promise(FromSchemaType(K, T.item), options) :\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 Object(R, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { OptionalKind } from '../symbols/index.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 CreateType(Discard(schema, [OptionalKind]));\n}\nfunction AddOptional(schema) {\n    return CreateType({ ...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 { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.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: options.unevaluatedProperties }\n        : {};\n    return CreateType((options.unevaluatedProperties === false || IsSchema(options.unevaluatedProperties) || allObjects\n        ? { ...clonedUnevaluatedProperties, [Kind]: 'Intersect', type: 'object', allOf: T }\n        : { ...clonedUnevaluatedProperties, [Kind]: 'Intersect', allOf: T }), options);\n}\n","import { OptionalKind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/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 CreateType(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 { CreateType } from '../create/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 CreateType(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 { CreateType } from '../create/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 CreateType(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 { CreateType } from '../create/type.mjs';\nimport { 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 { 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 CreateType(U, options);\n    }\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { KeyOf } from './keyof.mjs';\nimport { Clone } from '../clone/value.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], Clone(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 { IndexFromPropertyKeys } from '../indexed/indexed.mjs';\nimport { KeyOfPropertyKeys } from './keyof-property-keys.mjs';\n/**\n * `[Utility]` Resolves an array of keys and schemas from the given schema. This method is faster\n * than obtaining the keys and resolving each individually via indexing. This method was written\n * accellerate Intersect and Union encoding.\n */\nexport function KeyOfPropertyEntries(schema) {\n    const keys = KeyOfPropertyKeys(schema);\n    const schemas = IndexFromPropertyKeys(schema, keys);\n    return keys.map((_, index) => [keys[index], schemas[index]]);\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';\nimport { CreateType } from '../create/type.mjs';\n/** `[JavaScript]` Creates a Date type */\nexport function Date(options) {\n    return CreateType({ [Kind]: 'Date', type: 'Date' }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Null type */\nexport function Null(options) {\n    return CreateType({ [Kind]: 'Null', type: 'null' }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Symbol type */\nexport function Symbol(options) {\n    return CreateType({ [Kind]: 'Symbol', type: 'symbol' }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Undefined type */\nexport function Undefined(options) {\n    return CreateType({ [Kind]: 'Undefined', type: 'undefined' }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Uint8Array type */\nexport function Uint8Array(options) {\n    return CreateType({ [Kind]: 'Uint8Array', type: 'Uint8Array' }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Unknown type */\nexport function Unknown(options) {\n    return CreateType({ [Kind]: 'Unknown' }, options);\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 { CreateType } from '../create/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 CreateType(FromValue(T, true), options);\n}\n","import { Tuple } from '../tuple/index.mjs';\n/** `[JavaScript]` Extracts the ConstructorParameters from the given Constructor type */\nexport function ConstructorParameters(schema, options) {\n    return Tuple(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 { 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';\nimport { Clone } from '../clone/value.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, Clone(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 { CreateType } from '../create/type.mjs';\nimport { Union } from '../union/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from './extends-check.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) ? CreateType(ExtendsFromMappedKey(L, R, T, F, options)) :\n            CreateType(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';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromPropertyKey(K, U, L, R, options) {\n    return {\n        [K]: Extends(Literal(K), U, L, R, Clone(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 { Kind } from '../symbols/index.mjs';\n/** Fast undefined check used for properties of type undefined */\nfunction Intersect(schema) {\n    return schema.allOf.every((schema) => ExtendsUndefinedCheck(schema));\n}\nfunction Union(schema) {\n    return schema.anyOf.some((schema) => ExtendsUndefinedCheck(schema));\n}\nfunction Not(schema) {\n    return !ExtendsUndefinedCheck(schema.not);\n}\n/** Fast undefined check used for properties of type undefined */\n// prettier-ignore\nexport function ExtendsUndefinedCheck(schema) {\n    return (schema[Kind] === 'Intersect' ? Intersect(schema) :\n        schema[Kind] === 'Union' ? Union(schema) :\n            schema[Kind] === 'Not' ? Not(schema) :\n                schema[Kind] === 'Undefined' ? true :\n                    false);\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 { CreateType } from '../create/type.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from '../extends/index.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 CreateType(ExcludeFromTemplateLiteral(L, R), options);\n    if (IsMappedResult(L))\n        return CreateType(ExcludeFromMappedResult(L, R), options);\n    // prettier-ignore\n    return CreateType(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 { CreateType } from '../create/type.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from '../extends/index.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 CreateType(ExtractFromTemplateLiteral(L, R), options);\n    if (IsMappedResult(L))\n        return CreateType(ExtractFromMappedResult(L, R), options);\n    // prettier-ignore\n    return CreateType(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 { CreateType } from '../create/type.mjs';\n/** `[JavaScript]` Extracts the InstanceType from the given Constructor type */\nexport function InstanceType(schema, options) {\n    return CreateType(schema.returns, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Integer type */\nexport function Integer(options) {\n    return CreateType({ [Kind]: 'Integer', type: 'integer' }, options);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Intrinsic } from './intrinsic.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction MappedIntrinsicPropertyKey(K, M, options) {\n    return {\n        [K]: Intrinsic(Literal(K), M, Clone(options))\n    };\n}\n// prettier-ignore\nfunction MappedIntrinsicPropertyKeys(K, M, options) {\n    const result = K.reduce((Acc, L) => {\n        return { ...Acc, ...MappedIntrinsicPropertyKey(L, M, options) };\n    }, {});\n    return result;\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 { CreateType } from '../create/type.mjs';\nimport { 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, options) :\n            IsUnion(schema) ? Union(FromRest(schema.anyOf, mode), options) :\n                IsLiteral(schema) ? Literal(FromLiteralValue(schema.const, mode), options) :\n                    // Default Type\n                    CreateType(schema, options));\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 { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Not type */\nexport function Not(not, options) {\n    return CreateType({ [Kind]: 'Not', not }, options);\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Omit } from './omit.mjs';\nimport { Clone } from '../clone/value.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, Clone(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 { CreateType } from '../create/type.mjs';\nimport { Discard } from '../discard/discard.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { OmitFromMappedKey } from './omit-from-mapped-key.mjs';\nimport { OmitFromMappedResult } from './omit-from-mapped-result.mjs';\nimport { TransformKind } from '../symbols/symbols.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// prettier-ignore\nfunction FromObject(T, K) {\n    const options = Discard(T, [TransformKind, '$id', 'required', 'properties']);\n    const properties = FromProperties(T['properties'], K);\n    return Object(properties, options);\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) ? FromObject(T, 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    // special: mapping types require overridable options\n    return CreateType({ ...OmitResolve(T, I), ...options });\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Omit } from './omit.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromPropertyKey(T, K, options) {\n    return {\n        [K]: Omit(T, [K], Clone(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';\n/** `[JavaScript]` Extracts the Parameters from the given Function type */\nexport function Parameters(schema, options) {\n    return Tuple(schema.parameters, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { 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 { 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// prettier-ignore\nfunction FromObject(T) {\n    const options = Discard(T, [TransformKind, '$id', 'required', 'properties']);\n    const properties = FromProperties(T['properties']);\n    return Object(properties, options);\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) ? FromObject(T) :\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    }\n    else {\n        // special: mapping types require overridable options\n        return CreateType({ ...PartialResolve(T), ...options });\n    }\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Partial } from './partial.mjs';\nimport { Clone } from '../clone/value.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], Clone(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';\nimport { Clone } from '../clone/value.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, Clone(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 { CreateType } from '../create/type.mjs';\nimport { Discard } from '../discard/discard.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Object } from '../object/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { PickFromMappedKey } from './pick-from-mapped-key.mjs';\nimport { PickFromMappedResult } from './pick-from-mapped-result.mjs';\nimport { TransformKind } from '../symbols/symbols.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// prettier-ignore\nfunction FromObject(T, K) {\n    const options = Discard(T, [TransformKind, '$id', 'required', 'properties']);\n    const properties = FromProperties(T['properties'], K);\n    return Object(properties, options);\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) ? FromObject(T, 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    // special: mapping types require overridable options\n    return CreateType({ ...PickResolve(T, I), ...options });\n}\n","import { MappedResult } from '../mapped/index.mjs';\nimport { Pick } from './pick.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromPropertyKey(T, K, options) {\n    return {\n        [K]: Pick(T, [K], Clone(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 { CreateType } from '../create/type.mjs';\nimport { 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, PatternNeverExact } from '../patterns/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/value.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsInteger, IsLiteral, IsAny, IsNever, IsNumber, IsString, IsRegExp, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// RecordCreateFromPattern\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordCreateFromPattern(pattern, T, options) {\n    return CreateType({\n        [Kind]: 'Record',\n        type: 'object',\n        patternProperties: { [pattern]: T }\n    }, options);\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] = 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 FromAnyKey(K, T, options) {\n    return RecordCreateFromPattern(PatternStringExact, T, options);\n}\n// prettier-ignore\nfunction FromNeverKey(K, T, options) {\n    return RecordCreateFromPattern(PatternNeverExact, 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                                IsAny(K) ? FromAnyKey(K, T, options) :\n                                    IsNever(K) ? FromNeverKey(K, T, options) :\n                                        Never(options));\n}\n","import { CloneType } from '../clone/type.mjs';\nimport { CreateType } from '../create/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 = CloneType(callback({ [Kind]: 'This', $ref: `${options.$id}` }));\n    thisType.$id = options.$id;\n    // prettier-ignore\n    return CreateType({ [Hint]: 'Recursive', ...thisType }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { 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 CreateType({ [Kind]: 'Ref', $ref: unresolved }, options);\n    if (IsUndefined(unresolved.$id))\n        throw new Error('Reference target type must specify an $id');\n    return CreateType({ [Kind]: 'Ref', $ref: unresolved.$id }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { 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 CreateType({ [Kind]: 'RegExp', type: 'RegExp', source: expr.source, flags: expr.flags }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { 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 { 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// prettier-ignore\nfunction FromObject(T) {\n    const options = Discard(T, [TransformKind, '$id', 'required', 'properties']);\n    const properties = FromProperties(T['properties']);\n    return Object(properties, options);\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) ? FromObject(T) :\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        // special: mapping types require overridable options\n        return CreateType({ ...RequiredResolve(T), ...options });\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","// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsTuple } from '../guard/kind.mjs';\n// prettier-ignore\nfunction RestResolve(T) {\n    return (IsIntersect(T) ? T.allOf :\n        IsUnion(T) ? T.anyOf :\n            IsTuple(T) ? T.items ?? [] :\n                []);\n}\n/** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */\nexport function Rest(T) {\n    return RestResolve(T);\n}\n","import { CreateType } from '../create/type.mjs';\n/** `[JavaScript]` Extracts the ReturnType from the given Function type */\nexport function ReturnType(schema, options) {\n    return CreateType(schema.returns, options);\n}\n","/**\n * @deprecated `[Json]` Omits compositing symbols from this schema. It is recommended\n * to use the JSON parse/stringify to remove compositing symbols if needed. This\n * is how Strict works internally.\n *\n * ```typescript\n * JSON.parse(JSON.stringify(Type.String()))\n * ```\n */\nexport function Strict(schema) {\n    return JSON.parse(JSON.stringify(schema));\n}\n","import { TransformKind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// TransformBuilders\n// ------------------------------------------------------------------\nexport class TransformDecodeBuilder {\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    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        return (IsTransform(this.schema) ? this.EncodeTransform(encode, this.schema) : this.EncodeSchema(encode, this.schema));\n    }\n}\n/** `[Json]` Creates a Transform type */\nexport function Transform(schema) {\n    return new TransformDecodeBuilder(schema);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { 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 CreateType({ [Kind]: options[Kind] ?? 'Unsafe' }, options);\n}\n","import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Void type */\nexport function Void(options) {\n    return CreateType({ [Kind]: 'Void', type: 'void' }, options);\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 { Type } from '@sinclair/typebox';\n/**\n * Utility method for creating identifiers with specific prefixes.\n *\n * This is strongly encouraged to be used as it produces compatible JSON schema\n * while presenting a nicer type signature in TypeScript.\n *\n * **Important**: While identifiers can now have suffixes of any length, it is strongly\n * recommended to use suffixes of at least 8 characters to ensure uniqueness and avoid\n * collisions. Short IDs significantly increase the risk of duplicate identifiers.\n *\n * @internal\n */\nexport const Ident = (prefix, id) => {\n    // Using a template literal type here directly does not work, since we also\n    // have a more specific pattern we want to apply. So, we use unsafe so the\n    // resolved type ends up looking nice, and because we can't cast directly\n    // to a template literal type. Leaving this as unsafe also prevents us from\n    // using these as record keys.\n    return Type.Unsafe(Type.String({\n        $id: id,\n        pattern: `^${prefix}_[A-Za-z0-9-]+$`,\n    }));\n};\n/**\n * A unique identifier for geometry.\n *\n * **Important**: While the suffix can be any length, it is strongly recommended to use\n * suffixes of at least 8 characters to ensure uniqueness and avoid collisions.\n *\n * @pattern ^g_[A-Za-z0-9-]+$\n */\nexport const GeometryId = Ident('g', 'GeometryId');\n/**\n * A unique identifier for a floor.\n *\n * **Important**: While the suffix can be any length, it is strongly recommended to use\n * suffixes of at least 8 characters to ensure uniqueness and avoid collisions.\n *\n * @pattern ^f_[A-Za-z0-9-]+$\n */\nexport const FloorId = Ident('f', 'FloorId');\nexport const Identifiers = [GeometryId, FloorId];\n//# sourceMappingURL=identifiers.js.map","import { Type } from '@sinclair/typebox';\n/**\n * Additional information about a given entity.\n */\nexport const BaseDetails = Type.Object({\n    /**\n     * An identifier that can be used to link this entity to data outside\n     * of the MVF.\n     */\n    externalId: Type.String({\n        description: 'An identifier that can be used to link this entity to data outside of the MVF.',\n    }),\n    /**\n     * The name of the entity.\n     */\n    name: Type.String({ description: 'The name of the entity.' }),\n    /**\n     * A short name for the entity. Usually a handful characters (eg; R303, F1, L, etc.)\n     * For display in places a full name would be too long or cumbersome.\n     */\n    shortName: Type.String({ description: 'A short name for the entity.' }),\n    /**\n     * A description of the entity.\n     */\n    description: Type.String({ description: 'A description of the entity.' }),\n    /**\n     * A URL to an icon for the entity.\n     */\n    icon: Type.String({ format: 'uri', description: 'A URL to an icon for the entity.' }),\n}, { $id: 'BaseDetails', description: 'Additional information about a given entity.' });\n/**\n * Additional information about a given entity.\n */\nexport const Details = Type.Partial(BaseDetails, {\n    $id: 'Details',\n    description: 'Additional information about a given entity.',\n});\n/**\n * Utility type for adding a {@link Details} object to a schema.\n *\n * Should be used with {@link Type.Intersect} or {@link Type.Composite} to\n * compose a new schema that includes a {@link Details}. Intersect is\n * preferred to preserve documentation.\n *\n * @example\n * ```ts\n * const schema = Type.Intersect([\n * \tType.Object({}), // your schema\n * \tWithDetails\n * ]);\n * ```\n */\nexport const WithDetails = Type.Object({\n    /**\n     * {@inheritDoc utility-types/details!Details}\n     * @see {@link Details}\n     */\n    details: Type.Optional(Type.Ref(Details)),\n}, { $id: 'WithDetails' });\n/**\n * Adds a {@link Details} object to a schema, in the standard `details` property, where certain\n * properties are marked as required.\n * @param requiredFields\n * @returns\n */\nexport const WithRequiredDetails = (requiredFields) => {\n    const ordered = [...requiredFields].sort();\n    const required = Type.Pick(BaseDetails, requiredFields);\n    const optional = Type.Omit(BaseDetails, requiredFields);\n    return Type.Object({\n        details: Type.Intersect([required, Type.Partial(optional)]),\n    }, { $id: `WithRequiredDetails_${ordered.join('_')}` });\n};\n/**\n * @hidden\n */\nexport const DetailsReferences = [BaseDetails, Details];\n//# sourceMappingURL=details.js.map","import { Type } from '@sinclair/typebox';\n/**\n * An arbitrary object for storing unstructured or unstable data. This should be\n * used sparingly, generally only when either working on an update or unstable\n * specification. You are encouraged to move data out of this property and into\n * well-typed structures as soon as is reasonable, as no guarantees can be made\n * about the contents.\n */\nexport const Extra = Type.Record(Type.String(), Type.Unknown(), {\n    $id: 'Extra',\n});\n/**\n * Utility type for adding an {@link Extra} object to a schema.\n *\n * Should be used with {@link Type.Intersect} or {@link Type.Composite} to\n * compose a new schema that includes an {@link Extra}. Intersect is\n * preferred to preserve documentation.\n *\n * @example\n * ```ts\n * const schema = Type.Intersect([\n * \tType.Object({}), // your schema\n * \tWithExtra\n * ]);\n * ```\n */\nexport const WithExtra = Type.Object({\n    /**\n     * {@inheritDoc utility-types/extra!Extra}\n     * @see {@link Extra}\n     */\n    extra: Type.Optional(Type.Ref(Extra)),\n});\n/**\n * @hidden\n */\nexport const ExtraReferences = [Extra];\n//# sourceMappingURL=extra.js.map","import { Type } from '@sinclair/typebox';\nimport { FloorId } from '../../core/identifiers/identifiers.js';\nimport { GeometryId } from '../../core/identifiers/identifiers.js';\n/**\n * @module\n *\n * The {@link GeometryAnchor} utility type is used when an extension need to reference a\n * specific piece of geometry inside of the Core MVF data. Useful in cases\n * where the the object being defined does not belong to an individual\n * floor, but needs to reference geometry. In general, this should be the\n * preferred way to reference geometry. The exception is if an object is\n * already known to be on a certain floor, in which case it is preferable to reference\n * geometry by ID ONLY if it is on the same floor.\n * @packageDocumentation\n */\n/**\n * An anchor for referencing a specific geometry on a floor.\n */\nexport const GeometryAnchor = Type.Object({\n    /**\n     * The ID of the geometry to reference.\n     * @see {@link GeometryId}\n     */\n    geometryId: Type.Ref(GeometryId),\n    /**\n     * The floor ID of the geometry to reference.\n     * @see {@link FloorId}\n     */\n    floorId: Type.Ref(FloorId),\n}, { $id: 'GeometryAnchor' });\n/**\n * Utility type for adding a {@link GeometryAnchor} to a schema.\n *\n * Should be used with {@link Type.Intersect} or {@link Type.Composite} to\n * compose a new schema that includes a {@link GeometryAnchor}. Intersect is\n * preferred to preserve documentation.\n *\n * @example\n * ```ts\n * const schema = Type.Intersect([\n * \tType.Object({}), // your schema\n * \tWithGeometryAnchor\n * ]);\n * ```\n */ export const WithGeometryAnchor = Type.Object({\n    /**\n     * {@inheritDoc utility-types/geometry-anchor!GeometryAnchor}\n     * @see {@link GeometryAnchor}\n     */\n    geometryAnchor: Type.Ref(GeometryAnchor),\n});\n/**\n * Utility type for adding an array of {@link GeometryAnchor} to a schema.\n *\n * Should be used with {@link Type.Intersect} or {@link Type.Composite} to\n * compose a new schema that includes a {@link GeometryAnchor}. Intersect is\n * preferred to preserve documentation.\n *\n * @example\n * ```ts\n * const schema = Type.Intersect([\n * \tType.Object({}), // your schema\n * \tWithGeometryAnchors()\n * ]);\n * ```\n * @hidden - Remove this when we document extension building\n */\nexport const WithGeometryAnchors = (arrayOptions, objectOptions) => Type.Object({\n    geometryAnchors: Type.Array(Type.Ref(GeometryAnchor), arrayOptions),\n}, objectOptions);\n/**\n * @hidden\n */\nexport const GeometryAnchorReferences = [GeometryAnchor];\n//# sourceMappingURL=geometry-anchor.js.map","/**\n * @see {@link GeoJSON}\n * @packageDocumentation\n * @module core/geojson\n */\nimport { Type } from '@sinclair/typebox';\n/**\n * A WGS 84-compatible longitude coordinate value.\n *\n * @minimum -180\n * @maximum 180\n */\nexport const Longitude = Type.Number({\n    $id: 'Longitude',\n    minimum: -180,\n    maximum: 180,\n    description: 'A WGS 84-compatible longitude coordinate value.',\n});\n/**\n * A WGS 84-compatible latitude coordinate value.\n *\n * @minimum -90\n * @maximum 90\n */\nexport const Latitude = Type.Number({\n    $id: 'Latitude',\n    minimum: -90,\n    maximum: 90,\n    description: 'A WGS 84-compatible latitude coordinate value.',\n});\n/**\n * A valid WGS 84 position consisting of a {@link Longitude} value, followed by\n * a {@link Latitude} value.\n *\n * @minItems 2\n * @maxItems 2\n */\nexport const Position = Type.Tuple([Type.Ref(Longitude), Type.Ref(Latitude)], {\n    $id: 'Position',\n    minItems: 2,\n    maxItems: 2,\n    description: 'A valid WGS 84 position consisting of a longitude value, followed by a latitude value.',\n});\n/**\n * An RFC-7946 compatible GeoJSON Point geometry.\n */\nexport const Point = Type.Object({\n    type: Type.Literal('Point'),\n    /**\n     * @see {@link Position}\n     */\n    coordinates: Type.Ref(Position),\n}, { $id: 'Point', description: 'An RFC-7946 compatible GeoJSON Point geometry.' });\n/**\n * An RFC-7946 compatible GeoJSON MultiPoint geometry.\n */\nexport const MultiPoint = Type.Object({\n    type: Type.Literal('MultiPoint'),\n    /**\n     * @see {@link Position}\n     */\n    coordinates: Type.Array(Type.Ref(Position)),\n}, { $id: 'MultiPoint', description: 'An RFC-7946 compatible GeoJSON MultiPoint geometry.' });\n/**\n * An RFC-7946 compatible GeoJSON LineString geometry.\n */\nexport const LineString = Type.Object({\n    type: Type.Literal('LineString'),\n    /**\n     * At least two {@link Position} values are required.\n     * @see {@link Position}\n     */\n    coordinates: Type.Array(Type.Ref(Position), { minItems: 2, description: 'At least two positions are required.' }),\n}, { $id: 'LineString', description: 'An RFC-7946 compatible GeoJSON LineString geometry.' });\n/**\n * An RFC-7946 compatible GeoJSON MultiLineString geometry.\n */\nexport const MultiLineString = Type.Object({\n    type: Type.Literal('MultiLineString'),\n    /**\n     * Each line string must contain at least two {@link Position} values.\n     * @see {@link Position}\n     */\n    coordinates: Type.Array(Type.Array(Type.Ref(Position), { minItems: 2 })),\n}, { $id: 'MultiLineString', description: 'An RFC-7946 compatible GeoJSON MultiLineString geometry.' });\n/**\n * A linear ring is a building block of a {@link Polygon}. It requires that at\n * least 4 coordinates are present, and that the first and last coordinates are\n * the same.\n */\nexport const LinearRing = Type.Array(Type.Ref(Position), {\n    $id: 'LinearRing',\n    minItems: 4,\n    description: 'A linear ring is a building block of a polygon or multi-polygon.',\n});\n/**\n * A collection of {@link LinearRing} values. At least one linear ring is\n * required. The first linear ring always corresponds to the exterior of the\n * polygon.\n * @see {@link LinearRing}\n */\nexport const LinearRings = Type.Array(Type.Ref(LinearRing), {\n    $id: 'LinearRings',\n    minItems: 1,\n    description: 'A collection of linear rings, at least one of which is the exterior ring of a polygon.',\n});\n/**\n * An RFC-7946 compatible GeoJSON Polygon geometry.\n */\nexport const Polygon = Type.Object({\n    type: Type.Literal('Polygon'),\n    /**\n     * {@inheritDoc core/geojson/geojson!LinearRings}\n     * @see {@link LinearRings}\n     */\n    coordinates: Type.Ref(LinearRings),\n}, { $id: 'Polygon', description: 'An RFC-7946 compatible GeoJSON Polygon geometry.' });\n/**\n * An RFC-7946 compatible GeoJSON MultiPolygon geometry.\n */\nexport const MultiPolygon = Type.Object({\n    type: Type.Literal('MultiPolygon'),\n    /**\n     * An array of {@link LinearRings} values, each representing a polygon.\n     * @see {@link LinearRings}\n     */\n    coordinates: Type.Array(Type.Ref(LinearRings)),\n}, { $id: 'MultiPolygon', description: 'An RFC-7946 compatible GeoJSON MultiPolygon geometry.' });\n/**\n * A utility type to create an RFC-7946 compatible GeoJSON Feature object.\n */\nexport const Feature = (geometry, properties, options) => {\n    return Type.Object({\n        type: Type.Literal('Feature'),\n        geometry,\n        properties,\n    }, options);\n};\n/**\n * A utility type to create an RFC-7946 compatible GeoJSON FeatureCollection object.\n */\nexport const FeatureCollection = (feature, options, arrayOptions) => {\n    return Type.Object({\n        type: Type.Literal('FeatureCollection'),\n        features: Type.Array(feature, arrayOptions),\n    }, options);\n};\nexport const GeoJSON = [\n    Longitude,\n    Latitude,\n    Position,\n    Point,\n    MultiPoint,\n    LineString,\n    MultiLineString,\n    LinearRing,\n    LinearRings,\n    Polygon,\n    MultiPolygon,\n];\n//# sourceMappingURL=geojson.js.map","export var IntegrityErrorKind;\n(function (IntegrityErrorKind) {\n    /**\n     * The geometry collection is missing.\n     */\n    IntegrityErrorKind[\"GeometryMissingError\"] = \"GeometryMissingError\";\n    /**\n     * The floor collection is missing.\n     */\n    IntegrityErrorKind[\"FloorMissingError\"] = \"FloorMissingError\";\n    /**\n     * A floor ID is used, but not present in the {@link FloorCollection}.\n     */\n    IntegrityErrorKind[\"UnknownFloorError\"] = \"UnknownFloorError\";\n    /**\n     * A geometry ID is used, but not present in the {@link GeometryCollection}\n     * for a floor.\n     * {@link GeometryAnchorUnknownGeometryError}.\n     */\n    IntegrityErrorKind[\"UnknownGeometryError\"] = \"UnknownGeometryError\";\n    /**\n     * An ID is used multiple times in the collection.\n     */\n    IntegrityErrorKind[\"DuplicateIdError\"] = \"DuplicateIdError\";\n})(IntegrityErrorKind || (IntegrityErrorKind = {}));\n//# sourceMappingURL=integrity.js.map","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 { Kind } from '../type/symbols/index.mjs';\nimport { ValueErrorType } from './errors.mjs';\n/** Creates an error message using en-US as the default locale */\nexport function DefaultErrorFunction(error) {\n    switch (error.errorType) {\n        case ValueErrorType.ArrayContains:\n            return 'Expected array to contain at least one matching value';\n        case ValueErrorType.ArrayMaxContains:\n            return `Expected array to contain no more than ${error.schema.maxContains} matching values`;\n        case ValueErrorType.ArrayMinContains:\n            return `Expected array to contain at least ${error.schema.minContains} matching values`;\n        case ValueErrorType.ArrayMaxItems:\n            return `Expected array length to be less or equal to ${error.schema.maxItems}`;\n        case ValueErrorType.ArrayMinItems:\n            return `Expected array length to be greater or equal to ${error.schema.minItems}`;\n        case ValueErrorType.ArrayUniqueItems:\n            return 'Expected array elements to be unique';\n        case ValueErrorType.Array:\n            return 'Expected array';\n        case ValueErrorType.AsyncIterator:\n            return 'Expected AsyncIterator';\n        case ValueErrorType.BigIntExclusiveMaximum:\n            return `Expected bigint to be less than ${error.schema.exclusiveMaximum}`;\n        case ValueErrorType.BigIntExclusiveMinimum:\n            return `Expected bigint to be greater than ${error.schema.exclusiveMinimum}`;\n        case ValueErrorType.BigIntMaximum:\n            return `Expected bigint to be less or equal to ${error.schema.maximum}`;\n        case ValueErrorType.BigIntMinimum:\n            return `Expected bigint to be greater or equal to ${error.schema.minimum}`;\n        case ValueErrorType.BigIntMultipleOf:\n            return `Expected bigint to be a multiple of ${error.schema.multipleOf}`;\n        case ValueErrorType.BigInt:\n            return 'Expected bigint';\n        case ValueErrorType.Boolean:\n            return 'Expected boolean';\n        case ValueErrorType.DateExclusiveMinimumTimestamp:\n            return `Expected Date timestamp to be greater than ${error.schema.exclusiveMinimumTimestamp}`;\n        case ValueErrorType.DateExclusiveMaximumTimestamp:\n            return `Expected Date timestamp to be less than ${error.schema.exclusiveMaximumTimestamp}`;\n        case ValueErrorType.DateMinimumTimestamp:\n            return `Expected Date timestamp to be greater or equal to ${error.schema.minimumTimestamp}`;\n        case ValueErrorType.DateMaximumTimestamp:\n            return `Expected Date timestamp to be less or equal to ${error.schema.maximumTimestamp}`;\n        case ValueErrorType.DateMultipleOfTimestamp:\n            return `Expected Date timestamp to be a multiple of ${error.schema.multipleOfTimestamp}`;\n        case ValueErrorType.Date:\n            return 'Expected Date';\n        case ValueErrorType.Function:\n            return 'Expected function';\n        case ValueErrorType.IntegerExclusiveMaximum:\n            return `Expected integer to be less than ${error.schema.exclusiveMaximum}`;\n        case ValueErrorType.IntegerExclusiveMinimum:\n            return `Expected integer to be greater than ${error.schema.exclusiveMinimum}`;\n        case ValueErrorType.IntegerMaximum:\n            return `Expected integer to be less or equal to ${error.schema.maximum}`;\n        case ValueErrorType.IntegerMinimum:\n            return `Expected integer to be greater or equal to ${error.schema.minimum}`;\n        case ValueErrorType.IntegerMultipleOf:\n            return `Expected integer to be a multiple of ${error.schema.multipleOf}`;\n        case ValueErrorType.Integer:\n            return 'Expected integer';\n        case ValueErrorType.IntersectUnevaluatedProperties:\n            return 'Unexpected property';\n        case ValueErrorType.Intersect:\n            return 'Expected all values to match';\n        case ValueErrorType.Iterator:\n            return 'Expected Iterator';\n        case ValueErrorType.Literal:\n            return `Expected ${typeof error.schema.const === 'string' ? `'${error.schema.const}'` : error.schema.const}`;\n        case ValueErrorType.Never:\n            return 'Never';\n        case ValueErrorType.Not:\n            return 'Value should not match';\n        case ValueErrorType.Null:\n            return 'Expected null';\n        case ValueErrorType.NumberExclusiveMaximum:\n            return `Expected number to be less than ${error.schema.exclusiveMaximum}`;\n        case ValueErrorType.NumberExclusiveMinimum:\n            return `Expected number to be greater than ${error.schema.exclusiveMinimum}`;\n        case ValueErrorType.NumberMaximum:\n            return `Expected number to be less or equal to ${error.schema.maximum}`;\n        case ValueErrorType.NumberMinimum:\n            return `Expected number to be greater or equal to ${error.schema.minimum}`;\n        case ValueErrorType.NumberMultipleOf:\n            return `Expected number to be a multiple of ${error.schema.multipleOf}`;\n        case ValueErrorType.Number:\n            return 'Expected number';\n        case ValueErrorType.Object:\n            return 'Expected object';\n        case ValueErrorType.ObjectAdditionalProperties:\n            return 'Unexpected property';\n        case ValueErrorType.ObjectMaxProperties:\n            return `Expected object to have no more than ${error.schema.maxProperties} properties`;\n        case ValueErrorType.ObjectMinProperties:\n            return `Expected object to have at least ${error.schema.minProperties} properties`;\n        case ValueErrorType.ObjectRequiredProperty:\n            return 'Expected required property';\n        case ValueErrorType.Promise:\n            return 'Expected Promise';\n        case ValueErrorType.RegExp:\n            return 'Expected string to match regular expression';\n        case ValueErrorType.StringFormatUnknown:\n            return `Unknown format '${error.schema.format}'`;\n        case ValueErrorType.StringFormat:\n            return `Expected string to match '${error.schema.format}' format`;\n        case ValueErrorType.StringMaxLength:\n            return `Expected string length less or equal to ${error.schema.maxLength}`;\n        case ValueErrorType.StringMinLength:\n            return `Expected string length greater or equal to ${error.schema.minLength}`;\n        case ValueErrorType.StringPattern:\n            return `Expected string to match '${error.schema.pattern}'`;\n        case ValueErrorType.String:\n            return 'Expected string';\n        case ValueErrorType.Symbol:\n            return 'Expected symbol';\n        case ValueErrorType.TupleLength:\n            return `Expected tuple to have ${error.schema.maxItems || 0} elements`;\n        case ValueErrorType.Tuple:\n            return 'Expected tuple';\n        case ValueErrorType.Uint8ArrayMaxByteLength:\n            return `Expected byte length less or equal to ${error.schema.maxByteLength}`;\n        case ValueErrorType.Uint8ArrayMinByteLength:\n            return `Expected byte length greater or equal to ${error.schema.minByteLength}`;\n        case ValueErrorType.Uint8Array:\n            return 'Expected Uint8Array';\n        case ValueErrorType.Undefined:\n            return 'Expected undefined';\n        case ValueErrorType.Union:\n            return 'Expected union value';\n        case ValueErrorType.Void:\n            return 'Expected void';\n        case ValueErrorType.Kind:\n            return `Expected kind '${error.schema[Kind]}'`;\n        default:\n            return 'Unknown error type';\n    }\n}\n/** Manages error message providers */\nlet errorFunction = DefaultErrorFunction;\n/** Sets the error function used to generate error messages. */\nexport function SetErrorFunction(callback) {\n    errorFunction = callback;\n}\n/** Gets the error function used to generate error messages */\nexport function GetErrorFunction() {\n    return errorFunction;\n}\n","import { TypeBoxError } from '../../type/error/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\nimport { IsString } from '../guard/guard.mjs';\nexport class TypeDereferenceError extends TypeBoxError {\n    constructor(schema) {\n        super(`Unable to dereference schema with $id '${schema.$ref}'`);\n        this.schema = schema;\n    }\n}\nfunction Resolve(schema, references) {\n    const target = references.find((target) => target.$id === schema.$ref);\n    if (target === undefined)\n        throw new TypeDereferenceError(schema);\n    return Deref(target, references);\n}\n/** `[Internal]` Pushes a schema onto references if the schema has an $id and does not exist on references */\nexport function Pushref(schema, references) {\n    if (!IsString(schema.$id) || references.some((target) => target.$id === schema.$id))\n        return references;\n    references.push(schema);\n    return references;\n}\n/** `[Internal]` Dereferences a schema from the references array or throws if not found */\nexport function Deref(schema, references) {\n    // prettier-ignore\n    return (schema[Kind] === 'This' || schema[Kind] === 'Ref')\n        ? Resolve(schema, references)\n        : schema;\n}\n","import { IsArray, IsBoolean, IsBigInt, IsDate, IsNull, IsNumber, IsObject, 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    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('18446744073709551616' /* 2 ^ 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 (IsObject(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 { Deref } from '../deref/index.mjs';\nimport { Hash } from '../hash/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\nimport { KeyOfPattern } from '../../type/keyof/index.mjs';\nimport { ExtendsUndefinedCheck } from '../../type/extends/index.mjs';\nimport { TypeRegistry, FormatRegistry } from '../../type/registry/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { Never } from '../../type/never/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsUint8Array, IsDate, IsPromise, IsFunction, IsAsyncIterator, IsIterator, IsBoolean, IsNumber, IsBigInt, IsString, IsSymbol, IsInteger, IsNull, IsUndefined } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsSchema } from '../../type/guard/type.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueCheckUnknownTypeError extends TypeBoxError {\n    constructor(schema) {\n        super(`Unknown type`);\n        this.schema = schema;\n    }\n}\n// ------------------------------------------------------------------\n// TypeGuards\n// ------------------------------------------------------------------\nfunction IsAnyOrUnknown(schema) {\n    return schema[Kind] === 'Any' || schema[Kind] === 'Unknown';\n}\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nfunction IsDefined(value) {\n    return value !== undefined;\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\nfunction FromAny(schema, references, value) {\n    return true;\n}\nfunction FromArray(schema, references, value) {\n    if (!IsArray(value))\n        return false;\n    if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) {\n        return false;\n    }\n    if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) {\n        return false;\n    }\n    if (!value.every((value) => Visit(schema.items, references, value))) {\n        return false;\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        return false;\n    }\n    // contains\n    if (!(IsDefined(schema.contains) || IsNumber(schema.minContains) || IsNumber(schema.maxContains))) {\n        return true; // exit\n    }\n    const containsSchema = IsDefined(schema.contains) ? schema.contains : Never();\n    const containsCount = value.reduce((acc, value) => (Visit(containsSchema, references, value) ? acc + 1 : acc), 0);\n    if (containsCount === 0) {\n        return false;\n    }\n    if (IsNumber(schema.minContains) && containsCount < schema.minContains) {\n        return false;\n    }\n    if (IsNumber(schema.maxContains) && containsCount > schema.maxContains) {\n        return false;\n    }\n    return true;\n}\nfunction FromAsyncIterator(schema, references, value) {\n    return IsAsyncIterator(value);\n}\nfunction FromBigInt(schema, references, value) {\n    if (!IsBigInt(value))\n        return false;\n    if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n        return false;\n    }\n    if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n        return false;\n    }\n    if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n        return false;\n    }\n    if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n        return false;\n    }\n    if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) {\n        return false;\n    }\n    return true;\n}\nfunction FromBoolean(schema, references, value) {\n    return IsBoolean(value);\n}\nfunction FromConstructor(schema, references, value) {\n    return Visit(schema.returns, references, value.prototype);\n}\nfunction FromDate(schema, references, value) {\n    if (!IsDate(value))\n        return false;\n    if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) {\n        return false;\n    }\n    if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) {\n        return false;\n    }\n    if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) {\n        return false;\n    }\n    if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) {\n        return false;\n    }\n    if (IsDefined(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) {\n        return false;\n    }\n    return true;\n}\nfunction FromFunction(schema, references, value) {\n    return IsFunction(value);\n}\nfunction FromInteger(schema, references, value) {\n    if (!IsInteger(value)) {\n        return false;\n    }\n    if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n        return false;\n    }\n    if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n        return false;\n    }\n    if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n        return false;\n    }\n    if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n        return false;\n    }\n    if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n        return false;\n    }\n    return true;\n}\nfunction FromIntersect(schema, references, value) {\n    const check1 = schema.allOf.every((schema) => Visit(schema, references, value));\n    if (schema.unevaluatedProperties === false) {\n        const keyPattern = new RegExp(KeyOfPattern(schema));\n        const check2 = Object.getOwnPropertyNames(value).every((key) => keyPattern.test(key));\n        return check1 && check2;\n    }\n    else if (IsSchema(schema.unevaluatedProperties)) {\n        const keyCheck = new RegExp(KeyOfPattern(schema));\n        const check2 = Object.getOwnPropertyNames(value).every((key) => keyCheck.test(key) || Visit(schema.unevaluatedProperties, references, value[key]));\n        return check1 && check2;\n    }\n    else {\n        return check1;\n    }\n}\nfunction FromIterator(schema, references, value) {\n    return IsIterator(value);\n}\nfunction FromLiteral(schema, references, value) {\n    return value === schema.const;\n}\nfunction FromNever(schema, references, value) {\n    return false;\n}\nfunction FromNot(schema, references, value) {\n    return !Visit(schema.not, references, value);\n}\nfunction FromNull(schema, references, value) {\n    return IsNull(value);\n}\nfunction FromNumber(schema, references, value) {\n    if (!TypeSystemPolicy.IsNumberLike(value))\n        return false;\n    if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n        return false;\n    }\n    if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n        return false;\n    }\n    if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n        return false;\n    }\n    if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n        return false;\n    }\n    if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n        return false;\n    }\n    return true;\n}\nfunction FromObject(schema, references, value) {\n    if (!TypeSystemPolicy.IsObjectLike(value))\n        return false;\n    if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n        return false;\n    }\n    if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n        return false;\n    }\n    const knownKeys = Object.getOwnPropertyNames(schema.properties);\n    for (const knownKey of knownKeys) {\n        const property = schema.properties[knownKey];\n        if (schema.required && schema.required.includes(knownKey)) {\n            if (!Visit(property, references, value[knownKey])) {\n                return false;\n            }\n            if ((ExtendsUndefinedCheck(property) || IsAnyOrUnknown(property)) && !(knownKey in value)) {\n                return false;\n            }\n        }\n        else {\n            if (TypeSystemPolicy.IsExactOptionalProperty(value, knownKey) && !Visit(property, references, value[knownKey])) {\n                return false;\n            }\n        }\n    }\n    if (schema.additionalProperties === false) {\n        const valueKeys = Object.getOwnPropertyNames(value);\n        // optimization: value is valid if schemaKey length matches the valueKey length\n        if (schema.required && schema.required.length === knownKeys.length && valueKeys.length === knownKeys.length) {\n            return true;\n        }\n        else {\n            return valueKeys.every((valueKey) => knownKeys.includes(valueKey));\n        }\n    }\n    else if (typeof schema.additionalProperties === 'object') {\n        const valueKeys = Object.getOwnPropertyNames(value);\n        return valueKeys.every((key) => knownKeys.includes(key) || Visit(schema.additionalProperties, references, value[key]));\n    }\n    else {\n        return true;\n    }\n}\nfunction FromPromise(schema, references, value) {\n    return IsPromise(value);\n}\nfunction FromRecord(schema, references, value) {\n    if (!TypeSystemPolicy.IsRecordLike(value)) {\n        return false;\n    }\n    if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n        return false;\n    }\n    if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n        return false;\n    }\n    const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];\n    const regex = new RegExp(patternKey);\n    // prettier-ignore\n    const check1 = Object.entries(value).every(([key, value]) => {\n        return (regex.test(key)) ? Visit(patternSchema, references, value) : true;\n    });\n    // prettier-ignore\n    const check2 = typeof schema.additionalProperties === 'object' ? Object.entries(value).every(([key, value]) => {\n        return (!regex.test(key)) ? Visit(schema.additionalProperties, references, value) : true;\n    }) : true;\n    const check3 = schema.additionalProperties === false\n        ? Object.getOwnPropertyNames(value).every((key) => {\n            return regex.test(key);\n        })\n        : true;\n    return check1 && check2 && check3;\n}\nfunction FromRef(schema, references, value) {\n    return Visit(Deref(schema, references), references, value);\n}\nfunction FromRegExp(schema, references, value) {\n    const regex = new RegExp(schema.source, schema.flags);\n    if (IsDefined(schema.minLength)) {\n        if (!(value.length >= schema.minLength))\n            return false;\n    }\n    if (IsDefined(schema.maxLength)) {\n        if (!(value.length <= schema.maxLength))\n            return false;\n    }\n    return regex.test(value);\n}\nfunction FromString(schema, references, value) {\n    if (!IsString(value)) {\n        return false;\n    }\n    if (IsDefined(schema.minLength)) {\n        if (!(value.length >= schema.minLength))\n            return false;\n    }\n    if (IsDefined(schema.maxLength)) {\n        if (!(value.length <= schema.maxLength))\n            return false;\n    }\n    if (IsDefined(schema.pattern)) {\n        const regex = new RegExp(schema.pattern);\n        if (!regex.test(value))\n            return false;\n    }\n    if (IsDefined(schema.format)) {\n        if (!FormatRegistry.Has(schema.format))\n            return false;\n        const func = FormatRegistry.Get(schema.format);\n        return func(value);\n    }\n    return true;\n}\nfunction FromSymbol(schema, references, value) {\n    return IsSymbol(value);\n}\nfunction FromTemplateLiteral(schema, references, value) {\n    return IsString(value) && new RegExp(schema.pattern).test(value);\n}\nfunction FromThis(schema, references, value) {\n    return Visit(Deref(schema, references), references, value);\n}\nfunction FromTuple(schema, references, value) {\n    if (!IsArray(value)) {\n        return false;\n    }\n    if (schema.items === undefined && !(value.length === 0)) {\n        return false;\n    }\n    if (!(value.length === schema.maxItems)) {\n        return false;\n    }\n    if (!schema.items) {\n        return true;\n    }\n    for (let i = 0; i < schema.items.length; i++) {\n        if (!Visit(schema.items[i], references, value[i]))\n            return false;\n    }\n    return true;\n}\nfunction FromUndefined(schema, references, value) {\n    return IsUndefined(value);\n}\nfunction FromUnion(schema, references, value) {\n    return schema.anyOf.some((inner) => Visit(inner, references, value));\n}\nfunction FromUint8Array(schema, references, value) {\n    if (!IsUint8Array(value)) {\n        return false;\n    }\n    if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) {\n        return false;\n    }\n    if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) {\n        return false;\n    }\n    return true;\n}\nfunction FromUnknown(schema, references, value) {\n    return true;\n}\nfunction FromVoid(schema, references, value) {\n    return TypeSystemPolicy.IsVoidLike(value);\n}\nfunction FromKind(schema, references, value) {\n    if (!TypeRegistry.Has(schema[Kind]))\n        return false;\n    const func = TypeRegistry.Get(schema[Kind]);\n    return func(schema, value);\n}\nfunction Visit(schema, references, value) {\n    const references_ = IsDefined(schema.$id) ? [...references, schema] : references;\n    const schema_ = schema;\n    switch (schema_[Kind]) {\n        case 'Any':\n            return FromAny(schema_, references_, value);\n        case 'Array':\n            return FromArray(schema_, references_, value);\n        case 'AsyncIterator':\n            return FromAsyncIterator(schema_, references_, value);\n        case 'BigInt':\n            return FromBigInt(schema_, references_, value);\n        case 'Boolean':\n            return FromBoolean(schema_, references_, value);\n        case 'Constructor':\n            return FromConstructor(schema_, references_, value);\n        case 'Date':\n            return FromDate(schema_, references_, value);\n        case 'Function':\n            return FromFunction(schema_, references_, value);\n        case 'Integer':\n            return FromInteger(schema_, references_, value);\n        case 'Intersect':\n            return FromIntersect(schema_, references_, value);\n        case 'Iterator':\n            return FromIterator(schema_, references_, value);\n        case 'Literal':\n            return FromLiteral(schema_, references_, value);\n        case 'Never':\n            return FromNever(schema_, references_, value);\n        case 'Not':\n            return FromNot(schema_, references_, value);\n        case 'Null':\n            return FromNull(schema_, references_, value);\n        case 'Number':\n            return FromNumber(schema_, references_, value);\n        case 'Object':\n            return FromObject(schema_, references_, value);\n        case 'Promise':\n            return FromPromise(schema_, references_, value);\n        case 'Record':\n            return FromRecord(schema_, references_, value);\n        case 'Ref':\n            return FromRef(schema_, references_, value);\n        case 'RegExp':\n            return FromRegExp(schema_, references_, value);\n        case 'String':\n            return FromString(schema_, references_, value);\n        case 'Symbol':\n            return FromSymbol(schema_, references_, value);\n        case 'TemplateLiteral':\n            return FromTemplateLiteral(schema_, references_, value);\n        case 'This':\n            return FromThis(schema_, references_, value);\n        case 'Tuple':\n            return FromTuple(schema_, references_, value);\n        case 'Undefined':\n            return FromUndefined(schema_, references_, value);\n        case 'Union':\n            return FromUnion(schema_, references_, value);\n        case 'Uint8Array':\n            return FromUint8Array(schema_, references_, value);\n        case 'Unknown':\n            return FromUnknown(schema_, references_, value);\n        case 'Void':\n            return FromVoid(schema_, references_, value);\n        default:\n            if (!TypeRegistry.Has(schema_[Kind]))\n                throw new ValueCheckUnknownTypeError(schema_);\n            return FromKind(schema_, references_, value);\n    }\n}\n/** Returns true if the value matches the given type. */\nexport function Check(...args) {\n    return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\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 { Check } from '../value/check/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    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    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, errors = []) {\n    return {\n        type: errorType,\n        schema,\n        path,\n        value,\n        message: GetErrorFunction()({ errorType, path, schema, value, errors }),\n        errors,\n    };\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    let hasError = false;\n    for (const inner of schema.allOf) {\n        for (const error of Visit(inner, references, path, value)) {\n            hasError = true;\n            yield error;\n        }\n    }\n    if (hasError) {\n        return yield Create(ValueErrorType.Intersect, schema, path, value);\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    if (Check(schema, references, value))\n        return;\n    const errors = schema.anyOf.map((variant) => new ValueErrorIterator(Visit(variant, references, path, value)));\n    yield Create(ValueErrorType.Union, schema, path, value, errors);\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 { TypeSystemPolicy } from '../../system/policy.mjs';\nimport { Kind, TransformKind } from '../../type/symbols/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { KeyOfPropertyKeys, KeyOfPropertyEntries } from '../../type/keyof/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Check } from '../check/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { HasPropertyKey, IsObject, IsArray, IsValueType, IsUndefined as IsUndefinedValue } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform, IsSchema, IsUndefined } from '../../type/guard/type.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\n// thrown externally\n// prettier-ignore\nexport class TransformDecodeCheckError extends TypeBoxError {\n    constructor(schema, value, error) {\n        super(`Unable to decode value as it does not match the expected schema`);\n        this.schema = schema;\n        this.value = value;\n        this.error = error;\n    }\n}\n// prettier-ignore\nexport class TransformDecodeError extends TypeBoxError {\n    constructor(schema, path, value, error) {\n        super(error instanceof Error ? error.message : 'Unknown error');\n        this.schema = schema;\n        this.path = path;\n        this.value = value;\n        this.error = error;\n    }\n}\n// ------------------------------------------------------------------\n// Decode\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Default(schema, path, value) {\n    try {\n        return IsTransform(schema) ? schema[TransformKind].Decode(value) : value;\n    }\n    catch (error) {\n        throw new TransformDecodeError(schema, path, value, error);\n    }\n}\n// prettier-ignore\nfunction FromArray(schema, references, path, value) {\n    return (IsArray(value))\n        ? Default(schema, path, value.map((value, index) => Visit(schema.items, references, `${path}/${index}`, value)))\n        : Default(schema, path, value);\n}\n// prettier-ignore\nfunction FromIntersect(schema, references, path, value) {\n    if (!IsObject(value) || IsValueType(value))\n        return Default(schema, path, value);\n    const knownEntries = KeyOfPropertyEntries(schema);\n    const knownKeys = knownEntries.map(entry => entry[0]);\n    const knownProperties = { ...value };\n    for (const [knownKey, knownSchema] of knownEntries)\n        if (knownKey in knownProperties) {\n            knownProperties[knownKey] = Visit(knownSchema, references, `${path}/${knownKey}`, knownProperties[knownKey]);\n        }\n    if (!IsTransform(schema.unevaluatedProperties)) {\n        return Default(schema, path, knownProperties);\n    }\n    const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n    const unevaluatedProperties = schema.unevaluatedProperties;\n    const unknownProperties = { ...knownProperties };\n    for (const key of unknownKeys)\n        if (!knownKeys.includes(key)) {\n            unknownProperties[key] = Default(unevaluatedProperties, `${path}/${key}`, unknownProperties[key]);\n        }\n    return Default(schema, path, unknownProperties);\n}\nfunction FromNot(schema, references, path, value) {\n    return Default(schema, path, Visit(schema.not, references, path, value));\n}\n// prettier-ignore\nfunction FromObject(schema, references, path, value) {\n    if (!IsObject(value))\n        return Default(schema, path, value);\n    const knownKeys = KeyOfPropertyKeys(schema);\n    const knownProperties = { ...value };\n    for (const key of knownKeys) {\n        if (!HasPropertyKey(knownProperties, key))\n            continue;\n        // if the property value is undefined, but the target is not, nor does it satisfy exact optional \n        // property policy, then we need to continue. This is a special case for optional property handling \n        // where a transforms wrapped in a optional modifiers should not run.\n        if (IsUndefinedValue(knownProperties[key]) && (!IsUndefined(schema.properties[key]) ||\n            TypeSystemPolicy.IsExactOptionalProperty(knownProperties, key)))\n            continue;\n        // decode property\n        knownProperties[key] = Visit(schema.properties[key], references, `${path}/${key}`, knownProperties[key]);\n    }\n    if (!IsSchema(schema.additionalProperties)) {\n        return Default(schema, path, knownProperties);\n    }\n    const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n    const additionalProperties = schema.additionalProperties;\n    const unknownProperties = { ...knownProperties };\n    for (const key of unknownKeys)\n        if (!knownKeys.includes(key)) {\n            unknownProperties[key] = Default(additionalProperties, `${path}/${key}`, unknownProperties[key]);\n        }\n    return Default(schema, path, unknownProperties);\n}\n// prettier-ignore\nfunction FromRecord(schema, references, path, value) {\n    if (!IsObject(value))\n        return Default(schema, path, value);\n    const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n    const knownKeys = new RegExp(pattern);\n    const knownProperties = { ...value };\n    for (const key of Object.getOwnPropertyNames(value))\n        if (knownKeys.test(key)) {\n            knownProperties[key] = Visit(schema.patternProperties[pattern], references, `${path}/${key}`, knownProperties[key]);\n        }\n    if (!IsSchema(schema.additionalProperties)) {\n        return Default(schema, path, knownProperties);\n    }\n    const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n    const additionalProperties = schema.additionalProperties;\n    const unknownProperties = { ...knownProperties };\n    for (const key of unknownKeys)\n        if (!knownKeys.test(key)) {\n            unknownProperties[key] = Default(additionalProperties, `${path}/${key}`, unknownProperties[key]);\n        }\n    return Default(schema, path, unknownProperties);\n}\n// prettier-ignore\nfunction FromRef(schema, references, path, value) {\n    const target = Deref(schema, references);\n    return Default(schema, path, Visit(target, references, path, value));\n}\n// prettier-ignore\nfunction FromThis(schema, references, path, value) {\n    const target = Deref(schema, references);\n    return Default(schema, path, Visit(target, references, path, value));\n}\n// prettier-ignore\nfunction FromTuple(schema, references, path, value) {\n    return (IsArray(value) && IsArray(schema.items))\n        ? Default(schema, path, schema.items.map((schema, index) => Visit(schema, references, `${path}/${index}`, value[index])))\n        : Default(schema, path, value);\n}\n// prettier-ignore\nfunction FromUnion(schema, references, path, value) {\n    for (const subschema of schema.anyOf) {\n        if (!Check(subschema, references, value))\n            continue;\n        // note: ensure interior is decoded first\n        const decoded = Visit(subschema, references, path, value);\n        return Default(schema, path, decoded);\n    }\n    return Default(schema, path, value);\n}\n// prettier-ignore\nfunction Visit(schema, references, path, value) {\n    const references_ = Pushref(schema, references);\n    const schema_ = schema;\n    switch (schema[Kind]) {\n        case 'Array':\n            return FromArray(schema_, references_, path, value);\n        case 'Intersect':\n            return FromIntersect(schema_, references_, path, value);\n        case 'Not':\n            return FromNot(schema_, references_, path, value);\n        case 'Object':\n            return FromObject(schema_, references_, path, value);\n        case 'Record':\n            return FromRecord(schema_, references_, path, value);\n        case 'Ref':\n            return FromRef(schema_, references_, path, value);\n        case 'Symbol':\n            return Default(schema_, path, value);\n        case 'This':\n            return FromThis(schema_, references_, path, value);\n        case 'Tuple':\n            return FromTuple(schema_, references_, path, value);\n        case 'Union':\n            return FromUnion(schema_, references_, path, value);\n        default:\n            return Default(schema_, path, value);\n    }\n}\n/**\n * `[Internal]` Decodes the value and returns the result. This function requires that\n * the caller `Check` the value before use. Passing unchecked values may result in\n * undefined behavior. Refer to the `Value.Decode()` for implementation details.\n */\nexport function TransformDecode(schema, references, value) {\n    return Visit(schema, references, '', value);\n}\n","import { TypeSystemPolicy } from '../../system/policy.mjs';\nimport { Kind, TransformKind } from '../../type/symbols/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { KeyOfPropertyKeys, KeyOfPropertyEntries } from '../../type/keyof/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Check } from '../check/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { HasPropertyKey, IsObject, IsArray, IsValueType, IsUndefined as IsUndefinedValue } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform, IsSchema, IsUndefined } from '../../type/guard/type.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\n// prettier-ignore\nexport class TransformEncodeCheckError extends TypeBoxError {\n    constructor(schema, value, error) {\n        super(`The encoded value does not match the expected schema`);\n        this.schema = schema;\n        this.value = value;\n        this.error = error;\n    }\n}\n// prettier-ignore\nexport class TransformEncodeError extends TypeBoxError {\n    constructor(schema, path, value, error) {\n        super(`${error instanceof Error ? error.message : 'Unknown error'}`);\n        this.schema = schema;\n        this.path = path;\n        this.value = value;\n        this.error = error;\n    }\n}\n// ------------------------------------------------------------------\n// Encode\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Default(schema, path, value) {\n    try {\n        return IsTransform(schema) ? schema[TransformKind].Encode(value) : value;\n    }\n    catch (error) {\n        throw new TransformEncodeError(schema, path, value, error);\n    }\n}\n// prettier-ignore\nfunction FromArray(schema, references, path, value) {\n    const defaulted = Default(schema, path, value);\n    return IsArray(defaulted)\n        ? defaulted.map((value, index) => Visit(schema.items, references, `${path}/${index}`, value))\n        : defaulted;\n}\n// prettier-ignore\nfunction FromIntersect(schema, references, path, value) {\n    const defaulted = Default(schema, path, value);\n    if (!IsObject(value) || IsValueType(value))\n        return defaulted;\n    const knownEntries = KeyOfPropertyEntries(schema);\n    const knownKeys = knownEntries.map(entry => entry[0]);\n    const knownProperties = { ...defaulted };\n    for (const [knownKey, knownSchema] of knownEntries)\n        if (knownKey in knownProperties) {\n            knownProperties[knownKey] = Visit(knownSchema, references, `${path}/${knownKey}`, knownProperties[knownKey]);\n        }\n    if (!IsTransform(schema.unevaluatedProperties)) {\n        return knownProperties;\n    }\n    const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n    const unevaluatedProperties = schema.unevaluatedProperties;\n    const properties = { ...knownProperties };\n    for (const key of unknownKeys)\n        if (!knownKeys.includes(key)) {\n            properties[key] = Default(unevaluatedProperties, `${path}/${key}`, properties[key]);\n        }\n    return properties;\n}\n// prettier-ignore\nfunction FromNot(schema, references, path, value) {\n    return Default(schema.not, path, Default(schema, path, value));\n}\n// prettier-ignore\nfunction FromObject(schema, references, path, value) {\n    const defaulted = Default(schema, path, value);\n    if (!IsObject(defaulted))\n        return defaulted;\n    const knownKeys = KeyOfPropertyKeys(schema);\n    const knownProperties = { ...defaulted };\n    for (const key of knownKeys) {\n        if (!HasPropertyKey(knownProperties, key))\n            continue;\n        // if the property value is undefined, but the target is not, nor does it satisfy exact optional \n        // property policy, then we need to continue. This is a special case for optional property handling \n        // where a transforms wrapped in a optional modifiers should not run.\n        if (IsUndefinedValue(knownProperties[key]) && (!IsUndefined(schema.properties[key]) ||\n            TypeSystemPolicy.IsExactOptionalProperty(knownProperties, key)))\n            continue;\n        // encode property\n        knownProperties[key] = Visit(schema.properties[key], references, `${path}/${key}`, knownProperties[key]);\n    }\n    if (!IsSchema(schema.additionalProperties)) {\n        return knownProperties;\n    }\n    const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n    const additionalProperties = schema.additionalProperties;\n    const properties = { ...knownProperties };\n    for (const key of unknownKeys)\n        if (!knownKeys.includes(key)) {\n            properties[key] = Default(additionalProperties, `${path}/${key}`, properties[key]);\n        }\n    return properties;\n}\n// prettier-ignore\nfunction FromRecord(schema, references, path, value) {\n    const defaulted = Default(schema, path, value);\n    if (!IsObject(value))\n        return defaulted;\n    const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n    const knownKeys = new RegExp(pattern);\n    const knownProperties = { ...defaulted };\n    for (const key of Object.getOwnPropertyNames(value))\n        if (knownKeys.test(key)) {\n            knownProperties[key] = Visit(schema.patternProperties[pattern], references, `${path}/${key}`, knownProperties[key]);\n        }\n    if (!IsSchema(schema.additionalProperties)) {\n        return knownProperties;\n    }\n    const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n    const additionalProperties = schema.additionalProperties;\n    const properties = { ...knownProperties };\n    for (const key of unknownKeys)\n        if (!knownKeys.test(key)) {\n            properties[key] = Default(additionalProperties, `${path}/${key}`, properties[key]);\n        }\n    return properties;\n}\n// prettier-ignore\nfunction FromRef(schema, references, path, value) {\n    const target = Deref(schema, references);\n    const resolved = Visit(target, references, path, value);\n    return Default(schema, path, resolved);\n}\n// prettier-ignore\nfunction FromThis(schema, references, path, value) {\n    const target = Deref(schema, references);\n    const resolved = Visit(target, references, path, value);\n    return Default(schema, path, resolved);\n}\n// prettier-ignore\nfunction FromTuple(schema, references, path, value) {\n    const value1 = Default(schema, path, value);\n    return IsArray(schema.items) ? schema.items.map((schema, index) => Visit(schema, references, `${path}/${index}`, value1[index])) : [];\n}\n// prettier-ignore\nfunction FromUnion(schema, references, path, value) {\n    // test value against union variants\n    for (const subschema of schema.anyOf) {\n        if (!Check(subschema, references, value))\n            continue;\n        const value1 = Visit(subschema, references, path, value);\n        return Default(schema, path, value1);\n    }\n    // test transformed value against union variants\n    for (const subschema of schema.anyOf) {\n        const value1 = Visit(subschema, references, path, value);\n        if (!Check(schema, references, value1))\n            continue;\n        return Default(schema, path, value1);\n    }\n    return Default(schema, path, value);\n}\n// prettier-ignore\nfunction Visit(schema, references, path, value) {\n    const references_ = Pushref(schema, references);\n    const schema_ = schema;\n    switch (schema[Kind]) {\n        case 'Array':\n            return FromArray(schema_, references_, path, value);\n        case 'Intersect':\n            return FromIntersect(schema_, references_, path, value);\n        case 'Not':\n            return FromNot(schema_, references_, path, value);\n        case 'Object':\n            return FromObject(schema_, references_, path, value);\n        case 'Record':\n            return FromRecord(schema_, references_, path, value);\n        case 'Ref':\n            return FromRef(schema_, references_, path, value);\n        case 'This':\n            return FromThis(schema_, references_, path, value);\n        case 'Tuple':\n            return FromTuple(schema_, references_, path, value);\n        case 'Union':\n            return FromUnion(schema_, references_, path, value);\n        default:\n            return Default(schema_, path, value);\n    }\n}\n/**\n * `[Internal]` Encodes the value and returns the result. This function expects the\n * caller to pass a statically checked value. This function does not check the encoded\n * result, meaning the result should be passed to `Check` before use. Refer to the\n * `Value.Encode()` function for implementation details.\n */\nexport function TransformEncode(schema, references, value) {\n    return Visit(schema, references, '', value);\n}\n","import { Deref, Pushref } from '../deref/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform, IsSchema } from '../../type/guard/type.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/index.mjs';\n// prettier-ignore\nfunction FromArray(schema, references) {\n    return IsTransform(schema) || Visit(schema.items, references);\n}\n// prettier-ignore\nfunction FromAsyncIterator(schema, references) {\n    return IsTransform(schema) || Visit(schema.items, references);\n}\n// prettier-ignore\nfunction FromConstructor(schema, references) {\n    return IsTransform(schema) || Visit(schema.returns, references) || schema.parameters.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction FromFunction(schema, references) {\n    return IsTransform(schema) || Visit(schema.returns, references) || schema.parameters.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction FromIntersect(schema, references) {\n    return IsTransform(schema) || IsTransform(schema.unevaluatedProperties) || schema.allOf.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction FromIterator(schema, references) {\n    return IsTransform(schema) || Visit(schema.items, references);\n}\n// prettier-ignore\nfunction FromNot(schema, references) {\n    return IsTransform(schema) || Visit(schema.not, references);\n}\n// prettier-ignore\nfunction FromObject(schema, references) {\n    return (IsTransform(schema) ||\n        Object.values(schema.properties).some((schema) => Visit(schema, references)) ||\n        (IsSchema(schema.additionalProperties) && Visit(schema.additionalProperties, references)));\n}\n// prettier-ignore\nfunction FromPromise(schema, references) {\n    return IsTransform(schema) || Visit(schema.item, references);\n}\n// prettier-ignore\nfunction FromRecord(schema, references) {\n    const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n    const property = schema.patternProperties[pattern];\n    return IsTransform(schema) || Visit(property, references) || (IsSchema(schema.additionalProperties) && IsTransform(schema.additionalProperties));\n}\n// prettier-ignore\nfunction FromRef(schema, references) {\n    if (IsTransform(schema))\n        return true;\n    return Visit(Deref(schema, references), references);\n}\n// prettier-ignore\nfunction FromThis(schema, references) {\n    if (IsTransform(schema))\n        return true;\n    return Visit(Deref(schema, references), references);\n}\n// prettier-ignore\nfunction FromTuple(schema, references) {\n    return IsTransform(schema) || (!IsUndefined(schema.items) && schema.items.some((schema) => Visit(schema, references)));\n}\n// prettier-ignore\nfunction FromUnion(schema, references) {\n    return IsTransform(schema) || schema.anyOf.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction Visit(schema, references) {\n    const references_ = Pushref(schema, references);\n    const schema_ = schema;\n    if (schema.$id && visited.has(schema.$id))\n        return false;\n    if (schema.$id)\n        visited.add(schema.$id);\n    switch (schema[Kind]) {\n        case 'Array':\n            return FromArray(schema_, references_);\n        case 'AsyncIterator':\n            return FromAsyncIterator(schema_, references_);\n        case 'Constructor':\n            return FromConstructor(schema_, references_);\n        case 'Function':\n            return FromFunction(schema_, references_);\n        case 'Intersect':\n            return FromIntersect(schema_, references_);\n        case 'Iterator':\n            return FromIterator(schema_, references_);\n        case 'Not':\n            return FromNot(schema_, references_);\n        case 'Object':\n            return FromObject(schema_, references_);\n        case 'Promise':\n            return FromPromise(schema_, references_);\n        case 'Record':\n            return FromRecord(schema_, references_);\n        case 'Ref':\n            return FromRef(schema_, references_);\n        case 'This':\n            return FromThis(schema_, references_);\n        case 'Tuple':\n            return FromTuple(schema_, references_);\n        case 'Union':\n            return FromUnion(schema_, references_);\n        default:\n            return IsTransform(schema);\n    }\n}\nconst visited = new Set();\n/** Returns true if this schema contains a transform codec */\nexport function HasTransform(schema, references) {\n    visited.clear();\n    return Visit(schema, references);\n}\n","import { TypeGuard } from '@sinclair/typebox';\nconst maybePath = (path) => {\n    if (path == null) {\n        return;\n    }\n    return path.trim() === '' ? undefined : path;\n};\nconst notNull = (value) => value != null;\nconst resolveSchemaIdent = (schema, references, nesting = 0) => {\n    if (TypeGuard.IsNull(schema)) {\n        return 'null';\n    }\n    if (TypeGuard.IsUndefined(schema)) {\n        return 'undefined';\n    }\n    if (TypeGuard.IsString(schema)) {\n        return `<string>`;\n    }\n    if (TypeGuard.IsNumber(schema)) {\n        return `<number>`;\n    }\n    if (TypeGuard.IsBoolean(schema)) {\n        return `<boolean>`;\n    }\n    if (TypeGuard.IsLiteral(schema)) {\n        return typeof schema.const === 'string' ? `'${schema.const}'` : `${schema.const}`;\n    }\n    if (TypeGuard.IsRef(schema)) {\n        const ref = references.find((r) => r.$id === schema.$ref);\n        if (ref == null) {\n            return schema.$ref;\n        }\n        // resolving a ref doesn't necessarily need to change the depth IMO\n        return resolveSchemaIdent(ref, references, nesting);\n    }\n    if (TypeGuard.IsArray(schema)) {\n        return `${resolveSchemaIdent(schema.items, references, nesting + 1)}[]`;\n    }\n    if (TypeGuard.IsUnion(schema)) {\n        const tooManyOptions = schema.anyOf.length > 5;\n        // If this union doesn't have an ID, we don't really have a way to\n        // reference it cleanly, so just list the members.\n        if (!tooManyOptions || schema.$id == null) {\n            const message = `${schema.anyOf\n                .map((s) => resolveSchemaIdent(s, references, nesting + 1))\n                .filter(notNull)\n                .join(' | ')}`;\n            return nesting > 0 ? `(${message})` : message;\n        }\n    }\n    return schema.$id ?? '';\n};\nconst errorHandler = (root, error, references) => {\n    let message = error.message;\n    if (TypeGuard.IsUnion(error.schema)) {\n        message = `Expected one of: ${resolveSchemaIdent(error.schema, references)}`;\n    }\n    const path = `#/definitions/${root}${maybePath(error.path) ?? ''}`;\n    return `${path}: ${message}`;\n};\nexport const shortError = (root, errors, references) => {\n    const error = errors.First();\n    if (error == null) {\n        return;\n    }\n    return errorHandler(root, error, references);\n};\n//# sourceMappingURL=short-error.js.map","import { ValueErrorIterator } from '@sinclair/typebox/errors';\nimport { TransformEncodeError } from '@sinclair/typebox/value';\nimport { FlateErrorCode } from 'fflate';\nimport { shortError } from '../test/short-error.js';\nexport var CompressErrorKind;\n(function (CompressErrorKind) {\n    CompressErrorKind[\"Archive\"] = \"Archive\";\n    CompressErrorKind[\"Validate\"] = \"Validate\";\n    CompressErrorKind[\"Encode\"] = \"Encode\";\n    CompressErrorKind[\"Unknown\"] = \"Unknown\";\n})(CompressErrorKind || (CompressErrorKind = {}));\nexport class CompressError extends Error {\n    name;\n    kind;\n    constructor(kind, message) {\n        super(message);\n        this.name = 'CompressError';\n        this.kind = kind;\n    }\n}\nconst flateErrorIntoCompressError = (error) => {\n    return new CompressError(CompressErrorKind.Archive, error.message);\n};\nconst isFlateError = (error) => {\n    const flateErrorCodes = Object.values(FlateErrorCode);\n    return (error instanceof Error && 'code' in error && typeof error.code === 'number' && flateErrorCodes.includes(error.code));\n};\nconst checkErrorIntoCompressError = (root, error, references) => {\n    return new CompressError(CompressErrorKind.Validate, shortError(root, error, references) ?? 'Unknown validate error');\n};\nconst encodeErrorIntoCompressError = (error) => {\n    return new CompressError(CompressErrorKind.Encode, error.message);\n};\nconst unknownErrorIntoCompressError = (error) => {\n    return new CompressError(CompressErrorKind.Unknown, error instanceof Error ? error.message : String(error));\n};\nexport const intoCompressError = (root, error, references) => {\n    if (error instanceof TransformEncodeError) {\n        return encodeErrorIntoCompressError(error);\n    }\n    if (error instanceof ValueErrorIterator) {\n        return checkErrorIntoCompressError(root, error, references);\n    }\n    if (isFlateError(error)) {\n        return flateErrorIntoCompressError(error);\n    }\n    return unknownErrorIntoCompressError(error);\n};\n//# sourceMappingURL=compress.js.map","import { ValueErrorIterator } from '@sinclair/typebox/errors';\nimport { TransformDecodeError } from '@sinclair/typebox/value';\nimport { FlateErrorCode } from 'fflate';\nimport { shortError } from '../test/short-error.js';\nexport var DecompressErrorKind;\n(function (DecompressErrorKind) {\n    DecompressErrorKind[\"Unarchive\"] = \"Unarchive\";\n    DecompressErrorKind[\"Validate\"] = \"Validate\";\n    DecompressErrorKind[\"Decode\"] = \"Decode\";\n    DecompressErrorKind[\"Unknown\"] = \"Unknown\";\n})(DecompressErrorKind || (DecompressErrorKind = {}));\nexport class DecompressError extends Error {\n    name;\n    kind;\n    constructor(kind, message) {\n        super(message);\n        this.name = 'DecompressError';\n        this.kind = kind;\n    }\n}\nconst flateErrorIntoDecompressError = (error) => {\n    return new DecompressError(DecompressErrorKind.Unarchive, error.message);\n};\nconst isFlateError = (error) => {\n    const flateErrorCodes = Object.values(FlateErrorCode);\n    return (error instanceof Error && 'code' in error && typeof error.code === 'number' && flateErrorCodes.includes(error.code));\n};\nconst checkErrorIntoDecompressError = (root, error, references) => {\n    return new DecompressError(DecompressErrorKind.Validate, shortError(root, error, references) ?? 'Unknown validate error');\n};\nconst decodeErrorIntoDecompressError = (error) => {\n    return new DecompressError(DecompressErrorKind.Decode, error.message);\n};\nconst unknownErrorIntoDecompressError = (error) => {\n    return new DecompressError(DecompressErrorKind.Unknown, error instanceof Error ? error.message : String(error));\n};\nexport const intoDecompressError = (root, error, references) => {\n    if (error instanceof TransformDecodeError) {\n        return decodeErrorIntoDecompressError(error);\n    }\n    if (error instanceof ValueErrorIterator) {\n        return checkErrorIntoDecompressError(root, error, references);\n    }\n    if (isFlateError(error)) {\n        return flateErrorIntoDecompressError(error);\n    }\n    return unknownErrorIntoDecompressError(error);\n};\n//# sourceMappingURL=decompress.js.map","import { err, ok } from '@mappedin/safe-types/result';\nimport { IntegrityErrorKind } from '../errors/index.js';\nconst iterRecord = function* (record, basePath = '') {\n    if (record == null) {\n        return;\n    }\n    if (Array.isArray(record)) {\n        for (let i = 0; i < record.length; i++) {\n            const path = basePath + `[${i}]`;\n            yield [path, record[i]];\n        }\n        return;\n    }\n    if ('features' in record) {\n        for (let i = 0; i < record.features.length; i++) {\n            const path = basePath === '' ? `features[${i}]` : `${basePath}.features[${i}]`;\n            yield [path, record.features[i]];\n        }\n        return;\n    }\n    for (const [key, items] of Object.entries(record)) {\n        const path = basePath === '' ? key : `${basePath}.${key}`;\n        yield* iterRecord(items, path);\n    }\n};\nconst getPath = (root, path) => {\n    if (root === '') {\n        return path;\n    }\n    if (path.startsWith('[')) {\n        return `${root}${path}`;\n    }\n    return `${root}.${path}`;\n};\n/**\n * Validates that all items in a collection have unique identifiers.\n *\n * This function can handle various collection formats:\n * - Simple arrays\n * - GeoJSON-like feature collections with a `features` property\n * - Records (objects) containing arrays or feature collections\n * - Nested combinations of the above\n *\n * @example\n * // Simple array validation\n * const items = [{ id: 'a' }, { id: 'b' }, { id: 'c' }];\n * const result = ensureUniqueIds(\n *   items,\n *   item => item.id,\n *   (item, path) => new Error(`Duplicate ID: ${item.id} at path: ${path}`)\n * );\n * // result.isOk() === true\n *\n * @example\n * // Feature collection validation\n * const featureCollection = {\n *   features: [\n *     { properties: { id: 'feature1' } },\n *     { properties: { id: 'feature2' } }\n *   ]\n * };\n * const result = ensureUniqueIds(\n *   featureCollection,\n *   feature => feature.properties.id,\n *   (feature, path) => new Error(`Duplicate feature ID: ${feature.properties.id} at path: ${path}`)\n * );\n *\n * @example\n * // Record of collections validation\n * const collections = {\n *   floors: [{ id: 'floor1' }, { id: 'floor2' }],\n *   rooms: { features: [{ id: 'room1' }, { id: 'room2' }] }\n * };\n * const result = ensureUniqueIds(\n *   collections,\n *   item => item.id,\n *   (item, path) => new Error(`Duplicate ID across collections: ${item.id} at path: ${path}`)\n * );\n *\n * @example\n * // Handling duplicate IDs\n * const itemsWithDuplicates = [{ id: 'a' }, { id: 'b' }, { id: 'a' }];\n * const result = ensureUniqueIds(\n *   itemsWithDuplicates,\n *   item => item.id,\n *   (item, path) => new Error(`Duplicate ID found: ${item.id} at path: ${path}`)\n * );\n * // result.isErr() === true\n * // result.unwrapErr() === Error('Duplicate ID found: a at path: [2]')\n */\nexport const ensureUniqueIds = (collection, idAccessor, root) => {\n    const ids = new Set();\n    for (const [path, item] of iterRecord(collection)) {\n        const id = idAccessor(item);\n        if (ids.has(id)) {\n            return err({\n                kind: IntegrityErrorKind.DuplicateIdError,\n                properties: {\n                    id,\n                    path: getPath(root, path),\n                },\n            });\n        }\n        ids.add(id);\n    }\n    return ok(true);\n};\n//# sourceMappingURL=ensure-unique-ids.js.map","import { err } from '@mappedin/safe-types/result';\nimport { IntegrityErrorKind } from '../../errors/integrity.js';\nimport { ensureUniqueIds } from '../../utils/ensure-unique-ids.js';\nexport const validateFloors = (data) => {\n    if (data.floors == null) {\n        return err({ kind: IntegrityErrorKind.FloorMissingError, properties: null });\n    }\n    return ensureUniqueIds(data.floors.features, (feature) => feature.properties.id, 'floors');\n};\n//# sourceMappingURL=floors.integrity.js.map","import { Type } from '@sinclair/typebox';\nimport { WithDetails } from '../../utility-types/details/details.js';\nimport { Feature, FeatureCollection, MultiPolygon, Polygon } from '../geojson/geojson.js';\nimport { FloorId } from '../identifiers/identifiers.js';\nimport { validateFloors } from './floors.integrity.js';\nexport const FloorProperties = Type.Intersect([\n    Type.Object({\n        /**\n         * A floor property floor id\n         */\n        id: Type.Ref(FloorId),\n        /**\n         * An ordinal representing the elevation of this map relative to other\n         * maps in the stack.\n         */\n        elevation: Type.Integer({\n            description: 'An ordinal representing the elevation of this map relative to other maps in the stack.',\n        }),\n        /**\n         * The subtitle of the floor. Often a more descriptive label for the floor,\n         * suitable for display near or beneath the name when the name alone is not descriptive enough.\n         *\n         * For example, a floor with a name of \"Level 1\" could have a subtitle of \"Arrivals\".\n         */\n        subtitle: Type.Optional(Type.String({ description: 'The subtitle of the floor.' })),\n        /**\n         * The maximum height of the floor in meters.\n         * This includes the thickness of the floor itself, up to the tallest point on any wall.\n         * If the floor does not have a consistent height (eg, one room on the floor has a vaulted ceiling, the rest do not),\n         * this value represents the highest point anywhere on the floor.\n         * Must be a positive number, or undefined.\n         */\n        maxHeight: Type.Optional(Type.Number({\n            description: 'The maximum height of the floor in meters. This includes the thickness of the floor itself, up to the tallest point on any wall. If the floor does not have a consistent height (eg, one room on the floor has a vaulted ceiling, the rest do not), this value represents the highest point anywhere on the floor. Must be a positive number, or undefined.',\n            exclusiveMinimum: 0,\n        })),\n    }),\n    WithDetails,\n], { $id: 'FloorProperties' });\nexport const FloorFeature = Feature(Type.Union([Type.Ref(Polygon), Type.Ref(MultiPolygon), Type.Null()]), Type.Ref(FloorProperties), { $id: 'FloorFeature' });\nexport const FloorCollection = FeatureCollection(Type.Ref(FloorFeature), { $id: 'FloorCollection' });\nexport const FloorsSchema = Type.Object({\n    floors: Type.Ref(FloorCollection),\n});\n/**\n * Add the Floors extension to your MVF bundle to include floors in your MVF.\n * Almost every MVF bundle will have this extension, since Floors are a fundamental concept\n * in MVF.\n *\n * See {@link FloorsSchema} for more information about the Floors extension.\n */\nexport const FloorsExtension = {\n    name: 'core:floors',\n    intoBundle: function* (data) {\n        if (data.floors == null) {\n            return;\n        }\n        yield { path: 'floors.geojson', contents: data.floors };\n    },\n    fromBundle: (path, contents, decode) => {\n        if (path !== 'floors.geojson') {\n            return;\n        }\n        return { floors: decode(contents) };\n    },\n    integrityCheck: validateFloors,\n    schema: FloorsSchema,\n    references: [FloorProperties, FloorFeature, FloorCollection],\n};\n//# sourceMappingURL=floors.js.map","import { err, ok } from '@mappedin/safe-types/result';\nimport { IntegrityErrorKind } from '../../errors/integrity.js';\nconst createFloorMap = (data) => {\n    return new Map(data.floors?.features.map((feature) => [feature.properties.id, feature]) ?? []);\n};\nexport const createFloorLookup = (data) => {\n    const floorMap = createFloorMap(data);\n    const floorLookup = (floorId) => {\n        const floor = floorMap.get(floorId);\n        if (floor == null) {\n            return err({ kind: IntegrityErrorKind.UnknownFloorError, properties: { floorId } });\n        }\n        return ok(floor);\n    };\n    return floorLookup;\n};\n//# sourceMappingURL=floors.validation.js.map","import { Type } from '@sinclair/typebox';\n/**\n * A utility type that allows you to create a partial record. Attempting to use\n * {@link Type.Partial} on a record directly will cause the resolved type to\n * become the empty object.\n *\n * For this to behave as intended, the record should not have the values marked\n * as optional. The reason for using this is the record type can be somewhat\n * misleading -- if you access a key that doesn't exist, but matches the\n * expected key type, the resolved type will be the value type, but you aren't\n * actually guaranteed that value exists.\n */\nexport const PartialRecord = (schema) => {\n    return Type.Unsafe(schema);\n};\n//# sourceMappingURL=partial-record.js.map","import { err, ok } from '@mappedin/safe-types/result';\nimport { IntegrityErrorKind } from '../../errors/integrity.js';\nimport { ensureUniqueIds } from '../../utils/ensure-unique-ids.js';\nimport { typedKeys } from '../../utils/typed-keys.js';\nimport { createFloorLookup } from '../floors/floors.validation.js';\nexport const validateGeometry = (data) => {\n    if (data.floors == null) {\n        return err({ kind: IntegrityErrorKind.FloorMissingError, properties: null });\n    }\n    if (data.geometry == null) {\n        return err({ kind: IntegrityErrorKind.GeometryMissingError, properties: null });\n    }\n    const uniqueIds = ensureUniqueIds(data.geometry, (geometry) => geometry.properties.id, 'geometry');\n    if (uniqueIds.isErr()) {\n        return uniqueIds;\n    }\n    const floorLookup = createFloorLookup(data);\n    for (const floorId of typedKeys(data.geometry)) {\n        const result = floorLookup(floorId);\n        if (result.isErr()) {\n            return result;\n        }\n    }\n    return ok(true);\n};\n//# sourceMappingURL=geometry.integrity.js.map","import { Type } from '@sinclair/typebox';\nimport { WithDetails } from '../../utility-types/details/details.js';\nimport { PartialRecord } from '../../utility-types/partial-record.js';\nimport { typedKeys } from '../../utils/typed-keys.js';\nimport { Feature, FeatureCollection, LineString, MultiLineString, MultiPoint, MultiPolygon, Point, Polygon, } from '../geojson/geojson.js';\nimport { FloorId, GeometryId } from '../identifiers/identifiers.js';\nimport { validateGeometry } from './geometry.integrity.js';\nexport const GeometryProperties = Type.Intersect([\n    Type.Object({\n        /**\n         * {@inheritDoc core/identifiers/identifiers!GeometryId}\n         * @see {@link GeometryId}\n         */\n        id: Type.Ref(GeometryId),\n    }),\n    WithDetails,\n], { $id: 'GeometryProperties' });\nexport const GeometryFeature = Feature(Type.Union([\n    Type.Ref(Point),\n    Type.Ref(MultiPoint),\n    Type.Ref(LineString),\n    Type.Ref(MultiLineString),\n    Type.Ref(Polygon),\n    Type.Ref(MultiPolygon),\n]), Type.Ref(GeometryProperties), { $id: 'GeometryFeature' });\nexport const GeometryCollection = FeatureCollection(Type.Ref(GeometryFeature), { $id: 'GeometryCollection' });\nexport const GeometrySchema = Type.Object({\n    geometry: PartialRecord(Type.Record(FloorId, Type.Ref(GeometryCollection), {\n        additionalProperties: false,\n    })),\n}, { $id: 'GeometrySchema' });\nconst GeometryFilePath = /^geometry\\/(.*)\\.geojson$/;\n/**\n * @see {@link GeometrySchema}\n */\nexport const GeometryExtension = {\n    name: 'core:geometry',\n    schema: GeometrySchema,\n    intoBundle: function* (data) {\n        if (data.geometry == null) {\n            return;\n        }\n        for (const floorId of typedKeys(data.geometry)) {\n            yield { path: `geometry/${floorId}.geojson`, contents: data.geometry[floorId] };\n        }\n    },\n    fromBundle: (path, contents, decode) => {\n        const floorId = path.match(GeometryFilePath)?.[1];\n        if (!floorId) {\n            return;\n        }\n        return { geometry: { [floorId]: decode(contents) } };\n    },\n    references: [GeometryProperties, GeometryFeature, GeometryCollection],\n    integrityCheck: validateGeometry,\n};\n//# sourceMappingURL=geometry.js.map","import { err, ok } from '@mappedin/safe-types/result';\nimport { IntegrityErrorKind } from '../../errors/integrity.js';\nimport { typedEntries } from '../../utils/typed-entries.js';\n/**\n * Creates a lookup map for the given input data, using cached results if\n * possible.\n *\n * @hidden\n */\nexport const createLookupMap = (data) => {\n    const geometriesByFloorId = new Map();\n    for (const [floorId, geometries] of typedEntries(data.geometry ?? {})) {\n        geometriesByFloorId.set(floorId, new Map(geometries?.features.map((g) => [g.properties.id, g])));\n    }\n    return geometriesByFloorId;\n};\n/**\n * Given some input MVF data, containing geometry, creates a lookup function\n * suitable for verifying a geometry is valid.\n */\nexport const createGeometryLookup = (data) => {\n    // Note: The same assertion made in {@link createGeometryAnchorLookup} is\n    // made here.\n    const geometryIdsByFloorId = createLookupMap(data);\n    const geometryLookup = (floorId, geometryId) => {\n        const floorGeometries = geometryIdsByFloorId.get(floorId);\n        if (floorGeometries == null) {\n            return err({ kind: IntegrityErrorKind.UnknownFloorError, properties: { floorId } });\n        }\n        const geometry = floorGeometries.get(geometryId);\n        if (geometry == null) {\n            return err({ kind: IntegrityErrorKind.UnknownGeometryError, properties: { floorId, geometryId } });\n        }\n        return ok(geometry);\n    };\n    return geometryLookup;\n};\n//# sourceMappingURL=geometry.validation.js.map","import { Type } from '@sinclair/typebox';\nimport { WithDetails } from '../../utility-types/details/details.js';\nimport { Feature, FeatureCollection, Point } from '../geojson/geojson.js';\nimport { FloorId } from '../identifiers/identifiers.js';\n/**\n * A file in the MVF bundle.\n */\nexport const ManifestFile = Type.Object({\n    type: Type.Literal('file'),\n    /**\n     * The name of the file.\n     */\n    name: Type.String({ description: 'The name of the file.' }),\n}, { $id: 'ManifestFile' });\n/**\n * A folder in the MVF bundle.\n */\nexport const ManifestFolder = Type.Recursive((Self) => Type.Object({\n    type: Type.Literal('folder'),\n    /**\n     * The name of the folder.\n     */\n    name: Type.String({ description: 'The name of the folder.' }),\n    /**\n     * The children of the folder.\n     */\n    children: Type.Array(Type.Union([Self, Type.Ref(ManifestFile)]), {\n        minItems: 1,\n        description: 'The children of the folder.',\n    }),\n}), { $id: 'ManifestFolder' });\nconst BaseManifestProperties = Type.Object({\n    /**\n     * @deprecated Use {@link details.name} instead.\n     * The name of the map.\n     */\n    name: Type.String({ description: 'The name of the map.', deprecated: true }),\n    /**\n     * The version of the manifest.\n     */\n    version: Type.Literal('3.0.0', { description: 'The version of the manifest.' }),\n    /**\n     * The identifier of the organization that the map this MVF is for belongs to.\n     */\n    orgId: Type.Optional(Type.String({ description: 'The identifier of the organization that the map this MVF is for belongs to.' })),\n    /**\n     * The identifier of the map that this MVF is for.\n     */\n    mapId: Type.Optional(Type.String({ description: 'The identifier of the map that this MVF is for.' })),\n    /**\n     * The contents of the MVF bundle.\n     */\n    contents: Type.Array(Type.Union([Type.Ref(ManifestFolder), Type.Ref(ManifestFile)]), {\n        minItems: 1,\n        description: 'The contents of the MVF bundle.',\n    }),\n    /**\n     * An ISO 8601 date-time string, including timezone offset.\n     * @format date-time\n     */\n    time: Type.String({ format: 'date-time', description: 'An ISO 8601 date-time string, including timezone offset.' }),\n    /**\n     * A valid IANA timezone identifier.\n     * @example \"America/New_York\"\n     * @pattern ^[A-Za-z0-9_-]+\\/[A-Za-z0-9_-]+$\n     */\n    tzid: Type.Optional(Type.Unsafe(Type.String({\n        description: 'A valid IANA timezone identifier.',\n        pattern: '^[A-Za-z0-9_-]+/[A-Za-z0-9_-]+$',\n    }))),\n    /**\n     * The angle, in degrees, the map is considered to be \"naturally oriented\"\n     * as, rather than facing directly north. 90 degrees means East is \"up\"\n     * @minimum 0\n     * @maximum 360\n     */\n    naturalBearing: Type.Optional(Type.Number({\n        minimum: 0,\n        maximum: 360,\n        description: 'The angle, in degrees, the map is considered to be \"naturally oriented\" as, rather than facing directly north. 90 degrees means East is \"up\"',\n    })),\n    /**\n     * The default floor ID of the map.\n     */\n    defaultFloor: Type.Optional(Type.Ref(FloorId, { description: 'The default floor ID of the map.' })),\n    /**\n     * An optional RFC-5646 compliant language tag, describing the language this version of the map is written in.\n     *\n     * The validator will only ensure this field is a string. Any further validation must be done by the consumer.\n     *\n     * All text for this map SHOULD either be in this language, or the map's default language.\n     * If this is inside a Locale Pack, that pack will contain only the data that has been localized to that language.\n     *\n     * @example 'en', 'en-gb'\n     */\n    language: Type.Optional(Type.String({ description: 'The language code of the map.' })),\n});\n/**\n * Manifest properties including optional details for venue/map metadata.\n * @see {@link WithDetails}\n */\nexport const ManifestProperties = Type.Intersect([BaseManifestProperties, WithDetails], {\n    $id: 'ManifestProperties',\n});\n/**\n * A collection of manifest properties.\n */\nexport const ManifestCollection = FeatureCollection(Feature(Point, Type.Ref(ManifestProperties)), {\n    $id: 'ManifestCollection',\n}, { minItems: 1, maxItems: 1 });\nexport const ManifestSchema = Type.Object({\n    manifest: Type.Ref(ManifestCollection),\n});\n/**\n * The Manifest extension.\n *\n * @see {@link ManifestSchema}\n */\nexport const ManifestExtension = {\n    name: 'core:manifest',\n    intoBundle: function* (data) {\n        if (data.manifest == null) {\n            return;\n        }\n        yield { path: 'manifest.geojson', contents: data.manifest };\n    },\n    fromBundle: (path, contents, decode) => {\n        if (path !== 'manifest.geojson') {\n            return;\n        }\n        return { manifest: decode(contents) };\n    },\n    schema: ManifestSchema,\n    references: [ManifestFile, ManifestFolder, ManifestProperties, ManifestCollection],\n};\n//# sourceMappingURL=manifest.js.map","import { Type } from '@sinclair/typebox';\nimport { GeometryId } from '../../core/index.js';\n/**\n * Utility type for adding a {@link GeometryId} to a schema.\n *\n * Should be used with {@link Type.Intersect} or {@link Type.Composite} to\n * compose a new schema that includes a {@link GeometryAnchor}. Intersect is\n * preferred to preserve documentation.\n *\n * @example\n * ```ts\n * const schema = Type.Intersect([\n * \tType.Object({}), // your schema\n * \tWithGeometryId\n * ]);\n * type Schema = Static<typeof schema>;\n * // type Schema = {\n * // \tgeometryId: GeometryId;\n * // \t// ...\n * // }\n * ```\n */\nexport const WithGeometryId = Type.Object({\n    geometryId: Type.Ref(GeometryId),\n}, { $id: 'WithGeometryId' });\nexport const WithGeometryIds = Type.Object({\n    geometryIds: Type.Array(Type.Ref(GeometryId)),\n}, { $id: 'WithGeometryIds' });\n/**\n * @hidden\n */\nexport const WithGeometryIdReferences = [WithGeometryId, WithGeometryIds];\n//# sourceMappingURL=geometry-id.js.map","import { Type } from '@sinclair/typebox';\n/**\n * Utility type for constructing a forwards-compatible string enum. This will\n * convert any unknown string values to the string literal \"unknown\". Values\n * which are not strings will be rejected. If you are building an extension,\n * you should use the `SafeStringEnum` utility instead, so you can also export\n * the enum values for use in validation and other extensions/implementations.\n *\n * Note -- this transformation requires a decode step to work properly. If you\n * are using an `MVFParser`, this should be done for you as long as you are\n * using the `decompress` API. If not, the `transform` function on the parser\n * can do this for you.\n *\n * @example\n * ```ts\n * const MyEnum = SafeStringEnum(['a', 'b', 'c'] as const);\n * type MyEnum = Static<typeof MyEnum>;\n * // type MyEnum = \"a\" | \"b\" | \"c\" | \"unknown\"\n * ```\n */\nexport const SafeStringEnumSchema = (enumValues, options) => {\n    return Type.Unsafe(Type.Transform(Type.String(options))\n        .Decode((value) => (enumValues.includes(value) ? value : 'unknown'))\n        .Encode((value) => value));\n};\n/**\n * Utility that both creates a {@link SafeStringEnumSchema} and returns it along with\n * the values in a readonly array, and a record of the enum values, with 'unknown' included,\n * and a type guard function that checks if a value is a valid enum value.\n *\n * Used to allow an extension to both define the schema and export the values in a consistent way.\n *\n * @example\n * ```ts\n * export const MyEnum = createSafeEnum(['a', 'b', 'c'] as const);\n * export type MyEnum = Static<typeof MyEnum.schema>;\n * // type MyEnum = \"a\" | \"b\" | \"c\" | \"unknown\"\n * export const MY_ENUMS = MyEnum.values;\n * // MY_ENUMS = [\"a\", \"b\", \"c\", \"unknown\"]\n * export const MY_ENUM = MyEnum.record;\n * // MY_ENUM = { a: \"a\", b: \"b\", c: \"c\", unknown: \"unknown\" }\n * export const isMyEnum = MyEnum.is;\n * // isMyEnum = (value: string): value is \"a\" | \"b\" | \"c\" | \"unknown\"\n * ```\n */\nexport const SafeStringEnum = (enumValues, options) => {\n    const schema = SafeStringEnumSchema(enumValues, options);\n    const values = [...enumValues, 'unknown'];\n    const record = Object.freeze(Object.fromEntries([...enumValues, 'unknown'].map((value) => [value, value])));\n    const is = (value) => Object.hasOwn(record, value);\n    return {\n        schema,\n        values,\n        record,\n        is,\n    };\n};\n//# sourceMappingURL=safe-enum.js.map","export var AnnotationIntegrityErrorKind;\n(function (AnnotationIntegrityErrorKind) {\n    AnnotationIntegrityErrorKind[\"AnnotationNonPointGeometryError\"] = \"AnnotationNonPointGeometryError\";\n    AnnotationIntegrityErrorKind[\"AnnotationUnknownSymbolError\"] = \"AnnotationUnknownSymbolError\";\n})(AnnotationIntegrityErrorKind || (AnnotationIntegrityErrorKind = {}));\n//# sourceMappingURL=errors.js.map","import { createGeometryLookup } from '@mappedin/mvf-core/geometry';\nimport { ensureUniqueIds } from '@mappedin/mvf-core/utils';\nimport { typedKeys } from '@mappedin/mvf-core/utils';\nimport { err, ok } from '@mappedin/safe-types/result';\nimport { AnnotationIntegrityErrorKind } from './errors.js';\nexport const validateAnnotations = (data) => {\n    if (data.annotations == null) {\n        return ok(true);\n    }\n    const uniqueIds = ensureUniqueIds(data.annotations, (annotation) => annotation.id, 'annotations');\n    if (uniqueIds.isErr()) {\n        return uniqueIds;\n    }\n    const lookupData = createGeometryLookup(data);\n    const knownSymbols = new Set(typedKeys(data.annotationSymbols ?? {}));\n    for (const floorId of typedKeys(data.annotations)) {\n        const floorAnnotations = data.annotations[floorId];\n        if (floorAnnotations == null) {\n            // This shouldn't be possible but typescript can't figure that out\n            continue;\n        }\n        for (const annotation of floorAnnotations) {\n            if (!knownSymbols.has(annotation.symbolKey)) {\n                return err({\n                    kind: AnnotationIntegrityErrorKind.AnnotationUnknownSymbolError,\n                    properties: { annotationId: annotation.id, symbolKey: annotation.symbolKey },\n                });\n            }\n            const geometry = lookupData(floorId, annotation.geometryId);\n            if (geometry.isErr()) {\n                return geometry;\n            }\n            if (geometry.value.geometry.type !== 'Point') {\n                return err({\n                    kind: AnnotationIntegrityErrorKind.AnnotationNonPointGeometryError,\n                    properties: { annotationId: annotation.id, floorId, geometryId: annotation.geometryId },\n                });\n            }\n        }\n    }\n    return ok(true);\n};\n//# sourceMappingURL=integrity.js.map","import { FloorId } from '@mappedin/mvf-core/identifiers';\nimport { Ident } from '@mappedin/mvf-core/identifiers';\nimport { PartialRecord, WithGeometryId } from '@mappedin/mvf-core/utility-types';\nimport { typedKeys } from '@mappedin/mvf-core/utils';\nimport { Type } from '@sinclair/typebox';\nimport { validateAnnotations } from './integrity.js';\n/**\n * A unique identifier for annotations.\n *\n * **Important**: While the suffix can be any length, it is strongly recommended to use\n * suffixes of at least 8 characters to ensure uniqueness and avoid collisions.\n */\nexport const AnnotationId = Ident('a', 'AnnotationId');\n/**\n * Annotations MUST only be linked to geometry that is a `Point`. Any other\n * geometry type is considered invalid.\n */\nexport const AnnotationProperties = Type.Intersect([\n    WithGeometryId,\n    Type.Object({\n        /**\n         * The unique identifier for the annotation.\n         */\n        id: Type.Ref(AnnotationId, { description: 'The unique identifier for the annotation.' }),\n        /**\n         * The external identifier for the annotation. Optional.\n         */\n        externalId: Type.Optional(Type.String({ description: 'The external identifier for the annotation.' })),\n        /**\n         * The symbol identifier for the annotation. This must be a key in the\n         * annotation symbols record, any other value is considered invalid.\n         */\n        symbolKey: Type.String({ description: 'The symbol identifier for the annotation.' }),\n    }),\n], { $id: 'AnnotationProperties' });\nexport const AnnotationSymbol = Type.Object({\n    url: Type.String({ format: 'uri', description: 'The URL for the symbol.' }),\n    name: Type.String({ description: 'The name of the symbol.' }),\n}, { $id: 'AnnotationSymbol' });\nexport const AnnotationsSchema = Type.Object({\n    annotations: PartialRecord(Type.Record(FloorId, Type.Array(Type.Ref(AnnotationProperties)), {\n        additionalProperties: false,\n    })),\n    annotationSymbols: PartialRecord(Type.Record(Type.Index(AnnotationProperties, ['symbolKey']), Type.Ref(AnnotationSymbol))),\n}, { $id: 'AnnotationsSchema' });\nconst AnnotationFilePath = /^annotations\\/(.*)\\.json$/;\nexport const AnnotationsExtension = {\n    name: 'ext:mvf-annotations',\n    schema: AnnotationsSchema,\n    intoBundle: function* (data) {\n        if (data.annotations != null) {\n            for (const floorId of typedKeys(data.annotations)) {\n                yield { path: `annotations/${floorId}.json`, contents: data.annotations[floorId] };\n            }\n        }\n        if (data.annotationSymbols != null) {\n            yield { path: 'annotation-symbols.json', contents: data.annotationSymbols };\n        }\n    },\n    fromBundle: (path, contents, decode) => {\n        if (path === 'annotation-symbols.json') {\n            return { annotationSymbols: decode(contents) };\n        }\n        const floorId = path.match(AnnotationFilePath)?.[1];\n        if (!floorId) {\n            return;\n        }\n        return { annotations: { [floorId]: decode(contents) } };\n    },\n    references: [AnnotationId, AnnotationProperties, AnnotationSymbol],\n    integrityCheck: validateAnnotations,\n};\nexport { AnnotationIntegrityErrorKind } from './errors.js';\n//# sourceMappingURL=index.js.map","/*--------------------------------------------------------------------------\n\nCopy of these methods to help reimplement transform.\n\nOriginal license:\n\n@sinclair/typebox/value\n\nThe MIT License (MIT)\n\nCopyright (c) 2017-2024 Haydn Paterson (sinclair) <haydn.developer@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n---------------------------------------------------------------------------*/\nimport { Kind, TypeBoxError, ValueGuard } from '@sinclair/typebox';\nexport class TypeDereferenceError extends TypeBoxError {\n    schema;\n    constructor(schema) {\n        super(`Unable to dereference schema with $id '${schema.$ref}'`);\n        this.schema = schema;\n    }\n}\nfunction Resolve(schema, references) {\n    const target = references.find((target) => target.$id === schema.$ref);\n    if (target === undefined)\n        throw new TypeDereferenceError(schema);\n    return Deref(target, references);\n}\n/** `[Internal]` Pushes a schema onto references if the schema has an $id and does not exist on references */\nexport function Pushref(schema, references) {\n    if (!ValueGuard.IsString(schema.$id) || references.some((target) => target.$id === schema.$id))\n        return references;\n    references.push(schema);\n    return references;\n}\n/** `[Internal]` Dereferences a schema from the references array or throws if not found */\nexport function Deref(schema, references) {\n    return schema[Kind] === 'This' || schema[Kind] === 'Ref' ? Resolve(schema, references) : schema;\n}\n//# sourceMappingURL=deref.js.map","import { HasTransform } from '@sinclair/typebox/value';\nfunction HasTransformCached(cache, schema, references) {\n    const cached = cache.get(schema);\n    if (cached !== undefined)\n        return cached;\n    const result = HasTransform(schema, references);\n    cache.set(schema, result);\n    return result;\n}\nexport function CreateTransformCache() {\n    const cache = new WeakMap();\n    return {\n        HasTransform: (schema, references) => HasTransformCached(cache, schema, references),\n    };\n}\n//# sourceMappingURL=transform-cache.js.map","/*--------------------------------------------------------------------------\n\nA modified version of TransformDecode which uses a cache + HasTransform to\navoid costlier checks.\n\nOriginal license:\n\n@sinclair/typebox/value\n\nThe MIT License (MIT)\n\nCopyright (c) 2017-2024 Haydn Paterson (sinclair) <haydn.developer@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n---------------------------------------------------------------------------*/\nimport { TypeSystemPolicy } from '@sinclair/typebox/system';\nimport { KeyOfPropertyEntries, KeyOfPropertyKeys, Kind, TransformKind, TypeGuard, ValueGuard, } from '@sinclair/typebox/type';\nimport { IsValueType, TransformDecodeError, Value } from '@sinclair/typebox/value';\nimport { Deref, Pushref } from './deref.js';\nimport { CreateTransformCache } from './transform-cache.js';\n// ------------------------------------------------------------------\n// Decode\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Default(schema, path, value) {\n    try {\n        return TypeGuard.IsTransform(schema) ? schema[TransformKind].Decode(value) : value;\n    }\n    catch (error) {\n        throw new TransformDecodeError(schema, path, value, error);\n    }\n}\n// prettier-ignore\nfunction FromArray(schema, references, path, value, cache) {\n    return ValueGuard.IsArray(value)\n        ? Default(schema, path, value.map((value, index) => Visit(schema.items, references, `${path}/${index}`, value, cache)))\n        : Default(schema, path, value);\n}\n// prettier-ignore\nfunction FromIntersect(schema, references, path, value, cache) {\n    if (!ValueGuard.IsObject(value) || IsValueType(value))\n        return Default(schema, path, value);\n    const knownEntries = KeyOfPropertyEntries(schema);\n    const knownKeys = knownEntries.map((entry) => entry[0]);\n    const knownProperties = { ...value };\n    for (const [knownKey, knownSchema] of knownEntries)\n        if (knownKey in knownProperties) {\n            knownProperties[knownKey] = Visit(knownSchema, references, `${path}/${knownKey}`, knownProperties[knownKey], cache);\n        }\n    if (!TypeGuard.IsTransform(schema.unevaluatedProperties)) {\n        return Default(schema, path, knownProperties);\n    }\n    const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n    const unevaluatedProperties = schema.unevaluatedProperties;\n    const unknownProperties = { ...knownProperties };\n    for (const key of unknownKeys)\n        if (!knownKeys.includes(key)) {\n            unknownProperties[key] = Default(unevaluatedProperties, `${path}/${key}`, unknownProperties[key]);\n        }\n    return Default(schema, path, unknownProperties);\n}\nfunction FromNot(schema, references, path, value, cache) {\n    return Default(schema, path, Visit(schema.not, references, path, value, cache));\n}\n// prettier-ignore\nfunction FromObject(schema, references, path, value, cache) {\n    if (!ValueGuard.IsObject(value))\n        return Default(schema, path, value);\n    const knownKeys = KeyOfPropertyKeys(schema);\n    const knownProperties = { ...value };\n    for (const key of knownKeys) {\n        if (!ValueGuard.HasPropertyKey(knownProperties, key))\n            continue;\n        // if the property value is undefined, but the target is not, nor does it satisfy exact optional\n        // property policy, then we need to continue. This is a special case for optional property handling\n        // where a transforms wrapped in a optional modifiers should not run.\n        if (ValueGuard.IsUndefined(knownProperties[key]) &&\n            (!TypeGuard.IsUndefined(schema.properties[key]) || TypeSystemPolicy.IsExactOptionalProperty(knownProperties, key)))\n            continue;\n        // decode property\n        knownProperties[key] = Visit(schema.properties[key], references, `${path}/${key}`, knownProperties[key], cache);\n    }\n    if (!TypeGuard.IsSchema(schema.additionalProperties)) {\n        return Default(schema, path, knownProperties);\n    }\n    const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n    const additionalProperties = schema.additionalProperties;\n    const unknownProperties = { ...knownProperties };\n    for (const key of unknownKeys)\n        if (!knownKeys.includes(key)) {\n            unknownProperties[key] = Default(additionalProperties, `${path}/${key}`, unknownProperties[key]);\n        }\n    return Default(schema, path, unknownProperties);\n}\n// prettier-ignore\nfunction FromRecord(schema, references, path, value, cache) {\n    if (!ValueGuard.IsObject(value))\n        return Default(schema, path, value);\n    const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n    const knownKeys = new RegExp(pattern);\n    const knownProperties = { ...value };\n    for (const key of Object.getOwnPropertyNames(value))\n        if (knownKeys.test(key)) {\n            knownProperties[key] = Visit(schema.patternProperties[pattern], references, `${path}/${key}`, knownProperties[key], cache);\n        }\n    if (!TypeGuard.IsSchema(schema.additionalProperties)) {\n        return Default(schema, path, knownProperties);\n    }\n    const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n    const additionalProperties = schema.additionalProperties;\n    const unknownProperties = { ...knownProperties };\n    for (const key of unknownKeys)\n        if (!knownKeys.test(key)) {\n            unknownProperties[key] = Default(additionalProperties, `${path}/${key}`, unknownProperties[key]);\n        }\n    return Default(schema, path, unknownProperties);\n}\n// prettier-ignore\nfunction FromRef(schema, references, path, value, cache) {\n    const target = Deref(schema, references);\n    return Default(schema, path, Visit(target, references, path, value, cache));\n}\n// prettier-ignore\nfunction FromThis(schema, references, path, value, cache) {\n    const target = Deref(schema, references);\n    return Default(schema, path, Visit(target, references, path, value, cache));\n}\n// prettier-ignore\nfunction FromTuple(schema, references, path, value, cache) {\n    return ValueGuard.IsArray(value) && ValueGuard.IsArray(schema.items)\n        ? Default(schema, path, schema.items.map((schema, index) => Visit(schema, references, `${path}/${index}`, value[index], cache)))\n        : Default(schema, path, value);\n}\n// prettier-ignore\nfunction FromUnion(schema, references, path, value, cache) {\n    for (const subschema of schema.anyOf) {\n        if (!Value.Check(subschema, references, value))\n            continue;\n        // note: ensure interior is decoded first\n        const decoded = Visit(subschema, references, path, value, cache);\n        return Default(schema, path, decoded);\n    }\n    return Default(schema, path, value);\n}\n// prettier-ignore\nfunction Visit(schema, references, path, value, cache) {\n    if (!cache.HasTransform(schema, references)) {\n        return value;\n    }\n    const references_ = Pushref(schema, references);\n    // biome-ignore lint/suspicious/noExplicitAny: inherited from typebox\n    const schema_ = schema;\n    switch (schema[Kind]) {\n        case 'Array':\n            return FromArray(schema_, references_, path, value, cache);\n        case 'Intersect':\n            return FromIntersect(schema_, references_, path, value, cache);\n        case 'Not':\n            return FromNot(schema_, references_, path, value, cache);\n        case 'Object':\n            return FromObject(schema_, references_, path, value, cache);\n        case 'Record':\n            return FromRecord(schema_, references_, path, value, cache);\n        case 'Ref':\n            return FromRef(schema_, references_, path, value, cache);\n        case 'Symbol':\n            return Default(schema_, path, value);\n        case 'This':\n            return FromThis(schema_, references_, path, value, cache);\n        case 'Tuple':\n            return FromTuple(schema_, references_, path, value, cache);\n        case 'Union':\n            return FromUnion(schema_, references_, path, value, cache);\n        default:\n            return Default(schema_, path, value);\n    }\n}\n/**\n * `[Internal]` Decodes the value and returns the result. This function requires that\n * the caller `Check` the value before use. Passing unchecked values may result in\n * undefined behavior. Refer to the `Value.Decode()` for implementation details.\n */\nexport function FastTransformDecode(schema, references, value) {\n    const cache = CreateTransformCache();\n    return Visit(schema, references, '', value, cache);\n}\n//# sourceMappingURL=fast-decode.js.map","/*--------------------------------------------------------------------------\n\nA modified version of TransformEncode which uses a cache + HasTransform to\navoid costlier checks.\n\nOriginal license:\n\n@sinclair/typebox/value\n\nThe MIT License (MIT)\n\nCopyright (c) 2017-2024 Haydn Paterson (sinclair) <haydn.developer@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n---------------------------------------------------------------------------*/\nimport { TypeSystemPolicy } from '@sinclair/typebox/system';\nimport { KeyOfPropertyEntries, KeyOfPropertyKeys, Kind, TransformKind, TypeGuard, ValueGuard, } from '@sinclair/typebox/type';\nimport { IsValueType, TransformEncodeError, Value } from '@sinclair/typebox/value';\nimport { Deref, Pushref } from './deref.js';\nimport { CreateTransformCache } from './transform-cache.js';\n// ------------------------------------------------------------------\n// Encode\n// ------------------------------------------------------------------\nfunction Default(schema, path, value) {\n    try {\n        return TypeGuard.IsTransform(schema) ? schema[TransformKind].Encode(value) : value;\n    }\n    catch (error) {\n        throw new TransformEncodeError(schema, path, value, error);\n    }\n}\nfunction FromArray(schema, references, path, value, cache) {\n    const defaulted = Default(schema, path, value);\n    return ValueGuard.IsArray(defaulted)\n        ? defaulted.map((value, index) => Visit(schema.items, references, `${path}/${index}`, value, cache))\n        : defaulted;\n}\nfunction FromIntersect(schema, references, path, value, cache) {\n    // biome-ignore lint/suspicious/noExplicitAny: compat with typebox impl\n    const defaulted = Default(schema, path, value);\n    if (!ValueGuard.IsObject(value) || IsValueType(value))\n        return defaulted;\n    const knownEntries = KeyOfPropertyEntries(schema);\n    const knownKeys = knownEntries.map((entry) => entry[0]);\n    const knownProperties = { ...defaulted };\n    for (const [knownKey, knownSchema] of knownEntries)\n        if (knownKey in knownProperties) {\n            knownProperties[knownKey] = Visit(knownSchema, references, `${path}/${knownKey}`, knownProperties[knownKey], cache);\n        }\n    if (!TypeGuard.IsTransform(schema.unevaluatedProperties)) {\n        return knownProperties;\n    }\n    const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n    const unevaluatedProperties = schema.unevaluatedProperties;\n    const properties = { ...knownProperties };\n    for (const key of unknownKeys)\n        if (!knownKeys.includes(key)) {\n            properties[key] = Default(unevaluatedProperties, `${path}/${key}`, properties[key]);\n        }\n    return properties;\n}\nfunction FromNot(schema, _references, path, value) {\n    return Default(schema.not, path, Default(schema, path, value));\n}\nfunction FromObject(schema, references, path, value, cache) {\n    const defaulted = Default(schema, path, value);\n    if (!ValueGuard.IsObject(defaulted))\n        return defaulted;\n    const knownKeys = KeyOfPropertyKeys(schema);\n    const knownProperties = { ...defaulted };\n    for (const key of knownKeys) {\n        if (!ValueGuard.HasPropertyKey(knownProperties, key))\n            continue;\n        // if the property value is undefined, but the target is not, nor does it satisfy exact optional\n        // property policy, then we need to continue. This is a special case for optional property handling\n        // where a transforms wrapped in a optional modifiers should not run.\n        if (ValueGuard.IsUndefined(knownProperties[key]) &&\n            (!TypeGuard.IsUndefined(schema.properties[key]) || TypeSystemPolicy.IsExactOptionalProperty(knownProperties, key)))\n            continue;\n        // encode property\n        knownProperties[key] = Visit(schema.properties[key], references, `${path}/${key}`, knownProperties[key], cache);\n    }\n    if (!TypeGuard.IsSchema(schema.additionalProperties)) {\n        return knownProperties;\n    }\n    const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n    const additionalProperties = schema.additionalProperties;\n    const properties = { ...knownProperties };\n    for (const key of unknownKeys)\n        if (!knownKeys.includes(key)) {\n            properties[key] = Default(additionalProperties, `${path}/${key}`, properties[key]);\n        }\n    return properties;\n}\nfunction FromRecord(schema, references, path, value, cache) {\n    const defaulted = Default(schema, path, value);\n    if (!ValueGuard.IsObject(value))\n        return defaulted;\n    const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n    const knownKeys = new RegExp(pattern);\n    const knownProperties = { ...defaulted };\n    for (const key of Object.getOwnPropertyNames(value))\n        if (knownKeys.test(key)) {\n            knownProperties[key] = Visit(schema.patternProperties[pattern], references, `${path}/${key}`, knownProperties[key], cache);\n        }\n    if (!TypeGuard.IsSchema(schema.additionalProperties)) {\n        return knownProperties;\n    }\n    const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n    const additionalProperties = schema.additionalProperties;\n    const properties = { ...knownProperties };\n    for (const key of unknownKeys)\n        if (!knownKeys.test(key)) {\n            properties[key] = Default(additionalProperties, `${path}/${key}`, properties[key]);\n        }\n    return properties;\n}\nfunction FromRef(schema, references, path, value, cache) {\n    const target = Deref(schema, references);\n    const resolved = Visit(target, references, path, value, cache);\n    return Default(schema, path, resolved);\n}\nfunction FromThis(schema, references, path, value, cache) {\n    const target = Deref(schema, references);\n    const resolved = Visit(target, references, path, value, cache);\n    return Default(schema, path, resolved);\n}\nfunction FromTuple(schema, references, path, value, cache) {\n    // biome-ignore lint/suspicious/noExplicitAny: compat with typebox impl\n    const value1 = Default(schema, path, value);\n    return ValueGuard.IsArray(schema.items)\n        ? schema.items.map((schema, index) => Visit(schema, references, `${path}/${index}`, value1[index], cache))\n        : [];\n}\nfunction FromUnion(schema, references, path, value, cache) {\n    // test value against union variants\n    for (const subschema of schema.anyOf) {\n        if (!Value.Check(subschema, references, value))\n            continue;\n        const value1 = Visit(subschema, references, path, value, cache);\n        return Default(schema, path, value1);\n    }\n    // test transformed value against union variants\n    for (const subschema of schema.anyOf) {\n        const value1 = Visit(subschema, references, path, value, cache);\n        if (!Value.Check(schema, references, value1))\n            continue;\n        return Default(schema, path, value1);\n    }\n    return Default(schema, path, value);\n}\nfunction Visit(schema, references, path, value, cache) {\n    if (!cache.HasTransform(schema, references)) {\n        return value;\n    }\n    const references_ = Pushref(schema, references);\n    // biome-ignore lint/suspicious/noExplicitAny: inherited from typebox\n    const schema_ = schema;\n    switch (schema[Kind]) {\n        case 'Array':\n            return FromArray(schema_, references_, path, value, cache);\n        case 'Intersect':\n            return FromIntersect(schema_, references_, path, value, cache);\n        case 'Not':\n            return FromNot(schema_, references_, path, value);\n        case 'Object':\n            return FromObject(schema_, references_, path, value, cache);\n        case 'Record':\n            return FromRecord(schema_, references_, path, value, cache);\n        case 'Ref':\n            return FromRef(schema_, references_, path, value, cache);\n        case 'This':\n            return FromThis(schema_, references_, path, value, cache);\n        case 'Tuple':\n            return FromTuple(schema_, references_, path, value, cache);\n        case 'Union':\n            return FromUnion(schema_, references_, path, value, cache);\n        default:\n            return Default(schema_, path, value);\n    }\n}\n/**\n * `[Internal]` Encodes the value and returns the result. This function expects the\n * caller to pass a statically checked value. This function does not check the encoded\n * result, meaning the result should be passed to `Check` before use. Refer to the\n * `Value.Encode()` function for implementation details.\n */\nexport function FastTransformEncode(schema, references, value) {\n    const cache = CreateTransformCache();\n    return Visit(schema, references, '', value, cache);\n}\n//# sourceMappingURL=fast-encode.js.map","import { TransformEncode, TransformDecode, HasTransform, TransformDecodeCheckError, TransformEncodeCheckError } from '../value/transform/index.mjs';\nimport { Errors } from '../errors/index.mjs';\nimport { TypeSystemPolicy } from '../system/index.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 { TypeRegistry, FormatRegistry } from '../type/registry/index.mjs';\nimport { KeyOfPattern } from '../type/keyof/index.mjs';\nimport { ExtendsUndefinedCheck } from '../type/extends/extends-undefined.mjs';\nimport { Never } from '../type/never/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsString, IsNumber, IsBigInt } from '../value/guard/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsSchema } from '../type/guard/type.mjs';\n// ------------------------------------------------------------------\n// TypeCheck\n// ------------------------------------------------------------------\nexport class TypeCheck {\n    constructor(schema, references, checkFunc, code) {\n        this.schema = schema;\n        this.references = references;\n        this.checkFunc = checkFunc;\n        this.code = code;\n        this.hasTransform = HasTransform(schema, references);\n    }\n    /** Returns the generated assertion code used to validate this type. */\n    Code() {\n        return this.code;\n    }\n    /** Returns an iterator for each error in this value. */\n    Errors(value) {\n        return Errors(this.schema, this.references, value);\n    }\n    /** Returns true if the value matches the compiled type. */\n    Check(value) {\n        return this.checkFunc(value);\n    }\n    /** Decodes a value or throws if error */\n    Decode(value) {\n        if (!this.checkFunc(value))\n            throw new TransformDecodeCheckError(this.schema, value, this.Errors(value).First());\n        return (this.hasTransform ? TransformDecode(this.schema, this.references, value) : value);\n    }\n    /** Encodes a value or throws if error */\n    Encode(value) {\n        const encoded = this.hasTransform ? TransformEncode(this.schema, this.references, value) : value;\n        if (!this.checkFunc(encoded))\n            throw new TransformEncodeCheckError(this.schema, value, this.Errors(value).First());\n        return encoded;\n    }\n}\n// ------------------------------------------------------------------\n// Character\n// ------------------------------------------------------------------\nvar Character;\n(function (Character) {\n    function DollarSign(code) {\n        return code === 36;\n    }\n    Character.DollarSign = DollarSign;\n    function IsUnderscore(code) {\n        return code === 95;\n    }\n    Character.IsUnderscore = IsUnderscore;\n    function IsAlpha(code) {\n        return (code >= 65 && code <= 90) || (code >= 97 && code <= 122);\n    }\n    Character.IsAlpha = IsAlpha;\n    function IsNumeric(code) {\n        return code >= 48 && code <= 57;\n    }\n    Character.IsNumeric = IsNumeric;\n})(Character || (Character = {}));\n// ------------------------------------------------------------------\n// MemberExpression\n// ------------------------------------------------------------------\nvar MemberExpression;\n(function (MemberExpression) {\n    function IsFirstCharacterNumeric(value) {\n        if (value.length === 0)\n            return false;\n        return Character.IsNumeric(value.charCodeAt(0));\n    }\n    function IsAccessor(value) {\n        if (IsFirstCharacterNumeric(value))\n            return false;\n        for (let i = 0; i < value.length; i++) {\n            const code = value.charCodeAt(i);\n            const check = Character.IsAlpha(code) || Character.IsNumeric(code) || Character.DollarSign(code) || Character.IsUnderscore(code);\n            if (!check)\n                return false;\n        }\n        return true;\n    }\n    function EscapeHyphen(key) {\n        return key.replace(/'/g, \"\\\\'\");\n    }\n    function Encode(object, key) {\n        return IsAccessor(key) ? `${object}.${key}` : `${object}['${EscapeHyphen(key)}']`;\n    }\n    MemberExpression.Encode = Encode;\n})(MemberExpression || (MemberExpression = {}));\n// ------------------------------------------------------------------\n// Identifier\n// ------------------------------------------------------------------\nvar Identifier;\n(function (Identifier) {\n    function Encode($id) {\n        const buffer = [];\n        for (let i = 0; i < $id.length; i++) {\n            const code = $id.charCodeAt(i);\n            if (Character.IsNumeric(code) || Character.IsAlpha(code)) {\n                buffer.push($id.charAt(i));\n            }\n            else {\n                buffer.push(`_${code}_`);\n            }\n        }\n        return buffer.join('').replace(/__/g, '_');\n    }\n    Identifier.Encode = Encode;\n})(Identifier || (Identifier = {}));\n// ------------------------------------------------------------------\n// LiteralString\n// ------------------------------------------------------------------\nvar LiteralString;\n(function (LiteralString) {\n    function Escape(content) {\n        return content.replace(/'/g, \"\\\\'\");\n    }\n    LiteralString.Escape = Escape;\n})(LiteralString || (LiteralString = {}));\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class TypeCompilerUnknownTypeError extends TypeBoxError {\n    constructor(schema) {\n        super('Unknown type');\n        this.schema = schema;\n    }\n}\nexport class TypeCompilerTypeGuardError extends TypeBoxError {\n    constructor(schema) {\n        super('Preflight validation check failed to guard for the given schema');\n        this.schema = schema;\n    }\n}\n// ------------------------------------------------------------------\n// Policy\n// ------------------------------------------------------------------\nexport var Policy;\n(function (Policy) {\n    function IsExactOptionalProperty(value, key, expression) {\n        return TypeSystemPolicy.ExactOptionalPropertyTypes ? `('${key}' in ${value} ? ${expression} : true)` : `(${MemberExpression.Encode(value, key)} !== undefined ? ${expression} : true)`;\n    }\n    Policy.IsExactOptionalProperty = IsExactOptionalProperty;\n    function IsObjectLike(value) {\n        return !TypeSystemPolicy.AllowArrayObject ? `(typeof ${value} === 'object' && ${value} !== null && !Array.isArray(${value}))` : `(typeof ${value} === 'object' && ${value} !== null)`;\n    }\n    Policy.IsObjectLike = IsObjectLike;\n    function IsRecordLike(value) {\n        return !TypeSystemPolicy.AllowArrayObject\n            ? `(typeof ${value} === 'object' && ${value} !== null && !Array.isArray(${value}) && !(${value} instanceof Date) && !(${value} instanceof Uint8Array))`\n            : `(typeof ${value} === 'object' && ${value} !== null && !(${value} instanceof Date) && !(${value} instanceof Uint8Array))`;\n    }\n    Policy.IsRecordLike = IsRecordLike;\n    function IsNumberLike(value) {\n        return TypeSystemPolicy.AllowNaN ? `typeof ${value} === 'number'` : `Number.isFinite(${value})`;\n    }\n    Policy.IsNumberLike = IsNumberLike;\n    function IsVoidLike(value) {\n        return TypeSystemPolicy.AllowNullVoid ? `(${value} === undefined || ${value} === null)` : `${value} === undefined`;\n    }\n    Policy.IsVoidLike = IsVoidLike;\n})(Policy || (Policy = {}));\n/** Compiles Types for Runtime Type Checking */\nexport var TypeCompiler;\n(function (TypeCompiler) {\n    // ----------------------------------------------------------------\n    // Guards\n    // ----------------------------------------------------------------\n    function IsAnyOrUnknown(schema) {\n        return schema[Kind] === 'Any' || schema[Kind] === 'Unknown';\n    }\n    // ----------------------------------------------------------------\n    // Types\n    // ----------------------------------------------------------------\n    function* FromAny(schema, references, value) {\n        yield 'true';\n    }\n    function* FromArray(schema, references, value) {\n        yield `Array.isArray(${value})`;\n        const [parameter, accumulator] = [CreateParameter('value', 'any'), CreateParameter('acc', 'number')];\n        if (IsNumber(schema.maxItems))\n            yield `${value}.length <= ${schema.maxItems}`;\n        if (IsNumber(schema.minItems))\n            yield `${value}.length >= ${schema.minItems}`;\n        const elementExpression = CreateExpression(schema.items, references, 'value');\n        yield `${value}.every((${parameter}) => ${elementExpression})`;\n        if (IsSchema(schema.contains) || IsNumber(schema.minContains) || IsNumber(schema.maxContains)) {\n            const containsSchema = IsSchema(schema.contains) ? schema.contains : Never();\n            const checkExpression = CreateExpression(containsSchema, references, 'value');\n            const checkMinContains = IsNumber(schema.minContains) ? [`(count >= ${schema.minContains})`] : [];\n            const checkMaxContains = IsNumber(schema.maxContains) ? [`(count <= ${schema.maxContains})`] : [];\n            const checkCount = `const count = value.reduce((${accumulator}, ${parameter}) => ${checkExpression} ? acc + 1 : acc, 0)`;\n            const check = [`(count > 0)`, ...checkMinContains, ...checkMaxContains].join(' && ');\n            yield `((${parameter}) => { ${checkCount}; return ${check}})(${value})`;\n        }\n        if (schema.uniqueItems === true) {\n            const check = `const hashed = hash(element); if(set.has(hashed)) { return false } else { set.add(hashed) } } return true`;\n            const block = `const set = new Set(); for(const element of value) { ${check} }`;\n            yield `((${parameter}) => { ${block} )(${value})`;\n        }\n    }\n    function* FromAsyncIterator(schema, references, value) {\n        yield `(typeof value === 'object' && Symbol.asyncIterator in ${value})`;\n    }\n    function* FromBigInt(schema, references, value) {\n        yield `(typeof ${value} === 'bigint')`;\n        if (IsBigInt(schema.exclusiveMaximum))\n            yield `${value} < BigInt(${schema.exclusiveMaximum})`;\n        if (IsBigInt(schema.exclusiveMinimum))\n            yield `${value} > BigInt(${schema.exclusiveMinimum})`;\n        if (IsBigInt(schema.maximum))\n            yield `${value} <= BigInt(${schema.maximum})`;\n        if (IsBigInt(schema.minimum))\n            yield `${value} >= BigInt(${schema.minimum})`;\n        if (IsBigInt(schema.multipleOf))\n            yield `(${value} % BigInt(${schema.multipleOf})) === 0`;\n    }\n    function* FromBoolean(schema, references, value) {\n        yield `(typeof ${value} === 'boolean')`;\n    }\n    function* FromConstructor(schema, references, value) {\n        yield* Visit(schema.returns, references, `${value}.prototype`);\n    }\n    function* FromDate(schema, references, value) {\n        yield `(${value} instanceof Date) && Number.isFinite(${value}.getTime())`;\n        if (IsNumber(schema.exclusiveMaximumTimestamp))\n            yield `${value}.getTime() < ${schema.exclusiveMaximumTimestamp}`;\n        if (IsNumber(schema.exclusiveMinimumTimestamp))\n            yield `${value}.getTime() > ${schema.exclusiveMinimumTimestamp}`;\n        if (IsNumber(schema.maximumTimestamp))\n            yield `${value}.getTime() <= ${schema.maximumTimestamp}`;\n        if (IsNumber(schema.minimumTimestamp))\n            yield `${value}.getTime() >= ${schema.minimumTimestamp}`;\n        if (IsNumber(schema.multipleOfTimestamp))\n            yield `(${value}.getTime() % ${schema.multipleOfTimestamp}) === 0`;\n    }\n    function* FromFunction(schema, references, value) {\n        yield `(typeof ${value} === 'function')`;\n    }\n    function* FromInteger(schema, references, value) {\n        yield `Number.isInteger(${value})`;\n        if (IsNumber(schema.exclusiveMaximum))\n            yield `${value} < ${schema.exclusiveMaximum}`;\n        if (IsNumber(schema.exclusiveMinimum))\n            yield `${value} > ${schema.exclusiveMinimum}`;\n        if (IsNumber(schema.maximum))\n            yield `${value} <= ${schema.maximum}`;\n        if (IsNumber(schema.minimum))\n            yield `${value} >= ${schema.minimum}`;\n        if (IsNumber(schema.multipleOf))\n            yield `(${value} % ${schema.multipleOf}) === 0`;\n    }\n    function* FromIntersect(schema, references, value) {\n        const check1 = schema.allOf.map((schema) => CreateExpression(schema, references, value)).join(' && ');\n        if (schema.unevaluatedProperties === false) {\n            const keyCheck = CreateVariable(`${new RegExp(KeyOfPattern(schema))};`);\n            const check2 = `Object.getOwnPropertyNames(${value}).every(key => ${keyCheck}.test(key))`;\n            yield `(${check1} && ${check2})`;\n        }\n        else if (IsSchema(schema.unevaluatedProperties)) {\n            const keyCheck = CreateVariable(`${new RegExp(KeyOfPattern(schema))};`);\n            const check2 = `Object.getOwnPropertyNames(${value}).every(key => ${keyCheck}.test(key) || ${CreateExpression(schema.unevaluatedProperties, references, `${value}[key]`)})`;\n            yield `(${check1} && ${check2})`;\n        }\n        else {\n            yield `(${check1})`;\n        }\n    }\n    function* FromIterator(schema, references, value) {\n        yield `(typeof value === 'object' && Symbol.iterator in ${value})`;\n    }\n    function* FromLiteral(schema, references, value) {\n        if (typeof schema.const === 'number' || typeof schema.const === 'boolean') {\n            yield `(${value} === ${schema.const})`;\n        }\n        else {\n            yield `(${value} === '${LiteralString.Escape(schema.const)}')`;\n        }\n    }\n    function* FromNever(schema, references, value) {\n        yield `false`;\n    }\n    function* FromNot(schema, references, value) {\n        const expression = CreateExpression(schema.not, references, value);\n        yield `(!${expression})`;\n    }\n    function* FromNull(schema, references, value) {\n        yield `(${value} === null)`;\n    }\n    function* FromNumber(schema, references, value) {\n        yield Policy.IsNumberLike(value);\n        if (IsNumber(schema.exclusiveMaximum))\n            yield `${value} < ${schema.exclusiveMaximum}`;\n        if (IsNumber(schema.exclusiveMinimum))\n            yield `${value} > ${schema.exclusiveMinimum}`;\n        if (IsNumber(schema.maximum))\n            yield `${value} <= ${schema.maximum}`;\n        if (IsNumber(schema.minimum))\n            yield `${value} >= ${schema.minimum}`;\n        if (IsNumber(schema.multipleOf))\n            yield `(${value} % ${schema.multipleOf}) === 0`;\n    }\n    function* FromObject(schema, references, value) {\n        yield Policy.IsObjectLike(value);\n        if (IsNumber(schema.minProperties))\n            yield `Object.getOwnPropertyNames(${value}).length >= ${schema.minProperties}`;\n        if (IsNumber(schema.maxProperties))\n            yield `Object.getOwnPropertyNames(${value}).length <= ${schema.maxProperties}`;\n        const knownKeys = Object.getOwnPropertyNames(schema.properties);\n        for (const knownKey of knownKeys) {\n            const memberExpression = MemberExpression.Encode(value, knownKey);\n            const property = schema.properties[knownKey];\n            if (schema.required && schema.required.includes(knownKey)) {\n                yield* Visit(property, references, memberExpression);\n                if (ExtendsUndefinedCheck(property) || IsAnyOrUnknown(property))\n                    yield `('${knownKey}' in ${value})`;\n            }\n            else {\n                const expression = CreateExpression(property, references, memberExpression);\n                yield Policy.IsExactOptionalProperty(value, knownKey, expression);\n            }\n        }\n        if (schema.additionalProperties === false) {\n            if (schema.required && schema.required.length === knownKeys.length) {\n                yield `Object.getOwnPropertyNames(${value}).length === ${knownKeys.length}`;\n            }\n            else {\n                const keys = `[${knownKeys.map((key) => `'${key}'`).join(', ')}]`;\n                yield `Object.getOwnPropertyNames(${value}).every(key => ${keys}.includes(key))`;\n            }\n        }\n        if (typeof schema.additionalProperties === 'object') {\n            const expression = CreateExpression(schema.additionalProperties, references, `${value}[key]`);\n            const keys = `[${knownKeys.map((key) => `'${key}'`).join(', ')}]`;\n            yield `(Object.getOwnPropertyNames(${value}).every(key => ${keys}.includes(key) || ${expression}))`;\n        }\n    }\n    function* FromPromise(schema, references, value) {\n        yield `(typeof value === 'object' && typeof ${value}.then === 'function')`;\n    }\n    function* FromRecord(schema, references, value) {\n        yield Policy.IsRecordLike(value);\n        if (IsNumber(schema.minProperties))\n            yield `Object.getOwnPropertyNames(${value}).length >= ${schema.minProperties}`;\n        if (IsNumber(schema.maxProperties))\n            yield `Object.getOwnPropertyNames(${value}).length <= ${schema.maxProperties}`;\n        const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];\n        const variable = CreateVariable(`${new RegExp(patternKey)}`);\n        const check1 = CreateExpression(patternSchema, references, 'value');\n        const check2 = IsSchema(schema.additionalProperties) ? CreateExpression(schema.additionalProperties, references, value) : schema.additionalProperties === false ? 'false' : 'true';\n        const expression = `(${variable}.test(key) ? ${check1} : ${check2})`;\n        yield `(Object.entries(${value}).every(([key, value]) => ${expression}))`;\n    }\n    function* FromRef(schema, references, value) {\n        const target = Deref(schema, references);\n        // Reference: If we have seen this reference before we can just yield and return the function call.\n        // If this isn't the case we defer to visit to generate and set the function for subsequent passes.\n        if (state.functions.has(schema.$ref))\n            return yield `${CreateFunctionName(schema.$ref)}(${value})`;\n        yield* Visit(target, references, value);\n    }\n    function* FromRegExp(schema, references, value) {\n        const variable = CreateVariable(`${new RegExp(schema.source, schema.flags)};`);\n        yield `(typeof ${value} === 'string')`;\n        if (IsNumber(schema.maxLength))\n            yield `${value}.length <= ${schema.maxLength}`;\n        if (IsNumber(schema.minLength))\n            yield `${value}.length >= ${schema.minLength}`;\n        yield `${variable}.test(${value})`;\n    }\n    function* FromString(schema, references, value) {\n        yield `(typeof ${value} === 'string')`;\n        if (IsNumber(schema.maxLength))\n            yield `${value}.length <= ${schema.maxLength}`;\n        if (IsNumber(schema.minLength))\n            yield `${value}.length >= ${schema.minLength}`;\n        if (schema.pattern !== undefined) {\n            const variable = CreateVariable(`${new RegExp(schema.pattern)};`);\n            yield `${variable}.test(${value})`;\n        }\n        if (schema.format !== undefined) {\n            yield `format('${schema.format}', ${value})`;\n        }\n    }\n    function* FromSymbol(schema, references, value) {\n        yield `(typeof ${value} === 'symbol')`;\n    }\n    function* FromTemplateLiteral(schema, references, value) {\n        yield `(typeof ${value} === 'string')`;\n        const variable = CreateVariable(`${new RegExp(schema.pattern)};`);\n        yield `${variable}.test(${value})`;\n    }\n    function* FromThis(schema, references, value) {\n        // Note: This types are assured to be hoisted prior to this call. Just yield the function.\n        yield `${CreateFunctionName(schema.$ref)}(${value})`;\n    }\n    function* FromTuple(schema, references, value) {\n        yield `Array.isArray(${value})`;\n        if (schema.items === undefined)\n            return yield `${value}.length === 0`;\n        yield `(${value}.length === ${schema.maxItems})`;\n        for (let i = 0; i < schema.items.length; i++) {\n            const expression = CreateExpression(schema.items[i], references, `${value}[${i}]`);\n            yield `${expression}`;\n        }\n    }\n    function* FromUndefined(schema, references, value) {\n        yield `${value} === undefined`;\n    }\n    function* FromUnion(schema, references, value) {\n        const expressions = schema.anyOf.map((schema) => CreateExpression(schema, references, value));\n        yield `(${expressions.join(' || ')})`;\n    }\n    function* FromUint8Array(schema, references, value) {\n        yield `${value} instanceof Uint8Array`;\n        if (IsNumber(schema.maxByteLength))\n            yield `(${value}.length <= ${schema.maxByteLength})`;\n        if (IsNumber(schema.minByteLength))\n            yield `(${value}.length >= ${schema.minByteLength})`;\n    }\n    function* FromUnknown(schema, references, value) {\n        yield 'true';\n    }\n    function* FromVoid(schema, references, value) {\n        yield Policy.IsVoidLike(value);\n    }\n    function* FromKind(schema, references, value) {\n        const instance = state.instances.size;\n        state.instances.set(instance, schema);\n        yield `kind('${schema[Kind]}', ${instance}, ${value})`;\n    }\n    function* Visit(schema, references, value, useHoisting = true) {\n        const references_ = IsString(schema.$id) ? [...references, schema] : references;\n        const schema_ = schema;\n        // --------------------------------------------------------------\n        // Hoisting\n        // --------------------------------------------------------------\n        if (useHoisting && IsString(schema.$id)) {\n            const functionName = CreateFunctionName(schema.$id);\n            if (state.functions.has(functionName)) {\n                return yield `${functionName}(${value})`;\n            }\n            else {\n                const functionCode = CreateFunction(functionName, schema, references, 'value', false);\n                state.functions.set(functionName, functionCode);\n                return yield `${functionName}(${value})`;\n            }\n        }\n        switch (schema_[Kind]) {\n            case 'Any':\n                return yield* FromAny(schema_, references_, value);\n            case 'Array':\n                return yield* FromArray(schema_, references_, value);\n            case 'AsyncIterator':\n                return yield* FromAsyncIterator(schema_, references_, value);\n            case 'BigInt':\n                return yield* FromBigInt(schema_, references_, value);\n            case 'Boolean':\n                return yield* FromBoolean(schema_, references_, value);\n            case 'Constructor':\n                return yield* FromConstructor(schema_, references_, value);\n            case 'Date':\n                return yield* FromDate(schema_, references_, value);\n            case 'Function':\n                return yield* FromFunction(schema_, references_, value);\n            case 'Integer':\n                return yield* FromInteger(schema_, references_, value);\n            case 'Intersect':\n                return yield* FromIntersect(schema_, references_, value);\n            case 'Iterator':\n                return yield* FromIterator(schema_, references_, value);\n            case 'Literal':\n                return yield* FromLiteral(schema_, references_, value);\n            case 'Never':\n                return yield* FromNever(schema_, references_, value);\n            case 'Not':\n                return yield* FromNot(schema_, references_, value);\n            case 'Null':\n                return yield* FromNull(schema_, references_, value);\n            case 'Number':\n                return yield* FromNumber(schema_, references_, value);\n            case 'Object':\n                return yield* FromObject(schema_, references_, value);\n            case 'Promise':\n                return yield* FromPromise(schema_, references_, value);\n            case 'Record':\n                return yield* FromRecord(schema_, references_, value);\n            case 'Ref':\n                return yield* FromRef(schema_, references_, value);\n            case 'RegExp':\n                return yield* FromRegExp(schema_, references_, value);\n            case 'String':\n                return yield* FromString(schema_, references_, value);\n            case 'Symbol':\n                return yield* FromSymbol(schema_, references_, value);\n            case 'TemplateLiteral':\n                return yield* FromTemplateLiteral(schema_, references_, value);\n            case 'This':\n                return yield* FromThis(schema_, references_, value);\n            case 'Tuple':\n                return yield* FromTuple(schema_, references_, value);\n            case 'Undefined':\n                return yield* FromUndefined(schema_, references_, value);\n            case 'Union':\n                return yield* FromUnion(schema_, references_, value);\n            case 'Uint8Array':\n                return yield* FromUint8Array(schema_, references_, value);\n            case 'Unknown':\n                return yield* FromUnknown(schema_, references_, value);\n            case 'Void':\n                return yield* FromVoid(schema_, references_, value);\n            default:\n                if (!TypeRegistry.Has(schema_[Kind]))\n                    throw new TypeCompilerUnknownTypeError(schema);\n                return yield* FromKind(schema_, references_, value);\n        }\n    }\n    // ----------------------------------------------------------------\n    // Compiler State\n    // ----------------------------------------------------------------\n    // prettier-ignore\n    const state = {\n        language: 'javascript', // target language\n        functions: new Map(), // local functions\n        variables: new Map(), // local variables\n        instances: new Map() // exterior kind instances\n    };\n    // ----------------------------------------------------------------\n    // Compiler Factory\n    // ----------------------------------------------------------------\n    function CreateExpression(schema, references, value, useHoisting = true) {\n        return `(${[...Visit(schema, references, value, useHoisting)].join(' && ')})`;\n    }\n    function CreateFunctionName($id) {\n        return `check_${Identifier.Encode($id)}`;\n    }\n    function CreateVariable(expression) {\n        const variableName = `local_${state.variables.size}`;\n        state.variables.set(variableName, `const ${variableName} = ${expression}`);\n        return variableName;\n    }\n    function CreateFunction(name, schema, references, value, useHoisting = true) {\n        const [newline, pad] = ['\\n', (length) => ''.padStart(length, ' ')];\n        const parameter = CreateParameter('value', 'any');\n        const returns = CreateReturns('boolean');\n        const expression = [...Visit(schema, references, value, useHoisting)].map((expression) => `${pad(4)}${expression}`).join(` &&${newline}`);\n        return `function ${name}(${parameter})${returns} {${newline}${pad(2)}return (${newline}${expression}${newline}${pad(2)})\\n}`;\n    }\n    function CreateParameter(name, type) {\n        const annotation = state.language === 'typescript' ? `: ${type}` : '';\n        return `${name}${annotation}`;\n    }\n    function CreateReturns(type) {\n        return state.language === 'typescript' ? `: ${type}` : '';\n    }\n    // ----------------------------------------------------------------\n    // Compile\n    // ----------------------------------------------------------------\n    function Build(schema, references, options) {\n        const functionCode = CreateFunction('check', schema, references, 'value'); // will populate functions and variables\n        const parameter = CreateParameter('value', 'any');\n        const returns = CreateReturns('boolean');\n        const functions = [...state.functions.values()];\n        const variables = [...state.variables.values()];\n        // prettier-ignore\n        const checkFunction = IsString(schema.$id) // ensure top level schemas with $id's are hoisted\n            ? `return function check(${parameter})${returns} {\\n  return ${CreateFunctionName(schema.$id)}(value)\\n}`\n            : `return ${functionCode}`;\n        return [...variables, ...functions, checkFunction].join('\\n');\n    }\n    /** Generates the code used to assert this type and returns it as a string */\n    function Code(...args) {\n        const defaults = { language: 'javascript' };\n        // prettier-ignore\n        const [schema, references, options] = (args.length === 2 && IsArray(args[1]) ? [args[0], args[1], defaults] :\n            args.length === 2 && !IsArray(args[1]) ? [args[0], [], args[1]] :\n                args.length === 3 ? [args[0], args[1], args[2]] :\n                    args.length === 1 ? [args[0], [], defaults] :\n                        [null, [], defaults]);\n        // compiler-reset\n        state.language = options.language;\n        state.variables.clear();\n        state.functions.clear();\n        state.instances.clear();\n        if (!IsSchema(schema))\n            throw new TypeCompilerTypeGuardError(schema);\n        for (const schema of references)\n            if (!IsSchema(schema))\n                throw new TypeCompilerTypeGuardError(schema);\n        return Build(schema, references, options);\n    }\n    TypeCompiler.Code = Code;\n    /** Compiles a TypeBox type for optimal runtime type checking. Types must be valid TypeBox types of TSchema */\n    function Compile(schema, references = []) {\n        const generatedCode = Code(schema, references, { language: 'javascript' });\n        const compiledFunction = globalThis.Function('kind', 'format', 'hash', generatedCode);\n        const instances = new Map(state.instances);\n        function typeRegistryFunction(kind, instance, value) {\n            if (!TypeRegistry.Has(kind) || !instances.has(instance))\n                return false;\n            const checkFunc = TypeRegistry.Get(kind);\n            const schema = instances.get(instance);\n            return checkFunc(schema, value);\n        }\n        function formatRegistryFunction(format, value) {\n            if (!FormatRegistry.Has(format))\n                return false;\n            const checkFunc = FormatRegistry.Get(format);\n            return checkFunc(value);\n        }\n        function hashFunction(value) {\n            return Hash(value);\n        }\n        const checkFunction = compiledFunction(typeRegistryFunction, formatRegistryFunction, hashFunction);\n        return new TypeCheck(schema, references, checkFunction, generatedCode);\n    }\n    TypeCompiler.Compile = Compile;\n})(TypeCompiler || (TypeCompiler = {}));\n","/**\n * Sourced from ajv-formats:\n * https://github.com/ajv-validator/ajv-formats/blob/master/src/formats.ts\n */\nconst DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/;\nconst DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst isLeapYear = (year) => {\n    // https://tools.ietf.org/html/rfc3339#appendix-C\n    return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n};\n/**\n * Validates that a string adheres to the `full-date` format from RFC 3339,\n * section 5.6.\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\n */\nexport const isDate = (str) => {\n    const matches = DATE.exec(str);\n    if (!matches)\n        return false;\n    const year = +matches[1];\n    const month = +matches[2];\n    const day = +matches[3];\n    return month >= 1 && month <= 12 && day >= 1 && day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month]);\n};\n//# sourceMappingURL=date.js.map","/**\n * Sourced from ajv-formats:\n * https://github.com/ajv-validator/ajv-formats/blob/master/src/formats.ts\n */\nconst TIME = /^(\\d\\d):(\\d\\d):(\\d\\d(?:\\.\\d+)?)(z|([+-])(\\d\\d)(?::?(\\d\\d))?)?$/i;\n/**\n * Validates that a string adheres to the `full-time` format from RFC 3339,\n * section 5.6.\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\n */\nexport const isTime = (str) => {\n    const matches = TIME.exec(str);\n    if (!matches)\n        return false;\n    const hr = +matches[1];\n    const min = +matches[2];\n    const sec = +matches[3];\n    const tz = matches[4];\n    const tzSign = matches[5] === '-' ? -1 : 1;\n    const tzH = +(matches[6] || 0);\n    const tzM = +(matches[7] || 0);\n    if (tzH > 23 || tzM > 59 || !tz)\n        return false;\n    if (hr <= 23 && min <= 59 && sec < 60)\n        return true;\n    // leap second\n    const utcMin = min - tzM * tzSign;\n    const utcHr = hr - tzH * tzSign - (utcMin < 0 ? 1 : 0);\n    return (utcHr === 23 || utcHr === -1) && (utcMin === 59 || utcMin === -1) && sec < 61;\n};\n//# sourceMappingURL=time.js.map","import { isDate } from './date.js';\nimport { isTime } from './time.js';\nconst DATE_TIME_SEPARATOR = /t|\\s/i;\n/**\n * Validates that a string adheres to the `date-time` format from RFC 3339,\n * section 5.6.\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\n */\nexport const isDateTime = (str) => {\n    // http://tools.ietf.org/html/rfc3339#section-5.6\n    const dateTime = str.split(DATE_TIME_SEPARATOR);\n    return dateTime.length === 2 && isDate(dateTime[0]) && isTime(dateTime[1]);\n};\n//# sourceMappingURL=date-time.js.map","/**\n * Sourced from ajv-formats:\n * https://github.com/ajv-validator/ajv-formats/blob/master/src/formats.ts\n */\nconst NOT_URI_FRAGMENT = /\\/|:/;\nconst URI = /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\n/**\n * Validates that a string adheres to the `URI` scheme listed in RFC 3986,\n * appendix A.\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#appendix-A\n */\nexport const isUri = (str) => {\n    // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n    return NOT_URI_FRAGMENT.test(str) && URI.test(str);\n};\n//# sourceMappingURL=uri.js.map","import { TypeSystem, TypeSystemDuplicateFormat } from '@sinclair/typebox/system';\nimport { isDateTime } from './date-time.js';\nimport { isDate } from './date.js';\nimport { isTime } from './time.js';\nimport { isUri } from './uri.js';\nconst FORMATS = [\n    ['date', isDate],\n    ['time', isTime],\n    ['date-time', isDateTime],\n    ['uri', isUri],\n];\nexport const registerFormats = () => {\n    for (const [name, fn] of FORMATS) {\n        // You _could_ use FormatRegistry directly, but this does not behave\n        // how you want when using TypeCompiler and importing these packages\n        // in downstream projects -- the compiled code will not be able to find\n        // the available formats correctly. Using the TypeSystem resolves this,\n        // but is more strict, and won't let you register the same format\n        // multiple times. In my experience this hasn't been a problem downstream,\n        // but it does happen during tests as we're compiling schemas many times.\n        // In our case it's perfectly fine to just ignore the duplicate error,\n        // since if we hit a duplicate it will just be the exact same thing we\n        // registered already.\n        try {\n            TypeSystem.Format(name, fn);\n        }\n        catch (e) {\n            if (e instanceof TypeSystemDuplicateFormat) {\n                continue;\n            }\n            throw e;\n        }\n    }\n};\n//# sourceMappingURL=register.js.map","export const asError = (error) => {\n    if (error instanceof Error) {\n        return error;\n    }\n    return new Error(String(error));\n};\n//# sourceMappingURL=as-error.js.map","import { err, ok } from '../result.js';\nimport { asError } from './as-error.js';\n/**\n * Wraps a function that can potentially throw an `Error` to instead return a\n * `Result`.\n */\nexport const safeFn = (fn) => {\n    return (...args) => {\n        try {\n            return ok(fn(...args));\n        }\n        catch (e) {\n            return err(asError(e));\n        }\n    };\n};\n/**\n * Wraps an async function that can potentially throw an `Error` to instead\n * return a `Promise<Result>`.\n */\nexport const safeAsyncFn = (fn) => {\n    return async (...args) => {\n        try {\n            const result = await fn(...args);\n            return ok(result);\n        }\n        catch (e) {\n            return err(asError(e));\n        }\n    };\n};\n//# sourceMappingURL=safe-fn.js.map","import { err, ok } from '@mappedin/safe-types/result';\nimport { safeFn } from '@mappedin/safe-types/result/safe-fn';\nimport { strToU8, zip, zipSync } from 'fflate';\nconst createZippable = safeFn((data, extensions) => {\n    const compressed = {};\n    for (const extension of extensions) {\n        for (const file of extension.intoBundle(data)) {\n            compressed[file.path] = strToU8(JSON.stringify(file.contents));\n        }\n    }\n    return compressed;\n});\nexport const compress = async (data, extensions, options) => {\n    return createZippable(data, extensions).andThenAsync((compressed) => new Promise((resolve) => {\n        zip(compressed, { ...options, consume: true }, (error, result) => {\n            if (error) {\n                resolve(err(error));\n            }\n            else {\n                resolve(ok(result));\n            }\n        });\n    }));\n};\nconst safeZipSync = safeFn(zipSync);\nexport const compressSync = (data, extensions, options) => {\n    return createZippable(data, extensions).andThen((compressed) => safeZipSync(compressed, options));\n};\n//# sourceMappingURL=compress.js.map","import { err, ok } from '@mappedin/safe-types/result';\nimport { safeFn } from '@mappedin/safe-types/result/safe-fn';\nimport { strFromU8, unzip, unzipSync } from 'fflate';\nimport { deepMergeOn } from '../locale/deep-merge.js';\nconst identity = (value) => value;\nconst jsonDecode = (data) => JSON.parse(strFromU8(data));\nconst isFileExpected = (fileInfo, extensions) => extensions.some((extension) => extension.fromBundle(fileInfo.name, new Uint8Array(), identity) !== undefined);\nconst processBundle = safeFn((data, extensions) => {\n    let result = {};\n    for (const filePath of Object.keys(data)) {\n        const fileData = data[filePath];\n        for (const extension of extensions) {\n            const decoded = extension.fromBundle(filePath, fileData, jsonDecode);\n            if (decoded) {\n                result = deepMergeOn(result, decoded, []);\n                break;\n            }\n        }\n    }\n    return result;\n});\nexport const decompress = async (data, extensions) => {\n    return new Promise((resolve) => unzip(data, {\n        filter: (info) => isFileExpected(info, extensions),\n    }, (error, data) => {\n        if (error) {\n            resolve(err(error));\n        }\n        else {\n            resolve(ok(data));\n        }\n    })).then((res) => res.andThen((decompressed) => processBundle(decompressed, extensions)));\n};\nconst safeUnzipSync = safeFn(unzipSync);\nexport const decompressSync = (data, extensions) => {\n    return safeUnzipSync(data, { filter: (info) => isFileExpected(info, extensions) }).andThen((unzipped) => processBundle(unzipped, extensions));\n};\n//# sourceMappingURL=decompress.js.map","const isRef = (thing) => {\n    return typeof thing === 'object' && thing != null && '$ref' in thing && typeof thing.$ref === 'string';\n};\nconst isDuplicateRef = (thing) => {\n    if (thing.length < 2) {\n        return false;\n    }\n    const things = thing.filter(isRef);\n    if (things.length !== thing.length) {\n        return false;\n    }\n    const reference = things[0].$ref;\n    return things.slice(1).every((v) => v.$ref === reference);\n};\n/**\n * Typebox seems to struggle with producing allOf arrays where there are two\n * elements which both contain references to the same element. This will search\n * a JSON document and look for these instances and replace them with a single\n * item.\n */\nexport const fixDuplicateAllOf = (thing) => {\n    if (typeof thing === 'object' &&\n        thing != null &&\n        'allOf' in thing &&\n        Array.isArray(thing.allOf) &&\n        isDuplicateRef(thing.allOf)) {\n        return thing.allOf[0];\n    }\n    else if (typeof thing === 'object' && thing != null && !Array.isArray(thing)) {\n        return Object.fromEntries(Object.entries(thing).map(([k, v]) => [k, fixDuplicateAllOf(v)]));\n    }\n    else if (Array.isArray(thing)) {\n        return thing.map(fixDuplicateAllOf);\n    }\n    else {\n        return thing;\n    }\n};\n//# sourceMappingURL=fix-duplicate-all-of.js.map","/**\n * Since we store the references in a \"definitions\" section inside the schema,\n * and Typebox isn't aware of where the references are, we have to update the\n * paths so they match correctly.\n */\nexport const prefixReferences = (thing) => {\n    if (typeof thing === 'object' && thing != null && '$ref' in thing) {\n        return { ...thing, $ref: `#/definitions/${thing.$ref}` };\n    }\n    else if (typeof thing === 'object' && thing != null && !Array.isArray(thing)) {\n        return Object.fromEntries(Object.entries(thing).map(([k, v]) => [k, prefixReferences(v)]));\n    }\n    else if (Array.isArray(thing)) {\n        return thing.map(prefixReferences);\n    }\n    else {\n        return thing;\n    }\n};\n//# sourceMappingURL=prefix-references.js.map","import { err, ok } from '@mappedin/safe-types/result';\nimport { FastTransformDecode } from '@mappedin/typebox-fast-transform/fast-decode';\nimport { FastTransformEncode } from '@mappedin/typebox-fast-transform/fast-encode';\nimport { Type, TypeBoxError, TypeGuard, } from '@sinclair/typebox';\nimport { TypeCompiler } from '@sinclair/typebox/compiler';\nimport { Value } from '@sinclair/typebox/value';\nimport { GeoJSON } from './core/geojson/geojson.js';\nimport { Identifiers } from './core/identifiers/identifiers.js';\nimport { intoCompressError } from './errors/compress.js';\nimport { intoDecompressError } from './errors/decompress.js';\nimport { registerFormats } from './formats/register.js';\nimport { GeometryAnchorReferences } from './index.js';\nimport { DetailsReferences } from './utility-types/details/details.js';\nimport { ExtraReferences } from './utility-types/extra/extra.js';\nimport { WithGeometryIdReferences } from './utility-types/geometry-id/geometry-id.js';\nimport { compress as _compress, compressSync as _compressSync } from './utils/bundling/compress.js';\nimport { decompress as _decompress, decompressSync as _decompressSync } from './utils/bundling/decompress.js';\nimport { fixDuplicateAllOf } from './utils/fix-duplicate-all-of.js';\nimport { prefixReferences } from './utils/prefix-references.js';\nexport var CreateMVFParserErrorKind;\n(function (CreateMVFParserErrorKind) {\n    CreateMVFParserErrorKind[\"InvalidTypeboxSchema\"] = \"InvalidTypeboxSchema\";\n    CreateMVFParserErrorKind[\"MissingReferenceId\"] = \"MissingReferenceId\";\n    CreateMVFParserErrorKind[\"DuplicateReferenceId\"] = \"DuplicateReferenceId\";\n    CreateMVFParserErrorKind[\"TypeboxError\"] = \"TypeboxError\";\n    CreateMVFParserErrorKind[\"UnknownError\"] = \"UnknownError\";\n})(CreateMVFParserErrorKind || (CreateMVFParserErrorKind = {}));\nconst join = (iterators) => {\n    const iter = {\n        next() {\n            for (const iterator of iterators) {\n                const result = iterator.next();\n                if (!result.done) {\n                    return result;\n                }\n            }\n            return { done: true, value: undefined };\n        },\n        [Symbol.iterator]() {\n            return this;\n        },\n    };\n    return iter;\n};\nexport const computeReferenceMap = (...schemas) => {\n    const referenceMap = new Map();\n    for (const schema of join(schemas)) {\n        if (!schema.$id) {\n            continue;\n        }\n        const existing = referenceMap.get(schema.$id);\n        if (existing != null && existing !== schema) {\n            return err({\n                kind: CreateMVFParserErrorKind.DuplicateReferenceId,\n                message: 'Failed to register a reference for a schema with an $id that has already been used',\n                schema,\n            });\n        }\n        referenceMap.set(schema.$id, schema);\n    }\n    return ok(referenceMap);\n};\n/**\n * A class that represents an MVF parser. This is not intended to be used\n * directly -- you most likely want to use an {@link MVFParserBuilder}, and\n * use the `build` method to produce a parser.\n */\nexport class MVFParser {\n    #schema;\n    #compiled;\n    #extensions = [];\n    #referenceMap;\n    constructor(schema, compiled, extensions, referenceMap) {\n        this.#schema = schema;\n        this.#compiled = compiled;\n        this.#extensions = extensions;\n        this.#referenceMap = referenceMap;\n        this.is = this.is.bind(this);\n        this.parse = this.parse.bind(this);\n        this.verify = this.verify.bind(this);\n        this.jsonSchema = this.jsonSchema.bind(this);\n        this.compress = this.compress.bind(this);\n        this.decompress = this.decompress.bind(this);\n    }\n    /**\n     * Instantiates a new MVF parser class. It's not recommended to use this\n     * directly -- you most likely want to use an {@link MVFParserBuilder},\n     * generally via {@link createParser}, and use the `build` method to produce\n     * a parser.\n     *\n     * @param builder - An {@link MVFParserBuilder} instance\n     * @param schemaId - The $id to use for the schema. Defaults to `CoreMVF`.\n     * @param cspSafe - Whether to construct a parser compatible with\n     * `unsafe-eval` CSP rules. This will reduce the performance of checks, and\n     * is not recommended.\n     */\n    static create(builder, schemaId = 'CoreMVF', cspSafe = false) {\n        const mergedSchema = Type.Composite(builder.extensions.map((extension) => extension.schema), {\n            $id: schemaId,\n        });\n        if (!TypeGuard.IsSchema(mergedSchema)) {\n            return err({\n                kind: CreateMVFParserErrorKind.InvalidTypeboxSchema,\n                message: 'Attempting to merge schemas produced an invalid schema',\n                schema: mergedSchema,\n            });\n        }\n        const referenceMap = computeReferenceMap(GeoJSON.values(), Identifiers.values(), DetailsReferences.values(), ExtraReferences.values(), GeometryAnchorReferences.values(), WithGeometryIdReferences.values(), builder.extensions.flatMap((extension) => extension.references ?? []).values());\n        if (!referenceMap.isOk()) {\n            return referenceMap;\n        }\n        try {\n            registerFormats();\n            const compiled = cspSafe ? null : TypeCompiler.Compile(mergedSchema, [...referenceMap.value.values()]);\n            // @ts-ignore Nothing to see here\n            return ok(new MVFParser(mergedSchema, compiled, builder.extensions, referenceMap.value));\n        }\n        catch (e) {\n            if (e instanceof TypeBoxError) {\n                return err({\n                    kind: CreateMVFParserErrorKind.TypeboxError,\n                    message: e.message,\n                    original: e,\n                });\n            }\n            return err({\n                kind: CreateMVFParserErrorKind.UnknownError,\n                message: 'An unknown error occurred while compiling the schema',\n                original: e,\n            });\n        }\n    }\n    /**\n     * Checks if a given value is valid against the schema. This should not be\n     * used for data that has already been decoded.\n     *\n     * @param content - The value to check.\n     */\n    is(content) {\n        return this.#compiled?.Check(content) ?? Value.Check(this.#schema, [...this.#referenceMap.values()], content);\n    }\n    /**\n     * Parses a given value against the schema. Similar utility to {@link is},\n     * but returns a {@link ParseResult} to be able to inspect errors if that\n     * is desired. This should not be used for data that has already been\n     * decoded.\n     *\n     * @param content - The value to parse.\n     */\n    parse(content) {\n        if (this.is(content)) {\n            return ok(content);\n        }\n        return err(this.#compiled?.Errors(content) ?? Value.Errors(this.#schema, [...this.#referenceMap.values()], content));\n    }\n    /**\n     * Transforms a given value into the decoded form of the schema. This is\n     * automatically done in the {@link decompress} method, so this should only\n     * be required in cases where you need to transform the value outside of the\n     * decompression process.\n     *\n     * @param content - The value to transform.\n     */\n    decode(content) {\n        // Internally, #compiled.Decode runs the check function, which isn't\n        // intended by this API (which assumes you already have something\n        // passing when you call it). So, we use FastTransformDecode directly.\n        try {\n            return ok(FastTransformDecode(this.#schema, [...this.#referenceMap.values()], content));\n        }\n        catch (e) {\n            // This is safe as Typebox wraps any error that throws during the\n            // decode process in a TransformDecodeError, so this is guaranteed\n            // to be the only kind of exception.\n            return err(e);\n        }\n    }\n    /**\n     * Encodes a given value into the encoded form of the schema. This is\n     * automatically done in the {@link compress} method, so this should only\n     * be required in cases where you need to transform the value outside of the\n     * compression process.\n     */\n    encode(content) {\n        // #compiled.Encode has similar behaviour to #compiled.Decode, so we\n        // use FastTransformEncode directly.\n        try {\n            return ok(FastTransformEncode(this.#schema, [...this.#referenceMap.values()], content));\n        }\n        catch (e) {\n            return err(e);\n        }\n    }\n    /**\n     * Verifies the integrity of a given value against the rules of each\n     * extension used by the parser. This is intended for use on data that\n     * already matches the shape of the schema, but may have invalid references\n     * between extensions / other checks that aren't possible to embed in the\n     * schema.\n     *\n     * @param content - The value to verify.\n     */\n    verify(content) {\n        for (const extension of this.#extensions) {\n            if (extension.integrityCheck) {\n                // Not going to pass because we have to \"lose\" the type info for\n                // individual extensions.\n                // @ts-expect-error\n                const result = extension.integrityCheck(content);\n                if (result.isErr()) {\n                    return err(result.error);\n                }\n            }\n        }\n        return ok(true);\n    }\n    /**\n     * Returns a JSON schema representation of the parser's schema. This is\n     * useful for cases where you need a standard format to validate data where\n     * the parser isn't functional (i.e. other libraries or languages). This can\n     * also be useful for AOT complication of the validation functions via AJV\n     * or a similar tool.\n     */\n    jsonSchema() {\n        const normalizedReferences = JSON.parse(JSON.stringify([this.#schema, ...this.#referenceMap.values()]));\n        const schema = fixDuplicateAllOf(prefixReferences({\n            $id: `#/definitions/${this.#schema.$id ?? 'CoreMVF'}`,\n            $schema: 'http://json-schema.org/draft-07/schema#',\n            references: normalizedReferences,\n        }));\n        return JSON.stringify(schema, null, 2);\n    }\n    /**\n     * Compresses data into a binary format. At present, this will always be a\n     * .zip file. This requires your execution environment to support workers,\n     * which is most modern browser / Node.js environments.\n     *\n     * @param data - The data to compress.\n     */\n    async compress(data) {\n        return this.encode(data)\n            .andThen((d) => this.parse(d))\n            .andThenAsync((encoded) => _compress(encoded, this.#extensions))\n            .then((res) => res.mapErr((e) => intoCompressError(this.#schema.$id ?? 'CoreMVF', e, [...this.#referenceMap.values()])));\n    }\n    /**\n     * An unsafe variant of {@link compress} that does not validate the contents\n     * of the compressed data. This is useful for cases where you know the data\n     * is valid, or you do not care about the validity of the data, and you want\n     * to avoid the overhead of validation.\n     *\n     * This should generally be avoided -- in most circumstances where\n     * compression is used, the performance hit of validation is negligible, and\n     * should be required especially if {@link decompressUnsafe} is used on the\n     * consumption end.\n     */\n    async compressUnsafe(data) {\n        return this.encode(data)\n            .andThenAsync((encoded) => _compress(encoded, this.#extensions))\n            .then((res) => res.mapErr((e) => intoCompressError(this.#schema.$id ?? 'CoreMVF', e, [...this.#referenceMap.values()])));\n    }\n    /**\n     * A synchronous variant of {@link compress}. This may be preferred in\n     * environments where workers are not supported or you do not want to change\n     * existing code to be asynchronous.\n     *\n     * Note: There is a performance penalty that scales relative to the size\n     * of the data to be compressed.\n     */\n    compressSync(data) {\n        return this.encode(data)\n            .andThen((encoded) => this.parse(encoded))\n            .andThen((encoded) => _compressSync(encoded, this.#extensions))\n            .mapErr((e) => intoCompressError(this.#schema.$id ?? 'CoreMVF', e, [...this.#referenceMap.values()]));\n    }\n    /**\n     * A synchronous variant of {@link compressUnsafe}. This may be preferred in\n     * environments where workers are not supported or you do not want to change\n     * existing code to be asynchronous.\n     *\n     * Note: There is a performance penalty that scales relative to the size\n     * of the data to be compressed.\n     */\n    compressUnsafeSync(data) {\n        return this.encode(data)\n            .andThen((encoded) => _compressSync(encoded, this.#extensions))\n            .mapErr((e) => intoCompressError(this.#schema.$id ?? 'CoreMVF', e, [...this.#referenceMap.values()]));\n    }\n    /**\n     * Decompresses data from a binary format into native objects. This is only\n     * expected to consume .zip files at present, and will fail if given data\n     * in an unknown format. This requires your execution environment to support\n     * workers, which is most modern browser / Node.js environments.\n     *\n     * @param data - The data to decompress.\n     */\n    async decompress(data) {\n        return _decompress(data, this.#extensions).then((decompressed) => decompressed\n            .andThen((d) => this.parse(d))\n            .andThen((d) => this.decode(d))\n            .mapErr((e) => intoDecompressError(this.#schema.$id ?? 'CoreMVF', e, [...this.#referenceMap.values()])));\n    }\n    /**\n     * An unsafe variant of {@link decompress} that does not validate the\n     * contents of the decompressed data. This is useful for cases where you\n     * know the data is valid, or you do not care about the validity of the\n     * data, and you want to avoid the overhead of validation. Note that\n     * data must still be decoded, so this can produce unexpected results if the\n     * data does not match the shape of the schema.\n     *\n     * @param data - The data to decompress.\n     */\n    async decompressUnsafe(data) {\n        return _decompress(data, this.#extensions).then((decompressed) => decompressed\n            .andThen((d) => this.decode(d))\n            .mapErr((e) => intoDecompressError(this.#schema.$id ?? 'CoreMVF', e, [...this.#referenceMap.values()])));\n    }\n    /**\n     * A synchronous variant of {@link decompress}. This may be preferred in\n     * environments where workers are not supported or you do not want to change\n     * existing code to be asynchronous.\n     *\n     * Note: There is a performance penalty that scales relative to the size\n     * of the data to be decompressed.\n     */\n    decompressSync(data) {\n        return _decompressSync(data, this.#extensions)\n            .andThen((d) => this.parse(d))\n            .andThen((d) => this.decode(d))\n            .mapErr((e) => intoDecompressError(this.#schema.$id ?? 'CoreMVF', e, [...this.#referenceMap.values()]));\n    }\n    /**\n     * A synchronous variant of {@link decompressUnsafe}. This may be preferred in\n     * environments where workers are not supported or you do not want to change\n     * existing code to be asynchronous.\n     *\n     * Note: There is a performance penalty that scales relative to the size\n     * of the data to be decompressed.\n     */\n    decompressUnsafeSync(data) {\n        return _decompressSync(data, this.#extensions)\n            .andThen((d) => this.decode(d))\n            .mapErr((e) => intoDecompressError(this.#schema.$id ?? 'CoreMVF', e, [...this.#referenceMap.values()]));\n    }\n}\n//# sourceMappingURL=parser.js.map","import { Type } from '@sinclair/typebox';\nimport { MVFParser } from './parser.js';\nexport class MVFParserBuilder {\n    #extensions = [];\n    constructor() {\n        this.extend = this.extend.bind(this);\n    }\n    extend(extension) {\n        this.#extensions.push(extension);\n        return this;\n    }\n    extendOptional(extension) {\n        // @ts-expect-error: I swear this is okay..\n        const partialExtension = {\n            ...extension,\n            schema: Type.Partial(extension.schema),\n        };\n        this.#extensions.push(partialExtension);\n        return this;\n    }\n    build(options) {\n        return MVFParser.create(this, undefined, options?.cspSafe);\n    }\n    get extensions() {\n        return this.#extensions;\n    }\n}\n//# sourceMappingURL=parser.builder.js.map","/**\n *\n *\n * @see {@link _mappedin_mvf-core}\n *\n * @module mvf-core\n * @packageDocumentation\n */\nimport { FloorsExtension } from './core/floors/floors.js';\nimport { GeometryExtension } from './core/geometry/geometry.js';\nimport { ManifestExtension } from './core/manifest/manifest.js';\nimport { MVFParserBuilder } from './parser.builder.js';\nexport * from './core/index.js';\nexport * from './errors/index.js';\nexport * from './utility-types/index.js';\nexport * from './parser.js';\nexport * from './utils/locale/index.js';\nexport const createParser = () => {\n    return new MVFParserBuilder().extend(FloorsExtension).extend(GeometryExtension).extend(ManifestExtension);\n};\nexport { MVFParserBuilder, } from './parser.builder.js';\n//# sourceMappingURL=index.js.map","import { WithExtra, WithRequiredDetails } from '@mappedin/mvf-core';\nimport { Ident } from '@mappedin/mvf-core/identifiers';\nimport { Type } from '@sinclair/typebox';\n/**\n * A unique identifier for location categories.\n *\n * **Important**: While the suffix can be any length, it is strongly recommended to use\n * suffixes of at least 8 characters to ensure uniqueness and avoid collisions.\n */\nexport const LocationCategoryId = Ident('lcat', 'LocationCategoryId');\nexport const LocationCategory = Type.Intersect([\n    Type.Object({\n        id: Type.Ref(LocationCategoryId),\n        parent: Type.Optional(Type.Ref(LocationCategoryId)),\n    }),\n    WithRequiredDetails(['name']),\n    WithExtra,\n], { $id: 'LocationCategory' });\nexport const CategoryReferences = [LocationCategoryId, LocationCategory];\n//# sourceMappingURL=category.js.map","export var LocationsIntegrityErrorKind;\n(function (LocationsIntegrityErrorKind) {\n    LocationsIntegrityErrorKind[\"UnknownCategoryError\"] = \"UnknownCategoryError\";\n    LocationsIntegrityErrorKind[\"UnknownParentCategoryError\"] = \"UnknownParentCategoryError\";\n    LocationsIntegrityErrorKind[\"UnknownParentLocationError\"] = \"UnknownParentLocationError\";\n})(LocationsIntegrityErrorKind || (LocationsIntegrityErrorKind = {}));\n//# sourceMappingURL=error.js.map","import { createGeometryLookup } from '@mappedin/mvf-core/geometry';\nimport { ensureUniqueIds } from '@mappedin/mvf-core/utils';\nimport { err, ok } from '@mappedin/safe-types/result';\nimport { LocationsIntegrityErrorKind } from './error.js';\nexport const validateLocations = (data) => {\n    if (data.locationCategories == null && data.locations == null) {\n        return ok(true);\n    }\n    if (data.locationCategories != null) {\n        const uniqueCategoryIds = ensureUniqueIds(data.locationCategories, (category) => category.id, 'locationCategories');\n        if (uniqueCategoryIds.isErr()) {\n            return uniqueCategoryIds;\n        }\n    }\n    if (data.locations != null) {\n        const uniqueLocationIds = ensureUniqueIds(data.locations, (location) => location.id, 'locations');\n        if (uniqueLocationIds.isErr()) {\n            return uniqueLocationIds;\n        }\n    }\n    if (data.locationInstances != null) {\n        const uniqueInstanceIds = ensureUniqueIds(data.locationInstances, (instance) => instance.id, 'locationInstances');\n        if (uniqueInstanceIds.isErr()) {\n            return uniqueInstanceIds;\n        }\n    }\n    const knownCategoryIds = new Set(data.locationCategories?.map((category) => category.id) ?? []);\n    for (const category of data.locationCategories ?? []) {\n        if (category.parent == null) {\n            continue;\n        }\n        if (!knownCategoryIds.has(category.parent)) {\n            return err({\n                kind: LocationsIntegrityErrorKind.UnknownParentCategoryError,\n                properties: { categoryId: category.id, parentCategoryId: category.parent },\n            });\n        }\n    }\n    const geometryLookup = createGeometryLookup(data);\n    for (const location of data.locations ?? []) {\n        for (const category of location.categories) {\n            if (!knownCategoryIds.has(category)) {\n                return err({\n                    kind: LocationsIntegrityErrorKind.UnknownCategoryError,\n                    properties: { locationId: location.id, categoryId: category },\n                });\n            }\n        }\n        for (const anchor of location.geometryAnchors) {\n            const geometry = geometryLookup(anchor.floorId, anchor.geometryId);\n            if (geometry.isErr()) {\n                return geometry;\n            }\n        }\n    }\n    // Check location instances\n    const knownLocationIds = new Set(data.locations?.map((location) => location.id) ?? []);\n    for (const instance of data.locationInstances ?? []) {\n        if (!knownLocationIds.has(instance.parentId)) {\n            return err({\n                kind: LocationsIntegrityErrorKind.UnknownParentLocationError,\n                properties: { locationInstanceId: instance.id, parentLocationId: instance.parentId },\n            });\n        }\n        for (const category of instance.categories ?? []) {\n            if (!knownCategoryIds.has(category)) {\n                return err({\n                    kind: LocationsIntegrityErrorKind.UnknownCategoryError,\n                    properties: { locationId: instance.id, categoryId: category },\n                });\n            }\n        }\n        for (const anchor of instance.geometryAnchors ?? []) {\n            const geometry = geometryLookup(anchor.floorId, anchor.geometryId);\n            if (geometry.isErr()) {\n                return geometry;\n            }\n        }\n    }\n    return ok(true);\n};\n//# sourceMappingURL=integrity.js.map","import { WithDetails, WithExtra, WithGeometryAnchors, WithRequiredDetails } from '@mappedin/mvf-core';\nimport { Ident } from '@mappedin/mvf-core/identifiers';\nimport { Type } from '@sinclair/typebox';\nimport { LocationCategoryId } from './category.js';\n/**\n * A unique identifier for locations.\n *\n * **Important**: While the suffix can be any length, it is strongly recommended to use\n * suffixes of at least 8 characters to ensure uniqueness and avoid collisions.\n */\nexport const LocationId = Ident('loc', 'LocationId');\n/**\n * A unique identifier for location instances.\n *\n * **Important**: While the suffix can be any length, it is strongly recommended to use\n * suffixes of at least 8 characters to ensure uniqueness and avoid collisions.\n */\nexport const LocationInstanceId = Ident('loci', 'LocationInstanceId');\nexport const LocationSocial = Type.Object({\n    name: Type.String(),\n    url: Type.String({ format: 'uri' }),\n}, { $id: 'LocationSocial' });\nexport const LocationImage = Type.Object({\n    url: Type.String({ format: 'uri' }),\n}, { $id: 'LocationImage' });\nexport const LocationLink = Type.Object({\n    label: Type.String(),\n    url: Type.String({ format: 'uri' }),\n}, { $id: 'LocationLink' });\n/**\n * A time in the format of HH:MM:SS\n *\n * @pattern ^[0-2][0-9]:[0-6][0-9](:[0-6][0-9])?$\n */\nexport const OpeningHoursTime = Type.String({\n    pattern: '^[0-2][0-9]:[0-6][0-9](:[0-6][0-9])?$',\n    $id: 'OpeningHoursTime',\n});\nexport const OpeningHoursDay = Type.Union([\n    Type.Literal('Sunday'),\n    Type.Literal('Monday'),\n    Type.Literal('Tuesday'),\n    Type.Literal('Wednesday'),\n    Type.Literal('Thursday'),\n    Type.Literal('Friday'),\n    Type.Literal('Saturday'),\n], { $id: 'OpeningHoursDay' });\nexport const PUBLIC_HOLIDAYS = 'PublicHolidays';\nexport const OpeningHoursDayOrPublicHoliday = Type.Union([OpeningHoursDay, Type.Literal(PUBLIC_HOLIDAYS)], {\n    $id: 'OpeningHoursDayOrPublicHoliday',\n});\n/**\n * We (almost) follow this schema (http://schema.org/OpeningHoursSpecification)\n * The only difference is that we (like Google: https://developers.google.com/search/docs/data-types/local-businesses)\n * accept dayOfWeek as an array as well as an individual day.\n *\n * Behavioral notes:\n * - if the \"opens\" property is not present, the location is closed, and the closes\n * property is ignored (Schema.org style)\n * - if opens/closes are both set to 00:00, the location is closed (Google style)\n * - If special hours do not specifiy certain weekdays being open, those weekdays are closed.\n * - Not specifying dayOfWeek is equivalent to specifying every day of the week.\n * - we will omit the '@type' property when producing MVFs. But we won't reject 3rd party MVFs\n * that include it.\n * */\nexport const OpeningHoursSpecification = Type.Object({\n    /**\n     * The type of opening hours\n     *\n     * @default 'OpeningHoursSpecification'\n     */\n    '@type': Type.Optional(Type.Literal('OpeningHoursSpecification', { description: 'The type of opening hours' })),\n    /**\n     * The time the opening hours start\n     */\n    opens: Type.Optional(Type.Ref(OpeningHoursTime, { description: 'The time the opening hours start' })),\n    /**\n     * The time the opening hours end\n     */\n    closes: Type.Optional(Type.Ref(OpeningHoursTime, { description: 'The time the opening hours end' })),\n    /**\n     * The days of the week the opening hours apply to\n     */\n    dayOfWeek: Type.Optional(Type.Union([Type.Ref(OpeningHoursDayOrPublicHoliday), Type.Array(Type.Ref(OpeningHoursDayOrPublicHoliday))], {\n        description: 'The days of the week the opening hours apply to',\n    })),\n    /**\n     * The date the opening hours start, in ISO 8601 format\n     * @format date-time\n     */\n    validFrom: Type.Optional(Type.String({ format: 'date', description: 'The date the opening hours start, in ISO 8601 format' })),\n    /**\n     * The date the opening hours end, in ISO 8601 format\n     * @format date-time\n     */\n    validThrough: Type.Optional(Type.String({ format: 'date', description: 'The date the opening hours end, in ISO 8601 format' })),\n}, { $id: 'OpeningHoursSpecification' });\nexport const Location = Type.Intersect([\n    Type.Object({\n        /**\n         * The ID of the location.\n         */\n        id: Type.Ref(LocationId),\n        /**\n         * The {@link LocationCategory}s of the location.\n         */\n        categories: Type.Array(Type.Ref(LocationCategoryId)),\n        /**\n         * The logo for the location. Different from {@link Details.icon},\n         * or `images`\n         */\n        logo: Type.Optional(Type.String({ format: 'uri' })),\n        /**\n         * The phone number of the location.\n         */\n        phone: Type.Optional(Type.String()),\n        /**\n         * The social media accounts of the location.\n         */\n        social: Type.Array(Type.Ref(LocationSocial)),\n        /**\n         * Images for and usually of the location. Usually\n         * photos.\n         */\n        images: Type.Array(Type.Ref(LocationImage)),\n        /**\n         * Links to other information about the location.\n         */\n        links: Type.Array(Type.Ref(LocationLink)),\n        /**\n         * A link to the website of the location.\n         */\n        website: Type.Optional(Type.Ref(LocationLink)),\n        /**\n         * The opening hours of the location.\n         */\n        openingHours: Type.Optional(Type.Array(Type.Ref(OpeningHoursSpecification))),\n        /**\n         * Search tags are used primarily as keywords to match against when searching.\n         * They are typically not used for display.\n         */\n        searchTags: Type.Optional(Type.Array(Type.String({ minLength: 1 }))),\n    }),\n    WithRequiredDetails(['name']),\n    WithGeometryAnchors(),\n    WithExtra,\n], { $id: 'Location' });\n/**\n * A location instance is a particular instance of an location that has some\n * properties different from the parent. Eg, it may have different hours, or a\n * slightly different name.\n *\n * A location instance:\n * - MUST have a parentId, referring to a Location.\n * - MUST have a unique ID, for localization to work.\n * - SHOULD have AT LEAST ONE polygon or node to anchor it in space.\n * - SHOULD have AT LEAST ONE other Location property set.\n *\n * It is otherwise a Partial<Location>\n *\n * NOTE: Unlike Location, details.name is optional.\n *\n * Usage examples:\n * - A location instance for a location with a different externalId so a customer can identify them individually.\n * - A location instance with different operationHours, that might indicate different hours for that particular entrance.\n */\nexport const LocationInstance = Type.Intersect([\n    Type.Object({\n        id: Type.Ref(LocationInstanceId),\n        parentId: Type.Ref(LocationId),\n    }),\n    Type.Partial(Type.Omit(Location, ['id', 'parentId', 'details'])),\n    WithDetails,\n], {\n    $id: 'LocationInstance',\n    description: 'A location instance is a particular instance of an location that has some properties different from the parent.',\n});\nexport const LocationReferences = [\n    LocationId,\n    LocationInstanceId,\n    LocationSocial,\n    LocationImage,\n    LocationLink,\n    OpeningHoursTime,\n    OpeningHoursDay,\n    OpeningHoursDayOrPublicHoliday,\n    OpeningHoursSpecification,\n    Location,\n    LocationInstance,\n];\n//# sourceMappingURL=location.js.map","import { Type } from '@sinclair/typebox';\nimport { CategoryReferences, LocationCategory } from './category.js';\nimport { validateLocations } from './integrity.js';\nimport { Location, LocationInstance, LocationReferences } from './location.js';\nexport * from './location.js';\nexport * from './category.js';\nexport const LocationsExtensionSchema = Type.Object({\n    locations: Type.Array(Type.Ref(Location)),\n    locationCategories: Type.Array(Type.Ref(LocationCategory)),\n    locationInstances: Type.Optional(Type.Array(Type.Ref(LocationInstance))),\n}, { $id: 'LocationsExtensionSchema' });\nconst LocationsFilePath = 'locations.json';\nconst LocationCategoriesFilePath = 'location-categories.json';\nconst LocationInstancesFilePath = 'location-instances.json';\nexport const LocationsExtension = {\n    name: 'ext:locations',\n    schema: LocationsExtensionSchema,\n    intoBundle: function* (data) {\n        if (data.locations != null) {\n            yield { path: LocationsFilePath, contents: data.locations };\n        }\n        if (data.locationCategories != null) {\n            yield { path: LocationCategoriesFilePath, contents: data.locationCategories };\n        }\n        if (data.locationInstances != null) {\n            yield { path: LocationInstancesFilePath, contents: data.locationInstances };\n        }\n    },\n    fromBundle: (path, contents, decode) => {\n        if (path === LocationsFilePath) {\n            return { locations: decode(contents) };\n        }\n        else if (path === LocationCategoriesFilePath) {\n            return { locationCategories: decode(contents) };\n        }\n        else if (path === LocationInstancesFilePath) {\n            return { locationInstances: decode(contents) };\n        }\n    },\n    references: [...CategoryReferences, ...LocationReferences],\n    integrityCheck: validateLocations,\n};\nexport { LocationsIntegrityErrorKind } from './error.js';\n//# sourceMappingURL=index.js.map","export var EnterpriseIntegrityErrorKind;\n(function (EnterpriseIntegrityErrorKind) {\n    EnterpriseIntegrityErrorKind[\"EnterpriseLocationWithUnknownLocationError\"] = \"EnterpriseLocationWithUnknownLocationError\";\n    EnterpriseIntegrityErrorKind[\"EnterpriseCategoryWithUnknownLocationCategoryError\"] = \"EnterpriseCategoryWithUnknownLocationCategoryError\";\n    EnterpriseIntegrityErrorKind[\"InstanceWithUnknownLocationInstanceError\"] = \"InstanceWithUnknownLocationInstanceError\";\n    EnterpriseIntegrityErrorKind[\"InstanceWithUnknownEnterpriseLocationError\"] = \"InstanceWithUnknownEnterpriseLocationError\";\n    EnterpriseIntegrityErrorKind[\"EnterpriseLocationWithUnknownSibling\"] = \"EnterpriseLocationWithUnknownSibling\";\n    EnterpriseIntegrityErrorKind[\"EnterpriseLocationInstanceWithUnknownSibling\"] = \"EnterpriseLocationInstanceWithUnknownSibling\";\n    EnterpriseIntegrityErrorKind[\"EnterpriseVenueWithUnknownTopLocationError\"] = \"EnterpriseVenueWithUnknownTopLocationError\";\n    EnterpriseIntegrityErrorKind[\"EnterpriseLocationWithInvalidPrimaryCategory\"] = \"EnterpriseLocationWithInvalidPrimaryCategory\";\n})(EnterpriseIntegrityErrorKind || (EnterpriseIntegrityErrorKind = {}));\n//# sourceMappingURL=error.js.map","import { createFloorLookup, createGeometryLookup } from '@mappedin/mvf-core';\nimport { ensureUniqueIds, typedEntries, typedKeys } from '@mappedin/mvf-core/utils';\nimport { err, ok } from '@mappedin/safe-types/result';\nimport { EnterpriseIntegrityErrorKind } from './error.js';\nexport const validateCMS = (data) => {\n    if (data.cms == null) {\n        return ok(true);\n    }\n    const cms = data.cms;\n    // EnterpriseCategories validation\n    const uniqueCategories = ensureUniqueIds(data.cms.categories, (category) => category.id, 'cms.categories');\n    if (uniqueCategories.isErr()) {\n        return uniqueCategories;\n    }\n    const knownCategoryIds = new Set(data.locationCategories?.map((category) => category.id) ?? []);\n    for (const category of cms.categories ?? []) {\n        if (!knownCategoryIds.has(category.categoryId)) {\n            return err({\n                kind: EnterpriseIntegrityErrorKind.EnterpriseCategoryWithUnknownLocationCategoryError,\n                properties: { enterpriseCategoryId: category.id, locationCategoryId: category.categoryId },\n            });\n        }\n    }\n    // EnterpriseLocations validation\n    const uniqueLocations = ensureUniqueIds(data.cms.locations, (location) => location.id, 'cms.locations');\n    if (uniqueLocations.isErr()) {\n        return uniqueLocations;\n    }\n    const locationDataMap = new Map(data.locations?.map((location) => [location.id, location]) ?? []);\n    for (const location of cms.locations ?? []) {\n        if (!locationDataMap.has(location.locationId)) {\n            return err({\n                kind: EnterpriseIntegrityErrorKind.EnterpriseLocationWithUnknownLocationError,\n                properties: { enterpriseLocationId: location.id, locationId: location.locationId },\n            });\n        }\n        for (const siblingGroup of location.siblingGroups ?? []) {\n            for (const id of siblingGroup.siblings ?? []) {\n                if (!locationDataMap.has(id)) {\n                    return err({\n                        kind: EnterpriseIntegrityErrorKind.EnterpriseLocationWithUnknownSibling,\n                        properties: { enterpriseLocationId: location.id, siblingLocationId: id, label: siblingGroup.label },\n                    });\n                }\n            }\n        }\n        // Validate primaryCategory exists in the Location's categories\n        if (location.primaryCategory != null) {\n            const locationData = locationDataMap.get(location.locationId);\n            if (locationData != null && !locationData.categories.includes(location.primaryCategory)) {\n                return err({\n                    kind: EnterpriseIntegrityErrorKind.EnterpriseLocationWithInvalidPrimaryCategory,\n                    properties: {\n                        enterpriseLocationId: location.id,\n                        locationId: location.locationId,\n                        primaryCategory: location.primaryCategory,\n                    },\n                });\n            }\n        }\n    }\n    // EnterpriseVenue validation\n    if (cms.venue?.topLocations != null) {\n        for (const topLocation of cms.venue.topLocations) {\n            if (!locationDataMap.has(topLocation)) {\n                return err({\n                    kind: EnterpriseIntegrityErrorKind.EnterpriseVenueWithUnknownTopLocationError,\n                    properties: { locationId: topLocation },\n                });\n            }\n        }\n    }\n    const knownEnterpriseLocationIds = new Set(data.cms.locations?.map((location) => location.id) ?? []);\n    // EnterpriseLocationInstances validation\n    const uniqueLocationInstances = ensureUniqueIds(data.cms.locationInstances, (locationInstance) => locationInstance.id, 'cms.locationInstances');\n    if (uniqueLocationInstances.isErr()) {\n        return uniqueLocationInstances;\n    }\n    const knownLocationInstanceIds = new Set(data.locationInstances?.map((locationInstance) => locationInstance.id) ?? []);\n    for (const locationInstance of cms.locationInstances ?? []) {\n        if (!knownEnterpriseLocationIds.has(locationInstance.parentId)) {\n            return err({\n                kind: EnterpriseIntegrityErrorKind.InstanceWithUnknownEnterpriseLocationError,\n                properties: {\n                    enterpriseLocationInstanceId: locationInstance.id,\n                    enterpriseLocationId: locationInstance.parentId,\n                },\n            });\n        }\n        if (!knownLocationInstanceIds.has(locationInstance.locationInstanceId)) {\n            return err({\n                kind: EnterpriseIntegrityErrorKind.InstanceWithUnknownLocationInstanceError,\n                properties: {\n                    enterpriseLocationInstanceId: locationInstance.id,\n                    locationInstanceId: locationInstance.locationInstanceId,\n                },\n            });\n        }\n        for (const siblingGroup of locationInstance.siblingGroups ?? []) {\n            for (const id of siblingGroup.siblings ?? []) {\n                if (!locationDataMap.has(id)) {\n                    return err({\n                        kind: EnterpriseIntegrityErrorKind.EnterpriseLocationInstanceWithUnknownSibling,\n                        properties: {\n                            enterpriseLocationInstanceId: locationInstance.id,\n                            siblingLocationId: id,\n                            label: siblingGroup.label,\n                        },\n                    });\n                }\n            }\n        }\n    }\n    const floorLookup = createFloorLookup(data);\n    const geometryLookup = createGeometryLookup(data);\n    // EnterpriseFloorText validation\n    const uniqueFloorTexts = ensureUniqueIds(data.cms.floorText, (floorText) => floorText.properties.id, 'cms.floorText');\n    if (uniqueFloorTexts.isErr()) {\n        return uniqueFloorTexts;\n    }\n    for (const [floorId, floorTextFeatureCollection] of typedEntries(cms.floorText ?? {})) {\n        const validFloor = floorLookup(floorId);\n        if (validFloor.isErr()) {\n            return validFloor;\n        }\n        for (const feature of floorTextFeatureCollection.features) {\n            if (!('geometryId' in feature.properties)) {\n                continue;\n            }\n            const validGeometry = geometryLookup(floorId, feature.properties.geometryId);\n            if (validGeometry.isErr()) {\n                return validGeometry;\n            }\n        }\n    }\n    // EnterpriseTextures validation\n    for (const [floorId, enterpriseTextures] of typedEntries(cms.textures ?? {})) {\n        const validFloor = floorLookup(floorId);\n        if (validFloor.isErr()) {\n            return validFloor;\n        }\n        for (const texture of enterpriseTextures) {\n            const validGeometry = geometryLookup(floorId, texture.geometryId);\n            if (validGeometry.isErr()) {\n                return validGeometry;\n            }\n        }\n    }\n    // EnterpriseLayers validation\n    for (const [floorId, enterpriseLayers] of typedEntries(cms.layers ?? {})) {\n        const validFloor = floorLookup(floorId);\n        if (validFloor.isErr()) {\n            return validFloor;\n        }\n        for (const geometryId of typedKeys(enterpriseLayers ?? {})) {\n            const validGeometry = geometryLookup(floorId, geometryId);\n            if (validGeometry.isErr()) {\n                return validGeometry;\n            }\n        }\n    }\n    // EnterpriseTextAreas validation\n    for (const [floorId, textAreas] of typedEntries(cms.textAreas ?? {})) {\n        const validFloor = floorLookup(floorId);\n        if (validFloor.isErr()) {\n            return validFloor;\n        }\n        for (const textArea of textAreas.features) {\n            if ('geometryId' in textArea.properties) {\n                const validGeometry = geometryLookup(floorId, textArea.properties.geometryId);\n                if (validGeometry.isErr()) {\n                    return validGeometry;\n                }\n            }\n        }\n    }\n    return ok(true);\n};\n//# sourceMappingURL=integrity.js.map","import { Ident } from '@mappedin/mvf-core';\n/**\n * An Enterprise Location ID.\n *\n * **Important**: While the suffix can be any length, it is strongly recommended to use\n * suffixes of at least 8 characters to ensure uniqueness and avoid collisions.\n *\n * @format el_[0-9a-zA-Z_-]+\n */\nexport const EnterpriseLocationId = Ident('el', 'EnterpriseLocationId');\n/**\n * An Enterprise Category ID.\n *\n * **Important**: While the suffix can be any length, it is strongly recommended to use\n * suffixes of at least 8 characters to ensure uniqueness and avoid collisions.\n *\n * @format ec_[0-9a-zA-Z_-]+\n */\nexport const EnterpriseCategoryId = Ident('ec', 'EnterpriseCategoryId');\n/**\n * An Enterprise Location Instance ID.\n *\n * **Important**: While the suffix can be any length, it is strongly recommended to use\n * suffixes of at least 8 characters to ensure uniqueness and avoid collisions.\n *\n * @format eli_[0-9a-zA-Z_-]+\n */\nexport const EnterpriseLocationInstanceId = Ident('eli', 'EnterpriseLocationInstanceId');\n/**\n * An Enterprise Venue ID.\n *\n * **Important**: While the suffix can be any length, it is strongly recommended to use\n * suffixes of at least 8 characters to ensure uniqueness and avoid collisions.\n *\n * @format ev_[0-9a-zA-Z_-]+\n */\nexport const EnterpriseVenueId = Ident('ev', 'EnterpriseVenueId');\n/**\n * An Enterprise Floor Text ID.\n *\n * **Important**: While the suffix can be any length, it is strongly recommended to use\n * suffixes of at least 8 characters to ensure uniqueness and avoid collisions.\n *\n * @format eft_[0-9a-zA-Z_-]+\n */\nexport const EnterpriseFloorTextId = Ident('eft', 'EnterpriseFloorTextId');\nexport const IdentifiersReferences = [\n    EnterpriseLocationId,\n    EnterpriseCategoryId,\n    EnterpriseLocationInstanceId,\n    EnterpriseVenueId,\n    EnterpriseFloorTextId,\n];\n//# sourceMappingURL=identifiers.js.map","import { LocationCategoryId } from '@mappedin/mvf-locations';\nimport { Type } from '@sinclair/typebox';\nimport { EnterpriseCategoryId } from './identifiers.js';\nexport const EnterpriseCategory = Type.Object({\n    id: Type.Ref(EnterpriseCategoryId),\n    categoryId: Type.Ref(LocationCategoryId),\n    color: Type.Optional(Type.String()),\n    sortOrder: Type.Number(),\n    iconFromDefaultList: Type.Optional(Type.Union([Type.String(), Type.Null()])),\n    picture: Type.Optional(Type.String({ format: 'uri', description: \"The category's picture\" })),\n}, { $id: 'EnterpriseCategory' });\nexport const EnterpriseCategoriesSchema = Type.Object({\n    categories: Type.Optional(Type.Array(Type.Ref(EnterpriseCategory))),\n}, { $id: 'EnterpriseCategoriesSchema' });\nexport const EnterpriseCategoryReferences = [EnterpriseCategory, EnterpriseCategoriesSchema];\n//# sourceMappingURL=enterpriseCategories.js.map","import { FloorId, Point, WithGeometryId } from '@mappedin/mvf-core';\nimport { Feature, FeatureCollection, SafeStringEnum } from '@mappedin/mvf-core';\nimport { Type } from '@sinclair/typebox';\nimport { EnterpriseFloorTextId } from './identifiers.js';\nimport { TEXT_ALIGNMENT_VALUES } from './floor-text-values.js';\nexport { TEXT_ALIGNMENTS, TEXT_ALIGNMENT, isTextAlignment, TEXT_ALIGNMENT_VALUES } from './floor-text-values.js';\nexport const TextAlignment = SafeStringEnum(TEXT_ALIGNMENT_VALUES).schema;\nexport const FloorTextCommonProperties = Type.Object({\n    /**\n     * The ID of the floor text.\n     */\n    id: Type.Ref(EnterpriseFloorTextId),\n    /**\n     * The text to display. Newline characters are supported.\n     */\n    text: Type.String(),\n    /**\n     * Whether the text is visible.\n     *\n     * @default true\n     */\n    visible: Type.Boolean({ default: true }),\n    /**\n     * The em-height (multiplier of the font's height) at which to render the font, in meters.\n     * The font height is the distance between the ascender (highest point, height of an A) and descender (lowest point, bottom of a g) of the font.\n     * For example, if the font-size is 12, the space for a single character will be 12 meters high.\n     *\n     * @default 12\n     */\n    fontSize: Type.Number({ default: 12, exclusiveMinimum: 0 }),\n    /**\n     * The font family of the text.\n     *\n     * @default 'Droid Sans'\n     */\n    fontFamily: Type.String({ default: 'Droid Sans' }),\n    /**\n     * The color of the text in CSS format (e.g. `#000000`, `rgb(0, 0, 0)`, `black`).\n     *\n     * @default 'black'\n     */\n    color: Type.String({ default: 'black' }),\n    /**\n     * Rotation in degrees, about the center of the text. North is 0, east is 90.\n     *\n     * @minimum 0\n     * @maximum 360\n     */\n    rotation: Type.Number({ minimum: 0, maximum: 360 }),\n    /**\n     * Horizontal alignment of multi-line text.\n     *\n     * @default 'center'\n     */\n    align: TextAlignment,\n}, {\n    $id: 'FloorTextCommonProperties',\n});\nexport const AnchoredFloorTextProperties = Type.Intersect([Type.Ref(FloorTextCommonProperties), WithGeometryId], {\n    $id: 'AnchoredFloorTextProperties',\n});\nexport const FloatingFloorTextProperties = Type.Intersect([\n    Type.Ref(FloorTextCommonProperties),\n    Type.Object({\n        /**\n         * The vertical offset of the text, in meters.\n         */\n        verticalOffset: Type.Number(),\n    }),\n], {\n    $id: 'FloatingFloorTextProperties',\n});\nexport const FloorTextProperties = Type.Union([Type.Ref(AnchoredFloorTextProperties), Type.Ref(FloatingFloorTextProperties)], {\n    $id: 'FloorTextProperties',\n});\nexport const FloorTextFeature = Feature(Point, Type.Ref(FloorTextProperties), {\n    $id: 'FloorTextFeature',\n});\nexport const AnchoredFloorTextFeature = Feature(Point, Type.Ref(AnchoredFloorTextProperties), {\n    $id: 'AnchoredFloorTextFeature',\n});\nexport const FloatingFloorTextFeature = Feature(Point, Type.Ref(FloatingFloorTextProperties), {\n    $id: 'FloatingFloorTextFeature',\n});\nexport const EnterpriseFloorTextFeatureCollection = FeatureCollection(Type.Ref(FloorTextFeature), {\n    $id: 'EnterpriseFloorTextFeatureCollection',\n});\nexport const EnterpriseFloorTextCollectionsByFloor = Type.Record(FloorId, Type.Ref(EnterpriseFloorTextFeatureCollection), {\n    $id: 'EnterpriseFloorTextCollectionsByFloor',\n    additionalProperties: false,\n});\nexport const EnterpriseFloorTextSchema = Type.Object({\n    floorText: Type.Optional(Type.Ref(EnterpriseFloorTextCollectionsByFloor)),\n}, { $id: 'EnterpriseFloorTextSchema' });\nexport const EnterpriseFloorTextReferences = [\n    FloorTextCommonProperties,\n    AnchoredFloorTextProperties,\n    FloatingFloorTextProperties,\n    FloorTextProperties,\n    FloorTextFeature,\n    AnchoredFloorTextFeature,\n    FloatingFloorTextFeature,\n    EnterpriseFloorTextFeatureCollection,\n    EnterpriseFloorTextCollectionsByFloor,\n    EnterpriseFloorTextSchema,\n];\n//# sourceMappingURL=enterpriseFloorText.js.map","/**\n * @packageDocumentation\n * @module subSchemas/enterpriseLayers\n *\n * @description\n * The enteprise layers subschema adds a `layers` property to the CMS extension. `layers` is a record of floor ids to EnterpriseLayers objects.\n *\n * EnterpriseLayers objects are a mapping of {@link GeometryId}s to layer names.\n *\n * @example\n * ```ts\n * \texport type EnterpriseLayersSchema = {\n * \t\tlayers: Record<FloorId, Record<GeometryId, LayerName>>\n * }\n * ```\n */\nimport { GeometryId, PartialRecord } from '@mappedin/mvf-core';\nimport { FloorId } from '@mappedin/mvf-core/identifiers';\nimport { Type } from '@sinclair/typebox';\n// Modeled after Kinds rather than MVFv2 layers\nexport const EnterpriseLayers = PartialRecord(Type.Record(GeometryId, Type.String({ minLength: 1 }), { additionalProperties: false, $id: 'EnterpriseLayers' }));\nexport const EnterpriseLayersByFloor = PartialRecord(Type.Record(FloorId, Type.Ref(EnterpriseLayers), {\n    additionalProperties: false,\n    $id: 'EnterpriseLayersByFloor',\n}));\nexport const EnterpriseLayersSchema = Type.Object({\n    layers: Type.Optional(Type.Ref(EnterpriseLayersByFloor)),\n}, { $id: 'EnterpriseLayersSchema' });\nexport const EnterpriseLayersReferences = [EnterpriseLayers, EnterpriseLayersByFloor, EnterpriseLayersSchema];\n//# sourceMappingURL=enterpriseLayers.js.map","import { SafeStringEnum } from '@mappedin/mvf-core';\nimport { LocationId } from '@mappedin/mvf-locations';\nimport { Type } from '@sinclair/typebox';\nimport { LOCATION_STATE_VALUES, SIBLING_GROUP_TYPE_VALUES } from './utils-values.js';\nexport { ENTERPRISE_SIBLING_GROUP_TYPES, ENTERPRISE_SIBLING_GROUP_TYPE, isSiblingGroupType, SIBLING_GROUP_TYPE_VALUES, } from './utils-values.js';\nexport { LOCATION_STATES, LOCATION_STATE, isLocationState, LOCATION_STATE_VALUES } from './utils-values.js';\nexport const SiblingGroupType = SafeStringEnum(SIBLING_GROUP_TYPE_VALUES, {\n    $id: 'EnterpriseSiblingGroupType',\n}).schema;\nexport const LocationStateType = SafeStringEnum(LOCATION_STATE_VALUES).schema;\n/**\n * The state of a location. Start and end dates are optional.\n */\nexport const LocationState = Type.Object({\n    /**\n     * The type of the location state. Technically not limited, but should be one of the following:\n     * - closed-temporarily\n     * - new\n     * - pop-up\n     * - coming-soon\n     * - relocated\n     */\n    type: LocationStateType,\n    /**\n     * The start date of the state\n     * @format date\n     */\n    start: Type.Optional(Type.String({ format: 'date', description: 'The start date of the state' })),\n    /**\n     * The end date of the state\n     * @format date\n     */\n    end: Type.Optional(Type.String({ format: 'date', description: 'The end date of the state' })),\n}, {\n    $id: 'LocationState',\n    description: 'The state of a location. Start and end dates are optional.',\n});\nexport const SiblingGroup = Type.Object({\n    label: Type.String(),\n    siblings: Type.Array(Type.Ref(LocationId)),\n    type: Type.Optional(Type.Ref(SiblingGroupType)),\n    subtype: Type.Optional(Type.String()),\n}, {\n    $id: 'SiblingGroup',\n});\nexport const Language = Type.Object({\n    name: Type.String(),\n    code: Type.String(),\n}, {\n    $id: 'Language',\n});\nexport const UtilityReferences = [LocationState, SiblingGroup, Language, SiblingGroupType];\n//# sourceMappingURL=utils.js.map","import { LocationCategoryId, LocationId } from '@mappedin/mvf-locations';\nimport { Type } from '@sinclair/typebox';\nimport { EnterpriseLocationId } from './identifiers.js';\nimport { LocationState, SiblingGroup } from './utils.js';\n/**\n * An Enterprise Location extends a normal Location with additional properties not\n * available in the base Location schema.\n */\nexport const EnterpriseLocation = Type.Object({\n    id: Type.Ref(EnterpriseLocationId),\n    /**\n     * The ID of the Location that has most of the EnterpriseLocation's data\n     */\n    locationId: Type.Ref(LocationId),\n    /**\n     * The original CMS ID of the EnterpriseLocation\n     */\n    cmsId: Type.String(),\n    /**\n     * The type of the location, like amenity, tenant, etc.\n     */\n    type: Type.String(),\n    sortOrder: Type.Number(),\n    /**\n     * Tags are used primarily as keywords to match against when searching.\n     * They are typically not used for display.\n     */\n    tags: Type.Optional(Type.Array(Type.String())),\n    /**\n     * A photograph of the location, used as a visual aid during navigation.\n     *\n     * @format uri\n     */\n    picture: Type.Optional(Type.String({ format: 'uri', description: 'The picture of the location' })),\n    /**\n     * The location's state. No more than one state should be active at a time,\n     * and all but at most one should have dates set\n     */\n    states: Type.Optional(Type.Array(Type.Ref(LocationState), {\n        description: \"The location's state. No more than one state should be active at a time, and all but at most one should have dates set\",\n    })),\n    /**\n     * Locations that are related to this location in some manner (described by the label).\n     *\n     * In airports, locations will typically get SiblingGroups with a label of \"REFERENCE_POINT\"\n     * linking to locations like \"Terminal 1\" and \"Airside\" to indicate which zone they are in, but SiblingGroups\n     * can be used for any type of relationship between locations.\n     *\n     * Note this links to the LocationId, not the EnterpriseLocationId.\n     */\n    siblingGroups: Type.Optional(Type.Array(Type.Ref(SiblingGroup))),\n    /**\n     * A gallery of images for a location. May be a mix of promotional images, or images of the location itself.\n     * Caption should be supplied for accessibility purposes, since it will not be clear from context\n     * what the image represents.\n     */\n    gallery: Type.Optional(Type.Array(Type.Object({\n        caption: Type.Optional(Type.String()),\n        image: Type.String({ format: 'uri' }),\n        /**\n         * The URL to link from the image\n         * @format uri\n         */\n        embeddedUrl: Type.Optional(Type.String({ format: 'uri', description: 'The URL to link from the image' })),\n    }, { description: \"The location's image gallery\" }), { description: \"The location's image gallery\" })),\n    /**\n     * Whether to show the flat label when an image is present on the polygon a location\n     * is anchored to. This is often set to false for anchor stores in malls, since they\n     * often have a large logo image placed directly on their polygon.\n     */\n    showFloatingLabelWhenImagePresent: Type.Optional(Type.Boolean({ description: 'Whether to show the flat label when an image is present' })),\n    /**\n     * The location's amenity type. Only set if the location is an amenity\n     */\n    amenity: Type.Optional(Type.String({ description: \"The location's amenity type. Only set if the location is an amenity\" })),\n    /**\n     * Whether to show the logo of the location\n     */\n    showLogo: Type.Optional(Type.Boolean({ description: 'Whether to show the logo of the location' })),\n    /**\n     * The main category of the location. It must be one of the categories in the Location's categories array\n     */\n    primaryCategory: Type.Optional(Type.Ref(LocationCategoryId)),\n    /**\n     * The location's header image\n     *\n     * @format uri\n     */\n    headerImage: Type.Optional(Type.String({ format: 'uri', description: \"The location's header image\" })),\n}, { $id: 'EnterpriseLocation' });\nexport const EnterpriseLocationsSchema = Type.Object({\n    locations: Type.Optional(Type.Array(Type.Ref(EnterpriseLocation))),\n}, { $id: 'EnterpriseLocationsSchema' });\nexport const EnterpriseLocationReferences = [EnterpriseLocation, EnterpriseLocationsSchema];\n//# sourceMappingURL=enterpriseLocations.js.map","import { LocationInstanceId } from '@mappedin/mvf-locations';\nimport { Type } from '@sinclair/typebox';\nimport { EnterpriseLocation } from './enterpriseLocations.js';\nimport { EnterpriseLocationId, EnterpriseLocationInstanceId } from './identifiers.js';\n/**\n * A locationInstance is a particular instance of an Enterprise Location that has some properties\n * different from the parent. Eg, it may have siblingGroups, or state. Other differences like name and,\n * in particular, geometryAnchors, will be handled in the parent LocationInstance.\n *\n * An Enterprise Location Instance:\n * - MUST have a parent, referring to an Enterprise Location.\n * - MUST have a locationInstanceId, referring to a LocationInstance.\n * - MUST NOT have a locationId.\n * - MUST have a unique ID, for localization to work.\n * - SHOULD have AT LEAST ONE other Enterprise Location property set.\n *\n * It is otherwise a Partial<EnterpriseLocation>.\n *\n * This implies that for an EntepriseLocationInstance to exist, there must also be a LocationInstance for it. Only\n * one EnterpriseLocationInstance should exist for a given LocationInstance. That LocationInstance then\n * MAY only differ from it's parent on the `geometryAnchors` property, relying on the EnterpriseLocationInstance\n * to provide a unique property such as `state`.\n *\n * If a Location that has an EnterpriseLocation differs only in something covered by Location (say, name and geometryAnchor),\n * there will NOT be an EnterpriseLocationInstance for it.\n *\n * Usage example:\n * - An EnterpriseLocation representing a kiosk in several places. One of them is new, and has an EnterpriseLocationInstance with the `new` location state.\n */\nexport const EnterpriseLocationInstance = Type.Intersect([\n    Type.Object({\n        /**\n         * The unique ID for this Enterprise Location Instance. This ID might be ephemeral and is really only for localization.\n         */\n        id: Type.Ref(EnterpriseLocationInstanceId),\n        /**\n         * The parent Enterprise Location for this Enterprise Location Instance.\n         */\n        parentId: Type.Ref(EnterpriseLocationId),\n        /**\n         * The LocationInstance that will have any Location instance properties set, in particular `geometryAnchors`.\n         */\n        locationInstanceId: Type.Ref(LocationInstanceId),\n    }),\n    Type.Partial(Type.Omit(EnterpriseLocation, ['id', 'parentId', 'locationId'])),\n], {\n    $id: 'EnterpriseLocationInstance',\n    description: 'A locationInstance is a particular instance of an Enterprise Location that has some properties different from the parent.',\n});\nexport const EnterpriseLocationInstancesSchema = Type.Object({\n    locationInstances: Type.Optional(Type.Array(Type.Ref(EnterpriseLocationInstance))),\n}, { $id: 'EnterpriseLocationInstancesSchema' });\nexport const EnterpriseLocationInstancesReferences = [EnterpriseLocationInstance, EnterpriseLocationInstancesSchema];\n//# sourceMappingURL=enterpriseLocationInstance.js.map","import { Feature, FeatureCollection, Point } from '@mappedin/mvf-core/geojson';\nimport { FloorId } from '@mappedin/mvf-core/identifiers';\nimport { SafeStringEnum, WithGeometryId } from '@mappedin/mvf-core/utility-types';\nimport { Type } from '@sinclair/typebox';\nimport { TEXT_AREA_ALIGNMENT_VALUES } from './text-area-values.js';\nexport { TEXT_AREA_ALIGNMENTS, TEXT_AREA_ALIGNMENT, isTextAreaAlignment, TEXT_AREA_ALIGNMENT_VALUES, } from './text-area-values.js';\n/**\n * The alignment of the text within the label.\n * 'Near' means the text will be aligned up against the anchor. Typically in the SDK the text will be rotated\n * to always be upright, so either the start or end of the text will be up against the position.\n * 'Center' means it will be centered in the middle of the area.\n */\nexport const EnterpriseTextAreaAlignment = SafeStringEnum(TEXT_AREA_ALIGNMENT_VALUES, {\n    $id: 'EnterpriseTextAreaAlignment',\n}).schema;\n/**\n * The area to draw text in 2/3D on the map such that it fits within some geometry.\n *\n * ASCII representations of EnterpriseTextAreas (without rotation):\n *\n * 1. Center alignment:\n *                   maxWidth\n *             <------------------>\n *             ┌──────────────────┐ ↑\n *             │                  │ |\n *  position---●      Text        │ | maxHeight\n *             │                  │ |\n *             └──────────────────┘ ↓\n *                    ^\n *                    |\n *                  center\n *                  align\n *\n * 2. Near alignment (90 degree rotation, position on left):\n *                   maxWidth\n *             <------------------>\n *             ┌──────────────────┐ ↑\n *             │                  │ |\n *  position---●Text              │ | maxHeight\n *             │                  │ |\n *             └──────────────────┘ ↓\n *             ^\n *             |\n *           near\n *           align\n *\n * 3. Near alignment (90 degree rotation, so position on right):\n *                   maxWidth\n *             <------------------>\n *             ┌──────────────────┐ ↑\n *             │                  │ |\n *             │              Text●---position\n *             │                  │ |\n *             └──────────────────┘ ↓\n *                              ^\n *                              |\n *                            near\n *                            align\n *\n * Position is the Point Feature's position.\n *\n * - maxWidth: The maximum width of the label area, in meters.\n * - maxHeight: The maximum height of the label area, in meters. Half the height will be above `position`, half below.\n * - align: How the text is aligned within the label area. Near means the text will be against the Position anchor, and center will be centered in the text area.\n * - rotation: The angle of rotation for the entire label (around the anchor point), in degrees clockwise from north.\n *\n *  Therefore, the bounds for a EnterpriseTextArea with a rotation of 90 will extend maxWidth in the east direction, half the maxHeight in the north direction,\n *  and half the maxHeight in the south direction. If it is left aligned, the text will be anchored to the west edge of the label, by the position anchor\n *\n * In addition, a EnterpriseTextArea can be anchored to a Space or Obstruction, or it can be floating in space. If it's anchored, it will have an `anchorId` property and be\n * placed on top of the geometry. If it's floating, it will have a `verticalOffset` property and be placed at a height above the ground plane.\n */\nexport const EnterpriseBaseTextAreaProperties = Type.Object({\n    /**\n     * The maximum width of the label, in meters. The left edge will start at the feature's position and extend in the rotation direction.\n     *\n     * @exclusiveMinimum 0\n     */\n    maxWidth: Type.Number({ exclusiveMinimum: 0, description: 'The maximum width of the label, in meters.' }),\n    /**\n     * The maximum height of the label, in meters. Half the height will be above the feature's position, half below.\n     *\n     * @exclusiveMinimum 0\n     */\n    maxHeight: Type.Number({ exclusiveMinimum: 0, description: 'The maximum height of the label, in meters.' }),\n    /**\n     * The alignment of the text within the label.\n     * 'Near' means the text will be aligned up against the position. Typically in the SDK the text will be rotated\n     * to always be upright, so either the start or end of the text will be up against the position.\n     * 'Center' means it will be centered in the middle of the area.\n     */\n    align: Type.Ref(EnterpriseTextAreaAlignment),\n    /**\n     * Rotation in degrees, about the center of the image. North is 0, east is 90.\n     *\n     * @minimum 0\n     * @maximum 360\n     */\n    rotation: Type.Number({\n        minimum: 0,\n        maximum: 360,\n        description: 'Rotation in degrees, about the center of the image. North is 0, east is 90.',\n    }),\n}, { $id: 'EnterpriseBaseTextAreaProperties' });\nexport const EnterpriseAnchoredTextAreaProperties = Type.Intersect([Type.Ref(EnterpriseBaseTextAreaProperties), WithGeometryId], {\n    $id: 'EnterpriseAnchoredTextAreaProperties',\n});\nexport const EnterpriseFloatingTextAreaProperties = Type.Intersect([\n    Type.Ref(EnterpriseBaseTextAreaProperties),\n    Type.Object({\n        /**\n         * How high to position the image, in meters, relative to the ground plane.\n         *\n         * @minimum 0\n         */\n        verticalOffset: Type.Number({\n            minimum: 0,\n            description: 'How high to position the image, in meters, relative to the ground plane.',\n        }),\n    }),\n], { $id: 'EnterpriseFloatingTextAreaProperties' });\nexport const EnterpriseTextAreaProperties = Type.Union([EnterpriseAnchoredTextAreaProperties, EnterpriseFloatingTextAreaProperties], {\n    $id: 'EnterpriseTextAreaProperties',\n});\nexport const EnterpriseTextAreaFeature = Feature(Type.Ref(Point), EnterpriseTextAreaProperties, {\n    $id: 'EnterpriseTextAreaFeature',\n});\nexport const EnterpriseTextAreaCollection = FeatureCollection(Type.Ref(EnterpriseTextAreaFeature), {\n    $id: 'EnterpriseTextAreaCollection',\n});\nexport const EnterpriseTextAreasByFloor = Type.Record(FloorId, Type.Ref(EnterpriseTextAreaCollection), {\n    $id: 'EnterpriseTextAreasByFloor',\n    additionalProperties: false,\n});\nexport const EnterpriseTextAreasSchema = Type.Object({\n    textAreas: Type.Optional(Type.Ref(EnterpriseTextAreasByFloor)),\n}, { $id: 'EnterpriseTextAreasSchema' });\nexport const EnterpriseTextAreasReferences = [\n    EnterpriseTextAreaAlignment,\n    EnterpriseBaseTextAreaProperties,\n    EnterpriseAnchoredTextAreaProperties,\n    EnterpriseFloatingTextAreaProperties,\n    EnterpriseTextAreaProperties,\n    EnterpriseTextAreaFeature,\n    EnterpriseTextAreaCollection,\n    EnterpriseTextAreasByFloor,\n];\n//# sourceMappingURL=enterpriseTextAreas.js.map","import { FloorId, Latitude, Longitude, SafeStringEnum, WithGeometryId } from '@mappedin/mvf-core';\nimport { Type } from '@sinclair/typebox';\nexport const EnterpriseTextureUV = Type.Object({\n    u: Type.Number(),\n    v: Type.Number(),\n}, {\n    $id: 'EnterpriseTextureUV',\n});\nimport { TEXTURE_FACE_VALUES, TEXTURE_SURFACE_VALUES } from './texture-values.js';\nexport { ENTERPRISE_TEXTURE_FACES, ENTERPRISE_TEXTURE_FACE, isEnterpriseTextureFace, TEXTURE_FACE_VALUES, } from './texture-values.js';\nexport { ENTERPRISE_TEXTURE_SURFACES, ENTERPRISE_TEXTURE_SURFACE, isEnterpriseTextureSurface, TEXTURE_SURFACE_VALUES, } from './texture-values.js';\n/**\n * The possible faces that a texture can be applied to.\n */\nexport const EnterpriseTextureFace = SafeStringEnum(TEXTURE_FACE_VALUES, { $id: 'EnterpriseTextureFace' }).schema;\n/**\n * The possible surfaces that a texture can be applied to.\n */\nexport const EnterpriseTextureSurface = SafeStringEnum(TEXTURE_SURFACE_VALUES, {\n    $id: 'EnterpriseTextureSurface',\n}).schema;\n/**\n * The bounds of the texture in the format [minLon, minLat, maxLon, maxLat].\n */\nexport const EnterpriseTextureBounds = Type.Tuple([Longitude, Latitude, Longitude, Latitude], {\n    $id: 'EnterpriseTextureBounds',\n});\n/**\n * A texture is a repeated image applied to some surface of a polygon. It\n * is designed to be consumed by 3D SDKs like Mappedin JS.\n */\nexport const EnterpriseTexture = Type.Intersect([\n    Type.Object({\n        /**\n         * Controls how many times the texture repeats across the surface.\n         * The u value controls horizontal repetition and v controls vertical repetition.\n         */\n        repeat: Type.Ref(EnterpriseTextureUV),\n        /**\n         * Controls the starting position of the texture on the surface.\n         * The u value shifts the texture horizontally and v shifts vertically.\n         */\n        offset: Type.Ref(EnterpriseTextureUV),\n        /**\n         * Rotation of the texture in degrees clockwise.\n         *\n         * For top textures this is relative to north. North is 0, east is 90.\n         *\n         * For side textures this is relative to the upward direction, with 0 degrees being upright.\n         *\n         * @minimum 0\n         * @maximum 360\n         */\n        rotation: Type.Number({ minimum: 0, maximum: 360 }),\n        /**\n         * Path to the texture image. Must be either a PNG or JPG format.\n         */\n        path: Type.String({ format: 'uri' }),\n        /**\n         * Face of the polygon that the texture will be applied to.\n         *\n         * 'top' means that the texture will be applied to the upward-pointing face of the polygon.\n         *\n         * 'side' means that the texture will be applied to every side face of the polygon.\n         */\n        face: Type.Ref(EnterpriseTextureFace),\n        /**\n         * Surface of the polygon that the texture will be applied to.\n         *\n         * 'inside' means that the texture will only be applied to the interior surface of the polygon.\n         *\n         * 'outside' means that the texture will only be applied to the exterior surface of the polygon.\n         *\n         * 'both' means that the texture will be applied to both interior and exterior surfaces of the polygon.\n         *\n         */\n        surface: Type.Ref(EnterpriseTextureSurface),\n        /**\n         * Coordinates of the texture's bounding box in format: [minLon, minLat, maxLon, maxLat].\n         */\n        bounds: Type.Ref(EnterpriseTextureBounds),\n    }, { $id: 'EnterpriseTextureProperties' }),\n    WithGeometryId,\n], { $id: 'EnterpriseTexture' });\nexport const EnterpriseTextures = Type.Array(Type.Ref(EnterpriseTexture), { $id: 'EnterpriseTextures' });\nexport const EnterpriseTexturesByFloor = Type.Record(FloorId, Type.Ref(EnterpriseTextures), {\n    $id: 'EnterpriseTexturesByFloor',\n    additionalProperties: false,\n});\nexport const EnterpriseTexturesSchema = Type.Object({\n    textures: Type.Optional(Type.Ref(EnterpriseTexturesByFloor)),\n}, { $id: 'EnterpriseTexturesSchema' });\nexport const EnterpriseTextureReferences = [\n    EnterpriseTexture,\n    EnterpriseTextures,\n    EnterpriseTexturesSchema,\n    EnterpriseTextureUV,\n    EnterpriseTextureFace,\n    EnterpriseTextureSurface,\n    EnterpriseTextureBounds,\n    EnterpriseTexturesByFloor,\n];\n//# sourceMappingURL=enterpriseTextures.js.map","import { SafeStringEnum, WithExtra, WithRequiredDetails } from '@mappedin/mvf-core';\nimport { LocationId, OpeningHoursSpecification } from '@mappedin/mvf-locations';\nimport { Type } from '@sinclair/typebox';\nimport { ENTERPRISE_VENUE_TYPE_VALUES } from './enterprise-venue-values.js';\nimport { EnterpriseVenueId } from './identifiers.js';\nimport { Language } from './utils.js';\nexport { ENTERPRISE_VENUE_TYPES, ENTERPRISE_VENUE_TYPE, isEnterpriseVenueType } from './enterprise-venue-values.js';\nexport const EnterpriseVenueType = SafeStringEnum(ENTERPRISE_VENUE_TYPE_VALUES, {\n    $id: 'EnterpriseVenueType',\n}).schema;\n/**\n * A Mappedin Enterprise Venue, with identifying slug.\n *\n * It's name will be in the details.\n *\n */\nexport const EnterpriseVenue = Type.Intersect([\n    Type.Object({\n        /**\n         * The venue's unique identifier\n         */\n        id: Type.Ref(EnterpriseVenueId),\n        /**\n         * The venue's unique slug. This is typically the key used to identify the venue.\n         */\n        slug: Type.String(),\n        /**\n         * The venue's default language name and code\n         */\n        defaultLanguage: Type.Ref(Language),\n        /**\n         * The venue's supported languages. Includes the default language. Typically\n         * if a venue has multiple languages, at least SOME data will be set in each\n         * language, which means there will generally be a Locale Pack for each language.\n         *\n         * However, there is no guarantee that localized data has actually been added in\n         * a given language.\n         */\n        languages: Type.Array(Type.Ref(Language)),\n        /**\n         * The ISO 3166-1 alpha-2 country code of the venue, if known\n         *\n         * Eg. `CA` or `US`\n         */\n        countrycode: Type.Optional(Type.String()),\n        /**\n         * The venue's logo\n         *\n         * @format uri\n         */\n        logo: Type.Optional(Type.String({ format: 'uri' })),\n        /**\n         * The base URL for Mappedin Web for this venue.\n         *\n         * @format uri\n         */\n        mappedinWebUrl: Type.Optional(Type.String({ format: 'uri' })),\n        /**\n         * The locations that are considered the \"top\" locations for this venue.\n         *\n         * Usually used in a quick-access menu in applications to show the most\n         * important locations in the venue.\n         *\n         * Note: These point to Locations not the EnterpriseLocations.\n         */\n        topLocations: Type.Optional(Type.Array(Type.Ref(LocationId))),\n        /**\n         * The venue's operation hours.\n         */\n        operationHours: Type.Optional(Type.Array(Type.Ref(OpeningHoursSpecification))),\n        /**\n         * The venue's cover image.\n         *\n         * @format uri\n         */\n        coverImage: Type.Optional(Type.String({ format: 'uri' })),\n        /**\n         * The type of the venue, such as a mall, airport, or stadium, if it is known.\n         */\n        type: Type.Optional(Type.Ref(EnterpriseVenueType)),\n        /**\n         * An image of the venue property\n         */\n        propertyImage: Type.Optional(Type.String({ format: 'uri' })),\n    }),\n    WithRequiredDetails(['name']),\n    WithExtra,\n], {\n    $id: 'EnterpriseVenue',\n});\nexport const EnterpriseVenueSchema = Type.Object({\n    venue: Type.Optional(Type.Ref(EnterpriseVenue)),\n}, { $id: 'EnterpriseVenueSchema' });\nexport const EnterpriseVenueReferences = [EnterpriseVenue, EnterpriseVenueSchema, EnterpriseVenueType];\n//# sourceMappingURL=enterpriseVenue.js.map","import { typedKeys } from '@mappedin/mvf-core/utils';\nimport { LocationReferences } from '@mappedin/mvf-locations';\nimport { Type } from '@sinclair/typebox';\nimport { validateCMS } from './integrity.js';\nimport { EnterpriseCategoriesSchema, EnterpriseCategoryReferences } from './subSchemas/enterpriseCategories.js';\nimport { EnterpriseFloorTextReferences, EnterpriseFloorTextSchema } from './subSchemas/enterpriseFloorText.js';\nimport { EnterpriseLayersReferences, EnterpriseLayersSchema } from './subSchemas/enterpriseLayers.js';\nimport { EnterpriseLocationInstancesReferences, EnterpriseLocationInstancesSchema, } from './subSchemas/enterpriseLocationInstance.js';\nimport { EnterpriseLocationReferences, EnterpriseLocationsSchema } from './subSchemas/enterpriseLocations.js';\nimport { EnterpriseTextAreasReferences, EnterpriseTextAreasSchema } from './subSchemas/enterpriseTextAreas.js';\nimport { EnterpriseTextureReferences, EnterpriseTexturesSchema } from './subSchemas/enterpriseTextures.js';\nimport { EnterpriseVenueReferences, EnterpriseVenueSchema } from './subSchemas/enterpriseVenue.js';\nimport { IdentifiersReferences } from './subSchemas/identifiers.js';\nimport { UtilityReferences } from './subSchemas/utils.js';\nexport * from './subSchemas/index.js';\nexport { EnterpriseIntegrityErrorKind } from './error.js';\n// There is a bug somewhere where if these are Type.Ref()s, the decoder will not transform safe enums to unknown.\nexport const CMSProperties = Type.Intersect([\n    EnterpriseVenueSchema,\n    EnterpriseLocationsSchema,\n    EnterpriseLocationInstancesSchema,\n    EnterpriseCategoriesSchema,\n    EnterpriseTexturesSchema,\n    EnterpriseFloorTextSchema,\n    EnterpriseLayersSchema,\n    EnterpriseTextAreasSchema,\n], { $id: 'CMSProperties' });\nexport const CMSExtensionSchema = Type.Object({\n    cms: Type.Optional(Type.Ref(CMSProperties)),\n}, { $id: 'CMSExtensionSchema' });\nconst EnterpriseFilePath = /^cms\\/(?:([^/]+)\\/)?([^/]+)\\.(?:json|geojson)$/;\nexport const CMSExtension = {\n    name: 'ext:cms',\n    schema: CMSExtensionSchema,\n    intoBundle: function* (data) {\n        if (data.cms == null) {\n            return;\n        }\n        const cms = data.cms;\n        for (const subSchema of typedKeys(cms)) {\n            switch (subSchema) {\n                // floorText and textures are folders with files by floor\n                case 'floorText':\n                    for (const floorId of typedKeys(cms.floorText ?? {})) {\n                        yield {\n                            path: `cms/floorText/${floorId}.geojson`,\n                            contents: (cms.floorText ?? {})[floorId],\n                        };\n                    }\n                    continue;\n                case 'textures':\n                    for (const floorId of typedKeys(cms.textures ?? {})) {\n                        yield {\n                            path: `cms/textures/${floorId}.json`,\n                            contents: (cms.textures ?? {})[floorId],\n                        };\n                    }\n                    continue;\n                case 'textAreas':\n                    for (const floorId of typedKeys(cms.textAreas ?? {})) {\n                        yield {\n                            path: `cms/textAreas/${floorId}.geojson`,\n                            contents: (cms.textAreas ?? {})[floorId],\n                        };\n                    }\n                    continue;\n                default:\n                    yield {\n                        path: `cms/${subSchema}.json`,\n                        contents: cms[subSchema],\n                    };\n                    continue;\n            }\n        }\n    },\n    fromBundle: (path, contents, decode) => {\n        const match = path.match(EnterpriseFilePath);\n        if (!match) {\n            return;\n        }\n        const [, subSchema, fileName] = match;\n        const decodedContents = decode(contents);\n        switch (subSchema) {\n            case 'floorText':\n            case 'textures':\n            case 'textAreas':\n                return {\n                    cms: {\n                        [subSchema]: {\n                            [fileName]: decodedContents,\n                        },\n                    },\n                };\n            default:\n                return {\n                    cms: {\n                        [fileName]: decodedContents,\n                    },\n                };\n        }\n    },\n    references: [\n        CMSProperties,\n        CMSExtensionSchema,\n        ...EnterpriseVenueReferences,\n        ...EnterpriseLocationReferences,\n        ...EnterpriseLocationInstancesReferences,\n        ...EnterpriseCategoryReferences,\n        ...EnterpriseTextureReferences,\n        ...EnterpriseLayersReferences,\n        ...EnterpriseFloorTextReferences,\n        ...EnterpriseTextAreasReferences,\n        ...IdentifiersReferences,\n        ...UtilityReferences,\n        ...LocationReferences,\n    ],\n    integrityCheck: validateCMS,\n};\n//# sourceMappingURL=index.js.map","/**\n * Enumeration of possible integrity error kinds for navigation flags.\n * Used to identify specific validation failures in the navigation flag system.\n * @category Errors\n */\nexport var NavigationFlagIntegrityKind;\n(function (NavigationFlagIntegrityKind) {\n    NavigationFlagIntegrityKind[\"NavigationFlagMissingDeclaration\"] = \"NavigationFlagMissingDeclaration\";\n    NavigationFlagIntegrityKind[\"NavigationFlagDuplicateBit\"] = \"NavigationFlagDuplicateBit\";\n    NavigationFlagIntegrityKind[\"NavigationFlagIncorrectFlagsLength\"] = \"NavigationFlagIncorrectFlagsLength\";\n    NavigationFlagIntegrityKind[\"NavigationFlagValueTooBig\"] = \"NavigationFlagValueTooBig\";\n})(NavigationFlagIntegrityKind || (NavigationFlagIntegrityKind = {}));\n//# sourceMappingURL=errors.js.map","import { err, ok } from '@mappedin/safe-types/result';\nimport { NavigationFlagIntegrityKind } from './errors.js';\nexport const validateNavigationFlags = (data) => {\n    const { navigationFlags } = data;\n    if (!navigationFlags || Object.keys(navigationFlags).length === 0) {\n        return ok(true);\n    }\n    // Sort navigation flags by index then bit\n    const sortedFlags = Object.entries(navigationFlags)\n        .map(([key, value]) => ({ key, ...value }))\n        .sort((a, b) => {\n        if (a.index !== b.index) {\n            return a.index - b.index;\n        }\n        return a.bit - b.bit;\n    });\n    let lastIndex = 0;\n    let lastBit = -1;\n    for (const flag of sortedFlags) {\n        if (flag.bit === lastBit) {\n            return err({\n                kind: NavigationFlagIntegrityKind.NavigationFlagDuplicateBit,\n                properties: { index: flag.index, bit: flag.bit, path: `navigationFlags.${flag.key}` },\n            });\n        }\n        if (flag.index != lastIndex) {\n            if (lastBit != 31) {\n                return err({\n                    kind: NavigationFlagIntegrityKind.NavigationFlagMissingDeclaration,\n                    properties: { index: lastIndex, bit: lastBit + 1, path: `navigationFlags` },\n                });\n            }\n            else if (flag.index != lastIndex + 1 || flag.bit != 0) {\n                return err({\n                    kind: NavigationFlagIntegrityKind.NavigationFlagMissingDeclaration,\n                    properties: { index: lastIndex + 1, bit: 0, path: `navigationFlags` },\n                });\n            }\n            lastIndex = flag.index;\n            lastBit = 0;\n        }\n        else {\n            if (flag.bit !== lastBit + 1) {\n                return err({\n                    kind: NavigationFlagIntegrityKind.NavigationFlagMissingDeclaration,\n                    properties: { index: flag.index, bit: lastBit + 1, path: `navigationFlags` },\n                });\n            }\n            lastBit = flag.bit;\n        }\n    }\n    return ok(true);\n};\n//# sourceMappingURL=integrity.js.map","import { err, ok } from '@mappedin/safe-types/result';\nimport { NavigationFlagIntegrityKind } from './errors.js';\n/**\n * Maximum value for a single flag (32-bit unsigned integer)\n * @internal\n */\nconst MAX_FLAG = 2 ** 32 - 1;\n/**\n * Determines the maximum flag index and value based on the number of navigation flags.\n * This is used to validate that flag arrays are the correct length and don't contain values that are too large.\n *\n * @category Validation\n * @param data - The navigation flags data to analyze\n * @returns Object containing the maximum index and flag value\n * @example\n * ```typescript\n * const data = { navigationFlags: { flag1: {...}, flag2: {...} } };\n * const maxFlag = determineMaxNavigationFlags(data);\n * // maxFlag = { index: 0, flag: 3 } // 2 flags fit in first index\n * ```\n */\nexport const determineMaxNavigationFlags = (data) => {\n    const count = Object.keys(data.navigationFlags ?? {}).length;\n    if (count === 0) {\n        return { index: -1, flag: 0 };\n    }\n    const maxIndex = Math.floor(count / 32);\n    const maxFlag = count % 32;\n    return { index: maxIndex, flag: 2 ** maxFlag - 1 };\n};\n/**\n * Validates a flags array against the maximum allowed values.\n * Ensures that:\n * 1. The array length matches the expected length based on maxFlag\n * 2. No flag value exceeds the maximum allowed value for its position\n *\n * @category Validation\n * @param flags - The array of flag values to validate\n * @param maxFlag - The maximum allowed index and flag values\n * @param path - Path to the flags being validated (for error reporting)\n * @returns Success (true) or an error describing the validation failure\n * @see {@link NavigationFlagIntegrityErrorVariant}\n * @example\n * ```typescript\n * const flags = [1, 2];\n * const maxFlag = { index: 1, flag: 3 };\n * const result = validateFlags(flags, maxFlag, \"myFlags\");\n * if (result.ok) {\n *   console.log(\"Flags are valid\");\n * }\n * ```\n */\nexport const validateFlags = (flags, maxFlag, path) => {\n    if (maxFlag.index == -1 && flags.length === 0) {\n        return ok(true);\n    }\n    const expectedLength = maxFlag.flag > 0 || maxFlag.index === -1 ? maxFlag.index + 1 : maxFlag.index;\n    if (flags.length !== expectedLength) {\n        return err({\n            kind: NavigationFlagIntegrityKind.NavigationFlagIncorrectFlagsLength,\n            properties: { expected: expectedLength, actual: flags.length, path },\n        });\n    }\n    for (let i = 0; i < flags.length; i++) {\n        const flag = flags[i];\n        if (i < maxFlag.index) {\n            if (flag > MAX_FLAG) {\n                return err({\n                    kind: NavigationFlagIntegrityKind.NavigationFlagValueTooBig,\n                    properties: { index: i, flagValue: flag, expectedMaxFlagValue: MAX_FLAG, path },\n                });\n            }\n            continue;\n        }\n        else if (flag > maxFlag.flag) {\n            return err({\n                kind: NavigationFlagIntegrityKind.NavigationFlagValueTooBig,\n                properties: { index: i, flagValue: flag, expectedMaxFlagValue: maxFlag.flag, path },\n            });\n        }\n    }\n    return ok(true);\n};\n//# sourceMappingURL=validation.js.map","/**\n * @module @mappedin/mvf-navigation-flags\n * @packageDocumentation\n\n * The NavigationFlagsExtension is used to add navigation flags to an MVF. It adds a single file, `navigationFlags.json`, to the bundle, which\n * contains a {@link NavigationFlagDeclarations} object. Other extensions may depend on this extension for shared Declarations,\n * and add utility types like {@link WithFlags} or {@link WithFlaggedGeometryAnchor} to their schemas.\n *\n * This module also includes a set of utility types for working with navigation flags, including:\n * - {@link WithFlags} - For adding flags to any type\n * - {@link WithFlaggedGeometryAnchor} - For adding a single flagged anchor\n * - {@link WithFlaggedGeometryAnchors} - For adding an array of flagged anchors\n * - {@link FlaggedGeometryAnchor} - A utility type that combines {@link GeometryAnchor} with {@link Flags}. Used by WithFlaggedGeometryAnchor and WithFlaggedGeometryAnchors.\n *\n * It also includes a set of @{link WELL_KNOWN_FLAGS}, which are defined by the NavigationFlagsExtension and always have the same meaning if present in the MVF.\n *\n * Finally, there a {@link hasFlag}  utility function for determining if a WithFlags object has a particular flag set.\n */\nimport { GeometryAnchor, WithDetails } from '@mappedin/mvf-core';\nimport { Type } from '@sinclair/typebox';\nimport { validateNavigationFlags } from './integrity.js';\nimport { hasFlag } from './utils.js';\nimport { determineMaxNavigationFlags, validateFlags } from './validation.js';\nexport { hasFlag, validateFlags, determineMaxNavigationFlags };\n// Re-export error types and enums\nexport { NavigationFlagIntegrityKind, } from './errors.js';\nconst NavigationFlagDeclarationCore = Type.Object({\n    /**\n     * The index of the flag in a flags array. ie, 0 means the first bitfield, 1 means the second bitfield, etc.\n     */\n    index: Type.Integer({\n        description: 'The index of the flag in a flags array.',\n        minimum: 0,\n    }),\n    /**\n     * The bit position of the flag in a flag's bitfield. ie, 0 means the first bit, 1 means the second bit, etc.\n     * A flag bitfield with that bit set to 1 means the flag is present. Other than for Well Known Flags, this is not expected to be durable across different versions of the same MVF.\n     */\n    bit: Type.Integer({\n        description: \"The bit position of the flag in a flag's bitfield.\",\n        minimum: 0,\n        maximum: 31,\n    }),\n}, {\n    $id: 'NavigationFlagDeclarationCore',\n});\n/**\n * A NavigationFlagDeclaration describes the relationship between a \"key\" that a developer might use to wayfind using that flag, and the index and bit position in an object's `flags` array.\n * Ie, if there is a flag with a key of `vip`, index 1 and bit position 0, then an item with flags as `[0, 0]` does not have the flag, `[0, 1]` does, and `[1, 2]` or `[1, 0]` do not.\n *\n * NavigationFlagDeclarations also may contain details about the flag, which can be displayed to a user if present.\n */\nexport const NavigationFlagDeclaration = Type.Intersect([NavigationFlagDeclarationCore, WithDetails], {\n    $id: 'NavigationFlagDeclaration',\n    description: 'A NavigationFlagDeclaration describes the relationship between a \"key\" that a developer might use to wayfind using that flag, and the index and bit position in an object\\'s `flags` array.',\n});\nexport { WELL_KNOWN_FLAGS } from './well-known-flags.js';\n/**\n * A map of all NavigationFlagDeclarations present in the MVF. The key is the durable value a developer should use to interact with the flag when wayfinding, and the\n * value is the definition of the flag that describes how to determine whether it's set in an object's flags array.\n */\nexport const NavigationFlagDeclarations = Type.Record(Type.String(), NavigationFlagDeclaration, {\n    $id: 'NavigationFlagDeclarations',\n    description: 'Any well known and custom flags present in the MVF',\n});\n/**\n * The NavigationFlagsSchema defines all of the data provided directly by the NavigationFlagsExtension (which is, just the map of durable, developer facing keys to NavigationFlagDeclarations).\n * Other extensions will depend on this schema to add utility types like WithFlags or FlaggedGeometryAnchor to their schemas, which will then have `flags` properties describing their present navigation flags\n */\nexport const NavigationFlagsSchema = Type.Object({\n    navigationFlags: Type.Ref(NavigationFlagDeclarations),\n}, { $id: 'NavigationFlagsSchema' });\n/**\n * A Flags array is an array of 32 bit integers, each representing a bit string of included flags. 1 means the flag is present, 0 means it's not.\n */\nexport const Flags = Type.Array(Type.Integer({ minimum: 0, maximum: Math.pow(2, 32) - 1 }), {\n    $id: 'Flags',\n});\n/**\n * A utility type that allows you to indicate a type has a Flags array.\n *\n * @category Schema\n *\n */\nexport const WithFlags = Type.Object({\n    flags: Type.Ref(Flags),\n}, {\n    $id: 'WithFlags',\n});\n/**\n * A utility type that combines {@link GeometryAnchor} with {@link Flags}.\n * This type is useful when you need to attach navigation flags to geometry anchors.\n */\nexport const FlaggedGeometryAnchor = Type.Intersect([GeometryAnchor, WithFlags], {\n    $id: 'FlaggedGeometryAnchor',\n});\n/**\n * A utility type that allows you to make an object's geometryAnchor property a {@link FlaggedGeometryAnchor}.\n *\n */\nexport const WithFlaggedGeometryAnchor = Type.Object({\n    /**\n     * A geometry anchor with navigation flags attached.\n     * @see {@link FlaggedGeometryAnchor}\n     */\n    geometryAnchor: FlaggedGeometryAnchor,\n}, {\n    $id: 'WithFlaggedGeometryAnchor',\n});\n/**\n * A utility type that allows you to make an object's geometryAnchors property an array of {@link FlaggedGeometryAnchor}s.\n *\n * @category Schema\n */\nexport const WithFlaggedGeometryAnchors = Type.Object({\n    geometryAnchors: Type.Array(FlaggedGeometryAnchor),\n}, {\n    $id: 'WithFlaggedGeometryAnchors',\n});\n/**\n * The NavigationFlagsExtension is used to add navigation flags to an MVF. It adds a single file, `navigationFlags.json`, to the bundle, which\n * contains a {@link NavigationFlagDeclarations} object. Other extensions may depend on this extension for shared Declarations,\n * and add utility types like {@link WithFlags} or {@link WithFlaggedGeometryAnchor} to their schemas.\n */\nexport const NavigationFlagsExtension = {\n    name: 'ext:mvf-navigation-flags',\n    schema: NavigationFlagsSchema,\n    intoBundle: function* (data) {\n        if (data.navigationFlags == null) {\n            return;\n        }\n        yield { path: `navigationFlags.json`, contents: data.navigationFlags };\n    },\n    fromBundle: (path, contents, decode) => {\n        if (path !== 'navigationFlags.json') {\n            return;\n        }\n        const flags = decode(contents);\n        return { navigationFlags: flags };\n    },\n    references: [\n        NavigationFlagDeclaration,\n        NavigationFlagDeclarations,\n        Flags,\n        FlaggedGeometryAnchor,\n        WithFlaggedGeometryAnchor,\n        WithFlaggedGeometryAnchors,\n    ],\n    integrityCheck: validateNavigationFlags,\n};\n//# sourceMappingURL=index.js.map","import { createGeometryLookup } from '@mappedin/mvf-core/geometry';\nimport { ensureUniqueIds } from '@mappedin/mvf-core/utils';\nimport { determineMaxNavigationFlags, validateFlags } from '@mappedin/mvf-navigation-flags';\nimport { ok } from '@mappedin/safe-types/result';\nexport const validateConnections = (data) => {\n    if (data.connections == null) {\n        return ok(true);\n    }\n    const uniqueConnectionIds = ensureUniqueIds(data.connections, (connection) => connection.id, 'connections');\n    if (uniqueConnectionIds.isErr()) {\n        return uniqueConnectionIds;\n    }\n    const anchorLookup = createGeometryLookup(data);\n    const maxFlags = determineMaxNavigationFlags(data);\n    for (const [i, connection] of data.connections.entries()) {\n        for (const [j, entrance] of connection.entrances.entries()) {\n            const result = anchorLookup(entrance.floorId, entrance.geometryId);\n            if (result.isErr()) {\n                return result;\n            }\n            const flagsResult = validateFlags(entrance.flags, maxFlags, `connections[${i}].entrances[${j}]`);\n            if (flagsResult.isErr()) {\n                return flagsResult;\n            }\n        }\n        for (const [j, exit] of connection.exits.entries()) {\n            const result = anchorLookup(exit.floorId, exit.geometryId);\n            if (result.isErr()) {\n                return result;\n            }\n            const flagsResult = validateFlags(exit.flags, maxFlags, `connections[${i}].exits[${j}]`);\n            if (flagsResult.isErr()) {\n                return flagsResult;\n            }\n        }\n    }\n    return ok(true);\n};\n//# sourceMappingURL=integrity.js.map","import { SafeStringEnum, WithDetails, WithExtra } from '@mappedin/mvf-core/utility-types';\nimport { Ident } from '@mappedin/mvf-core';\nimport { FlaggedGeometryAnchor, Flags, } from '@mappedin/mvf-navigation-flags';\nimport { Type } from '@sinclair/typebox';\nimport { CONNECTION_TYPE_VALUES } from './connection-types.js';\nimport { validateConnections } from './integrity.js';\nexport { CONNECTION_TYPES, CONNECTION_TYPE, isConnectionType } from './connection-types.js';\n/**\n * A unique identifier for connections.\n *\n * **Important**: While the suffix can be any length, it is strongly recommended to use\n * suffixes of at least 8 characters to ensure uniqueness and avoid collisions.\n */\nexport const ConnectionId = Ident('c', 'ConnectionId');\n/**\n * The type of the connection. 'unknown' is not a normal type, but is used to indicate\n * that the connection is of a type that was not recognized by the producer or consumer of the MVF. An application should handle 'unknown' as a case and not crash,\n * though it is up to the application to decide whether to display a generic connection or filter them out.\n * Note: If a developer is reading an MVF directly, they MAY see types that are not present in this list. They are responsible for\n * downgrading these to `unknown`.\n */\nexport const ConnectionType = SafeStringEnum(CONNECTION_TYPE_VALUES, { $id: 'ConnectionType' }).schema;\n/**\n * A Connection is a direct connection between two or more points in space. They can connect different floors,\n * or the same floor. They can be used to represent elevators, escalators, stairs, doors, ramps, etc.\n *\n * They are different from Nodes, which generally represent a connected graph of walkable spaces on the same floor, who's cost includes\n * the distance between the nodes. With a connection, the cost to traverse it is a combination of the static entry cost plus another cost per floor transitioned.\n *\n * This means paths through a Connection like a Travelator may be faster than walking. Or an Elevator may be more expensive\n * than an escalator for one floor, but cheaper for ten.\n */\nexport const Connection = Type.Intersect([\n    Type.Object({\n        /**\n         * A unique identifier for the connection.\n         */\n        id: Type.Ref(ConnectionId, { description: 'The unique identifier for the connection.' }),\n        /**\n         * The entrances to the connection.\n         */\n        entrances: Type.Array(Type.Ref(FlaggedGeometryAnchor)),\n        /**\n         * The exits from the connection.\n         */\n        exits: Type.Array(Type.Ref(FlaggedGeometryAnchor)),\n        /**\n         * The cost to enter the connection. Equivalent to the number of meters\n         * a person should walk out of their way to avoid entering the connection.\n         * For example, an elevator may have a high cost of 10-20 meters to represent\n         * the wait time, but stairs and escalators may have a cost of 0 since a person\n         * can walk right on. See also `floorCostMultiplier`.\n         *\n         * The straight line distance between entrance and exit is NOT used as part of\n         * the overall cost to use a connection. This means that for a journey through\n         * a connection that enters and exits on the same floor, the cost is ONLY\n         * this `entryCost`.\n         *\n         * That means:\n         *\n         * a) the entryCost should be set to represent the number of walking meters it's\n         *    worth it walk rather than using this connection. So for something faster\n         *    than walking like a travelator, if it crosses a real distance of 100m and has\n         *    a cost of 50, it is saying it's actually worth walking 49m backwards to get on\n         *    the travelator rather than continuing straight on.\n         *\n         * b) You cannot really have a same-floor connection with more than a single set\n         *    of entrances and exits, or the cost will probably not be correct.\n         *\n         * c) You cannot naively use A* with Connections, because the straight line distance\n         *    heuristic will not be admissible.\n         *\n         * @minimum 0\n         */\n        entryCost: Type.Number({ description: 'The cost to enter the connection.', minimum: 0 }),\n        /**\n         * The cost multiplier for the floor. This is multiplied by absolute difference\n         * in elevation between the entrance and exit of the connection to produce a cost in\n         * meters added to the entry cost. For example, if a person is attempting to enter\n         * on the 1st floor and exit on the 10th floor, the cost will be 9 * floorCostMultiplier\n         * meters.\n         *\n         * This is used to represent the different costs of changing elevations. For example, an elevator\n         * may have a floor cost multiplier of 1, where stairs may have a floor cost multiplier of 10,\n         * meaning it's worth walking 10 meters further to get to an elevator instead of stairs for every floor change.\n         *\n         * Combined with `entryCost`, this allows for a more accurate representation of the cost of using a connection.\n         *\n         * Note: If a journey through a connection enters and exits on the same floor, the cost is ONLY the `entryCost`.\n         * The floor cost multiplier will be 0, and the straight line distance between entrance and exit is NOT used.\n         *\n         * @minimum 1\n         */\n        floorCostMultiplier: Type.Number({ description: 'The cost multiplier for each floor transitioned.', minimum: 1 }),\n        /**\n         * The type of connection. A SafeStringEnum, meaning 'unknown', meaning that a Connection parsed using this version of the MVF specification\n         * that includes a new connection type must be downgraded to 'unknown'. An application should handle 'unknown' as a case and not crash.\n         */\n        type: Type.Ref(ConnectionType, { description: 'The type of connection.' }),\n    }),\n    WithDetails,\n    WithExtra,\n], { $id: 'ConnectionsProperties' });\nexport const ConnectionsCollection = Type.Array(Type.Ref(Connection), { $id: 'ConnectionsCollection' });\nexport const ConnectionsExtensionSchema = Type.Object({\n    connections: Type.Ref(ConnectionsCollection),\n}, { $id: 'ConnectionsExtensionSchema' });\nconst connectionsFilePath = 'connections.json';\nexport const ConnectionsExtension = {\n    name: 'ext:connections',\n    schema: ConnectionsExtensionSchema,\n    intoBundle: function* (data) {\n        if (data.connections == null) {\n            return;\n        }\n        yield { path: connectionsFilePath, contents: data.connections };\n    },\n    fromBundle: (path, contents, decode) => {\n        if (path !== connectionsFilePath) {\n            return;\n        }\n        return { connections: decode(contents) };\n    },\n    references: [Connection, ConnectionsCollection, ConnectionType, ConnectionId, FlaggedGeometryAnchor, Flags],\n    integrityCheck: validateConnections,\n};\n//# sourceMappingURL=index.js.map","import { createGeometryLookup } from '@mappedin/mvf-core/geometry';\nimport { ok } from '@mappedin/safe-types/result';\nexport const validateDefaultStyle = (data) => {\n    if (data.defaultStyle == null) {\n        return ok(true);\n    }\n    const anchorLookup = createGeometryLookup(data);\n    for (const style of Object.values(data.defaultStyle)) {\n        if (style == null) {\n            continue;\n        }\n        for (const anchor of style.geometryAnchors) {\n            const result = anchorLookup(anchor.floorId, anchor.geometryId);\n            if (result.isErr()) {\n                return result;\n            }\n        }\n    }\n    return ok(true);\n};\n//# sourceMappingURL=integrity.js.map","/**\n * The default style extension for an MVF. This describes things like the color, height and opacity that should be applied to Geometry.\n *\n * Not every geometry will have a default style, and if it does not, it should not be rendered.\n *\n * @module @mappedin/mvf-default-style\n * @packageDocumentation\n */\nimport { WithExtra, WithGeometryAnchors } from '@mappedin/mvf-core/utility-types';\nimport { Type } from '@sinclair/typebox';\nimport { validateDefaultStyle } from './integrity.js';\n/**\n * Provides some basic styling information for a set of geometry. Geometry does\n * not have to have a default style associated with it. In these cases, geometry\n * SHOULD not be rendered.\n */\nexport const DefaultStyle = Type.Intersect([\n    WithGeometryAnchors(),\n    WithExtra,\n    Type.Object({\n        /**\n         * How far off the bottom of the floor the objects with this style\n         * should be drawn at, in meters. This is permitted to be negative,\n         * so applications that respect default styles will need to choose\n         * how this field is interpreted.\n         */\n        altitude: Type.Number({\n            description: 'How far off the bottom of the floor the objects with this style should be drawn, in meters.',\n        }),\n        /**\n         * Color should be represented with a hash (#), followed by 6 hexadecimal digits.\n         * ex: #RRGGBB\n         *\n         * @pattern ^#[0-9a-fA-F]{6}$\n         */\n        color: Type.String({\n            pattern: '^#[0-9a-fA-F]{6}$',\n            description: 'Color should be represented with a hash (#), followed by 6 hexadecimal digits. ex: #RRGGBB',\n        }),\n        /**\n         * The height of the objects belonging to this layer, in meters.\n         *\n         * @minimum 0\n         */\n        height: Type.Number({ minimum: 0, description: 'The height of the objects belonging to this layer, in meters.' }),\n        /**\n         * @minimum 0\n         * @maximum 1\n         */\n        opacity: Type.Number({\n            minimum: 0,\n            maximum: 1,\n            description: 'The opacity of the objects belonging to this layer, from 0 to 1.',\n        }),\n        /**\n         * The buffer amount to apply to the geometry, in meters. This can\n         * be used to inflate line string geometry for walls, but might also\n         * be applicable as a way to grow or shrink polygon geometry for\n         * aesthetic purposes. Can be negative. Behaviour is undefined if\n         * the buffer amount is negative and exceeds the geometry's\n         * dimensions when applied, however applications should likely choose\n         * not to draw the geometry in question.\n         */\n        buffer: Type.Number({\n            description: 'The buffer amount to apply to the geometry, in meters. This can be used to inflate line string geometry for walls, but might also be applicable as a way to grow or shrink polygon geometry for aesthetic purposes. Can be negative.',\n        }),\n        /**\n         * Whether or not the objects with this style should be hidden from\n         * view. This is generally preferred over setting opacity to 0 to\n         * handle cases where an application may force this geometry to be\n         * rendered, as this is simply a hint. If unspecified, the default\n         * behaviour is to have the geometry visible.\n         */\n        hidden: Type.Optional(Type.Boolean({ description: 'Whether or not the objects with this style should be hidden.' })),\n        /**\n         * Optional color for the top face of extruded geometry.\n         * If not specified, falls back to color.\n         *\n         * @pattern ^#[0-9a-fA-F]{6}$\n         */\n        topColor: Type.Optional(Type.String({\n            pattern: '^#[0-9a-fA-F]{6}$',\n            description: 'Optional color for the top face of extruded geometry. If not specified, falls back to color.',\n        })),\n    }),\n], { $id: 'DefaultStyle' });\nexport const DefaultStyleCollection = Type.Record(Type.String(), Type.Ref(DefaultStyle), {\n    $id: 'DefaultStyleCollection',\n    additionalProperties: false,\n});\nexport const DefaultStyleSchema = Type.Object({\n    defaultStyle: Type.Ref(DefaultStyleCollection),\n}, { $id: 'DefaultStyleSchema' });\nexport const DefaultStyleExtension = {\n    name: 'ext:mvf-default-style',\n    schema: DefaultStyleSchema,\n    intoBundle: function* (data) {\n        if (data.defaultStyle == null) {\n            return;\n        }\n        yield { path: `default-style.json`, contents: data.defaultStyle };\n    },\n    fromBundle: (path, contents, decode) => {\n        if (path !== 'default-style.json') {\n            return;\n        }\n        return { defaultStyle: decode(contents) };\n    },\n    references: [DefaultStyle, DefaultStyleCollection],\n    integrityCheck: validateDefaultStyle,\n};\n//# sourceMappingURL=index.js.map","export var FloorStacksIntegrityErrorKind;\n(function (FloorStacksIntegrityErrorKind) {\n    FloorStacksIntegrityErrorKind[\"InvalidDefaultFloorError\"] = \"InvalidDefaultFloorError\";\n})(FloorStacksIntegrityErrorKind || (FloorStacksIntegrityErrorKind = {}));\n//# sourceMappingURL=error.js.map","import { createFloorLookup } from '@mappedin/mvf-core/floors';\nimport { ensureUniqueIds } from '@mappedin/mvf-core/utils';\nimport { err, ok } from '@mappedin/safe-types/result';\nimport { FloorStacksIntegrityErrorKind } from './error.js';\nexport const validateFloorStacks = (data) => {\n    if (data.floorStacks == null) {\n        return ok(true);\n    }\n    const uniqueFloorStackIds = ensureUniqueIds(data.floorStacks, (floorStack) => floorStack.id, 'floorStacks');\n    if (uniqueFloorStackIds.isErr()) {\n        return uniqueFloorStackIds;\n    }\n    const floorLookup = createFloorLookup(data);\n    for (const fs of data.floorStacks) {\n        for (const floorId of fs.floors) {\n            const result = floorLookup(floorId);\n            if (result.isErr()) {\n                return result;\n            }\n        }\n        if (fs.defaultFloor != null && !fs.floors.includes(fs.defaultFloor)) {\n            return err({\n                kind: FloorStacksIntegrityErrorKind.InvalidDefaultFloorError,\n                properties: { floorStackId: fs.id, floorId: fs.defaultFloor },\n            });\n        }\n    }\n    return ok(true);\n};\n//# sourceMappingURL=integrity.js.map","import { FloorId, Ident } from '@mappedin/mvf-core/identifiers';\nimport { WithDetails } from '@mappedin/mvf-core/utility-types';\nimport { Type } from '@sinclair/typebox';\nimport { validateFloorStacks } from './integrity.js';\n/**\n * A unique identifier for floor stacks.\n *\n * **Important**: While the suffix can be any length, it is strongly recommended to use\n * suffixes of at least 8 characters to ensure uniqueness and avoid collisions.\n */\nexport const FloorStackId = Ident('fs', 'FloorStackId');\nexport const FloorStack = Type.Intersect([\n    Type.Object({\n        /**\n         * The unique identifier for the floor stack.\n         */\n        id: Type.Ref(FloorStackId, { description: 'The unique identifier for the floor stack.' }),\n        /**\n         * The floors that are part of this floor stack. At least one floor\n         * MUST be present. A floor stack MUST NOT contain duplicate floors.\n         * Floors may appear in any order, in any number of floor stacks, or\n         * no floor stacks at all. It is up to the the consumer of this data\n         * to decide how to interpret these scenarios.\n         */\n        floors: Type.Array(Type.Ref(FloorId), {\n            uniqueItems: true,\n            minItems: 1,\n            description: 'The floors that are part of this floor stack.',\n        }),\n        /**\n         * The default floor for the floor stack. Optional. If unspecified,\n         * it is up to the consumer of this data to decide which floor is\n         * used as the default. Generally, a safe choice is the floor with\n         * elevation ordinal closest to 0. This MUST be a floor that is\n         * present in the `floors` array.\n         */\n        defaultFloor: Type.Optional(Type.Ref(FloorId, { description: 'The default floor for the floor stack.' })),\n    }),\n    WithDetails,\n], { $id: 'FloorStacksProperties' });\nexport const FloorStackCollection = Type.Array(Type.Ref(FloorStack), { $id: 'FloorStackCollection' });\nexport const FloorStackExtensionSchema = Type.Object({\n    floorStacks: Type.Ref(FloorStackCollection),\n}, { $id: 'FloorStackExtensionSchema' });\nconst filePath = 'floor-stacks.json';\nexport const FloorStackExtension = {\n    name: 'ext:floor-stacks',\n    schema: FloorStackExtensionSchema,\n    intoBundle: function* (data) {\n        if (data.floorStacks == null) {\n            return;\n        }\n        yield { path: filePath, contents: data.floorStacks };\n    },\n    fromBundle: (path, contents, decode) => {\n        if (path !== filePath) {\n            return;\n        }\n        return { floorStacks: decode(contents) };\n    },\n    references: [FloorStackId, FloorStack, FloorStackCollection],\n    integrityCheck: validateFloorStacks,\n};\nexport { FloorStacksIntegrityErrorKind } from './error.js';\n//# sourceMappingURL=index.js.map","export var FacadeIntegrityErrorKind;\n(function (FacadeIntegrityErrorKind) {\n    FacadeIntegrityErrorKind[\"MissingFloorStackError\"] = \"MissingFloorStackError\";\n    FacadeIntegrityErrorKind[\"UnknownFloorStackError\"] = \"UnknownFloorStackError\";\n})(FacadeIntegrityErrorKind || (FacadeIntegrityErrorKind = {}));\n//# sourceMappingURL=error.js.map","import { createFloorLookup } from '@mappedin/mvf-core/floors';\nimport { createGeometryLookup } from '@mappedin/mvf-core/geometry';\nimport { typedEntries } from '@mappedin/mvf-core/utils';\nimport { err, ok } from '@mappedin/safe-types/result';\nimport { FacadeIntegrityErrorKind } from './error.js';\nexport const validateFacade = (data) => {\n    if (data.facade == null) {\n        return ok(true);\n    }\n    if (data.floorStacks == null) {\n        return err({ kind: FacadeIntegrityErrorKind.MissingFloorStackError, properties: null });\n    }\n    const floorStackIds = new Set(data.floorStacks.map((floorStack) => floorStack.id));\n    const anchorLookup = createGeometryLookup(data);\n    const floorLookup = createFloorLookup(data);\n    for (const [floorId, facades] of typedEntries(data.facade)) {\n        if (facades == null) {\n            continue;\n        }\n        const floor = floorLookup(floorId);\n        if (floor.isErr()) {\n            return floor;\n        }\n        for (const facade of facades) {\n            const { floorStackId, geometryIds } = facade;\n            if (!floorStackIds.has(floorStackId)) {\n                return err({\n                    kind: FacadeIntegrityErrorKind.UnknownFloorStackError,\n                    properties: { floorStackId: floorStackId },\n                });\n            }\n            for (const geometryId of geometryIds) {\n                const result = anchorLookup(floorId, geometryId);\n                if (result.isErr()) {\n                    return result;\n                }\n            }\n        }\n    }\n    return ok(true);\n};\n//# sourceMappingURL=integrity.js.map","import { FloorId } from '@mappedin/mvf-core';\nimport { PartialRecord, WithGeometryIds } from '@mappedin/mvf-core/utility-types';\nimport { typedKeys } from '@mappedin/mvf-core/utils';\nimport { FloorStackId } from '@mappedin/mvf-floor-stacks';\nimport { Type } from '@sinclair/typebox';\nimport { validateFacade } from './integrity.js';\nexport const Facade = Type.Intersect([\n    Type.Object({\n        floorStackId: Type.Ref(FloorStackId),\n    }),\n    WithGeometryIds,\n], { $id: 'Facade' });\nexport const FacadeExtensionSchema = Type.Object({\n    facade: PartialRecord(Type.Record(FloorId, Type.Array(Type.Ref(Facade)), { additionalProperties: false })),\n}, { $id: 'FacadeExtensionSchema' });\nconst FacadeFilePath = /^facade\\/(.*)\\.json$/;\nexport const FacadeExtension = {\n    name: 'ext:facade',\n    schema: FacadeExtensionSchema,\n    intoBundle: function* (data) {\n        if (data.facade == null) {\n            return;\n        }\n        for (const floorId of typedKeys(data.facade)) {\n            yield { path: `facade/${floorId}.json`, contents: data.facade[floorId] };\n        }\n    },\n    fromBundle: (path, contents, decode) => {\n        const floorId = path.match(FacadeFilePath)?.[1];\n        if (!floorId) {\n            return;\n        }\n        return { facade: { [floorId]: decode(contents) } };\n    },\n    references: [FloorStackId, Facade],\n    integrityCheck: validateFacade,\n};\nexport { FacadeIntegrityErrorKind } from './error.js';\n//# sourceMappingURL=index.js.map","import { createGeometryLookup } from '@mappedin/mvf-core/geometry';\nimport { typedEntries } from '@mappedin/mvf-core/utils';\nimport { ok } from '@mappedin/safe-types/result';\nexport const validateFloorImages = (data) => {\n    if (data.floorImages == null) {\n        return ok(true);\n    }\n    const lookupData = createGeometryLookup(data);\n    for (const [floorId, floorImagesCollection] of typedEntries(data.floorImages)) {\n        if (floorImagesCollection == null) {\n            continue;\n        }\n        for (const floorImage of floorImagesCollection.features) {\n            if (!('geometryId' in floorImage.properties)) {\n                continue;\n            }\n            const geometryId = floorImage.properties.geometryId;\n            const geometry = lookupData(floorId, geometryId);\n            if (geometry.isErr()) {\n                return geometry;\n            }\n        }\n    }\n    return ok(true);\n};\n//# sourceMappingURL=integrity.js.map","import { Feature, FeatureCollection, Point } from '@mappedin/mvf-core/geojson';\nimport { FloorId } from '@mappedin/mvf-core/identifiers';\nimport { PartialRecord, WithGeometryId } from '@mappedin/mvf-core/utility-types';\nimport { typedKeys } from '@mappedin/mvf-core/utils';\nimport { Type } from '@sinclair/typebox';\nimport { validateFloorImages } from './integrity.js';\nexport const BaseFloorImageProperties = Type.Object({\n    /**\n     * The path to the image. This will be a remote URL.\n     */\n    path: Type.String({ format: 'uri', description: 'The path to the image. This will be a remote URL.' }),\n    /**\n     * The width of the image when represented on the map, in meters.\n     *\n     * @minimum 0\n     */\n    width: Type.Number({ minimum: 0, description: 'The width of the image when represented on the map, in meters.' }),\n    /**\n     * The height of the image when represented on the map, in meters.\n     *\n     * @minimum 0\n     */\n    height: Type.Number({ minimum: 0, description: 'The height of the image when represented on the map, in meters.' }),\n    /**\n     * Rotation in degrees, about the center of the image. North is 0, east is 90.\n     *\n     * @minimum 0\n     * @maximum 360\n     */\n    rotation: Type.Number({\n        minimum: 0,\n        maximum: 360,\n        description: 'Rotation in degrees, about the center of the image. North is 0, east is 90.',\n    }),\n}, { $id: 'BaseFloorImageProperties' });\nexport const AnchoredFloorImageProperties = Type.Intersect([Type.Ref(BaseFloorImageProperties), WithGeometryId], {\n    $id: 'AnchoredFloorImageProperties',\n});\nexport const FloatingFloorImageProperties = Type.Intersect([\n    Type.Ref(BaseFloorImageProperties),\n    Type.Object({\n        /**\n         * How high to position the image, in meters, relative to the ground plane.\n         *\n         * @minimum 0\n         */\n        verticalOffset: Type.Number({\n            minimum: 0,\n            description: 'How high to position the image, in meters, relative to the ground plane.',\n        }),\n    }),\n], { $id: 'FloatingFloorImageProperties' });\nexport const FloorImageProperties = Type.Union([AnchoredFloorImageProperties, FloatingFloorImageProperties], {\n    $id: 'FloorImageProperties',\n});\nexport const FloorImageFeature = Feature(Type.Ref(Point), FloorImageProperties, { $id: 'FloorImageFeature' });\nexport const FloorImageCollection = FeatureCollection(Type.Ref(FloorImageFeature), { $id: 'FloorImageCollection' });\nexport const FloorImagesExtensionSchema = Type.Object({\n    floorImages: PartialRecord(Type.Record(FloorId, Type.Ref(FloorImageCollection), { additionalProperties: false })),\n}, { $id: 'FloorImagesExtensionSchema' });\nconst FloorImagesFilePath = /^floorImages\\/(.*)\\.geojson$/;\nexport const FloorImagesExtension = {\n    name: 'ext:floor-images',\n    schema: FloorImagesExtensionSchema,\n    intoBundle: function* (data) {\n        if (data.floorImages == null) {\n            return;\n        }\n        for (const floorId of typedKeys(data.floorImages)) {\n            yield { path: `floorImages/${floorId}.geojson`, contents: data.floorImages[floorId] };\n        }\n    },\n    fromBundle: (path, contents, decode) => {\n        const floorId = path.match(FloorImagesFilePath)?.[1];\n        if (!floorId) {\n            return;\n        }\n        return { floorImages: { [floorId]: decode(contents) } };\n    },\n    references: [\n        BaseFloorImageProperties,\n        AnchoredFloorImageProperties,\n        FloatingFloorImageProperties,\n        FloorImageProperties,\n        FloorImageFeature,\n        FloorImageCollection,\n    ],\n    integrityCheck: validateFloorImages,\n};\n//# sourceMappingURL=index.js.map","import { createGeometryLookup } from '@mappedin/mvf-core/geometry';\nimport { typedEntries, typedKeys } from '@mappedin/mvf-core/utils';\nimport { ok } from '@mappedin/safe-types/result';\nexport const validateKinds = (data) => {\n    if (data.kinds == null) {\n        return ok(true);\n    }\n    const geometryLookup = createGeometryLookup(data);\n    for (const [floorId, kindsCollection] of typedEntries(data.kinds)) {\n        if (kindsCollection == null) {\n            continue;\n        }\n        for (const geometryId of typedKeys(kindsCollection)) {\n            const geometry = geometryLookup(floorId, geometryId);\n            if (geometry.isErr()) {\n                return geometry;\n            }\n        }\n    }\n    return ok(true);\n};\n//# sourceMappingURL=integrity.js.map","import { FloorId, GeometryId } from '@mappedin/mvf-core/identifiers';\nimport { PartialRecord, SafeStringEnum } from '@mappedin/mvf-core/utility-types';\nimport { typedKeys } from '@mappedin/mvf-core/utils';\nimport { Type } from '@sinclair/typebox';\nimport { validateKinds } from './integrity.js';\nimport { KIND_VALUES } from './kind-values.js';\nexport { KIND_VALUES, KINDS, KIND, isKind } from './kind-values.js';\nexport const Kind = SafeStringEnum(KIND_VALUES, { $id: 'Kind' }).schema;\nexport const GeometryKinds = PartialRecord(Type.Record(GeometryId, Type.Ref(Kind), { additionalProperties: false, $id: 'GeometryKinds' }));\nexport const KindsExtensionSchema = Type.Object({\n    kinds: PartialRecord(Type.Record(FloorId, Type.Ref(GeometryKinds), { additionalProperties: false })),\n}, { $id: 'KindsExtensionSchema' });\nconst KindsFilePath = /^kinds\\/(.*)\\.json$/;\nexport const KindsExtension = {\n    name: 'ext:kinds',\n    schema: KindsExtensionSchema,\n    intoBundle: function* (data) {\n        if (data.kinds == null) {\n            return;\n        }\n        for (const floorId of typedKeys(data.kinds)) {\n            yield { path: `kinds/${floorId}.json`, contents: data.kinds[floorId] };\n        }\n    },\n    fromBundle: (path, contents, decode) => {\n        const floorId = path.match(KindsFilePath)?.[1];\n        if (!floorId) {\n            return;\n        }\n        return { kinds: { [floorId]: decode(contents) } };\n    },\n    references: [Kind, GeometryKinds],\n    integrityCheck: validateKinds,\n};\n//# sourceMappingURL=index.js.map","export var NodesIntegrityErrorKind;\n(function (NodesIntegrityErrorKind) {\n    NodesIntegrityErrorKind[\"UnknownNeighbor\"] = \"UnknownNeighbor\";\n    NodesIntegrityErrorKind[\"SelfReference\"] = \"SelfReference\";\n})(NodesIntegrityErrorKind || (NodesIntegrityErrorKind = {}));\n//# sourceMappingURL=errors.js.map","import { createGeometryLookup } from '@mappedin/mvf-core/geometry';\nimport { ensureUniqueIds } from '@mappedin/mvf-core/utils';\nimport { typedEntries } from '@mappedin/mvf-core/utils';\nimport { determineMaxNavigationFlags, validateFlags } from '@mappedin/mvf-navigation-flags';\nimport { err, ok } from '@mappedin/safe-types/result';\nimport { NodesIntegrityErrorKind } from './errors.js';\nexport const validateNodes = (data) => {\n    if (data.nodes == null) {\n        return ok(true);\n    }\n    const uniqueNodeIds = ensureUniqueIds(data.nodes, (node) => node.properties.id, 'nodes');\n    if (uniqueNodeIds.isErr()) {\n        return uniqueNodeIds;\n    }\n    const geometryLookup = createGeometryLookup(data);\n    const maxFlags = determineMaxNavigationFlags(data);\n    for (const [floorId, nodesCollection] of typedEntries(data.nodes)) {\n        if (nodesCollection == null) {\n            continue;\n        }\n        const knownNodeIds = new Set(nodesCollection.features.map((node) => node.properties.id));\n        for (const [nodeIndex, node] of nodesCollection.features.entries()) {\n            for (const geometryId of node.properties.geometryIds) {\n                const geometry = geometryLookup(floorId, geometryId);\n                if (geometry.isErr()) {\n                    return geometry;\n                }\n            }\n            for (const [neighborIndex, neighbor] of node.properties.neighbors.entries()) {\n                if (!knownNodeIds.has(neighbor.id)) {\n                    return err({\n                        kind: NodesIntegrityErrorKind.UnknownNeighbor,\n                        properties: { floorId, nodeId: node.properties.id, neighborId: neighbor.id },\n                    });\n                }\n                if (neighbor.id === node.properties.id) {\n                    return err({\n                        kind: NodesIntegrityErrorKind.SelfReference,\n                        properties: { floorId, nodeId: node.properties.id },\n                    });\n                }\n                const flagsResult = validateFlags(neighbor.flags, maxFlags, `nodes[\"${floorId}\"].features[${nodeIndex}].properties.neighbors[${neighborIndex}]`);\n                if (flagsResult.isErr()) {\n                    return flagsResult;\n                }\n            }\n        }\n    }\n    return ok(true);\n};\n//# sourceMappingURL=integrity.js.map","import { Feature, FeatureCollection, Point } from '@mappedin/mvf-core/geojson';\nimport { FloorId, Ident } from '@mappedin/mvf-core/identifiers';\nimport { PartialRecord, WithGeometryIds } from '@mappedin/mvf-core/utility-types';\nimport { typedKeys } from '@mappedin/mvf-core/utils';\nimport { WithFlags, } from '@mappedin/mvf-navigation-flags';\nimport { Type } from '@sinclair/typebox';\nimport { validateNodes } from './integrity.js';\nexport * from './errors.js';\n/**\n * A unique identifier for nodes.\n *\n * **Important**: While the suffix can be any length, it is strongly recommended to use\n * suffixes of at least 8 characters to ensure uniqueness and avoid collisions.\n */\nexport const NodeId = Ident('n', 'NodeId');\nexport const NodeNeighbor = Type.Intersect([\n    Type.Object({\n        /**\n         * The unique identifier for the node.\n         */\n        id: Type.Ref(NodeId, { description: 'The unique identifier for the node.' }),\n        /**\n         * The extra cost to traverse to the node, above the straight-line distance.\n         */\n        extraCost: Type.Number({\n            minimum: 0,\n            description: 'The extra cost to traverse to the node, above the straight-line distance.',\n        }),\n    }),\n    WithFlags,\n], { $id: 'NodeNeighbor' });\nexport const NodeProperties = Type.Intersect([\n    Type.Object({\n        /**\n         * The unique identifier for the node.\n         */\n        id: Type.Ref(NodeId, { description: 'The unique identifier for the node.' }),\n        /**\n         * The neighbors of the node.\n         */\n        neighbors: Type.Array(Type.Ref(NodeNeighbor), { description: 'The neighbors of the node.' }),\n    }),\n    WithGeometryIds,\n], { $id: 'NodeProperties' });\nexport const NodeFeature = Feature(Type.Ref(Point), NodeProperties, { $id: 'NodeFeature' });\nexport const NodeCollection = FeatureCollection(Type.Ref(NodeFeature), { $id: 'NodeCollection' });\nexport const NodesExtensionSchema = Type.Object({\n    nodes: PartialRecord(Type.Record(FloorId, Type.Ref(NodeCollection), { additionalProperties: false })),\n}, { $id: 'NodesExtensionSchema' });\nconst NodesFilePath = /^nodes\\/(.*)\\.(geo)?json$/;\nexport const NodesExtension = {\n    name: 'ext:nodes',\n    schema: NodesExtensionSchema,\n    intoBundle: function* (data) {\n        if (data.nodes == null) {\n            return;\n        }\n        for (const floorId of typedKeys(data.nodes)) {\n            yield { path: `nodes/${floorId}.geojson`, contents: data.nodes[floorId] };\n        }\n    },\n    fromBundle: (path, contents, decode) => {\n        const floorId = path.match(NodesFilePath)?.[1];\n        if (!floorId) {\n            return;\n        }\n        return { nodes: { [floorId]: decode(contents) } };\n    },\n    references: [NodeId, NodeNeighbor, NodeProperties, NodeFeature, NodeCollection],\n    integrityCheck: validateNodes,\n};\nexport { NodesIntegrityErrorKind } from './errors.js';\n//# sourceMappingURL=index.js.map","export var OutdoorsIntegrityErrorKind;\n(function (OutdoorsIntegrityErrorKind) {\n    OutdoorsIntegrityErrorKind[\"FloorInFloorStackError\"] = \"FloorInFloorStackError\";\n})(OutdoorsIntegrityErrorKind || (OutdoorsIntegrityErrorKind = {}));\n//# sourceMappingURL=error.js.map","import { createFloorLookup } from '@mappedin/mvf-core/floors';\nimport { err, ok } from '@mappedin/safe-types/result';\nimport { OutdoorsIntegrityErrorKind } from './error.js';\nexport const validateOutdoors = (data) => {\n    if (data.outdoors == null) {\n        return ok(true);\n    }\n    const floorLookup = createFloorLookup(data);\n    for (const floorId of data.outdoors.floors) {\n        const result = floorLookup(floorId);\n        if (result.isErr()) {\n            return result;\n        }\n        if (data.floorStacks != null) {\n            for (const floorStack of data.floorStacks) {\n                if (floorStack.floors.includes(floorId)) {\n                    return err({\n                        kind: OutdoorsIntegrityErrorKind.FloorInFloorStackError,\n                        properties: { floorId, floorStackId: floorStack.id },\n                    });\n                }\n            }\n        }\n    }\n    return ok(true);\n};\n//# sourceMappingURL=integrity.js.map","import { FloorId } from '@mappedin/mvf-core/identifiers';\nimport { Type } from '@sinclair/typebox';\nimport { validateOutdoors } from './integrity.js';\nexport const Outdoors = Type.Object({\n    /**\n     * A list of floor IDs that should be considered to contain outdoor\n     * features. This array MUST NOT contain duplicate values. This array\n     * MUST NOT contain any floors that are part of a floor stack, if that\n     * data is present.\n     */\n    floors: Type.Array(Type.Ref(FloorId), {\n        uniqueItems: true,\n        description: 'A list of floor IDs that should be considered to contain outdoor features.',\n    }),\n}, { $id: 'Outdoors' });\nexport const OutdoorsExtensionSchema = Type.Object({\n    outdoors: Type.Ref(Outdoors),\n}, { $id: 'OutdoorsExtensionSchema' });\nconst OutdoorsFilePath = 'outdoors.json';\nexport const OutdoorsExtension = {\n    name: 'ext:outdoors',\n    schema: OutdoorsExtensionSchema,\n    intoBundle: function* (data) {\n        if (data.outdoors == null) {\n            return;\n        }\n        yield { path: OutdoorsFilePath, contents: data.outdoors };\n    },\n    fromBundle: (path, contents, decode) => {\n        if (path !== OutdoorsFilePath) {\n            return;\n        }\n        return { outdoors: decode(contents) };\n    },\n    references: [Outdoors],\n    integrityCheck: validateOutdoors,\n};\nexport { OutdoorsIntegrityErrorKind } from './error.js';\n//# sourceMappingURL=index.js.map","export var TilesetIntegrityErrorKind;\n(function (TilesetIntegrityErrorKind) {\n    TilesetIntegrityErrorKind[\"TilesetDuplicateKeyError\"] = \"TilesetDuplicateKeyError\";\n})(TilesetIntegrityErrorKind || (TilesetIntegrityErrorKind = {}));\n//# sourceMappingURL=errors.js.map","import { err, ok } from '@mappedin/safe-types/result';\nimport { TilesetIntegrityErrorKind } from './errors.js';\nexport const validateTilesets = (data) => {\n    if (data.tileset == null) {\n        return ok(true);\n    }\n    const keys = new Set();\n    // Check default tileset\n    keys.add(data.tileset.default.key);\n    // Check other tilesets\n    if (data.tileset.others) {\n        for (const style of data.tileset.others) {\n            if (keys.has(style.key)) {\n                return err({ kind: TilesetIntegrityErrorKind.TilesetDuplicateKeyError, properties: { key: style.key } });\n            }\n            keys.add(style.key);\n        }\n    }\n    return ok(true);\n};\n//# sourceMappingURL=integrity.js.map","import { Type } from '@sinclair/typebox';\nimport { validateTilesets } from './integrity.js';\n/**\n * A tileset style definition.\n */\nexport const TilesetStyle = Type.Object({\n    /**\n     * Unique identifier for the tileset style.\n     */\n    key: Type.String({ minLength: 1, description: 'Unique identifier for the tileset style.' }),\n    /**\n     * Display name of the tileset style.\n     */\n    name: Type.String({ minLength: 1, description: 'Display name of the tileset style.' }),\n    /**\n     * URL of the tileset style. This should be a JSON file matching the\n     * MapLibre style specification.\n     */\n    url: Type.String({ format: 'uri', description: 'URL of the tileset style.' }),\n}, { $id: 'TilesetStyle', description: 'A tileset style definition.' });\n/**\n * A collection of tileset styles.\n */\nexport const TilesetCollection = Type.Object({\n    /**\n     * The default tileset style, which should be used.\n     */\n    default: Type.Ref(TilesetStyle, { description: 'The default tileset style, which should be used.' }),\n    /**\n     * Additional tileset styles that can be used.\n     */\n    others: Type.Optional(Type.Array(Type.Ref(TilesetStyle, { description: 'Additional tileset styles that can be used.' }))),\n}, { $id: 'TilesetCollection' });\nexport const TilesetExtensionSchema = Type.Object({\n    tileset: Type.Ref(TilesetCollection),\n}, { $id: 'TilesetExtensionSchema' });\nexport const TilesetExtension = {\n    name: 'ext:mvf-tileset',\n    schema: TilesetExtensionSchema,\n    intoBundle: function* (data) {\n        if (data.tileset == null) {\n            return;\n        }\n        yield { path: `tileset.json`, contents: data.tileset };\n    },\n    fromBundle: (path, contents, decode) => {\n        if (path !== 'tileset.json') {\n            return;\n        }\n        return { tileset: decode(contents) };\n    },\n    references: [TilesetStyle, TilesetCollection],\n    integrityCheck: validateTilesets,\n};\nexport { TilesetIntegrityErrorKind } from './errors.js';\n//# sourceMappingURL=index.js.map","import { FloorId, GeometryId } from '@mappedin/mvf-core/identifiers';\nimport { PartialRecord } from '@mappedin/mvf-core/utility-types';\nimport { typedKeys } from '@mappedin/mvf-core/utils';\nimport { Type } from '@sinclair/typebox';\nexport const WalkableProperties = Type.Object({}, { $id: 'WalkableProperties' });\nexport const NonWalkableProperties = Type.Object({}, { $id: 'NonWalkableProperties' });\nexport const WalkableGeometries = PartialRecord(Type.Record(GeometryId, Type.Ref(WalkableProperties), {\n    $id: 'WalkableGeometries',\n    additionalProperties: false,\n}));\nexport const NonWalkableGeometries = PartialRecord(Type.Record(GeometryId, Type.Ref(NonWalkableProperties), {\n    $id: 'NonWalkableGeometries',\n    additionalProperties: false,\n}));\nexport const TraversabilitySchema = Type.Object({\n    walkable: PartialRecord(Type.Record(FloorId, Type.Ref(WalkableGeometries), {\n        additionalProperties: false,\n    })),\n    nonwalkable: PartialRecord(Type.Record(FloorId, Type.Ref(NonWalkableGeometries), {\n        additionalProperties: false,\n    })),\n}, { $id: 'TraversabilitySchema' });\nconst WalkableFilePath = /^walkable\\/(.*)\\.json$/;\nconst NonWalkableFilePath = /^nonwalkable\\/(.*)\\.json$/;\nexport const TraversabilityExtension = {\n    name: 'ext:mvf-traversability',\n    schema: TraversabilitySchema,\n    intoBundle: function* (data) {\n        if (data.walkable != null) {\n            for (const floorId of typedKeys(data.walkable)) {\n                yield { path: `walkable/${floorId}.json`, contents: data.walkable[floorId] };\n            }\n        }\n        if (data.nonwalkable != null) {\n            for (const floorId of typedKeys(data.nonwalkable)) {\n                yield { path: `nonwalkable/${floorId}.json`, contents: data.nonwalkable[floorId] };\n            }\n        }\n    },\n    fromBundle: (path, contents, decode) => {\n        const walkableFloorId = path.match(WalkableFilePath)?.[1];\n        if (walkableFloorId != null) {\n            return { walkable: { [walkableFloorId]: decode(contents) } };\n        }\n        const nonwalkableFloorId = path.match(NonWalkableFilePath)?.[1];\n        if (nonwalkableFloorId != null) {\n            return { nonwalkable: { [nonwalkableFloorId]: decode(contents) } };\n        }\n    },\n    references: [WalkableProperties, NonWalkableProperties, WalkableGeometries, NonWalkableGeometries],\n};\nexport { TraversabilityIntegrityErrorKind } from './error.js';\n//# sourceMappingURL=index.js.map","import { AnnotationsExtension } from '@mappedin/mvf-annotations';\nimport { CMSExtension } from '@mappedin/mvf-cms';\nimport { ConnectionsExtension } from '@mappedin/mvf-connections';\nimport { type DecompressError, type MVFParserTransformedBundle, createParser } from '@mappedin/mvf-core';\nimport { DefaultStyleExtension } from '@mappedin/mvf-default-style';\nimport { FacadeExtension } from '@mappedin/mvf-facade';\nimport { FloorImagesExtension } from '@mappedin/mvf-floor-images';\nimport { FloorStackExtension } from '@mappedin/mvf-floor-stacks';\nimport { KindsExtension } from '@mappedin/mvf-kinds';\nimport { LocationsExtension } from '@mappedin/mvf-locations';\nimport { NavigationFlagsExtension } from '@mappedin/mvf-navigation-flags';\nimport { NodesExtension } from '@mappedin/mvf-nodes';\nimport { OutdoorsExtension } from '@mappedin/mvf-outdoors';\nimport { TilesetExtension } from '@mappedin/mvf-tileset';\nimport { TraversabilityExtension } from '@mappedin/mvf-traversability';\nimport { type Result, err, ok } from '@mappedin/safe-types/result';\nimport type { ParsedMVF } from '../types/bundle.js';\nimport type { ConvertOptions } from './builderOptions.js';\nimport { convertUnzippedStandardMVFv3ToParsedMVFv2 } from './convert.js';\nimport type { CenterCalculator, CenterStrategy } from './geoCenter.js';\n\nexport { convertUnzippedStandardMVFv3ToParsedMVFv2 };\nexport type { ConvertOptions, CenterStrategy, CenterCalculator };\n\n/**\n * A parser to unzip and extract an MVFv3 object.\n */\nexport const STANDARD_MVF_V3_PARSER = createParser()\n\t.extendOptional(NavigationFlagsExtension)\n\t.extendOptional(NodesExtension)\n\t.extendOptional(ConnectionsExtension)\n\t.extendOptional(KindsExtension)\n\t.extendOptional(TraversabilityExtension)\n\t.extendOptional(DefaultStyleExtension)\n\t.extendOptional(FloorStackExtension)\n\t.extendOptional(OutdoorsExtension)\n\t.extendOptional(TilesetExtension)\n\t.extendOptional(FloorImagesExtension)\n\t.extendOptional(FacadeExtension)\n\t.extendOptional(AnnotationsExtension)\n\t.extendOptional(LocationsExtension)\n\t.extendOptional(CMSExtension)\n\t.build({ cspSafe: true })\n\t.expect('Invalid parser, this should never happen. Likely a bug in the MVFv2 library, or one of the extensions.');\n\n/**\n * This represents the result of parsing an MVFv3 object with the extensions the MVFv2 converter\n * can use. Note that nearly all extensions are actually optional.\n */\nexport type MVFv2_STANDARD_MVFv3 = MVFParserTransformedBundle<typeof STANDARD_MVF_V3_PARSER>;\n\n/**\n * Converts a zip file that hopefully contains an MVFv3 object to an MVFv2 format.\n * This is the main entry point for MVF conversion.\n *\n * @param data - The MVFv3 zip file data to convert.\n * @param options - Optional conversion options, e.g. the polygon\n * {@link ConvertOptions.centerStrategy | center strategy}.\n * @returns A promise containing the Result of the conversion, which can be unwrapped into an MVFv2 object or an error if the MVFv3 is invalid.\n */\nexport async function extractAndConvertMVFv3(\n\tdata: Uint8Array,\n\toptions?: ConvertOptions,\n): Promise<Result<ParsedMVF, DecompressError>> {\n\tconst result = await STANDARD_MVF_V3_PARSER.decompress(data);\n\tif (result.isOk()) {\n\t\treturn ok(convertUnzippedStandardMVFv3ToParsedMVFv2(result.value, options));\n\t} else {\n\t\treturn err(result.error);\n\t}\n}\n\n/**\n * Converts an MVFv3 zip file to an MVFv2 format, WITHOUT validating the structure of the MVFv3.\n *\n * If you are absolutely sure that the MVFv3 is valid, and do not want to pay the validation cost, you can use this function.\n *\n * However, if this is NOT a valid MVFv3, you may get unexpected results.\n *\n * @param data - The MVFv3 zip file data to convert.\n * @param options - Optional conversion options, e.g. the polygon\n * {@link ConvertOptions.centerStrategy | center strategy}.\n * @returns A promise containing the Result of the conversion, which can be unwrapped into an MVFv2 object or an error if the MVFv3 is invalid.\n */\nexport async function extractAndConvertMVFv3Unsafe(\n\tdata: Uint8Array,\n\toptions?: ConvertOptions,\n): Promise<Result<ParsedMVF, DecompressError>> {\n\tconst result = await STANDARD_MVF_V3_PARSER.decompressUnsafe(data);\n\tif (result.isOk()) {\n\t\treturn ok(convertUnzippedStandardMVFv3ToParsedMVFv2(result.value as MVFv2_STANDARD_MVFv3, options));\n\t} else {\n\t\treturn err(result.error);\n\t}\n}\n\n/**\n * Converts a zip file that hopefully contains an MVFv3 object to an MVFv2 format, synchronously.\n *\n * @param data - The MVFv3 zip file data to convert.\n * @param options - Optional conversion options, e.g. the polygon\n * {@link ConvertOptions.centerStrategy | center strategy}.\n * @returns A promise containing the Result of the conversion, which can be unwrapped into an MVFv2 object or an error if the MVFv3 is invalid.\n */\nexport function extractAndConvertMVFv3Sync(\n\tdata: Uint8Array,\n\toptions?: ConvertOptions,\n): Result<ParsedMVF, DecompressError> {\n\tconst result = STANDARD_MVF_V3_PARSER.decompressSync(data);\n\tif (result.isOk()) {\n\t\treturn ok(convertUnzippedStandardMVFv3ToParsedMVFv2(result.value as MVFv2_STANDARD_MVFv3, options));\n\t} else {\n\t\treturn err(result.error);\n\t}\n}\n\n/**\n * Converts an MVFv3 zip file to an MVFv2 format synchronously, WITHOUT validating the structure of the MVFv3.\n *\n * If you are absolutely sure that the MVFv3 is valid, and do not want to pay the validation cost, you can use this function.\n *\n * However, if this is NOT a valid MVFv3, you may get unexpected results.\n *\n * @param data - The MVFv3 zip file data to convert.\n * @param options - Optional conversion options, e.g. the polygon\n * {@link ConvertOptions.centerStrategy | center strategy}.\n * @returns A promise containing the Result of the conversion, which can be unwrapped into an MVFv2 object or an error if the MVFv3 is invalid.\n */\nexport function extractAndConvertMVFv3UnsafeSync(\n\tdata: Uint8Array,\n\toptions?: ConvertOptions,\n): Result<ParsedMVF, DecompressError> {\n\tconst result = STANDARD_MVF_V3_PARSER.decompressUnsafeSync(data);\n\tif (result.isOk()) {\n\t\treturn ok(convertUnzippedStandardMVFv3ToParsedMVFv2(result.value as MVFv2_STANDARD_MVFv3, options));\n\t} else {\n\t\treturn err(result.error);\n\t}\n}\n"],"names":["HasPropertyKey","value","key","IsAsyncIterator","IsObject","IsArray","IsUint8Array","IsBigInt","IsBoolean","IsDate","IsFunction","IsIterator","IsNull","IsNumber","IsRegExp","IsString","IsSymbol","IsUndefined","ArrayType","Visit","DateType","Uint8ArrayType","RegExpType","ObjectType","result","ValueGuard.IsArray","ValueGuard.IsDate","ValueGuard.IsUint8Array","ValueGuard.IsRegExp","ValueGuard.IsObject","Clone","CloneRest","schemas","schema","CloneType","options","IsPromise","IsInteger","IsValueType","TypeSystemPolicy","IsExactOptionalProperty","IsObjectLike","isObject","IsRecordLike","IsNumberLike","IsVoidLike","isUndefined","ImmutableArray","Immutable","ImmutableObject","CreateType","TypeBoxError","message","TransformKind","ReadonlyKind","OptionalKind","Hint","Kind","IsReadonly","IsOptional","IsAny","IsKindOf","IsConstructor","IsIntersect","kind","IsLiteral","IsMappedKey","IsMappedResult","IsNever","IsNot","IsRecord","IsRef","IsTemplateLiteral","IsThis","IsTransform","IsTuple","IsUnion","IsUnknown","IsUnsafe","IsVoid","IsKind","ValueGuard.IsString","IsSchema","KnownTypes","IsPattern","IsControlCharacterFree","i","code","IsAdditionalProperties","IsOptionalBoolean","IsOptionalBigInt","ValueGuard.IsUndefined","ValueGuard.IsBigInt","IsOptionalNumber","ValueGuard.IsNumber","ValueGuard.IsBoolean","IsOptionalString","IsOptionalPattern","IsOptionalFormat","IsOptionalSchema","IsProperties","IsLiteralString","IsLiteralNumber","IsLiteralBoolean","IsLiteralValue","keys","PatternBoolean","PatternNumber","PatternString","PatternNever","PatternNumberExact","PatternStringExact","PatternNeverExact","map","Has","format","Set","func","Get","SetIncludes","T","S","SetDistinct","SetIntersect","L","SetIntersectManyResolve","Init","Acc","SetIntersectMany","SetUnionMany","Any","Array","items","AsyncIterator","DiscardKey","_","rest","Discard","acc","Never","MappedResult","properties","Constructor","parameters","returns","Function","UnionCreate","IsUnionOptional","RemoveOptionalFromRest","RemoveOptionalFromType","ResolveUnion","Optional","UnionEvaluated","Union","TemplateLiteralParserError","Unescape","pattern","IsNonEscaped","index","char","IsOpenParen","IsCloseParen","IsSeparator","IsGroup","count","InGroup","IsPrecedenceOr","IsPrecedenceAnd","Or","start","expressions","range","TemplateLiteralParse","And","Group","scan","Range","end","TemplateLiteralParseExact","TemplateLiteralFiniteError","IsNumberExpression","expression","IsBooleanExpression","IsStringExpression","IsTemplateLiteralExpressionFinite","expr","IsTemplateLiteralFinite","TemplateLiteralGenerateError","GenerateReduce","buffer","left","right","GenerateAnd","TemplateLiteralExpressionGenerate","GenerateOr","GenerateConst","TemplateLiteralGenerate","Literal","Boolean","BigInt","Number","String","FromUnion","syntax","trim","literals","literal","FromTerminal","R","FromSyntax","TemplateLiteralSyntax","TemplateLiteralPatternError","Escape","TemplateLiteralPattern","kinds","TemplateLiteralToUnion","TemplateLiteral","unresolved","FromTemplateLiteral","IndexPropertyKeys","FromLiteral","FromProperties","P","K2","Index","FromMappedResult","IndexFromMappedResult","FromRest","K","IndexFromPropertyKey","FromIntersectRest","FromIntersect","IntersectEvaluated","FromUnionRest","FromTuple","FromArray","FromProperty","IndexFromPropertyKeys","FromSchema","IndexFromMappedKey","MappedIndexPropertyKey","MappedIndexPropertyKeys","MappedIndexProperties","Iterator","RequiredKeys","_Object","required","schematic","Object","Promise","item","RemoveReadonly","AddReadonly","ReadonlyWithFlag","F","Readonly","enable","ReadonlyFromMappedResult","Tuple","FromSchemaType","MappedKeyToKnownMappedResultProperties","MappedKeyToUnknownMappedResultProperties","MappedKeyToMappedResultProperties","FromMappedKey","FunctionType","Intersect","MappedFunctionReturnType","Mapped","RT","RemoveOptional","AddOptional","OptionalWithFlag","OptionalFromMappedResult","IntersectCreate","allObjects","clonedUnevaluatedProperties","IsIntersectOptional","ResolveIntersect","AwaitedResolve","FromPromise","Awaited","KeyOfPropertyKeys","C","I","FromPatternProperties","patternProperties","includePatternProperties","KeyOfPattern","KeyOfPropertyKeysToRest","KeyOf","KeyOfFromMappedResult","U","KeyOfPropertyEntries","CompositeKeys","FilterNever","CompositeProperty","CompositeProperties","Composite","Date","Null","Symbol","Undefined","Uint8Array","Unknown","FromValue","ConditionalReadonly","root","Const","ConstructorParameters","references","Deref","FromConstructor","FromFunction","FromObject","FromAsyncIterator","FromIterator","FromRef","target","remote","discard","DerefResolve","Enum","values1","anyOf","ExtendsResolverError","ExtendsResult","IntoBooleanResult","Throw","IsStructuralRight","TypeGuard.IsNever","TypeGuard.IsIntersect","TypeGuard.IsUnion","TypeGuard.IsUnknown","TypeGuard.IsAny","StructuralRight","FromNeverRight","FromIntersectRight","FromUnionRight","FromUnknownRight","FromAnyRight","FromAny","FromArrayRight","TypeGuard.IsObject","IsObjectArrayLike","TypeGuard.IsArray","TypeGuard.IsAsyncIterator","FromBigInt","FromObjectRight","TypeGuard.IsRecord","FromRecordRight","TypeGuard.IsBigInt","FromBooleanRight","TypeGuard.IsLiteralBoolean","TypeGuard.IsBoolean","FromBoolean","TypeGuard.IsConstructor","FromDate","TypeGuard.IsDate","TypeGuard.IsFunction","FromIntegerRight","TypeGuard.IsLiteral","TypeGuard.IsNumber","TypeGuard.IsInteger","FromInteger","TypeGuard.IsIterator","TypeGuard.IsString","FromStringRight","FromNumberRight","FromNever","UnwrapTNot","current","depth","TypeGuard.IsNot","FromNot","FromNull","TypeGuard.IsNull","TypeGuard.IsLiteralNumber","FromNumber","IsObjectPropertyCount","IsObjectStringLike","IsObjectSymbolLike","TypeGuard.IsUndefined","IsObjectNumberLike","IsObjectBooleanLike","IsObjectBigIntLike","IsObjectDateLike","IsObjectUint8ArrayLike","IsObjectFunctionLike","length","IsObjectConstructorLike","IsObjectPromiseLike","then","Property","TypeGuard.IsOptional","TypeGuard.IsLiteralString","TypeGuard.IsSymbol","TypeGuard.IsUint8Array","RecordKey","TypeGuard.IsPromise","RecordValue","Key","Value","FromRecord","FromRegExp","TypeGuard.IsRegExp","FromString","FromSymbol","TypeGuard.IsTemplateLiteral","IsArrayOfTuple","FromTupleRight","TypeGuard.IsTuple","FromUint8Array","FromUndefined","TypeGuard.IsVoid","FromVoidRight","FromUnknown","FromVoid","ExtendsCheck","Right","True","False","Extends","Left","ExtendsFromMappedResult","ExtendsResolve","trueType","falseType","ExtendsFromMappedKey","FromPropertyKey","FromPropertyKeys","LK","ExtendsUndefinedCheck","Not","ExcludeFromTemplateLiteral","Exclude","ExcludeRest","excluded","inner","ExcludeFromMappedResult","ExtractFromTemplateLiteral","Extract","ExtractRest","extracted","ExtractFromMappedResult","InstanceType","Integer","MappedIntrinsicPropertyKey","M","Intrinsic","MappedIntrinsicPropertyKeys","MappedIntrinsicProperties","IntrinsicFromMappedKey","ApplyUncapitalize","first","ApplyCapitalize","ApplyUppercase","ApplyLowercase","mode","FromLiteralValue","mapped","union","Capitalize","Lowercase","Uncapitalize","Uppercase","not","Omit","OmitFromMappedResult","OmitResolve","OmitFromMappedKey","Parameters","PartialResolve","Partial","PartialFromMappedResult","Pick","PickFromMappedResult","PickResolve","PickFromMappedKey","ReadonlyOptional","RecordCreateFromPattern","RecordCreateFromKeys","FromTemplateLiteralKey","FromUnionKey","FromLiteralKey","FromRegExpKey","FromStringKey","FromAnyKey","FromNeverKey","FromIntegerKey","FromNumberKey","Record","Ordinal","Recursive","callback","thisType","Ref","RegExp","RequiredResolve","Required","RequiredFromMappedResult","RestResolve","Rest","ReturnType","Strict","TransformDecodeBuilder","decode","TransformEncodeBuilder","encode","Codec","Transform","Unsafe","Void","Type","TypeBuilder","Ident","prefix","id","GeometryId","FloorId","Identifiers","BaseDetails","Details","WithDetails","WithRequiredDetails","requiredFields","ordered","optional","DetailsReferences","Extra","WithExtra","ExtraReferences","GeometryAnchor","WithGeometryAnchors","arrayOptions","objectOptions","GeometryAnchorReferences","Longitude","Latitude","Position","Point","MultiPoint","LineString","MultiLineString","LinearRing","LinearRings","Polygon","MultiPolygon","Feature","geometry","FeatureCollection","feature","GeoJSON","IntegrityErrorKind","TypeSystemDuplicateTypeKind","TypeSystemDuplicateFormat","TypeSystem","check","TypeRegistry.Has","TypeRegistry.Set","Format","FormatRegistry.Has","FormatRegistry.Set","DefaultErrorFunction","error","ValueErrorType","errorFunction","GetErrorFunction","Resolve","TypeDereferenceError","Pushref","ValueHashError","ByteMarker","Accumulator","Prime","Size","Bytes","F64","F64In","F64Out","NumberToBytes","byteCount","FNV1A64","BooleanType","BigIntType","byte","NullType","NumberType","StringType","SymbolType","UndefinedType","Hash","ValueCheckUnknownTypeError","IsAnyOrUnknown","IsDefined","set","element","hashed","containsSchema","containsCount","check1","keyPattern","check2","keyCheck","knownKeys","knownKey","property","valueKeys","valueKey","patternKey","patternSchema","regex","check3","FormatRegistry.Get","FromThis","FromKind","TypeRegistry.Get","references_","schema_","Check","args","ValueErrorsUnknownTypeError","EscapeKey","ValueErrorIterator","iterator","next","Create","errorType","path","errors","hasError","requiredKeys","unknownKeys","requiredKey","propertyKey","propertyValue","variant","Errors","TransformDecodeCheckError","TransformDecodeError","Default","knownEntries","entry","knownProperties","knownSchema","unevaluatedProperties","unknownProperties","IsUndefinedValue","additionalProperties","subschema","decoded","TransformDecode","TransformEncodeCheckError","TransformEncodeError","defaulted","resolved","value1","TransformEncode","visited","HasTransform","maybePath","notNull","resolveSchemaIdent","nesting","TypeGuard.IsRef","ref","r","errorHandler","shortError","CompressErrorKind","CompressError","flateErrorIntoCompressError","isFlateError","flateErrorCodes","FlateErrorCode","checkErrorIntoCompressError","encodeErrorIntoCompressError","unknownErrorIntoCompressError","intoCompressError","DecompressErrorKind","DecompressError","flateErrorIntoDecompressError","checkErrorIntoDecompressError","decodeErrorIntoDecompressError","unknownErrorIntoDecompressError","intoDecompressError","iterRecord","record","basePath","getPath","ensureUniqueIds","collection","idAccessor","ids","err","ok","validateFloors","data","FloorProperties","FloorFeature","FloorCollection","FloorsSchema","FloorsExtension","contents","createFloorMap","createFloorLookup","floorMap","floorId","floor","PartialRecord","validateGeometry","uniqueIds","floorLookup","typedKeys","GeometryProperties","GeometryFeature","GeometryCollection","GeometrySchema","GeometryFilePath","GeometryExtension","createLookupMap","geometriesByFloorId","geometries","typedEntries","g","createGeometryLookup","geometryIdsByFloorId","geometryId","floorGeometries","ManifestFile","ManifestFolder","Self","BaseManifestProperties","ManifestProperties","ManifestCollection","ManifestSchema","ManifestExtension","WithGeometryId","WithGeometryIds","WithGeometryIdReferences","SafeStringEnumSchema","enumValues","SafeStringEnum","values","AnnotationIntegrityErrorKind","validateAnnotations","annotation","lookupData","knownSymbols","floorAnnotations","AnnotationId","AnnotationProperties","AnnotationSymbol","AnnotationsSchema","AnnotationFilePath","AnnotationsExtension","HasTransformCached","cache","cached","CreateTransformCache","TypeGuard.IsTransform","ValueGuard.HasPropertyKey","TypeGuard.IsSchema","Value.Check","FastTransformDecode","_references","FastTransformEncode","TypeCheck","checkFunc","encoded","Character","DollarSign","IsUnderscore","IsAlpha","IsNumeric","MemberExpression","IsFirstCharacterNumeric","IsAccessor","EscapeHyphen","Encode","object","Identifier","$id","LiteralString","content","TypeCompilerUnknownTypeError","TypeCompilerTypeGuardError","Policy","TypeCompiler","parameter","accumulator","CreateParameter","elementExpression","CreateExpression","checkExpression","checkMinContains","checkMaxContains","checkCount","CreateVariable","memberExpression","variable","state","CreateFunctionName","instance","useHoisting","functionName","functionCode","CreateFunction","variableName","name","newline","pad","CreateReturns","type","Build","functions","variables","checkFunction","Code","defaults","Compile","generatedCode","compiledFunction","instances","typeRegistryFunction","formatRegistryFunction","hashFunction","DATE","DAYS","isLeapYear","year","isDate","str","matches","month","day","TIME","isTime","hr","min","sec","tz","tzSign","tzH","tzM","utcMin","utcHr","DATE_TIME_SEPARATOR","isDateTime","dateTime","NOT_URI_FRAGMENT","URI","isUri","FORMATS","registerFormats","fn","e","asError","safeFn","createZippable","extensions","compressed","extension","file","strToU8","compress","resolve","zip","safeZipSync","zipSync","compressSync","identity","jsonDecode","strFromU8","isFileExpected","fileInfo","processBundle","filePath","fileData","deepMergeOn","decompress","unzip","info","res","decompressed","safeUnzipSync","unzipSync","decompressSync","unzipped","isRef","thing","isDuplicateRef","things","reference","v","fixDuplicateAllOf","k","prefixReferences","CreateMVFParserErrorKind","join","iterators","computeReferenceMap","referenceMap","existing","MVFParser","#schema","#compiled","#extensions","#referenceMap","compiled","builder","schemaId","cspSafe","mergedSchema","Value.Errors","normalizedReferences","d","_compress","_compressSync","_decompress","_decompressSync","MVFParserBuilder","partialExtension","createParser","LocationCategoryId","LocationCategory","CategoryReferences","LocationsIntegrityErrorKind","validateLocations","uniqueCategoryIds","category","uniqueLocationIds","location","uniqueInstanceIds","knownCategoryIds","geometryLookup","anchor","knownLocationIds","LocationId","LocationInstanceId","LocationSocial","LocationImage","LocationLink","OpeningHoursTime","OpeningHoursDay","PUBLIC_HOLIDAYS","OpeningHoursDayOrPublicHoliday","OpeningHoursSpecification","Location","LocationInstance","LocationReferences","LocationsExtensionSchema","LocationsFilePath","LocationCategoriesFilePath","LocationInstancesFilePath","LocationsExtension","EnterpriseIntegrityErrorKind","validateCMS","cms","uniqueCategories","uniqueLocations","locationDataMap","siblingGroup","locationData","topLocation","knownEnterpriseLocationIds","uniqueLocationInstances","locationInstance","knownLocationInstanceIds","uniqueFloorTexts","floorText","floorTextFeatureCollection","validFloor","validGeometry","enterpriseTextures","texture","enterpriseLayers","textAreas","textArea","EnterpriseLocationId","EnterpriseCategoryId","EnterpriseLocationInstanceId","EnterpriseVenueId","EnterpriseFloorTextId","IdentifiersReferences","EnterpriseCategory","EnterpriseCategoriesSchema","EnterpriseCategoryReferences","TextAlignment","TEXT_ALIGNMENT_VALUES","FloorTextCommonProperties","AnchoredFloorTextProperties","FloatingFloorTextProperties","FloorTextProperties","FloorTextFeature","AnchoredFloorTextFeature","FloatingFloorTextFeature","EnterpriseFloorTextFeatureCollection","EnterpriseFloorTextCollectionsByFloor","EnterpriseFloorTextSchema","EnterpriseFloorTextReferences","EnterpriseLayers","EnterpriseLayersByFloor","EnterpriseLayersSchema","EnterpriseLayersReferences","SiblingGroupType","SIBLING_GROUP_TYPE_VALUES","LocationStateType","LOCATION_STATE_VALUES","LocationState","SiblingGroup","Language","UtilityReferences","EnterpriseLocation","EnterpriseLocationsSchema","EnterpriseLocationReferences","EnterpriseLocationInstance","EnterpriseLocationInstancesSchema","EnterpriseLocationInstancesReferences","EnterpriseTextAreaAlignment","TEXT_AREA_ALIGNMENT_VALUES","EnterpriseBaseTextAreaProperties","EnterpriseAnchoredTextAreaProperties","EnterpriseFloatingTextAreaProperties","EnterpriseTextAreaProperties","EnterpriseTextAreaFeature","EnterpriseTextAreaCollection","EnterpriseTextAreasByFloor","EnterpriseTextAreasSchema","EnterpriseTextAreasReferences","EnterpriseTextureUV","EnterpriseTextureFace","TEXTURE_FACE_VALUES","EnterpriseTextureSurface","TEXTURE_SURFACE_VALUES","EnterpriseTextureBounds","EnterpriseTexture","EnterpriseTextures","EnterpriseTexturesByFloor","EnterpriseTexturesSchema","EnterpriseTextureReferences","EnterpriseVenueType","ENTERPRISE_VENUE_TYPE_VALUES","EnterpriseVenue","EnterpriseVenueSchema","EnterpriseVenueReferences","CMSProperties","CMSExtensionSchema","EnterpriseFilePath","CMSExtension","subSchema","match","fileName","decodedContents","NavigationFlagIntegrityKind","validateNavigationFlags","navigationFlags","sortedFlags","a","b","lastIndex","lastBit","flag","MAX_FLAG","determineMaxNavigationFlags","maxIndex","maxFlag","validateFlags","flags","expectedLength","NavigationFlagDeclarationCore","NavigationFlagDeclaration","NavigationFlagDeclarations","NavigationFlagsSchema","Flags","WithFlags","FlaggedGeometryAnchor","WithFlaggedGeometryAnchor","WithFlaggedGeometryAnchors","NavigationFlagsExtension","validateConnections","uniqueConnectionIds","connection","anchorLookup","maxFlags","j","entrance","flagsResult","exit","ConnectionId","ConnectionType","CONNECTION_TYPE_VALUES","Connection","ConnectionsCollection","ConnectionsExtensionSchema","connectionsFilePath","ConnectionsExtension","validateDefaultStyle","style","DefaultStyle","DefaultStyleCollection","DefaultStyleSchema","DefaultStyleExtension","FloorStacksIntegrityErrorKind","validateFloorStacks","uniqueFloorStackIds","floorStack","fs","FloorStackId","FloorStack","FloorStackCollection","FloorStackExtensionSchema","FloorStackExtension","FacadeIntegrityErrorKind","validateFacade","floorStackIds","facades","facade","floorStackId","geometryIds","Facade","FacadeExtensionSchema","FacadeFilePath","FacadeExtension","validateFloorImages","floorImagesCollection","floorImage","BaseFloorImageProperties","AnchoredFloorImageProperties","FloatingFloorImageProperties","FloorImageProperties","FloorImageFeature","FloorImageCollection","FloorImagesExtensionSchema","FloorImagesFilePath","FloorImagesExtension","validateKinds","kindsCollection","KIND_VALUES","GeometryKinds","KindsExtensionSchema","KindsFilePath","KindsExtension","NodesIntegrityErrorKind","validateNodes","uniqueNodeIds","node","nodesCollection","knownNodeIds","nodeIndex","neighborIndex","neighbor","NodeId","NodeNeighbor","NodeProperties","NodeFeature","NodeCollection","NodesExtensionSchema","NodesFilePath","NodesExtension","OutdoorsIntegrityErrorKind","validateOutdoors","Outdoors","OutdoorsExtensionSchema","OutdoorsFilePath","OutdoorsExtension","TilesetIntegrityErrorKind","validateTilesets","TilesetStyle","TilesetCollection","TilesetExtensionSchema","TilesetExtension","WalkableProperties","NonWalkableProperties","WalkableGeometries","NonWalkableGeometries","TraversabilitySchema","WalkableFilePath","NonWalkableFilePath","TraversabilityExtension","walkableFloorId","nonwalkableFloorId","STANDARD_MVF_V3_PARSER","extractAndConvertMVFv3","convertUnzippedStandardMVFv3ToParsedMVFv2","extractAndConvertMVFv3Unsafe","extractAndConvertMVFv3Sync","extractAndConvertMVFv3UnsafeSync"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,119,120,121,122,123,124,125,126,127,149,155,156]}