@routier/core 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assertions/index.cjs +19 -8
- package/dist/assertions/index.cjs.map +1 -1
- package/dist/assertions/index.d.ts +5 -1
- package/dist/assertions/index.js +21 -9
- package/dist/assertions/index.js.map +1 -1
- package/dist/codegen/blocks.d.ts +17 -1
- package/dist/codegen/handlers/types.d.ts +13 -5
- package/dist/codegen/index.cjs +28 -0
- package/dist/codegen/index.cjs.map +1 -1
- package/dist/codegen/index.js +28 -0
- package/dist/codegen/index.js.map +1 -1
- package/dist/collections/MemoryDataCollection.d.ts +8 -0
- package/dist/collections/index.cjs +141 -4
- package/dist/collections/index.cjs.map +1 -1
- package/dist/collections/index.js +141 -4
- package/dist/collections/index.js.map +1 -1
- package/dist/expressions/callSource.d.ts +41 -0
- package/dist/expressions/evaluate.d.ts +3 -0
- package/dist/expressions/fold.d.ts +7 -0
- package/dist/expressions/index.cjs +1985 -242
- package/dist/expressions/index.cjs.map +1 -1
- package/dist/expressions/index.d.ts +2 -0
- package/dist/expressions/index.js +1997 -243
- package/dist/expressions/index.js.map +1 -1
- package/dist/expressions/parser.d.ts +42 -1
- package/dist/expressions/types.d.ts +45 -26
- package/dist/expressions/utils.d.ts +19 -1
- package/dist/index.cjs +3139 -680
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3479 -997
- package/dist/index.js.map +1 -1
- package/dist/performance/index.cjs +6 -4
- package/dist/performance/index.cjs.map +1 -1
- package/dist/performance/index.js +6 -4
- package/dist/performance/index.js.map +1 -1
- package/dist/pipeline/index.cjs +6 -4
- package/dist/pipeline/index.cjs.map +1 -1
- package/dist/pipeline/index.js +6 -4
- package/dist/pipeline/index.js.map +1 -1
- package/dist/plugins/EphemeralDataPlugin.d.ts +8 -0
- package/dist/plugins/index.cjs +2921 -411
- package/dist/plugins/index.cjs.map +1 -1
- package/dist/plugins/index.js +2863 -343
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/query/QueryOptionsCollection.d.ts +48 -10
- package/dist/plugins/query/describeFilter.d.ts +83 -0
- package/dist/plugins/query/explain.d.ts +71 -9
- package/dist/plugins/query/index.d.ts +2 -0
- package/dist/plugins/query/join.d.ts +4 -1
- package/dist/plugins/query/renames.d.ts +27 -0
- package/dist/plugins/query/types.d.ts +50 -4
- package/dist/plugins/translators/SqlTranslator.d.ts +15 -0
- package/dist/schema/PropertyInfo.d.ts +0 -1
- package/dist/schema/SchemaDefinition.d.ts +8 -0
- package/dist/schema/changeTracker.d.ts +10 -0
- package/dist/schema/index.cjs +298 -288
- package/dist/schema/index.cjs.map +1 -1
- package/dist/schema/index.d.ts +1 -0
- package/dist/schema/index.js +301 -290
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/types.d.ts +8 -7
- package/dist/schema/utils/storageDates.d.ts +25 -0
- package/dist/transfer/index.cjs.map +1 -1
- package/dist/transfer/index.js.map +1 -1
- package/dist/utilities/index.cjs +306 -68
- package/dist/utilities/index.cjs.map +1 -1
- package/dist/utilities/index.js +306 -68
- package/dist/utilities/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/codegen/utils.d.ts +0 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen/index.js","sources":["webpack://@routier/core/./src/codegen/blocks.ts","webpack://@routier/core/./src/utilities/uuid.ts","webpack://@routier/core/webpack/runtime/define_property_getters","webpack://@routier/core/webpack/runtime/has_own_property","webpack://@routier/core/./src/codegen/index.ts"],"sourcesContent":["import { uuid } from \"../utilities\";\nimport { CreateBlockOptions } from \"./types\";\n\ntype Line = string | Block;\n\ntype Param = { name: string, value: any };\ntype GenericParam = { name: string, callName: string };\n\n\nexport abstract class Block {\n readonly name: string;\n protected _lines: Line[] = [];\n protected _indent: string = \"\";\n protected _parent?: Block;\n\n constructor(name?: string, parentIndent: string = \"\", parent?: Block) {\n this.name = name != null ? name : uuid();\n this._indent = parentIndent;\n this._parent = parent;\n }\n\n indexOf(name: string) {\n return this._lines.findIndex(w => typeof w !== \"string\" && w.name === name);\n }\n\n getLines() {\n return this._lines;\n }\n\n getParent() {\n return this._parent;\n }\n\n getIndent() {\n return this._indent;\n }\n\n setLines(lines: Line[]) {\n this._lines = lines;\n }\n\n setParent(block: Block) {\n this._parent = block;\n }\n\n setIndent(indent: string) {\n this._indent = indent;\n }\n\n getOrDefault<T extends Block>(name: string): T | undefined {\n\n if (name.includes('.') === false) {\n return this._lines.find(w => typeof w !== \"string\" && w.name === name) as T | undefined;\n }\n\n const split = name.match(/(\\[[^\\]]+\\]|[^.]+)/g);\n // oxlint-disable-next-line no-this-alias\n let result: Block = this;\n\n for (const item of split) {\n const found = result._lines.find(w => typeof w !== \"string\" && w.name === item) as Block;\n\n if (found == null) {\n\n if (\"getValue\" in result && result.getValue instanceof Block && result.getValue.name === item) {\n result = result.getValue;\n continue;\n }\n\n return undefined;\n }\n\n result = found;\n }\n\n return result as T;\n }\n\n get<T extends Block>(name: string): T {\n const found = this.getOrDefault(name);\n\n if (found == null) {\n throw new Error(`Error finding code block for given path. Path: ${name}`)\n }\n\n return found as T;\n }\n\n has(name: string) {\n return this._lines.some(w => typeof w !== \"string\" && w.name === name);\n }\n\n remove(name: string) {\n this._lines = this._lines.filter(x => typeof x === \"object\" && typeof x.name === \"string\" && x.name !== name);\n }\n\n replace(name: string, line: Block) {\n\n const foundIndex = this._lines.findIndex(x => typeof x !== \"string\" && x.name === name);\n\n if (foundIndex === -1) {\n throw new Error(`Cannot find line by name. Name: ${name}`)\n }\n\n const found = this._lines[foundIndex];\n\n if (typeof found === \"string\") {\n // Replace the line\n this._lines.splice(foundIndex, 1, line);\n return;\n }\n\n line.setLines(found.getLines());\n line.setIndent(found.getIndent());\n line.setParent(found.getParent());\n\n // Replace the line\n this._lines.splice(foundIndex, 1, line);\n\n return;\n }\n\n protected push(line: Line) {\n this._lines.push(line);\n }\n\n protected unshift(line: Line) {\n this._lines.unshift(line);\n }\n\n protected indent(text: string): string {\n return this._indent + text;\n }\n\n\n abstract toString(): string;\n}\n\nexport abstract class ContainerBlock extends Block {\n if(condition: string, options?: CreateBlockOptions): IfBuilder {\n const builder = new IfBuilder(condition, options?.name, this._indent + \" \", this);\n if (options?.unshift === true) {\n this.unshift(builder);\n } else {\n this.push(builder);\n }\n\n return builder;\n }\n\n raw(raw: string, options?: CreateBlockOptions): RawBuilder {\n const builder = new RawBuilder(raw, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n function(name?: string, options?: CreateBlockOptions): FunctionBuilder {\n const builder = new FunctionBuilder(name, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n factory(name?: string, options?: CreateBlockOptions): FunctionFactoryBuilder {\n const builder = new FunctionFactoryBuilder(name, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n variable(declaration: string, options?: CreateBlockOptions): VariableBuilder {\n const builder = new VariableBuilder(declaration, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n assign(variableName: string, options?: CreateBlockOptions): AssignmentBuilder {\n const builder = new AssignmentBuilder(variableName, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n object(options?: CreateBlockOptions): ObjectBuilder {\n const builder = new ObjectBuilder(options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n slot(name: string) {\n const builder = new SlotBlock(name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n array(accessor: string, options?: CreateBlockOptions) {\n const builder = new ArrayBuilder(accessor, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n}\n\nexport type StringType = \"template\" | \"default\";\n\nexport class StringBuilder extends Block {\n\n private _type: StringType;\n\n constructor(type: StringType, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._type = type;\n }\n\n append(value: string) {\n this._lines.push(value);\n return this;\n }\n\n toString() {\n if (this._type === \"template\") {\n return \"`\" + this._lines.join(\"\") + \"`\";\n }\n\n return `\"${this._lines.join(\"\")}\"`;\n }\n}\n\nexport class SlotBlock extends ContainerBlock {\n\n constructor(name: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n }\n\n insert(line: string | Block) {\n this.push(line);\n }\n\n toString(): string {\n return this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(line)\n : line.toString()\n ).join('\\n\\n');\n }\n}\n\nexport class AssignmentBuilder extends ContainerBlock {\n protected _variableName: string;\n protected _value?: string | Block;\n protected _functionName?: string;\n\n get getValue() {\n return this._value;\n }\n\n constructor(variableName: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._variableName = variableName;\n }\n\n value(value: string): this {\n this._value = value;\n return this;\n }\n\n and(and: string, options?: CreateBlockOptions): this {\n this._value = new AndBuilder(and, options?.name, this._indent, this);\n return this;\n }\n\n object(options?: CreateBlockOptions): ObjectBuilder {\n const objectBuilder = new ObjectBuilder(options?.name, this._indent, this);\n\n this._value = objectBuilder;\n\n return objectBuilder;\n }\n\n call(functionName: string, options?: CreateBlockOptions): ObjectBuilder {\n this._functionName = functionName;\n const objectBuilder = new ObjectBuilder(options?.name, this._indent, this);\n\n this._value = objectBuilder;\n\n return objectBuilder;\n }\n\n string(type: StringType, options?: CreateBlockOptions) {\n const stringBuilder = new StringBuilder(type, options?.name, this._indent, this);\n\n this._value = stringBuilder;\n\n return stringBuilder;\n }\n\n toString(): string {\n\n if (this._value == null) {\n throw new Error(\"Value cannot be null for AssignmentBuilder Builder\")\n }\n\n if (this._functionName != null) {\n return this.indent(`${this._variableName} = ${this._functionName}(${this._value.toString()});`);\n }\n\n return this.indent(`${this._variableName} = ${this._value.toString()};`);\n }\n}\n\nexport class AndBuilder extends ContainerBlock {\n\n constructor(and: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._lines.push(and);\n }\n\n and(and: string) {\n this._lines.push(and);\n }\n\n toString() {\n return this._lines.join(\" && \")\n }\n}\n\nexport class VariableBuilder extends Block {\n protected _declaration: string;\n protected _value?: string | Block;\n\n get getValue() {\n return this._value;\n }\n\n constructor(declaration: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._declaration = declaration;\n }\n\n value(value: string): this {\n this._value = value;\n return this;\n }\n\n object(options?: CreateBlockOptions): ObjectBuilder {\n const objectBuilder = new ObjectBuilder(options?.name, this._indent, this);\n\n this._value = objectBuilder;\n\n return objectBuilder;\n }\n\n array(accessor: string, options?: CreateBlockOptions): ArrayBuilder {\n const arrayBuilder = new ArrayBuilder(accessor, options?.name, this._indent, this);\n\n this._value = arrayBuilder;\n\n return arrayBuilder;\n }\n\n toString(): string {\n\n if (this._value == null) {\n throw new Error(\"Value cannot be null for Variable Builder\")\n }\n\n return this.indent(`const ${this._declaration} = ${this._value.toString()};`);\n }\n}\n\nexport class RawBuilder extends ContainerBlock {\n private _raw: string;\n\n constructor(raw: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._raw = raw;\n }\n\n toString(): string {\n return `${this._raw}\\n`;\n }\n}\n\nexport class ObjectBuilder extends Block {\n\n property(line: string) {\n // Add comma to previous line if it exists and isn't a brace\n if (this._lines.length > 0) {\n const lastLine = this._lines[this._lines.length - 1];\n if (typeof lastLine === 'string' && !lastLine.endsWith(\"{\")) {\n this._lines[this._lines.length - 1] = lastLine + \",\";\n }\n }\n this.push(line);\n return this;\n }\n\n nested(propertyName: string, name?: string) {\n const builder = new ObjectBuilder(name, this._indent + \" \", this);\n // Add comma to previous line if it exists and isn't a brace\n if (this._lines.length > 0) {\n const lastLine = this._lines[this._lines.length - 1];\n if (typeof lastLine === 'string' && !lastLine.endsWith(\"{\")) {\n this._lines[this._lines.length - 1] = lastLine + \",\";\n }\n }\n // Add the property name and opening brace\n this.push(`${propertyName}: {`);\n // Add the nested builder\n this.push(builder);\n // Add the closing brace\n this.push(\"}\");\n return builder;\n }\n\n toString(): string {\n // Check if this is a nested object's content\n const isNestedContent = this._parent instanceof ObjectBuilder;\n\n if (isNestedContent) {\n // For nested object contents, just return the lines\n return this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ).join('\\n');\n }\n\n // For root objects, include the braces\n const lines = [\n \"{\",\n ...this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ),\n this.indent(\"}\")\n ];\n\n return lines.join('\\n');\n }\n}\n\nexport class FunctionFactoryBuilder extends ContainerBlock {\n private _functionName?: string;\n private _params: Param[] = [];\n private _return: boolean = false;\n\n constructor(functionName?: string, sectionName?: string, parentIndent: string = \"\", parent?: Block) {\n super(sectionName, parentIndent, parent);\n this._functionName = functionName;\n }\n\n getParameters() {\n return [...this._params];\n }\n\n createParameter(value: any): Param {\n const name = `injection${this._params.length}`;\n return {\n name,\n value\n }\n }\n\n parameters(...params: Param[]): this {\n this._params.push(...params);\n return this;\n }\n\n return() {\n this._return = true;\n return this;\n }\n\n appendBody(line: string): this {\n this.push(line);\n return this;\n }\n\n invoke() {\n const body = this.toString();\n const parameterNames = this._getParameterNames();\n const parameterValues = this._getParameterValues();\n\n return Function(...parameterNames, body)(...parameterValues)\n }\n\n private _getParameterNames() {\n return this._params.map(w => w.name).join(\", \")\n }\n\n private _getParameterValues() {\n return this._params.map(w => w.value);\n }\n\n toString(): string {\n const r = this._return === true ? \"return \" : \"\";\n const signature = this._functionName\n ? `${r}function ${this._functionName}(${this._getParameterNames()})`\n : `${r}function(${this._getParameterNames()})`;\n\n const lines = [\n this.indent(signature + \" {\"),\n ...this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ),\n this.indent(\"}\")\n ];\n\n return lines.join('\\n');\n }\n}\n\nexport class FunctionBuilder extends ContainerBlock {\n private _functionName?: string;\n private _params: (string | GenericParam)[] = [];\n private _return: boolean = false;\n\n constructor(functionName?: string, sectionName?: string, parentIndent: string = \"\", parent?: Block) {\n super(sectionName, parentIndent, parent);\n this._functionName = functionName;\n }\n\n parameters(...params: (string | GenericParam)[]): this {\n this._params.push(...params);\n return this;\n }\n\n return() {\n this._return = true;\n return this;\n }\n\n appendBody(line: string): this {\n this.push(line);\n return this;\n }\n\n private _getParameterKeys() {\n return this._params.map(w => typeof w === \"object\" ? w.name : w).join(\", \")\n }\n\n toCallable() {\n return `${this._functionName}(${this._params.map(w => typeof w === \"object\" ? w.callName : w).join(\", \")})`\n }\n\n toString(): string {\n const r = this._return === true ? \"return \" : \"\";\n const signature = this._functionName\n ? `${r}function ${this._functionName}(${this._getParameterKeys()})`\n : `${r}function(${this._getParameterKeys()})`;\n\n const lines = [\n this.indent(signature + \" {\"),\n ...this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ),\n this.indent(\"}\")\n ];\n\n return lines.join('\\n');\n }\n}\n\nexport class ArrayBuilder extends Block {\n constructor(accessor: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._lines.push(accessor);\n }\n\n append(accessor: string) {\n this._lines.push(accessor);\n return this;\n }\n\n toString() {\n return `[${this._lines.join(\",\")}]`\n }\n}\n\nexport class IfBuilder extends ContainerBlock {\n private _condition: string;\n\n constructor(condition: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._condition = condition;\n }\n\n appendBody(line: string): this {\n this.push(line);\n return this;\n }\n\n unshiftBody(line: string): this {\n this.unshift(line);\n return this;\n }\n\n private stringifyLine(line: Line) {\n if (typeof line === 'string') {\n return this.indent(\" \" + line);\n }\n\n if (Array.isArray(line)) {\n return line.join(\"\\r\\n\")\n }\n\n return line.toString();\n }\n\n toString(): string {\n // need to join with \\r\\n because we are not an object\n const lines = [\n this.indent(`if (${this._condition}) {`),\n this._lines.map(x => this.stringifyLine(x)).join(\"\\r\\n\"),\n this.indent(\"}\")\n ]\n\n return lines.join(\"\\n\\n\");\n }\n}\n\nexport class CodeBuilder extends ContainerBlock {\n\n toString(): string {\n return this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(line)\n : line.toString()\n ).join('\\n\\n');\n }\n}","export const uuid = (length: number = 16): string => {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charLength = chars.length;\n let result = '';\n\n for (let i = 0; i < length; i++) {\n result += chars[Math.random() * charLength | 0];\n }\n return result;\n}\n\nconst HEX_CHARS = '0123456789abcdef';\nconst UUID_TEMPLATE = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\n\nconst hasCrypto =\n typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function';\n\nconst hasRandomUUID =\n typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function';\n\nexport const uuidv4 = (): string => {\n if (hasRandomUUID) {\n return crypto.randomUUID();\n }\n\n return uuidv4Fallback();\n};\n\nconst uuidv4Fallback = (): string => {\n let randomBytes: Uint8Array | null = null;\n if (hasCrypto) {\n randomBytes = crypto.getRandomValues(new Uint8Array(16));\n }\n\n let byteIndex = 0;\n let uuid = '';\n\n for (let i = 0; i < UUID_TEMPLATE.length; i++) {\n const c = UUID_TEMPLATE[i];\n if (c === '-') {\n uuid += '-';\n continue;\n }\n\n let r: number;\n if (hasCrypto && randomBytes) {\n // Each byte gives two hex digits (nibbles)\n r =\n (i % 2 === 0\n ? randomBytes[byteIndex] >> 4\n : randomBytes[byteIndex++] & 0x0f);\n } else {\n r = Math.floor(Math.random() * 16);\n }\n\n if (c === 'x') {\n uuid += HEX_CHARS[r];\n } else if (c === 'y') {\n // Variant bits: 8, 9, A, or B\n uuid += HEX_CHARS[(r & 0x3) | 0x8];\n } else if (c === '4') {\n uuid += '4';\n }\n }\n\n return uuid;\n};\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export * from './blocks';\nexport * from './types';"],"names":["uuid","Block","name","parentIndent","parent","w","lines","block","indent","split","result","item","found","undefined","Error","x","line","foundIndex","text","ContainerBlock","condition","options","builder","IfBuilder","raw","RawBuilder","FunctionBuilder","FunctionFactoryBuilder","declaration","VariableBuilder","variableName","AssignmentBuilder","ObjectBuilder","SlotBlock","accessor","ArrayBuilder","StringBuilder","type","value","and","AndBuilder","objectBuilder","functionName","stringBuilder","arrayBuilder","lastLine","propertyName","isNestedContent","sectionName","params","body","parameterNames","parameterValues","Function","r","signature","Array","CodeBuilder","length","chars","charLength","i","Math","HEX_CHARS","UUID_TEMPLATE","hasCrypto","crypto","hasRandomUUID","uuidv4","uuidv4Fallback","randomBytes","Uint8Array","byteIndex","c"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codegen/index.js","sources":["webpack://@routier/core/./src/codegen/blocks.ts","webpack://@routier/core/./src/utilities/uuid.ts","webpack://@routier/core/webpack/runtime/define_property_getters","webpack://@routier/core/webpack/runtime/has_own_property","webpack://@routier/core/./src/codegen/index.ts"],"sourcesContent":["import { uuid } from \"../utilities\";\nimport { CreateBlockOptions } from \"./types\";\n\ntype Line = string | Block;\n\nexport type Param = { name: string, value: any };\ntype GenericParam = { name: string, callName: string };\n\n\nexport abstract class Block {\n readonly name: string;\n protected _lines: Line[] = [];\n protected _indent: string = \"\";\n protected _parent?: Block;\n\n constructor(name?: string, parentIndent: string = \"\", parent?: Block) {\n this.name = name != null ? name : uuid();\n this._indent = parentIndent;\n this._parent = parent;\n }\n\n indexOf(name: string) {\n return this._lines.findIndex(w => typeof w !== \"string\" && w.name === name);\n }\n\n getLines() {\n return this._lines;\n }\n\n getParent() {\n return this._parent;\n }\n\n getIndent() {\n return this._indent;\n }\n\n setLines(lines: Line[]) {\n this._lines = lines;\n }\n\n setParent(block: Block) {\n this._parent = block;\n }\n\n setIndent(indent: string) {\n this._indent = indent;\n }\n\n getOrDefault<T extends Block>(name: string): T | undefined {\n\n if (name.includes('.') === false) {\n return this._lines.find(w => typeof w !== \"string\" && w.name === name) as T | undefined;\n }\n\n const split = name.match(/(\\[[^\\]]+\\]|[^.]+)/g);\n // oxlint-disable-next-line no-this-alias\n let result: Block = this;\n\n for (const item of split) {\n const found = result._lines.find(w => typeof w !== \"string\" && w.name === item) as Block;\n\n if (found == null) {\n\n if (\"getValue\" in result && result.getValue instanceof Block && result.getValue.name === item) {\n result = result.getValue;\n continue;\n }\n\n return undefined;\n }\n\n result = found;\n }\n\n return result as T;\n }\n\n get<T extends Block>(name: string): T {\n const found = this.getOrDefault(name);\n\n if (found == null) {\n throw new Error(`Error finding code block for given path. Path: ${name}`)\n }\n\n return found as T;\n }\n\n has(name: string) {\n return this._lines.some(w => typeof w !== \"string\" && w.name === name);\n }\n\n remove(name: string) {\n this._lines = this._lines.filter(x => typeof x === \"object\" && typeof x.name === \"string\" && x.name !== name);\n }\n\n replace(name: string, line: Block) {\n\n const foundIndex = this._lines.findIndex(x => typeof x !== \"string\" && x.name === name);\n\n if (foundIndex === -1) {\n throw new Error(`Cannot find line by name. Name: ${name}`)\n }\n\n const found = this._lines[foundIndex];\n\n if (typeof found === \"string\") {\n // Replace the line\n this._lines.splice(foundIndex, 1, line);\n return;\n }\n\n line.setLines(found.getLines());\n line.setIndent(found.getIndent());\n line.setParent(found.getParent());\n\n // Replace the line\n this._lines.splice(foundIndex, 1, line);\n\n return;\n }\n\n protected push(line: Line) {\n this._lines.push(line);\n }\n\n protected unshift(line: Line) {\n this._lines.unshift(line);\n }\n\n protected indent(text: string): string {\n return this._indent + text;\n }\n\n\n abstract toString(): string;\n}\n\nexport abstract class ContainerBlock extends Block {\n if(condition: string, options?: CreateBlockOptions): IfBuilder {\n const builder = new IfBuilder(condition, options?.name, this._indent + \" \", this);\n if (options?.unshift === true) {\n this.unshift(builder);\n } else {\n this.push(builder);\n }\n\n return builder;\n }\n\n raw(raw: string, options?: CreateBlockOptions): RawBuilder {\n const builder = new RawBuilder(raw, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n function(name?: string, options?: CreateBlockOptions): FunctionBuilder {\n const builder = new FunctionBuilder(name, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n factory(name?: string, options?: CreateBlockOptions): FunctionFactoryBuilder {\n const builder = new FunctionFactoryBuilder(name, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n variable(declaration: string, options?: CreateBlockOptions): VariableBuilder {\n const builder = new VariableBuilder(declaration, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n assign(variableName: string, options?: CreateBlockOptions): AssignmentBuilder {\n const builder = new AssignmentBuilder(variableName, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n object(options?: CreateBlockOptions): ObjectBuilder {\n const builder = new ObjectBuilder(options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n slot(name: string) {\n const builder = new SlotBlock(name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n array(accessor: string, options?: CreateBlockOptions) {\n const builder = new ArrayBuilder(accessor, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n}\n\nexport type StringType = \"template\" | \"default\";\n\nexport class StringBuilder extends Block {\n\n private _type: StringType;\n\n constructor(type: StringType, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._type = type;\n }\n\n append(value: string) {\n this._lines.push(value);\n return this;\n }\n\n toString() {\n if (this._type === \"template\") {\n return \"`\" + this._lines.join(\"\") + \"`\";\n }\n\n return `\"${this._lines.join(\"\")}\"`;\n }\n}\n\nexport class SlotBlock extends ContainerBlock {\n\n constructor(name: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n }\n\n insert(line: string | Block) {\n this.push(line);\n }\n\n toString(): string {\n return this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(line)\n : line.toString()\n ).join('\\n\\n');\n }\n}\n\nexport class AssignmentBuilder extends ContainerBlock {\n protected _variableName: string;\n protected _value?: string | Block;\n protected _functionName?: string;\n\n get getValue() {\n return this._value;\n }\n\n constructor(variableName: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._variableName = variableName;\n }\n\n value(value: string): this {\n this._value = value;\n return this;\n }\n\n and(and: string, options?: CreateBlockOptions): this {\n this._value = new AndBuilder(and, options?.name, this._indent, this);\n return this;\n }\n\n object(options?: CreateBlockOptions): ObjectBuilder {\n const objectBuilder = new ObjectBuilder(options?.name, this._indent, this);\n\n this._value = objectBuilder;\n\n return objectBuilder;\n }\n\n call(functionName: string, options?: CreateBlockOptions): ObjectBuilder {\n this._functionName = functionName;\n const objectBuilder = new ObjectBuilder(options?.name, this._indent, this);\n\n this._value = objectBuilder;\n\n return objectBuilder;\n }\n\n string(type: StringType, options?: CreateBlockOptions) {\n const stringBuilder = new StringBuilder(type, options?.name, this._indent, this);\n\n this._value = stringBuilder;\n\n return stringBuilder;\n }\n\n toString(): string {\n\n if (this._value == null) {\n throw new Error(\"Value cannot be null for AssignmentBuilder Builder\")\n }\n\n if (this._functionName != null) {\n return this.indent(`${this._variableName} = ${this._functionName}(${this._value.toString()});`);\n }\n\n return this.indent(`${this._variableName} = ${this._value.toString()};`);\n }\n}\n\nexport class AndBuilder extends ContainerBlock {\n\n constructor(and: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._lines.push(and);\n }\n\n and(and: string) {\n this._lines.push(and);\n }\n\n toString() {\n return this._lines.join(\" && \")\n }\n}\n\nexport class VariableBuilder extends Block {\n protected _declaration: string;\n protected _value?: string | Block;\n\n get getValue() {\n return this._value;\n }\n\n constructor(declaration: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._declaration = declaration;\n }\n\n value(value: string): this {\n this._value = value;\n return this;\n }\n\n object(options?: CreateBlockOptions): ObjectBuilder {\n const objectBuilder = new ObjectBuilder(options?.name, this._indent, this);\n\n this._value = objectBuilder;\n\n return objectBuilder;\n }\n\n array(accessor: string, options?: CreateBlockOptions): ArrayBuilder {\n const arrayBuilder = new ArrayBuilder(accessor, options?.name, this._indent, this);\n\n this._value = arrayBuilder;\n\n return arrayBuilder;\n }\n\n toString(): string {\n\n if (this._value == null) {\n throw new Error(\"Value cannot be null for Variable Builder\")\n }\n\n return this.indent(`const ${this._declaration} = ${this._value.toString()};`);\n }\n}\n\nexport class RawBuilder extends ContainerBlock {\n private _raw: string;\n\n constructor(raw: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._raw = raw;\n }\n\n toString(): string {\n return `${this._raw}\\n`;\n }\n}\n\nexport class ObjectBuilder extends Block {\n\n property(line: string) {\n // Add comma to previous line if it exists and isn't a brace\n if (this._lines.length > 0) {\n const lastLine = this._lines[this._lines.length - 1];\n if (typeof lastLine === 'string' && !lastLine.endsWith(\"{\")) {\n this._lines[this._lines.length - 1] = lastLine + \",\";\n }\n }\n this.push(line);\n return this;\n }\n\n nested(propertyName: string, name?: string) {\n const builder = new ObjectBuilder(name, this._indent + \" \", this);\n // Add comma to previous line if it exists and isn't a brace\n if (this._lines.length > 0) {\n const lastLine = this._lines[this._lines.length - 1];\n if (typeof lastLine === 'string' && !lastLine.endsWith(\"{\")) {\n this._lines[this._lines.length - 1] = lastLine + \",\";\n }\n }\n // Add the property name and opening brace\n this.push(`${propertyName}: {`);\n // Add the nested builder\n this.push(builder);\n // Add the closing brace\n this.push(\"}\");\n return builder;\n }\n\n toString(): string {\n // Check if this is a nested object's content\n const isNestedContent = this._parent instanceof ObjectBuilder;\n\n if (isNestedContent) {\n // For nested object contents, just return the lines\n return this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ).join('\\n');\n }\n\n // For root objects, include the braces\n const lines = [\n \"{\",\n ...this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ),\n this.indent(\"}\")\n ];\n\n return lines.join('\\n');\n }\n}\n\nexport class FunctionFactoryBuilder extends ContainerBlock {\n private _functionName?: string;\n private _params: Param[] = [];\n private _return: boolean = false;\n\n constructor(functionName?: string, sectionName?: string, parentIndent: string = \"\", parent?: Block) {\n super(sectionName, parentIndent, parent);\n this._functionName = functionName;\n }\n\n getParameters() {\n return [...this._params];\n }\n\n createParameter(value: any): Param {\n const name = `injection${this._params.length}`;\n return {\n name,\n value\n }\n }\n\n parameters(...params: Param[]): this {\n this._params.push(...params);\n return this;\n }\n\n /**\n * Adds a factory parameter carrying `value` and returns its name, for generated code to\n * refer to. See `CodeBuilder.bind` for why values travel this way.\n */\n bind(value: unknown): string {\n const parameter = this.createParameter(value);\n this._params.push(parameter);\n return parameter.name;\n }\n\n return() {\n this._return = true;\n return this;\n }\n\n appendBody(line: string): this {\n this.push(line);\n return this;\n }\n\n invoke() {\n const body = this.toString();\n const parameterNames = this._getParameterNames();\n const parameterValues = this._getParameterValues();\n\n return Function(...parameterNames, body)(...parameterValues)\n }\n\n private _getParameterNames() {\n return this._params.map(w => w.name).join(\", \")\n }\n\n private _getParameterValues() {\n return this._params.map(w => w.value);\n }\n\n toString(): string {\n const r = this._return === true ? \"return \" : \"\";\n const signature = this._functionName\n ? `${r}function ${this._functionName}(${this._getParameterNames()})`\n : `${r}function(${this._getParameterNames()})`;\n\n const lines = [\n this.indent(signature + \" {\"),\n ...this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ),\n this.indent(\"}\")\n ];\n\n return lines.join('\\n');\n }\n}\n\nexport class FunctionBuilder extends ContainerBlock {\n private _functionName?: string;\n private _params: (string | GenericParam)[] = [];\n private _return: boolean = false;\n\n constructor(functionName?: string, sectionName?: string, parentIndent: string = \"\", parent?: Block) {\n super(sectionName, parentIndent, parent);\n this._functionName = functionName;\n }\n\n parameters(...params: (string | GenericParam)[]): this {\n this._params.push(...params);\n return this;\n }\n\n return() {\n this._return = true;\n return this;\n }\n\n appendBody(line: string): this {\n this.push(line);\n return this;\n }\n\n private _getParameterKeys() {\n return this._params.map(w => typeof w === \"object\" ? w.name : w).join(\", \")\n }\n\n toCallable() {\n return `${this._functionName}(${this._params.map(w => typeof w === \"object\" ? w.callName : w).join(\", \")})`\n }\n\n toString(): string {\n const r = this._return === true ? \"return \" : \"\";\n const signature = this._functionName\n ? `${r}function ${this._functionName}(${this._getParameterKeys()})`\n : `${r}function(${this._getParameterKeys()})`;\n\n const lines = [\n this.indent(signature + \" {\"),\n ...this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ),\n this.indent(\"}\")\n ];\n\n return lines.join('\\n');\n }\n}\n\nexport class ArrayBuilder extends Block {\n constructor(accessor: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._lines.push(accessor);\n }\n\n append(accessor: string) {\n this._lines.push(accessor);\n return this;\n }\n\n toString() {\n return `[${this._lines.join(\",\")}]`\n }\n}\n\nexport class IfBuilder extends ContainerBlock {\n private _condition: string;\n\n constructor(condition: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._condition = condition;\n }\n\n appendBody(line: string): this {\n this.push(line);\n return this;\n }\n\n unshiftBody(line: string): this {\n this.unshift(line);\n return this;\n }\n\n private stringifyLine(line: Line) {\n if (typeof line === 'string') {\n return this.indent(\" \" + line);\n }\n\n if (Array.isArray(line)) {\n return line.join(\"\\r\\n\")\n }\n\n return line.toString();\n }\n\n toString(): string {\n // need to join with \\r\\n because we are not an object\n const lines = [\n this.indent(`if (${this._condition}) {`),\n this._lines.map(x => this.stringifyLine(x)).join(\"\\r\\n\"),\n this.indent(\"}\")\n ]\n\n return lines.join(\"\\n\\n\");\n }\n}\n\nexport class CodeBuilder extends ContainerBlock {\n\n private _bindings: Param[] = [];\n\n /**\n * Makes `value` available to the generated function under the returned name.\n *\n * Generated code must never reach a runtime value by its source name or by pasting its\n * source text: a minifier renames the declaration and cannot see inside the generated\n * string, and pasted source loses the scope it closed over (#40, #46). A binding is passed\n * in as a real value when the function is compiled, so it survives any bundler.\n */\n bind(value: unknown, name: string = `binding${this._bindings.length}`): string {\n this._bindings.push({ name, value });\n return name;\n }\n\n getBindings() {\n return [...this._bindings];\n }\n\n toString(): string {\n return this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(line)\n : line.toString()\n ).join('\\n\\n');\n }\n}","export const uuid = (length: number = 16): string => {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charLength = chars.length;\n let result = '';\n\n for (let i = 0; i < length; i++) {\n result += chars[Math.random() * charLength | 0];\n }\n return result;\n}\n\nconst HEX_CHARS = '0123456789abcdef';\nconst UUID_TEMPLATE = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\n\nconst hasCrypto =\n typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function';\n\nconst hasRandomUUID =\n typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function';\n\nexport const uuidv4 = (): string => {\n if (hasRandomUUID) {\n return crypto.randomUUID();\n }\n\n return uuidv4Fallback();\n};\n\nconst uuidv4Fallback = (): string => {\n let randomBytes: Uint8Array | null = null;\n if (hasCrypto) {\n randomBytes = crypto.getRandomValues(new Uint8Array(16));\n }\n\n let byteIndex = 0;\n let uuid = '';\n\n for (let i = 0; i < UUID_TEMPLATE.length; i++) {\n const c = UUID_TEMPLATE[i];\n if (c === '-') {\n uuid += '-';\n continue;\n }\n\n let r: number;\n if (hasCrypto && randomBytes) {\n // Each byte gives two hex digits (nibbles)\n r =\n (i % 2 === 0\n ? randomBytes[byteIndex] >> 4\n : randomBytes[byteIndex++] & 0x0f);\n } else {\n r = Math.floor(Math.random() * 16);\n }\n\n if (c === 'x') {\n uuid += HEX_CHARS[r];\n } else if (c === 'y') {\n // Variant bits: 8, 9, A, or B\n uuid += HEX_CHARS[(r & 0x3) | 0x8];\n } else if (c === '4') {\n uuid += '4';\n }\n }\n\n return uuid;\n};\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export * from './blocks';\nexport * from './types';"],"names":["uuid","Block","name","parentIndent","parent","w","lines","block","indent","split","result","item","found","undefined","Error","x","line","foundIndex","text","ContainerBlock","condition","options","builder","IfBuilder","raw","RawBuilder","FunctionBuilder","FunctionFactoryBuilder","declaration","VariableBuilder","variableName","AssignmentBuilder","ObjectBuilder","SlotBlock","accessor","ArrayBuilder","StringBuilder","type","value","and","AndBuilder","objectBuilder","functionName","stringBuilder","arrayBuilder","lastLine","propertyName","isNestedContent","sectionName","params","parameter","body","parameterNames","parameterValues","Function","r","signature","Array","CodeBuilder","length","chars","charLength","i","Math","HEX_CHARS","UUID_TEMPLATE","hasCrypto","crypto","hasRandomUUID","uuidv4","uuidv4Fallback","randomBytes","Uint8Array","byteIndex","c"],"mappings":";;;;;;;;;;;;;;;;;;;AAAoC;AAS7B,MAAeC;IACT,KAAa;IACZ,SAAiB,EAAE,CAAC;IACpB,UAAkB,GAAG;IACrB,QAAgB;IAE1B,YAAYC,IAAa,EAAEC,eAAuB,EAAE,EAAEC,MAAc,CAAE;QAClE,IAAI,CAAC,IAAI,GAAGF,QAAQ,OAAOA,OAAOF,4CAAIA;QACtC,IAAI,CAAC,OAAO,GAAGG;QACf,IAAI,CAAC,OAAO,GAAGC;IACnB;IAEA,QAAQF,IAAY,EAAE;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAACG,CAAAA,IAAK,OAAOA,MAAM,YAAYA,EAAE,IAAI,KAAKH;IAC1E;IAEA,WAAW;QACP,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,YAAY;QACR,OAAO,IAAI,CAAC,OAAO;IACvB;IAEA,YAAY;QACR,OAAO,IAAI,CAAC,OAAO;IACvB;IAEA,SAASI,KAAa,EAAE;QACpB,IAAI,CAAC,MAAM,GAAGA;IAClB;IAEA,UAAUC,KAAY,EAAE;QACpB,IAAI,CAAC,OAAO,GAAGA;IACnB;IAEA,UAAUC,MAAc,EAAE;QACtB,IAAI,CAAC,OAAO,GAAGA;IACnB;IAEA,aAA8BN,IAAY,EAAiB;QAEvD,IAAIA,KAAK,QAAQ,CAAC,SAAS,OAAO;YAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAACG,CAAAA,IAAK,OAAOA,MAAM,YAAYA,EAAE,IAAI,KAAKH;QACrE;QAEA,MAAMO,QAAQP,KAAK,KAAK,CAAC;QACzB,yCAAyC;QACzC,IAAIQ,SAAgB,IAAI;QAExB,KAAK,MAAMC,QAAQF,MAAO;YACtB,MAAMG,QAAQF,OAAO,MAAM,CAAC,IAAI,CAACL,CAAAA,IAAK,OAAOA,MAAM,YAAYA,EAAE,IAAI,KAAKM;YAE1E,IAAIC,SAAS,MAAM;gBAEf,IAAI,cAAcF,UAAUA,OAAO,QAAQ,YAAYT,SAASS,OAAO,QAAQ,CAAC,IAAI,KAAKC,MAAM;oBAC3FD,SAASA,OAAO,QAAQ;oBACxB;gBACJ;gBAEA,OAAOG;YACX;YAEAH,SAASE;QACb;QAEA,OAAOF;IACX;IAEA,IAAqBR,IAAY,EAAK;QAClC,MAAMU,QAAQ,IAAI,CAAC,YAAY,CAACV;QAEhC,IAAIU,SAAS,MAAM;YACf,MAAM,IAAIE,MAAM,CAAC,gDAAgD,EAAEZ,MAAM;QAC7E;QAEA,OAAOU;IACX;IAEA,IAAIV,IAAY,EAAE;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAACG,CAAAA,IAAK,OAAOA,MAAM,YAAYA,EAAE,IAAI,KAAKH;IACrE;IAEA,OAAOA,IAAY,EAAE;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAACa,CAAAA,IAAK,OAAOA,MAAM,YAAY,OAAOA,EAAE,IAAI,KAAK,YAAYA,EAAE,IAAI,KAAKb;IAC5G;IAEA,QAAQA,IAAY,EAAEc,IAAW,EAAE;QAE/B,MAAMC,aAAa,IAAI,CAAC,MAAM,CAAC,SAAS,CAACF,CAAAA,IAAK,OAAOA,MAAM,YAAYA,EAAE,IAAI,KAAKb;QAElF,IAAIe,eAAe,CAAC,GAAG;YACnB,MAAM,IAAIH,MAAM,CAAC,iCAAiC,EAAEZ,MAAM;QAC9D;QAEA,MAAMU,QAAQ,IAAI,CAAC,MAAM,CAACK,WAAW;QAErC,IAAI,OAAOL,UAAU,UAAU;YAC3B,mBAAmB;YACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAACK,YAAY,GAAGD;YAClC;QACJ;QAEAA,KAAK,QAAQ,CAACJ,MAAM,QAAQ;QAC5BI,KAAK,SAAS,CAACJ,MAAM,SAAS;QAC9BI,KAAK,SAAS,CAACJ,MAAM,SAAS;QAE9B,mBAAmB;QACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAACK,YAAY,GAAGD;QAElC;IACJ;IAEU,KAAKA,IAAU,EAAE;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAACA;IACrB;IAEU,QAAQA,IAAU,EAAE;QAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,CAACA;IACxB;IAEU,OAAOE,IAAY,EAAU;QACnC,OAAO,IAAI,CAAC,OAAO,GAAGA;IAC1B;AAIJ;AAEO,MAAeC,uBAAuBlB;IACzC,GAAGmB,SAAiB,EAAEC,OAA4B,EAAa;QAC3D,MAAMC,UAAU,IAAIC,UAAUH,WAAWC,SAAS,MAAM,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI;QACjF,IAAIA,SAAS,YAAY,MAAM;YAC3B,IAAI,CAAC,OAAO,CAACC;QACjB,OAAO;YACH,IAAI,CAAC,IAAI,CAACA;QACd;QAEA,OAAOA;IACX;IAEA,IAAIE,GAAW,EAAEH,OAA4B,EAAc;QACvD,MAAMC,UAAU,IAAIG,WAAWD,KAAKH,SAAS,MAAM,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI;QAC5E,IAAI,CAAC,IAAI,CAACC;QACV,OAAOA;IACX;IAEA,SAASpB,IAAa,EAAEmB,OAA4B,EAAmB;QACnE,MAAMC,UAAU,IAAII,gBAAgBxB,MAAMmB,SAAS,MAAM,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI;QAClF,IAAI,CAAC,IAAI,CAACC;QACV,OAAOA;IACX;IAEA,QAAQpB,IAAa,EAAEmB,OAA4B,EAA0B;QACzE,MAAMC,UAAU,IAAIK,uBAAuBzB,MAAMmB,SAAS,MAAM,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI;QACzF,IAAI,CAAC,IAAI,CAACC;QACV,OAAOA;IACX;IAEA,SAASM,WAAmB,EAAEP,OAA4B,EAAmB;QACzE,MAAMC,UAAU,IAAIO,gBAAgBD,aAAaP,SAAS,MAAM,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI;QACzF,IAAI,CAAC,IAAI,CAACC;QACV,OAAOA;IACX;IAEA,OAAOQ,YAAoB,EAAET,OAA4B,EAAqB;QAC1E,MAAMC,UAAU,IAAIS,kBAAkBD,cAAcT,SAAS,MAAM,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI;QAC5F,IAAI,CAAC,IAAI,CAACC;QACV,OAAOA;IACX;IAEA,OAAOD,OAA4B,EAAiB;QAChD,MAAMC,UAAU,IAAIU,cAAcX,SAAS,MAAM,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI;QAC1E,IAAI,CAAC,IAAI,CAACC;QACV,OAAOA;IACX;IAEA,KAAKpB,IAAY,EAAE;QACf,MAAMoB,UAAU,IAAIW,UAAU/B,MAAM,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI;QAC7D,IAAI,CAAC,IAAI,CAACoB;QACV,OAAOA;IACX;IAEA,MAAMY,QAAgB,EAAEb,OAA4B,EAAE;QAClD,MAAMC,UAAU,IAAIa,aAAaD,UAAUb,SAAS,MAAM,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI;QACnF,IAAI,CAAC,IAAI,CAACC;QACV,OAAOA;IACX;AACJ;AAIO,MAAMc,sBAAsBnC;IAEvB,MAAkB;IAE1B,YAAYoC,IAAgB,EAAEnC,IAAa,EAAEC,eAAuB,EAAE,EAAEC,MAAc,CAAE;QACpF,KAAK,CAACF,MAAMC,cAAcC;QAC1B,IAAI,CAAC,KAAK,GAAGiC;IACjB;IAEA,OAAOC,KAAa,EAAE;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAACA;QACjB,OAAO,IAAI;IACf;IAEA,WAAW;QACP,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY;YAC3B,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;QACxC;QAEA,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC;AACJ;AAEO,MAAML,kBAAkBd;IAE3B,YAAYjB,IAAY,EAAEC,eAAuB,EAAE,EAAEC,MAAc,CAAE;QACjE,KAAK,CAACF,MAAMC,cAAcC;IAC9B;IAEA,OAAOY,IAAoB,EAAE;QACzB,IAAI,CAAC,IAAI,CAACA;IACd;IAEA,WAAmB;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAACA,CAAAA,OACnB,OAAOA,SAAS,WACV,IAAI,CAAC,MAAM,CAACA,QACZA,KAAK,QAAQ,IACrB,IAAI,CAAC;IACX;AACJ;AAEO,MAAMe,0BAA0BZ;IACzB,cAAsB;IACtB,OAAwB;IACxB,cAAuB;IAEjC,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,YAAYW,YAAoB,EAAE5B,IAAa,EAAEC,eAAuB,EAAE,EAAEC,MAAc,CAAE;QACxF,KAAK,CAACF,MAAMC,cAAcC;QAC1B,IAAI,CAAC,aAAa,GAAG0B;IACzB;IAEA,MAAMQ,KAAa,EAAQ;QACvB,IAAI,CAAC,MAAM,GAAGA;QACd,OAAO,IAAI;IACf;IAEA,IAAIC,GAAW,EAAElB,OAA4B,EAAQ;QACjD,IAAI,CAAC,MAAM,GAAG,IAAImB,WAAWD,KAAKlB,SAAS,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI;QACnE,OAAO,IAAI;IACf;IAEA,OAAOA,OAA4B,EAAiB;QAChD,MAAMoB,gBAAgB,IAAIT,cAAcX,SAAS,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI;QAEzE,IAAI,CAAC,MAAM,GAAGoB;QAEd,OAAOA;IACX;IAEA,KAAKC,YAAoB,EAAErB,OAA4B,EAAiB;QACpE,IAAI,CAAC,aAAa,GAAGqB;QACrB,MAAMD,gBAAgB,IAAIT,cAAcX,SAAS,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI;QAEzE,IAAI,CAAC,MAAM,GAAGoB;QAEd,OAAOA;IACX;IAEA,OAAOJ,IAAgB,EAAEhB,OAA4B,EAAE;QACnD,MAAMsB,gBAAgB,IAAIP,cAAcC,MAAMhB,SAAS,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI;QAE/E,IAAI,CAAC,MAAM,GAAGsB;QAEd,OAAOA;IACX;IAEA,WAAmB;QAEf,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;YACrB,MAAM,IAAI7B,MAAM;QACpB;QAEA,IAAI,IAAI,CAAC,aAAa,IAAI,MAAM;YAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;QAClG;QAEA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC3E;AACJ;AAEO,MAAM0B,mBAAmBrB;IAE5B,YAAYoB,GAAW,EAAErC,IAAa,EAAEC,eAAuB,EAAE,EAAEC,MAAc,CAAE;QAC/E,KAAK,CAACF,MAAMC,cAAcC;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAACmC;IACrB;IAEA,IAAIA,GAAW,EAAE;QACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAACA;IACrB;IAEA,WAAW;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5B;AACJ;AAEO,MAAMV,wBAAwB5B;IACvB,aAAqB;IACrB,OAAwB;IAElC,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,YAAY2B,WAAmB,EAAE1B,IAAa,EAAEC,eAAuB,EAAE,EAAEC,MAAc,CAAE;QACvF,KAAK,CAACF,MAAMC,cAAcC;QAC1B,IAAI,CAAC,YAAY,GAAGwB;IACxB;IAEA,MAAMU,KAAa,EAAQ;QACvB,IAAI,CAAC,MAAM,GAAGA;QACd,OAAO,IAAI;IACf;IAEA,OAAOjB,OAA4B,EAAiB;QAChD,MAAMoB,gBAAgB,IAAIT,cAAcX,SAAS,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI;QAEzE,IAAI,CAAC,MAAM,GAAGoB;QAEd,OAAOA;IACX;IAEA,MAAMP,QAAgB,EAAEb,OAA4B,EAAgB;QAChE,MAAMuB,eAAe,IAAIT,aAAaD,UAAUb,SAAS,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI;QAEjF,IAAI,CAAC,MAAM,GAAGuB;QAEd,OAAOA;IACX;IAEA,WAAmB;QAEf,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;YACrB,MAAM,IAAI9B,MAAM;QACpB;QAEA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;IAChF;AACJ;AAEO,MAAMW,mBAAmBN;IACpB,KAAa;IAErB,YAAYK,GAAW,EAAEtB,IAAa,EAAEC,eAAuB,EAAE,EAAEC,MAAc,CAAE;QAC/E,KAAK,CAACF,MAAMC,cAAcC;QAC1B,IAAI,CAAC,IAAI,GAAGoB;IAChB;IAEA,WAAmB;QACf,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3B;AACJ;AAEO,MAAMQ,sBAAsB/B;IAE/B,SAASe,IAAY,EAAE;QACnB,4DAA4D;QAC5D,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG;YACxB,MAAM6B,WAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE;YACpD,IAAI,OAAOA,aAAa,YAAY,CAACA,SAAS,QAAQ,CAAC,MAAM;gBACzD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,GAAGA,WAAW;YACrD;QACJ;QACA,IAAI,CAAC,IAAI,CAAC7B;QACV,OAAO,IAAI;IACf;IAEA,OAAO8B,YAAoB,EAAE5C,IAAa,EAAE;QACxC,MAAMoB,UAAU,IAAIU,cAAc9B,MAAM,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI;QACjE,4DAA4D;QAC5D,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG;YACxB,MAAM2C,WAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE;YACpD,IAAI,OAAOA,aAAa,YAAY,CAACA,SAAS,QAAQ,CAAC,MAAM;gBACzD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,GAAGA,WAAW;YACrD;QACJ;QACA,0CAA0C;QAC1C,IAAI,CAAC,IAAI,CAAC,GAAGC,aAAa,GAAG,CAAC;QAC9B,yBAAyB;QACzB,IAAI,CAAC,IAAI,CAACxB;QACV,wBAAwB;QACxB,IAAI,CAAC,IAAI,CAAC;QACV,OAAOA;IACX;IAEA,WAAmB;QACf,6CAA6C;QAC7C,MAAMyB,kBAAkB,IAAI,CAAC,OAAO,YAAYf;QAEhD,IAAIe,iBAAiB;YACjB,oDAAoD;YACpD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC/B,CAAAA,OACnB,OAAOA,SAAS,WACV,IAAI,CAAC,MAAM,CAAC,OAAOA,QACnBA,KAAK,QAAQ,IACrB,IAAI,CAAC;QACX;QAEA,uCAAuC;QACvC,MAAMV,QAAQ;YACV;eACG,IAAI,CAAC,MAAM,CAAC,GAAG,CAACU,CAAAA,OACf,OAAOA,SAAS,WACV,IAAI,CAAC,MAAM,CAAC,OAAOA,QACnBA,KAAK,QAAQ;YAEvB,IAAI,CAAC,MAAM,CAAC;SACf;QAED,OAAOV,MAAM,IAAI,CAAC;IACtB;AACJ;AAEO,MAAMqB,+BAA+BR;IAChC,cAAuB;IACvB,UAAmB,EAAE,CAAC;IACtB,UAAmB,MAAM;IAEjC,YAAYuB,YAAqB,EAAEM,WAAoB,EAAE7C,eAAuB,EAAE,EAAEC,MAAc,CAAE;QAChG,KAAK,CAAC4C,aAAa7C,cAAcC;QACjC,IAAI,CAAC,aAAa,GAAGsC;IACzB;IAEA,gBAAgB;QACZ,OAAO;eAAI,IAAI,CAAC,OAAO;SAAC;IAC5B;IAEA,gBAAgBJ,KAAU,EAAS;QAC/B,MAAMpC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QAC9C,OAAO;YACHA;YACAoC;QACJ;IACJ;IAEA,WAAW,GAAGW,MAAe,EAAQ;QACjC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAIA;QACrB,OAAO,IAAI;IACf;IAEA;;;KAGC,GACD,KAAKX,KAAc,EAAU;QACzB,MAAMY,YAAY,IAAI,CAAC,eAAe,CAACZ;QACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAACY;QAClB,OAAOA,UAAU,IAAI;IACzB;IAEA,SAAS;QACL,IAAI,CAAC,OAAO,GAAG;QACf,OAAO,IAAI;IACf;IAEA,WAAWlC,IAAY,EAAQ;QAC3B,IAAI,CAAC,IAAI,CAACA;QACV,OAAO,IAAI;IACf;IAEA,SAAS;QACL,MAAMmC,OAAO,IAAI,CAAC,QAAQ;QAC1B,MAAMC,iBAAiB,IAAI,CAAC,kBAAkB;QAC9C,MAAMC,kBAAkB,IAAI,CAAC,mBAAmB;QAEhD,OAAOC,YAAYF,gBAAgBD,SAASE;IAChD;IAEQ,qBAAqB;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAChD,CAAAA,IAAKA,EAAE,IAAI,EAAE,IAAI,CAAC;IAC9C;IAEQ,sBAAsB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAACA,CAAAA,IAAKA,EAAE,KAAK;IACxC;IAEA,WAAmB;QACf,MAAMkD,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,YAAY;QAC9C,MAAMC,YAAY,IAAI,CAAC,aAAa,GAC9B,GAAGD,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,GAClE,GAAGA,EAAE,SAAS,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAElD,MAAMjD,QAAQ;YACV,IAAI,CAAC,MAAM,CAACkD,YAAY;eACrB,IAAI,CAAC,MAAM,CAAC,GAAG,CAACxC,CAAAA,OACf,OAAOA,SAAS,WACV,IAAI,CAAC,MAAM,CAAC,OAAOA,QACnBA,KAAK,QAAQ;YAEvB,IAAI,CAAC,MAAM,CAAC;SACf;QAED,OAAOV,MAAM,IAAI,CAAC;IACtB;AACJ;AAEO,MAAMoB,wBAAwBP;IACzB,cAAuB;IACvB,UAAqC,EAAE,CAAC;IACxC,UAAmB,MAAM;IAEjC,YAAYuB,YAAqB,EAAEM,WAAoB,EAAE7C,eAAuB,EAAE,EAAEC,MAAc,CAAE;QAChG,KAAK,CAAC4C,aAAa7C,cAAcC;QACjC,IAAI,CAAC,aAAa,GAAGsC;IACzB;IAEA,WAAW,GAAGO,MAAiC,EAAQ;QACnD,IAAI,CAAC,OAAO,CAAC,IAAI,IAAIA;QACrB,OAAO,IAAI;IACf;IAEA,SAAS;QACL,IAAI,CAAC,OAAO,GAAG;QACf,OAAO,IAAI;IACf;IAEA,WAAWjC,IAAY,EAAQ;QAC3B,IAAI,CAAC,IAAI,CAACA;QACV,OAAO,IAAI;IACf;IAEQ,oBAAoB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAACX,CAAAA,IAAK,OAAOA,MAAM,WAAWA,EAAE,IAAI,GAAGA,GAAG,IAAI,CAAC;IAC1E;IAEA,aAAa;QACT,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAACA,CAAAA,IAAK,OAAOA,MAAM,WAAWA,EAAE,QAAQ,GAAGA,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/G;IAEA,WAAmB;QACf,MAAMkD,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,YAAY;QAC9C,MAAMC,YAAY,IAAI,CAAC,aAAa,GAC9B,GAAGD,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,GACjE,GAAGA,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAEjD,MAAMjD,QAAQ;YACV,IAAI,CAAC,MAAM,CAACkD,YAAY;eACrB,IAAI,CAAC,MAAM,CAAC,GAAG,CAACxC,CAAAA,OACf,OAAOA,SAAS,WACV,IAAI,CAAC,MAAM,CAAC,OAAOA,QACnBA,KAAK,QAAQ;YAEvB,IAAI,CAAC,MAAM,CAAC;SACf;QAED,OAAOV,MAAM,IAAI,CAAC;IACtB;AACJ;AAEO,MAAM6B,qBAAqBlC;IAC9B,YAAYiC,QAAgB,EAAEhC,IAAa,EAAEC,eAAuB,EAAE,EAAEC,MAAc,CAAE;QACpF,KAAK,CAACF,MAAMC,cAAcC;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC8B;IACrB;IAEA,OAAOA,QAAgB,EAAE;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAACA;QACjB,OAAO,IAAI;IACf;IAEA,WAAW;QACP,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC;AACJ;AAEO,MAAMX,kBAAkBJ;IACnB,WAAmB;IAE3B,YAAYC,SAAiB,EAAElB,IAAa,EAAEC,eAAuB,EAAE,EAAEC,MAAc,CAAE;QACrF,KAAK,CAACF,MAAMC,cAAcC;QAC1B,IAAI,CAAC,UAAU,GAAGgB;IACtB;IAEA,WAAWJ,IAAY,EAAQ;QAC3B,IAAI,CAAC,IAAI,CAACA;QACV,OAAO,IAAI;IACf;IAEA,YAAYA,IAAY,EAAQ;QAC5B,IAAI,CAAC,OAAO,CAACA;QACb,OAAO,IAAI;IACf;IAEQ,cAAcA,IAAU,EAAE;QAC9B,IAAI,OAAOA,SAAS,UAAU;YAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAOA;QAC9B;QAEA,IAAIyC,MAAM,OAAO,CAACzC,OAAO;YACrB,OAAOA,KAAK,IAAI,CAAC;QACrB;QAEA,OAAOA,KAAK,QAAQ;IACxB;IAEA,WAAmB;QACf,sDAAsD;QACtD,MAAMV,QAAQ;YACV,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAACS,CAAAA,IAAK,IAAI,CAAC,aAAa,CAACA,IAAI,IAAI,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC;SACf;QAED,OAAOT,MAAM,IAAI,CAAC;IACtB;AACJ;AAEO,MAAMoD,oBAAoBvC;IAErB,YAAqB,EAAE,CAAC;IAEhC;;;;;;;KAOC,GACD,KAAKmB,KAAc,EAAEpC,OAAe,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAU;QAC3E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAAEA;YAAMoC;QAAM;QAClC,OAAOpC;IACX;IAEA,cAAc;QACV,OAAO;eAAI,IAAI,CAAC,SAAS;SAAC;IAC9B;IAEA,WAAmB;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAACc,CAAAA,OACnB,OAAOA,SAAS,WACV,IAAI,CAAC,MAAM,CAACA,QACZA,KAAK,QAAQ,IACrB,IAAI,CAAC;IACX;AACJ;;;;;;;;ACrpBO,MAAMhB,OAAO,CAAC2D,SAAiB,EAAE;IACpC,MAAMC,QAAQ;IACd,MAAMC,aAAaD,MAAM,MAAM;IAC/B,IAAIlD,SAAS;IAEb,IAAK,IAAIoD,IAAI,GAAGA,IAAIH,QAAQG,IAAK;QAC7BpD,UAAUkD,KAAK,CAACG,KAAK,MAAM,KAAKF,aAAa,EAAE;IACnD;IACA,OAAOnD;AACX,EAAC;AAED,MAAMsD,YAAY;AAClB,MAAMC,gBAAgB;AAEtB,MAAMC,YACF,OAAOC,WAAW,eAAe,OAAOA,OAAO,eAAe,KAAK;AAEvE,MAAMC,gBACF,OAAOD,WAAW,eAAe,OAAOA,OAAO,UAAU,KAAK;AAE3D,MAAME,SAAS;IAClB,IAAID,eAAe;QACf,OAAOD,OAAO,UAAU;IAC5B;IAEA,OAAOG;AACX,EAAE;AAEF,MAAMA,iBAAiB;IACnB,IAAIC,cAAiC;IACrC,IAAIL,WAAW;QACXK,cAAcJ,OAAO,eAAe,CAAC,IAAIK,WAAW;IACxD;IAEA,IAAIC,YAAY;IAChB,IAAIzE,OAAO;IAEX,IAAK,IAAI8D,IAAI,GAAGA,IAAIG,cAAc,MAAM,EAAEH,IAAK;QAC3C,MAAMY,IAAIT,aAAa,CAACH,EAAE;QAC1B,IAAIY,MAAM,KAAK;YACX1E,QAAQ;YACR;QACJ;QAEA,IAAIuD;QACJ,IAAIW,aAAaK,aAAa;YAC1B,2CAA2C;YAC3ChB,IACKO,IAAI,MAAM,IACLS,WAAW,CAACE,UAAU,IAAI,IAC1BF,WAAW,CAACE,YAAY,GAAG;QACzC,OAAO;YACHlB,IAAIQ,KAAK,KAAK,CAACA,KAAK,MAAM,KAAK;QACnC;QAEA,IAAIW,MAAM,KAAK;YACX1E,QAAQgE,SAAS,CAACT,EAAE;QACxB,OAAO,IAAImB,MAAM,KAAK;YAClB,8BAA8B;YAC9B1E,QAAQgE,SAAS,CAAET,IAAI,MAAO,IAAI;QACtC,OAAO,IAAImB,MAAM,KAAK;YAClB1E,QAAQ;QACZ;IACJ;IAEA,OAAOA;AACX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClEA;AACA;AACA;AACA,kDAAkD,wCAAwC;AAC1F;AACA;AACA,E;;;;ACNA,wF;;;;;;;;;;;;;;;;;;;;;;ACAyB;AACD"}
|
|
@@ -13,6 +13,14 @@ export declare class MemoryDataCollection {
|
|
|
13
13
|
private _getNextId;
|
|
14
14
|
private resolveId;
|
|
15
15
|
private getAndSetId;
|
|
16
|
+
/**
|
|
17
|
+
* The record this collection keeps.
|
|
18
|
+
*
|
|
19
|
+
* A copy, so a caller holding the entity cannot write into the store afterwards. Dates are held
|
|
20
|
+
* as Dates, at the root, in objects and in arrays: a predicate compares a Date, and a stored ISO
|
|
21
|
+
* string never matches one. A durable subclass hydrates parsed JSON through here too.
|
|
22
|
+
*/
|
|
23
|
+
private toStored;
|
|
16
24
|
seed(items: Record<string, unknown>[]): void;
|
|
17
25
|
private resolveCurrentIdSet;
|
|
18
26
|
private resolveIdSet;
|
|
@@ -379,6 +379,128 @@ var HashType = /*#__PURE__*/ (/* unused pure expression or super */ null && (fun
|
|
|
379
379
|
}({})));
|
|
380
380
|
|
|
381
381
|
|
|
382
|
+
},
|
|
383
|
+
575(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
384
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
385
|
+
l: () => (isArrayValued)
|
|
386
|
+
});
|
|
387
|
+
/* import */ var _types__rspack_import_0 = __webpack_require__(537);
|
|
388
|
+
|
|
389
|
+
/**
|
|
390
|
+
* Types whose runtime value is a JS array.
|
|
391
|
+
*
|
|
392
|
+
* `Array` and `Vector` are the same thing to every layer that copies, compares, hashes or
|
|
393
|
+
* freezes a value — a vector is a list of numbers and nothing more. They differ only where a
|
|
394
|
+
* backend chooses storage, which is the one place that should ask for `SchemaTypes.Vector` by
|
|
395
|
+
* name.
|
|
396
|
+
*
|
|
397
|
+
* This exists so adding a third array-shaped type is one edit rather than a hunt through
|
|
398
|
+
* twelve handlers. Missing one of those is silent in the worst way: a vector that clones by
|
|
399
|
+
* reference is shared with the change tracker's copy, so overwriting an embedding produces no
|
|
400
|
+
* diff and the save reports nothing to do.
|
|
401
|
+
*/ const ARRAY_VALUED_TYPES = new Set([
|
|
402
|
+
_types__rspack_import_0/* .SchemaTypes.Array */.L.Array,
|
|
403
|
+
_types__rspack_import_0/* .SchemaTypes.Vector */.L.Vector
|
|
404
|
+
]);
|
|
405
|
+
/** True when the property's value is a JS array and needs value rather than reference semantics. */ const isArrayValued = (type)=>ARRAY_VALUED_TYPES.has(type);
|
|
406
|
+
/**
|
|
407
|
+
* True when the property's elements are primitives, so a spread is a sufficient copy.
|
|
408
|
+
*
|
|
409
|
+
* A vector is always numbers, so it never needs the per-element deep copy an array of objects
|
|
410
|
+
* or dates does.
|
|
411
|
+
*/ const PRIMITIVE_ELEMENT_TYPES = new Set([
|
|
412
|
+
_types__rspack_import_0/* .SchemaTypes.String */.L.String,
|
|
413
|
+
_types__rspack_import_0/* .SchemaTypes.Number */.L.Number,
|
|
414
|
+
_types__rspack_import_0/* .SchemaTypes.Boolean */.L.Boolean
|
|
415
|
+
]);
|
|
416
|
+
const hasPrimitiveElements = (type, elementType)=>type === SchemaTypes.Vector || PRIMITIVE_ELEMENT_TYPES.has(elementType);
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
},
|
|
420
|
+
894(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
421
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
422
|
+
T: () => (getStorageDateReviver)
|
|
423
|
+
});
|
|
424
|
+
/* import */ var _types__rspack_import_0 = __webpack_require__(537);
|
|
425
|
+
/* import */ var _propertyKind__rspack_import_1 = __webpack_require__(575);
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
const collectDatePaths = (properties, paths)=>{
|
|
429
|
+
for (const property of properties){
|
|
430
|
+
// The stored value belongs to whoever wrote it: a custom serializer, deserializer or
|
|
431
|
+
// transform reads it back, and would be handed a Date it did not expect. Unmapped
|
|
432
|
+
// properties are never stored.
|
|
433
|
+
if (property.valueSerializer != null || property.valueDeserializer != null || property.transform != null || property.isUnmapped) {
|
|
434
|
+
continue;
|
|
435
|
+
}
|
|
436
|
+
if (property.type === _types__rspack_import_0/* .SchemaTypes.Object */.L.Object) {
|
|
437
|
+
collectDatePaths(property.children, paths);
|
|
438
|
+
continue;
|
|
439
|
+
}
|
|
440
|
+
const isArray = (0,_propertyKind__rspack_import_1/* .isArrayValued */.l)(property.type) && property.innerSchema?.type === _types__rspack_import_0/* .SchemaTypes.Date */.L.Date;
|
|
441
|
+
if (property.type !== _types__rspack_import_0/* .SchemaTypes.Date */.L.Date && isArray === false) {
|
|
442
|
+
continue;
|
|
443
|
+
}
|
|
444
|
+
paths.push({
|
|
445
|
+
segments: [
|
|
446
|
+
...property.getParentPathArray({
|
|
447
|
+
useFromPropertyName: true
|
|
448
|
+
}),
|
|
449
|
+
property.getResolvedName()
|
|
450
|
+
],
|
|
451
|
+
isArray
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
};
|
|
455
|
+
const reviveAt = (record, path)=>{
|
|
456
|
+
const { segments } = path;
|
|
457
|
+
let parent = record;
|
|
458
|
+
for(let i = 0, length = segments.length - 1; i < length; i++){
|
|
459
|
+
parent = parent[segments[i]];
|
|
460
|
+
// An absent or null parent holds no date
|
|
461
|
+
if (parent == null || typeof parent !== "object") {
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
const key = segments[segments.length - 1];
|
|
466
|
+
const value = parent[key];
|
|
467
|
+
if (path.isArray === false) {
|
|
468
|
+
if (typeof value === "string") {
|
|
469
|
+
parent[key] = new Date(value);
|
|
470
|
+
}
|
|
471
|
+
return;
|
|
472
|
+
}
|
|
473
|
+
if (Array.isArray(value)) {
|
|
474
|
+
for(let i = 0, length = value.length; i < length; i++){
|
|
475
|
+
if (typeof value[i] === "string") {
|
|
476
|
+
value[i] = new Date(value[i]);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
};
|
|
481
|
+
/** Per schema: `null` for a schema with no dates, so a caller can skip the pass. */ const revivers = new WeakMap();
|
|
482
|
+
/**
|
|
483
|
+
* The reviver for `schema`'s records, or `null` when it declares no dates.
|
|
484
|
+
*
|
|
485
|
+
* Built once per compiled schema. A read revives every row it returns, so the paths are resolved
|
|
486
|
+
* here rather than per row.
|
|
487
|
+
*/ const getStorageDateReviver = (schema)=>{
|
|
488
|
+
const cached = revivers.get(schema);
|
|
489
|
+
if (cached !== undefined) {
|
|
490
|
+
return cached;
|
|
491
|
+
}
|
|
492
|
+
const paths = [];
|
|
493
|
+
collectDatePaths(schema.properties, paths);
|
|
494
|
+
const reviver = paths.length === 0 ? null : (record)=>{
|
|
495
|
+
for(let i = 0, length = paths.length; i < length; i++){
|
|
496
|
+
reviveAt(record, paths[i]);
|
|
497
|
+
}
|
|
498
|
+
};
|
|
499
|
+
revivers.set(schema, reviver);
|
|
500
|
+
return reviver;
|
|
501
|
+
};
|
|
502
|
+
|
|
503
|
+
|
|
382
504
|
},
|
|
383
505
|
618(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
384
506
|
__webpack_require__.d(__webpack_exports__, {
|
|
@@ -531,6 +653,8 @@ class IdSet {
|
|
|
531
653
|
|
|
532
654
|
// EXTERNAL MODULE: ./src/schema/types.ts
|
|
533
655
|
var types = __webpack_require__(537);
|
|
656
|
+
// EXTERNAL MODULE: ./src/schema/utils/storageDates.ts
|
|
657
|
+
var storageDates = __webpack_require__(894);
|
|
534
658
|
// EXTERNAL MODULE: ./src/results/Result.ts
|
|
535
659
|
var Result = __webpack_require__(718);
|
|
536
660
|
// EXTERNAL MODULE: ./src/utilities/uuid.ts
|
|
@@ -596,10 +720,23 @@ class MemoryDataCollection {
|
|
|
596
720
|
}
|
|
597
721
|
throw new Error(`Id Property '${property.name}' must be string or number, found '${property.type}'`);
|
|
598
722
|
}
|
|
723
|
+
/**
|
|
724
|
+
* The record this collection keeps.
|
|
725
|
+
*
|
|
726
|
+
* A copy, so a caller holding the entity cannot write into the store afterwards. Dates are held
|
|
727
|
+
* as Dates, at the root, in objects and in arrays: a predicate compares a Date, and a stored ISO
|
|
728
|
+
* string never matches one. A durable subclass hydrates parsed JSON through here too.
|
|
729
|
+
*/ toStored(item) {
|
|
730
|
+
const stored = {
|
|
731
|
+
...item
|
|
732
|
+
};
|
|
733
|
+
(0,storageDates/* .getStorageDateReviver */.T)(this.schema)?.(stored);
|
|
734
|
+
return stored;
|
|
735
|
+
}
|
|
599
736
|
seed(items) {
|
|
600
737
|
for(let i = 0, length = items.length; i < length; i++){
|
|
601
738
|
const id = this.resolveIdSet(items[i]);
|
|
602
|
-
this.data.set(id.toString(), items[i]);
|
|
739
|
+
this.data.set(id.toString(), this.toStored(items[i]));
|
|
603
740
|
}
|
|
604
741
|
}
|
|
605
742
|
resolveCurrentIdSet(item) {
|
|
@@ -641,7 +778,7 @@ class MemoryDataCollection {
|
|
|
641
778
|
}
|
|
642
779
|
add(item) {
|
|
643
780
|
const id = this.resolveIdSet(item);
|
|
644
|
-
this.data.set(id.toString(), item);
|
|
781
|
+
this.data.set(id.toString(), this.toStored(item));
|
|
645
782
|
}
|
|
646
783
|
/**
|
|
647
784
|
* Adds a record only when no record with the same key is present. Durable
|
|
@@ -651,7 +788,7 @@ class MemoryDataCollection {
|
|
|
651
788
|
const id = this.resolveIdSet(item);
|
|
652
789
|
const key = id.toString();
|
|
653
790
|
if (this.data.has(key) === false) {
|
|
654
|
-
this.data.set(key, item);
|
|
791
|
+
this.data.set(key, this.toStored(item));
|
|
655
792
|
}
|
|
656
793
|
}
|
|
657
794
|
/**
|
|
@@ -667,7 +804,7 @@ class MemoryDataCollection {
|
|
|
667
804
|
}
|
|
668
805
|
update(item) {
|
|
669
806
|
const id = this.resolveCurrentIdSet(item);
|
|
670
|
-
this.data.set(id.toString(), item);
|
|
807
|
+
this.data.set(id.toString(), this.toStored(item));
|
|
671
808
|
}
|
|
672
809
|
destroy(done) {
|
|
673
810
|
this.nextNumericalIds.clear();
|