@routier/core 0.1.0-rc.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/assertions/index.d.ts +30 -0
  2. package/dist/assertions/index.js +92 -19
  3. package/dist/assertions/index.js.map +1 -1
  4. package/dist/capabilities/index.js +75 -105
  5. package/dist/capabilities/index.js.map +1 -1
  6. package/dist/codegen/blocks.test.d.ts +1 -0
  7. package/dist/codegen/handlers/SetHandlerBuilder.d.ts +4 -0
  8. package/dist/codegen/handlers/index.d.ts +1 -0
  9. package/dist/codegen/handlers/serialize/SerializeComputedHandler.d.ts +6 -0
  10. package/dist/codegen/handlers/set/SetComplexHandler.d.ts +6 -0
  11. package/dist/codegen/index.js +22 -36
  12. package/dist/codegen/index.js.map +1 -1
  13. package/dist/codegen/utils.test.d.ts +1 -0
  14. package/dist/collections/Changes.d.ts +2 -2
  15. package/dist/collections/IdSet.test.d.ts +1 -0
  16. package/dist/collections/TagCollection.contract.test.d.ts +1 -0
  17. package/dist/collections/TagCollection.d.ts +7 -7
  18. package/dist/collections/index.js +50 -93
  19. package/dist/collections/index.js.map +1 -1
  20. package/dist/errors/index.js +4 -15
  21. package/dist/errors/index.js.map +1 -1
  22. package/dist/expressions/constants.d.ts +2 -0
  23. package/dist/expressions/index.d.ts +2 -0
  24. package/dist/expressions/index.js +450 -114
  25. package/dist/expressions/index.js.map +1 -1
  26. package/dist/expressions/sql.d.ts +28 -0
  27. package/dist/expressions/sql.test.d.ts +1 -0
  28. package/dist/expressions/utils.d.ts +1 -2
  29. package/dist/index.js +3058 -2618
  30. package/dist/index.js.map +1 -1
  31. package/dist/performance/index.js +22 -22
  32. package/dist/performance/index.js.map +1 -1
  33. package/dist/pipeline/index.js +48 -60
  34. package/dist/pipeline/index.js.map +1 -1
  35. package/dist/plugins/index.d.ts +0 -1
  36. package/dist/plugins/index.js +268 -937
  37. package/dist/plugins/index.js.map +1 -1
  38. package/dist/plugins/query/Query.test.d.ts +1 -0
  39. package/dist/plugins/query/QueryOptionsCollection.d.ts +1 -0
  40. package/dist/plugins/translators/SqlTranslator.test.d.ts +1 -0
  41. package/dist/plugins/translators/TranslatedArrayValue.d.ts +3 -1
  42. package/dist/plugins/translators/TranslatedGroupValue.d.ts +3 -1
  43. package/dist/plugins/translators/TranslatedSingleValue.d.ts +3 -1
  44. package/dist/plugins/translators/TranslatedValues.test.d.ts +1 -0
  45. package/dist/plugins/translators/types.d.ts +8 -1
  46. package/dist/plugins/types.d.ts +6 -10
  47. package/dist/results/Result.d.ts +2 -2
  48. package/dist/results/Result.test.d.ts +1 -0
  49. package/dist/results/index.js +11 -26
  50. package/dist/results/index.js.map +1 -1
  51. package/dist/results/utils.test.d.ts +1 -0
  52. package/dist/schema/PropertyInfo.d.ts +5 -1
  53. package/dist/schema/SchemaDefinition.d.ts +35 -6
  54. package/dist/schema/communication/broadcast.test.d.ts +1 -0
  55. package/dist/schema/index.d.ts +2 -0
  56. package/dist/schema/index.js +2115 -1513
  57. package/dist/schema/index.js.map +1 -1
  58. package/dist/schema/property/base/SchemaBase.d.ts +3 -1
  59. package/dist/schema/property/modifiers/SchemaDeserialize.d.ts +5 -1
  60. package/dist/schema/property/modifiers/SchemaForeignKey.d.ts +15 -0
  61. package/dist/schema/property/modifiers/SchemaKey.d.ts +2 -0
  62. package/dist/schema/property/modifiers/SchemaNullable.d.ts +5 -1
  63. package/dist/schema/property/modifiers/SchemaOptional.d.ts +3 -1
  64. package/dist/schema/property/modifiers/SchemaTag.d.ts +27 -0
  65. package/dist/schema/property/modifiers/SchemaTracked.d.ts +5 -1
  66. package/dist/schema/property/modifiers/index.d.ts +2 -0
  67. package/dist/schema/property/types/SchemaArray.d.ts +2 -0
  68. package/dist/schema/property/types/SchemaBoolean.d.ts +2 -0
  69. package/dist/schema/property/types/SchemaDate.d.ts +2 -0
  70. package/dist/schema/property/types/SchemaNumber.d.ts +5 -1
  71. package/dist/schema/property/types/SchemaObject.d.ts +2 -0
  72. package/dist/schema/property/types/SchemaString.d.ts +5 -1
  73. package/dist/schema/types.d.ts +41 -29
  74. package/dist/schema/utils/standardJsonSchema.d.ts +90 -0
  75. package/dist/schema/utils/standardJsonSchema.test.d.ts +1 -0
  76. package/dist/types/index.js +0 -6
  77. package/dist/types/index.js.map +1 -1
  78. package/dist/utilities/functions.d.ts +1 -1
  79. package/dist/utilities/index.js +213 -138
  80. package/dist/utilities/index.js.map +1 -1
  81. package/dist/utilities/runtime.test.d.ts +1 -0
  82. package/dist/utilities/types.d.ts +17 -2
  83. package/dist/utilities/uuid.test.d.ts +1 -0
  84. package/package.json +2 -2
  85. package/readme.md +1 -1
  86. package/dist/plugins/replication/OptimisticReplicationDbPlugin.d.ts +0 -22
  87. package/dist/plugins/replication/ReplicationDbPlugin.d.ts +0 -22
  88. package/dist/plugins/replication/index.d.ts +0 -3
  89. package/dist/plugins/replication/types.d.ts +0 -4
  90. package/dist/schema/testSchemas.test.d.ts +0 -314
  91. /package/dist/{pipeline/WorkPipeline.test.d.ts → codegen/SlotPath.test.d.ts} +0 -0
@@ -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/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/logger.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}","import { logger } from \"../utilities\";\n\nconst 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 logger.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: UnknownRecord, 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[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, ...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 unknown as SchemaArray<typeof this, TModifiers>);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this, ...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 unknown as SchemaArray<typeof this, TModifiers>);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this, ...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 constrain<K extends T>() {\n return new SchemaNumber<K, TModifiers>(this as unknown as SchemaBase<K, TModifiers>);\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 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 unknown as SchemaArray<typeof this, TModifiers>);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this, ...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 unknown as SchemaArray<typeof this, TModifiers>);\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 constrain<K extends T>() {\n return new SchemaString<K, TModifiers>(this as unknown as SchemaBase<K, TModifiers>);\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 unknown as SchemaArray<typeof this, TModifiers>);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this, ...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","const isDevelopment = (): boolean => {\n if (typeof process === 'undefined' || process.env == null) {\n return false;\n }\n const env = process.env.NODE_ENV?.toLowerCase();\n return env === 'dev' || env === 'development' || env === 'test';\n};\n\ntype LogMethods = \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\" | \"table\";\nconst shouldLog = isDevelopment();\nconst tryLog = (type: LogMethods, ...args: unknown[]) => {\n if (shouldLog) {\n console[type](...args);\n }\n};\n\nexport const logger = {\n log: (...args: unknown[]): void => {\n tryLog(\"log\", ...args);\n },\n info: (...args: unknown[]): void => {\n tryLog(\"info\", ...args);\n },\n warn: (...args: unknown[]): void => {\n tryLog(\"warn\", ...args);\n },\n error: (...args: unknown[]): void => {\n tryLog(\"error\", ...args);\n },\n debug: (...args: unknown[]): void => {\n tryLog(\"debug\", ...args);\n },\n table: (...args: unknown[]): void => {\n tryLog(\"table\", ...args);\n },\n};\n\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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"}
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/SetHandlerBuilder.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/SerializeComputedHandler.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/set/SetComplexHandler.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/SchemaForeignKey.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/SchemaTag.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/schema/utils/standardJsonSchema.ts","webpack://@routier/core/./src/utilities/logger.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 // oxlint-disable-next-line no-this-alias\n let result: Block = this;\n\n for (const item of split) {\n const found = result._lines.find(w => typeof w !== \"string\" && w.name === item) as Block;\n\n if (found == null) {\n\n if (\"getValue\" in result && result.getValue instanceof Block && result.getValue.name === item) {\n result = result.getValue;\n continue;\n }\n\n return undefined;\n }\n\n result = found;\n }\n\n return result as T;\n }\n\n get<T extends Block>(name: string): T {\n const found = this.getOrDefault(name);\n\n if (found == null) {\n throw new Error(`Error finding code block for given path. Path: ${name}`)\n }\n\n return found as T;\n }\n\n has(name: string) {\n return this._lines.some(w => typeof w !== \"string\" && w.name === name);\n }\n\n remove(name: string) {\n this._lines = this._lines.filter(x => typeof x === \"object\" && typeof x.name === \"string\" && x.name !== name);\n }\n\n replace(name: string, line: Block) {\n\n const foundIndex = this._lines.findIndex(x => typeof x !== \"string\" && x.name === name);\n\n if (foundIndex === -1) {\n throw new Error(`Cannot find line by name. Name: ${name}`)\n }\n\n const found = this._lines[foundIndex];\n\n if (typeof found === \"string\") {\n // Replace the line\n this._lines.splice(foundIndex, 1, line);\n return;\n }\n\n line.setLines(found.getLines());\n line.setIndent(found.getIndent());\n line.setParent(found.getParent());\n\n // Replace the line\n this._lines.splice(foundIndex, 1, line);\n\n return;\n }\n\n protected push(line: Line) {\n this._lines.push(line);\n }\n\n protected unshift(line: Line) {\n this._lines.unshift(line);\n }\n\n protected indent(text: string): string {\n return this._indent + text;\n }\n\n\n abstract toString(): string;\n}\n\nexport abstract class ContainerBlock extends Block {\n if(condition: string, options?: CreateBlockOptions): IfBuilder {\n const builder = new IfBuilder(condition, options?.name, this._indent + \" \", this);\n if (options?.unshift === true) {\n this.unshift(builder);\n } else {\n this.push(builder);\n }\n\n return builder;\n }\n\n raw(raw: string, options?: CreateBlockOptions): RawBuilder {\n const builder = new RawBuilder(raw, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n function(name?: string, options?: CreateBlockOptions): FunctionBuilder {\n const builder = new FunctionBuilder(name, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n factory(name?: string, options?: CreateBlockOptions): FunctionFactoryBuilder {\n const builder = new FunctionFactoryBuilder(name, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n variable(declaration: string, options?: CreateBlockOptions): VariableBuilder {\n const builder = new VariableBuilder(declaration, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n assign(variableName: string, options?: CreateBlockOptions): AssignmentBuilder {\n const builder = new AssignmentBuilder(variableName, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n object(options?: CreateBlockOptions): ObjectBuilder {\n const builder = new ObjectBuilder(options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n slot(name: string) {\n const builder = new SlotBlock(name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n\n array(accessor: string, options?: CreateBlockOptions) {\n const builder = new ArrayBuilder(accessor, options?.name, this._indent + \" \", this);\n this.push(builder);\n return builder;\n }\n}\n\nexport type StringType = \"template\" | \"default\";\n\nexport class StringBuilder extends Block {\n\n private _type: StringType;\n\n constructor(type: StringType, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._type = type;\n }\n\n append(value: string) {\n this._lines.push(value);\n return this;\n }\n\n toString() {\n if (this._type === \"template\") {\n return \"`\" + this._lines.join(\"\") + \"`\";\n }\n\n return `\"${this._lines.join(\"\")}\"`;\n }\n}\n\nexport class SlotBlock extends ContainerBlock {\n\n constructor(name: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n }\n\n insert(line: string | Block) {\n this.push(line);\n }\n\n toString(): string {\n return this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(line)\n : line.toString()\n ).join('\\n\\n');\n }\n}\n\nexport class AssignmentBuilder extends ContainerBlock {\n protected _variableName: string;\n protected _value?: string | Block;\n protected _functionName?: string;\n\n get getValue() {\n return this._value;\n }\n\n constructor(variableName: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._variableName = variableName;\n }\n\n value(value: string): this {\n this._value = value;\n return this;\n }\n\n and(and: string, options?: CreateBlockOptions): this {\n this._value = new AndBuilder(and, options?.name, this._indent, this);\n return this;\n }\n\n object(options?: CreateBlockOptions): ObjectBuilder {\n const objectBuilder = new ObjectBuilder(options?.name, this._indent, this);\n\n this._value = objectBuilder;\n\n return objectBuilder;\n }\n\n call(functionName: string, options?: CreateBlockOptions): ObjectBuilder {\n this._functionName = functionName;\n const objectBuilder = new ObjectBuilder(options?.name, this._indent, this);\n\n this._value = objectBuilder;\n\n return objectBuilder;\n }\n\n string(type: StringType, options?: CreateBlockOptions) {\n const stringBuilder = new StringBuilder(type, options?.name, this._indent, this);\n\n this._value = stringBuilder;\n\n return stringBuilder;\n }\n\n toString(): string {\n\n if (this._value == null) {\n throw new Error(\"Value cannot be null for AssignmentBuilder Builder\")\n }\n\n if (this._functionName != null) {\n return this.indent(`${this._variableName} = ${this._functionName}(${this._value.toString()});`);\n }\n\n return this.indent(`${this._variableName} = ${this._value.toString()};`);\n }\n}\n\nexport class AndBuilder extends ContainerBlock {\n\n constructor(and: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._lines.push(and);\n }\n\n and(and: string) {\n this._lines.push(and);\n }\n\n toString() {\n return this._lines.join(\" && \")\n }\n}\n\nexport class VariableBuilder extends Block {\n protected _declaration: string;\n protected _value?: string | Block;\n\n get getValue() {\n return this._value;\n }\n\n constructor(declaration: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._declaration = declaration;\n }\n\n value(value: string): this {\n this._value = value;\n return this;\n }\n\n object(options?: CreateBlockOptions): ObjectBuilder {\n const objectBuilder = new ObjectBuilder(options?.name, this._indent, this);\n\n this._value = objectBuilder;\n\n return objectBuilder;\n }\n\n array(accessor: string, options?: CreateBlockOptions): ArrayBuilder {\n const arrayBuilder = new ArrayBuilder(accessor, options?.name, this._indent, this);\n\n this._value = arrayBuilder;\n\n return arrayBuilder;\n }\n\n toString(): string {\n\n if (this._value == null) {\n throw new Error(\"Value cannot be null for Variable Builder\")\n }\n\n return this.indent(`const ${this._declaration} = ${this._value.toString()};`);\n }\n}\n\nexport class RawBuilder extends ContainerBlock {\n private _raw: string;\n\n constructor(raw: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._raw = raw;\n }\n\n toString(): string {\n return `${this._raw}\\n`;\n }\n}\n\nexport class ObjectBuilder extends Block {\n\n property(line: string) {\n // Add comma to previous line if it exists and isn't a brace\n if (this._lines.length > 0) {\n const lastLine = this._lines[this._lines.length - 1];\n if (typeof lastLine === 'string' && !lastLine.endsWith(\"{\")) {\n this._lines[this._lines.length - 1] = lastLine + \",\";\n }\n }\n this.push(line);\n return this;\n }\n\n nested(propertyName: string, name?: string) {\n const builder = new ObjectBuilder(name, this._indent + \" \", this);\n // Add comma to previous line if it exists and isn't a brace\n if (this._lines.length > 0) {\n const lastLine = this._lines[this._lines.length - 1];\n if (typeof lastLine === 'string' && !lastLine.endsWith(\"{\")) {\n this._lines[this._lines.length - 1] = lastLine + \",\";\n }\n }\n // Add the property name and opening brace\n this.push(`${propertyName}: {`);\n // Add the nested builder\n this.push(builder);\n // Add the closing brace\n this.push(\"}\");\n return builder;\n }\n\n toString(): string {\n // Check if this is a nested object's content\n const isNestedContent = this._parent instanceof ObjectBuilder;\n\n if (isNestedContent) {\n // For nested object contents, just return the lines\n return this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ).join('\\n');\n }\n\n // For root objects, include the braces\n const lines = [\n \"{\",\n ...this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ),\n this.indent(\"}\")\n ];\n\n return lines.join('\\n');\n }\n}\n\nexport class FunctionFactoryBuilder extends ContainerBlock {\n private _functionName?: string;\n private _params: Param[] = [];\n private _return: boolean = false;\n\n constructor(functionName?: string, sectionName?: string, parentIndent: string = \"\", parent?: Block) {\n super(sectionName, parentIndent, parent);\n this._functionName = functionName;\n }\n\n getParameters() {\n return [...this._params];\n }\n\n createParameter(value: any): Param {\n const name = `injection${this._params.length}`;\n return {\n name,\n value\n }\n }\n\n parameters(...params: Param[]): this {\n this._params.push(...params);\n return this;\n }\n\n return() {\n this._return = true;\n return this;\n }\n\n appendBody(line: string): this {\n this.push(line);\n return this;\n }\n\n invoke() {\n const body = this.toString();\n const parameterNames = this._getParameterNames();\n const parameterValues = this._getParameterValues();\n\n return Function(...parameterNames, body)(...parameterValues)\n }\n\n private _getParameterNames() {\n return this._params.map(w => w.name).join(\", \")\n }\n\n private _getParameterValues() {\n return this._params.map(w => w.value);\n }\n\n toString(): string {\n const r = this._return === true ? \"return \" : \"\";\n const signature = this._functionName\n ? `${r}function ${this._functionName}(${this._getParameterNames()})`\n : `${r}function(${this._getParameterNames()})`;\n\n const lines = [\n this.indent(signature + \" {\"),\n ...this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ),\n this.indent(\"}\")\n ];\n\n return lines.join('\\n');\n }\n}\n\nexport class FunctionBuilder extends ContainerBlock {\n private _functionName?: string;\n private _params: (string | GenericParam)[] = [];\n private _return: boolean = false;\n\n constructor(functionName?: string, sectionName?: string, parentIndent: string = \"\", parent?: Block) {\n super(sectionName, parentIndent, parent);\n this._functionName = functionName;\n }\n\n parameters(...params: (string | GenericParam)[]): this {\n this._params.push(...params);\n return this;\n }\n\n return() {\n this._return = true;\n return this;\n }\n\n appendBody(line: string): this {\n this.push(line);\n return this;\n }\n\n private _getParameterKeys() {\n return this._params.map(w => typeof w === \"object\" ? w.name : w).join(\", \")\n }\n\n toCallable() {\n return `${this._functionName}(${this._params.map(w => typeof w === \"object\" ? w.callName : w).join(\", \")})`\n }\n\n toString(): string {\n const r = this._return === true ? \"return \" : \"\";\n const signature = this._functionName\n ? `${r}function ${this._functionName}(${this._getParameterKeys()})`\n : `${r}function(${this._getParameterKeys()})`;\n\n const lines = [\n this.indent(signature + \" {\"),\n ...this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(\" \" + line)\n : line.toString()\n ),\n this.indent(\"}\")\n ];\n\n return lines.join('\\n');\n }\n}\n\nexport class ArrayBuilder extends Block {\n constructor(accessor: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._lines.push(accessor);\n }\n\n append(accessor: string) {\n this._lines.push(accessor);\n return this;\n }\n\n toString() {\n return `[${this._lines.join(\",\")}]`\n }\n}\n\nexport class IfBuilder extends ContainerBlock {\n private _condition: string;\n\n constructor(condition: string, name?: string, parentIndent: string = \"\", parent?: Block) {\n super(name, parentIndent, parent);\n this._condition = condition;\n }\n\n appendBody(line: string): this {\n this.push(line);\n return this;\n }\n\n unshiftBody(line: string): this {\n this.unshift(line);\n return this;\n }\n\n private stringifyLine(line: Line) {\n if (typeof line === 'string') {\n return this.indent(\" \" + line);\n }\n\n if (Array.isArray(line)) {\n return line.join(\"\\r\\n\")\n }\n\n return line.toString();\n }\n\n toString(): string {\n // need to join with \\r\\n because we are not an object\n const lines = [\n this.indent(`if (${this._condition}) {`),\n this._lines.map(x => this.stringifyLine(x)).join(\"\\r\\n\"),\n this.indent(\"}\")\n ]\n\n return lines.join(\"\\n\\n\");\n }\n}\n\nexport class CodeBuilder extends ContainerBlock {\n\n toString(): string {\n return this._lines.map(line =>\n typeof line === 'string'\n ? this.indent(line)\n : line.toString()\n ).join('\\n\\n');\n }\n}","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\";\nimport { SerializeComputedHandler } from \"./serialize/SerializeComputedHandler\";\n\n/// Purpose: \nexport class SerializeHandlerBuilder {\n\n build() {\n const handler = new SerializeSerializerHandler();\n handler\n .setNext(new SerializeComputedHandler())\n .setNext(new SerializeFunctionHandler())\n .setNext(new SerializeDateHandler())\n .setNext(new SerializeValueHandler())\n .setNext(new SerializeObjectHandler());\n\n return handler;\n }\n}","import { SetComplexHandler } from \"./set/SetComplexHandler\";\n\nexport class SetHandlerBuilder {\n\n build() {\n const handler = new SetComplexHandler();\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, 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 } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo, SchemaTypes } from \"../../../schema\";\n\nexport class SerializeComputedHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (property.type === SchemaTypes.Computed && property.isUnmapped === true) {\n // Do not serialize computed properties that are unmapped\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 // We need to handle serializing delta changes in getChanges, there is the possibility that child objects are null \n // and we need to handle that scenario\n const ifSlot = slot.if(`${parentSelectPath} != null && 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, SlotBlock } from '../../blocks';\nimport { PropertyInfoHandler } from \"../types\";\nimport { PropertyInfo } from \"../../../schema/PropertyInfo\";\nimport { SchemaTypes } from \"../../../schema/types\";\n\nconst allowedTypes = new Set<SchemaTypes>([\n SchemaTypes.Array,\n SchemaTypes.Boolean,\n SchemaTypes.Date,\n SchemaTypes.Number,\n SchemaTypes.Object,\n SchemaTypes.String\n]);\n\nexport class SetComplexHandler extends PropertyInfoHandler {\n\n override handle(property: PropertyInfo<any>, builder: CodeBuilder): CodeBuilder | null {\n\n if (allowedTypes.has(property.type)) {\n const selectorPath = property.getSelectrorPath({ parent: \"source\", assignmentType: \"FORCE_NULLABLE_OR_OPTIONAL\" });\n const slot = builder.get<SlotBlock>(\"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 } 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 { 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}","import { logger } from \"../utilities\";\n\nconst 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 logger.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, ForeignKey, 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 /** Foreign key schema and property */\n readonly foreignKeyDefinition: ForeignKey<unknown> | null;\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 /** Tags passed from the schema */\n readonly tags: string[];\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 this.tags = schema.tags;\n this.foreignKeyDefinition = schema.foreignKeyDefinition;\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 // oxlint-disable-next-line no-this-alias\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 // oxlint-disable-next-line no-this-alias\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: UnknownRecord, 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[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, logger } from \"../utilities\";\nimport { CollectionName, CompiledSchema, CompiledSchemaCore, CompiledSchemaWithMetadata, GetHashTypeFunction, HashFunction, HashType, IdType, Index, InferCreateType, InferType, Prepare, Preprocess, SchemaId, SchemaTypes, SetProperties } from './types';\nimport { DeepPartial } from '../types';\nimport { SchemaSubscription } from './communication/broadcast';\nimport { CompareIdsHandlerBuilder } from '../codegen/handlers/CompareIdsHandlerBuilder';\nimport { StandardJSONSchemaV1, createStandardJsonSchemaProps, rehydrateSchemaFromJsonString } from './utils/standardJsonSchema';\nimport { SetHandlerBuilder } from '../codegen/handlers';\n\nfunction createChangeTracker() {\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\nexport class SchemaDefinition<T extends {}> extends SchemaBase<T, any> {\n\n instance: T;\n type = SchemaTypes.Definition;\n collectionName: CollectionName;\n\n constructor(collectionName: CollectionName, schema: T) {\n super();\n this.collectionName = collectionName;\n this.instance = schema;\n this.isNullable = false;\n this.isOptional = false;\n }\n\n /**\n * Creates a SchemaDefinition from a JSON string containing a JSON Schema.\n * Parses the JSON string, rehydrates the schema structure, and compiles it.\n * \n * @param jsonString - The JSON string containing the JSON Schema (typically from `schema['~standard'].jsonSchema.input()` or `output()`)\n * @param collectionName - Optional collection name override (if not present in JSON Schema metadata)\n * @returns A compiled schema ready to use\n * @throws Error if the JSON string is invalid or doesn't contain a valid JSON Schema\n * \n * @example\n * ```typescript\n * // Serialize a schema to JSON\n * const jsonSchema = mySchema['~standard'].jsonSchema.input({ target: 'draft-2020-12' });\n * const jsonString = JSON.stringify(jsonSchema);\n * \n * // Rehydrate from JSON string\n * const rehydratedSchema = SchemaDefinition.fromJson(jsonString);\n * // Schema is already compiled and ready to use\n * ```\n */\n static fromJson(jsonString: string, collectionName?: string): CompiledSchema<any> {\n const schemaDefinition = rehydrateSchemaFromJsonString(jsonString, collectionName);\n return schemaDefinition.compile();\n }\n\n /**\n * Standard JSON Schema V1 implementation.\n * Provides JSON Schema conversion for Routier schemas.\n */\n get '~standard'(): StandardJSONSchemaV1.Props<InferCreateType<T>, InferType<T>> {\n const schema = this.compile();\n\n return createStandardJsonSchemaProps(schema);\n }\n\n private createReturnFunction<TResult>(builder: CodeBuilder): TResult {\n const body = builder.toString();\n try {\n return Function(`return ${body}`) as TResult;\n } catch (e) {\n logger.error(`Error compiling schema function. Function Body: ${body}`)\n throw e;\n }\n }\n\n private createFunction<TResult>(builder: CodeBuilder, ...fnArgs: string[]): TResult {\n const body = builder.toString();\n\n try {\n return Function(...fnArgs, body) as TResult;\n } catch (e) {\n logger.error(`Error compiling schema function. Function Body: ${body}`)\n throw e;\n }\n }\n\n modify<R>(builder: (d: {\n function: <UU, I = never>(fn: (entity: InferType<CompiledSchema<T>>, collectionName: CollectionName, injected: I) => UU, injected?: I) => SchemaFunction<UU, I, \"unmapped\">;\n computed: <UU, I = never>(fn: (entity: InferType<CompiledSchema<T>>, collectionName: CollectionName, 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: CollectionName, 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: CollectionName, 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 compile<TMetadata>(metadata: TMetadata): CompiledSchemaWithMetadata<T, TMetadata>\n compile(): CompiledSchema<T>;\n compile<TMetadata>(metadata?: TMetadata): CompiledSchema<T> | CompiledSchemaWithMetadata<T, TMetadata> {\n\n try {\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 const setHandlerBuilder = new SetHandlerBuilder();\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 const setHandlerHanlder = setHandlerBuilder.build();\n\n const changeTrackingCodeBuilder = new CodeBuilder();\n changeTrackingCodeBuilder.raw(`${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\n const enricherFunctionRoot = enricherCodeBuilder.factory(\"factory\", { name: \"factory\" }).parameters({ name: \"collectionName\", value: this.collectionName });\n enricherFunctionRoot.slot(\"changeTracker\").raw(`${createChangeTracker.toString()}`);\n enricherFunctionRoot.slot(\"changeTrackerFunction\").raw(`\\tconst changeTracker = createChangeTracker();`);\n const enricherFunctionBody = enricherFunctionRoot.function(undefined, { name: \"function\" }).parameters(\"entity\", \"changeTrackingType\").return();\n\n enricherFunctionBody.slot(\"enableChangeTracking\")\n .variable(\"enableChangeTracking\")\n .value('changeTrackingType === \"proxy\" ? changeTracker : 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 setCodeBuilder = new CodeBuilder();\n setCodeBuilder.slot(\"assignments\");\n setCodeBuilder.slot(\"ifs\");\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(this, (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 setHandlerHanlder.handle(property, setCodeBuilder);\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\n const enrichGenerator = this.createReturnFunction<Function>(enricherCodeBuilder);\n const mergeGenerator = this.createReturnFunction<Function>(mergeCodeBuilder);\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 = this.createReturnFunction<Function>(enricherCodeBuilder);\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 const getIdsFunction = this.createFunction<(entity: InferType<T>) => [IdType]>(idSelectorCodeBuilder, \"entity\");\n const getHashTypeFunction = this.createFunction<GetHashTypeFunction<T>>(hashTypeCodeBuilder, \"entity\");\n const prepareFunction = this.createFunction<Prepare<T>>(prepareCodeBuilder, \"entity\");\n const cloneFunction = this.createFunction<(entity: InferType<T>) => InferType<T>>(cloneCodeBuilder, \"entity\");\n const deserializeFunction = this.createFunction<(entity: InferType<T>) => InferType<T>>(deserializeCodeBuilder, \"unserialized\");\n const serializeFunction = this.createFunction<(entity: InferType<T>) => InferType<T>>(serializeCodeBuilder, \"entity\");\n const compareFunction = this.createFunction<(a: InferType<T>, b: InferType<T>) => boolean>(compareCodeBuilder, \"a\", \"b\");\n const stripFunction = this.createFunction<(entity: InferType<T>) => InferType<T>>(stripCodeBuilder, \"entity\");\n const hashFunction = this.createFunction<HashFunction<T>>(hashCodeBuilder, \"entity\", \"type\");\n const enableChangeTrackingFunction = this.createFunction<(entity: InferType<T>) => InferType<T>>(changeTrackingCodeBuilder, \"entity\");\n const freezeFunction = this.createFunction<(entity: InferType<T>) => InferType<T>>(freezeCodeBuilder, \"entity\");\n const compareIdsFunction = this.createFunction<(a: InferType<T>, b: InferType<T>) => boolean>(compareIdsCodeBuilder, \"a\", \"b\");\n const preprocessFunction = this.createFunction<Preprocess<T>>(preprocessCodeBuilder, \"entity\");\n const setFunction = this.createFunction<SetProperties<T>>(setCodeBuilder, \"destination\", \"source\");\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(\",\")) as SchemaId;\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 set: setFunction,\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 if (metadata != null) {\n\n const compiledSchemaWithMetadata: CompiledSchemaWithMetadata<T, TMetadata> = {\n ...result,\n createSubscription: (signal?: AbortSignal) => new SchemaSubscription(result, signal),\n metadata\n };\n\n return compiledSchemaWithMetadata;\n }\n\n const compiledSchema = {\n createSubscription: (signal?: AbortSignal) => new SchemaSubscription(result, signal),\n ...result\n };\n\n return compiledSchema;\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\";\nimport { CollectionName } from \"./types\";\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 as CollectionName, schema),\n}","import { now } from \"../../performance\";\nimport { Branded, uuid } from \"../../utilities\";\nimport { CompiledSchemaCore, ISchemaSubscription, SchemaId, SubscriptionChanges } from \"../types\";\n\ntype BroadcastChannelReceiverId = Branded<string, \"BroadcastChannelReceiverId\">;\ntype SubscriptionListenerCallback<T> = (changes: StampedChanges<T>) => void;\ntype BroadcastChannelType = InstanceType<typeof BroadcastChannel>;\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: BroadcastChannelType;\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: BroadcastChannelType;\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: Array.from({ length: changes.adds.length }),\n removals: Array.from({ length: changes.removals.length }),\n unknown: Array.from({ length: changes.unknown.length }),\n updates: Array.from({ length: 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: Array.from({ length: data.adds.length }),\n removals: Array.from({ length: data.removals.length }),\n unknown: Array.from({ length: data.unknown.length }),\n updates: Array.from({ length: 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, ForeignKey, 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 foreignKeyDefinition: ForeignKey<unknown> | null = null;\n tags: string[] = [];\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 this.tags = entity.tags;\n }\n\n if (literals) {\n this.literals = literals;\n }\n }\n}","export * from './SchemaBase';","import { logger } from \"../../../utilities\";\nimport { 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\n if (defaultValue == null) {\n logger.warn(\"Do not use `.default(null)` in your schema, please use `.default(() => null)`\")\n }\n\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 { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"./SchemaDefault\";\nimport { SchemaFrom } from \"./SchemaFrom\";\nimport { SchemaOptional } from \"./SchemaOptional\";\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\n optional() {\n return new SchemaOptional<T, TModifiers | \"optional\">(this);\n }\n\n default<I = never>(value: DefaultValue<T | null, I>, injected?: I) {\n return new SchemaDefault<T | null, I, TModifiers | \"default\">(value, injected, this);\n }\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 { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaIdentity } from \"./SchemaIdentity\";\nimport { SchemaDefault } from \"./SchemaDefault\";\nimport { CompiledSchema, DefaultValue, InferType, SchemaModifiers } from \"../../types\";\nimport { SchemaFrom } from \"./SchemaFrom\";\nimport { SchemaTag } from \"./SchemaTag\";\n\nexport class SchemaForeignKey<T extends any, TModifiers extends SchemaModifiers, K extends {}> extends SchemaBase<T, TModifiers> {\n instance: T;\n private _schemaForeignKey = true;\n\n constructor(current: SchemaBase<T, TModifiers>, relatingSchema: CompiledSchema<K>, property: keyof InferType<CompiledSchema<K>>) {\n super(current);\n this.instance = current.instance;\n this.foreignKeyDefinition = {\n schema: relatingSchema,\n property: relatingSchema.getProperty(String(property))\n };\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\n tag(...tags: string[]) {\n return new SchemaTag<T, TModifiers>(tags, this);\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\";\nimport { SchemaTag } from \"./SchemaTag\";\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\n tag(...tags: string[]) {\n return new SchemaTag<T, TModifiers>(tags, this);\n }\n}","import { DefaultValue, PropertyDeserializer, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDefault } from \"./SchemaDefault\";\nimport { SchemaDeserialize } from \"./SchemaDeserialize\";\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\n default<I = never>(value: DefaultValue<T | null, I>, injected?: I) {\n return new SchemaDefault<T | null, I, TModifiers | \"default\">(value, injected, this);\n }\n\n deserialize(deserializer: PropertyDeserializer<T | null>) {\n return new SchemaDeserialize<T | null, TModifiers | \"deserialize\">(deserializer, this);\n }\n}","import { PropertyDeserializer, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaDeserialize } from \"./SchemaDeserialize\";\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\n deserialize(deserializer: PropertyDeserializer<T | undefined>) {\n return new SchemaDeserialize<T | undefined, TModifiers | \"deserialize\">(deserializer, 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 { DefaultValue, PropertyDeserializer, PropertySerializer, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaArray } from \"../types\";\nimport { SchemaDefault } from \"./SchemaDefault\";\nimport { SchemaDeserialize } from \"./SchemaDeserialize\";\nimport { SchemaDistinct } from \"./SchemaDistinct\";\nimport { SchemaFrom } from \"./SchemaFrom\";\nimport { SchemaIndex } from \"./SchemaIndex\";\nimport { SchemaNullable } from \"./SchemaNullable\";\nimport { SchemaOptional } from \"./SchemaOptional\";\nimport { SchemaReadonly } from \"./SchemaReadonly\";\nimport { SchemaSerialize } from \"./SchemaSerialize\";\n\nexport class SchemaTag<T extends any, TModifiers extends SchemaModifiers> extends SchemaBase<T, TModifiers> {\n instance: T;\n private _schemaTag = true;\n\n constructor(tags: string[], current: SchemaBase<T, TModifiers>) {\n super(current);\n this.tags = tags;\n this.instance = current.instance;\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 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 unknown as SchemaArray<typeof this, TModifiers>);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this, ...indexes);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n}","import { CompiledSchema, IdType, InferType, SchemaModifiers } from \"../../types\";\nimport { SchemaBase } from \"../base/SchemaBase\";\nimport { SchemaForeignKey } from \"./SchemaForeignKey\";\nimport { SchemaKey } from \"./SchemaKey\";\nimport { SchemaTag } from \"./SchemaTag\";\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\n foreignKey<K extends {}>(relatingSchema: CompiledSchema<K>, property: keyof InferType<CompiledSchema<K>>) {\n return new SchemaForeignKey<T, TModifiers, K>(this, relatingSchema, property);\n }\n\n tag(...tags: string[]) {\n return new SchemaTag<T, TModifiers>(tags, this);\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';\nexport * from './SchemaTag';\nexport * from './SchemaForeignKey';","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\";\nimport { SchemaTag } from \"../modifiers/SchemaTag\";\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, ...indexes);\n }\n\n tag(...tags: string[]) {\n return new SchemaTag<T[], TModifiers>(tags, 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 { SchemaTag } from \"../modifiers/SchemaTag\";\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 unknown as SchemaArray<typeof this, TModifiers>);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this, ...indexes);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n\n tag(...tags: string[]) {\n return new SchemaTag<T, TModifiers>(tags, 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 { SchemaTag } from \"../modifiers/SchemaTag\";\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 unknown as SchemaArray<typeof this, TModifiers>);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this, ...indexes);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n\n tag(...tags: string[]) {\n return new SchemaTag<T, TModifiers>(tags, this);\n }\n}","import { CompiledSchema, DefaultValue, InferType, 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 { SchemaForeignKey } from \"../modifiers/SchemaForeignKey\";\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 { SchemaTag } from \"../modifiers/SchemaTag\";\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 constrain<K extends T>() {\n return new SchemaNumber<K, TModifiers>(this as unknown as SchemaBase<K, TModifiers>);\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 key() {\n return new SchemaKey<T, TModifiers | \"key\">(this);\n }\n\n foreignKey<K extends {}>(relatingSchema: CompiledSchema<K>, property: keyof InferType<CompiledSchema<K>>) {\n return new SchemaForeignKey<T, TModifiers, K>(this, relatingSchema, property);\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 unknown as SchemaArray<typeof this, TModifiers>);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this, ...indexes);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n\n tag(...tags: string[]) {\n return new SchemaTag<T, TModifiers>(tags, 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 { SchemaTag } from \"../modifiers/SchemaTag\";\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 unknown as SchemaArray<typeof this, TModifiers>);\n }\n\n tag(...tags: string[]) {\n return new SchemaTag<T, TModifiers>(tags, this);\n }\n}","import { CompiledSchema, DefaultValue, InferType, 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 { SchemaForeignKey } from \"../modifiers/SchemaForeignKey\";\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 { SchemaTag } from \"../modifiers/SchemaTag\";\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 constrain<K extends T>() {\n return new SchemaString<K, TModifiers>(this as unknown as SchemaBase<K, TModifiers>);\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 foreignKey<K extends {}>(relatingSchema: CompiledSchema<K>, property: keyof InferType<CompiledSchema<K>>) {\n return new SchemaForeignKey<T, TModifiers, K>(this, relatingSchema, property);\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 unknown as SchemaArray<typeof this, TModifiers>);\n }\n\n index(...indexes: string[]) {\n return new SchemaIndex<T, TModifiers>(this, ...indexes);\n }\n\n distinct() {\n return new SchemaDistinct<T, TModifiers | \"distinct\">(this);\n }\n\n tag(...tags: string[]) {\n return new SchemaTag<T, TModifiers>(tags, 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 type { SchemaDefinition } from \"./SchemaDefinition\";\nimport type { SchemaBase } from \"./property/base/SchemaBase\";\nimport type { SchemaArray } from \"./property/types/SchemaArray\";\nimport type { SchemaObject } from \"./property/types/SchemaObject\";\nimport type { PropertyInfo } from \"./PropertyInfo\";\nimport type { DeepPartial } from \"../types\";\nimport type { SchemaFunction } from \"./table\";\nimport type { SchemaOptional } from \"./property/modifiers\";\nimport type { Branded } from \"../utilities/types\";\n\nexport type DefaultValue<T, I = never> = T | ((injected: I) => T);\nexport type FunctionBody<TEntity, TResult> = (entity: TEntity, collectionName: CollectionName) => TResult;\nexport type IdType = string | number;\nexport type ForeignKey<T extends {}> = { \n schema: CompiledSchema<T>, \n property: PropertyInfo<T> \n};\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\nexport type 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 SetProperties<TEntity extends {}> = (destination: InferType<TEntity> | InferCreateType<TEntity>, source: InferType<TEntity> | InferCreateType<TEntity>) => void;\n\nexport type CompiledSchemaCore<TEntity extends {}> = Omit<CompiledSchema<TEntity>, \"createSubscription\">;\n\nexport type CompiledSchemaWithMetadata<TEntity extends {}, TMetadata> = {\n readonly metadata: TMetadata;\n} & CompiledSchema<TEntity>;\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 /** Sets 1 or many properties from the source object onto the destination object with change tracking. */\n set: SetProperties<TEntity>;\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: CollectionName;\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 = Branded<number, \"SchemaId\">;\nexport type CollectionName = Branded<string, \"CollectionName\">;\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>;\nexport type InferRoot<T> = T extends CompiledSchema<infer R> ? R : never;\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 IsCreateExcluded<T, K extends keyof T> =\n [\n HasModifier<T, K, \"identity\">,\n HasModifier<T, K, \"computed\">,\n HasModifier<T, K, \"unmapped\">\n ] extends [\n false,\n false,\n false\n ] ? false : true;\n\ntype IsCreateOptional<T, K extends keyof T> =\n [\n HasModifier<T, K, \"optional\">,\n HasModifier<T, K, \"default\">\n ] extends [\n false,\n false\n ] ? false : true;\n\ntype IsCreateNullable<T, K extends keyof T> =\n HasModifier<T, K, \"nullable\"> extends true ? true : false;\n\ntype InferCreateProperty<T, K extends keyof T> =\n IsCreateNullable<T, K> extends true ? null | InferPrimitive<T[K]> : InferPrimitive<T[K]>;\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> = {\n [K in keyof T as IsCreateExcluded<T, K> extends true ? never\n : IsCreateOptional<T, K> extends true ? K : never]?: InferCreateProperty<T, K>\n} & {\n [K in keyof T as IsCreateExcluded<T, K> extends true ? never\n : IsCreateOptional<T, K> extends true ? never : K]: InferCreateProperty<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","import { PropertyInfo } from '../PropertyInfo';\nimport { CompiledSchema, InferCreateType, InferType, SchemaTypes } from '../types';\nimport { SchemaBase } from '../property/base/SchemaBase';\nimport { SchemaArray } from '../property/types/SchemaArray';\nimport { SchemaDefinition } from '../SchemaDefinition';\nimport { s } from '../builder';\n\n/**\n * Standard JSON Schema V1 interface types\n * Based on https://standardschema.dev/json-schema\n */\nexport interface StandardTypedV1<Input = unknown, Output = Input> {\n readonly '~standard': StandardTypedV1.Props<Input, Output>;\n}\n\nexport declare namespace StandardTypedV1 {\n export interface Props<Input = unknown, Output = Input> {\n readonly version: 1;\n readonly vendor: string;\n readonly types?: Types<Input, Output> | undefined;\n }\n\n export interface Types<Input = unknown, Output = Input> {\n readonly input: Input;\n readonly output: Output;\n }\n}\n\nexport interface StandardJSONSchemaV1<Input = unknown, Output = Input> {\n readonly '~standard': StandardJSONSchemaV1.Props<Input, Output>;\n}\n\nexport declare namespace StandardJSONSchemaV1 {\n export interface Props<Input = unknown, Output = Input>\n extends StandardTypedV1.Props<Input, Output> {\n readonly jsonSchema: StandardJSONSchemaV1.Converter;\n }\n\n export interface Converter {\n readonly input: (\n options: StandardJSONSchemaV1.Options\n ) => Record<string, unknown>;\n readonly output: (\n options: StandardJSONSchemaV1.Options\n ) => Record<string, unknown>;\n }\n\n export type Target =\n | 'draft-2020-12'\n | 'draft-07'\n | 'openapi-3.0'\n | ({} & string);\n\n export interface Options {\n readonly target: Target;\n readonly libraryOptions?: Record<string, unknown> | undefined;\n }\n}\n\n/**\n * Context for property conversion\n */\ninterface ConversionContext {\n target: StandardJSONSchemaV1.Target;\n visited: Set<string>;\n useOutputType: boolean;\n convertProperty: (property: PropertyInfo<any>) => Record<string, unknown>;\n}\n\n/**\n * Strategy interface for converting property types to JSON Schema\n */\ntype PropertyConverter = (\n property: PropertyInfo<any>,\n context: ConversionContext\n) => Record<string, unknown>;\n\n/**\n * Converts a primitive property with optional enum/literals\n */\nfunction createPrimitiveConverter(\n jsonType: 'string' | 'number' | 'boolean'\n): PropertyConverter {\n return (property, _context) => {\n const jsonSchema: Record<string, unknown> = { type: jsonType };\n if (property.literals && property.literals.length > 0) {\n jsonSchema.enum = property.literals;\n }\n return jsonSchema;\n };\n}\n\n/**\n * Converts a Date property to JSON Schema\n */\nconst dateConverter: PropertyConverter = (_property, _context) => {\n return {\n type: 'string',\n format: 'date-time'\n };\n};\n\n/**\n * Converts an Object property to JSON Schema\n */\nconst objectConverter: PropertyConverter = (property, context) => {\n const jsonSchema: Record<string, unknown> = { type: 'object' };\n\n if (property.children && property.children.length > 0) {\n const properties: Record<string, unknown> = {};\n const required: string[] = [];\n\n for (const child of property.children) {\n // Skip computed and function properties for input schemas\n // Include them in output schemas as they represent derived values\n if (!context.useOutputType && (child.type === SchemaTypes.Computed || child.type === SchemaTypes.Function)) {\n continue;\n }\n\n const childSchema = context.convertProperty(child);\n\n // Skip empty schemas (e.g., computed properties that return empty for input)\n if (Object.keys(childSchema).length === 0) {\n continue;\n }\n\n const propertyName = child.from || child.name;\n properties[propertyName] = childSchema;\n\n // Add to required if not optional and not nullable\n // Computed/function properties are never required in JSON Schema\n if (!child.isOptional && !child.isNullable &&\n child.type !== SchemaTypes.Computed && child.type !== SchemaTypes.Function) {\n required.push(propertyName);\n }\n }\n\n if (Object.keys(properties).length > 0) {\n jsonSchema.properties = properties;\n }\n if (required.length > 0) {\n jsonSchema.required = required;\n }\n } else {\n // Empty object or unknown structure\n jsonSchema.properties = {};\n }\n\n return jsonSchema;\n};\n\n/**\n * Converts array inner schema to JSON Schema items\n * Attempts to fully recurse into object schemas when possible\n */\nfunction convertArrayItems(\n innerSchema: SchemaBase<any, any>,\n context: ConversionContext\n): Record<string, unknown> {\n const innerType = innerSchema.type;\n\n switch (innerType) {\n case SchemaTypes.String:\n return { type: 'string' };\n case SchemaTypes.Number:\n return { type: 'number' };\n case SchemaTypes.Boolean:\n return { type: 'boolean' };\n case SchemaTypes.Date:\n return { type: 'string', format: 'date-time' };\n case SchemaTypes.Object:\n // Try to extract object structure from innerSchema.instance\n // For SchemaObject, instance contains the property definitions\n if (innerSchema.instance && typeof innerSchema.instance === 'object') {\n const properties: Record<string, unknown> = {};\n const required: string[] = [];\n\n // Iterate through the instance properties\n for (const [key, value] of Object.entries(innerSchema.instance)) {\n if (value && typeof value === 'object' && 'type' in value) {\n // This is a SchemaBase - try to convert it\n const schemaBase = value as SchemaBase<any, any>;\n const tempProperty = new PropertyInfo(schemaBase, key);\n\n // Skip computed/function for input schemas\n if (!context.useOutputType &&\n (tempProperty.type === SchemaTypes.Computed || tempProperty.type === SchemaTypes.Function)) {\n continue;\n }\n\n const itemSchema = context.convertProperty(tempProperty);\n if (Object.keys(itemSchema).length > 0) {\n properties[key] = itemSchema;\n if (!tempProperty.isOptional && !tempProperty.isNullable &&\n tempProperty.type !== SchemaTypes.Computed && tempProperty.type !== SchemaTypes.Function) {\n required.push(key);\n }\n }\n }\n }\n\n if (Object.keys(properties).length > 0) {\n return {\n type: 'object',\n properties,\n ...(required.length > 0 ? { required } : {})\n };\n }\n }\n // Fallback for unknown object structure\n return {\n type: 'object',\n properties: {},\n description: 'Array item object schema'\n };\n case SchemaTypes.Array:\n // Nested arrays - recursively handle\n if (innerSchema instanceof SchemaArray && innerSchema.innerSchema) {\n return {\n type: 'array',\n items: convertArrayItems(innerSchema.innerSchema, context)\n };\n }\n return {\n type: 'array',\n items: { type: 'object' } // Simplified fallback\n };\n default:\n return { type: 'object' };\n }\n}\n\n/**\n * Converts an Array property to JSON Schema\n */\nconst arrayConverter: PropertyConverter = (property, context) => {\n const jsonSchema: Record<string, unknown> = { type: 'array' };\n\n if (property.innerSchema) {\n jsonSchema.items = convertArrayItems(property.innerSchema, context);\n } else {\n jsonSchema.items = { type: 'object' };\n }\n\n return jsonSchema;\n};\n\n/**\n * Converts computed/function properties to JSON Schema\n * For input schemas, these return empty (should be skipped)\n * For output schemas, we include them with a generic object type\n */\nconst computedConverter: PropertyConverter = (property, context) => {\n // For input schemas, computed/function properties are not part of the data shape\n if (!context.useOutputType) {\n return {};\n }\n\n // For output schemas, include computed properties\n // We can't know the exact return type without executing the function,\n // so we use a generic object type with a note\n const routierMeta: Record<string, unknown> = {\n isComputed: property.type === SchemaTypes.Computed,\n isFunction: property.type === SchemaTypes.Function\n };\n\n // Store function source code for rehydration\n if (property.functionBody) {\n try {\n routierMeta.functionSource = property.functionBody.toString();\n } catch {\n // If function can't be serialized, store a placeholder\n routierMeta.functionSource = null;\n }\n }\n\n // Store injected value if it's serializable\n if (property.injected !== null && property.injected !== undefined) {\n try {\n // Try to serialize the injected value\n JSON.stringify(property.injected);\n routierMeta.injected = property.injected;\n } catch {\n // If injected value can't be serialized, store null\n routierMeta.injected = null;\n }\n } else {\n routierMeta.injected = null;\n }\n\n return {\n type: 'object',\n description: property.type === SchemaTypes.Computed\n ? 'Computed property (derived value)'\n : 'Function property (derived value)',\n 'x-routier': routierMeta\n };\n};\n\n/**\n * Default converter for unknown types\n */\nconst defaultConverter: PropertyConverter = () => {\n return { type: 'object' };\n};\n\n/**\n * Factory registry mapping SchemaTypes to converters\n */\nconst converterRegistry = new Map<SchemaTypes, PropertyConverter>([\n [SchemaTypes.String, createPrimitiveConverter('string')],\n [SchemaTypes.Number, createPrimitiveConverter('number')],\n [SchemaTypes.Boolean, createPrimitiveConverter('boolean')],\n [SchemaTypes.Date, dateConverter],\n [SchemaTypes.Object, objectConverter],\n [SchemaTypes.Array, arrayConverter],\n [SchemaTypes.Computed, computedConverter],\n [SchemaTypes.Function, computedConverter],\n]);\n\n/**\n * Applies nullable handling to a JSON Schema based on the target draft version\n */\nfunction applyNullable(\n jsonSchema: Record<string, unknown>,\n property: PropertyInfo<any>,\n target: StandardJSONSchemaV1.Target\n): void {\n if (!property.isNullable) {\n return;\n }\n\n if (target === 'draft-2020-12') {\n if (Array.isArray(jsonSchema.type)) {\n (jsonSchema.type as string[]).push('null');\n } else {\n jsonSchema.type = [jsonSchema.type as string, 'null'];\n }\n } else {\n jsonSchema.nullable = true;\n }\n}\n\n/**\n * Applies Routier-specific metadata to a JSON Schema\n */\nfunction applyRoutierMetadata(\n jsonSchema: Record<string, unknown>,\n property: PropertyInfo<any>\n): void {\n // Don't overwrite existing x-routier metadata (e.g., from computed properties)\n if (!jsonSchema['x-routier']) {\n jsonSchema['x-routier'] = {};\n }\n const routierMeta = jsonSchema['x-routier'] as Record<string, unknown>;\n\n // Only add metadata if it doesn't already exist (to preserve computed property metadata)\n if (property.isKey && !routierMeta.isKey) {\n routierMeta.isKey = true;\n }\n if (property.isIdentity && !routierMeta.isIdentity) {\n routierMeta.isIdentity = true;\n }\n if (property.isReadonly && !routierMeta.isReadonly) {\n routierMeta.isReadonly = true;\n }\n if (property.isDistinct && !routierMeta.isDistinct) {\n routierMeta.isDistinct = true;\n }\n if (property.indexes && property.indexes.length > 0 && !routierMeta.indexes) {\n routierMeta.indexes = property.indexes;\n }\n if ((property.valueSerializer || property.valueDeserializer) && !routierMeta.hasCustomSerialization) {\n routierMeta.hasCustomSerialization = true;\n }\n if (property.defaultValue != null && !routierMeta.hasDefault) {\n routierMeta.hasDefault = true;\n // Note: We can't serialize function defaults, only note their presence\n if (typeof property.defaultValue === 'function') {\n routierMeta.defaultIsFunction = true;\n } else {\n // For static defaults, we can include the actual value\n // Note: This includes falsy values like 0, false, empty string, etc.\n routierMeta.defaultValue = property.defaultValue;\n }\n }\n // Store the Routier property name in metadata (may differ from JSON Schema key if from() is used)\n if (!routierMeta.propertyName) {\n routierMeta.propertyName = property.name;\n }\n if (property.from != null && !routierMeta.from) {\n routierMeta.from = property.from;\n }\n}\n\n/**\n * Converts a Routier PropertyInfo to a JSON Schema property definition.\n */\nexport function propertyInfoToJsonSchema(\n property: PropertyInfo<any>,\n target: StandardJSONSchemaV1.Target,\n visited: Set<string> = new Set(),\n useOutputType: boolean = false\n): Record<string, unknown> {\n // Create conversion context with recursive converter\n const context: ConversionContext = {\n target,\n visited,\n useOutputType,\n convertProperty: (prop) => propertyInfoToJsonSchema(prop, target, visited, useOutputType)\n };\n\n // Get converter from factory registry\n const converter = converterRegistry.get(property.type) ?? defaultConverter;\n\n // Convert the property\n const jsonSchema = converter(property, context);\n\n // Apply nullable handling\n applyNullable(jsonSchema, property, target);\n\n // Apply Routier-specific metadata\n applyRoutierMetadata(jsonSchema, property);\n\n return jsonSchema;\n}\n\n/**\n * Converts a CompiledSchema to a JSON Schema object schema.\n */\nexport function compiledSchemaToJsonSchema<T extends {}>(\n compiledSchema: CompiledSchema<T>,\n target: StandardJSONSchemaV1.Target,\n useOutputType: boolean = false\n): Record<string, unknown> {\n const jsonSchema: Record<string, unknown> = {\n $schema: target === 'draft-2020-12'\n ? 'https://json-schema.org/draft/2020-12/schema'\n : target === 'draft-07'\n ? 'http://json-schema.org/draft-07/schema#'\n : 'http://json-schema.org/draft-04/schema#',\n type: 'object',\n properties: {} as Record<string, unknown>,\n required: [] as string[]\n };\n\n const properties: Record<string, unknown> = {};\n const required: string[] = [];\n\n // Iterate through all properties\n for (const property of compiledSchema.properties) {\n // Skip computed and function properties for input schema\n // For output schema, we include computed properties\n if (!useOutputType && (property.type === SchemaTypes.Computed || property.type === SchemaTypes.Function)) {\n continue;\n }\n\n // Skip unmapped properties (except computed/function properties in output schema)\n if (property.isUnmapped && !(useOutputType && (property.type === SchemaTypes.Computed || property.type === SchemaTypes.Function))) {\n continue;\n }\n\n const propertySchema = propertyInfoToJsonSchema(property, target, new Set(), useOutputType);\n\n // Skip empty schemas (e.g., computed properties that return empty)\n if (Object.keys(propertySchema).length === 0) {\n continue;\n }\n\n const propertyName = property.from || property.name;\n properties[propertyName] = propertySchema;\n\n // Add to required if not optional and not nullable\n if (!property.isOptional && !property.isNullable) {\n required.push(propertyName);\n }\n }\n\n jsonSchema.properties = properties;\n if (required.length > 0) {\n jsonSchema.required = required;\n }\n\n // Add Routier-specific metadata\n jsonSchema['x-routier'] = {\n collectionName: compiledSchema.collectionName,\n idProperties: compiledSchema.idProperties.map(p => p.name),\n hasIdentities: compiledSchema.hasIdentities,\n hasIdentityKeys: compiledSchema.hasIdentityKeys\n };\n\n return jsonSchema;\n}\n\n/**\n * Creates Standard JSON Schema V1 props for a compiled schema.\n */\nexport function createStandardJsonSchemaProps<T extends {}>(\n compiledSchema: CompiledSchema<T>\n): StandardJSONSchemaV1.Props<InferCreateType<T>, InferType<T>> {\n return {\n version: 1,\n vendor: 'routier',\n types: {\n input: undefined as any as InferCreateType<T>,\n output: undefined as any as InferType<T>\n },\n jsonSchema: {\n input: (options: StandardJSONSchemaV1.Options): Record<string, unknown> => {\n return compiledSchemaToJsonSchema(compiledSchema, options.target, false);\n },\n output: (options: StandardJSONSchemaV1.Options): Record<string, unknown> => {\n return compiledSchemaToJsonSchema(compiledSchema, options.target, true);\n }\n }\n };\n}\n\n/**\n * Parses a JSON string containing a JSON Schema and rehydrates it into a Routier SchemaDefinition.\n * This is a convenience wrapper around `rehydrateSchemaFromJsonSchema` that handles JSON parsing.\n * \n * @param jsonString - The JSON string containing the JSON Schema\n * @param collectionName - The collection name for the schema (if not in x-routier metadata)\n * @returns A SchemaDefinition that can be compiled\n * @throws Error if the JSON string is invalid or doesn't contain a valid JSON Schema\n */\nexport function rehydrateSchemaFromJsonString(\n jsonString: string,\n collectionName?: string\n): SchemaDefinition<any> {\n try {\n const jsonSchema = JSON.parse(jsonString) as Record<string, unknown>;\n return rehydrateSchemaFromJsonSchema(jsonSchema, collectionName);\n } catch (error) {\n if (error instanceof SyntaxError) {\n throw new Error(`Invalid JSON string: ${error.message}`);\n }\n throw error;\n }\n}\n\n/**\n * Rehydrates a JSON Schema back into a Routier SchemaDefinition.\n * This parses the JSON Schema structure and reconstructs the schema using Routier's builder API.\n * \n * @param jsonSchema - The JSON Schema object to rehydrate\n * @param collectionName - The collection name for the schema (if not in x-routier metadata)\n * @returns A SchemaDefinition that can be compiled\n */\nexport function rehydrateSchemaFromJsonSchema(\n jsonSchema: Record<string, unknown>,\n collectionName?: string\n): SchemaDefinition<any> {\n // Extract collection name - provided collectionName takes precedence over metadata\n const routierMeta = jsonSchema['x-routier'] as Record<string, unknown> | undefined;\n const finalCollectionName = collectionName || (routierMeta?.collectionName as string) || 'unknown';\n\n if (!jsonSchema.properties || typeof jsonSchema.properties !== 'object') {\n throw new Error('JSON Schema must have a properties object');\n }\n\n const properties = jsonSchema.properties as Record<string, unknown>;\n const required = (jsonSchema.required as string[] | undefined) || [];\n const schemaDefinition: Record<string, any> = {};\n const computedProperties: Array<{ name: string; isComputed: boolean; functionSource: string | null; injected: any }> = [];\n\n // Get idProperties from schema-level metadata as fallback\n const idProperties = (routierMeta?.idProperties as string[] | undefined) || [];\n\n for (const [propName, propSchema] of Object.entries(properties)) {\n const prop = propSchema as Record<string, unknown>;\n const isRequired = required.includes(propName);\n const routierPropMeta = prop['x-routier'] as Record<string, unknown> | undefined;\n\n // Use Routier property name from metadata if available, otherwise use JSON Schema property name\n const routierPropName = (routierPropMeta?.propertyName as string | undefined) || propName;\n\n // Check if this is a computed or function property\n if (routierPropMeta?.isComputed || routierPropMeta?.isFunction) {\n computedProperties.push({\n name: routierPropName,\n isComputed: routierPropMeta.isComputed === true,\n functionSource: (routierPropMeta.functionSource as string | null) || null,\n injected: routierPropMeta.injected !== undefined ? routierPropMeta.injected : null\n });\n continue;\n }\n\n // Convert JSON Schema property to Routier schema\n let schemaBuilder: any = convertJsonSchemaPropertyToRoutier(prop);\n\n // Apply Routier-specific modifiers (using type assertion for method chaining)\n // Note: Apply key() first as it's required for schema compilation\n // Check both property-level metadata and schema-level idProperties list\n const isKey = routierPropMeta?.isKey === true || idProperties.includes(routierPropName);\n if (isKey && typeof schemaBuilder.key === 'function') {\n schemaBuilder = schemaBuilder.key();\n }\n // Apply from() mapping early, as it's a fundamental property mapping\n if (routierPropMeta?.from && typeof schemaBuilder.from === 'function') {\n schemaBuilder = schemaBuilder.from(routierPropMeta.from as string);\n }\n if (routierPropMeta?.isIdentity && typeof schemaBuilder.identity === 'function') {\n schemaBuilder = schemaBuilder.identity();\n }\n if (routierPropMeta?.isReadonly && typeof schemaBuilder.readonly === 'function') {\n schemaBuilder = schemaBuilder.readonly();\n }\n if (routierPropMeta?.isDistinct && typeof schemaBuilder.distinct === 'function') {\n schemaBuilder = schemaBuilder.distinct();\n }\n // Apply optional if property is not required (nullable and optional are independent)\n if (!isRequired && typeof schemaBuilder.optional === 'function') {\n schemaBuilder = schemaBuilder.optional();\n }\n // Apply nullable if property allows null (nullable and optional are independent)\n if (prop.nullable === true || (Array.isArray(prop.type) && prop.type.includes('null'))) {\n if (typeof schemaBuilder.nullable === 'function') {\n schemaBuilder = schemaBuilder.nullable();\n }\n }\n if (routierPropMeta?.indexes && Array.isArray(routierPropMeta.indexes)) {\n if (typeof schemaBuilder.index === 'function') {\n schemaBuilder = schemaBuilder.index(...(routierPropMeta.indexes as string[]));\n }\n }\n\n // Apply default value if present (only static defaults, not function defaults)\n // hasDefault=true and defaultIsFunction=false means we have a static default value stored\n if (routierPropMeta?.hasDefault && !routierPropMeta.defaultIsFunction && routierPropMeta.hasOwnProperty('defaultValue')) {\n if (typeof schemaBuilder.default === 'function') {\n schemaBuilder = schemaBuilder.default(routierPropMeta.defaultValue);\n }\n }\n\n schemaDefinition[routierPropName] = schemaBuilder;\n }\n\n // Build base schema\n let schema = s.define(finalCollectionName, schemaDefinition);\n\n // Add computed properties via modify()\n if (computedProperties.length > 0) {\n schema = schema.modify(x => {\n const computedDefs: Record<string, any> = {};\n\n for (const computedProp of computedProperties) {\n if (computedProp.functionSource) {\n // Recreate the function from source code\n // The function signature is: (entity, collectionName, injected) => result\n // We use new Function() to create the function, but wrap it so toString() returns the arrow function\n let recreatedFn: any;\n try {\n const functionSource = computedProp.functionSource;\n\n // Parse the arrow function to extract parameters and body\n const arrowMatch = functionSource.match(/^\\(([^)]*)\\)\\s*=>\\s*(.+)$/s);\n\n if (!arrowMatch) {\n throw new Error('Function source is not an arrow function');\n }\n\n // Parse parameters\n const paramsStr = arrowMatch[1].trim();\n const params = paramsStr ? paramsStr.split(',').map(p => p.trim()).filter(p => p) : [];\n const body = arrowMatch[2].trim();\n\n // Create function body - if it's a block (starts with {), use as-is, otherwise wrap in return\n const functionBody = body.startsWith('{')\n ? body.slice(1, -1) // Remove outer braces\n : `return ${body}`;\n\n // Create the function using new Function()\n // If no parameters, call with just the body; otherwise spread the params\n const fn = params.length > 0\n ? new Function(...params, functionBody)\n : new Function(functionBody);\n\n // Wrap it so toString() returns the original arrow function string\n // This is needed because the schema system validates that functions are arrow functions\n recreatedFn = Object.assign(fn, {\n toString: () => functionSource\n });\n } catch (e) {\n // If we can't recreate the function, create a placeholder arrow function that throws\n recreatedFn = () => {\n throw new Error(`Cannot recreate computed property ${computedProp.name}: ${e instanceof Error ? e.message : 'unknown error'}`);\n };\n // Ensure toString returns an arrow function for validation\n Object.assign(recreatedFn, {\n toString: () => `() => { throw new Error(\"Cannot recreate computed property ${computedProp.name}\"); }`\n });\n }\n\n // Add computed property with optional injected value\n if (computedProp.isComputed) {\n computedDefs[computedProp.name] = x.computed(recreatedFn, computedProp.injected);\n } else {\n computedDefs[computedProp.name] = x.function(recreatedFn, computedProp.injected);\n }\n } else {\n // No function source available - create a placeholder\n computedDefs[computedProp.name] = computedProp.isComputed\n ? x.computed(() => {\n throw new Error(`Computed property ${computedProp.name} could not be rehydrated: function source not available`);\n })\n : x.function(() => {\n throw new Error(`Function property ${computedProp.name} could not be rehydrated: function source not available`);\n });\n }\n }\n\n return computedDefs;\n });\n }\n\n return schema;\n}\n\n/**\n * Converts a JSON Schema property definition to a Routier schema builder.\n */\nfunction convertJsonSchemaPropertyToRoutier(\n prop: Record<string, unknown>\n): SchemaBase<any, any> {\n const type = Array.isArray(prop.type)\n ? (prop.type as string[]).find(t => t !== 'null') || prop.type[0]\n : prop.type as string;\n\n // Check for date type - dates are serialized as string with format 'date-time'\n if (type === 'string' && prop.format === 'date-time') {\n return s.date();\n }\n\n switch (type) {\n case 'string':\n if (prop.enum && Array.isArray(prop.enum)) {\n return s.string(...(prop.enum as string[]));\n }\n return s.string();\n\n case 'number':\n case 'integer':\n if (prop.enum && Array.isArray(prop.enum)) {\n return s.number(...(prop.enum as number[]));\n }\n return s.number();\n\n case 'boolean':\n return s.boolean();\n\n case 'object':\n // Recurse into object properties\n if (prop.properties && typeof prop.properties === 'object') {\n const objectProps = prop.properties as Record<string, unknown>;\n const objectSchema: Record<string, any> = {};\n\n for (const [key, value] of Object.entries(objectProps)) {\n objectSchema[key] = convertJsonSchemaPropertyToRoutier(value as Record<string, unknown>);\n }\n\n return s.object(objectSchema);\n }\n return s.object({});\n\n case 'array':\n // Handle array items\n if (prop.items && typeof prop.items === 'object') {\n const itemsSchema = convertJsonSchemaPropertyToRoutier(prop.items as Record<string, unknown>);\n return s.array(itemsSchema as any);\n }\n return s.array(s.object({}) as any);\n\n default:\n // Fallback to object for unknown types\n return s.object({});\n }\n}\n\n/**\n * Attempts to extract type information from a compiled schema for better type inference.\n * \n * Note: TypeScript types are compile-time only, so we can't extract actual type information at runtime.\n * The Standard JSON Schema spec allows libraries to advertise their inferred types via the `types` property,\n * but this requires compile-time type information that isn't available at runtime.\n * \n * For proper type inference, consumers should use TypeScript's type system:\n * ```typescript\n * const schema = s.define(\"users\", { ... }).compile();\n * type User = InferType<typeof schema>;\n * type CreateUser = InferCreateType<typeof schema>;\n * ```\n * \n * @param compiledSchema - The compiled schema to extract type info from\n * @returns A description of the type names (for documentation purposes only)\n */\nexport function extractTypeInfo<T extends {}>(\n compiledSchema: CompiledSchema<T>\n): { inputType: string; outputType: string } {\n return {\n inputType: `InferCreateType<${compiledSchema.collectionName}>`,\n outputType: `InferType<${compiledSchema.collectionName}>`\n };\n}\n","/**\n * Enable logging by setting `globalThis.__ROUTIER_DEBUG__ = true` before any routier code runs.\n */\nconst shouldLog = (): boolean => {\n if (typeof globalThis !== 'undefined') {\n const g = globalThis as { __ROUTIER_DEBUG__?: boolean };\n if (g.__ROUTIER_DEBUG__ === true) return true;\n }\n\n if (typeof process !== 'undefined' && process.env != null) {\n const debug = process.env.DEBUG;\n if (debug === 'routier' || debug === '*') return true;\n const env = process.env.NODE_ENV?.toLowerCase();\n if (env === 'dev' || env === 'development' || env === 'test') return true;\n }\n\n return false;\n};\n\ntype LogMethods = \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\" | \"table\";\nconst tryLog = (type: LogMethods, ...args: unknown[]) => {\n if (shouldLog()) {\n (console[type] as (...args: unknown[]) => void)(...args);\n }\n};\n\nexport const logger = {\n log: (...args: unknown[]): void => {\n tryLog(\"log\", ...args);\n },\n info: (...args: unknown[]): void => {\n tryLog(\"info\", ...args);\n },\n warn: (...args: unknown[]): void => {\n tryLog(\"warn\", ...args);\n },\n error: (...args: unknown[]): void => {\n tryLog(\"error\", ...args);\n },\n debug: (...args: unknown[]): void => {\n tryLog(\"debug\", ...args);\n },\n table: (...args: unknown[]): void => {\n tryLog(\"table\", ...args);\n },\n};\n\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';\nexport * from './utils/standardJsonSchema';\nexport * from './SchemaDefinition';"],"names":[],"mappings":"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"}