@routier/core 0.0.6 → 0.0.7
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/capabilities/Capability.d.ts +6 -16
- package/dist/capabilities/PerformanceCapability.d.ts +4 -6
- package/dist/capabilities/TracingCapability.d.ts +3 -6
- package/dist/capabilities/index.js +399 -343
- package/dist/capabilities/index.js.map +1 -1
- package/dist/capabilities/types.d.ts +10 -19
- package/dist/codegen/blocks.d.ts +8 -0
- package/dist/codegen/handlers/CompareIdsHandlerBuilder.d.ts +4 -0
- package/dist/codegen/handlers/compare/CompareArrayHandler.d.ts +6 -0
- package/dist/codegen/handlers/compare/CompareDateHandler.d.ts +6 -0
- package/dist/codegen/handlers/compareIds/CompareIdsKeyHandler.d.ts +6 -0
- package/dist/codegen/handlers/index.d.ts +1 -0
- package/dist/codegen/handlers/serialize/SerializeDateHandler.d.ts +2 -1
- package/dist/codegen/handlers/serialize/SerializeFunctionHandler.d.ts +6 -0
- package/dist/codegen/index.js +39 -0
- package/dist/codegen/index.js.map +1 -1
- package/dist/collections/index.js.map +1 -1
- package/dist/expressions/index.js +108 -19
- package/dist/expressions/index.js.map +1 -1
- package/dist/index.js +1105 -496
- package/dist/index.js.map +1 -1
- package/dist/pipeline/TrampolinePipeline.d.ts +1 -0
- package/dist/pipeline/index.js +71 -47
- package/dist/pipeline/index.js.map +1 -1
- package/dist/plugins/EphemeralDataPlugin.d.ts +2 -2
- package/dist/plugins/index.js +251 -61
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/query/types.d.ts +5 -0
- package/dist/plugins/replication/OptimisticReplicationDbPlugin.d.ts +2 -1
- package/dist/plugins/replication/ReplicationDbPlugin.d.ts +2 -1
- package/dist/plugins/translators/DataTranslator.d.ts +3 -1
- package/dist/plugins/translators/JsonTranslator.d.ts +1 -0
- package/dist/plugins/translators/SqlTranslator.d.ts +1 -0
- package/dist/plugins/translators/TranslatedArrayValue.d.ts +6 -0
- package/dist/plugins/translators/TranslatedGroupValue.d.ts +6 -0
- package/dist/plugins/translators/TranslatedSingleValue.d.ts +6 -0
- package/dist/plugins/translators/index.d.ts +4 -0
- package/dist/plugins/translators/types.d.ts +10 -0
- package/dist/plugins/types.d.ts +2 -1
- package/dist/schema/PropertyInfo.d.ts +6 -1
- package/dist/schema/SchemaDefinition.d.ts +1 -1
- package/dist/schema/communication/broadcast.d.ts +3 -3
- package/dist/schema/index.js +504 -73
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/property/modifiers/SchemaTracked.d.ts +3 -1
- package/dist/schema/table/SchemaComputed.d.ts +1 -1
- package/dist/schema/testSchemas.test.d.ts +60 -36
- package/dist/schema/types.d.ts +16 -1
- package/dist/utilities/index.js +145 -2
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/strings.d.ts +34 -0
- package/dist/utilities/strings.test.d.ts +1 -0
- package/package.json +1 -1
- package/readme.md +1 -1
package/dist/schema/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema/index.js","sources":["webpack://@routier/core/./src/codegen/SlotPath.ts","webpack://@routier/core/./src/codegen/blocks.ts","webpack://@routier/core/./src/codegen/handlers/CloneHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/CompareHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/DeserializeHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/EnableChangeTrackingHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/EnrichmentHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/FreezeHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/HashHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/HashTypeHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/IdSelectorHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/MergeHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/PrepareHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/SerializeHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/StripHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/clone/CloneArrayHandler.ts","webpack://@routier/core/./src/codegen/handlers/clone/CloneObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/clone/CloneValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/compare/CompareObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/compare/CompareValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/deserialize/DeserializeComputedValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/deserialize/DeserializeDateHandler.ts","webpack://@routier/core/./src/codegen/handlers/deserialize/DeserializeDeserializerHandler.ts","webpack://@routier/core/./src/codegen/handlers/deserialize/DeserializeFunctionHandler.ts","webpack://@routier/core/./src/codegen/handlers/deserialize/DeserializeObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/deserialize/DeserializeValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/enableChangeTracking/EnableChangeTrackingObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/enableChangeTracking/EnableChangeTrackingPrimitiveValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentComputedValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentDefaultFunctionHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentDefaultValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentFunctionHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentNullableObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentObjectIdentityHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentPrimitiveHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentPrimitiveIdentityHandler.ts","webpack://@routier/core/./src/codegen/handlers/freeze/FreezeObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/freeze/FreezePrimitiveValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/hash/HashComputedValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/hash/HashDateHandler.ts","webpack://@routier/core/./src/codegen/handlers/hash/HashFunctionHandler.ts","webpack://@routier/core/./src/codegen/handlers/hash/HashIdentityHandler.ts","webpack://@routier/core/./src/codegen/handlers/hash/HashKeyHandler.ts","webpack://@routier/core/./src/codegen/handlers/hash/HashValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/hashType/HashTypeValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/idSelector/IdSelectorValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/merge/MergeComputedValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/merge/MergeDefaultFunctionHandler.ts","webpack://@routier/core/./src/codegen/handlers/merge/MergeDefaultValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/merge/MergeFunctionHandler.ts","webpack://@routier/core/./src/codegen/handlers/merge/MergePrimitiveHandler.ts","webpack://@routier/core/./src/codegen/handlers/prepare/PrepareComputedValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/prepare/PrepareFunctionHandler.ts","webpack://@routier/core/./src/codegen/handlers/prepare/PrepareIdentityHandler.ts","webpack://@routier/core/./src/codegen/handlers/prepare/PrepareKeyHandler.ts","webpack://@routier/core/./src/codegen/handlers/prepare/PrepareObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/prepare/PrepareValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/serialize/SerializeDateHandler.ts","webpack://@routier/core/./src/codegen/handlers/serialize/SerializeObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/serialize/SerializeSerializerHandler.ts","webpack://@routier/core/./src/codegen/handlers/serialize/SerializeValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/strip/StripIdentityHandler.ts","webpack://@routier/core/./src/codegen/handlers/strip/StripKeyHandler.ts","webpack://@routier/core/./src/codegen/handlers/strip/StripObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/strip/StripValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/types.ts","webpack://@routier/core/./src/codegen/utils.ts","webpack://@routier/core/./src/errors/SchemaError.ts","webpack://@routier/core/./src/performance/index.ts","webpack://@routier/core/./src/schema/PropertyInfo.ts","webpack://@routier/core/./src/schema/SchemaDefinition.ts","webpack://@routier/core/./src/schema/builder.ts","webpack://@routier/core/./src/schema/communication/broadcast.ts","webpack://@routier/core/./src/schema/property/base/SchemaBase.ts","webpack://@routier/core/./src/schema/property/base/index.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaDefault.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaDeserialize.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaDistinct.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaFrom.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaIdentity.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaIndex.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaKey.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaNullable.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaOptional.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaReadonly.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaSerialize.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaTracked.ts","webpack://@routier/core/./src/schema/property/modifiers/index.ts","webpack://@routier/core/./src/schema/property/types/SchemaArray.ts","webpack://@routier/core/./src/schema/property/types/SchemaBoolean.ts","webpack://@routier/core/./src/schema/property/types/SchemaDate.ts","webpack://@routier/core/./src/schema/property/types/SchemaNumber.ts","webpack://@routier/core/./src/schema/property/types/SchemaObject.ts","webpack://@routier/core/./src/schema/property/types/SchemaString.ts","webpack://@routier/core/./src/schema/property/types/index.ts","webpack://@routier/core/./src/schema/table/SchemaComputed.ts","webpack://@routier/core/./src/schema/table/SchemaFunction.ts","webpack://@routier/core/./src/schema/table/index.ts","webpack://@routier/core/./src/schema/types.ts","webpack://@routier/core/./src/utilities/strings.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/webpack/runtime/make_namespace_object","webpack://@routier/core/./src/schema/index.ts"],"sourcesContent":["export class SlotPath {\n\n private _path: string[];\n\n get path() {\n return [...this._path]\n }\n\n constructor(...pathLike: string[]) {\n this._path = pathLike;\n }\n\n push(...pathLike: string[]) {\n this._path.push(...pathLike);\n }\n\n get(up: number = 0) {\n return this._path.slice(0, this._path.length - up).join(\".\")\n }\n}","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 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 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 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}","import { CloneArrayHandler } from \"./clone/CloneArrayHandler\";\nimport { CloneObjectHandler } from \"./clone/CloneObjectHandler\";\nimport { CloneValueHandler } from \"./clone/CloneValueHandler\";\n\n/// Purpose: \nexport class CloneHandlerBuilder {\n\n build() {\n const handler = new CloneObjectHandler();\n handler\n .setNext(new CloneValueHandler())\n .setNext(new CloneArrayHandler());\n\n return handler;\n }\n}","import { CompareObjectHandler } from \"./compare/CompareObjectHandler\";\nimport { CompareValueHandler } from \"./compare/CompareValueHandler\";\n\n/// Purpose: \nexport class CompareHandlerBuilder {\n\n build() {\n const handler = new CompareObjectHandler();\n handler.setNext(new CompareValueHandler());\n\n return handler;\n }\n}","import { DeserializeObjectHandler } from \"./deserialize/DeserializeObjectHandler\";\nimport { DeserializeValueHandler } from \"./deserialize/DeserializeValueHandler\";\nimport { DeserializeDateHandler } from \"./deserialize/DeserializeDateHandler\";\nimport { DeserializeComputedValueHandler } from \"./deserialize/DeserializeComputedValueHandler\";\nimport { DeserializeFunctionHandler } from \"./deserialize/DeserializeFunctionHandler\";\nimport { DeserializeDeserializerHandler } from \"./deserialize/DeserializeDeserializerHandler\";\n\n/// Purpose: \nexport class DeserializeHandlerBuilder {\n\n build() {\n const handler = new DeserializeObjectHandler();\n handler\n .setNext(new DeserializeDeserializerHandler())\n .setNext(new DeserializeComputedValueHandler())\n .setNext(new DeserializeFunctionHandler())\n .setNext(new DeserializeValueHandler())\n .setNext(new DeserializeDateHandler());\n\n return handler;\n }\n}","import { EnableChangeTrackingObjectHandler } from \"./enableChangeTracking/EnableChangeTrackingObjectHandler\";\nimport { EnableChangeTrackingPrimitiveValueHandler } from \"./enableChangeTracking/EnableChangeTrackingPrimitiveValueHandler\";\n\n/// Purpose: \nexport class EnableChangeTrackingHandlerBuilder {\n\n build() {\n const handler = new EnableChangeTrackingObjectHandler();\n handler.setNext(new EnableChangeTrackingPrimitiveValueHandler());\n\n return handler;\n }\n}","import { EnrichmentNullableObjectHandler } from \"./enrichment/EnrichmentNullableObjectHandler\";\nimport { EnrichmentObjectHandler } from \"./enrichment/EnrichmentObjectHandler\";\nimport { EnrichmentObjectIdentityHandler } from \"./enrichment/EnrichmentObjectIdentityHandler\";\nimport { EnrichmentPrimitiveIdentityHandler } from \"./enrichment/EnrichmentPrimitiveIdentityHandler\";\nimport { EnrichmentPrimitiveHandler } from './enrichment/EnrichmentPrimitiveHandler';\nimport { EnrichmentFunctionHandler } from './enrichment/EnrichmentFunctionHandler';\nimport { EnrichmentDefaultValueHandler } from './enrichment/EnrichmentDefaultValueHandler';\nimport { EnrichmentDefaultFunctionHandler } from './enrichment/EnrichmentDefaultFunctionHandler';\nimport { EnrichmentComputedValueHandler } from './enrichment/EnrichmentComputedValueHandler';\n\n/// Purpose: \nexport class EnrichmentHandlerBuilder {\n\n build() {\n const handler = new EnrichmentPrimitiveIdentityHandler();\n\n handler.setNext(new EnrichmentObjectIdentityHandler())\n .setNext(new EnrichmentObjectHandler())\n .setNext(new EnrichmentNullableObjectHandler())\n .setNext(new EnrichmentFunctionHandler())\n .setNext(new EnrichmentDefaultValueHandler())\n .setNext(new EnrichmentDefaultFunctionHandler())\n .setNext(new EnrichmentComputedValueHandler())\n .setNext(new EnrichmentPrimitiveHandler());\n\n return handler;\n }\n}","import { FreezePrimitiveValueHandler } from \"./freeze/FreezePrimitiveValueHandler\";\nimport { FreezeObjectHandler } from \"./freeze/FreezeObjectHandler\";\n\n/// Purpose: \nexport class FreezeHandlerBuilder {\n\n build() {\n const handler = new FreezeObjectHandler();\n handler.setNext(new FreezePrimitiveValueHandler());\n\n return handler;\n }\n}","import { HashKeyHandler } from \"./hash/HashKeyHandler\";\nimport { HashValueHandler } from \"./hash/HashValueHandler\";\nimport { HashDateHandler } from \"./hash/HashDateHandler\";\nimport { HashIdentityHandler } from \"./hash/HashIdentityHandler\";\nimport { HashFunctionHandler } from \"./hash/HashFunctionHandler\";\nimport { HashComputedValueHandler } from \"./hash/HashComputedValueHandler\";\n\n/// Purpose: \n// Should ignore Id's and Identities for type Object because we want \n// to comare a new addition with what was saved in the database\nexport class HashHandlerBuilder {\n\n build() {\n const handler = new HashKeyHandler();\n\n handler\n .setNext(new HashComputedValueHandler())\n .setNext(new HashFunctionHandler())\n .setNext(new HashIdentityHandler())\n .setNext(new HashDateHandler())\n .setNext(new HashValueHandler());\n\n return handler;\n }\n}","import { HashTypeValueHandler } from \"./hashType/HashTypeValueHandler\";\n\n/// Purpose: \nexport class HashTypeHandlerBuilder {\n\n build() {\n const handler = new HashTypeValueHandler();\n\n return handler;\n }\n}","import { IdSelectorValueHandler } from \"./idSelector/IdSelectorValueHandler\";\n/// Purpose: \nexport class IdSelectorHandlerBuilder {\n\n build() {\n const handler = new IdSelectorValueHandler();\n\n return handler;\n }\n}","import { MergeDefaultFunctionHandler } from \"./merge/MergeDefaultFunctionHandler\";\nimport { MergePrimitiveHandler } from \"./merge/MergePrimitiveHandler\";\nimport { MergeComputedValueHandler } from \"./merge/MergeComputedValueHandler\";\nimport { MergeDefaultValueHandler } from \"./merge/MergeDefaultValueHandler\";\nimport { MergeFunctionHandler } from \"./merge/MergeFunctionHandler\";\n\n/// Purpose: Should recompute computed properties\nexport class MergeHandlerBuilder {\n\n build() {\n const handler = new MergeDefaultFunctionHandler();\n handler.setNext(new MergeDefaultValueHandler())\n .setNext(new MergeFunctionHandler())\n .setNext(new MergeComputedValueHandler())\n .setNext(new MergePrimitiveHandler());\n\n return handler;\n }\n}","import { PrepareIdentityHandler } from \"./prepare/PrepareIdentityHandler\";\nimport { PrepareKeyHandler } from \"./prepare/PrepareKeyHandler\";\nimport { PrepareValueHandler } from \"./prepare/PrepareValueHandler\";\nimport { PrepareObjectHandler } from \"./prepare/PrepareObjectHandler\";\nimport { PrepareComputedValueHandler } from \"./prepare/PrepareComputedValueHandler\";\nimport { PrepareFunctionHandler } from \"./prepare/PrepareFunctionHandler\";\n\n/// Purpose: Called before we save entities to the database. Responsible for cleaning up\n/// an entity before it is sent to the plugin\nexport class PrepareHandlerBuilder {\n\n build() {\n const handler = new PrepareIdentityHandler();\n handler\n .setNext(new PrepareFunctionHandler())\n .setNext(new PrepareComputedValueHandler())\n .setNext(new PrepareKeyHandler())\n .setNext(new PrepareObjectHandler())\n .setNext(new PrepareValueHandler());\n\n return handler;\n }\n}","import { SerializeDateHandler } from \"./serialize/SerializeDateHandler\";\nimport { SerializeObjectHandler } from \"./serialize/SerializeObjectHandler\";\nimport { SerializeValueHandler } from \"./serialize/SerializeValueHandler\";\nimport { SerializeSerializerHandler } from \"./serialize/SerializeSerializerHandler\";\n\n/// Purpose: \nexport class SerializeHandlerBuilder {\n\n build() {\n const handler = new SerializeSerializerHandler();\n handler\n .setNext(new SerializeDateHandler())\n .setNext(new SerializeValueHandler())\n .setNext(new SerializeObjectHandler());\n\n return handler;\n }\n}","import { StripObjectHandler } from \"./strip/StripObjectHandler\";\nimport { StripValueHandler } from \"./strip/StripValueHandler\";\nimport { StripKeyHandler } from \"./strip/StripKeyHandler\";\nimport { StripIdentityHandler } from \"./strip/StripIdentityHandler\";\n\n/// Purpose: \nexport class StripHandlerBuilder {\n\n build() {\n const handler = new StripIdentityHandler();\n\n handler.setNext(new StripKeyHandler())\n .setNext(new StripObjectHandler())\n .setNext(new StripValueHandler());\n\n return handler;\n }\n}","import { CodeBuilder, IfBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class CloneArrayHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Array) {\n\n if (property.isNullable || property.isOptional) {\n // Child properties will take care of this\n return builder;\n }\n\n const entitySelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n\n if (property.parent == null) {\n\n const resultAssignmentPath = property.getAssignmentPath({ parent: \"result\" });\n const slot = builder.get<SlotBlock>(\"if\");\n\n slot.if(`${entitySelectorPath} != null`).appendBody(`${resultAssignmentPath} = [...${entitySelectorPath}]`);\n return builder;\n }\n // slotPath.push(...property.getParentPathArray());\n // const nestedObjectBuilder = builder.get<ObjectBuilder>(slotPath.get());\n // nestedObjectBuilder.nested(property.name, property.name)\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class CloneObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object) {\n\n // Child properties will take care of this\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, IfBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class CloneValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type != SchemaTypes.Object && property.type != SchemaTypes.Array) {\n const slot = builder.get<SlotBlock>(\"if\");\n const entitySelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n const resultAssignmentPath = property.getAssignmentPath({ parent: \"result\" });\n\n if (property.parent == null) {\n // we are a first level property\n slot.if(`${entitySelectorPath} != null`).appendBody(`${resultAssignmentPath} = ${entitySelectorPath}`);\n return builder;\n }\n\n // Second level or more property\n // Need to ensure parent is assigned\n const propertyParentPath = [\"result\", ...property.getParentPathArray()]\n const ifBuilder = new IfBuilder(`${propertyParentPath.join(\"?.\")} == null`).appendBody(`${propertyParentPath.join(\".\")} = {};`);\n\n slot.if(`${entitySelectorPath} != null`).appendBody(ifBuilder.toString()).appendBody(`${resultAssignmentPath} = ${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class CompareObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { AndBuilder, CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class CompareValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type != SchemaTypes.Object) {\n let compare = builder.getOrDefault<AndBuilder>(\"result.variable.compare\");\n const leftCompare = property.getSelectrorPath({ parent: \"a\" });\n const rightCompare = property.getSelectrorPath({ parent: \"b\" });\n\n if (compare == null) {\n compare = builder.get<SlotBlock>(\"result\")\n .assign(\"const result\", { name: \"variable\" })\n .and(`${leftCompare} === ${rightCompare}`, { name: \"compare\" });\n return builder;\n }\n\n compare.and(`${leftCompare} === ${rightCompare}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class DeserializeComputedValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n // Do nothing with the value\n if (property.functionBody != null && property.type === SchemaTypes.Computed && property.isUnmapped === true) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ContainerBlock, ObjectBuilder } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\n/**\n * Handles converting a string value from a database to a Date value\n */\nexport class DeserializeDateHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Date) {\n const slotPath = new SlotPath(\"result.variable.object\");\n let objectBuilder = builder.get<ObjectBuilder>(slotPath.get());\n const entitySelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n const entityAssignmentPath = property.getAssignmentPath({ parent: \"result\" });\n const assignment = `${property.name}: typeof ${entitySelectorPath} === \"string\" ? new Date(${entitySelectorPath}) : ${entitySelectorPath}`;\n\n // if it is nullable or optional, assign in an if block, otherwise we \n // could unintentionally assign null/undefined to a property that does not exist\n if (property.isOptional || property.isNullable) {\n const ifAssignment = `${entityAssignmentPath} = typeof ${entitySelectorPath} === \"string\" ? new Date(${entitySelectorPath}) : ${entitySelectorPath}`;\n const rootPath = new SlotPath(\"if\");\n builder.get<ContainerBlock>(rootPath.get()).if(`${entitySelectorPath} != null`).appendBody(ifAssignment);\n return;\n }\n\n // A date cannot be a nested object, just do the assignment\n if (property.parent == null) {\n objectBuilder.property(assignment);\n\n return builder;\n }\n\n slotPath.push(...property.getParentPathArray());\n const nestedObjectBuilder = builder.get<ObjectBuilder>(slotPath.get());\n nestedObjectBuilder.property(assignment)\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class DeserializeDeserializerHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.valueDeserializer != null) {\n let objectBuilder = builder.getOrDefault<ObjectBuilder>(\"result.variable.object\");\n const assignmentBuilder = builder.getOrDefault<SlotBlock>(\"functions\");\n const entitySelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n\n if (objectBuilder == null) {\n objectBuilder = builder.get<SlotBlock>(\"result\")\n .assign(\"const result\", { name: \"variable\" })\n .object({ name: \"object\" });\n }\n\n const defaultFunctionWithParameters = this.toNamedFunction(property.valueDeserializer.toString(), assignmentBuilder);\n defaultFunctionWithParameters.builder.parameters(...defaultFunctionWithParameters.parameters.map((_, i) => ({ name: defaultFunctionWithParameters.parameters[i], callName: entitySelectorPath })));\n\n if (property.parent == null) {\n objectBuilder.property(`${property.name}: ${defaultFunctionWithParameters.builder.toCallable()}`);\n return builder;\n }\n\n const slotPath = new SlotPath(...property.getParentPathArray());\n objectBuilder = objectBuilder.get<ObjectBuilder>(slotPath.get());\n objectBuilder.property(`${property.name}: ${defaultFunctionWithParameters.builder.toCallable()}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class DeserializeFunctionHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Function) {\n // Functions are always unmapped\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class DeserializeObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object) {\n const slotPath = new SlotPath(\"result.variable.object\");\n let objectBuilder = builder.get<ObjectBuilder>(slotPath.get());\n\n if (property.parent == null) {\n objectBuilder.nested(property.name, property.name)\n\n return builder;\n }\n\n slotPath.push(...property.getParentPathArray());\n const nestedObjectBuilder = builder.get<ObjectBuilder>(slotPath.get());\n nestedObjectBuilder.nested(property.name, property.name)\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class DeserializeValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type != SchemaTypes.Object && property.type != SchemaTypes.Date) {\n let objectBuilder = builder.getOrDefault<ObjectBuilder>(\"result.variable.object\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\" });\n\n if (objectBuilder == null) {\n objectBuilder = builder.get<SlotBlock>(\"result\")\n .assign(\"const result\", { name: \"variable\" })\n .object({ name: \"object\" });\n }\n\n if (property.parent == null) {\n objectBuilder.property(`${property.name}: ${entitySelectorPath}`);\n return builder;\n }\n\n const slotPath = new SlotPath(...property.getParentPathArray());\n objectBuilder = objectBuilder.get<ObjectBuilder>(slotPath.get());\n objectBuilder.property(`${property.name}: ${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class EnableChangeTrackingObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object) {\n const assignmentSlot = builder.get<SlotBlock>(\"assignment\");\n const childSelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n const childAssignmentPath = property.getAssignmentPath({ parent: \"entity\" });\n\n assignmentSlot.if(`${childSelectorPath} != null`).appendBody(`${childAssignmentPath} = enableChangeTracking(${childAssignmentPath});`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class EnableChangeTrackingPrimitiveValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type !== SchemaTypes.Object) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, FunctionFactoryBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class EnrichmentComputedValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Computed) {\n\n const parameterNames: string[] = [\"enriched\", \"collectionName\"];\n\n if (property.injected != null) {\n\n const factory = builder.get<FunctionFactoryBuilder>(\"factory\");\n const parameter = factory.createParameter(property.injected);\n factory.parameters(parameter);\n\n parameterNames.push(parameter.name);\n }\n\n const declarationsSlot = builder.get<SlotBlock>(\"factory.function.declarations\");\n const defaultFunctionWithParameters = this.toNamedFunction(property.functionBody.toString(), declarationsSlot);\n\n defaultFunctionWithParameters.builder.parameters(...parameterNames.map((w, i) => ({ name: defaultFunctionWithParameters.parameters[i], callName: w })));\n\n\n const ifsSlot = builder.get<SlotBlock>(\"factory.function.ifs\");\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"enriched\" });\n ifsSlot.if(`${enrichedAssignmentPath} == null`).appendBody(`${enrichedAssignmentPath} = ${defaultFunctionWithParameters.builder.toCallable()}`);\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, FunctionFactoryBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class EnrichmentDefaultFunctionHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.defaultValue != null && typeof property.defaultValue === \"function\") {\n\n this.setEnrichedProperty(property, builder);\n\n // we need to add the call for this function too, want to create an if\n const declarationsSlot = builder.get<SlotBlock>(\"factory.function.declarations\");\n\n if (property.injected != null) {\n\n const factory = builder.get<FunctionFactoryBuilder>(\"factory\");\n\n if (factory == null) {\n throw new Error(\"Error building enricher, could not find slot for factory\")\n }\n\n const parameter = factory.createParameter(property.injected);\n factory.parameters(parameter);\n\n const defaultFunctionWithParameters = this.toNamedFunction(property.defaultValue.toString(), declarationsSlot);\n // This is ok, defaults can only inject one parameter anyways\n defaultFunctionWithParameters.builder.parameters(...defaultFunctionWithParameters.parameters.map(w => ({ name: w, callName: parameter.name })));\n\n\n const ifsSlot = builder.get<SlotBlock>(\"factory.function.ifs\");\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"enriched\" });\n ifsSlot.if(`${enrichedAssignmentPath} == null`).appendBody(`${enrichedAssignmentPath} = ${defaultFunctionWithParameters.builder.toCallable()}`);\n\n return builder;\n }\n\n const defaultFunction = this.toNamedFunction(property.defaultValue.toString(), declarationsSlot);\n\n const ifsSlot = builder.get<SlotBlock>(\"factory.function.ifs\");\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"enriched\" });\n ifsSlot.if(`${enrichedAssignmentPath} == null`).appendBody(`${enrichedAssignmentPath} = ${defaultFunction.builder.toCallable()}`);\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class EnrichmentDefaultValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.defaultValue != null && typeof property.defaultValue !== \"function\") {\n\n this.setEnrichedProperty(property, builder);\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, FunctionFactoryBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class EnrichmentFunctionHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Function) {\n\n const parameterNames: string[] = [\"enriched\", \"collectionName\"];\n\n if (property.injected != null) {\n\n const factory = builder.get<FunctionFactoryBuilder>(\"factory\");\n const parameter = factory.createParameter(property.injected);\n factory.parameters(parameter);\n\n parameterNames.push(parameter.name);\n }\n\n\n const declarationsSlot = builder.get<SlotBlock>(\"factory.function.declarations\");\n // Unwrap the functions to removing currying\n const defaultFunctionWithParameters = this.toNamedFunction(property.functionBody.toString(), declarationsSlot);\n\n defaultFunctionWithParameters.builder.parameters(...parameterNames.map((w, i) => ({ name: defaultFunctionWithParameters.parameters[i], callName: w })));\n\n const slot = builder.get<SlotBlock>(\"factory.function.assignment\");\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"enriched\" });\n\n slot.assign(enrichedAssignmentPath).value(defaultFunctionWithParameters.builder.toCallable());\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class EnrichmentNullableObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object && (property.isNullable || property.isOptional)) {\n\n const slotPath = new SlotPath(\"factory\", \"function\", \"enriched\", \"object\", \"enriched\");\n const nestedSlotPath = this.buildSlotPath(property, slotPath);\n\n // Generate null check for current level using parent relationships\n const entityPath = property.getSelectrorPath({ parent: \"entity\", assignmentType: \"FORCE_NULLABLE_OR_OPTIONAL\" });\n const enrichedPath = property.getAssignmentPath({ parent: \"enriched\" });\n\n const ifsSlot = builder.get<SlotBlock>(\"factory.function.ifs\");\n\n if (ifsSlot == null) {\n throw new Error(\"Error building enricher, could not find slot for factory.function.ifs\")\n }\n\n\n ifsSlot.if(`${entityPath} != null`).appendBody(`${enrichedPath} = enableChangeTracking(${enrichedPath} || {}, \"${property.name}\");`);\n\n let enriched = builder.getOrDefault<ObjectBuilder>(nestedSlotPath.get());\n\n if (enriched == null) {\n const enrichedSlot = builder.get<ObjectBuilder>(slotPath.get());\n\n if (enrichedSlot == null) {\n throw new Error(`Error building enricher, could not find slot for ${slotPath.get()}`)\n }\n\n enriched = enrichedSlot.nested(property.name, `[${enrichedPath}]`);\n }\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class EnrichmentObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object && (property.isNullable || property.isOptional) === false) {\n\n const slotPath = new SlotPath(\"factory\", \"function\", \"enriched\", \"object\", \"enriched\");\n const nestedSlotPath = this.buildSlotPath(property, slotPath);\n\n // Generate null check for current level using parent relationships\n const enrichedPath = property.getAssignmentPath({ parent: \"enriched\" });\n\n const slot = builder.get<SlotBlock>(\"factory.function.assignment\");\n\n slot.assign(enrichedPath).value(`enableChangeTracking(${enrichedPath} || {}, \"${property.name}\")`)\n\n let enriched = builder.getOrDefault<ObjectBuilder>(nestedSlotPath.get());\n\n if (enriched == null) {\n const enrichedSlot = builder.get<ObjectBuilder>(slotPath.get());\n\n if (enrichedSlot == null) {\n throw new Error(`Error building enricher, could not find slot for ${slotPath.get()}`)\n }\n\n enriched = enrichedSlot.nested(property.name, `[${enrichedPath}]`);\n }\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class EnrichmentObjectIdentityHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isIdentity === true && property.type == SchemaTypes.Object) {\n // do nothing right now\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class EnrichmentPrimitiveHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n this.setEnrichedProperty(property, builder);\n\n return builder;\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class EnrichmentPrimitiveIdentityHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isIdentity === true && property.type != SchemaTypes.Object) {\n const selectorPath = property.getSelectrorPath({ parent: \"entity\", assignmentType: \"FORCE_NULLABLE_OR_OPTIONAL\" });\n const slot = builder.get<SlotBlock>(\"factory.function.ifs\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\" });\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"enriched\" });\n\n slot.if(`${selectorPath} != null`).appendBody(`${enrichedAssignmentPath} = ${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class FreezeObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object) {\n const assignmentSlot = builder.get<SlotBlock>(\"assignment\");\n const childSelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n const childAssignmentPath = property.getAssignmentPath({ parent: \"entity\" });\n\n assignmentSlot.if(`${childSelectorPath} != null`).unshiftBody(`${childAssignmentPath} = Object.freeze(${childAssignmentPath});`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class FreezePrimitiveValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type !== SchemaTypes.Object) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class HashComputedValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Computed && property.isUnmapped === true) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock, StringBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class HashDateHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Date) {\n let stringBuilder = builder.getOrDefault<StringBuilder>(\"hash-object-return.variable.string\");\n const entitySelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n\n if (stringBuilder == null) {\n stringBuilder = builder.get<SlotBlock>(\"hash-object-return\")\n .assign(\"const result\", { name: \"variable\" })\n .string(\"template\", { name: \"string\" });\n }\n\n stringBuilder.append(\"${stringifyDate(\" + entitySelectorPath + \")}\")\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class HashFunctionHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Function) {\n // Functions are always unmapped\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class HashIdentityHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isIdentity === true) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock, StringBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class HashKeyHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isKey === true) {\n let stringBuilder = builder.getOrDefault<StringBuilder>(\"hash-id-if.if-body.variable.string\");\n const entitySelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n\n if (stringBuilder == null) {\n stringBuilder = builder.get<SlotBlock>(\"hash-id-if.if-body\")\n .assign(\"const result\", { name: \"variable\" })\n .string(\"template\", { name: \"string\" });\n }\n\n stringBuilder.append(\"${\" + entitySelectorPath + \"}\")\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock, StringBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class HashValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type !== SchemaTypes.Object) {\n let stringBuilder = builder.getOrDefault<StringBuilder>(\"hash-object-return.variable.string\");\n const entitySelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n\n if (stringBuilder == null) {\n stringBuilder = builder.get<SlotBlock>(\"hash-object-return\")\n .assign(\"const result\", { name: \"variable\" })\n .string(\"template\", { name: \"string\" });\n }\n\n stringBuilder.append(\"${\" + entitySelectorPath + \"}\")\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class HashTypeValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isKey && property.isIdentity) {\n const slot = builder.get<SlotBlock>(\"ifs\");\n const entitySelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n\n slot.if(`${entitySelectorPath} == null`).appendBody(`return \"Object\"`);\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { ArrayBuilder, CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class IdSelectorValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isKey) {\n let arrayBuilder = builder.getOrDefault<ArrayBuilder>(\"result.variable.array\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\" });\n\n if (arrayBuilder == null) {\n arrayBuilder = builder.get<SlotBlock>(\"result\")\n .variable(\"result\", { name: \"variable\" })\n .array(`${entitySelectorPath}`, { name: \"array\" });\n\n return builder;\n }\n\n\n arrayBuilder.append(`${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, FunctionFactoryBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class MergeComputedValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Computed) {\n const parameterNames: string[] = [\"source\", \"collectionName\"];\n\n if (property.injected != null) {\n\n const factory = builder.get<FunctionFactoryBuilder>(\"factory\");\n const parameter = factory.createParameter(property.injected);\n factory.parameters(parameter);\n\n parameterNames.push(parameter.name);\n }\n\n const declarationsSlot = builder.get<SlotBlock>(\"factory.function.header\");\n const defaultFunctionWithParameters = this.toNamedFunction(property.functionBody.toString(), declarationsSlot);\n\n defaultFunctionWithParameters.builder.parameters(...parameterNames.map((w, i) => ({ name: defaultFunctionWithParameters.parameters[i], callName: w })));\n\n const slot = builder.get<SlotBlock>(\"factory.function.assignments\");\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"destination\" });\n\n // We want to recompute the value always in case there are changes\n slot.assign(enrichedAssignmentPath).value(defaultFunctionWithParameters.builder.toCallable());\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, FunctionFactoryBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class MergeDefaultFunctionHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n // we only want this to run if the value for the property is null\n // we are changing merge to be more like enrich so we can handle injections\n // we may need to change more. Need to move towards factories\n if (property.defaultValue != null && typeof property.defaultValue === \"function\") {\n const defaultFunctionParameters: string[] = [];\n\n if (property.injected != null) {\n const factory = builder.get<FunctionFactoryBuilder>(\"factory\");\n const parameter = factory.createParameter(property.injected);\n factory.parameters(parameter);\n\n defaultFunctionParameters.push(parameter.name);\n }\n\n const ifsSlot = builder.get<SlotBlock>(\"factory.function.ifs\");\n // we only want to run if the destination is null\n const selectorPath = property.getSelectrorPath({ parent: \"destination\" });\n const assignmentPath = property.getAssignmentPath({ parent: \"destination\" });\n\n const declarationsSlot = builder.get<SlotBlock>(\"factory.function.header\");\n const defaultFunctionWithParameters = this.toNamedFunction(property.defaultValue.toString(), declarationsSlot);\n\n defaultFunctionWithParameters.builder.parameters(...defaultFunctionParameters.map((w, i) => ({ name: defaultFunctionWithParameters.parameters[i], callName: w })));\n\n\n ifsSlot.if(`${selectorPath} == null`).appendBody(`${assignmentPath} = ${defaultFunctionWithParameters.builder.toCallable()}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, FunctionFactoryBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class MergeDefaultValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.defaultValue != null && typeof property.defaultValue !== \"function\") {\n const defaultFunctionParameters: string[] = [];\n\n if (property.injected != null) {\n const factory = builder.get<FunctionFactoryBuilder>(\"factory\");\n const parameter = factory.createParameter(property.injected);\n factory.parameters(parameter);\n\n defaultFunctionParameters.push(parameter.name);\n }\n\n const ifsSlot = builder.get<SlotBlock>(\"factory.function.ifs\");\n // we only want to run if the destination is null\n const selectorPath = property.getSelectrorPath({ parent: \"destination\" });\n const assignmentPath = property.getAssignmentPath({ parent: \"destination\" });\n\n ifsSlot.if(`${selectorPath} == null`).appendBody(`${assignmentPath} = ${typeof property.defaultValue === \"string\" ? `\"${property.defaultValue}\"` : property.defaultValue}`);\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class MergeFunctionHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Function) {\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class MergePrimitiveHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type != SchemaTypes.Object) {\n const selectorPath = property.getSelectrorPath({ parent: \"source\", assignmentType: \"FORCE_NULLABLE_OR_OPTIONAL\" });\n const slot = builder.get<SlotBlock>(\"factory.function.assignments\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"source\" });\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"destination\" });\n\n slot.if(`${selectorPath} != null`).appendBody(`${enrichedAssignmentPath} = ${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\n// Do nothing with the value\nexport class PrepareComputedValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Computed && property.isUnmapped === true) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class PrepareFunctionHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Function) {\n // Functions are always unmapped\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class PrepareIdentityHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isIdentity === true) {\n const selectorPath = property.getSelectrorPath({ parent: \"entity\", assignmentType: \"FORCE_NULLABLE_OR_OPTIONAL\" });\n const slot = builder.get<SlotBlock>(\"assignments\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\" });\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"result\" });\n\n slot.if(`${selectorPath} != null`).appendBody(`${enrichedAssignmentPath} = ${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class PrepareKeyHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isKey === true) {\n const selectorPath = property.getSelectrorPath({ parent: \"entity\", assignmentType: \"FORCE_NULLABLE_OR_OPTIONAL\" });\n const slot = builder.get<SlotBlock>(\"assignments\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\" });\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"result\" });\n\n slot.if(`${selectorPath} != null`).appendBody(`${enrichedAssignmentPath} = ${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class PrepareObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object) {\n const slotPath = new SlotPath(\"result\", \"variable\", \"object\");\n let objectBuilder = builder.getOrDefault<ObjectBuilder>(slotPath.get());\n\n // There is a chance this is the first property we handle,\n // if that is the case, the main result variable will not be\n // constructed yet\n if (objectBuilder == null) {\n objectBuilder = builder.get<SlotBlock>(\"result\")\n .assign(\"const result\", { name: \"variable\" })\n .object({ name: \"object\" });\n }\n\n if (property.parent == null) {\n objectBuilder.nested(property.name, property.name)\n\n return builder;\n }\n\n slotPath.push(...property.getParentPathArray());\n const nestedObjectBuilder = builder.get<ObjectBuilder>(slotPath.get());\n nestedObjectBuilder.nested(property.name, property.name)\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class PrepareValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type != SchemaTypes.Object) {\n let objectBuilder = builder.getOrDefault<ObjectBuilder>(\"result.variable.object\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\" });\n\n if (objectBuilder == null) {\n objectBuilder = builder.get<SlotBlock>(\"result\")\n .assign(\"const result\", { name: \"variable\" })\n .object({ name: \"object\" });\n }\n\n // Remap the property to the name in the database if from is set\n const name = property.from != null ? property.from : property.name;\n\n if (property.parent == null) {\n objectBuilder.property(`${name}: ${entitySelectorPath}`);\n return builder;\n }\n\n const slotPath = new SlotPath(...property.getParentPathArray());\n objectBuilder = objectBuilder.get<ObjectBuilder>(slotPath.get());\n objectBuilder.property(`${name}: ${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ContainerBlock, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\n/**\n * Handles converting a Date value from JavaScript to a string value\n */\nexport class SerializeDateHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Date) {\n let objectBuilder = builder.get<SlotBlock>(\"if\");\n const entitySelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n const entityAssignmentPath = property.getAssignmentPath({ parent: \"result\" });\n const assignment = `${property.name}: ${entitySelectorPath} instanceof Date ? ${entitySelectorPath}.toISOString() : ${entitySelectorPath}`;\n\n // if it is nullable or optional, assign in an if block, otherwise we \n // could unintentionally assign null/undefined to a property that does not exist\n if (property.isOptional || property.isNullable) {\n const ifAssignment = `${entityAssignmentPath} = ${entitySelectorPath} instanceof Date ? ${entitySelectorPath}.toISOString() : ${entitySelectorPath}`;\n const rootPath = new SlotPath(\"if\");\n builder.get<ContainerBlock>(rootPath.get()).if(`${entitySelectorPath} != null`).appendBody(ifAssignment);\n return;\n }\n\n // A date cannot be a nested object, just do the assignment\n if (property.parent == null) {\n objectBuilder.if(`Object.hasOwn(entity, \"${property.name}\")`).appendBody(`${entityAssignmentPath} = ${entitySelectorPath}`)\n\n return builder;\n }\n\n // TODO: SOLVE THIS, IT IS CLOSE\n //const slotPath = new SlotPath(...property.getParentPathArray());\n // slotPath.push(...property.getParentPathArray());\n // const nestedObjectBuilder = builder.get<ObjectBuilder>(slotPath.get());\n // nestedObjectBuilder.property(assignment)\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\nexport class SerializeObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object) {\n const slotPath = new SlotPath(\"assignments\");\n const childPath = property.getAssignmentPath({ parent: \"result\" });\n\n if (property.isNullable || property.isOptional) {\n // Do nothing if it's nullable or optional as property assignments will check\n // and create if it does not exist. This way we can handle null/optional\n return builder;\n }\n\n const slot = builder.get<SlotBlock>(slotPath.get());\n slot.assign(`${childPath}`, { name: `[${childPath}]` }).value(\"{}\");\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class SerializeSerializerHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.valueSerializer != null) {\n const objectBuilder = builder.getOrDefault<SlotBlock>(\"if\");\n const assignmentBuilder = builder.getOrDefault<SlotBlock>(\"functions\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\" });\n const resultSelectorPath = property.getAssignmentPath({ parent: \"result\" });\n\n const defaultFunctionWithParameters = this.toNamedFunction(property.valueSerializer.toString(), assignmentBuilder);\n defaultFunctionWithParameters.builder.parameters(...defaultFunctionWithParameters.parameters.map((_, i) => ({ name: defaultFunctionWithParameters.parameters[i], callName: entitySelectorPath })));\n\n if (property.parent == null) {\n objectBuilder.if(`Object.hasOwn(entity, \"${property.name}\")`).appendBody(`${resultSelectorPath} = ${defaultFunctionWithParameters.builder.toCallable()}`)\n return builder;\n }\n\n // TODO: SOLVE THIS\n //const slotPath = new SlotPath(...property.getParentPathArray());\n\n // const slotPath = new SlotPath(...property.getParentPathArray());\n // objectBuilder = objectBuilder.get<ObjectBuilder>(slotPath.get());\n // objectBuilder.property(`${property.name}: ${defaultFunctionWithParameters.builder.toCallable()}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, IfBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class SerializeValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type != SchemaTypes.Object && property.type != SchemaTypes.Date) {\n const slot = builder.getOrDefault<SlotBlock>(\"if\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\" });\n const resultSelectorPath = property.getAssignmentPath({ parent: \"result\" });\n\n if (property.parent == null) {\n // Only assign if the incoming entity has the property, this allows partial serialization\n // Basically only serialize what is there\n slot.if(`Object.hasOwn(entity, \"${property.name}\")`).appendBody(`${resultSelectorPath} = ${entitySelectorPath}`);\n return builder;\n }\n\n const parentSelectPath = [\"entity\", ...property.getParentPathArray()].join(\".\");\n const parentAssignPath = [\"result\", ...property.getParentPathArray()].join(\".\");\n\n const ifSlot = slot.if(`Object.hasOwn(${parentSelectPath}, \"${property.name}\")`);\n\n if (property.parent.isNullable || property.parent.isOptional) {\n // Do this for nullable/optional parents. Parent will be null if its nullable/optional\n const conditionallyCreateParent = new IfBuilder(`${parentAssignPath} == null`).appendBody(`${parentAssignPath} = {}`);\n ifSlot.appendBody(conditionallyCreateParent.toString());\n }\n\n ifSlot.appendBody(`${resultSelectorPath} = ${entitySelectorPath}`);\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class StripIdentityHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isIdentity === true) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class StripKeyHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isKey === true) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class StripObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object) {\n const slotPath = new SlotPath(\"result.variable.object\");\n let objectBuilder = builder.getOrDefault<ObjectBuilder>(slotPath.get());\n\n if (objectBuilder == null) {\n objectBuilder = builder.get<SlotBlock>(\"result\")\n .assign(\"const result\", { name: \"variable\" })\n .object({ name: \"object\" });\n }\n\n if (property.parent == null) {\n objectBuilder.nested(property.name, property.name)\n\n return builder;\n }\n\n slotPath.push(...property.getParentPathArray());\n const nestedObjectBuilder = builder.get<ObjectBuilder>(slotPath.get());\n nestedObjectBuilder.nested(property.name, property.name)\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { PropertyInfo, SchemaTypes } from \"../../../schema\";\nimport { PropertyInfoHandler } from \"../types\";\nimport { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\n\nexport class StripValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type != SchemaTypes.Object) {\n let objectBuilder = builder.getOrDefault<ObjectBuilder>(\"result.variable.object\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\" });\n\n // There is a chance this is the first property we handle,\n // if that is the case, the main result variable will not be\n // constructed yet\n if (objectBuilder == null) {\n objectBuilder = builder.get<SlotBlock>(\"result\")\n .assign(\"const result\", { name: \"variable\" })\n .object({ name: \"object\" });\n }\n\n if (property.parent == null) {\n objectBuilder.property(`${property.name}: ${entitySelectorPath}`);\n return builder;\n }\n\n const slotPath = new SlotPath(...property.getParentPathArray());\n objectBuilder = objectBuilder.get<ObjectBuilder>(slotPath.get());\n objectBuilder.property(`${property.name}: ${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { AssignmentBuilder, CodeBuilder, ContainerBlock, ObjectBuilder, SlotBlock } from '..';\nimport { PropertyInfo } from '../../schema/PropertyInfo';\nimport { SlotPath } from '../SlotPath';\nimport { SchemaError } from '../../errors/SchemaError';\nimport { uuid } from '../../utilities/uuid';\nimport { countWordOccurance } from '../utils';\n\nexport interface IHandler {\n setNext(handler: IHandler): IHandler;\n\n handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null;\n}\n\nexport abstract class PropertyInfoHandler implements IHandler {\n\n private _next: IHandler | null;\n\n setNext(handler: IHandler): IHandler {\n this._next = handler;\n\n return handler;\n }\n\n handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n try {\n if (this._next) {\n return this._next.handle(property, builder);\n }\n\n return null;\n } catch (e: any) {\n throw new SchemaError(e, `Error handling property: ${property.name}`);\n }\n }\n\n protected buildSlotPath(property: PropertyInfo<any>, path: SlotPath) {\n\n const result = new SlotPath(...path.path);\n const items: string[] = []\n let p = property;\n\n while (p.parent != null) {\n items.unshift(p.name);\n p = p.parent;\n }\n\n items.unshift(p.name);\n\n result.push(...items);\n\n return result\n }\n\n protected setEnrichedProperty(property: PropertyInfo<any>, root: CodeBuilder) {\n const useFromPropertyName = property.from != null;\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\", useFromPropertyName });\n\n if (property.parent != null) {\n const slotPath = new SlotPath(\"factory\", \"function\", \"enriched\", \"object\", \"enriched\");\n const path = property.parent.getAssignmentPath({ parent: \"enriched\" });\n slotPath.push(`[${path}]`)\n const objectBuilder = root.get<ObjectBuilder>(slotPath.get());\n const childEntityPathSelector = property.getSelectrorPath({ parent: \"entity\", useFromPropertyName });\n objectBuilder.property(`${property.name}: ${childEntityPathSelector}`);\n return;\n }\n\n const slotPath = new SlotPath(\"factory\", \"function\", \"enriched\", \"object\", \"enriched\");\n let enriched = root.getOrDefault<ObjectBuilder>(slotPath.get());\n\n if (enriched == null) {\n const enrichedSlot = root.get<SlotBlock>(\"factory.function.enriched\");\n enriched = enrichedSlot.variable(\"enriched\", { name: \"object\" }).object({ name: \"enriched\" });\n }\n\n enriched.property(`${property.name}: ${entitySelectorPath}`);\n }\n\n protected toNamedFunction(stringifiedFunction: string, parent: ContainerBlock) {\n const name = `_${uuid()}`;\n\n const builder = parent.function(name);\n const occurences = countWordOccurance(stringifiedFunction, \"=>\")\n\n if (occurences > 0) {\n\n const split = stringifiedFunction.split(\"=>\").map(w => w.trim());\n const parameters = split[0].replace(/\\(|\\)/g, \"\").split(\",\");\n let body = split[1];\n\n if (occurences > 1) {\n // we have a function that returns a function\n const index = stringifiedFunction.indexOf(\"=>\");\n body = stringifiedFunction.slice(index + 2, stringifiedFunction.length)\n }\n\n if (body.startsWith(\"{\") === true && body.endsWith(\"}\")) {\n\n // Remove brackets, wrapping function will have them\n builder.appendBody(body.slice(1, body.length - 1));\n\n return {\n builder,\n parameters\n };\n }\n\n builder.appendBody(`return ${body};`);\n return {\n builder,\n parameters\n }\n }\n\n throw new Error(\"Only arrow functions are allowed in the schema definition: function () {} ---> () => {}\");\n }\n}","/**\n * Counts non-overlapping occurrences of a term in text.\n *\n * Behavior:\n * - Case-sensitive matching\n * - If the search term is composed entirely of word characters (A–Z, a–z, 0–9, _),\n * enforce whole-word boundaries so \"red\" does not match inside \"redder\".\n * - If the search term contains any non-word character (e.g. \"=>\", \"()\", \"::\"),\n * match anywhere without boundary checks (useful for symbols).\n * - Non-overlapping matches (after a hit, advances by term length)\n * - Optimized single-character fast path; otherwise uses indexOf loop\n *\n * Examples:\n * - countWordOccurance(\"red redder red\", \"red\") => 2\n * - countWordOccurance(\"()=>{}\", \"=>\") => 1\n * - countWordOccurance(\"aaaa\", \"aa\") => 2 (non-overlapping)\n *\n * @param text The source text to scan\n * @param word The term to match (must be non-empty)\n * @returns The number of occurrences found\n */\nexport const countWordOccurance = (text: string, word: string) => {\n const wl = word.length;\n const tl = text.length;\n\n if (wl === 0 || wl > tl) return 0;\n\n // Fast path for single-character words\n if (wl === 1) {\n let c = 0;\n const code = word.charCodeAt(0);\n for (let i = 0; i < tl; i++) if (text.charCodeAt(i) === code) c++;\n return c;\n }\n\n let count = 0;\n let i = 0;\n\n function isWordCharCode(c: number): boolean {\n return (c >= 48 && c <= 57) // 0-9\n || (c >= 65 && c <= 90) // A-Z\n || (c >= 97 && c <= 122) // a-z\n || c === 95; // _\n }\n\n // Decide whether to enforce word boundaries based on the search term\n let enforceWordBoundaries = true;\n for (let k = 0; k < wl; k++) {\n const cc = word.charCodeAt(k);\n if (!isWordCharCode(cc)) {\n enforceWordBoundaries = false;\n break;\n }\n }\n\n while (true) {\n i = text.indexOf(word, i);\n if (i === -1) break;\n\n if (enforceWordBoundaries) {\n const left = i - 1;\n const right = i + wl;\n const leftOk = left < 0 || !isWordCharCode(text.charCodeAt(left));\n const rightOk = right >= tl || !isWordCharCode(text.charCodeAt(right));\n if (leftOk && rightOk) count++;\n } else {\n // No boundary enforcement for symbol-containing terms\n count++;\n }\n i += wl; // non-overlapping word matches\n }\n\n return count;\n}","export class SchemaError extends Error {\n\n constructor(error: any, innerErrorMessage: string) {\n super(`Error: ${error.message}; Inner Error: ${innerErrorMessage}`);\n }\n}","const measurements: Record<string, number> = {}\n\nexport const now = (): number => {\n if (typeof performance !== 'undefined' && performance.now) {\n // Browser or modern Node.js\n return performance.now();\n }\n\n // Fallback for older environments\n return Date.now();\n}\n\nexport const measure = {\n start: (name: string): void => {\n measurements[name] = now();\n },\n end: (name: string): void => {\n const start = measurements[name];\n\n delete measurements[name];\n\n const delta = now() - start;\n\n console.log(`[ROUTIER] - Performance: ${name} took ${delta}`);\n }\n}","import { SchemaBase } from './property/base/SchemaBase';\nimport { SchemaArray } from './property/types/SchemaArray';\nimport { DefaultValue, FunctionBody, PropertyDeserializer, PropertySerializer, SchemaTypes } from './types';\n\n/**\n * Represents metadata and utilities for a property in a schema, including its type, name, parent, children, and serialization details.\n */\nexport class PropertyInfo<T extends {}> {\n\n get id() {\n if (this._idCache) {\n return this._idCache;\n }\n this._idCache = this.getPathArray().join(\".\");\n return this._idCache;\n }\n\n /** The name of the property. */\n readonly name: string;\n /** The name of the property we need to map from. */\n readonly from: string | null = null;\n /** The schema type of the property. */\n readonly type: SchemaTypes;\n\n /** Whether the property can be null. */\n readonly isNullable: boolean;\n /** Whether the property is optional. */\n readonly isOptional: boolean;\n /** Whether the property is a key. */\n readonly isKey: boolean;\n /** Whether the property is an identity property. */\n readonly isIdentity: boolean;\n /** Whether the property is readonly. */\n readonly isReadonly: boolean;\n /** Whether the property is unmapped. */\n readonly isUnmapped: boolean;\n /** Whether the property is distinct. */\n readonly isDistinct: boolean;\n /** Indexes associated with the property. */\n readonly indexes: string[];\n\n /** Any injected value for the property. */\n readonly injected: any | null = null;\n /** The default value for the property, if any. */\n readonly defaultValue: DefaultValue<any> | null = null;\n /** Serializer for the property value, if any. */\n readonly valueSerializer: PropertySerializer<T> | null = null;\n /** Deserializer for the property value, if any. */\n readonly valueDeserializer: PropertyDeserializer<T> | null = null;\n /** Function body for computed properties, if any. */\n readonly functionBody: FunctionBody<any, T> | null;\n /** Child properties of this property. */\n readonly children: PropertyInfo<T>[] = [];\n /** The schema this property belongs to. */\n readonly schema: SchemaBase<T, any>;\n /** The inner schema if this property is an array. */\n readonly innerSchema?: SchemaBase<unknown, any>;\n /** Literal values allowed for this property. */\n readonly literals: T[];\n\n /** The parent property, if any. */\n readonly parent?: PropertyInfo<T>;\n\n // Cached computed values for performance\n private _propertyChainCache?: PropertyInfo<T>[];\n private _pathArrayCache?: string[];\n private _parentPathArrayCache?: string[];\n private _idCache?: string;\n private _levelCache?: number;\n private _hasNullableParentsCache?: boolean;\n\n constructor(schema: SchemaBase<T, any>, name: string, parent?: PropertyInfo<T> | null) {\n this.schema = schema;\n this.name = name;\n this.type = schema.type;\n this.literals = schema.literals;\n\n if (schema instanceof SchemaArray) {\n this.innerSchema = schema.innerSchema;\n }\n\n this.isNullable = schema.isNullable;\n this.isOptional = schema.isOptional;\n this.isKey = schema.isKey;\n this.isIdentity = schema.isIdentity;\n this.isReadonly = schema.isReadonly;\n this.isUnmapped = schema.isUnmapped;\n this.injected = schema.injected;\n this.isDistinct = schema.isDistict;\n this.indexes = schema.indexes;\n this.from = schema.fromPropertyName;\n\n this.defaultValue = schema.defaultValue;\n this.valueSerializer = schema.valueSerializer;\n this.valueDeserializer = schema.valueDeserializer;\n this.functionBody = schema.functionBody;\n\n this.parent = parent;\n }\n\n /**\n * Returns the depth (level) of this property in the property tree.\n *\n * The root property has a level of 0. Each child property increases the level by 1.\n * Traverses up the parent chain, incrementing the level for each parent until the root is reached.\n * \n * @returns {number} The number of parent properties above this property (0 for root).\n */\n get level() {\n if (this._levelCache !== undefined) {\n return this._levelCache;\n }\n\n let level = 0;\n let current: PropertyInfo<T> | undefined = this;\n\n while (current) {\n if (current.parent == null) {\n this._levelCache = level;\n return level;\n }\n\n current = current.parent;\n level++;\n }\n\n this._levelCache = level;\n return level;\n }\n\n private _getPropertyChain(): PropertyInfo<T>[] {\n if (this._propertyChainCache) {\n return this._propertyChainCache;\n }\n\n const chain: PropertyInfo<T>[] = [];\n let current: PropertyInfo<T> | undefined = this;\n\n while (current) {\n chain.unshift(current);\n current = current.parent;\n }\n\n this._propertyChainCache = chain;\n return chain;\n }\n\n private _needsOptionalChaining(prop: PropertyInfo<T>, assignmentType?: AssignmentType): boolean {\n if (assignmentType === \"ASSIGNMENT\") {\n return false;\n }\n\n return assignmentType === \"FORCE_NULLABLE_OR_OPTIONAL\" || prop.isNullable || prop.isOptional;\n }\n\n private _resolvePathArray(options?: {\n root?: string,\n assignmentType?: AssignmentType\n useFromPropertyName?: boolean\n }) {\n const propertyChain = this._getPropertyChain();\n const hasRoot = options?.root != null;\n const path: string[] = hasRoot ? [options!.root!] : [];\n\n for (const prop of propertyChain) {\n const accessor = this._needsOptionalChaining(prop, options?.assignmentType) ? '?.' : '.';\n path.push(accessor, options?.useFromPropertyName ? prop.from : prop.name);\n }\n\n return path;\n }\n\n /**\n * Returns an array of property names representing the path from the root to this property.\n *\n * @returns {string[]} The property path as an array of names.\n */\n getPathArray() {\n if (this._pathArrayCache) {\n return this._pathArrayCache;\n }\n\n const path: string[] = [];\n const propertyChain = this._getPropertyChain();\n\n for (const prop of propertyChain) {\n path.push(prop.name);\n }\n\n this._pathArrayCache = path;\n return path;\n }\n\n /**\n * Returns an array of property names representing the path from the root to the parent of this property.\n *\n * @returns {string[]} The property path as an array of names, excluding this property.\n */\n getParentPathArray() {\n if (this._parentPathArrayCache) {\n return this._parentPathArrayCache;\n }\n\n const path: string[] = [];\n const propertyChain = this._getPropertyChain();\n\n for (let i = 0; i < propertyChain.length - 1; i++) {\n const prop = propertyChain[i];\n path.push(prop.name);\n }\n\n this._parentPathArrayCache = path;\n return path;\n }\n\n /**\n * Returns true if any parent property is nullable or optional.\n *\n * @returns {boolean} True if any parent is nullable or optional, false otherwise.\n */\n get hasNullableParents() {\n if (this._hasNullableParentsCache !== undefined) {\n return this._hasNullableParentsCache;\n }\n\n let parent = this.parent;\n while (parent != null) {\n if (parent.isNullable || parent.isOptional) {\n this._hasNullableParentsCache = true;\n return true;\n }\n parent = parent.parent;\n }\n\n this._hasNullableParentsCache = false;\n return false;\n }\n\n /**\n * Returns true if any child property (recursively) is an identity property.\n *\n * @returns {boolean} True if any child is an identity property, false otherwise.\n */\n get hasIdentityChildren() {\n const children = [...this.children];\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.isIdentity === true) {\n return true;\n }\n if (child.children.length > 0) {\n children.push(...child.children)\n }\n }\n return false;\n }\n\n /**\n * Gets the value of this property from the given instance, following the property path.\n *\n * @param instance The object instance to retrieve the value from.\n * @returns The value of the property, or null if not found.\n */\n getValue(instance: unknown) {\n if (instance == null) {\n return null;\n }\n const pathArray = this.getPathArray();\n let current: any = instance;\n for (const prop of pathArray) {\n if (current == null) {\n return null;\n }\n current = current[prop];\n }\n return current;\n }\n\n /**\n * Sets the value of this property on the given instance, creating intermediate objects as needed.\n *\n * @param instance The object instance to set the value on.\n * @param value The value to set.\n */\n setValue(instance: unknown, value: unknown) {\n if (instance == null) {\n throw new Error('Cannot set value on null or undefined instance');\n }\n const pathArray = this.getPathArray();\n const length = pathArray.length;\n // Fast path for single level properties\n if (length === 1) {\n (instance as any)[pathArray[0]] = value;\n return;\n }\n let current: any = instance;\n let i = 0;\n // Navigate to the parent of the target property\n while (i < length - 1) {\n const prop = pathArray[i];\n const next = current[prop];\n // Only create new object if next level doesn't exist\n if (next == null) {\n current[prop] = {};\n }\n current = current[prop];\n i++;\n }\n // Set the value on the final property\n current[pathArray[length - 1]] = value;\n }\n\n /**\n * Returns a selector path string for this property, starting from the given parent variable name.\n *\n * @param options.parent The root variable name.\n * @param options.assignmentType Optional assignment type for path resolution.\n * @returns {string} The selector path string (e.g., 'parent.prop1.prop2').\n */\n getSelectrorPath(options: { parent: string, assignmentType?: AssignmentType, useFromPropertyName?: boolean }) {\n const parts = this._resolvePathArray({\n root: options.parent,\n assignmentType: options.assignmentType,\n useFromPropertyName: options.useFromPropertyName\n });\n return parts.join(\"\");\n }\n\n /**\n * Returns an assignment path string for this property, optionally starting from a parent variable name.\n *\n * @param options.parent Optional root variable name.\n * @returns {string} The assignment path string (e.g., 'prop1.prop2').\n */\n getAssignmentPath(options?: { parent?: string, useFromPropertyName?: boolean }) {\n const parts = this._resolvePathArray({\n root: options?.parent,\n assignmentType: \"ASSIGNMENT\",\n useFromPropertyName: options?.useFromPropertyName\n });\n\n if (options?.parent == null) {\n return parts.slice(1).join(\"\");\n }\n\n return parts.join(\"\");\n }\n\n deserialize(value: string | number) {\n if (this.valueDeserializer != null) {\n return this.valueDeserializer(value);\n }\n\n if (this.type === SchemaTypes.Date) {\n return new Date(value);\n }\n\n if (this.type === SchemaTypes.String) {\n return String(value);\n }\n\n if (this.type === SchemaTypes.Number) {\n return Number(value);\n }\n\n if (this.type === SchemaTypes.Boolean) {\n return Boolean(value);\n }\n\n throw new Error(`Unsupported deserialization for type. Type: ${this.type}`);\n }\n}\n\ntype AssignmentType = \"FORCE_NULLABLE_OR_OPTIONAL\" | \"ASSIGNMENT\";","import { SchemaFunction } from './table/SchemaFunction';\nimport { SchemaComputed } from './table/SchemaComputed';\nimport { SchemaBase } from \"./property/base/SchemaBase\";\nimport { PropertyInfo } from './PropertyInfo';\nimport { CodeBuilder } from '../codegen';\nimport { EnrichmentHandlerBuilder } from '../codegen/handlers/EnrichmentHandlerBuilder';\nimport { MergeHandlerBuilder } from '../codegen/handlers/MergeHandlerBuilder';\nimport { PrepareHandlerBuilder } from '../codegen/handlers/PrepareHandlerBuilder';\nimport { StripHandlerBuilder } from '../codegen/handlers/StripHandlerBuilder';\nimport { CloneHandlerBuilder } from '../codegen/handlers/CloneHandlerBuilder';\nimport { CompareHandlerBuilder } from '../codegen/handlers/CompareHandlerBuilder';\nimport { DeserializeHandlerBuilder } from '../codegen/handlers/DeserializeHandlerBuilder';\nimport { HashTypeHandlerBuilder } from '../codegen/handlers/HashTypeHandlerBuilder';\nimport { IdSelectorHandlerBuilder } from '../codegen/handlers/IdSelectorHandlerBuilder';\nimport { HashHandlerBuilder } from '../codegen/handlers/HashHandlerBuilder';\nimport { EnableChangeTrackingHandlerBuilder } from '../codegen/handlers/EnableChangeTrackingHandlerBuilder';\nimport { FreezeHandlerBuilder } from '../codegen/handlers/FreezeHandlerBuilder';\nimport { SchemaError } from '../errors/SchemaError';\nimport { SerializeHandlerBuilder } from \"../codegen/handlers/SerializeHandlerBuilder\";\nimport { hash } from \"../utilities\";\nimport { CompiledSchema, GetHashTypeFunction, HashFunction, HashType, IdType, Index, InferCreateType, InferType, SchemaTypes } from './types';\nimport { DeepPartial } from '../types';\nimport { SchemaSubscription } from './communication/broadcast';\n\nexport class SchemaDefinition<T extends {}> extends SchemaBase<T, any> {\n\n instance: T;\n type = SchemaTypes.Definition;\n collectionName: string;\n\n constructor(collectionName: string, schema: T) {\n super();\n this.collectionName = collectionName;\n this.instance = schema;\n this.isNullable = false;\n this.isOptional = false;\n }\n\n modify<R>(builder: (d: {\n function: <UU, I = never>(fn: (entity: InferType<CompiledSchema<T>>, collectionName: string, injected: I) => UU, injected?: I) => SchemaFunction<UU, I, \"unmapped\">;\n computed: <UU, I = never>(fn: (entity: InferType<CompiledSchema<T>>, collectionName: string, injected: I) => UU, injected?: I) => SchemaComputed<UU, I, \"unmapped\">;\n }) => R) {\n\n const b = {\n function: <UU, I = never>(fn: (entity: InferType<CompiledSchema<T>>, collectionName: string, injected?: I) => UU, injected?: I) => new SchemaFunction<UU, I, \"unmapped\">(fn as any, injected),\n computed: <UU, I = never>(fn: (entity: InferType<CompiledSchema<T>>, collectionName: string, injected?: I) => UU, injected?: I) => new SchemaComputed<UU, I, \"unmapped\">(fn as any, injected)\n }\n\n const r = builder(b)\n\n return new SchemaDefinition<R & T>(this.collectionName, { ...this.instance, ...r });\n }\n\n private _iterate(\n instance: SchemaBase<any, any>,\n callback: (property: PropertyInfo<any>) => void\n ) {\n const explore: {\n path: string | null;\n instance:\n | SchemaBase<any, any>\n | { [key: string]: SchemaBase<any, any> };\n parents: {\n schema: { [key: string]: SchemaBase<any, any> };\n propertyInfo: PropertyInfo<any>;\n }[];\n propertyInfo: PropertyInfo<any> | null;\n }[] = [\n { path: null, instance, parents: [], propertyInfo: null }\n ];\n const properties: PropertyInfo<any>[] = [];\n\n for (let i = 0; i < explore.length; i++) {\n const item = explore[i];\n\n if (item.instance.type === SchemaTypes.Definition) {\n explore.push({\n path: null,\n instance: item.instance.instance,\n parents: [],\n propertyInfo: null\n });\n continue;\n }\n\n const instanceObj = item.instance as {\n [key: string]: SchemaBase<any, any>;\n };\n for (const key in instanceObj) {\n const propertyInstance = instanceObj[key] as SchemaBase<any, any>;\n const previousParent =\n item.parents.length === 0\n ? null\n : item.parents[item.parents.length - 1].propertyInfo;\n\n if (propertyInstance.type === SchemaTypes.Object) {\n const propertyInfo = new PropertyInfo<any>(\n propertyInstance,\n key,\n previousParent\n );\n explore.push({\n path: [item.path, key].filter((w) => w != null).join(\".\"),\n instance: propertyInstance.instance,\n parents: [\n ...item.parents,\n { schema: instanceObj, propertyInfo: propertyInfo }\n ],\n propertyInfo\n });\n\n if (previousParent === null) {\n properties.push(propertyInfo);\n continue;\n }\n\n previousParent.children.push(propertyInfo);\n continue;\n }\n\n const childPrimitivePropertyInfo = new PropertyInfo<any>(\n (item.instance as any)[key],\n key,\n previousParent\n );\n if (previousParent === null) {\n properties.push(childPrimitivePropertyInfo);\n continue;\n }\n\n previousParent.children.push(childPrimitivePropertyInfo);\n }\n }\n\n // Recursively trigger callbacks on properties and their children\n function recursiveCallback(prop: PropertyInfo<any>) {\n callback(prop);\n for (const child of prop.children) {\n recursiveCallback(child);\n }\n }\n\n for (const prop of properties) {\n recursiveCallback(prop);\n }\n }\n\n private createChangeTracker() {\n\n const DIRTY_ENTITY_MARKER: string = \"isDirty\";\n const CHANGES_ENTITY_KEY: string = \"changes\";\n const ORIGINAL_ENTITY_KEY: string = \"original\";\n const PAUSED_ENTITY_KEY: string = \"isPaused\";\n const TRACKING_KEY: string = \"__tracking__\";\n const PROXY_MARKER: string = \"__isProxy__\";\n\n return <TEntity extends {}>(entity: TEntity, path?: string, parent?: TEntity) => {\n\n const proxyHandler: ProxyHandler<TEntity> = {\n set: (entity, property, value) => {\n const indexableEntity: { [key: string]: any } = entity;\n const key = String(property);\n const originalValue = indexableEntity[key];\n\n // if values are the same, do nothing\n if (originalValue === value) {\n return true;\n }\n\n const resolvedParent: { [key: string]: any } = parent ?? entity;\n\n if (resolvedParent[TRACKING_KEY] == null) {\n resolvedParent[TRACKING_KEY] = {\n [CHANGES_ENTITY_KEY]: {},\n [DIRTY_ENTITY_MARKER]: false,\n [ORIGINAL_ENTITY_KEY]: {},\n [PAUSED_ENTITY_KEY]: false\n }\n }\n\n if (key == TRACKING_KEY) {\n return true;\n }\n\n if (resolvedParent[TRACKING_KEY] != null && resolvedParent[TRACKING_KEY][PAUSED_ENTITY_KEY] === true) {\n Reflect.set(indexableEntity, property, value);\n return true;\n }\n\n const resolvedPath = path == null ? key : `${path}.${key}`;\n const changes = resolvedParent[TRACKING_KEY];\n\n if (changes[CHANGES_ENTITY_KEY][resolvedPath] != null) {\n\n if (changes[ORIGINAL_ENTITY_KEY][resolvedPath] === value) {\n // we are changing the value back to the original value, remove the change\n delete changes[ORIGINAL_ENTITY_KEY][resolvedPath];\n delete changes[CHANGES_ENTITY_KEY][resolvedPath];\n } else {\n // track the change\n changes[CHANGES_ENTITY_KEY][resolvedPath] = value;\n }\n\n } else if (changes[CHANGES_ENTITY_KEY][resolvedPath] == null) {\n // don't keep updating, keep the original value\n changes[CHANGES_ENTITY_KEY][resolvedPath] = value;\n changes[ORIGINAL_ENTITY_KEY][resolvedPath] = originalValue;\n }\n\n const isDirty = Object.keys(changes[ORIGINAL_ENTITY_KEY]).length > 0;\n changes[DIRTY_ENTITY_MARKER] = isDirty;\n\n Reflect.set(indexableEntity, property, value);\n\n return true;\n },\n get: (target, property, receiver) => {\n\n if (property === PROXY_MARKER) {\n return true;\n }\n\n return Reflect.get(target, property, receiver);\n }\n }\n\n return new Proxy(entity, proxyHandler) as TEntity\n }\n }\n\n compile(): CompiledSchema<T> {\n\n try {\n const schema = this;\n const properties: PropertyInfo<T>[] = [];\n const propertyMap: Map<string, PropertyInfo<T>> = new Map<string, PropertyInfo<T>>();\n\n const enrichmentHandlerBuilder = new EnrichmentHandlerBuilder();\n const mergeHandlerFactory = new MergeHandlerBuilder();\n const prepareHandlerBuilder = new PrepareHandlerBuilder();\n const stripHandlerBuilder = new StripHandlerBuilder();\n const cloneHandlerBuilder = new CloneHandlerBuilder();\n const compareHandlerBuilder = new CompareHandlerBuilder();\n const deserializeHandlerBuilder = new DeserializeHandlerBuilder();\n const hashTypeHandlerBuilder = new HashTypeHandlerBuilder();\n const idSelectorHandlerBuilder = new IdSelectorHandlerBuilder();\n const hashHandlerBuilder = new HashHandlerBuilder();\n const enableChangeTrackingHandlerBuilder = new EnableChangeTrackingHandlerBuilder();\n const freezeHandlerBuilder = new FreezeHandlerBuilder();\n const serializeHandlerBuilder = new SerializeHandlerBuilder();\n\n const enricher = enrichmentHandlerBuilder.build();\n const merge = mergeHandlerFactory.build();\n const prepare = prepareHandlerBuilder.build();\n const strip = stripHandlerBuilder.build();\n const clone = cloneHandlerBuilder.build();\n const compare = compareHandlerBuilder.build();\n const deserialize = deserializeHandlerBuilder.build();\n const hashTypeHandler = hashTypeHandlerBuilder.build();\n const idSelectorHandler = idSelectorHandlerBuilder.build();\n const hashHandler = hashHandlerBuilder.build();\n const enableChangeTrackingHandler = enableChangeTrackingHandlerBuilder.build();\n const freezeHandler = freezeHandlerBuilder.build();\n const serializeHandler = serializeHandlerBuilder.build();\n\n const changeTrackingCodeBuilder = new CodeBuilder();\n changeTrackingCodeBuilder.raw(`function ${this.createChangeTracker.toString()}`);\n changeTrackingCodeBuilder.slot(\"declarations\").variable(\"enableChangeTracking\").value('createChangeTracker()');\n changeTrackingCodeBuilder.slot(\"assignment\");\n changeTrackingCodeBuilder.slot(\"return\").raw('\\treturn enableChangeTracking(entity);');\n\n const freezeCodeBuilder = new CodeBuilder();\n freezeCodeBuilder.slot(\"assignment\");\n freezeCodeBuilder.slot(\"return\").raw('\\treturn Object.freeze(entity);');\n\n const enricherCodeBuilder = new CodeBuilder();\n const enricherFunctionRoot = enricherCodeBuilder.factory(\"factory\", { name: \"factory\" }).parameters({ name: \"collectionName\", value: this.collectionName });\n const enricherFunctionBody = enricherFunctionRoot.function(undefined, { name: \"function\" }).parameters(\"entity\", \"changeTrackingType\").return();\n\n enricherFunctionBody.raw(`function ${this.createChangeTracker.toString()}`);\n enricherFunctionBody.variable(\"enableChangeTracking\").value('changeTrackingType === \"proxy\" ? createChangeTracker() : e => e');\n\n enricherFunctionBody.slot(\"enriched\");\n enricherFunctionBody.slot(\"declarations\");\n enricherFunctionBody.slot(\"assignment\");\n enricherFunctionBody.slot(\"ifs\");\n enricherFunctionBody.slot(\"tracking\").if('changeTrackingType === \"immutable\"', { name: \"freeze\" });\n enricherFunctionBody.raw('\\treturn enableChangeTracking(enriched);');\n\n const mergeCodeBuilder = new CodeBuilder();\n\n const mergeFunctionRoot = mergeCodeBuilder.factory(\"factory\", { name: \"factory\" }).parameters({ name: \"collectionName\", value: this.collectionName });\n const mergeFunctionBody = mergeFunctionRoot.function(undefined, { name: \"function\" }).parameters(\"destination\", \"source\").return();\n\n const pauseFunctionBody = mergeFunctionBody.function(\"pause\")\n .appendBody(\"// initiate change tracking if needed\");\n\n pauseFunctionBody.if(\"destination.__tracking__ == null\")\n .appendBody(\"destination.__tracking__ = {};\");\n\n pauseFunctionBody.appendBody(\"destination.__tracking__.isPaused = true;\");\n\n mergeFunctionBody.function(\"unpause\")\n .appendBody(\"// unpause change tracking if needed\")\n .if(\"destination.__tracking__ != null\")\n .appendBody(\"destination.__tracking__.isPaused = false;\");\n\n mergeFunctionBody.slot(\"header\").raw(`pause()`);\n mergeFunctionBody.slot(\"assignments\");\n mergeFunctionBody.slot(\"ifs\");\n mergeFunctionBody.slot(\"return\").raw(`\n unpause();\n\n return destination;`);\n\n const prepareCodeBuilder = new CodeBuilder();\n prepareCodeBuilder.slot(\"result\");\n prepareCodeBuilder.slot(\"assignments\");\n prepareCodeBuilder.slot(\"return\").raw(` return result;`);\n\n const stripCodeBuilder = new CodeBuilder();\n stripCodeBuilder.slot(\"result\");\n stripCodeBuilder.slot(\"return\").raw(` return result;`);\n\n const cloneCodeBuilder = new CodeBuilder();\n cloneCodeBuilder.slot(\"result\").raw(\"const result = {};\");;\n cloneCodeBuilder.slot(\"assignments\");\n cloneCodeBuilder.slot(\"if\");\n cloneCodeBuilder.slot(\"return\").raw(` return result;`);\n\n const compareCodeBuilder = new CodeBuilder();\n compareCodeBuilder.slot(\"result\");\n compareCodeBuilder.slot(\"return\").raw(` return result;`);\n\n const deserializeCodeBuilder = new CodeBuilder();\n deserializeCodeBuilder.slot(\"functions\");\n deserializeCodeBuilder.slot(\"result\");\n deserializeCodeBuilder.slot(\"if\");\n deserializeCodeBuilder.slot(\"return\").raw(` return result;`);\n\n const serializeCodeBuilder = new CodeBuilder();\n serializeCodeBuilder.slot(\"result\").raw(\"const result = {};\");\n serializeCodeBuilder.slot(\"assignments\");\n serializeCodeBuilder.slot(\"functions\");\n serializeCodeBuilder.slot(\"if\");\n serializeCodeBuilder.slot(\"return\").raw(` return result;`);\n\n const idSelectorCodeBuilder = new CodeBuilder();\n idSelectorCodeBuilder.slot(\"result\");\n idSelectorCodeBuilder.slot(\"return\").raw(` return result;`);\n\n const hashTypeCodeBuilder = new CodeBuilder();\n hashTypeCodeBuilder.slot(\"ifs\");\n hashTypeCodeBuilder.slot(\"return\").raw(` return \"Ids\";`);\n\n const hashCodeBuilder = new CodeBuilder();\n hashCodeBuilder.slot(\"functions\").raw(`\n function stringifyDate(d) {\n\n if (d == null) {\n return \"\";\n }\n\n if (typeof d === \"string\") {\n return d;\n }\n\n if (d.toISOString != null) {\n return d.toISOString();\n }\n\n return d.toString();\n } \n`);\n const hashCodeBuilderIfBlock = hashCodeBuilder.if(`type === \"Ids\"`, { name: \"hash-id-if\" });\n hashCodeBuilderIfBlock.slot(\"if-body\");\n hashCodeBuilderIfBlock.appendBody(\"return result\");\n hashCodeBuilder.slot(\"hash-object-return\");\n hashCodeBuilder.raw(` return result;`)\n\n const idProperties: PropertyInfo<any>[] = [];\n const allPropertyNamesAndPaths: string[] = [];\n let hashType: HashType = HashType.Ids;\n let hasIdentities = false;\n let hasIdentityKeys = false;\n\n this._iterate(schema, (property) => {\n\n properties.push(property);\n propertyMap.set(property.id, property);\n allPropertyNamesAndPaths.push(property.getSelectrorPath({ parent: \"entity\" }));\n\n if (property.isIdentity === true) {\n hasIdentities = true;\n }\n\n if (property.isKey === true) {\n idProperties.push(property);\n }\n\n if (property.isKey === true && property.isIdentity === true) {\n hasIdentityKeys = true;\n }\n\n enricher.handle(property, enricherCodeBuilder);\n merge.handle(property, mergeCodeBuilder);\n prepare.handle(property, prepareCodeBuilder);\n strip.handle(property, stripCodeBuilder);\n clone.handle(property, cloneCodeBuilder);\n compare.handle(property, compareCodeBuilder);\n deserialize.handle(property, deserializeCodeBuilder);\n serializeHandler.handle(property, serializeCodeBuilder)\n hashTypeHandler.handle(property, hashTypeCodeBuilder);\n idSelectorHandler.handle(property, idSelectorCodeBuilder);\n hashHandler.handle(property, hashCodeBuilder);\n enableChangeTrackingHandler.handle(property, changeTrackingCodeBuilder);\n freezeHandler.handle(property, freezeCodeBuilder);\n });\n\n if (idProperties.length === 0) {\n throw new Error(`Schema must have a key. Use .key() to mark a property as a key. Collection Name: ${this.collectionName}`)\n }\n\n const enrichParams = enricherFunctionRoot.getParameters()\n const mergeParams = mergeFunctionRoot.getParameters()\n const enrichGenerator = Function(`return ${enricherCodeBuilder.toString()}`);\n const mergeGenerator = Function(`return ${mergeCodeBuilder.toString()}`);\n\n const getIdsFunction = Function(\"entity\", idSelectorCodeBuilder.toString()) as (entity: InferType<T>) => [IdType];\n const getHashTypeFunction = Function(\"entity\", hashTypeCodeBuilder.toString()) as GetHashTypeFunction<T>;\n const prepareFunction = Function(\"entity\", prepareCodeBuilder.toString()) as (entity: InferCreateType<T>) => InferCreateType<T>;\n const cloneFunction = Function(\"entity\", cloneCodeBuilder.toString()) as (entity: InferType<T>) => InferType<T>;\n const deserializeFunction = Function(\"entity\", deserializeCodeBuilder.toString()) as (entity: InferType<T>) => InferType<T>;\n const serializeFunction = Function(\"entity\", serializeCodeBuilder.toString()) as (entity: InferType<T>) => InferType<T>;\n const compareFunction = Function(\"a\", \"b\", compareCodeBuilder.toString()) as (a: InferType<T>, fromDb: InferType<T>) => boolean;;\n const stripFunction = Function(\"entity\", stripCodeBuilder.toString()) as (entity: InferType<T>) => InferType<T>;\n const hashFunction = Function(\"entity\", \"type\", hashCodeBuilder.toString()) as HashFunction<T>;\n const enableChangeTrackingFunction = Function(\"entity\", changeTrackingCodeBuilder.toString()) as (entity: InferType<T>) => InferType<T>;\n const freezeFunction = Function(\"entity\", freezeCodeBuilder.toString()) as (entity: InferType<T>) => InferType<T>;\n\n const enricherFactoryFunction = enrichGenerator();\n const mergeFactoryFunction = mergeGenerator();\n const enricherFunction = enricherFactoryFunction(...enrichParams.map(w => w.value));\n const mergeFunction = mergeFactoryFunction(...mergeParams.map(w => w.value));\n\n const idPropertyNames = idProperties.map(w => w.name);\n const getId = (entity: InferType<T>) => {\n if (idPropertyNames.length > 1) {\n return hashFunction(entity, HashType.Ids) as IdType;\n }\n\n return getIdsFunction(entity as any)[0] as IdType;\n }\n\n const getProperty = (id: string) => propertyMap.get(id);\n const id = hash([...allPropertyNamesAndPaths, this.collectionName].join(\",\"));\n\n // memoize this by the validProperties\n // TODO: See if we can generate a function to do this and eliminate loops\n const deserializePartial = (item: Record<string, unknown>, properties: PropertyInfo<T>[]) => {\n\n for (let i = 0, length = properties.length; i < length; i++) {\n const property = properties[i];\n const value = property.getValue(item);\n\n if (value == null) {\n continue;\n }\n\n const deserialized = property.deserialize(value);\n property.setValue(item, deserialized);\n }\n\n return item as DeepPartial<InferType<T>>;\n }\n\n return {\n createSubscription: (signal?: AbortSignal) => new SchemaSubscription(id, signal),\n getId,\n getProperty,\n properties,\n idProperties,\n hasIdentities,\n hashType,\n getHashType: getHashTypeFunction,\n merge: mergeFunction,\n prepare: prepareFunction,\n clone: cloneFunction,\n deserializePartial,\n deserialize: deserializeFunction,\n serialize: serializeFunction,\n compare: compareFunction,\n strip: stripFunction,\n hash: hashFunction,\n id,\n getIds: getIdsFunction,\n enrich: enricherFunction,\n collectionName: this.collectionName,\n hasIdentityKeys,\n freeze: freezeFunction,\n enableChangeTracking: enableChangeTrackingFunction,\n definition: this,\n getIndexes: () => {\n\n const indexes: Index[] = [];\n\n for (let i = 0, length = properties.length; i < length; i++) {\n const property = properties[i];\n\n if (property.indexes.length === 0) {\n continue; // No Index\n }\n\n for (let j = 0, l = property.indexes.length; j < l; j++) {\n const indexName = property.indexes[j];\n\n // Test for compound indexes\n const connections = properties.filter(w =>\n w !== property && // Don't match with self\n w.indexes.some(index => index === indexName)\n );\n\n const indexedProperties = [property, ...connections];\n\n if (indexedProperties.length === 1) {\n // Not a compound property\n if (indexedProperties[0].isKey) {\n indexes.push({\n properties: indexedProperties,\n type: \"primary-key\",\n name: indexName\n });\n continue;\n }\n\n if (indexedProperties[0].isDistinct) {\n indexes.push({\n properties: indexedProperties,\n type: \"unique\",\n name: indexName\n });\n continue;\n }\n\n indexes.push({\n properties: indexedProperties,\n type: \"single\",\n name: indexName\n });\n continue;\n }\n\n if (indexes.some(w => w.name === indexName)) {\n continue; // Already in a compound index\n }\n\n indexes.push({\n properties: indexedProperties,\n type: \"compound\",\n name: indexName\n });\n }\n }\n\n return indexes;\n }\n }\n } catch (e) {\n throw new SchemaError(e, `Error compiling schema for collection: ${this.collectionName}`);\n }\n }\n}\n","import { SchemaArray } from \"./property/types/SchemaArray\";\nimport { SchemaBase } from \"./property/base/SchemaBase\";\nimport { SchemaBoolean } from \"./property/types/SchemaBoolean\";\nimport { SchemaDate } from \"./property/types/SchemaDate\";\nimport { SchemaDefinition } from \"./SchemaDefinition\";\nimport { SchemaNumber } from \"./property/types/SchemaNumber\";\nimport { SchemaObject } from \"./property/types/SchemaObject\";\nimport { SchemaString } from \"./property/types/SchemaString\";\n\nexport const s = {\n number: <T extends number[] = number[]>(...literals: T) => new SchemaNumber<T[number] extends never ? number : T[number], never>(null, literals),\n string: <T extends string[] = string[]>(...literals: T) => new SchemaString<T[number] extends never ? string : T[number], never>(null, literals),\n boolean: <T extends boolean = boolean>() => new SchemaBoolean<T, never>(),\n date: <T extends Date = Date>() => new SchemaDate<T, never>(),\n array: <T extends any>(schema: SchemaBase<T, never>) => new SchemaArray<SchemaBase<T, never>, never>(schema as any),\n object: <T extends {} = {}>(schema: T) => new SchemaObject<T, never>(schema),\n define: <T extends {}>(collectionName: string, schema: T) => new SchemaDefinition<T>(collectionName, schema)\n}","import { now } from \"../../performance\";\nimport { Tagged, uuid } from \"../../utilities\";\nimport { ISchemaSubscription, SchemaId, SubscriptionChanges } from \"../types\";\n\ntype BroadcastChannelReceiverId = Tagged<string, \"BroadcastChannelReceiverId\">;\ntype SubscriptionListenerCallback<T> = (changes: StampedChanges<T>) => void;\ninterface ISubscriptionAction<T> {\n action(changes: StampedChanges<T>): void\n}\ntype StampedChanges<T> = { data: SubscriptionChanges<T>, timestamp: number };\n\nconst registry: Record<SchemaId, SchemaChannel<unknown>> = {};\n\nconst getChannelRegistry = <T>(schemaId: SchemaId): SchemaChannel<T> => {\n\n if (registry[schemaId]) {\n return registry[schemaId] as SchemaChannel<T>;\n }\n\n const channel = new SchemaChannel<T>(schemaId);\n\n registry[schemaId] = channel;\n\n return channel;\n}\n\n// Must have a sender and receiver. Sender cannot listen for it's own message\nclass SchemaChannel<T> {\n\n readonly sender: SchemaChannelSender<T>;\n readonly receiver: SchemaChannelReceiver<T>;\n\n constructor(schemaId: SchemaId) {\n this.sender = new SchemaChannelSender<T>(schemaId);\n this.receiver = new SchemaChannelReceiver<T>(schemaId);\n }\n}\n\nclass SchemaChannelSender<T> {\n\n private readonly broadcastChannel: BroadcastChannel;\n\n constructor(schemaId: SchemaId) {\n this.broadcastChannel = new BroadcastChannel(`__routier-schema-subscription-channel:${schemaId}`);\n }\n\n send(changes: StampedChanges<T>) {\n this.broadcastChannel.postMessage(changes)\n }\n}\n\nclass SchemaChannelReceiver<T> {\n\n private readonly broadcastChannel: BroadcastChannel;\n private subscriptions: SubscriptionListener<T>[] = [];\n\n constructor(schemaId: SchemaId) {\n this.broadcastChannel = new BroadcastChannel(`__routier-schema-subscription-channel:${schemaId}`);\n\n this.broadcastChannel.onmessage = (e) => {\n\n // We can't send to the same instance it is not possbile\n const stampedChanges = e.data as StampedChanges<T>;\n\n for (let i = 0, length = this.subscriptions.length; i < length; i++) {\n const subscription = this.subscriptions[i];\n\n subscription.action(stampedChanges);\n }\n };\n }\n\n addListener(id: BroadcastChannelReceiverId, listener: SubscriptionListenerCallback<T>) {\n this.subscriptions.push(new SubscriptionListener<T>(id, listener));\n }\n\n removeListeners(id: BroadcastChannelReceiverId) {\n this.subscriptions = this.subscriptions.filter(w => w.id !== id);\n }\n}\n\nclass SubscriptionListener<T> implements ISubscriptionAction<T> {\n\n readonly id: BroadcastChannelReceiverId;\n private readonly listener: SubscriptionListenerCallback<T>;\n\n constructor(id: BroadcastChannelReceiverId, listener: SubscriptionListenerCallback<T>) {\n this.id = id;\n this.listener = listener;\n }\n\n action(changes: StampedChanges<T>) {\n this.listener(changes);\n }\n}\n\nexport class SchemaSubscription<T extends {}> implements ISchemaSubscription<T> {\n\n private readonly id: BroadcastChannelReceiverId;\n private readonly schemaId: SchemaId;\n private readonly createdAt: number;\n\n constructor(schemaId: SchemaId, signal?: AbortSignal) {\n this.createdAt = now();\n this.id = uuid(8) as BroadcastChannelReceiverId;\n this.schemaId = schemaId;\n\n signal?.addEventListener(\"abort\", () => {\n this.dispose();\n }, { once: true });\n }\n\n send(changes: SubscriptionChanges<T>) {\n const regisry = getChannelRegistry<T>(this.schemaId);\n\n // Send message to all listeners.\n // Since we create a new listener when we do onMessage,\n // we don't need to worry about sending to ourselves, it \n // can't happen\n regisry.sender.send({\n data: changes,\n timestamp: now()\n });\n }\n\n onMessage(callback: (changes: SubscriptionChanges<T>) => void) {\n\n const regisry = getChannelRegistry<T>(this.schemaId);\n\n // Link the callback to an instance\n regisry.receiver.addListener(this.id, ({ data, timestamp }) => {\n\n if (timestamp < this.createdAt) {\n // Sent before the receiver was even created\n return;\n }\n\n callback(data);\n });\n }\n\n dispose() {\n this[Symbol.dispose]();\n }\n\n [Symbol.dispose](): void {\n const regisry = getChannelRegistry<T>(this.schemaId);\n\n // Remove listeners for this instance only\n regisry.receiver.removeListeners(this.id);\n }\n}","import { DefaultValue, FunctionBody, PropertyDeserializer, PropertySerializer, SchemaModifiers, SchemaTypes } from \"../../types\";\n\nexport abstract class SchemaBase<T extends any, TModifiers extends SchemaModifiers> {\n\n abstract instance: T;\n modifiers: TModifiers;\n\n isNullable: boolean = false;\n isUnmapped: boolean = false;\n isOptional: boolean = false;\n isKey: boolean = false;\n isIdentity: boolean = false;\n isReadonly: boolean = false;\n isDistict: boolean = false;\n indexes: string[] = [];\n fromPropertyName: string | null = null;\n\n injected: any = null;\n defaultValue: DefaultValue<T> | null = null;\n valueSerializer: PropertySerializer<T> | null = null;\n valueDeserializer: PropertyDeserializer<T> | null = null;\n type: SchemaTypes;\n functionBody: FunctionBody<any, T> | null;\n private _schemaBase = true;\n readonly literals: T[] = [];\n\n constructor(entity?: SchemaBase<T, TModifiers>, literals?: T[]) {\n\n if (entity != null) {\n this.valueSerializer = entity.valueSerializer;\n this.valueDeserializer = entity.valueDeserializer;\n this.functionBody = entity.functionBody;\n this.isNullable = entity.isNullable;\n this.isOptional = entity.isOptional;\n this.isKey = entity.isKey;\n this.isIdentity = entity.isIdentity;\n this.isReadonly = entity.isReadonly;\n this.defaultValue = entity.defaultValue;\n this.type = entity.type;\n this.injected = entity.injected;\n this.indexes = entity.indexes;\n this.fromPropertyName = entity.fromPropertyName;\n }\n\n if (literals) {\n this.literals = literals;\n }\n }\n}","export * from './SchemaBase';","import { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDeserialize } from \"./SchemaDeserialize\";\nimport { SchemaFrom } from \"./SchemaFrom\";\nimport { SchemaSerialize } from \"./SchemaSerialize\";\n\nexport class SchemaDefault<T extends any, I, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n instance: T;\n private _schemaDefault = true;\n\n constructor(defaultValue: DefaultValue<T, I>, injected: I, current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.injected = injected;\n this.defaultValue = defaultValue;\n }\n\n serialize(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"serialize\">(serializer, this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n}","import { PropertyDeserializer, PropertySerializer, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaFrom } from \"./SchemaFrom\";\nimport { SchemaSerialize } from \"./SchemaSerialize\";\n\nexport class SchemaDeserialize<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n instance: T;\n private _schemaDeserialize = true;\n\n constructor(deserializer: PropertyDeserializer<T>, current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.valueDeserializer = deserializer;\n }\n\n serialize(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"serialize\">(serializer, this);\n }\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n}","import { SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\n\nexport class SchemaDistinct<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n private _schemaDistinct = true;\n\n constructor(current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.isDistict = true;\n }\n}","import { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"./SchemaDefault\";\nimport { SchemaDeserialize } from \"./SchemaDeserialize\";\nimport { SchemaDistinct } from \"./SchemaDistinct\";\nimport { SchemaIdentity } from \"./SchemaIdentity\";\nimport { SchemaNullable } from \"./SchemaNullable\";\nimport { SchemaOptional } from \"./SchemaOptional\";\nimport { SchemaReadonly } from \"./SchemaReadonly\";\nimport { SchemaSerialize } from \"./SchemaSerialize\";\n\nexport class SchemaFrom<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n instance: T;\n private _schemaFrom = true;\n\n constructor(propertyName: string, current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.fromPropertyName = propertyName;\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n\n identity() {\n return new SchemaIdentity<T, TModifiers | \"identity\" | \"readonly\">(this);\n }\n\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n\n nullable() {\n return new SchemaNullable<T, TModifiers | \"nullable\">(this);\n }\n\n readonly() {\n return new SchemaReadonly<T, TModifiers | \"readonly\">(this);\n }\n\n serialize(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"serialize\">(serializer, this);\n }\n}","import { SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\n\nexport class SchemaIdentity<T, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n instance: T;\n private _schemaIdentity = true;\n\n constructor(current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.isIdentity = true;\n }\n}","import { uuidv4 } from \"../../../utilities\";\nimport { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"./SchemaDefault\";\nimport { SchemaDeserialize } from \"./SchemaDeserialize\";\nimport { SchemaDistinct } from \"./SchemaDistinct\";\nimport { SchemaFrom } from \"./SchemaFrom\";\nimport { SchemaNullable } from \"./SchemaNullable\";\nimport { SchemaOptional } from \"./SchemaOptional\";\nimport { SchemaReadonly } from \"./SchemaReadonly\";\nimport { SchemaSerialize } from \"./SchemaSerialize\";\n\nexport class SchemaIndex<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n private _schemaIndex = true;\n\n constructor(current: SchemaBase<T, TModifiers>, ...indexes: string[]) {\n super(current);\n this.instance = current.instance;\n\n if (indexes.length === 0) {\n indexes.push(uuidv4()); // Create our own unique index identifier\n }\n\n this.indexes = indexes;\n }\n\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n\n nullable() {\n return new SchemaNullable<T, TModifiers | \"nullable\">(this);\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n\n readonly() {\n return new SchemaReadonly<T, TModifiers | \"readonly\">(this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n\n serialize(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"serialize\">(serializer, this);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n}","import { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaIdentity } from \"./SchemaIdentity\";\nimport { SchemaDefault } from \"./SchemaDefault\";\nimport { DefaultValue, IdType, SchemaModifiers } from \"../../types\";\nimport { SchemaFrom } from \"./SchemaFrom\";\n\nexport class SchemaKey<T extends IdType, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n instance: T;\n private _schemaKey = true;\n\n constructor(current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.isKey = true;\n }\n\n identity() {\n return new SchemaIdentity<T, TModifiers | \"identity\">(this);\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n}","import { SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaOptional } from \"./SchemaOptional\";\n\nexport class SchemaNullable<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n instance: T;\n private _schemaNullable = true;\n\n constructor(current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.isNullable = true;\n }\n\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n}","import { SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaNullable } from \"./SchemaNullable\";\n\nexport class SchemaOptional<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n private _schemaOptional = true;\n\n constructor(current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.isOptional = true;\n }\n\n nullable() {\n return new SchemaNullable<T, TModifiers | \"nullable\">(this);\n }\n}","import { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"./SchemaDefault\";\nimport { SchemaDeserialize } from \"./SchemaDeserialize\";\nimport { SchemaFrom } from \"./SchemaFrom\";\nimport { SchemaSerialize } from \"./SchemaSerialize\";\n\nexport class SchemaReadonly<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n private _schemaReadonly = true;\n\n constructor(current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.isReadonly = true;\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n\n deserializer(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n\n serializer(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"deserialize\">(serializer, this);\n }\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n}","import { PropertyDeserializer, PropertySerializer, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDeserialize } from \"./SchemaDeserialize\";\n\nexport class SchemaSerialize<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n instance: T;\n private _schemaSerialize = true;\n\n constructor(serializer: PropertySerializer<T>, current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.valueSerializer = serializer;\n }\n\n deserialize(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n}","import { SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\n\nexport class SchemaTracked<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n private _schemaTracked = true;\n\n constructor(current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.isUnmapped = false;\n }\n}","export * from './SchemaDefault';\nexport * from './SchemaDeserialize';\nexport * from './SchemaDistinct';\nexport * from './SchemaIdentity';\nexport * from './SchemaIndex';\nexport * from './SchemaKey';\nexport * from './SchemaNullable';\nexport * from './SchemaOptional';\nexport * from './SchemaReadonly';\nexport * from './SchemaSerialize';\nexport * from './SchemaTracked';\nexport * from './SchemaFrom';","import { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"../modifiers/SchemaDefault\";\nimport { SchemaNullable } from \"../modifiers/SchemaNullable\";\nimport { SchemaOptional } from \"../modifiers/SchemaOptional\";\nimport { SchemaDeserialize } from '../modifiers/SchemaDeserialize';\nimport { SchemaSerialize } from '../modifiers/SchemaSerialize';\nimport { SchemaIndex } from \"../modifiers/SchemaIndex\";\nimport { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers, SchemaTypes } from \"../../types\";\nimport { SchemaFrom } from \"../modifiers/SchemaFrom\";\n\nexport class SchemaArray<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T[], TModifiers> {\n\n instance: T[];\n type = SchemaTypes.Array;\n private _schemaArray = true;\n readonly innerSchema?: SchemaBase<any, any>; // we need to know the type of the array, that is what this is for\n\n constructor(entity?: SchemaBase<T[], TModifiers>, literals?: T[][]) {\n super(entity, literals);\n this.innerSchema = entity;\n }\n\n from(propertyName: string) {\n return new SchemaFrom<T[], TModifiers>(propertyName, this);\n }\n\n optional() {\n return new SchemaOptional<T[], TModifiers | \"optional\">(this);\n }\n\n nullable() {\n return new SchemaNullable<T[], TModifiers | \"nullable\">(this);\n }\n\n default<I = never>(value: DefaultValue<T[], I>, injected?: I) {\n return new SchemaDefault<T[], I, TModifiers | \"default\">(value, injected, this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T[]>) {\n return new SchemaDeserialize<T[], TModifiers | \"deserialize\">(deserializer, this);\n }\n\n serialize(serializer: PropertySerializer<T[]>) {\n return new SchemaSerialize<T[], TModifiers | \"serialize\">(serializer, this);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T[], TModifiers>(this as any, ...indexes);\n }\n}","import { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers, SchemaTypes } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"../modifiers/SchemaDefault\";\nimport { SchemaDeserialize } from \"../modifiers/SchemaDeserialize\";\nimport { SchemaDistinct } from \"../modifiers/SchemaDistinct\";\nimport { SchemaFrom } from \"../modifiers/SchemaFrom\";\nimport { SchemaIndex } from \"../modifiers/SchemaIndex\";\nimport { SchemaNullable } from \"../modifiers/SchemaNullable\";\nimport { SchemaOptional } from \"../modifiers/SchemaOptional\";\nimport { SchemaReadonly } from \"../modifiers/SchemaReadonly\";\nimport { SchemaSerialize } from \"../modifiers/SchemaSerialize\";\nimport { SchemaArray } from \"./SchemaArray\";\n\nexport class SchemaBoolean<T extends boolean, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n type = SchemaTypes.Boolean;\n private _schemaBoolean = true;\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n\n nullable() {\n return new SchemaNullable<T, TModifiers | \"nullable\">(this);\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n\n readonly() {\n return new SchemaReadonly<T, TModifiers | \"readonly\">(this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n\n serialize(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"serialize\">(serializer, this);\n }\n\n array() {\n return new SchemaArray<typeof this, TModifiers>(this as any);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this as any, ...indexes);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n}","import { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers, SchemaTypes } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"../modifiers/SchemaDefault\";\nimport { SchemaDeserialize } from \"../modifiers/SchemaDeserialize\";\nimport { SchemaDistinct } from \"../modifiers/SchemaDistinct\";\nimport { SchemaFrom } from \"../modifiers/SchemaFrom\";\nimport { SchemaIndex } from \"../modifiers/SchemaIndex\";\nimport { SchemaNullable } from \"../modifiers/SchemaNullable\";\nimport { SchemaOptional } from \"../modifiers/SchemaOptional\";\nimport { SchemaReadonly } from \"../modifiers/SchemaReadonly\";\nimport { SchemaSerialize } from \"../modifiers/SchemaSerialize\";\nimport { SchemaArray } from \"./SchemaArray\";\n\nexport class SchemaDate<T extends Date, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n type = SchemaTypes.Date;\n private _schemaDate = true;\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n\n nullable() {\n return new SchemaNullable<T, TModifiers | \"nullable\">(this);\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n readonly() {\n return new SchemaReadonly<T, TModifiers | \"readonly\">(this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n\n serialize(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"serialize\">(serializer, this);\n }\n\n array() {\n return new SchemaArray<typeof this, TModifiers>(this as any);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this as any, ...indexes);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n}","import { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers, SchemaTypes } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"../modifiers/SchemaDefault\";\nimport { SchemaDeserialize } from \"../modifiers/SchemaDeserialize\";\nimport { SchemaDistinct } from \"../modifiers/SchemaDistinct\";\nimport { SchemaFrom } from \"../modifiers/SchemaFrom\";\nimport { SchemaIdentity } from \"../modifiers/SchemaIdentity\";\nimport { SchemaIndex } from \"../modifiers/SchemaIndex\";\nimport { SchemaKey } from \"../modifiers/SchemaKey\";\nimport { SchemaNullable } from \"../modifiers/SchemaNullable\";\nimport { SchemaOptional } from \"../modifiers/SchemaOptional\";\nimport { SchemaReadonly } from \"../modifiers/SchemaReadonly\";\nimport { SchemaSerialize } from \"../modifiers/SchemaSerialize\";\nimport { SchemaArray } from \"./SchemaArray\";\n\nexport class SchemaNumber<T extends number, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n type = SchemaTypes.Number;\n private _schemaNumber = true;\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n\n nullable() {\n return new SchemaNullable<T, TModifiers | \"nullable\">(this);\n }\n\n key() {\n return new SchemaKey<T, TModifiers | \"key\">(this);\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n\n readonly() {\n return new SchemaReadonly<T, TModifiers | \"readonly\">(this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n\n serialize(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"serialize\">(serializer, this);\n }\n\n identity() {\n return new SchemaIdentity<T, TModifiers | \"identity\" | \"readonly\">(this);\n }\n\n array() {\n return new SchemaArray<typeof this, TModifiers>(this as any);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this as any, ...indexes);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n}","import { DefaultValue, SchemaModifiers, SchemaTypes } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"../modifiers/SchemaDefault\";\nimport { SchemaFrom } from \"../modifiers/SchemaFrom\";\nimport { SchemaIdentity } from \"../modifiers/SchemaIdentity\";\nimport { SchemaNullable } from \"../modifiers/SchemaNullable\";\nimport { SchemaOptional } from \"../modifiers/SchemaOptional\";\nimport { SchemaArray } from \"./SchemaArray\";\n\nexport class SchemaObject<T extends {}, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n type = SchemaTypes.Object;\n private _schemaObject = true;\n\n constructor(schema: T) {\n super();\n this.instance = schema;\n }\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n\n nullable() {\n return new SchemaNullable<T, TModifiers | \"nullable\">(this);\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n\n identity() {\n return new SchemaIdentity<T, TModifiers | \"identity\" | \"readonly\">(this);\n }\n\n array() {\n return new SchemaArray<typeof this, TModifiers>(this as any);\n }\n}","import { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers, SchemaTypes } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"../modifiers/SchemaDefault\";\nimport { SchemaDeserialize } from \"../modifiers/SchemaDeserialize\";\nimport { SchemaDistinct } from \"../modifiers/SchemaDistinct\";\nimport { SchemaFrom } from \"../modifiers/SchemaFrom\";\nimport { SchemaIdentity } from \"../modifiers/SchemaIdentity\";\nimport { SchemaIndex } from \"../modifiers/SchemaIndex\";\nimport { SchemaKey } from \"../modifiers/SchemaKey\";\nimport { SchemaNullable } from \"../modifiers/SchemaNullable\";\nimport { SchemaOptional } from \"../modifiers/SchemaOptional\";\nimport { SchemaReadonly } from \"../modifiers/SchemaReadonly\";\nimport { SchemaSerialize } from \"../modifiers/SchemaSerialize\";\nimport { SchemaArray } from \"./SchemaArray\";\n\nexport class SchemaString<T extends string, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n type = SchemaTypes.String;\n private _schemaString = true;\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n\n nullable() {\n return new SchemaNullable<T, TModifiers | \"nullable\">(this);\n }\n\n key() {\n return new SchemaKey<T, TModifiers | \"key\">(this);\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n\n readonly() {\n return new SchemaReadonly<T, TModifiers | \"readonly\">(this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n\n serialize(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"serialize\">(serializer, this);\n }\n\n identity() {\n return new SchemaIdentity<T, TModifiers | \"identity\" | \"readonly\">(this);\n }\n\n array() {\n return new SchemaArray<typeof this, TModifiers>(this as any);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this as any, ...indexes);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n}","export * from './SchemaArray';\nexport * from './SchemaBoolean';\nexport * from './SchemaDate';\nexport * from './SchemaNumber';\nexport * from './SchemaObject';\nexport * from './SchemaString';","import { SchemaBase } from \"../property/base/SchemaBase\";\nimport { SchemaTracked } from '../property/modifiers/SchemaTracked';\nimport { SchemaModifiers, SchemaTypes } from \"../types\";\n\nexport class SchemaComputed<T extends any, I, TModifiers extends SchemaModifiers = \"computed\"> extends SchemaBase<T, TModifiers> {\n instance: T;\n type = SchemaTypes.Computed;\n private _schemaComputed = true;\n\n constructor(fn: T, injected: I, current?: SchemaBase<T, TModifiers>) {\n super(current);\n this.injected = injected;\n this.isUnmapped = true;\n this.functionBody = fn as any;\n }\n\n tracked() {\n return new SchemaTracked<T, TModifiers>(this);\n }\n}","import { SchemaBase } from \"../property/base/SchemaBase\";\nimport { SchemaModifiers, SchemaTypes } from \"../types\";\n\nexport class SchemaFunction<T extends any, I, TModifiers extends SchemaModifiers = \"unmapped\"> extends SchemaBase<() => T, TModifiers> {\n instance: () => T;\n type = SchemaTypes.Function;\n private _schemaFunction = true;\n\n constructor(fn: (injected: I) => T, injected: I, current?: SchemaBase<() => T, TModifiers>) {\n super(current);\n this.injected = injected;\n this.isUnmapped = true;\n this.functionBody = fn as any;\n }\n}","export * from './SchemaComputed';\nexport * from './SchemaFunction';","import { SchemaDefinition } from \"./SchemaDefinition\";\nimport { SchemaBase } from \"./property/base/SchemaBase\";\nimport { SchemaArray } from \"./property/types/SchemaArray\";\nimport { SchemaObject } from \"./property/types/SchemaObject\";\nimport { PropertyInfo } from \"./PropertyInfo\";\nimport { DeepPartial } from \"../types\";\nimport { SchemaFunction } from \"./table\";\nimport { SchemaString } from \"./property/types\";\nimport { SchemaOptional } from \"./property/modifiers\";\n\nexport type DefaultValue<T, I = never> = T | ((injected: I) => T);\nexport type FunctionBody<TEntity, TResult> = (entity: TEntity, collectionName: string) => TResult;\nexport type IdType = string | number;\n\nexport enum SchemaTypes {\n Array = \"Array\",\n Boolean = \"Boolean\",\n Date = \"Date\",\n Number = \"Number\",\n Object = \"Object\",\n String = \"String\",\n Definition = \"Definition\",\n Function = \"Function\",\n Computed = \"Computed\"\n}\n\nexport type ArrayShape = string | number | Date | {};\n\nexport type ExpandedProperty = ExpandedChildProperty & {\n assignmentPath: string;\n selectorPath: string;\n properties: Map<string, ExpandedChildProperty>;\n childDegree: number;\n};\n\nexport type ExpandedChildProperty = {\n propertyName: string;\n type: SchemaTypes;\n isNullableOrOptional: boolean;\n isReadonly: boolean;\n isIdentity: boolean;\n isUnmapped: boolean;\n}\n\nexport enum HashType {\n Ids = \"Ids\",\n Object = \"Object\"\n}\n\nexport type HashFunction<TEntity extends {}> = {\n (entity: InferCreateType<TEntity>, type: HashType.Object): string;\n (entity: InferType<TEntity>, type: HashType.Ids): string;\n}\n\nexport type GetHashTypeFunction<TEntity extends {}> = {\n (entity: InferCreateType<TEntity>): HashType.Object;\n (entity: InferType<TEntity>): HashType.Ids;\n}\n\nexport type ChangeTrackingType = \"proxy\" | \"diff\" | \"immutable\";\n\nexport type IndexType = \"single\" | \"compound\" | \"unique\" | \"primary-key\"\nexport type Index = {\n properties: PropertyInfo<any>[],\n type: IndexType;\n name: string;\n}\n\n/**\n * Represents changes to subscriptions, categorizing them by modifications to\n * entities (additions, updates, removals) or query-driven removals.\n * @template T - The type of the entities in the subscription.\n */\nexport type SubscriptionChanges<T extends {}> = {\n /**\n * Entities that have been added to the subscription.\n */\n adds: InferType<T>[];\n /**\n * Entities that have been updated within the subscription.\n */\n updates: InferType<T>[];\n /**\n * Entities that have been removed from the subscription.\n */\n removals: InferType<T>[];\n /**\n * Entities that have been added/updated/removed from the subscription and it is unknown \n * if the entities have been added/updated/removed.\n */\n unknown: InferType<T>[];\n}\n\nexport interface ISchemaSubscription<T extends {}> extends Disposable {\n send(changes: SubscriptionChanges<T>): void;\n onMessage(callback: (changes: SubscriptionChanges<T>) => void): void;\n}\n\ntype Enrich<TEntity extends {}> = {\n (entity: InferType<TEntity>, changeTrackingType: ChangeTrackingType): InferType<TEntity>;\n (entity: InferCreateType<TEntity>, changeTrackingType: ChangeTrackingType): InferCreateType<TEntity>;\n}\n\n/**\n * Represents a fully compiled schema with all utilities and metadata for an entity type.\n */\nexport type CompiledSchema<TEntity extends {}> = {\n\n deserializePartial: (item: Record<string, unknown>, properties: PropertyInfo<TEntity>[]) => DeepPartial<InferType<TEntity>>;\n\n createSubscription: (abortSignal?: AbortSignal) => ISchemaSubscription<TEntity>;\n /** Returns the property info for a given id (full path) */\n getProperty: (id: string) => PropertyInfo<TEntity>;\n /** Returns the ID of the given entity. */\n getId: (entity: InferType<TEntity>) => IdType;\n /** Returns a deep clone of the given entity. */\n clone: (entity: InferType<TEntity>) => InferType<TEntity>;\n /** Removes unmapped or extraneous properties from the entity. */\n strip: (entity: InferType<TEntity>) => InferType<TEntity>;\n /** Prepares a new entity for creation, applying defaults and transformations. */\n prepare: (entity: InferCreateType<TEntity>) => InferCreateType<TEntity>;\n /** Merges the source entity into the destination entity. */\n merge: (destination: InferType<TEntity> | InferCreateType<TEntity>, source: InferType<TEntity>) => InferType<TEntity>;\n /** Indicates if the schema has identity properties. */\n hasIdentities: boolean;\n /** List of properties that are identity keys. */\n idProperties: PropertyInfo<TEntity>[];\n /** All property metadata for the schema. */\n properties: PropertyInfo<TEntity>[],\n /** The hash type used for this schema. */\n hashType: HashType;\n /** Computes a hash for the given entity. */\n hash: HashFunction<TEntity>;\n /** Returns the hash type for the given entity. */\n getHashType: GetHashTypeFunction<TEntity>;\n /** Compares two entities for equality. */\n compare: (a: InferType<TEntity>, fromDb: InferType<TEntity>) => boolean;\n /** Deserializes an entity from storage format. */\n deserialize: (entity: InferType<TEntity>) => InferType<TEntity>;\n /** Serializes an entity to storage format. */\n serialize: (entity: InferType<TEntity>) => InferType<TEntity>;\n /** Unique id for the schema. */\n id: SchemaId,\n /** The name of the collection for this schema. */\n collectionName: string;\n /** Returns all IDs for the given entity (usually a single-element tuple). */\n getIds: (entity: InferType<TEntity>) => [IdType];\n /** Enriches the entity with change tracking or other metadata. */\n enrich: Enrich<TEntity>;\n /** Indicates if the schema has identity keys. */\n hasIdentityKeys: boolean;\n /** Returns a deeply frozen (immutable) version of the entity. */\n freeze: (entity: InferType<TEntity>) => InferType<TEntity>;\n /** Enables change tracking on the entity. */\n enableChangeTracking: (entity: InferType<TEntity>) => InferType<TEntity>;\n /** The schema definition object. */\n definition: SchemaDefinition<TEntity>;\n /** Returns all indexes defined for this schema. */\n getIndexes: () => Index[];\n}\n\nexport type PropertySerializer<T extends any> = (value: T) => string | number;\nexport type PropertyDeserializer<T extends any> = (value: string | number) => T;\n\nexport type SchemaId = number\n\nexport type SchemaModifiers = \"default\" | \"deserialize\" |\n \"identity\" | \"key\" |\n \"nullable\" | \"optional\" |\n \"readonly\" | \"serialize\" |\n \"unmapped\" | \"computed\" |\n \"distinct\";\n\ntype InferPrimitive<T> =\n T extends SchemaOptional<infer C, infer __> ? C extends (string | number | Date) ? C : { [K in keyof C]: InferPrimitive<C[K]> } :\n T extends SchemaArray<infer Y, infer __> ? InferPrimitive<Y>[]\n : T extends SchemaObject<infer Obj, infer _> ?\n { [K in keyof Obj]: InferPrimitive<Obj[K]> } : // Process nested objects\n T extends SchemaFunction<infer F, infer __> ? F : T extends SchemaBase<infer X, infer _> ?\n X extends Array<infer A> ? InferPrimitive<A>[] : X : // Extract the primitive type\n never;\n\nexport type InferType<T> = T extends CompiledSchema<infer R> ? InferCompiledSchema<R> : T extends {} ? InferCompiledSchema<T> : T;\nexport type InferCreateType<T> = T extends CompiledSchema<infer R> ? InferCompiledCreateSchema<R> : T extends {} ? InferCompiledCreateSchema<T> : unknown;\nexport type InferMappedType<T> = T extends SchemaBase<infer K, infer __> ? InferType<K> : InferCompiledSchema<T>;\n\ntype HasModifier<T, K extends keyof T, M extends SchemaModifiers> =\n T[K] extends SchemaBase<any, infer Mods> ?\n M extends Mods ? true : false :\n false;\n\ntype IsPlainProperty<T, K extends keyof T> =\n [\n HasModifier<T, K, \"readonly\">,\n HasModifier<T, K, \"optional\">,\n HasModifier<T, K, \"nullable\">\n ] extends [\n false,\n false,\n false\n ] ? true : false;\n\ntype IsPlainCreateProperty<T, K extends keyof T> =\n [\n HasModifier<T, K, \"identity\">,\n HasModifier<T, K, \"default\">,\n HasModifier<T, K, \"computed\">,\n HasModifier<T, K, \"unmapped\">,\n HasModifier<T, K, \"optional\">,\n HasModifier<T, K, \"nullable\">\n ] extends [\n false,\n false,\n false,\n false,\n false,\n false\n ] ? true : false;\n\ntype InferCompiledSchema<T> = CoalesceEmpty<{\n [K in keyof T as IsPlainProperty<T, K> extends true ? K : never]: InferPrimitive<T[K]>\n}, {\n readonly [K in keyof T as HasModifier<T, K, \"readonly\"> extends true ? K : never]: InferPrimitive<T[K]>\n }, {\n [K in keyof T as HasModifier<T, K, \"optional\"> extends true ? K : never]?: InferPrimitive<T[K]>\n }, {\n [K in keyof T as HasModifier<T, K, \"nullable\"> extends true ? K : never]: null | InferPrimitive<T[K]>\n }>;\n\ntype InferCompiledCreateSchema<T> = CoalesceEmpty<{\n [K in keyof T as IsPlainCreateProperty<T, K> extends true ? K : never]: InferPrimitive<T[K]>\n}, {\n [K in keyof T as HasModifier<T, K, \"optional\"> extends true ? K : never]?: InferPrimitive<T[K]>\n }, {\n [K in keyof T as HasModifier<T, K, \"default\"> extends true ? K : never]?: InferPrimitive<T[K]>\n }, {\n [K in keyof T as HasModifier<T, K, \"nullable\"> extends true ? K : never]: null | InferPrimitive<T[K]>\n }>;\n\ntype IsEmptyObject<T> = keyof T extends never ? true : false;\ntype CoalesceEmpty<T1 extends {}, T2 extends {}, T3 extends {}, T4 extends {}> = (IsEmptyObject<T1> extends true ? {} : T1) & (IsEmptyObject<T2> extends true ? {} : T2) & (IsEmptyObject<T3> extends true ? {} : T3) & (IsEmptyObject<T4> extends true ? {} : T4);\n","export const hash = (value: string, seed: number = 0) => {\n // From Stack Overflow\n // https://stackoverflow.com/a/52171480/3329760\n let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;\n\n for (let i = 0, ch: number; i < value.length; i++) {\n ch = value.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507);\n h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507);\n h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n\n return 4294967296 * (2097151 & h2) + (h1 >>> 0);\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\nexport const uuidv4 = (): 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))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export * from './builder';\nexport * from './table';\nexport * from './property/base';\nexport * from './property/modifiers';\nexport * from './property/types';\nexport * from './PropertyInfo';\nexport * from './types';"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema/index.js","sources":["webpack://@routier/core/./src/codegen/SlotPath.ts","webpack://@routier/core/./src/codegen/blocks.ts","webpack://@routier/core/./src/codegen/handlers/CloneHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/CompareHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/CompareIdsHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/DeserializeHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/EnableChangeTrackingHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/EnrichmentHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/FreezeHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/HashHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/HashTypeHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/IdSelectorHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/MergeHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/PrepareHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/SerializeHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/StripHandlerBuilder.ts","webpack://@routier/core/./src/codegen/handlers/clone/CloneArrayHandler.ts","webpack://@routier/core/./src/codegen/handlers/clone/CloneObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/clone/CloneValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/compare/CompareArrayHandler.ts","webpack://@routier/core/./src/codegen/handlers/compare/CompareDateHandler.ts","webpack://@routier/core/./src/codegen/handlers/compare/CompareObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/compare/CompareValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/compareIds/CompareIdsKeyHandler.ts","webpack://@routier/core/./src/codegen/handlers/deserialize/DeserializeComputedValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/deserialize/DeserializeDateHandler.ts","webpack://@routier/core/./src/codegen/handlers/deserialize/DeserializeDeserializerHandler.ts","webpack://@routier/core/./src/codegen/handlers/deserialize/DeserializeFunctionHandler.ts","webpack://@routier/core/./src/codegen/handlers/deserialize/DeserializeObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/deserialize/DeserializeValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/enableChangeTracking/EnableChangeTrackingObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/enableChangeTracking/EnableChangeTrackingPrimitiveValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentComputedValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentDefaultFunctionHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentDefaultValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentFunctionHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentNullableObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentObjectIdentityHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentPrimitiveHandler.ts","webpack://@routier/core/./src/codegen/handlers/enrichment/EnrichmentPrimitiveIdentityHandler.ts","webpack://@routier/core/./src/codegen/handlers/freeze/FreezeObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/freeze/FreezePrimitiveValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/hash/HashComputedValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/hash/HashDateHandler.ts","webpack://@routier/core/./src/codegen/handlers/hash/HashFunctionHandler.ts","webpack://@routier/core/./src/codegen/handlers/hash/HashIdentityHandler.ts","webpack://@routier/core/./src/codegen/handlers/hash/HashKeyHandler.ts","webpack://@routier/core/./src/codegen/handlers/hash/HashValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/hashType/HashTypeValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/idSelector/IdSelectorValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/merge/MergeComputedValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/merge/MergeDefaultFunctionHandler.ts","webpack://@routier/core/./src/codegen/handlers/merge/MergeDefaultValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/merge/MergeFunctionHandler.ts","webpack://@routier/core/./src/codegen/handlers/merge/MergePrimitiveHandler.ts","webpack://@routier/core/./src/codegen/handlers/prepare/PrepareComputedValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/prepare/PrepareFunctionHandler.ts","webpack://@routier/core/./src/codegen/handlers/prepare/PrepareIdentityHandler.ts","webpack://@routier/core/./src/codegen/handlers/prepare/PrepareKeyHandler.ts","webpack://@routier/core/./src/codegen/handlers/prepare/PrepareObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/prepare/PrepareValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/serialize/SerializeDateHandler.ts","webpack://@routier/core/./src/codegen/handlers/serialize/SerializeFunctionHandler.ts","webpack://@routier/core/./src/codegen/handlers/serialize/SerializeObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/serialize/SerializeSerializerHandler.ts","webpack://@routier/core/./src/codegen/handlers/serialize/SerializeValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/strip/StripIdentityHandler.ts","webpack://@routier/core/./src/codegen/handlers/strip/StripKeyHandler.ts","webpack://@routier/core/./src/codegen/handlers/strip/StripObjectHandler.ts","webpack://@routier/core/./src/codegen/handlers/strip/StripValueHandler.ts","webpack://@routier/core/./src/codegen/handlers/types.ts","webpack://@routier/core/./src/codegen/utils.ts","webpack://@routier/core/./src/errors/SchemaError.ts","webpack://@routier/core/./src/performance/index.ts","webpack://@routier/core/./src/schema/PropertyInfo.ts","webpack://@routier/core/./src/schema/SchemaDefinition.ts","webpack://@routier/core/./src/schema/builder.ts","webpack://@routier/core/./src/schema/communication/broadcast.ts","webpack://@routier/core/./src/schema/property/base/SchemaBase.ts","webpack://@routier/core/./src/schema/property/base/index.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaDefault.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaDeserialize.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaDistinct.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaFrom.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaIdentity.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaIndex.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaKey.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaNullable.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaOptional.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaReadonly.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaSerialize.ts","webpack://@routier/core/./src/schema/property/modifiers/SchemaTracked.ts","webpack://@routier/core/./src/schema/property/modifiers/index.ts","webpack://@routier/core/./src/schema/property/types/SchemaArray.ts","webpack://@routier/core/./src/schema/property/types/SchemaBoolean.ts","webpack://@routier/core/./src/schema/property/types/SchemaDate.ts","webpack://@routier/core/./src/schema/property/types/SchemaNumber.ts","webpack://@routier/core/./src/schema/property/types/SchemaObject.ts","webpack://@routier/core/./src/schema/property/types/SchemaString.ts","webpack://@routier/core/./src/schema/property/types/index.ts","webpack://@routier/core/./src/schema/table/SchemaComputed.ts","webpack://@routier/core/./src/schema/table/SchemaFunction.ts","webpack://@routier/core/./src/schema/table/index.ts","webpack://@routier/core/./src/schema/types.ts","webpack://@routier/core/./src/utilities/strings.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/webpack/runtime/make_namespace_object","webpack://@routier/core/./src/schema/index.ts"],"sourcesContent":["export class SlotPath {\n\n private _path: string[];\n\n get path() {\n return [...this._path]\n }\n\n constructor(...pathLike: string[]) {\n this._path = pathLike;\n }\n\n push(...pathLike: string[]) {\n this._path.push(...pathLike);\n }\n\n get(up: number = 0) {\n return this._path.slice(0, this._path.length - up).join(\".\")\n }\n}","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 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}","import { CloneArrayHandler } from \"./clone/CloneArrayHandler\";\nimport { CloneObjectHandler } from \"./clone/CloneObjectHandler\";\nimport { CloneValueHandler } from \"./clone/CloneValueHandler\";\n\n/// Purpose: \nexport class CloneHandlerBuilder {\n\n build() {\n const handler = new CloneObjectHandler();\n handler\n .setNext(new CloneValueHandler())\n .setNext(new CloneArrayHandler());\n\n return handler;\n }\n}","import { CompareArrayHandler } from \"./compare/CompareArrayHandler\";\nimport { CompareDateHandler } from \"./compare/CompareDateHandler\";\nimport { CompareObjectHandler } from \"./compare/CompareObjectHandler\";\nimport { CompareValueHandler } from \"./compare/CompareValueHandler\";\n\nexport class CompareHandlerBuilder {\n\n build() {\n const handler = new CompareObjectHandler();\n handler.setNext(new CompareArrayHandler())\n .setNext(new CompareDateHandler())\n .setNext(new CompareValueHandler());\n\n return handler;\n }\n}","import { CompareIdsKeyHandler } from \"./compareIds/CompareIdsKeyHandler\";\n\nexport class CompareIdsHandlerBuilder {\n\n build() {\n const handler = new CompareIdsKeyHandler();\n\n return handler;\n }\n}","import { DeserializeObjectHandler } from \"./deserialize/DeserializeObjectHandler\";\nimport { DeserializeValueHandler } from \"./deserialize/DeserializeValueHandler\";\nimport { DeserializeDateHandler } from \"./deserialize/DeserializeDateHandler\";\nimport { DeserializeComputedValueHandler } from \"./deserialize/DeserializeComputedValueHandler\";\nimport { DeserializeFunctionHandler } from \"./deserialize/DeserializeFunctionHandler\";\nimport { DeserializeDeserializerHandler } from \"./deserialize/DeserializeDeserializerHandler\";\n\n/// Purpose: \nexport class DeserializeHandlerBuilder {\n\n build() {\n const handler = new DeserializeObjectHandler();\n handler\n .setNext(new DeserializeDeserializerHandler())\n .setNext(new DeserializeComputedValueHandler())\n .setNext(new DeserializeFunctionHandler())\n .setNext(new DeserializeValueHandler())\n .setNext(new DeserializeDateHandler());\n\n return handler;\n }\n}","import { EnableChangeTrackingObjectHandler } from \"./enableChangeTracking/EnableChangeTrackingObjectHandler\";\nimport { EnableChangeTrackingPrimitiveValueHandler } from \"./enableChangeTracking/EnableChangeTrackingPrimitiveValueHandler\";\n\n/// Purpose: \nexport class EnableChangeTrackingHandlerBuilder {\n\n build() {\n const handler = new EnableChangeTrackingObjectHandler();\n handler.setNext(new EnableChangeTrackingPrimitiveValueHandler());\n\n return handler;\n }\n}","import { EnrichmentNullableObjectHandler } from \"./enrichment/EnrichmentNullableObjectHandler\";\nimport { EnrichmentObjectHandler } from \"./enrichment/EnrichmentObjectHandler\";\nimport { EnrichmentObjectIdentityHandler } from \"./enrichment/EnrichmentObjectIdentityHandler\";\nimport { EnrichmentPrimitiveIdentityHandler } from \"./enrichment/EnrichmentPrimitiveIdentityHandler\";\nimport { EnrichmentPrimitiveHandler } from './enrichment/EnrichmentPrimitiveHandler';\nimport { EnrichmentFunctionHandler } from './enrichment/EnrichmentFunctionHandler';\nimport { EnrichmentDefaultValueHandler } from './enrichment/EnrichmentDefaultValueHandler';\nimport { EnrichmentDefaultFunctionHandler } from './enrichment/EnrichmentDefaultFunctionHandler';\nimport { EnrichmentComputedValueHandler } from './enrichment/EnrichmentComputedValueHandler';\n\n/// Purpose: \nexport class EnrichmentHandlerBuilder {\n\n build() {\n const handler = new EnrichmentPrimitiveIdentityHandler();\n\n handler.setNext(new EnrichmentObjectIdentityHandler())\n .setNext(new EnrichmentObjectHandler())\n .setNext(new EnrichmentNullableObjectHandler())\n .setNext(new EnrichmentFunctionHandler())\n .setNext(new EnrichmentDefaultValueHandler())\n .setNext(new EnrichmentDefaultFunctionHandler())\n .setNext(new EnrichmentComputedValueHandler())\n .setNext(new EnrichmentPrimitiveHandler());\n\n return handler;\n }\n}","import { FreezePrimitiveValueHandler } from \"./freeze/FreezePrimitiveValueHandler\";\nimport { FreezeObjectHandler } from \"./freeze/FreezeObjectHandler\";\n\n/// Purpose: \nexport class FreezeHandlerBuilder {\n\n build() {\n const handler = new FreezeObjectHandler();\n handler.setNext(new FreezePrimitiveValueHandler());\n\n return handler;\n }\n}","import { HashKeyHandler } from \"./hash/HashKeyHandler\";\nimport { HashValueHandler } from \"./hash/HashValueHandler\";\nimport { HashDateHandler } from \"./hash/HashDateHandler\";\nimport { HashIdentityHandler } from \"./hash/HashIdentityHandler\";\nimport { HashFunctionHandler } from \"./hash/HashFunctionHandler\";\nimport { HashComputedValueHandler } from \"./hash/HashComputedValueHandler\";\n\n/// Purpose: \n// Should ignore Id's and Identities for type Object because we want \n// to comare a new addition with what was saved in the database\nexport class HashHandlerBuilder {\n\n build() {\n const handler = new HashKeyHandler();\n\n handler\n .setNext(new HashComputedValueHandler())\n .setNext(new HashFunctionHandler())\n .setNext(new HashIdentityHandler())\n .setNext(new HashDateHandler())\n .setNext(new HashValueHandler());\n\n return handler;\n }\n}","import { HashTypeValueHandler } from \"./hashType/HashTypeValueHandler\";\n\n/// Purpose: \nexport class HashTypeHandlerBuilder {\n\n build() {\n const handler = new HashTypeValueHandler();\n\n return handler;\n }\n}","import { IdSelectorValueHandler } from \"./idSelector/IdSelectorValueHandler\";\n/// Purpose: \nexport class IdSelectorHandlerBuilder {\n\n build() {\n const handler = new IdSelectorValueHandler();\n\n return handler;\n }\n}","import { MergeDefaultFunctionHandler } from \"./merge/MergeDefaultFunctionHandler\";\nimport { MergePrimitiveHandler } from \"./merge/MergePrimitiveHandler\";\nimport { MergeComputedValueHandler } from \"./merge/MergeComputedValueHandler\";\nimport { MergeDefaultValueHandler } from \"./merge/MergeDefaultValueHandler\";\nimport { MergeFunctionHandler } from \"./merge/MergeFunctionHandler\";\n\n/// Purpose: Should recompute computed properties\nexport class MergeHandlerBuilder {\n\n build() {\n const handler = new MergeDefaultFunctionHandler();\n handler.setNext(new MergeDefaultValueHandler())\n .setNext(new MergeFunctionHandler())\n .setNext(new MergeComputedValueHandler())\n .setNext(new MergePrimitiveHandler());\n\n return handler;\n }\n}","import { PrepareIdentityHandler } from \"./prepare/PrepareIdentityHandler\";\nimport { PrepareKeyHandler } from \"./prepare/PrepareKeyHandler\";\nimport { PrepareValueHandler } from \"./prepare/PrepareValueHandler\";\nimport { PrepareObjectHandler } from \"./prepare/PrepareObjectHandler\";\nimport { PrepareComputedValueHandler } from \"./prepare/PrepareComputedValueHandler\";\nimport { PrepareFunctionHandler } from \"./prepare/PrepareFunctionHandler\";\n\n/// Purpose: Called before we save entities to the database. Responsible for cleaning up\n/// an entity before it is sent to the plugin\nexport class PrepareHandlerBuilder {\n\n build() {\n const handler = new PrepareIdentityHandler();\n handler\n .setNext(new PrepareFunctionHandler())\n .setNext(new PrepareComputedValueHandler())\n .setNext(new PrepareKeyHandler())\n .setNext(new PrepareObjectHandler())\n .setNext(new PrepareValueHandler());\n\n return handler;\n }\n}","import { SerializeDateHandler } from \"./serialize/SerializeDateHandler\";\nimport { SerializeObjectHandler } from \"./serialize/SerializeObjectHandler\";\nimport { SerializeValueHandler } from \"./serialize/SerializeValueHandler\";\nimport { SerializeSerializerHandler } from \"./serialize/SerializeSerializerHandler\";\nimport { SerializeFunctionHandler } from \"./serialize/SerializeFunctionHandler\";\n\n/// Purpose: \nexport class SerializeHandlerBuilder {\n\n build() {\n const handler = new SerializeSerializerHandler();\n handler\n .setNext(new SerializeFunctionHandler())\n .setNext(new SerializeDateHandler())\n .setNext(new SerializeValueHandler())\n .setNext(new SerializeObjectHandler());\n\n return handler;\n }\n}","import { StripObjectHandler } from \"./strip/StripObjectHandler\";\nimport { StripValueHandler } from \"./strip/StripValueHandler\";\nimport { StripKeyHandler } from \"./strip/StripKeyHandler\";\nimport { StripIdentityHandler } from \"./strip/StripIdentityHandler\";\n\n/// Purpose: \nexport class StripHandlerBuilder {\n\n build() {\n const handler = new StripIdentityHandler();\n\n handler.setNext(new StripKeyHandler())\n .setNext(new StripObjectHandler())\n .setNext(new StripValueHandler());\n\n return handler;\n }\n}","import { CodeBuilder, IfBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class CloneArrayHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Array) {\n\n if (property.isNullable || property.isOptional) {\n // Child properties will take care of this\n return builder;\n }\n\n const entitySelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n\n if (property.parent == null) {\n\n const resultAssignmentPath = property.getAssignmentPath({ parent: \"result\" });\n const slot = builder.get<SlotBlock>(\"if\");\n\n slot.if(`${entitySelectorPath} != null`).appendBody(`${resultAssignmentPath} = [...${entitySelectorPath}]`);\n return builder;\n }\n // slotPath.push(...property.getParentPathArray());\n // const nestedObjectBuilder = builder.get<ObjectBuilder>(slotPath.get());\n // nestedObjectBuilder.nested(property.name, property.name)\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class CloneObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object) {\n\n // Child properties will take care of this\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, IfBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class CloneValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type != SchemaTypes.Object && property.type != SchemaTypes.Array) {\n const slot = builder.get<SlotBlock>(\"if\");\n const entitySelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n const resultAssignmentPath = property.getAssignmentPath({ parent: \"result\" });\n\n if (property.parent == null) {\n // we are a first level property\n slot.if(`${entitySelectorPath} != null`).appendBody(`${resultAssignmentPath} = ${entitySelectorPath}`);\n return builder;\n }\n\n // Second level or more property\n // Need to ensure parent is assigned\n const propertyParentPath = [\"result\", ...property.getParentPathArray()]\n const ifBuilder = new IfBuilder(`${propertyParentPath.join(\"?.\")} == null`).appendBody(`${propertyParentPath.join(\".\")} = {};`);\n\n slot.if(`${entitySelectorPath} != null`).appendBody(ifBuilder.toString()).appendBody(`${resultAssignmentPath} = ${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { AndBuilder, CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class CompareArrayHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Array) {\n let compare = builder.getOrDefault<AndBuilder>(\"result.variable.compare\");\n const leftCompare = property.getSelectrorPath({ parent: \"a\" });\n const rightCompare = property.getSelectrorPath({ parent: \"b\" });\n\n if (compare == null) {\n compare = builder.get<SlotBlock>(\"result\")\n .assign(\"const result\", { name: \"variable\" })\n .and(`JSON.stringify(${leftCompare}) === JSON.stringify(${rightCompare})`, { name: \"compareArray\" });\n return builder;\n }\n\n compare.and(`JSON.stringify(${leftCompare}) === JSON.stringify(${rightCompare})`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { AndBuilder, CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class CompareDateHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Date) {\n let compare = builder.getOrDefault<AndBuilder>(\"result.variable.compare\");\n const leftCompare = property.getSelectrorPath({ parent: \"a\" });\n const rightCompare = property.getSelectrorPath({ parent: \"b\" });\n\n if (compare == null) {\n compare = builder.get<SlotBlock>(\"result\")\n .assign(\"const result\", { name: \"variable\" })\n .and(`${leftCompare}?.toISOString() === ${rightCompare}?.toISOString()`, { name: \"compareDate\" });\n return builder;\n }\n\n compare.and(`${leftCompare}?.toISOString() === ${rightCompare}?.toISOString()`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class CompareObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { AndBuilder, CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class CompareValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type != SchemaTypes.Object) {\n let compare = builder.getOrDefault<AndBuilder>(\"result.variable.compare\");\n const leftCompare = property.getSelectrorPath({ parent: \"a\" });\n const rightCompare = property.getSelectrorPath({ parent: \"b\" });\n\n if (compare == null) {\n compare = builder.get<SlotBlock>(\"result\")\n .assign(\"const result\", { name: \"variable\" })\n .and(`${leftCompare} === ${rightCompare}`, { name: \"compare\" });\n return builder;\n }\n\n compare.and(`${leftCompare} === ${rightCompare}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class CompareIdsKeyHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<unknown>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isKey) {\n const slot = builder.get<SlotBlock>(\"ifs\");\n const leftCompare = property.getSelectrorPath({ parent: \"a\" });\n const rightCompare = property.getSelectrorPath({ parent: \"b\" });\n\n slot.if(`${leftCompare} != ${rightCompare}`).appendBody(\"return false;\");\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class DeserializeComputedValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n // Do nothing with the value\n if (property.functionBody != null && property.type === SchemaTypes.Computed && property.isUnmapped === true) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ContainerBlock, ObjectBuilder } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\n/**\n * Handles converting a string value from a database to a Date value\n */\nexport class DeserializeDateHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Date) {\n const slotPath = new SlotPath(\"result.variable.object\");\n let objectBuilder = builder.get<ObjectBuilder>(slotPath.get());\n const entitySelectorPath = property.getSelectrorPath({ parent: \"unserialized\" });\n const entityAssignmentPath = property.getAssignmentPath({ parent: \"entity\", useFromPropertyName: property.isRenamed });\n const assignment = `${property.name}: typeof ${entitySelectorPath} === \"string\" ? new Date(${entitySelectorPath}) : ${entitySelectorPath}`;\n\n // if it is nullable or optional, assign in an if block, otherwise we \n // could unintentionally assign null/undefined to a property that does not exist\n if (property.isOptional || property.isNullable) {\n const ifAssignment = `${entityAssignmentPath} = typeof ${entitySelectorPath} === \"string\" ? new Date(${entitySelectorPath}) : ${entitySelectorPath}`;\n const rootPath = new SlotPath(\"if\");\n builder.get<ContainerBlock>(rootPath.get()).if(`${entitySelectorPath} != null`).appendBody(ifAssignment);\n return;\n }\n\n // A date cannot be a nested object, just do the assignment\n if (property.parent == null) {\n objectBuilder.property(assignment);\n\n return builder;\n }\n\n slotPath.push(...property.getParentPathArray());\n const nestedObjectBuilder = builder.get<ObjectBuilder>(slotPath.get());\n nestedObjectBuilder.property(assignment)\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class DeserializeDeserializerHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.valueDeserializer != null) {\n let objectBuilder = builder.getOrDefault<ObjectBuilder>(\"result.variable.object\");\n const assignmentBuilder = builder.getOrDefault<SlotBlock>(\"functions\");\n const entitySelectorPath = property.getSelectrorPath({ parent: \"unserialized\" });\n\n if (objectBuilder == null) {\n objectBuilder = builder.get<SlotBlock>(\"result\")\n .assign(\"const entity\", { name: \"variable\" })\n .object({ name: \"object\" });\n }\n\n const defaultFunctionWithParameters = this.toNamedFunction(property.valueDeserializer.toString(), assignmentBuilder);\n defaultFunctionWithParameters.builder.parameters(...defaultFunctionWithParameters.parameters.map((_, i) => ({ name: defaultFunctionWithParameters.parameters[i], callName: entitySelectorPath })));\n\n if (property.parent == null) {\n objectBuilder.property(`${property.name}: ${defaultFunctionWithParameters.builder.toCallable()}`);\n return builder;\n }\n\n const slotPath = new SlotPath(...property.getParentPathArray());\n objectBuilder = objectBuilder.get<ObjectBuilder>(slotPath.get());\n objectBuilder.property(`${property.name}: ${defaultFunctionWithParameters.builder.toCallable()}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class DeserializeFunctionHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Function) {\n // Functions are always unmapped\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class DeserializeObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object) {\n const slotPath = new SlotPath(\"result.variable.object\");\n let objectBuilder = builder.get<ObjectBuilder>(slotPath.get());\n\n if (property.parent == null) {\n objectBuilder.nested(property.getResolvedName(), property.name)\n\n return builder;\n }\n\n slotPath.push(...property.getParentPathArray());\n const nestedObjectBuilder = builder.get<ObjectBuilder>(slotPath.get());\n nestedObjectBuilder.nested(property.getResolvedName(), property.name)\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class DeserializeValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type != SchemaTypes.Object && property.type != SchemaTypes.Date) {\n let objectBuilder = builder.getOrDefault<ObjectBuilder>(\"result.variable.object\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"unserialized\", useFromPropertyName: property.isRenamed });\n\n if (objectBuilder == null) {\n objectBuilder = builder.get<SlotBlock>(\"result\")\n .assign(\"const entity\", { name: \"variable\" })\n .object({ name: \"object\" });\n }\n\n if (property.parent == null) {\n objectBuilder.property(`${property.name}: ${entitySelectorPath}`);\n return builder;\n }\n\n const slotPath = new SlotPath(...property.getParentPathArray());\n objectBuilder = objectBuilder.get<ObjectBuilder>(slotPath.get());\n objectBuilder.property(`${property.name}: ${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class EnableChangeTrackingObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object) {\n const assignmentSlot = builder.get<SlotBlock>(\"assignment\");\n const childSelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n const childAssignmentPath = property.getAssignmentPath({ parent: \"entity\" });\n\n assignmentSlot.if(`${childSelectorPath} != null`).appendBody(`${childAssignmentPath} = enableChangeTracking(${childAssignmentPath});`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class EnableChangeTrackingPrimitiveValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type !== SchemaTypes.Object) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, FunctionFactoryBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class EnrichmentComputedValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Computed) {\n\n const parameterNames: string[] = [\"enriched\", \"collectionName\"];\n\n if (property.injected != null) {\n\n const factory = builder.get<FunctionFactoryBuilder>(\"factory\");\n const parameter = factory.createParameter(property.injected);\n factory.parameters(parameter);\n\n parameterNames.push(parameter.name);\n }\n\n const declarationsSlot = builder.get<SlotBlock>(\"factory.function.declarations\");\n const defaultFunctionWithParameters = this.toNamedFunction(property.functionBody.toString(), declarationsSlot);\n\n defaultFunctionWithParameters.builder.parameters(...parameterNames.map((w, i) => ({ name: defaultFunctionWithParameters.parameters[i], callName: w })));\n\n\n const ifsSlot = builder.get<SlotBlock>(\"factory.function.ifs\");\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"enriched\" });\n ifsSlot.if(`${enrichedAssignmentPath} == null`).appendBody(`${enrichedAssignmentPath} = ${defaultFunctionWithParameters.builder.toCallable()}`);\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, FunctionFactoryBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class EnrichmentDefaultFunctionHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.defaultValue != null && typeof property.defaultValue === \"function\") {\n\n this.setEnrichedProperty(property, builder);\n\n // we need to add the call for this function too, want to create an if\n const declarationsSlot = builder.get<SlotBlock>(\"factory.function.declarations\");\n\n if (property.injected != null) {\n\n const factory = builder.get<FunctionFactoryBuilder>(\"factory\");\n\n if (factory == null) {\n throw new Error(\"Error building enricher, could not find slot for factory\")\n }\n\n const parameter = factory.createParameter(property.injected);\n factory.parameters(parameter);\n\n const defaultFunctionWithParameters = this.toNamedFunction(property.defaultValue.toString(), declarationsSlot);\n // This is ok, defaults can only inject one parameter anyways\n defaultFunctionWithParameters.builder.parameters(...defaultFunctionWithParameters.parameters.map(w => ({ name: w, callName: parameter.name })));\n\n\n const ifsSlot = builder.get<SlotBlock>(\"factory.function.ifs\");\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"enriched\" });\n ifsSlot.if(`${enrichedAssignmentPath} == null`).appendBody(`${enrichedAssignmentPath} = ${defaultFunctionWithParameters.builder.toCallable()}`);\n\n return builder;\n }\n\n const defaultFunction = this.toNamedFunction(property.defaultValue.toString(), declarationsSlot);\n\n const ifsSlot = builder.get<SlotBlock>(\"factory.function.ifs\");\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"enriched\" });\n ifsSlot.if(`${enrichedAssignmentPath} == null`).appendBody(`${enrichedAssignmentPath} = ${defaultFunction.builder.toCallable()}`);\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class EnrichmentDefaultValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.defaultValue != null && typeof property.defaultValue !== \"function\") {\n\n this.setEnrichedProperty(property, builder);\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, FunctionFactoryBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class EnrichmentFunctionHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Function) {\n\n const parameterNames: string[] = [\"enriched\", \"collectionName\"];\n\n if (property.injected != null) {\n\n const factory = builder.get<FunctionFactoryBuilder>(\"factory\");\n const parameter = factory.createParameter(property.injected);\n factory.parameters(parameter);\n\n parameterNames.push(parameter.name);\n }\n\n\n const declarationsSlot = builder.get<SlotBlock>(\"factory.function.declarations\");\n // Unwrap the functions to removing currying\n const defaultFunctionWithParameters = this.toNamedFunction(property.functionBody.toString(), declarationsSlot);\n\n defaultFunctionWithParameters.builder.parameters(...parameterNames.map((w, i) => ({ name: defaultFunctionWithParameters.parameters[i], callName: w })));\n\n const slot = builder.get<SlotBlock>(\"factory.function.assignment\");\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"enriched\" });\n\n slot.assign(enrichedAssignmentPath).value(defaultFunctionWithParameters.builder.toCallable());\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class EnrichmentNullableObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object && (property.isNullable || property.isOptional)) {\n\n const slotPath = new SlotPath(\"factory\", \"function\", \"enriched\", \"object\", \"enriched\");\n const nestedSlotPath = this.buildSlotPath(property, slotPath);\n\n // Generate null check for current level using parent relationships\n const entityPath = property.getSelectrorPath({ parent: \"entity\", assignmentType: \"FORCE_NULLABLE_OR_OPTIONAL\" });\n const enrichedPath = property.getAssignmentPath({ parent: \"enriched\" });\n\n const ifsSlot = builder.get<SlotBlock>(\"factory.function.ifs\");\n\n if (ifsSlot == null) {\n throw new Error(\"Error building enricher, could not find slot for factory.function.ifs\")\n }\n\n\n ifsSlot.if(`${entityPath} != null`).appendBody(`${enrichedPath} = enableChangeTracking(${enrichedPath} || {}, \"${property.name}\");`);\n\n let enriched = builder.getOrDefault<ObjectBuilder>(nestedSlotPath.get());\n\n if (enriched == null) {\n const enrichedSlot = builder.get<ObjectBuilder>(slotPath.get());\n\n if (enrichedSlot == null) {\n throw new Error(`Error building enricher, could not find slot for ${slotPath.get()}`)\n }\n\n enriched = enrichedSlot.nested(property.name, `[${enrichedPath}]`);\n }\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class EnrichmentObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object && (property.isNullable || property.isOptional) === false) {\n\n const slotPath = new SlotPath(\"factory\", \"function\", \"enriched\", \"object\", \"enriched\");\n const nestedSlotPath = this.buildSlotPath(property, slotPath);\n\n // Generate null check for current level using parent relationships\n const enrichedPath = property.getAssignmentPath({ parent: \"enriched\" });\n\n const slot = builder.get<SlotBlock>(\"factory.function.assignment\");\n\n slot.assign(enrichedPath).value(`enableChangeTracking(${enrichedPath} || {}, \"${property.name}\")`)\n\n let enriched = builder.getOrDefault<ObjectBuilder>(nestedSlotPath.get());\n\n if (enriched == null) {\n const enrichedSlot = builder.get<ObjectBuilder>(slotPath.get());\n\n if (enrichedSlot == null) {\n throw new Error(`Error building enricher, could not find slot for ${slotPath.get()}`)\n }\n\n enriched = enrichedSlot.nested(property.name, `[${enrichedPath}]`);\n }\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class EnrichmentObjectIdentityHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isIdentity === true && property.type == SchemaTypes.Object) {\n // do nothing right now\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class EnrichmentPrimitiveHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n this.setEnrichedProperty(property, builder);\n\n return builder;\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class EnrichmentPrimitiveIdentityHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isIdentity === true && property.type != SchemaTypes.Object) {\n const selectorPath = property.getSelectrorPath({ parent: \"entity\", assignmentType: \"FORCE_NULLABLE_OR_OPTIONAL\" });\n const slot = builder.get<SlotBlock>(\"factory.function.ifs\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\" });\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"enriched\" });\n\n slot.if(`${selectorPath} != null`).appendBody(`${enrichedAssignmentPath} = ${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class FreezeObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object) {\n const assignmentSlot = builder.get<SlotBlock>(\"assignment\");\n const childSelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n const childAssignmentPath = property.getAssignmentPath({ parent: \"entity\" });\n\n assignmentSlot.if(`${childSelectorPath} != null`).unshiftBody(`${childAssignmentPath} = Object.freeze(${childAssignmentPath});`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class FreezePrimitiveValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type !== SchemaTypes.Object) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class HashComputedValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Computed && property.isUnmapped === true) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock, StringBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class HashDateHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Date) {\n let stringBuilder = builder.getOrDefault<StringBuilder>(\"hash-object-return.variable.string\");\n const entitySelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n\n if (stringBuilder == null) {\n stringBuilder = builder.get<SlotBlock>(\"hash-object-return\")\n .assign(\"const result\", { name: \"variable\" })\n .string(\"template\", { name: \"string\" });\n }\n\n stringBuilder.append(\"${stringifyDate(\" + entitySelectorPath + \")}\")\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class HashFunctionHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Function) {\n // Functions are always unmapped\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class HashIdentityHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isIdentity === true) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock, StringBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class HashKeyHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isKey === true) {\n let stringBuilder = builder.getOrDefault<StringBuilder>(\"hash-id-if.if-body.variable.string\");\n const entitySelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n\n if (stringBuilder == null) {\n stringBuilder = builder.get<SlotBlock>(\"hash-id-if.if-body\")\n .assign(\"const result\", { name: \"variable\" })\n .string(\"template\", { name: \"string\" });\n }\n\n stringBuilder.append(\"${\" + entitySelectorPath + \"}\")\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock, StringBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class HashValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type !== SchemaTypes.Object) {\n let stringBuilder = builder.getOrDefault<StringBuilder>(\"hash-object-return.variable.string\");\n const entitySelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n\n if (stringBuilder == null) {\n stringBuilder = builder.get<SlotBlock>(\"hash-object-return\")\n .assign(\"const result\", { name: \"variable\" })\n .string(\"template\", { name: \"string\" });\n }\n\n stringBuilder.append(\"${\" + entitySelectorPath + \"}\")\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class HashTypeValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isKey && property.isIdentity) {\n const slot = builder.get<SlotBlock>(\"ifs\");\n const entitySelectorPath = property.getSelectrorPath({ parent: \"entity\" });\n\n slot.if(`${entitySelectorPath} == null`).appendBody(`return \"Object\"`);\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { ArrayBuilder, CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class IdSelectorValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isKey) {\n let arrayBuilder = builder.getOrDefault<ArrayBuilder>(\"result.variable.array\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\" });\n\n if (arrayBuilder == null) {\n arrayBuilder = builder.get<SlotBlock>(\"result\")\n .variable(\"result\", { name: \"variable\" })\n .array(`${entitySelectorPath}`, { name: \"array\" });\n\n return builder;\n }\n\n\n arrayBuilder.append(`${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, FunctionFactoryBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class MergeComputedValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Computed) {\n const parameterNames: string[] = [\"source\", \"collectionName\"];\n\n if (property.injected != null) {\n\n const factory = builder.get<FunctionFactoryBuilder>(\"factory\");\n const parameter = factory.createParameter(property.injected);\n factory.parameters(parameter);\n\n parameterNames.push(parameter.name);\n }\n\n const declarationsSlot = builder.get<SlotBlock>(\"factory.function.header\");\n const defaultFunctionWithParameters = this.toNamedFunction(property.functionBody.toString(), declarationsSlot);\n\n defaultFunctionWithParameters.builder.parameters(...parameterNames.map((w, i) => ({ name: defaultFunctionWithParameters.parameters[i], callName: w })));\n\n const slot = builder.get<SlotBlock>(\"factory.function.assignments\");\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"destination\" });\n\n // We want to recompute the value always in case there are changes\n slot.assign(enrichedAssignmentPath).value(defaultFunctionWithParameters.builder.toCallable());\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, FunctionFactoryBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class MergeDefaultFunctionHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n // we only want this to run if the value for the property is null\n // we are changing merge to be more like enrich so we can handle injections\n // we may need to change more. Need to move towards factories\n if (property.defaultValue != null && typeof property.defaultValue === \"function\") {\n const defaultFunctionParameters: string[] = [];\n\n if (property.injected != null) {\n const factory = builder.get<FunctionFactoryBuilder>(\"factory\");\n const parameter = factory.createParameter(property.injected);\n factory.parameters(parameter);\n\n defaultFunctionParameters.push(parameter.name);\n }\n\n const ifsSlot = builder.get<SlotBlock>(\"factory.function.ifs\");\n // we only want to run if the destination is null\n const selectorPath = property.getSelectrorPath({ parent: \"destination\" });\n const assignmentPath = property.getAssignmentPath({ parent: \"destination\" });\n\n const declarationsSlot = builder.get<SlotBlock>(\"factory.function.header\");\n const defaultFunctionWithParameters = this.toNamedFunction(property.defaultValue.toString(), declarationsSlot);\n\n defaultFunctionWithParameters.builder.parameters(...defaultFunctionParameters.map((w, i) => ({ name: defaultFunctionWithParameters.parameters[i], callName: w })));\n\n\n ifsSlot.if(`${selectorPath} == null`).appendBody(`${assignmentPath} = ${defaultFunctionWithParameters.builder.toCallable()}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, FunctionFactoryBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class MergeDefaultValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.defaultValue != null && typeof property.defaultValue !== \"function\") {\n const defaultFunctionParameters: string[] = [];\n\n if (property.injected != null) {\n const factory = builder.get<FunctionFactoryBuilder>(\"factory\");\n const parameter = factory.createParameter(property.injected);\n factory.parameters(parameter);\n\n defaultFunctionParameters.push(parameter.name);\n }\n\n const ifsSlot = builder.get<SlotBlock>(\"factory.function.ifs\");\n // we only want to run if the destination is null\n const selectorPath = property.getSelectrorPath({ parent: \"destination\" });\n const assignmentPath = property.getAssignmentPath({ parent: \"destination\" });\n\n ifsSlot.if(`${selectorPath} == null`).appendBody(`${assignmentPath} = ${typeof property.defaultValue === \"string\" ? `\"${property.defaultValue}\"` : property.defaultValue}`);\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class MergeFunctionHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Function) {\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class MergePrimitiveHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type != SchemaTypes.Object) {\n const selectorPath = property.getSelectrorPath({ parent: \"source\", assignmentType: \"FORCE_NULLABLE_OR_OPTIONAL\" });\n const slot = builder.get<SlotBlock>(\"factory.function.assignments\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"source\" });\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"destination\" });\n\n slot.if(`${selectorPath} != null`).appendBody(`${enrichedAssignmentPath} = ${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\n// Do nothing with the value\nexport class PrepareComputedValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Computed && property.isUnmapped === true) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class PrepareFunctionHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Function) {\n // Functions are always unmapped\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class PrepareIdentityHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isIdentity === true) {\n const selectorPath = property.getSelectrorPath({ parent: \"entity\", assignmentType: \"FORCE_NULLABLE_OR_OPTIONAL\" });\n const slot = builder.get<SlotBlock>(\"assignments\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\" });\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"result\" });\n\n slot.if(`${selectorPath} != null`).appendBody(`${enrichedAssignmentPath} = ${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class PrepareKeyHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isKey === true) {\n const selectorPath = property.getSelectrorPath({ parent: \"entity\", assignmentType: \"FORCE_NULLABLE_OR_OPTIONAL\" });\n const slot = builder.get<SlotBlock>(\"assignments\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\" });\n const enrichedAssignmentPath = property.getAssignmentPath({ parent: \"result\" });\n\n slot.if(`${selectorPath} != null`).appendBody(`${enrichedAssignmentPath} = ${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class PrepareObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object) {\n const slotPath = new SlotPath(\"result\", \"variable\", \"object\");\n let objectBuilder = builder.getOrDefault<ObjectBuilder>(slotPath.get());\n\n // There is a chance this is the first property we handle,\n // if that is the case, the main result variable will not be\n // constructed yet\n if (objectBuilder == null) {\n objectBuilder = builder.get<SlotBlock>(\"result\")\n .assign(\"const result\", { name: \"variable\" })\n .object({ name: \"object\" });\n }\n\n if (property.parent == null) {\n objectBuilder.nested(property.name, property.name)\n\n return builder;\n }\n\n slotPath.push(...property.getParentPathArray());\n const nestedObjectBuilder = builder.get<ObjectBuilder>(slotPath.get());\n nestedObjectBuilder.nested(property.name, property.name)\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class PrepareValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type != SchemaTypes.Object) {\n let objectBuilder = builder.getOrDefault<ObjectBuilder>(\"result.variable.object\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\" });\n\n if (objectBuilder == null) {\n objectBuilder = builder.get<SlotBlock>(\"result\")\n .assign(\"const result\", { name: \"variable\" })\n .object({ name: \"object\" });\n }\n\n // Remap the property to the name in the database if from is set\n const name = property.from != null ? property.from : property.name;\n\n if (property.parent == null) {\n objectBuilder.property(`${name}: ${entitySelectorPath}`);\n return builder;\n }\n\n const slotPath = new SlotPath(...property.getParentPathArray());\n objectBuilder = objectBuilder.get<ObjectBuilder>(slotPath.get());\n objectBuilder.property(`${name}: ${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ContainerBlock, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\n/**\n * Handles converting a Date value from JavaScript to a string value. Should handle remapping here because it is the lowest level in the code here.\n * Remapping higher up could break lower level code\n */\nexport class SerializeDateHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Date) {\n let objectBuilder = builder.get<SlotBlock>(\"if\");\n const entitySelectorPath = property.getSelectrorPath({ parent: \"entity\", useFromPropertyName: property.isRenamed });\n const entityAssignmentPath = property.getAssignmentPath({\n parent: \"result\"\n });\n const assignment = `${property.name}: ${entitySelectorPath} instanceof Date ? ${entitySelectorPath}.toISOString() : ${entitySelectorPath}`;\n\n // if it is nullable or optional, assign in an if block, otherwise we \n // could unintentionally assign null/undefined to a property that does not exist\n if (property.isOptional || property.isNullable) {\n const ifAssignment = `${entityAssignmentPath} = ${entitySelectorPath} instanceof Date ? ${entitySelectorPath}.toISOString() : ${entitySelectorPath}`;\n const rootPath = new SlotPath(\"if\");\n builder.get<ContainerBlock>(rootPath.get()).if(`${entitySelectorPath} != null`).appendBody(ifAssignment);\n return;\n }\n\n // A date cannot be a nested object, just do the assignment\n if (property.parent == null) {\n objectBuilder.if(`Object.hasOwn(entity, \"${property.name}\")`).appendBody(`${entityAssignmentPath} = ${entitySelectorPath}`)\n\n return builder;\n }\n\n // TODO: SOLVE THIS, IT IS CLOSE\n //const slotPath = new SlotPath(...property.getParentPathArray());\n // slotPath.push(...property.getParentPathArray());\n // const nestedObjectBuilder = builder.get<ObjectBuilder>(slotPath.get());\n // nestedObjectBuilder.property(assignment)\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class SerializeFunctionHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.functionBody != null && property.type === SchemaTypes.Function) {\n // Functions should not be serialized\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\nexport class SerializeObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object) {\n const slotPath = new SlotPath(\"assignments\");\n const childPath = property.getAssignmentPath({\n parent: \"result\"\n });\n\n if (property.isNullable || property.isOptional) {\n // Do nothing if it's nullable or optional as property assignments will check\n // and create if it does not exist. This way we can handle null/optional\n return builder;\n }\n\n const slot = builder.get<SlotBlock>(slotPath.get());\n slot.assign(`${childPath}`, { name: `[${childPath}]` }).value(\"{}\");\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class SerializeSerializerHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.valueSerializer != null) {\n const objectBuilder = builder.getOrDefault<SlotBlock>(\"if\");\n const assignmentBuilder = builder.getOrDefault<SlotBlock>(\"functions\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\", useFromPropertyName: property.isRenamed });\n const resultSelectorPath = property.getAssignmentPath({ parent: \"result\" });\n\n const defaultFunctionWithParameters = this.toNamedFunction(property.valueSerializer.toString(), assignmentBuilder);\n defaultFunctionWithParameters.builder.parameters(...defaultFunctionWithParameters.parameters.map((_, i) => ({ name: defaultFunctionWithParameters.parameters[i], callName: entitySelectorPath })));\n\n if (property.parent == null) {\n objectBuilder.if(`Object.hasOwn(entity, \"${property.name}\")`).appendBody(`${resultSelectorPath} = ${defaultFunctionWithParameters.builder.toCallable()}`)\n return builder;\n }\n\n // TODO: SOLVE THIS\n //const slotPath = new SlotPath(...property.getParentPathArray());\n\n // const slotPath = new SlotPath(...property.getParentPathArray());\n // objectBuilder = objectBuilder.get<ObjectBuilder>(slotPath.get());\n // objectBuilder.property(`${property.name}: ${defaultFunctionWithParameters.builder.toCallable()}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, IfBuilder, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class SerializeValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type != SchemaTypes.Object && property.type != SchemaTypes.Date) {\n const slot = builder.getOrDefault<SlotBlock>(\"if\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\", useFromPropertyName: property.isRenamed });\n const resultSelectorPath = property.getAssignmentPath({ parent: \"result\" });\n\n if (property.parent == null) {\n // Only assign if the incoming entity has the property, this allows partial serialization\n // Basically only serialize what is there\n slot.if(`Object.hasOwn(entity, \"${property.name}\")`).appendBody(`${resultSelectorPath} = ${entitySelectorPath}`);\n return builder;\n }\n\n const parentSelectPath = [\"entity\", ...property.getParentPathArray()].join(\".\");\n const parentAssignPath = [\"result\", ...property.getParentPathArray()].join(\".\");\n\n const ifSlot = slot.if(`Object.hasOwn(${parentSelectPath}, \"${property.name}\")`);\n\n if (property.parent.isNullable || property.parent.isOptional) {\n // Do this for nullable/optional parents. Parent will be null if its nullable/optional\n const conditionallyCreateParent = new IfBuilder(`${parentAssignPath} == null`).appendBody(`${parentAssignPath} = {}`);\n ifSlot.appendBody(conditionallyCreateParent.toString());\n }\n\n ifSlot.appendBody(`${resultSelectorPath} = ${entitySelectorPath}`);\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class StripIdentityHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isIdentity === true) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema\";\n\nexport class StripKeyHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.isKey === true) {\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class StripObjectHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Object) {\n const slotPath = new SlotPath(\"result.variable.object\");\n let objectBuilder = builder.getOrDefault<ObjectBuilder>(slotPath.get());\n\n if (objectBuilder == null) {\n objectBuilder = builder.get<SlotBlock>(\"result\")\n .assign(\"const result\", { name: \"variable\" })\n .object({ name: \"object\" });\n }\n\n if (property.parent == null) {\n objectBuilder.nested(property.name, property.name)\n\n return builder;\n }\n\n slotPath.push(...property.getParentPathArray());\n const nestedObjectBuilder = builder.get<ObjectBuilder>(slotPath.get());\n nestedObjectBuilder.nested(property.name, property.name)\n\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { PropertyInfo, SchemaTypes } from \"../../../schema\";\nimport { PropertyInfoHandler } from \"../types\";\nimport { CodeBuilder, ObjectBuilder, SlotBlock } from '../../blocks';\nimport { SlotPath } from '../../SlotPath';\n\nexport class StripValueHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type != SchemaTypes.Object) {\n let objectBuilder = builder.getOrDefault<ObjectBuilder>(\"result.variable.object\");\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\" });\n\n // There is a chance this is the first property we handle,\n // if that is the case, the main result variable will not be\n // constructed yet\n if (objectBuilder == null) {\n objectBuilder = builder.get<SlotBlock>(\"result\")\n .assign(\"const result\", { name: \"variable\" })\n .object({ name: \"object\" });\n }\n\n if (property.parent == null) {\n objectBuilder.property(`${property.name}: ${entitySelectorPath}`);\n return builder;\n }\n\n const slotPath = new SlotPath(...property.getParentPathArray());\n objectBuilder = objectBuilder.get<ObjectBuilder>(slotPath.get());\n objectBuilder.property(`${property.name}: ${entitySelectorPath}`);\n return builder;\n }\n\n return super.handle(property, builder);\n }\n}","import { AssignmentBuilder, CodeBuilder, ContainerBlock, ObjectBuilder, SlotBlock } from '..';\nimport { PropertyInfo } from '../../schema/PropertyInfo';\nimport { SlotPath } from '../SlotPath';\nimport { SchemaError } from '../../errors/SchemaError';\nimport { uuid } from '../../utilities/uuid';\nimport { countWordOccurance } from '../utils';\n\nexport interface IHandler {\n setNext(handler: IHandler): IHandler;\n\n handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null;\n}\n\nexport abstract class PropertyInfoHandler implements IHandler {\n\n private _next: IHandler | null;\n\n setNext(handler: IHandler): IHandler {\n this._next = handler;\n\n return handler;\n }\n\n handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n try {\n if (this._next) {\n return this._next.handle(property, builder);\n }\n\n return null;\n } catch (e: any) {\n throw new SchemaError(e, `Error handling property: ${property.name}`);\n }\n }\n\n protected buildSlotPath(property: PropertyInfo<any>, path: SlotPath) {\n\n const result = new SlotPath(...path.path);\n const items: string[] = []\n let p = property;\n\n while (p.parent != null) {\n items.unshift(p.name);\n p = p.parent;\n }\n\n items.unshift(p.name);\n\n result.push(...items);\n\n return result\n }\n\n protected setEnrichedProperty(property: PropertyInfo<any>, root: CodeBuilder) {\n const entitySelectorPath = property.getAssignmentPath({ parent: \"entity\" });\n\n if (property.parent != null) {\n const slotPath = new SlotPath(\"factory\", \"function\", \"enriched\", \"object\", \"enriched\");\n const path = property.parent.getAssignmentPath({ parent: \"enriched\" });\n slotPath.push(`[${path}]`)\n const objectBuilder = root.get<ObjectBuilder>(slotPath.get());\n const childEntityPathSelector = property.getSelectrorPath({ parent: \"entity\" });\n objectBuilder.property(`${property.name}: ${childEntityPathSelector}`);\n return;\n }\n\n const slotPath = new SlotPath(\"factory\", \"function\", \"enriched\", \"object\", \"enriched\");\n let enriched = root.getOrDefault<ObjectBuilder>(slotPath.get());\n\n if (enriched == null) {\n const enrichedSlot = root.get<SlotBlock>(\"factory.function.enriched\");\n enriched = enrichedSlot.variable(\"enriched\", { name: \"object\" }).object({ name: \"enriched\" });\n }\n\n enriched.property(`${property.name}: ${entitySelectorPath}`);\n }\n\n protected toNamedFunction(stringifiedFunction: string, parent: ContainerBlock) {\n const name = `_${uuid()}`;\n\n const builder = parent.function(name);\n const occurences = countWordOccurance(stringifiedFunction, \"=>\")\n\n if (occurences > 0) {\n\n const split = stringifiedFunction.split(\"=>\").map(w => w.trim());\n const parameters = split[0].replace(/\\(|\\)/g, \"\").split(\",\");\n let body = split[1];\n\n if (occurences > 1) {\n // we have a function that returns a function\n const index = stringifiedFunction.indexOf(\"=>\");\n body = stringifiedFunction.slice(index + 2, stringifiedFunction.length)\n }\n\n if (body.startsWith(\"{\") === true && body.endsWith(\"}\")) {\n\n // Remove brackets, wrapping function will have them\n builder.appendBody(body.slice(1, body.length - 1));\n\n return {\n builder,\n parameters\n };\n }\n\n builder.appendBody(`return ${body};`);\n return {\n builder,\n parameters\n }\n }\n\n throw new Error(\"Only arrow functions are allowed in the schema definition: function () {} ---> () => {}\");\n }\n}","/**\n * Counts non-overlapping occurrences of a term in text.\n *\n * Behavior:\n * - Case-sensitive matching\n * - If the search term is composed entirely of word characters (A–Z, a–z, 0–9, _),\n * enforce whole-word boundaries so \"red\" does not match inside \"redder\".\n * - If the search term contains any non-word character (e.g. \"=>\", \"()\", \"::\"),\n * match anywhere without boundary checks (useful for symbols).\n * - Non-overlapping matches (after a hit, advances by term length)\n * - Optimized single-character fast path; otherwise uses indexOf loop\n *\n * Examples:\n * - countWordOccurance(\"red redder red\", \"red\") => 2\n * - countWordOccurance(\"()=>{}\", \"=>\") => 1\n * - countWordOccurance(\"aaaa\", \"aa\") => 2 (non-overlapping)\n *\n * @param text The source text to scan\n * @param word The term to match (must be non-empty)\n * @returns The number of occurrences found\n */\nexport const countWordOccurance = (text: string, word: string) => {\n const wl = word.length;\n const tl = text.length;\n\n if (wl === 0 || wl > tl) return 0;\n\n // Fast path for single-character words\n if (wl === 1) {\n let c = 0;\n const code = word.charCodeAt(0);\n for (let i = 0; i < tl; i++) if (text.charCodeAt(i) === code) c++;\n return c;\n }\n\n let count = 0;\n let i = 0;\n\n function isWordCharCode(c: number): boolean {\n return (c >= 48 && c <= 57) // 0-9\n || (c >= 65 && c <= 90) // A-Z\n || (c >= 97 && c <= 122) // a-z\n || c === 95; // _\n }\n\n // Decide whether to enforce word boundaries based on the search term\n let enforceWordBoundaries = true;\n for (let k = 0; k < wl; k++) {\n const cc = word.charCodeAt(k);\n if (!isWordCharCode(cc)) {\n enforceWordBoundaries = false;\n break;\n }\n }\n\n while (true) {\n i = text.indexOf(word, i);\n if (i === -1) break;\n\n if (enforceWordBoundaries) {\n const left = i - 1;\n const right = i + wl;\n const leftOk = left < 0 || !isWordCharCode(text.charCodeAt(left));\n const rightOk = right >= tl || !isWordCharCode(text.charCodeAt(right));\n if (leftOk && rightOk) count++;\n } else {\n // No boundary enforcement for symbol-containing terms\n count++;\n }\n i += wl; // non-overlapping word matches\n }\n\n return count;\n}","export class SchemaError extends Error {\n\n constructor(error: any, innerErrorMessage: string) {\n super(`Error: ${error.message}; Inner Error: ${innerErrorMessage}`);\n }\n}","const measurements: Record<string, number> = {}\n\nexport const now = (): number => {\n if (typeof performance !== 'undefined' && performance.now) {\n // Browser or modern Node.js\n return performance.now();\n }\n\n // Fallback for older environments\n return Date.now();\n}\n\nexport const measure = {\n start: (name: string): void => {\n measurements[name] = now();\n },\n end: (name: string): void => {\n const start = measurements[name];\n\n delete measurements[name];\n\n const delta = now() - start;\n\n console.log(`[ROUTIER] - Performance: ${name} took ${delta}`);\n }\n}","import { UnknownRecord } from '../utilities';\nimport { SchemaBase } from './property/base/SchemaBase';\nimport { SchemaArray } from './property/types/SchemaArray';\nimport { DefaultValue, FunctionBody, PropertyDeserializer, PropertySerializer, SchemaTypes } from './types';\n\nconst SUPPORTED_DESERIALIZATION_TYPES = new Set<SchemaTypes>([\n SchemaTypes.Boolean,\n SchemaTypes.Date,\n SchemaTypes.Number,\n SchemaTypes.String,\n]);\n\n/**\n * Represents metadata and utilities for a property in a schema, including its type, name, parent, children, and serialization details.\n */\nexport class PropertyInfo<T extends {}> {\n\n get id() {\n if (this._idCache) {\n return this._idCache;\n }\n this._idCache = this.getPathArray().join(\".\");\n return this._idCache;\n }\n\n /** The name of the property. */\n readonly name: string;\n /** The name of the property we need to map from. */\n readonly from: string | null = null;\n /** The schema type of the property. */\n readonly type: SchemaTypes;\n\n /** Whether the property can be null. */\n readonly isNullable: boolean;\n /** Whether the property is optional. */\n readonly isOptional: boolean;\n /** Whether the property is a key. */\n readonly isKey: boolean;\n /** Whether the property is an identity property. */\n readonly isIdentity: boolean;\n /** Whether the property is readonly. */\n readonly isReadonly: boolean;\n /** Whether the property is unmapped. */\n readonly isUnmapped: boolean;\n /** Whether the property is distinct. */\n readonly isDistinct: boolean;\n /** Indexes associated with the property. */\n readonly indexes: string[];\n\n /** Any injected value for the property. */\n readonly injected: any | null = null;\n /** The default value for the property, if any. */\n readonly defaultValue: DefaultValue<any> | null = null;\n /** Serializer for the property value, if any. */\n readonly valueSerializer: PropertySerializer<T> | null = null;\n /** Deserializer for the property value, if any. */\n readonly valueDeserializer: PropertyDeserializer<T> | null = null;\n /** Function body for computed properties, if any. */\n readonly functionBody: FunctionBody<any, T> | null;\n /** Child properties of this property. */\n readonly children: PropertyInfo<T>[] = [];\n /** The schema this property belongs to. */\n readonly schema: SchemaBase<T, any>;\n /** The inner schema if this property is an array. */\n readonly innerSchema?: SchemaBase<unknown, any>;\n /** Literal values allowed for this property. */\n readonly literals: T[];\n\n /** The parent property, if any. */\n readonly parent?: PropertyInfo<T>;\n\n // Cached computed values for performance\n private _propertyChainCache?: PropertyInfo<T>[];\n private _pathArrayCache?: string[];\n private _parentPathArrayCache?: string[];\n private _idCache?: string;\n private _levelCache?: number;\n private _hasNullableParentsCache?: boolean;\n\n constructor(schema: SchemaBase<T, any>, name: string, parent?: PropertyInfo<T> | null) {\n this.schema = schema;\n this.name = name;\n this.type = schema.type;\n this.literals = schema.literals;\n\n if (schema instanceof SchemaArray) {\n this.innerSchema = schema.innerSchema;\n }\n\n this.isNullable = schema.isNullable;\n this.isOptional = schema.isOptional;\n this.isKey = schema.isKey;\n this.isIdentity = schema.isIdentity;\n this.isReadonly = schema.isReadonly;\n this.isUnmapped = schema.isUnmapped;\n this.injected = schema.injected;\n this.isDistinct = schema.isDistict;\n this.indexes = schema.indexes;\n this.from = schema.fromPropertyName;\n\n this.defaultValue = schema.defaultValue;\n this.valueSerializer = schema.valueSerializer;\n this.valueDeserializer = schema.valueDeserializer;\n this.functionBody = schema.functionBody;\n\n this.parent = parent;\n }\n\n /**\n * Returns the depth (level) of this property in the property tree.\n *\n * The root property has a level of 0. Each child property increases the level by 1.\n * Traverses up the parent chain, incrementing the level for each parent until the root is reached.\n * \n * @returns {number} The number of parent properties above this property (0 for root).\n */\n get level() {\n if (this._levelCache !== undefined) {\n return this._levelCache;\n }\n\n let level = 0;\n let current: PropertyInfo<T> | undefined = this;\n\n while (current) {\n if (current.parent == null) {\n this._levelCache = level;\n return level;\n }\n\n current = current.parent;\n level++;\n }\n\n this._levelCache = level;\n return level;\n }\n\n get isRenamed() {\n return !!this.from;\n }\n\n get supportsDeserialization() {\n return this.valueDeserializer != null || SUPPORTED_DESERIALIZATION_TYPES.has(this.type);\n }\n\n private _getPropertyChain(): PropertyInfo<T>[] {\n if (this._propertyChainCache) {\n return this._propertyChainCache;\n }\n\n const chain: PropertyInfo<T>[] = [];\n let current: PropertyInfo<T> | undefined = this;\n\n while (current) {\n chain.unshift(current);\n current = current.parent;\n }\n\n this._propertyChainCache = chain;\n return chain;\n }\n\n private _needsOptionalChaining(prop: PropertyInfo<T>, assignmentType?: AssignmentType): boolean {\n if (assignmentType === \"ASSIGNMENT\") {\n return false;\n }\n\n return assignmentType === \"FORCE_NULLABLE_OR_OPTIONAL\" || prop.isNullable || prop.isOptional;\n }\n\n private _resolvePathArray(options?: {\n root?: string,\n assignmentType?: AssignmentType\n useFromPropertyName?: boolean,\n }) {\n const propertyChain = this._getPropertyChain();\n const hasRoot = options?.root != null;\n const path: string[] = hasRoot ? [options!.root!] : [];\n\n for (const prop of propertyChain) {\n const accessor = this._needsOptionalChaining(prop, options?.assignmentType) ? '?.' : '.';\n path.push(accessor, options?.useFromPropertyName ? prop.from : prop.name);\n }\n\n return path;\n }\n\n getResolvedName() {\n return this.from ?? this.name;\n }\n\n /**\n * Returns an array of property names representing the path from the root to this property.\n *\n * @returns {string[]} The property path as an array of names.\n */\n getPathArray() {\n if (this._pathArrayCache) {\n return this._pathArrayCache;\n }\n\n const path: string[] = [];\n const propertyChain = this._getPropertyChain();\n\n for (const prop of propertyChain) {\n path.push(prop.name);\n }\n\n this._pathArrayCache = path;\n return path;\n }\n\n /**\n * Returns an array of property names representing the path from the root to the parent of this property.\n *\n * @returns {string[]} The property path as an array of names, excluding this property.\n */\n getParentPathArray() {\n if (this._parentPathArrayCache) {\n return this._parentPathArrayCache;\n }\n\n const path: string[] = [];\n const propertyChain = this._getPropertyChain();\n\n for (let i = 0; i < propertyChain.length - 1; i++) {\n const prop = propertyChain[i];\n path.push(prop.name);\n }\n\n this._parentPathArrayCache = path;\n return path;\n }\n\n /**\n * Returns true if any parent property is nullable or optional.\n *\n * @returns {boolean} True if any parent is nullable or optional, false otherwise.\n */\n get hasNullableParents() {\n if (this._hasNullableParentsCache !== undefined) {\n return this._hasNullableParentsCache;\n }\n\n let parent = this.parent;\n while (parent != null) {\n if (parent.isNullable || parent.isOptional) {\n this._hasNullableParentsCache = true;\n return true;\n }\n parent = parent.parent;\n }\n\n this._hasNullableParentsCache = false;\n return false;\n }\n\n /**\n * Returns true if any child property (recursively) is an identity property.\n *\n * @returns {boolean} True if any child is an identity property, false otherwise.\n */\n get hasIdentityChildren() {\n const children = [...this.children];\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.isIdentity === true) {\n return true;\n }\n if (child.children.length > 0) {\n children.push(...child.children)\n }\n }\n return false;\n }\n\n /**\n * Gets the value of this property from the given instance, following the property path.\n *\n * @param instance The object instance to retrieve the value from.\n * @returns The value of the property, or null if not found.\n */\n getValue(instance: UnknownRecord) {\n if (instance == null) {\n return null;\n }\n const pathArray = this.getPathArray();\n const length = pathArray.length;\n // Fast path for single level properties\n if (length === 1) {\n return instance[pathArray[0]];\n }\n let current: any = instance;\n for (let i = 0; i < length; i++) {\n if (current == null) {\n return null;\n }\n current = current[pathArray[i]];\n }\n return current;\n }\n\n /**\n * Sets the value of this property on the given instance, creating intermediate objects as needed.\n *\n * @param instance The object instance to set the value on.\n * @param value The value to set.\n */\n setValue(instance: unknown, value: unknown) {\n if (instance == null) {\n throw new Error('Cannot set value on null or undefined instance');\n }\n const pathArray = this.getPathArray();\n const length = pathArray.length;\n // Fast path for single level properties\n if (length === 1) {\n (instance as any)[pathArray[0]] = value;\n return;\n }\n let current: any = instance;\n let i = 0;\n // Navigate to the parent of the target property\n while (i < length - 1) {\n const prop = pathArray[i];\n const next = current[prop];\n // Only create new object if next level doesn't exist\n if (next == null) {\n current[prop] = {};\n }\n current = current[prop];\n i++;\n }\n // Set the value on the final property\n current[pathArray[length - 1]] = value;\n }\n\n /**\n * Returns a selector path string for this property, starting from the given parent variable name.\n *\n * @param options.parent The root variable name.\n * @param options.assignmentType Optional assignment type for path resolution.\n * @returns {string} The selector path string (e.g., 'parent.prop1.prop2').\n */\n getSelectrorPath(options: { parent: string, assignmentType?: AssignmentType, useFromPropertyName?: boolean, useRemappedName?: boolean }) {\n const parts = this._resolvePathArray({\n root: options.parent,\n assignmentType: options?.assignmentType,\n useFromPropertyName: options?.useFromPropertyName\n });\n return parts.join(\"\");\n }\n\n /**\n * Returns an assignment path string for this property, optionally starting from a parent variable name.\n *\n * @param options.parent Optional root variable name.\n * @returns {string} The assignment path string (e.g., 'prop1.prop2').\n */\n getAssignmentPath(options?: { parent?: string, useFromPropertyName?: boolean }) {\n const parts = this._resolvePathArray({\n root: options?.parent,\n assignmentType: \"ASSIGNMENT\",\n useFromPropertyName: options?.useFromPropertyName\n });\n\n if (options?.parent == null) {\n return parts.slice(1).join(\"\");\n }\n\n return parts.join(\"\");\n }\n\n deserialize(value: string | number) {\n\n if (this.valueDeserializer != null) {\n return this.valueDeserializer(value);\n }\n\n if (this.type === SchemaTypes.Date) {\n return new Date(value);\n }\n\n if (this.type === SchemaTypes.String) {\n return String(value);\n }\n\n if (this.type === SchemaTypes.Number) {\n return Number(value);\n }\n\n if (this.type === SchemaTypes.Boolean) {\n return Boolean(value);\n }\n\n throw new Error(`Unsupported deserialization for type. Type: ${this.type}`);\n }\n}\n\ntype AssignmentType = \"FORCE_NULLABLE_OR_OPTIONAL\" | \"ASSIGNMENT\";","import { SchemaFunction } from './table/SchemaFunction';\nimport { SchemaComputed } from './table/SchemaComputed';\nimport { SchemaBase } from \"./property/base/SchemaBase\";\nimport { PropertyInfo } from './PropertyInfo';\nimport { CodeBuilder, FunctionBuilder, SlotBlock } from '../codegen';\nimport { EnrichmentHandlerBuilder } from '../codegen/handlers/EnrichmentHandlerBuilder';\nimport { MergeHandlerBuilder } from '../codegen/handlers/MergeHandlerBuilder';\nimport { PrepareHandlerBuilder } from '../codegen/handlers/PrepareHandlerBuilder';\nimport { StripHandlerBuilder } from '../codegen/handlers/StripHandlerBuilder';\nimport { CloneHandlerBuilder } from '../codegen/handlers/CloneHandlerBuilder';\nimport { CompareHandlerBuilder } from '../codegen/handlers/CompareHandlerBuilder';\nimport { DeserializeHandlerBuilder } from '../codegen/handlers/DeserializeHandlerBuilder';\nimport { HashTypeHandlerBuilder } from '../codegen/handlers/HashTypeHandlerBuilder';\nimport { IdSelectorHandlerBuilder } from '../codegen/handlers/IdSelectorHandlerBuilder';\nimport { HashHandlerBuilder } from '../codegen/handlers/HashHandlerBuilder';\nimport { EnableChangeTrackingHandlerBuilder } from '../codegen/handlers/EnableChangeTrackingHandlerBuilder';\nimport { FreezeHandlerBuilder } from '../codegen/handlers/FreezeHandlerBuilder';\nimport { SchemaError } from '../errors/SchemaError';\nimport { SerializeHandlerBuilder } from \"../codegen/handlers/SerializeHandlerBuilder\";\nimport { hash } from \"../utilities\";\nimport { CompiledSchema, CompiledSchemaCore, GetHashTypeFunction, HashFunction, HashType, IdType, Index, InferCreateType, InferType, Prepare, Preprocess, SchemaTypes } from './types';\nimport { DeepPartial } from '../types';\nimport { SchemaSubscription } from './communication/broadcast';\nimport { CompareIdsHandlerBuilder } from '../codegen/handlers/CompareIdsHandlerBuilder';\n\nexport class SchemaDefinition<T extends {}> extends SchemaBase<T, any> {\n\n instance: T;\n type = SchemaTypes.Definition;\n collectionName: string;\n\n constructor(collectionName: string, schema: T) {\n super();\n this.collectionName = collectionName;\n this.instance = schema;\n this.isNullable = false;\n this.isOptional = false;\n }\n\n modify<R>(builder: (d: {\n function: <UU, I = never>(fn: (entity: InferType<CompiledSchema<T>>, collectionName: string, injected: I) => UU, injected?: I) => SchemaFunction<UU, I, \"unmapped\">;\n computed: <UU, I = never>(fn: (entity: InferType<CompiledSchema<T>>, collectionName: string, injected: I) => UU, injected?: I) => SchemaComputed<UU, I, \"computed\" | \"unmapped\">;\n }) => R) {\n\n const b = {\n function: <UU, I = never>(fn: (entity: InferType<CompiledSchema<T>>, collectionName: string, injected?: I) => UU, injected?: I) => new SchemaFunction<UU, I, \"unmapped\">(fn as any, injected),\n computed: <UU, I = never>(fn: (entity: InferType<CompiledSchema<T>>, collectionName: string, injected?: I) => UU, injected?: I) => new SchemaComputed<UU, I, \"computed\" | \"unmapped\">(fn as any, injected)\n }\n\n const r = builder(b)\n\n return new SchemaDefinition<R & T>(this.collectionName, { ...this.instance, ...r });\n }\n\n private _iterate(\n instance: SchemaBase<any, any>,\n callback: (property: PropertyInfo<any>) => void\n ) {\n const explore: {\n path: string | null;\n instance:\n | SchemaBase<any, any>\n | { [key: string]: SchemaBase<any, any> };\n parents: {\n schema: { [key: string]: SchemaBase<any, any> };\n propertyInfo: PropertyInfo<any>;\n }[];\n propertyInfo: PropertyInfo<any> | null;\n }[] = [\n { path: null, instance, parents: [], propertyInfo: null }\n ];\n const properties: PropertyInfo<any>[] = [];\n\n for (let i = 0; i < explore.length; i++) {\n const item = explore[i];\n\n if (item.instance.type === SchemaTypes.Definition) {\n explore.push({\n path: null,\n instance: item.instance.instance,\n parents: [],\n propertyInfo: null\n });\n continue;\n }\n\n const instanceObj = item.instance as {\n [key: string]: SchemaBase<any, any>;\n };\n for (const key in instanceObj) {\n const propertyInstance = instanceObj[key] as SchemaBase<any, any>;\n const previousParent =\n item.parents.length === 0\n ? null\n : item.parents[item.parents.length - 1].propertyInfo;\n\n if (propertyInstance.type === SchemaTypes.Object) {\n const propertyInfo = new PropertyInfo<any>(\n propertyInstance,\n key,\n previousParent\n );\n explore.push({\n path: [item.path, key].filter((w) => w != null).join(\".\"),\n instance: propertyInstance.instance,\n parents: [\n ...item.parents,\n { schema: instanceObj, propertyInfo: propertyInfo }\n ],\n propertyInfo\n });\n\n if (previousParent === null) {\n properties.push(propertyInfo);\n continue;\n }\n\n previousParent.children.push(propertyInfo);\n continue;\n }\n\n const childPrimitivePropertyInfo = new PropertyInfo<any>(\n (item.instance as any)[key],\n key,\n previousParent\n );\n if (previousParent === null) {\n properties.push(childPrimitivePropertyInfo);\n continue;\n }\n\n previousParent.children.push(childPrimitivePropertyInfo);\n }\n }\n\n // Recursively trigger callbacks on properties and their children\n function recursiveCallback(prop: PropertyInfo<any>) {\n callback(prop);\n for (const child of prop.children) {\n recursiveCallback(child);\n }\n }\n\n for (const prop of properties) {\n recursiveCallback(prop);\n }\n }\n\n private createChangeTracker() {\n\n const DIRTY_ENTITY_MARKER: string = \"isDirty\";\n const CHANGES_ENTITY_KEY: string = \"changes\";\n const ORIGINAL_ENTITY_KEY: string = \"original\";\n const PAUSED_ENTITY_KEY: string = \"isPaused\";\n const TRACKING_KEY: string = \"__tracking__\";\n const PROXY_MARKER: string = \"__isProxy__\";\n\n return <TEntity extends {}>(entity: TEntity, path?: string, parent?: TEntity) => {\n\n const proxyHandler: ProxyHandler<TEntity> = {\n set: (entity, property, value) => {\n const indexableEntity: { [key: string]: any } = entity;\n const key = String(property);\n const originalValue = indexableEntity[key];\n\n // if values are the same, do nothing\n if (originalValue === value) {\n return true;\n }\n\n const resolvedParent: { [key: string]: any } = parent ?? entity;\n\n if (resolvedParent[TRACKING_KEY] == null) {\n resolvedParent[TRACKING_KEY] = {\n [CHANGES_ENTITY_KEY]: {},\n [DIRTY_ENTITY_MARKER]: false,\n [ORIGINAL_ENTITY_KEY]: {},\n [PAUSED_ENTITY_KEY]: false\n }\n }\n\n if (key == TRACKING_KEY) {\n return true;\n }\n\n if (resolvedParent[TRACKING_KEY] != null && resolvedParent[TRACKING_KEY][PAUSED_ENTITY_KEY] === true) {\n Reflect.set(indexableEntity, property, value);\n return true;\n }\n\n const resolvedPath = path == null ? key : `${path}.${key}`;\n const changes = resolvedParent[TRACKING_KEY];\n\n if (changes[CHANGES_ENTITY_KEY][resolvedPath] != null) {\n\n if (changes[ORIGINAL_ENTITY_KEY][resolvedPath] === value) {\n // we are changing the value back to the original value, remove the change\n delete changes[ORIGINAL_ENTITY_KEY][resolvedPath];\n delete changes[CHANGES_ENTITY_KEY][resolvedPath];\n } else {\n // track the change\n changes[CHANGES_ENTITY_KEY][resolvedPath] = value;\n }\n\n } else if (changes[CHANGES_ENTITY_KEY][resolvedPath] == null) {\n // don't keep updating, keep the original value\n changes[CHANGES_ENTITY_KEY][resolvedPath] = value;\n changes[ORIGINAL_ENTITY_KEY][resolvedPath] = originalValue;\n }\n\n const isDirty = Object.keys(changes[ORIGINAL_ENTITY_KEY]).length > 0;\n changes[DIRTY_ENTITY_MARKER] = isDirty;\n\n Reflect.set(indexableEntity, property, value);\n\n return true;\n },\n get: (target, property, receiver) => {\n\n if (property === PROXY_MARKER) {\n return true;\n }\n\n return Reflect.get(target, property, receiver);\n }\n }\n\n return new Proxy(entity, proxyHandler) as TEntity\n }\n }\n\n compile(): CompiledSchema<T> {\n\n try {\n const schema = this;\n const properties: PropertyInfo<T>[] = [];\n const propertyMap: Map<string, PropertyInfo<T>> = new Map<string, PropertyInfo<T>>();\n\n const enrichmentHandlerBuilder = new EnrichmentHandlerBuilder();\n const mergeHandlerFactory = new MergeHandlerBuilder();\n const prepareHandlerBuilder = new PrepareHandlerBuilder();\n const stripHandlerBuilder = new StripHandlerBuilder();\n const cloneHandlerBuilder = new CloneHandlerBuilder();\n const compareHandlerBuilder = new CompareHandlerBuilder();\n const deserializeHandlerBuilder = new DeserializeHandlerBuilder();\n const hashTypeHandlerBuilder = new HashTypeHandlerBuilder();\n const idSelectorHandlerBuilder = new IdSelectorHandlerBuilder();\n const hashHandlerBuilder = new HashHandlerBuilder();\n const enableChangeTrackingHandlerBuilder = new EnableChangeTrackingHandlerBuilder();\n const freezeHandlerBuilder = new FreezeHandlerBuilder();\n const serializeHandlerBuilder = new SerializeHandlerBuilder();\n const compareIdsHandlerBuilder = new CompareIdsHandlerBuilder();\n\n const enricher = enrichmentHandlerBuilder.build();\n const merge = mergeHandlerFactory.build();\n const prepare = prepareHandlerBuilder.build();\n const strip = stripHandlerBuilder.build();\n const clone = cloneHandlerBuilder.build();\n const compare = compareHandlerBuilder.build();\n const deserialize = deserializeHandlerBuilder.build();\n const hashTypeHandler = hashTypeHandlerBuilder.build();\n const idSelectorHandler = idSelectorHandlerBuilder.build();\n const hashHandler = hashHandlerBuilder.build();\n const enableChangeTrackingHandler = enableChangeTrackingHandlerBuilder.build();\n const freezeHandler = freezeHandlerBuilder.build();\n const serializeHandler = serializeHandlerBuilder.build();\n const compareIdsHandler = compareIdsHandlerBuilder.build();\n\n const changeTrackingCodeBuilder = new CodeBuilder();\n changeTrackingCodeBuilder.raw(`function ${this.createChangeTracker.toString()}`);\n changeTrackingCodeBuilder.slot(\"declarations\").variable(\"enableChangeTracking\").value('createChangeTracker()');\n changeTrackingCodeBuilder.slot(\"assignment\");\n changeTrackingCodeBuilder.slot(\"return\").raw('\\treturn enableChangeTracking(entity);');\n\n const freezeCodeBuilder = new CodeBuilder();\n freezeCodeBuilder.slot(\"assignment\");\n freezeCodeBuilder.slot(\"return\").raw('\\treturn Object.freeze(entity);');\n\n const enricherCodeBuilder = new CodeBuilder();\n const enricherFunctionRoot = enricherCodeBuilder.factory(\"factory\", { name: \"factory\" }).parameters({ name: \"collectionName\", value: this.collectionName });\n const enricherFunctionBody = enricherFunctionRoot.function(undefined, { name: \"function\" }).parameters(\"entity\", \"changeTrackingType\").return();\n\n enricherFunctionBody.slot(\"changeTracker\").raw(`\\tfunction ${this.createChangeTracker.toString()}`);\n enricherFunctionBody.slot(\"enableChangeTracking\")\n .variable(\"enableChangeTracking\")\n .value('changeTrackingType === \"proxy\" ? createChangeTracker() : e => e');\n\n enricherFunctionBody.slot(\"append\");\n enricherFunctionBody.slot(\"enriched\");\n enricherFunctionBody.slot(\"declarations\");\n enricherFunctionBody.slot(\"assignment\");\n enricherFunctionBody.slot(\"ifs\");\n enricherFunctionBody.slot(\"tracking\").if('changeTrackingType === \"immutable\"', { name: \"freeze\" });\n enricherFunctionBody.slot(\"return\").raw('\\treturn enableChangeTracking(enriched);');\n\n const preprocessCodeBuilder = new CodeBuilder();\n preprocessCodeBuilder.slot(\"main\");\n preprocessCodeBuilder.slot(\"return\").raw(` return result;`);\n\n const postprocessCodeBuilder = new CodeBuilder();\n postprocessCodeBuilder.slot(\"main\");\n postprocessCodeBuilder.slot(\"return\").raw(` return result;`);\n\n const mergeCodeBuilder = new CodeBuilder();\n\n const mergeFunctionRoot = mergeCodeBuilder.factory(\"factory\", { name: \"factory\" }).parameters({ name: \"collectionName\", value: this.collectionName });\n const mergeFunctionBody = mergeFunctionRoot.function(undefined, { name: \"function\" }).parameters(\"destination\", \"source\").return();\n\n const pauseFunctionBody = mergeFunctionBody.function(\"pause\")\n .appendBody(\"// initiate change tracking if needed\");\n\n pauseFunctionBody.if(\"destination.__tracking__ == null\")\n .appendBody(\"destination.__tracking__ = {};\");\n\n pauseFunctionBody.appendBody(\"destination.__tracking__.isPaused = true;\");\n\n mergeFunctionBody.function(\"unpause\")\n .appendBody(\"// unpause change tracking if needed\")\n .if(\"destination.__tracking__ != null\")\n .appendBody(\"destination.__tracking__.isPaused = false;\");\n\n mergeFunctionBody.slot(\"header\").raw(`pause()`);\n mergeFunctionBody.slot(\"assignments\");\n mergeFunctionBody.slot(\"ifs\");\n mergeFunctionBody.slot(\"return\").raw(`\n unpause();\n\n return destination;`);\n\n const prepareCodeBuilder = new CodeBuilder();\n prepareCodeBuilder.slot(\"result\");\n prepareCodeBuilder.slot(\"assignments\");\n prepareCodeBuilder.slot(\"return\").raw(` return result;`);\n\n const stripCodeBuilder = new CodeBuilder();\n stripCodeBuilder.slot(\"result\");\n stripCodeBuilder.slot(\"return\").raw(` return result;`);\n\n const cloneCodeBuilder = new CodeBuilder();\n cloneCodeBuilder.slot(\"result\").raw(\"const result = {};\");;\n cloneCodeBuilder.slot(\"assignments\");\n cloneCodeBuilder.slot(\"if\");\n cloneCodeBuilder.slot(\"return\").raw(` return result;`);\n\n const compareCodeBuilder = new CodeBuilder();\n compareCodeBuilder.slot(\"result\");\n compareCodeBuilder.slot(\"return\").raw(` return result;`);\n\n const compareIdsCodeBuilder = new CodeBuilder();\n compareIdsCodeBuilder.slot(\"ifs\");\n compareIdsCodeBuilder.slot(\"return\").raw(` return true;`);\n\n const deserializeCodeBuilder = new CodeBuilder();\n deserializeCodeBuilder.slot(\"functions\");\n deserializeCodeBuilder.slot(\"result\");\n deserializeCodeBuilder.slot(\"if\");\n deserializeCodeBuilder.slot(\"return\").raw(` return entity;`);\n\n const serializeCodeBuilder = new CodeBuilder();\n serializeCodeBuilder.slot(\"result\").raw(\"const result = {};\");\n serializeCodeBuilder.slot(\"assignments\");\n serializeCodeBuilder.slot(\"functions\");\n serializeCodeBuilder.slot(\"if\");\n serializeCodeBuilder.slot(\"return\").raw(` return result;`);\n\n const idSelectorCodeBuilder = new CodeBuilder();\n idSelectorCodeBuilder.slot(\"result\");\n idSelectorCodeBuilder.slot(\"return\").raw(` return result;`);\n\n const hashTypeCodeBuilder = new CodeBuilder();\n hashTypeCodeBuilder.slot(\"ifs\");\n hashTypeCodeBuilder.slot(\"return\").raw(` return \"Ids\";`);\n\n const hashCodeBuilder = new CodeBuilder();\n hashCodeBuilder.slot(\"functions\").raw(`\n function stringifyDate(d) {\n\n if (d == null) {\n return \"\";\n }\n\n if (typeof d === \"string\") {\n return d;\n }\n\n if (d.toISOString != null) {\n return d.toISOString();\n }\n\n return d.toString();\n } \n`);\n const hashCodeBuilderIfBlock = hashCodeBuilder.if(`type === \"Ids\"`, { name: \"hash-id-if\" });\n hashCodeBuilderIfBlock.slot(\"if-body\");\n hashCodeBuilderIfBlock.appendBody(\"return result\");\n hashCodeBuilder.slot(\"hash-object-return\");\n hashCodeBuilder.raw(` return result;`)\n\n const idProperties: PropertyInfo<any>[] = [];\n const allPropertyNamesAndPaths: string[] = [];\n let hashType: HashType = HashType.Ids;\n let hasIdentities = false;\n let hasIdentityKeys = false;\n\n this._iterate(schema, (property) => {\n\n properties.push(property);\n propertyMap.set(property.id, property);\n allPropertyNamesAndPaths.push(property.getSelectrorPath({ parent: \"entity\" }));\n\n if (property.isIdentity === true) {\n hasIdentities = true;\n }\n\n if (property.isKey === true) {\n idProperties.push(property);\n }\n\n if (property.isKey === true && property.isIdentity === true) {\n hasIdentityKeys = true;\n }\n\n enricher.handle(property, enricherCodeBuilder);\n merge.handle(property, mergeCodeBuilder);\n prepare.handle(property, prepareCodeBuilder);\n strip.handle(property, stripCodeBuilder);\n clone.handle(property, cloneCodeBuilder);\n compare.handle(property, compareCodeBuilder);\n deserialize.handle(property, deserializeCodeBuilder);\n serializeHandler.handle(property, serializeCodeBuilder)\n hashTypeHandler.handle(property, hashTypeCodeBuilder);\n idSelectorHandler.handle(property, idSelectorCodeBuilder);\n hashHandler.handle(property, hashCodeBuilder);\n enableChangeTrackingHandler.handle(property, changeTrackingCodeBuilder);\n freezeHandler.handle(property, freezeCodeBuilder);\n compareIdsHandler.handle(property, compareIdsCodeBuilder);\n });\n\n if (idProperties.length === 0) {\n throw new Error(`Schema must have a key. Use .key() to mark a property as a key. Collection Name: ${this.collectionName}`)\n }\n\n const enrichParams = enricherFunctionRoot.getParameters();\n const mergeParams = mergeFunctionRoot.getParameters();\n const enrichGenerator = Function(`return ${enricherCodeBuilder.toString()}`);\n const mergeGenerator = Function(`return ${mergeCodeBuilder.toString()}`);\n\n // After enricher is used, we modify it to be deserialize and enrich\n enricherFunctionBody.get<SlotBlock>(\"append\").insert(deserializeCodeBuilder.get<SlotBlock>(\"functions\"));\n enricherFunctionBody.get<SlotBlock>(\"append\").insert(deserializeCodeBuilder.get<SlotBlock>(\"result\"));\n enricherFunctionBody.get<SlotBlock>(\"append\").insert(deserializeCodeBuilder.get<SlotBlock>(\"if\"));\n enricherFunctionRoot.replace(\"function\", new FunctionBuilder(undefined).parameters(\"unserialized\", \"changeTrackingType\").return());\n\n const postProcessGenerator = Function(`return ${enricherCodeBuilder.toString()}`);\n const postProcessParams = enricherFunctionRoot.getParameters();\n\n // Combine prepare and serialize\n preprocessCodeBuilder.get<SlotBlock>(\"main\").insert(prepareCodeBuilder.get<SlotBlock>(\"result\"));\n preprocessCodeBuilder.get<SlotBlock>(\"main\").insert(prepareCodeBuilder.get<SlotBlock>(\"assignments\"));\n\n preprocessCodeBuilder.get<SlotBlock>(\"main\").insert(serializeCodeBuilder.get<SlotBlock>(\"assignments\"));\n preprocessCodeBuilder.get<SlotBlock>(\"main\").insert(serializeCodeBuilder.get<SlotBlock>(\"functions\"));\n preprocessCodeBuilder.get<SlotBlock>(\"main\").insert(serializeCodeBuilder.get<SlotBlock>(\"if\"));\n\n\n const getIdsFunction = Function(\"entity\", idSelectorCodeBuilder.toString()) as (entity: InferType<T>) => [IdType];\n const getHashTypeFunction = Function(\"entity\", hashTypeCodeBuilder.toString()) as GetHashTypeFunction<T>;\n const prepareFunction = Function(\"entity\", prepareCodeBuilder.toString()) as Prepare<T>;\n const cloneFunction = Function(\"entity\", cloneCodeBuilder.toString()) as (entity: InferType<T>) => InferType<T>;\n const deserializeFunction = Function(\"unserialized\", deserializeCodeBuilder.toString()) as (entity: InferType<T>) => InferType<T>;\n const serializeFunction = Function(\"entity\", serializeCodeBuilder.toString()) as (entity: InferType<T>) => InferType<T>;\n const compareFunction = Function(\"a\", \"b\", compareCodeBuilder.toString()) as (a: InferType<T>, b: InferType<T>) => boolean;\n const stripFunction = Function(\"entity\", stripCodeBuilder.toString()) as (entity: InferType<T>) => InferType<T>;\n const hashFunction = Function(\"entity\", \"type\", hashCodeBuilder.toString()) as HashFunction<T>;\n const enableChangeTrackingFunction = Function(\"entity\", changeTrackingCodeBuilder.toString()) as (entity: InferType<T>) => InferType<T>;\n const freezeFunction = Function(\"entity\", freezeCodeBuilder.toString()) as (entity: InferType<T>) => InferType<T>;\n const compareIdsFunction = Function(\"a\", \"b\", compareIdsCodeBuilder.toString()) as (a: InferType<T>, b: InferType<T>) => boolean;\n const preprocessFunction = Function(\"entity\", preprocessCodeBuilder.toString()) as Preprocess<T>;\n\n const enricherFactoryFunction = enrichGenerator();\n const postProcessFactoryFunction = postProcessGenerator();\n const mergeFactoryFunction = mergeGenerator();\n const postProcessFunction = postProcessFactoryFunction(...postProcessParams.map(w => w.value))\n const enricherFunction = enricherFactoryFunction(...enrichParams.map(w => w.value));\n const mergeFunction = mergeFactoryFunction(...mergeParams.map(w => w.value));\n\n const idPropertyNames = idProperties.map(w => w.name);\n const getId = (entity: InferType<T>) => {\n if (idPropertyNames.length > 1) {\n return hashFunction(entity, HashType.Ids) as IdType;\n }\n\n return getIdsFunction(entity as any)[0] as IdType;\n }\n\n const getProperty = (id: string) => propertyMap.get(id);\n const id = hash([...allPropertyNamesAndPaths, this.collectionName].join(\",\"));\n\n // memoize this by the validProperties\n // TODO: See if we can generate a function to do this and eliminate loops\n const deserializePartial = (item: Record<string, unknown>, properties: PropertyInfo<T>[]) => {\n\n for (let i = 0, length = properties.length; i < length; i++) {\n const property = properties[i];\n const value = property.getValue(item);\n\n if (value == null) {\n continue;\n }\n\n const deserialized = property.deserialize(value);\n property.setValue(item, deserialized);\n }\n\n return item as DeepPartial<InferType<T>>;\n }\n\n const result: CompiledSchemaCore<T> = {\n preprocess: preprocessFunction,\n postprocess: postProcessFunction,\n getId,\n getProperty,\n properties,\n idProperties,\n hasIdentities,\n hashType,\n getHashType: getHashTypeFunction,\n merge: mergeFunction,\n prepare: prepareFunction,\n clone: cloneFunction,\n deserializePartial,\n deserialize: deserializeFunction,\n serialize: serializeFunction,\n compare: compareFunction,\n compareIds: compareIdsFunction,\n strip: stripFunction,\n hash: hashFunction,\n id,\n getIds: getIdsFunction,\n enrich: enricherFunction,\n collectionName: this.collectionName,\n hasIdentityKeys,\n freeze: freezeFunction,\n enableChangeTracking: enableChangeTrackingFunction,\n definition: this,\n getIndexes: () => {\n\n const indexes: Index[] = [];\n\n for (let i = 0, length = properties.length; i < length; i++) {\n const property = properties[i];\n\n if (property.indexes.length === 0) {\n continue; // No Index\n }\n\n for (let j = 0, l = property.indexes.length; j < l; j++) {\n const indexName = property.indexes[j];\n\n // Test for compound indexes\n const connections = properties.filter(w =>\n w !== property && // Don't match with self\n w.indexes.some(index => index === indexName)\n );\n\n const indexedProperties = [property, ...connections];\n\n if (indexedProperties.length === 1) {\n // Not a compound property\n if (indexedProperties[0].isKey) {\n indexes.push({\n properties: indexedProperties,\n type: \"primary-key\",\n name: indexName\n });\n continue;\n }\n\n if (indexedProperties[0].isDistinct) {\n indexes.push({\n properties: indexedProperties,\n type: \"unique\",\n name: indexName\n });\n continue;\n }\n\n indexes.push({\n properties: indexedProperties,\n type: \"single\",\n name: indexName\n });\n continue;\n }\n\n if (indexes.some(w => w.name === indexName)) {\n continue; // Already in a compound index\n }\n\n indexes.push({\n properties: indexedProperties,\n type: \"compound\",\n name: indexName\n });\n }\n }\n\n return indexes;\n }\n };\n\n return {\n createSubscription: (signal?: AbortSignal) => new SchemaSubscription(result, signal),\n ...result\n }\n } catch (e) {\n throw new SchemaError(e, `Error compiling schema for collection: ${this.collectionName}`);\n }\n }\n}\n","import { SchemaArray } from \"./property/types/SchemaArray\";\nimport { SchemaBase } from \"./property/base/SchemaBase\";\nimport { SchemaBoolean } from \"./property/types/SchemaBoolean\";\nimport { SchemaDate } from \"./property/types/SchemaDate\";\nimport { SchemaDefinition } from \"./SchemaDefinition\";\nimport { SchemaNumber } from \"./property/types/SchemaNumber\";\nimport { SchemaObject } from \"./property/types/SchemaObject\";\nimport { SchemaString } from \"./property/types/SchemaString\";\n\nexport const s = {\n number: <T extends number[] = number[]>(...literals: T) => new SchemaNumber<T[number] extends never ? number : T[number], never>(null, literals),\n string: <T extends string[] = string[]>(...literals: T) => new SchemaString<T[number] extends never ? string : T[number], never>(null, literals),\n boolean: <T extends boolean = boolean>() => new SchemaBoolean<T, never>(),\n date: <T extends Date = Date>() => new SchemaDate<T, never>(),\n array: <T extends any>(schema: SchemaBase<T, never>) => new SchemaArray<SchemaBase<T, never>, never>(schema as any),\n object: <T extends {} = {}>(schema: T) => new SchemaObject<T, never>(schema),\n define: <T extends {}>(collectionName: string, schema: T) => new SchemaDefinition<T>(collectionName, schema)\n}","import { now } from \"../../performance\";\nimport { Tagged, uuid } from \"../../utilities\";\nimport { CompiledSchema, CompiledSchemaCore, InferType, ISchemaSubscription, SchemaId, SubscriptionChanges } from \"../types\";\n\ntype BroadcastChannelReceiverId = Tagged<string, \"BroadcastChannelReceiverId\">;\ntype SubscriptionListenerCallback<T> = (changes: StampedChanges<T>) => void;\ninterface ISubscriptionAction<T> {\n action(changes: StampedChanges<T>): void\n}\ntype StampedChanges<T> = { data: SubscriptionChanges<T>, timestamp: number };\n\nconst registry: Record<SchemaId, SchemaChannel<unknown>> = {};\n\nconst getChannelRegistry = <T>(schemaId: SchemaId): SchemaChannel<T> => {\n\n if (registry[schemaId]) {\n return registry[schemaId] as SchemaChannel<T>;\n }\n\n const channel = new SchemaChannel<T>(schemaId);\n\n registry[schemaId] = channel;\n\n return channel;\n}\n\n// Must have a sender and receiver. Sender cannot listen for it's own message\nclass SchemaChannel<T> {\n\n readonly sender: SchemaChannelSender<T>;\n readonly receiver: SchemaChannelReceiver<T>;\n\n constructor(schemaId: SchemaId) {\n this.sender = new SchemaChannelSender<T>(schemaId);\n this.receiver = new SchemaChannelReceiver<T>(schemaId);\n }\n}\n\nclass SchemaChannelSender<T> {\n\n private readonly broadcastChannel: BroadcastChannel;\n\n constructor(schemaId: SchemaId) {\n this.broadcastChannel = new BroadcastChannel(`__routier-schema-subscription-channel:${schemaId}`);\n }\n\n send(changes: StampedChanges<T>) {\n this.broadcastChannel.postMessage(changes)\n }\n}\n\nclass SchemaChannelReceiver<T> {\n\n private readonly broadcastChannel: BroadcastChannel;\n private subscriptions: SubscriptionListener<T>[] = [];\n\n constructor(schemaId: SchemaId) {\n this.broadcastChannel = new BroadcastChannel(`__routier-schema-subscription-channel:${schemaId}`);\n\n this.broadcastChannel.onmessage = (e) => {\n\n // We can't send to the same instance it is not possbile\n const stampedChanges = e.data as StampedChanges<T>;\n\n for (let i = 0, length = this.subscriptions.length; i < length; i++) {\n const subscription = this.subscriptions[i];\n\n subscription.action(stampedChanges);\n }\n };\n }\n\n addListener(id: BroadcastChannelReceiverId, listener: SubscriptionListenerCallback<T>) {\n this.subscriptions.push(new SubscriptionListener<T>(id, listener));\n }\n\n removeListeners(id: BroadcastChannelReceiverId) {\n this.subscriptions = this.subscriptions.filter(w => w.id !== id);\n }\n}\n\nclass SubscriptionListener<T> implements ISubscriptionAction<T> {\n\n readonly id: BroadcastChannelReceiverId;\n private readonly listener: SubscriptionListenerCallback<T>;\n\n constructor(id: BroadcastChannelReceiverId, listener: SubscriptionListenerCallback<T>) {\n this.id = id;\n this.listener = listener;\n }\n\n action(changes: StampedChanges<T>) {\n this.listener(changes);\n }\n}\n\nexport class SchemaSubscription<T extends {}> implements ISchemaSubscription<T> {\n\n private readonly id: BroadcastChannelReceiverId;\n private readonly schema: CompiledSchemaCore<T>;\n private readonly createdAt: number;\n\n constructor(schema: CompiledSchemaCore<T>, signal?: AbortSignal) {\n this.createdAt = now();\n this.id = uuid(8) as BroadcastChannelReceiverId;\n this.schema = schema;\n\n signal?.addEventListener(\"abort\", () => {\n this.dispose();\n }, { once: true });\n }\n\n send(changes: SubscriptionChanges<T>) {\n const regisry = getChannelRegistry<T>(this.schema.id);\n\n // cannot send raw data, needs to be preprocessed\n const preprocessedChanges: SubscriptionChanges<T> = {\n adds: new Array<InferType<T>>(changes.adds.length),\n removals: new Array<InferType<T>>(changes.removals.length),\n unknown: new Array<InferType<T>>(changes.unknown.length),\n updates: new Array<InferType<T>>(changes.updates.length),\n };\n\n for (let i = 0, length = changes.adds.length; i < length; i++) {\n preprocessedChanges.adds[i] = this.schema.preprocess(changes.adds[i]);\n }\n\n for (let i = 0, length = changes.removals.length; i < length; i++) {\n preprocessedChanges.removals[i] = this.schema.preprocess(changes.removals[i]);\n }\n\n for (let i = 0, length = changes.unknown.length; i < length; i++) {\n preprocessedChanges.unknown[i] = this.schema.preprocess(changes.unknown[i]);\n }\n\n for (let i = 0, length = changes.updates.length; i < length; i++) {\n preprocessedChanges.updates[i] = this.schema.preprocess(changes.updates[i]);\n }\n\n // Send message to all listeners.\n // Since we create a new listener when we do onMessage,\n // we don't need to worry about sending to ourselves, it \n // can't happen\n regisry.sender.send({\n data: preprocessedChanges,\n timestamp: now()\n });\n }\n\n onMessage(callback: (changes: SubscriptionChanges<T>) => void) {\n\n const regisry = getChannelRegistry<T>(this.schema.id);\n\n // Link the callback to an instance\n regisry.receiver.addListener(this.id, ({ data, timestamp }) => {\n\n if (timestamp < this.createdAt) {\n // Sent before the receiver was even created\n return;\n }\n\n // Changes were preprocessed before they were sent, need to postprocess them\n const postProcessedChanges: SubscriptionChanges<T> = {\n adds: new Array<InferType<T>>(data.adds.length),\n removals: new Array<InferType<T>>(data.removals.length),\n unknown: new Array<InferType<T>>(data.unknown.length),\n updates: new Array<InferType<T>>(data.updates.length),\n };\n\n for (let i = 0, length = data.adds.length; i < length; i++) {\n postProcessedChanges.adds[i] = this.schema.preprocess(data.adds[i]);\n }\n\n for (let i = 0, length = data.removals.length; i < length; i++) {\n postProcessedChanges.removals[i] = this.schema.preprocess(data.removals[i]);\n }\n\n for (let i = 0, length = data.unknown.length; i < length; i++) {\n postProcessedChanges.unknown[i] = this.schema.preprocess(data.unknown[i]);\n }\n\n for (let i = 0, length = data.updates.length; i < length; i++) {\n postProcessedChanges.updates[i] = this.schema.preprocess(data.updates[i]);\n }\n\n callback(postProcessedChanges);\n });\n }\n\n dispose() {\n this[Symbol.dispose]();\n }\n\n [Symbol.dispose](): void {\n const regisry = getChannelRegistry<T>(this.schema.id);\n\n // Remove listeners for this instance only\n regisry.receiver.removeListeners(this.id);\n }\n}","import { DefaultValue, FunctionBody, PropertyDeserializer, PropertySerializer, SchemaModifiers, SchemaTypes } from \"../../types\";\n\nexport abstract class SchemaBase<T extends any, TModifiers extends SchemaModifiers> {\n\n abstract instance: T;\n modifiers: TModifiers;\n\n isNullable: boolean = false;\n isUnmapped: boolean = false;\n isOptional: boolean = false;\n isKey: boolean = false;\n isIdentity: boolean = false;\n isReadonly: boolean = false;\n isDistict: boolean = false;\n indexes: string[] = [];\n fromPropertyName: string | null = null;\n\n injected: any = null;\n defaultValue: DefaultValue<T> | null = null;\n valueSerializer: PropertySerializer<T> | null = null;\n valueDeserializer: PropertyDeserializer<T> | null = null;\n type: SchemaTypes;\n functionBody: FunctionBody<any, T> | null;\n private _schemaBase = true;\n readonly literals: T[] = [];\n\n constructor(entity?: SchemaBase<T, TModifiers>, literals?: T[]) {\n\n if (entity != null) {\n this.valueSerializer = entity.valueSerializer;\n this.valueDeserializer = entity.valueDeserializer;\n this.functionBody = entity.functionBody;\n this.isNullable = entity.isNullable;\n this.isOptional = entity.isOptional;\n this.isKey = entity.isKey;\n this.isIdentity = entity.isIdentity;\n this.isReadonly = entity.isReadonly;\n this.defaultValue = entity.defaultValue;\n this.type = entity.type;\n this.injected = entity.injected;\n this.indexes = entity.indexes;\n this.fromPropertyName = entity.fromPropertyName;\n }\n\n if (literals) {\n this.literals = literals;\n }\n }\n}","export * from './SchemaBase';","import { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDeserialize } from \"./SchemaDeserialize\";\nimport { SchemaFrom } from \"./SchemaFrom\";\nimport { SchemaSerialize } from \"./SchemaSerialize\";\n\nexport class SchemaDefault<T extends any, I, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n instance: T;\n private _schemaDefault = true;\n\n constructor(defaultValue: DefaultValue<T, I>, injected: I, current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.injected = injected;\n this.defaultValue = defaultValue;\n }\n\n serialize(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"serialize\">(serializer, this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n}","import { PropertyDeserializer, PropertySerializer, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaFrom } from \"./SchemaFrom\";\nimport { SchemaSerialize } from \"./SchemaSerialize\";\n\nexport class SchemaDeserialize<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n instance: T;\n private _schemaDeserialize = true;\n\n constructor(deserializer: PropertyDeserializer<T>, current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.valueDeserializer = deserializer;\n }\n\n serialize(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"serialize\">(serializer, this);\n }\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n}","import { SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\n\nexport class SchemaDistinct<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n private _schemaDistinct = true;\n\n constructor(current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.isDistict = true;\n }\n}","import { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"./SchemaDefault\";\nimport { SchemaDeserialize } from \"./SchemaDeserialize\";\nimport { SchemaDistinct } from \"./SchemaDistinct\";\nimport { SchemaIdentity } from \"./SchemaIdentity\";\nimport { SchemaNullable } from \"./SchemaNullable\";\nimport { SchemaOptional } from \"./SchemaOptional\";\nimport { SchemaReadonly } from \"./SchemaReadonly\";\nimport { SchemaSerialize } from \"./SchemaSerialize\";\n\nexport class SchemaFrom<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n instance: T;\n private _schemaFrom = true;\n\n constructor(propertyName: string, current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.fromPropertyName = propertyName;\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n\n identity() {\n return new SchemaIdentity<T, TModifiers | \"identity\" | \"readonly\">(this);\n }\n\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n\n nullable() {\n return new SchemaNullable<T, TModifiers | \"nullable\">(this);\n }\n\n readonly() {\n return new SchemaReadonly<T, TModifiers | \"readonly\">(this);\n }\n\n serialize(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"serialize\">(serializer, this);\n }\n}","import { SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\n\nexport class SchemaIdentity<T, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n instance: T;\n private _schemaIdentity = true;\n\n constructor(current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.isIdentity = true;\n }\n}","import { uuidv4 } from \"../../../utilities\";\nimport { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"./SchemaDefault\";\nimport { SchemaDeserialize } from \"./SchemaDeserialize\";\nimport { SchemaDistinct } from \"./SchemaDistinct\";\nimport { SchemaFrom } from \"./SchemaFrom\";\nimport { SchemaNullable } from \"./SchemaNullable\";\nimport { SchemaOptional } from \"./SchemaOptional\";\nimport { SchemaReadonly } from \"./SchemaReadonly\";\nimport { SchemaSerialize } from \"./SchemaSerialize\";\n\nexport class SchemaIndex<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n private _schemaIndex = true;\n\n constructor(current: SchemaBase<T, TModifiers>, ...indexes: string[]) {\n super(current);\n this.instance = current.instance;\n\n if (indexes.length === 0) {\n indexes.push(uuidv4()); // Create our own unique index identifier\n }\n\n this.indexes = indexes;\n }\n\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n\n nullable() {\n return new SchemaNullable<T, TModifiers | \"nullable\">(this);\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n\n readonly() {\n return new SchemaReadonly<T, TModifiers | \"readonly\">(this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n\n serialize(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"serialize\">(serializer, this);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n}","import { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaIdentity } from \"./SchemaIdentity\";\nimport { SchemaDefault } from \"./SchemaDefault\";\nimport { DefaultValue, IdType, SchemaModifiers } from \"../../types\";\nimport { SchemaFrom } from \"./SchemaFrom\";\n\nexport class SchemaKey<T extends IdType, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n instance: T;\n private _schemaKey = true;\n\n constructor(current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.isKey = true;\n }\n\n identity() {\n return new SchemaIdentity<T, TModifiers | \"identity\">(this);\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n}","import { SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaOptional } from \"./SchemaOptional\";\n\nexport class SchemaNullable<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n instance: T;\n private _schemaNullable = true;\n\n constructor(current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.isNullable = true;\n }\n\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n}","import { SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaNullable } from \"./SchemaNullable\";\n\nexport class SchemaOptional<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n private _schemaOptional = true;\n\n constructor(current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.isOptional = true;\n }\n\n nullable() {\n return new SchemaNullable<T, TModifiers | \"nullable\">(this);\n }\n}","import { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"./SchemaDefault\";\nimport { SchemaDeserialize } from \"./SchemaDeserialize\";\nimport { SchemaFrom } from \"./SchemaFrom\";\nimport { SchemaSerialize } from \"./SchemaSerialize\";\n\nexport class SchemaReadonly<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n private _schemaReadonly = true;\n\n constructor(current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.isReadonly = true;\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n\n deserializer(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n\n serializer(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"deserialize\">(serializer, this);\n }\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n}","import { PropertyDeserializer, PropertySerializer, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDeserialize } from \"./SchemaDeserialize\";\n\nexport class SchemaSerialize<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n instance: T;\n private _schemaSerialize = true;\n\n constructor(serializer: PropertySerializer<T>, current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.valueSerializer = serializer;\n }\n\n deserialize(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n}","import { IdType, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaKey } from \"./SchemaKey\";\n\nexport class SchemaTracked<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n private _schemaTracked = true;\n\n constructor(current: SchemaBase<T, TModifiers>) {\n super(current);\n this.instance = current.instance;\n this.isUnmapped = false;\n }\n\n key(): T extends IdType ? SchemaKey<T, TModifiers | \"key\"> : never {\n return new SchemaKey(this as SchemaBase<T & IdType, TModifiers>) as T extends IdType ? SchemaKey<T, TModifiers | \"key\"> : never;\n }\n}","export * from './SchemaDefault';\nexport * from './SchemaDeserialize';\nexport * from './SchemaDistinct';\nexport * from './SchemaIdentity';\nexport * from './SchemaIndex';\nexport * from './SchemaKey';\nexport * from './SchemaNullable';\nexport * from './SchemaOptional';\nexport * from './SchemaReadonly';\nexport * from './SchemaSerialize';\nexport * from './SchemaTracked';\nexport * from './SchemaFrom';","import { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"../modifiers/SchemaDefault\";\nimport { SchemaNullable } from \"../modifiers/SchemaNullable\";\nimport { SchemaOptional } from \"../modifiers/SchemaOptional\";\nimport { SchemaDeserialize } from '../modifiers/SchemaDeserialize';\nimport { SchemaSerialize } from '../modifiers/SchemaSerialize';\nimport { SchemaIndex } from \"../modifiers/SchemaIndex\";\nimport { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers, SchemaTypes } from \"../../types\";\nimport { SchemaFrom } from \"../modifiers/SchemaFrom\";\n\nexport class SchemaArray<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T[], TModifiers> {\n\n instance: T[];\n type = SchemaTypes.Array;\n private _schemaArray = true;\n readonly innerSchema?: SchemaBase<any, any>; // we need to know the type of the array, that is what this is for\n\n constructor(entity?: SchemaBase<T[], TModifiers>, literals?: T[][]) {\n super(entity, literals);\n this.innerSchema = entity;\n }\n\n from(propertyName: string) {\n return new SchemaFrom<T[], TModifiers>(propertyName, this);\n }\n\n optional() {\n return new SchemaOptional<T[], TModifiers | \"optional\">(this);\n }\n\n nullable() {\n return new SchemaNullable<T[], TModifiers | \"nullable\">(this);\n }\n\n default<I = never>(value: DefaultValue<T[], I>, injected?: I) {\n return new SchemaDefault<T[], I, TModifiers | \"default\">(value, injected, this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T[]>) {\n return new SchemaDeserialize<T[], TModifiers | \"deserialize\">(deserializer, this);\n }\n\n serialize(serializer: PropertySerializer<T[]>) {\n return new SchemaSerialize<T[], TModifiers | \"serialize\">(serializer, this);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T[], TModifiers>(this as any, ...indexes);\n }\n}","import { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers, SchemaTypes } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"../modifiers/SchemaDefault\";\nimport { SchemaDeserialize } from \"../modifiers/SchemaDeserialize\";\nimport { SchemaDistinct } from \"../modifiers/SchemaDistinct\";\nimport { SchemaFrom } from \"../modifiers/SchemaFrom\";\nimport { SchemaIndex } from \"../modifiers/SchemaIndex\";\nimport { SchemaNullable } from \"../modifiers/SchemaNullable\";\nimport { SchemaOptional } from \"../modifiers/SchemaOptional\";\nimport { SchemaReadonly } from \"../modifiers/SchemaReadonly\";\nimport { SchemaSerialize } from \"../modifiers/SchemaSerialize\";\nimport { SchemaArray } from \"./SchemaArray\";\n\nexport class SchemaBoolean<T extends boolean, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n type = SchemaTypes.Boolean;\n private _schemaBoolean = true;\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n\n nullable() {\n return new SchemaNullable<T, TModifiers | \"nullable\">(this);\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n\n readonly() {\n return new SchemaReadonly<T, TModifiers | \"readonly\">(this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n\n serialize(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"serialize\">(serializer, this);\n }\n\n array() {\n return new SchemaArray<typeof this, TModifiers>(this as any);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this as any, ...indexes);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n}","import { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers, SchemaTypes } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"../modifiers/SchemaDefault\";\nimport { SchemaDeserialize } from \"../modifiers/SchemaDeserialize\";\nimport { SchemaDistinct } from \"../modifiers/SchemaDistinct\";\nimport { SchemaFrom } from \"../modifiers/SchemaFrom\";\nimport { SchemaIndex } from \"../modifiers/SchemaIndex\";\nimport { SchemaNullable } from \"../modifiers/SchemaNullable\";\nimport { SchemaOptional } from \"../modifiers/SchemaOptional\";\nimport { SchemaReadonly } from \"../modifiers/SchemaReadonly\";\nimport { SchemaSerialize } from \"../modifiers/SchemaSerialize\";\nimport { SchemaArray } from \"./SchemaArray\";\n\nexport class SchemaDate<T extends Date, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n type = SchemaTypes.Date;\n private _schemaDate = true;\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n\n nullable() {\n return new SchemaNullable<T, TModifiers | \"nullable\">(this);\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n readonly() {\n return new SchemaReadonly<T, TModifiers | \"readonly\">(this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n\n serialize(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"serialize\">(serializer, this);\n }\n\n array() {\n return new SchemaArray<typeof this, TModifiers>(this as any);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this as any, ...indexes);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n}","import { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers, SchemaTypes } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"../modifiers/SchemaDefault\";\nimport { SchemaDeserialize } from \"../modifiers/SchemaDeserialize\";\nimport { SchemaDistinct } from \"../modifiers/SchemaDistinct\";\nimport { SchemaFrom } from \"../modifiers/SchemaFrom\";\nimport { SchemaIdentity } from \"../modifiers/SchemaIdentity\";\nimport { SchemaIndex } from \"../modifiers/SchemaIndex\";\nimport { SchemaKey } from \"../modifiers/SchemaKey\";\nimport { SchemaNullable } from \"../modifiers/SchemaNullable\";\nimport { SchemaOptional } from \"../modifiers/SchemaOptional\";\nimport { SchemaReadonly } from \"../modifiers/SchemaReadonly\";\nimport { SchemaSerialize } from \"../modifiers/SchemaSerialize\";\nimport { SchemaArray } from \"./SchemaArray\";\n\nexport class SchemaNumber<T extends number, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n type = SchemaTypes.Number;\n private _schemaNumber = true;\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n\n nullable() {\n return new SchemaNullable<T, TModifiers | \"nullable\">(this);\n }\n\n key() {\n return new SchemaKey<T, TModifiers | \"key\">(this);\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n\n readonly() {\n return new SchemaReadonly<T, TModifiers | \"readonly\">(this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n\n serialize(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"serialize\">(serializer, this);\n }\n\n identity() {\n return new SchemaIdentity<T, TModifiers | \"identity\" | \"readonly\">(this);\n }\n\n array() {\n return new SchemaArray<typeof this, TModifiers>(this as any);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this as any, ...indexes);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n}","import { DefaultValue, SchemaModifiers, SchemaTypes } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"../modifiers/SchemaDefault\";\nimport { SchemaFrom } from \"../modifiers/SchemaFrom\";\nimport { SchemaIdentity } from \"../modifiers/SchemaIdentity\";\nimport { SchemaNullable } from \"../modifiers/SchemaNullable\";\nimport { SchemaOptional } from \"../modifiers/SchemaOptional\";\nimport { SchemaArray } from \"./SchemaArray\";\n\nexport class SchemaObject<T extends {}, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n type = SchemaTypes.Object;\n private _schemaObject = true;\n\n constructor(schema: T) {\n super();\n this.instance = schema;\n }\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n\n nullable() {\n return new SchemaNullable<T, TModifiers | \"nullable\">(this);\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n\n identity() {\n return new SchemaIdentity<T, TModifiers | \"identity\" | \"readonly\">(this);\n }\n\n array() {\n return new SchemaArray<typeof this, TModifiers>(this as any);\n }\n}","import { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers, SchemaTypes } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"../modifiers/SchemaDefault\";\nimport { SchemaDeserialize } from \"../modifiers/SchemaDeserialize\";\nimport { SchemaDistinct } from \"../modifiers/SchemaDistinct\";\nimport { SchemaFrom } from \"../modifiers/SchemaFrom\";\nimport { SchemaIdentity } from \"../modifiers/SchemaIdentity\";\nimport { SchemaIndex } from \"../modifiers/SchemaIndex\";\nimport { SchemaKey } from \"../modifiers/SchemaKey\";\nimport { SchemaNullable } from \"../modifiers/SchemaNullable\";\nimport { SchemaOptional } from \"../modifiers/SchemaOptional\";\nimport { SchemaReadonly } from \"../modifiers/SchemaReadonly\";\nimport { SchemaSerialize } from \"../modifiers/SchemaSerialize\";\nimport { SchemaArray } from \"./SchemaArray\";\n\nexport class SchemaString<T extends string, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n\n instance: T;\n type = SchemaTypes.String;\n private _schemaString = true;\n\n from(propertyName: string) {\n return new SchemaFrom<T, TModifiers>(propertyName, this);\n }\n\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n\n nullable() {\n return new SchemaNullable<T, TModifiers | \"nullable\">(this);\n }\n\n key() {\n return new SchemaKey<T, TModifiers | \"key\">(this);\n }\n\n default<I = never>(value: DefaultValue<T, I>, injected?: I) {\n return new SchemaDefault<T, I, TModifiers | \"default\">(value, injected, this);\n }\n\n readonly() {\n return new SchemaReadonly<T, TModifiers | \"readonly\">(this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T>) {\n return new SchemaDeserialize<T, TModifiers | \"deserialize\">(deserializer, this);\n }\n\n serialize(serializer: PropertySerializer<T>) {\n return new SchemaSerialize<T, TModifiers | \"serialize\">(serializer, this);\n }\n\n identity() {\n return new SchemaIdentity<T, TModifiers | \"identity\" | \"readonly\">(this);\n }\n\n array() {\n return new SchemaArray<typeof this, TModifiers>(this as any);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this as any, ...indexes);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n}","export * from './SchemaArray';\nexport * from './SchemaBoolean';\nexport * from './SchemaDate';\nexport * from './SchemaNumber';\nexport * from './SchemaObject';\nexport * from './SchemaString';","import { SchemaBase } from \"../property/base/SchemaBase\";\nimport { SchemaTracked } from '../property/modifiers/SchemaTracked';\nimport { SchemaModifiers, SchemaTypes } from \"../types\";\n\nexport class SchemaComputed<T extends any, I, TModifiers extends SchemaModifiers = \"computed\"> extends SchemaBase<T, TModifiers> {\n instance: T;\n type = SchemaTypes.Computed;\n private _schemaComputed = true;\n\n constructor(fn: T, injected: I, current?: SchemaBase<T, TModifiers>) {\n super(current);\n this.injected = injected;\n this.isUnmapped = true;\n this.functionBody = fn as any;\n }\n\n tracked() {\n return new SchemaTracked<T, Exclude<TModifiers, \"unmapped\">>(this as unknown as SchemaBase<T, Exclude<TModifiers, \"unmapped\">>);\n }\n}","import { SchemaBase } from \"../property/base/SchemaBase\";\nimport { SchemaModifiers, SchemaTypes } from \"../types\";\n\nexport class SchemaFunction<T extends any, I, TModifiers extends SchemaModifiers = \"unmapped\"> extends SchemaBase<() => T, TModifiers> {\n instance: () => T;\n type = SchemaTypes.Function;\n private _schemaFunction = true;\n\n constructor(fn: (injected: I) => T, injected: I, current?: SchemaBase<() => T, TModifiers>) {\n super(current);\n this.injected = injected;\n this.isUnmapped = true;\n this.functionBody = fn as any;\n }\n}","export * from './SchemaComputed';\nexport * from './SchemaFunction';","import { SchemaDefinition } from \"./SchemaDefinition\";\nimport { SchemaBase } from \"./property/base/SchemaBase\";\nimport { SchemaArray } from \"./property/types/SchemaArray\";\nimport { SchemaObject } from \"./property/types/SchemaObject\";\nimport { PropertyInfo } from \"./PropertyInfo\";\nimport { DeepPartial } from \"../types\";\nimport { SchemaFunction } from \"./table\";\nimport { SchemaString } from \"./property/types\";\nimport { SchemaOptional } from \"./property/modifiers\";\n\nexport type DefaultValue<T, I = never> = T | ((injected: I) => T);\nexport type FunctionBody<TEntity, TResult> = (entity: TEntity, collectionName: string) => TResult;\nexport type IdType = string | number;\n\nexport enum SchemaTypes {\n Array = \"Array\",\n Boolean = \"Boolean\",\n Date = \"Date\",\n Number = \"Number\",\n Object = \"Object\",\n String = \"String\",\n Definition = \"Definition\",\n Function = \"Function\",\n Computed = \"Computed\"\n}\n\nexport type ArrayShape = string | number | Date | {};\n\nexport type ExpandedProperty = ExpandedChildProperty & {\n assignmentPath: string;\n selectorPath: string;\n properties: Map<string, ExpandedChildProperty>;\n childDegree: number;\n};\n\nexport type ExpandedChildProperty = {\n propertyName: string;\n type: SchemaTypes;\n isNullableOrOptional: boolean;\n isReadonly: boolean;\n isIdentity: boolean;\n isUnmapped: boolean;\n}\n\nexport enum HashType {\n Ids = \"Ids\",\n Object = \"Object\"\n}\n\nexport type HashFunction<TEntity extends {}> = {\n (entity: InferCreateType<TEntity>, type: HashType.Object): string;\n (entity: InferType<TEntity>, type: HashType.Ids): string;\n}\n\nexport type GetHashTypeFunction<TEntity extends {}> = {\n (entity: InferCreateType<TEntity>): HashType.Object;\n (entity: InferType<TEntity>): HashType.Ids;\n}\n\nexport type ChangeTrackingType = \"proxy\" | \"diff\" | \"immutable\";\n\nexport type IndexType = \"single\" | \"compound\" | \"unique\" | \"primary-key\"\nexport type Index = {\n properties: PropertyInfo<any>[],\n type: IndexType;\n name: string;\n}\n\n/**\n * Represents changes to subscriptions, categorizing them by modifications to\n * entities (additions, updates, removals) or query-driven removals.\n * @template T - The type of the entities in the subscription.\n */\nexport type SubscriptionChanges<T extends {}> = {\n /**\n * Entities that have been added to the subscription.\n */\n adds: InferType<T>[];\n /**\n * Entities that have been updated within the subscription.\n */\n updates: InferType<T>[];\n /**\n * Entities that have been removed from the subscription.\n */\n removals: InferType<T>[];\n /**\n * Entities that have been added/updated/removed from the subscription and it is unknown \n * if the entities have been added/updated/removed.\n */\n unknown: InferType<T>[];\n}\n\nexport interface ISchemaSubscription<T extends {}> extends Disposable {\n send(changes: SubscriptionChanges<T>): void;\n onMessage(callback: (changes: SubscriptionChanges<T>) => void): void;\n}\n\ntype Enrich<TEntity extends {}> = {\n (entity: InferType<TEntity>, changeTrackingType: ChangeTrackingType): InferType<TEntity>;\n (entity: InferCreateType<TEntity>, changeTrackingType: ChangeTrackingType): InferCreateType<TEntity>;\n}\nexport type Prepare<TEntity extends {}> = {\n (entity: InferCreateType<TEntity>): InferCreateType<TEntity>;\n (entity: InferType<TEntity>): InferType<TEntity>;\n}\nexport type Preprocess<TEntity extends {}> = {\n (entity: InferCreateType<TEntity>): InferType<TEntity>;\n (entity: InferType<TEntity>): InferType<TEntity>;\n}\n\nexport type CompiledSchemaCore<TEntity extends {}> = Omit<CompiledSchema<TEntity>, \"createSubscription\">;\n\n/**\n * Represents a fully compiled schema with all utilities and metadata for an entity type.\n */\nexport type CompiledSchema<TEntity extends {}> = {\n\n deserializePartial: (item: Record<string, unknown>, properties: PropertyInfo<TEntity>[]) => DeepPartial<InferType<TEntity>>;\n\n createSubscription: (abortSignal?: AbortSignal) => ISchemaSubscription<TEntity>;\n /** Returns the property info for a given id (full path) */\n getProperty: (id: string) => PropertyInfo<TEntity>;\n /** Returns the ID of the given entity. */\n getId: (entity: InferType<TEntity>) => IdType;\n /** Returns a deep clone of the given entity. */\n clone: (entity: InferType<TEntity>) => InferType<TEntity>;\n /** Removes unmapped or extraneous properties from the entity. */\n strip: (entity: InferType<TEntity>) => InferType<TEntity>;\n /** Prepares a new entity for creation, applying defaults and transformations. */\n prepare: Prepare<TEntity>;\n /** Merges the source entity into the destination entity. */\n merge: (destination: InferType<TEntity> | InferCreateType<TEntity>, source: InferType<TEntity>) => InferType<TEntity>;\n /** Indicates if the schema has identity properties. */\n hasIdentities: boolean;\n /** List of properties that are identity keys. */\n idProperties: PropertyInfo<TEntity>[];\n /** All property metadata for the schema. */\n properties: PropertyInfo<TEntity>[],\n /** The hash type used for this schema. */\n hashType: HashType;\n /** Computes a hash for the given entity. */\n hash: HashFunction<TEntity>;\n /** Returns the hash type for the given entity. */\n getHashType: GetHashTypeFunction<TEntity>;\n /** Compares two entities for equality. */\n compare: (a: InferType<TEntity>, fromDb: InferType<TEntity>) => boolean;\n /** Deserializes an entity from storage format. */\n deserialize: (entity: InferType<TEntity>) => InferType<TEntity>;\n\n /** Combines serializing and preparing an entity for saving. */\n preprocess: Preprocess<TEntity>;\n /** Combines deserializing and enriching an entity for selection. */\n postprocess: Enrich<TEntity>;\n\n /** Serializes an entity to storage format. */\n serialize: (entity: InferType<TEntity>) => InferType<TEntity>;\n /** Unique id for the schema. */\n id: SchemaId,\n /** The name of the collection for this schema. */\n collectionName: string;\n /** Returns all IDs for the given entity (usually a single-element tuple). */\n getIds: (entity: InferType<TEntity>) => [IdType];\n /** Enriches the entity with change tracking or other metadata. */\n enrich: Enrich<TEntity>;\n /** Indicates if the schema has identity keys. */\n hasIdentityKeys: boolean;\n /** Returns a deeply frozen (immutable) version of the entity. */\n freeze: (entity: InferType<TEntity>) => InferType<TEntity>;\n /** Enables change tracking on the entity. */\n enableChangeTracking: (entity: InferType<TEntity>) => InferType<TEntity>;\n /** The schema definition object. */\n definition: SchemaDefinition<TEntity>;\n /** Returns all indexes defined for this schema. */\n getIndexes: () => Index[];\n /** Compares two entities for Id equality. */\n compareIds: (a: InferType<TEntity>, b: InferType<TEntity>) => boolean;\n}\n\nexport type PropertySerializer<T extends any> = (value: T) => string | number;\nexport type PropertyDeserializer<T extends any> = (value: string | number) => T;\n\nexport type SchemaId = number\n\nexport type SchemaModifiers = \"default\" | \"deserialize\" |\n \"identity\" | \"key\" |\n \"nullable\" | \"optional\" |\n \"readonly\" | \"serialize\" |\n \"unmapped\" | \"computed\" |\n \"distinct\";\n\ntype InferPrimitive<T> =\n T extends SchemaOptional<infer C, infer __> ? C extends (string | number | Date) ? C : { [K in keyof C]: InferPrimitive<C[K]> } :\n T extends SchemaArray<infer Y, infer __> ? InferPrimitive<Y>[]\n : T extends SchemaObject<infer Obj, infer _> ?\n { [K in keyof Obj]: InferPrimitive<Obj[K]> } : // Process nested objects\n T extends SchemaFunction<infer F, infer __> ? F : T extends SchemaBase<infer X, infer _> ?\n X extends Array<infer A> ? InferPrimitive<A>[] : X : // Extract the primitive type\n never;\n\nexport type InferType<T> = T extends CompiledSchema<infer R> ? InferCompiledSchema<R> : T extends {} ? InferCompiledSchema<T> : T;\nexport type InferCreateType<T> = T extends CompiledSchema<infer R> ? InferCompiledCreateSchema<R> : T extends {} ? InferCompiledCreateSchema<T> : unknown;\nexport type InferMappedType<T> = T extends SchemaBase<infer K, infer __> ? InferType<K> : InferCompiledSchema<T>;\n\ntype HasModifier<T, K extends keyof T, M extends SchemaModifiers> =\n T[K] extends SchemaBase<any, infer Mods> ?\n M extends Mods ? true : false :\n false;\n\ntype IsPlainProperty<T, K extends keyof T> =\n [\n HasModifier<T, K, \"readonly\">,\n HasModifier<T, K, \"optional\">,\n HasModifier<T, K, \"nullable\">\n ] extends [\n false,\n false,\n false\n ] ? true : false;\n\ntype IsPlainCreateProperty<T, K extends keyof T> =\n [\n HasModifier<T, K, \"identity\">,\n HasModifier<T, K, \"default\">,\n HasModifier<T, K, \"computed\">,\n HasModifier<T, K, \"unmapped\">,\n HasModifier<T, K, \"optional\">,\n HasModifier<T, K, \"nullable\">\n ] extends [\n false,\n false,\n false,\n false,\n false,\n false\n ] ? true : false;\n\ntype InferCompiledSchema<T> = CoalesceEmpty<{\n [K in keyof T as IsPlainProperty<T, K> extends true ? K : never]: InferPrimitive<T[K]>\n}, {\n readonly [K in keyof T as HasModifier<T, K, \"readonly\"> extends true ? K : never]: InferPrimitive<T[K]>\n }, {\n [K in keyof T as HasModifier<T, K, \"optional\"> extends true ? K : never]?: InferPrimitive<T[K]>\n }, {\n [K in keyof T as HasModifier<T, K, \"nullable\"> extends true ? K : never]: null | InferPrimitive<T[K]>\n }>;\n\ntype InferCompiledCreateSchema<T> = CoalesceEmpty<{\n [K in keyof T as IsPlainCreateProperty<T, K> extends true ? K : never]: InferPrimitive<T[K]>\n}, {\n [K in keyof T as HasModifier<T, K, \"optional\"> extends true ? K : never]?: InferPrimitive<T[K]>\n }, {\n [K in keyof T as HasModifier<T, K, \"default\"> extends true ? K : never]?: InferPrimitive<T[K]>\n }, {\n [K in keyof T as HasModifier<T, K, \"nullable\"> extends true ? K : never]: null | InferPrimitive<T[K]>\n }>;\n\ntype IsEmptyObject<T> = keyof T extends never ? true : false;\ntype CoalesceEmpty<T1 extends {}, T2 extends {}, T3 extends {}, T4 extends {}> = (IsEmptyObject<T1> extends true ? {} : T1) & (IsEmptyObject<T2> extends true ? {} : T2) & (IsEmptyObject<T3> extends true ? {} : T3) & (IsEmptyObject<T4> extends true ? {} : T4);\n","export const hash = (value: string, seed: number = 0) => {\n // From Stack Overflow\n // https://stackoverflow.com/a/52171480/3329760\n let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;\n\n for (let i = 0, ch: number; i < value.length; i++) {\n ch = value.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507);\n h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507);\n h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n\n return 4294967296 * (2097151 & h2) + (h1 >>> 0);\n}\n\n/**\n * Fast string hash optimized for comparisons.\n * Uses djb2 algorithm - very fast and good distribution for short to medium strings.\n * Same input always produces same output (deterministic).\n * \n * @param value - The string to hash\n * @param seed - Optional seed value (default: 5381)\n * @returns A positive 32-bit integer hash value\n * \n * @example\n * ```ts\n * fastHash(\"test\") === fastHash(\"test\") // true\n * fastHash(\"test\") !== fastHash(\"test2\") // true\n * ```\n */\nexport const fastHash = (value: string, seed: number = 5381): number => {\n let hash = seed;\n for (let i = 0; i < value.length; i++) {\n hash = ((hash << 5) + hash) + value.charCodeAt(i);\n }\n return hash >>> 0; // Convert to unsigned 32-bit integer\n}\n\n/**\n * Converts any value to a readable string representation.\n * Handles primitives, objects, arrays, classes, dates, errors, and functions.\n * Supports depth limiting to prevent infinite recursion on circular references.\n * \n * @param obj - The value to stringify\n * @param maxDepth - Maximum depth for nested objects (default: 3)\n * @param currentDepth - Current recursion depth (default: 0)\n * @returns String representation of the value\n * \n * @example\n * ```ts\n * stringifyObject({ name: \"test\", count: 5 }) // '{ name: \"test\", count: 5 }'\n * stringifyObject([1, 2, 3]) // '[1, 2, 3]'\n * stringifyObject(new Date()) // 'Date(2024-01-01T00:00:00.000Z)'\n * ```\n */\nexport function stringifyObject(obj: unknown, maxDepth: number = 3, currentDepth: number = 0): string {\n if (obj === null) return 'null';\n if (obj === undefined) return 'undefined';\n\n const type = typeof obj;\n\n switch (type) {\n case 'string':\n return `\"${obj}\"`;\n case 'number':\n case 'boolean':\n return String(obj);\n case 'function':\n return `[Function: ${getFunctionName(obj as Function)}]`;\n case 'object':\n if (currentDepth >= maxDepth) {\n return '[Max Depth Reached]';\n }\n return stringifyObjectValue(obj, maxDepth, currentDepth);\n default:\n return `[${type}]`;\n }\n}\n\nfunction getFunctionName(fn: Function): string {\n const name = fn.name;\n return name || 'anonymous';\n}\n\nfunction getObjectProperties(obj: any): Record<string, any> {\n const properties: Record<string, any> = {};\n\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n properties[key] = obj[key];\n }\n }\n\n return properties;\n}\n\nfunction stringifyObjectValue(obj: any, maxDepth: number, currentDepth: number): string {\n if (obj === null) return 'null';\n\n if (obj instanceof Date) {\n return `Date(${obj.toISOString()})`;\n }\n\n if (obj instanceof Error) {\n return `Error(${obj.message})`;\n }\n\n if (obj instanceof RegExp) {\n return obj.toString();\n }\n\n if (Array.isArray(obj)) {\n return stringifyArray(obj, maxDepth, currentDepth);\n }\n\n if (obj.constructor && obj.constructor.name !== 'Object') {\n return stringifyClassInstance(obj, maxDepth, currentDepth);\n }\n\n return stringifyPlainObject(obj, maxDepth, currentDepth);\n}\n\nfunction stringifyArray(arr: any[], maxDepth: number, currentDepth: number): string {\n if (arr.length === 0) return '[]';\n\n const items = arr.slice(0, 5).map(item =>\n stringifyObject(item, maxDepth, currentDepth + 1)\n );\n\n const suffix = arr.length > 5 ? `... (+${arr.length - 5} more)` : '';\n return `[${items.join(', ')}${suffix}]`;\n}\n\nfunction stringifyClassInstance(obj: any, maxDepth: number, currentDepth: number): string {\n const className = obj.constructor.name;\n const properties = getObjectProperties(obj);\n\n if (Object.keys(properties).length === 0) {\n return `${className} {}`;\n }\n\n const props = Object.entries(properties)\n .slice(0, 5)\n .map(([key, value]) => {\n const isPrimitive = value === null || value === undefined ||\n (typeof value !== 'object' && typeof value !== 'function');\n const depth = isPrimitive ? currentDepth : currentDepth + 1;\n return `${key}: ${stringifyObject(value, maxDepth, depth)}`;\n });\n\n const suffix = Object.keys(properties).length > 5 ?\n `... (+${Object.keys(properties).length - 5} more)` : '';\n\n return `${className} { ${props.join(', ')}${suffix} }`;\n}\n\nfunction stringifyPlainObject(obj: any, maxDepth: number, currentDepth: number): string {\n const properties = getObjectProperties(obj);\n\n if (Object.keys(properties).length === 0) {\n return '{}';\n }\n\n const props = Object.entries(properties)\n .slice(0, 5)\n .map(([key, value]) => {\n const isPrimitive = value === null || value === undefined ||\n (typeof value !== 'object' && typeof value !== 'function');\n const depth = isPrimitive ? currentDepth : currentDepth + 1;\n return `${key}: ${stringifyObject(value, maxDepth, depth)}`;\n });\n\n const suffix = Object.keys(properties).length > 5 ?\n `... (+${Object.keys(properties).length - 5} more)` : '';\n\n return `{ ${props.join(', ')}${suffix} }`;\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\nexport const uuidv4 = (): 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))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export * from './builder';\nexport * from './table';\nexport * from './property/base';\nexport * from './property/modifiers';\nexport * from './property/types';\nexport * from './PropertyInfo';\nexport * from './types';"],"names":[],"mappings":"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"}
|