@axi-engine/fields 0.3.3 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core-field-tree-factory.d.ts +13 -0
- package/dist/core-field-tree-factory.d.ts.map +1 -0
- package/dist/core-field-tree-factory.js +14 -0
- package/dist/core-field-tree-factory.js.map +1 -0
- package/dist/core-field-tree.d.ts +5 -0
- package/dist/core-field-tree.d.ts.map +1 -0
- package/dist/core-field-tree.js +4 -0
- package/dist/core-field-tree.js.map +1 -0
- package/dist/core-fields-factory.d.ts +10 -0
- package/dist/core-fields-factory.d.ts.map +1 -0
- package/dist/core-fields-factory.js +14 -0
- package/dist/core-fields-factory.js.map +1 -0
- package/dist/core-fields.d.ts +47 -0
- package/dist/core-fields.d.ts.map +1 -0
- package/dist/core-fields.js +8 -0
- package/dist/core-fields.js.map +1 -0
- package/dist/data-store-field-resolver.d.ts +26 -0
- package/dist/data-store-field-resolver.d.ts.map +1 -0
- package/dist/data-store-field-resolver.js +21 -0
- package/dist/data-store-field-resolver.js.map +1 -0
- package/dist/data-store.d.ts +38 -0
- package/dist/data-store.d.ts.map +1 -0
- package/dist/data-store.js +141 -0
- package/dist/data-store.js.map +1 -0
- package/dist/field-definitions/core-boolean-field.d.ts +11 -0
- package/dist/field-definitions/core-boolean-field.d.ts.map +1 -0
- package/dist/field-definitions/core-boolean-field.js +13 -0
- package/dist/field-definitions/core-boolean-field.js.map +1 -0
- package/dist/field-definitions/core-field.d.ts +51 -0
- package/dist/field-definitions/core-field.d.ts.map +1 -0
- package/dist/field-definitions/core-field.js +74 -0
- package/dist/field-definitions/core-field.js.map +1 -0
- package/dist/field-definitions/core-numeric-field.d.ts +18 -0
- package/dist/field-definitions/core-numeric-field.d.ts.map +1 -0
- package/dist/field-definitions/core-numeric-field.js +45 -0
- package/dist/field-definitions/core-numeric-field.js.map +1 -0
- package/dist/field-definitions/core-string-field.d.ts +15 -0
- package/dist/field-definitions/core-string-field.d.ts.map +1 -0
- package/dist/field-definitions/core-string-field.js +27 -0
- package/dist/field-definitions/core-string-field.js.map +1 -0
- package/dist/field-definitions/index.d.ts +5 -0
- package/dist/field-definitions/index.d.ts.map +1 -0
- package/dist/field-definitions/index.js +5 -0
- package/dist/field-definitions/index.js.map +1 -0
- package/dist/field-registry.d.ts +5 -0
- package/dist/field-registry.d.ts.map +1 -0
- package/dist/field-registry.js +4 -0
- package/dist/field-registry.js.map +1 -0
- package/dist/field-tree-factory.d.ts +12 -0
- package/dist/field-tree-factory.d.ts.map +1 -0
- package/dist/field-tree-factory.js +2 -0
- package/dist/field-tree-factory.js.map +1 -0
- package/dist/field-tree.d.ts +171 -0
- package/dist/field-tree.d.ts.map +1 -0
- package/dist/field-tree.js +248 -0
- package/dist/field-tree.js.map +1 -0
- package/dist/field.d.ts +34 -0
- package/dist/field.d.ts.map +1 -0
- package/dist/field.js +2 -0
- package/dist/field.js.map +1 -0
- package/dist/fields-factory.d.ts +5 -0
- package/dist/fields-factory.d.ts.map +1 -0
- package/dist/fields-factory.js +2 -0
- package/dist/fields-factory.js.map +1 -0
- package/dist/fields.d.ts +101 -0
- package/dist/fields.d.ts.map +1 -0
- package/dist/fields.js +143 -0
- package/dist/fields.js.map +1 -0
- package/dist/index.d.mts +794 -815
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1084 -1116
- package/dist/mixins/mixin-factory.d.ts +29 -0
- package/dist/mixins/mixin-factory.d.ts.map +1 -0
- package/dist/mixins/mixin-factory.js +32 -0
- package/dist/mixins/mixin-factory.js.map +1 -0
- package/dist/mixins/with-boolean-fields.mixin.d.ts +9 -0
- package/dist/mixins/with-boolean-fields.mixin.d.ts.map +1 -0
- package/dist/mixins/with-boolean-fields.mixin.js +4 -0
- package/dist/mixins/with-boolean-fields.mixin.js.map +1 -0
- package/dist/mixins/with-default-generic-fields.mixin.d.ts +31 -0
- package/dist/mixins/with-default-generic-fields.mixin.d.ts.map +1 -0
- package/dist/mixins/with-default-generic-fields.mixin.js +15 -0
- package/dist/mixins/with-default-generic-fields.mixin.js.map +1 -0
- package/dist/mixins/with-numeric-fields.mixin.d.ts +9 -0
- package/dist/mixins/with-numeric-fields.mixin.d.ts.map +1 -0
- package/dist/mixins/with-numeric-fields.mixin.js +4 -0
- package/dist/mixins/with-numeric-fields.mixin.js.map +1 -0
- package/dist/mixins/with-string-fields.mixin.d.ts +9 -0
- package/dist/mixins/with-string-fields.mixin.d.ts.map +1 -0
- package/dist/mixins/with-string-fields.mixin.js +4 -0
- package/dist/mixins/with-string-fields.mixin.js.map +1 -0
- package/dist/policies/clamp-max-policy.d.ts +11 -0
- package/dist/policies/clamp-max-policy.d.ts.map +1 -0
- package/dist/policies/clamp-max-policy.js +18 -0
- package/dist/policies/clamp-max-policy.js.map +1 -0
- package/dist/policies/clamp-min-policy.d.ts +11 -0
- package/dist/policies/clamp-min-policy.d.ts.map +1 -0
- package/dist/policies/clamp-min-policy.js +18 -0
- package/dist/policies/clamp-min-policy.js.map +1 -0
- package/dist/policies/clamp-policy.d.ts +12 -0
- package/dist/policies/clamp-policy.d.ts.map +1 -0
- package/dist/policies/clamp-policy.js +21 -0
- package/dist/policies/clamp-policy.js.map +1 -0
- package/dist/policies/index.d.ts +6 -0
- package/dist/policies/index.d.ts.map +1 -0
- package/dist/policies/index.js +6 -0
- package/dist/policies/index.js.map +1 -0
- package/dist/policies/policies.d.ts +38 -0
- package/dist/policies/policies.d.ts.map +1 -0
- package/dist/policies/policies.js +62 -0
- package/dist/policies/policies.js.map +1 -0
- package/dist/policies/policy.d.ts +6 -0
- package/dist/policies/policy.d.ts.map +1 -0
- package/dist/policies/policy.js +2 -0
- package/dist/policies/policy.js.map +1 -0
- package/dist/serializer/field-serializer.d.ts +52 -0
- package/dist/serializer/field-serializer.d.ts.map +1 -0
- package/dist/serializer/field-serializer.js +66 -0
- package/dist/serializer/field-serializer.js.map +1 -0
- package/dist/serializer/field-tree-serializer.d.ts +50 -0
- package/dist/serializer/field-tree-serializer.d.ts.map +1 -0
- package/dist/serializer/field-tree-serializer.js +68 -0
- package/dist/serializer/field-tree-serializer.js.map +1 -0
- package/dist/serializer/fields-serializer.d.ts +49 -0
- package/dist/serializer/fields-serializer.d.ts.map +1 -0
- package/dist/serializer/fields-serializer.js +57 -0
- package/dist/serializer/fields-serializer.js.map +1 -0
- package/dist/serializer/index.d.ts +8 -0
- package/dist/serializer/index.d.ts.map +1 -0
- package/dist/serializer/index.js +8 -0
- package/dist/serializer/index.js.map +1 -0
- package/dist/serializer/policies/clamp-max-policy-serializer-handler.d.ts +13 -0
- package/dist/serializer/policies/clamp-max-policy-serializer-handler.d.ts.map +1 -0
- package/dist/serializer/policies/clamp-max-policy-serializer-handler.js +10 -0
- package/dist/serializer/policies/clamp-max-policy-serializer-handler.js.map +1 -0
- package/dist/serializer/policies/clamp-min-policy-serializer-handler.d.ts +13 -0
- package/dist/serializer/policies/clamp-min-policy-serializer-handler.d.ts.map +1 -0
- package/dist/serializer/policies/clamp-min-policy-serializer-handler.js +10 -0
- package/dist/serializer/policies/clamp-min-policy-serializer-handler.js.map +1 -0
- package/dist/serializer/policies/clamp-policy-serializer-handler.d.ts +16 -0
- package/dist/serializer/policies/clamp-policy-serializer-handler.d.ts.map +1 -0
- package/dist/serializer/policies/clamp-policy-serializer-handler.js +10 -0
- package/dist/serializer/policies/clamp-policy-serializer-handler.js.map +1 -0
- package/dist/serializer/policy-serializer.d.ts +41 -0
- package/dist/serializer/policy-serializer.d.ts.map +1 -0
- package/dist/serializer/policy-serializer.js +43 -0
- package/dist/serializer/policy-serializer.js.map +1 -0
- package/dist/setup.d.ts +41 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +57 -0
- package/dist/setup.js.map +1 -0
- package/dist/store.d.ts +137 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +2 -0
- package/dist/store.js.map +1 -0
- package/package.json +44 -44
- package/dist/index.cjs +0 -1232
- package/dist/index.d.cts +0 -1018
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs.map +0 -1
package/dist/index.d.cts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/policies/policy.ts","../src/policies/clamp-policy.ts","../src/policies/clamp-max-policy.ts","../src/policies/clamp-min-policy.ts","../src/policies/policies.ts","../src/mixins/mixin-factory.ts","../src/field.ts","../src/field-definitions/core-field.ts","../src/field-definitions/core-boolean-field.ts","../src/field-definitions/core-string-field.ts","../src/field-definitions/core-numeric-field.ts","../src/field-registry.ts","../src/fields.ts","../src/fields-factory.ts","../src/field-tree-factory.ts","../src/field-tree.ts","../src/core-fields.ts","../src/core-fields-factory.ts","../src/core-field-tree.ts","../src/core-field-tree-factory.ts","../src/serializer/policy-serializer.ts","../src/serializer/policies/clamp-policy-serializer-handler.ts","../src/serializer/policies/clamp-max-policy-serializer-handler.ts","../src/serializer/policies/clamp-min-policy-serializer-handler.ts","../src/serializer/field-serializer.ts","../src/serializer/fields-serializer.ts","../src/serializer/field-tree-serializer.ts","../src/store.ts","../src/data-store-field-resolver.ts","../src/data-store.ts","../src/setup.ts"],"mappings":"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"}
|
package/dist/index.d.mts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/policies/policy.ts","../src/policies/clamp-policy.ts","../src/policies/clamp-max-policy.ts","../src/policies/clamp-min-policy.ts","../src/policies/policies.ts","../src/mixins/mixin-factory.ts","../src/field.ts","../src/field-definitions/core-field.ts","../src/field-definitions/core-boolean-field.ts","../src/field-definitions/core-string-field.ts","../src/field-definitions/core-numeric-field.ts","../src/field-registry.ts","../src/fields.ts","../src/fields-factory.ts","../src/field-tree-factory.ts","../src/field-tree.ts","../src/core-fields.ts","../src/core-fields-factory.ts","../src/core-field-tree.ts","../src/core-field-tree-factory.ts","../src/serializer/policy-serializer.ts","../src/serializer/policies/clamp-policy-serializer-handler.ts","../src/serializer/policies/clamp-max-policy-serializer-handler.ts","../src/serializer/policies/clamp-min-policy-serializer-handler.ts","../src/serializer/field-serializer.ts","../src/serializer/fields-serializer.ts","../src/serializer/field-tree-serializer.ts","../src/store.ts","../src/data-store-field-resolver.ts","../src/data-store.ts","../src/setup.ts"],"mappings":"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"}
|
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/policies/clamp-policy.ts","../src/policies/clamp-max-policy.ts","../src/policies/clamp-min-policy.ts","../src/policies/policies.ts","../src/mixins/mixin-factory.ts","../src/field-definitions/core-field.ts","../src/field-definitions/core-boolean-field.ts","../src/field-definitions/core-string-field.ts","../src/field-definitions/core-numeric-field.ts","../src/field-registry.ts","../src/fields.ts","../src/field-tree.ts","../src/mixins/with-boolean-fields.mixin.ts","../src/mixins/with-string-fields.mixin.ts","../src/mixins/with-numeric-fields.mixin.ts","../src/mixins/with-default-generic-fields.mixin.ts","../src/core-fields.ts","../src/core-fields-factory.ts","../src/core-field-tree.ts","../src/core-field-tree-factory.ts","../src/serializer/policies/clamp-policy-serializer-handler.ts","../src/serializer/policies/clamp-max-policy-serializer-handler.ts","../src/serializer/policies/clamp-min-policy-serializer-handler.ts","../src/serializer/policy-serializer.ts","../src/serializer/field-serializer.ts","../src/serializer/fields-serializer.ts","../src/serializer/field-tree-serializer.ts","../src/data-store-field-resolver.ts","../src/data-store.ts","../src/setup.ts"],"sourcesContent":["import {Policy} from './policy';\r\n\r\nexport class ClampPolicy implements Policy<number> {\r\n static readonly id = 'clamp';\r\n readonly id = ClampPolicy.id;\r\n\r\n constructor(public min: number, public max: number) {\r\n }\r\n\r\n apply(val: number) {\r\n return Math.max(this.min, Math.min(this.max, val));\r\n }\r\n\r\n updateBounds(min: number, max: number) {\r\n this.min = min;\r\n this.max = max;\r\n }\r\n}\r\n\r\nexport function clampPolicy(min: number, max: number) {\r\n return new ClampPolicy(min, max)\r\n}\r\n\r\n","import {Policy} from './policy';\r\n\r\nexport class ClampMaxPolicy implements Policy<number> {\r\n static readonly id = 'clampMax';\r\n readonly id = ClampMaxPolicy.id;\r\n\r\n constructor(public max: number) {\r\n }\r\n\r\n apply(val: number) {\r\n return Math.min(this.max, val);\r\n }\r\n\r\n updateBounds(max: number) {\r\n this.max = max;\r\n }\r\n}\r\n\r\nexport function clampMaxPolicy(max: number) {\r\n return new ClampMaxPolicy(max)\r\n}\r\n","import {Policy} from './policy';\r\n\r\nexport class ClampMinPolicy implements Policy<number> {\r\n static readonly id = 'clampMin';\r\n readonly id = ClampMinPolicy.id;\r\n\r\n constructor(public min: number) {\r\n }\r\n\r\n apply(val: number) {\r\n return Math.max(this.min, val);\r\n }\r\n\r\n updateBounds(min: number) {\r\n this.min = min;\r\n }\r\n}\r\n\r\nexport function clampMinPolicy(min: number) {\r\n return new ClampMinPolicy(min)\r\n}\r\n","import {Policy} from './policy';\r\n\r\n\r\nexport class Policies<T> {\r\n private readonly policies = new Map<string, Policy<T>>();\r\n\r\n get items() {\r\n return this.policies;\r\n }\r\n\r\n /**\r\n * Retrieves a specific policy instance by its ID.\r\n * Useful for accessing a policy's internal state or methods.\r\n * @template P The expected type of the policy.\r\n * @param id The unique ID of the policy to retrieve.\r\n * @returns The policy instance, or `undefined` if not found.\r\n */\r\n get<P extends Policy<T>>(id: string): P | undefined {\r\n return this.policies.get(id) as P;\r\n }\r\n\r\n /**\r\n * Adds a new policy to the field or replaces an existing one with the same ID.\r\n * The new policy will be applied on the next `set()` operation.\r\n * If a policy with the same ID already exists, its `destroy` method will be called before it is replaced.\r\n * @param policy The policy instance to add.\r\n */\r\n add(policy: Policy<T>) {\r\n const existed = this.policies.get(policy.id);\r\n existed?.destroy?.();\r\n this.policies.set(policy.id, policy);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a policy from the field by its ID and call `destroy` method.\r\n * @param policyId The unique ID of the policy to remove.\r\n * @returns `true` if the policy was found and removed, otherwise `false`.\r\n */\r\n remove(policyId: string): boolean {\r\n const policyToRemove = this.policies.get(policyId);\r\n if (!policyToRemove) {\r\n return false;\r\n }\r\n policyToRemove.destroy?.();\r\n return this.policies.delete(policyId);\r\n }\r\n\r\n isEmpty() {\r\n return this.policies.size === 0;\r\n }\r\n\r\n /**\r\n * Removes all policies from the field.\r\n * After this, `set()` will no longer apply any transformations to the value until new policies are added.\r\n */\r\n clear(): void {\r\n this.policies.forEach(policy => policy.destroy?.());\r\n this.policies.clear();\r\n }\r\n\r\n /**\r\n * Forces the current value to be re-processed by all policies.\r\n * Useful if a policy's logic has changed and you need to re-evaluate the current state.\r\n */\r\n apply(val: T) {\r\n let finalVal = val;\r\n this.policies.forEach(policy => finalVal = policy.apply(finalVal));\r\n return finalVal;\r\n }\r\n}\r\n","import {Field, Fields} from '@axi-engine/fields';\r\nimport {Constructor} from '@axi-engine/utils';\r\n\r\n/**\r\n * extract field type\r\n */\r\ntype GetValueType<TField extends Field<any>> = TField extends Field<infer U> ? U : any;\r\n\r\n/**\r\n * A mapped type that creates the method signatures for a typed mixin.\r\n * e.g., createBoolean, upsetBoolean, getBoolean\r\n */\r\ntype TypedMethods<\r\n TCtor extends Constructor<Field<any>>,\r\n TBaseName extends string\r\n> = {\r\n [K in `create${TBaseName}`]: (name: string, initialValue: GetValueType<InstanceType<TCtor>>, options?: ConstructorParameters<TCtor>[2]) => InstanceType<TCtor>;\r\n} & {\r\n [K in `upset${TBaseName}`]: (name: string, value: GetValueType<InstanceType<TCtor>>, options?: ConstructorParameters<TCtor>[2]) => InstanceType<TCtor>;\r\n} & {\r\n [K in `get${TBaseName}`]: (name: string) => InstanceType<TCtor>;\r\n};\r\n\r\n/**\r\n * A higher-order function that generates a mixin for a specific Field type.\r\n * This factory removes the need to write boilerplate mixin code for every new field type.\r\n *\r\n * @param typeName The `typeName` of the Field to create (e.g., 'boolean', 'my-signal-field').\r\n * @param baseMethodName The base name for the generated methods (e.g., 'Boolean', 'MySignal').\r\n * @returns A fully functional, typed mixin.\r\n */\r\nexport function createTypedMethodsMixin<\r\n TCtor extends Constructor<Field<any>>,\r\n TBaseName extends string\r\n>(\r\n typeName: string,\r\n baseMethodName: TBaseName\r\n) {\r\n const methodNames = {\r\n create: `create${baseMethodName}`,\r\n upset: `upset${baseMethodName}`,\r\n get: `get${baseMethodName}`,\r\n };\r\n\r\n return function <TBase extends Constructor<Fields>>(Base: TBase):\r\n Constructor<InstanceType<TBase> & TypedMethods<TCtor, TBaseName>>\r\n {\r\n return class FieldsWith extends Base {\r\n // createBoolean, createMySignal, etc.\r\n [methodNames.create](name: string, initialValue: any, options?: ConstructorParameters<TCtor>[2]): InstanceType<TCtor> {\r\n return this.create(typeName, name, initialValue, options) as InstanceType<TCtor>;\r\n }\r\n\r\n // upsetBoolean, upsetMySignal, etc.\r\n [methodNames.upset](name: string, value: any, options?: ConstructorParameters<TCtor>[2]): InstanceType<TCtor> {\r\n return this.upset(typeName, name, value, options) as InstanceType<TCtor>;\r\n }\r\n\r\n // getBoolean, getMySignal, etc.\r\n [methodNames.get](name: string): InstanceType<TCtor> {\r\n return this.get(name);\r\n }\r\n } as any;\r\n }\r\n}\r\n","import {Emitter, Subscribable} from '@axi-engine/utils';\r\nimport {Policies} from '../policies';\r\nimport {dequal} from 'dequal';\r\nimport {Field, FieldOptions} from '../field';\r\n\r\n\r\n/**\r\n * A state container that wraps a value.\r\n * It allows applying a pipeline of transformation or validation \"policies\" before any new value is set.\r\n *\r\n * @template T The type of the value this field holds.\r\n *\r\n */\r\nexport class CoreField<T> implements Field<T> {\r\n /** A type keyword of the field */\r\n static readonly typeName: string = 'default';\r\n readonly typeName: string = CoreField.typeName;\r\n\r\n /** A unique identifier for the field. */\r\n private readonly _name: string;\r\n private _value!: T;\r\n private readonly _onChange: Emitter<[newValue: T, oldvalue: T]> = new Emitter();\r\n readonly onChange: Subscribable<[newValue: T, oldvalue: T]>;\r\n readonly policies: Policies<T> = new Policies();\r\n\r\n\r\n get name() {\r\n return this._name;\r\n }\r\n\r\n /**\r\n * Gets the current raw value of the field.\r\n * For reactive updates, it's recommended to use the `.signal` property instead.\r\n */\r\n get value(): T {\r\n return this._value;\r\n }\r\n\r\n /**\r\n * Sets a new value for the field.\r\n * The provided value will be processed by all registered policies before the underlying signal is updated.\r\n * @param val The new value to set.\r\n */\r\n set value(val: T) {\r\n const oldVal = this._value;\r\n const finalVal = this.policies.apply(val);\r\n if (!dequal(this._value, finalVal)) {\r\n this._value = finalVal;\r\n this._onChange.emit(this._value, oldVal);\r\n }\r\n }\r\n\r\n /**\r\n * Creates an instance of a Field.\r\n * @param name A unique identifier for the field.\r\n * @param initialVal The initial value of the field.\r\n * @param options Optional configuration for the field.\r\n * @param options.policies An array of policies to apply to the field's value on every `set` operation.\r\n * @param options.isEqual An function for compare old and new value, by default uses the strictEquals from `utils`\r\n *\r\n */\r\n constructor(\r\n name: string,\r\n initialVal: T,\r\n options?: FieldOptions<T>\r\n ) {\r\n this.onChange = this._onChange;\r\n this._name = name;\r\n options?.policies?.forEach(policy => this.policies.add(policy));\r\n this.value = initialVal;\r\n }\r\n\r\n setValueSilently(val: T) {\r\n this._value = this.policies.apply(val);\r\n }\r\n\r\n batchUpdate(updateFn: (currentValue: T) => T): void {\r\n this.value = updateFn(this.value);\r\n }\r\n\r\n /**\r\n * Cleans up resources used by the field and its policies.\r\n * This should be called when the field is no longer needed to prevent memory leaks from reactive policies.\r\n */\r\n destroy() {\r\n this.policies.clear();\r\n this._onChange.clear();\r\n }\r\n}\r\n","import {CoreField} from './core-field';\r\nimport {BooleanField, FieldOptions} from '../field';\r\n\r\nexport interface CoreBooleanFieldOptions extends FieldOptions<boolean> { }\r\n\r\nexport class CoreBooleanField extends CoreField<boolean> implements BooleanField {\r\n static readonly typeName: string = 'boolean';\r\n readonly typeName = CoreBooleanField.typeName;\r\n\r\n constructor(name: string, initialVal: boolean, options?: CoreBooleanFieldOptions) {\r\n super(name, initialVal, options);\r\n }\r\n\r\n toggle(): boolean {\r\n this.value = !this.value;\r\n return this.value;\r\n }\r\n}\r\n","import {CoreField} from './core-field';\r\nimport {FieldOptions, StringField} from '../field';\r\n\r\nexport interface CoreStringFieldOptions extends FieldOptions<string> { }\r\n\r\nexport class CoreStringField extends CoreField<string> implements StringField {\r\n static readonly typeName: string = 'string';\r\n readonly typeName = CoreStringField.typeName;\r\n\r\n constructor(name: string, initialVal: string, options?: CoreStringFieldOptions) {\r\n super(name, initialVal, options);\r\n }\r\n\r\n append(str: string | number) {\r\n this.value = this.value + str;\r\n return this;\r\n }\r\n prepend(str: string | number) {\r\n this.value = str + this.value;\r\n return this;\r\n }\r\n trim() {\r\n this.value = this.value.trim();\r\n return this;\r\n }\r\n isEmpty() {\r\n return this.value.length === 0;\r\n }\r\n\r\n clear() {\r\n this.value = '';\r\n }\r\n}\r\n","import {\r\n clampPolicy,\r\n clampMaxPolicy,\r\n clampMinPolicy,\r\n ClampPolicy,\r\n ClampMinPolicy,\r\n ClampMaxPolicy\r\n} from '../policies';\r\nimport {CoreField} from './core-field';\r\nimport {isNullOrUndefined} from '@axi-engine/utils';\r\nimport {FieldOptions, NumericField} from '../field';\r\n\r\n\r\nexport interface CoreNumericFieldOptions extends FieldOptions<number> {\r\n min?: number;\r\n max?: number;\r\n}\r\n\r\nexport class CoreNumericField extends CoreField<number> implements NumericField {\r\n static readonly typeName: string = 'numeric';\r\n readonly typeName = CoreNumericField.typeName;\r\n\r\n get min(): number | undefined {\r\n const policy =\r\n this.policies.get<ClampPolicy>(ClampPolicy.id) ??\r\n this.policies.get<ClampMinPolicy>(ClampMinPolicy.id);\r\n return policy?.min;\r\n }\r\n\r\n get max(): number | undefined {\r\n const policy =\r\n this.policies.get<ClampPolicy>(ClampPolicy.id) ??\r\n this.policies.get<ClampMaxPolicy>(ClampMaxPolicy.id);\r\n return policy?.max;\r\n }\r\n\r\n constructor(name: string, initialVal: number, options?: CoreNumericFieldOptions) {\r\n const policies = options?.policies ?? [];\r\n if (!isNullOrUndefined(options?.min) && !isNullOrUndefined(options?.max)) {\r\n policies.unshift(clampPolicy(options!.min!, options!.max!));\r\n } else if (!isNullOrUndefined(options?.min)) {\r\n policies.unshift(clampMinPolicy(options!.min!));\r\n } else if (!isNullOrUndefined(options?.max)) {\r\n policies.unshift(clampMaxPolicy(options!.max!));\r\n }\r\n super(name, initialVal, {policies});\r\n }\r\n\r\n isMin(): boolean {\r\n const min = this.min;\r\n return isNullOrUndefined(min) ? false : this.value <= min!;\r\n }\r\n\r\n isMax(): boolean {\r\n const max = this.max;\r\n return isNullOrUndefined(max) ? false : this.value >= max!;\r\n }\r\n\r\n inc(amount = 1) {\r\n this.value = this.value + amount;\r\n }\r\n\r\n dec(amount = 1) {\r\n this.value = this.value - amount;\r\n }\r\n}\r\n","import {ConstructorRegistry} from '@axi-engine/utils';\r\nimport {Field} from './field';\r\n\r\n\r\nexport class FieldRegistry extends ConstructorRegistry<Field<any>> { }\r\n","import {Emitter, throwIf} from '@axi-engine/utils';\r\nimport {FieldRegistry} from './field-registry';\r\nimport {Field} from './field';\r\n\r\n/**\r\n * A container for a collection of named `Field` instances.\r\n *\r\n * This class acts as a \"leaf\" node in the `FieldTree` hierarchy, managing a flat\r\n * key-value store of reactive data points. It uses a `FieldRegistry` to dynamically\r\n * create `Field` instances of different types.\r\n */\r\nexport class Fields {\r\n static readonly typeName = 'fields';\r\n readonly typeName = Fields.typeName;\r\n\r\n readonly _fields: Map<string, Field<any>> = new Map();\r\n readonly _fieldRegistry: FieldRegistry;\r\n\r\n /**\r\n * An event emitter that fires when a new field is added to the collection.\r\n * @event\r\n * @param {object} event - The event payload.\r\n * @param {string} event.name - The name of the added field.\r\n * @param {Field<any>} event.field - The `Field` instance that was added.\r\n */\r\n onAdd = new Emitter<[event: {\r\n name: string,\r\n field: Field<any>\r\n }]>();\r\n\r\n /**\r\n * An event emitter that fires after one or more fields have been removed.\r\n * @event\r\n * @param {object} event - The event payload.\r\n * @param {string[]} event.names - An array of names of the fields that were successfully removed.\r\n */\r\n onRemove = new Emitter<[event: {\r\n names: string[]\r\n }]>();\r\n\r\n /**\r\n * Gets the read-only map of all `Field` instances in this container.\r\n * @returns {Map<string, Field<any>>} The collection of fields.\r\n */\r\n get fields(): Map<string, Field<any>> {\r\n return this._fields;\r\n }\r\n\r\n /**\r\n * Creates an instance of Fields.\r\n * @param {FieldRegistry} fieldRegistry - The registry used to create new `Field` instances.\r\n */\r\n constructor(fieldRegistry: FieldRegistry) {\r\n this._fieldRegistry = fieldRegistry;\r\n }\r\n\r\n /**\r\n * Checks if a field with the given name exists in the collection.\r\n * @param {string} name The name of the field to check.\r\n * @returns {boolean} `true` if the field exists, otherwise `false`.\r\n */\r\n has(name: string): boolean {\r\n return this._fields.has(name);\r\n }\r\n\r\n /**\r\n * Adds a pre-existing `Field` instance to the collection and fires the `onAdd` event.\r\n * @template T - The specific `Field` type being added.\r\n * @param {Field<any>} field - The `Field` instance to add.\r\n * @returns {T} The added `Field` instance, cast to type `T`.\r\n * @throws If a field with the same name already exists.\r\n */\r\n add<T extends Field<any>>(field: Field<any>): T {\r\n throwIf(this.has(field.name), `Field with name '${field.name}' already exists`);\r\n\r\n this._fields.set(field.name, field);\r\n\r\n this.onAdd.emit({\r\n name: field.name,\r\n field: field\r\n });\r\n\r\n return field as T;\r\n }\r\n\r\n /**\r\n * Creates a new `Field` instance of a specified type, adds it to the collection, and returns it.\r\n * This is the primary factory method for creating fields within this container.\r\n * @template T - The expected `Field` type to be returned.\r\n * @param {string} typeName - The registered type name of the field to create (e.g., 'numeric', 'boolean').\r\n * @param {string} name - The unique name for the new field.\r\n * @param {*} initialValue - The initial value for the new field.\r\n * @param {*} [options] - Optional configuration passed to the field's constructor.\r\n * @returns {T} The newly created `Field` instance.\r\n */\r\n create<T extends Field<any>>(\r\n typeName: string,\r\n name: string,\r\n initialValue: any,\r\n options?: any\r\n ): T {\r\n const Ctor = this._fieldRegistry.get(typeName);\r\n const field = new Ctor(name, initialValue, options);\r\n this.add(field);\r\n return field as T;\r\n }\r\n\r\n /**\r\n * Updates an existing field's value or creates a new one if it doesn't exist.\r\n * @template T - The expected `Field` type.\r\n * @param {string} typeName - The type name to use if a new field needs to be created.\r\n * @param {string} name - The name of the field to update or create.\r\n * @param {*} value - The new value to set.\r\n * @param {*} [options] - Optional configuration, used only if a new field is created.\r\n * @returns {T} The existing or newly created `Field` instance.\r\n */\r\n upset<T extends Field<any>>(\r\n typeName: string,\r\n name: string,\r\n value: any,\r\n options?: any\r\n ): T {\r\n if (this.has(name)) {\r\n const field = this.get<T>(name);\r\n field.value = value;\r\n return field;\r\n }\r\n return this.create<T>(typeName, name, value, options);\r\n }\r\n\r\n /**\r\n * Retrieves a field by its name.\r\n * @template TField - The expected `Field` type to be returned.\r\n * @param {string} name - The name of the field to retrieve.\r\n * @returns {TField} The `Field` instance.\r\n * @throws If the field does not exist.\r\n */\r\n get<TField extends Field<any>>(name: string): TField {\r\n throwIf(!this._fields.has(name), `Field with name '${name}' not exists`);\r\n return this._fields.get(name)! as TField;\r\n }\r\n\r\n /**\r\n * Removes one or more fields from the collection.\r\n * This method ensures that the `destroy` method of each removed field is called to clean up its resources.\r\n * @param {string| string[]} names A single name or an array of names to remove.\r\n */\r\n remove(names: string | string[]) {\r\n const namesToRemove = Array.isArray(names) ? names : [names];\r\n const reallyRemoved = namesToRemove.filter(name => {\r\n const field = this._fields.get(name);\r\n if (!field) {\r\n return false;\r\n }\r\n field.destroy();\r\n return this._fields.delete(name);\r\n });\r\n\r\n if (!reallyRemoved.length) {\r\n return;\r\n }\r\n\r\n this.onRemove.emit({names: reallyRemoved});\r\n }\r\n\r\n /**\r\n * Removes all fields from the collection, ensuring each is properly destroyed.\r\n */\r\n clear() {\r\n this.remove(Array.from(this._fields.keys()));\r\n }\r\n\r\n destroy() {\r\n this.clear();\r\n this.onAdd.clear();\r\n this.onRemove.clear();\r\n }\r\n}\r\n","import {Emitter, ensurePathArray, ensurePathString, PathType, throwIf, throwIfEmpty} from '@axi-engine/utils';\r\nimport {Fields} from './fields';\r\nimport {FieldTreeFactory} from './field-tree-factory';\r\n\r\n/** A type alias for any container that can be a child node in a FieldTree */\r\nexport type TreeNode<F extends Fields> = FieldTree<F> | F;\r\n\r\n/**\r\n * Represents a hierarchical data structure for managing the global state of the system.\r\n *\r\n * This class acts as the single source of truth for long-term data that exists\r\n * across different scenes and scripts, such as player stats, inventory,\r\n * and overall game progress. It uses a path-based system for accessing and\r\n * manipulating nested data, similar to a file system.\r\n *\r\n */\r\nexport class FieldTree<TFields extends Fields> {\r\n static readonly typeName = 'fieldTree';\r\n readonly typeName = FieldTree.typeName;\r\n\r\n /** @private The internal map storing child nodes (branches or leaves). */\r\n private readonly _nodes: Map<string, TreeNode<TFields>> = new Map();\r\n\r\n /** @private The factory used to create new child nodes. */\r\n private readonly _factory: FieldTreeFactory<TFields>;\r\n\r\n /**\r\n * An event emitter that fires immediately after a new node is added to this tree branch.\r\n * @event\r\n * @param {object} event - The event payload.\r\n * @param {string} event.name - The name (key) of the added node.\r\n * @param event.node - The node instance that was added.\r\n * @example\r\n * myTree.onAdd.subscribe(({ name, node }) => {\r\n * console.log(`Node '${name}' was added.`, node);\r\n * });\r\n */\r\n onAdd = new Emitter<[event: {\r\n name: string,\r\n node: TreeNode<TFields>\r\n }]>();\r\n\r\n /**\r\n * An event emitter that fires once after one or more nodes have been successfully removed.\r\n * @event\r\n * @param {object} event - The event payload.\r\n * @param {string[]} event.names - An array of names of the nodes that were removed.\r\n * @example\r\n * myTree.onRemove.subscribe(({ names }) => {\r\n * console.log(`Nodes removed: ${names.join(', ')}`);\r\n * });\r\n */\r\n onRemove = new Emitter<[event: {\r\n names: string[]\r\n }]>();\r\n\r\n /**\r\n * Gets the collection of direct child nodes of this tree branch.\r\n */\r\n get nodes() {\r\n return this._nodes;\r\n }\r\n\r\n /**\r\n * Creates an instance of FieldTree.\r\n * @param {FieldTreeFactory} factory - A factory responsible for creating new nodes within the tree.\r\n */\r\n constructor(factory: FieldTreeFactory<TFields>) {\r\n this._factory = factory;\r\n }\r\n\r\n /**\r\n * Checks if a direct child node with the given name exists.\r\n * @param {string} name - The name of the direct child node.\r\n * @returns {boolean} `true` if the node exists, otherwise `false`.\r\n */\r\n has(name: string): boolean {\r\n return this._nodes.has(name);\r\n }\r\n\r\n /**\r\n * Checks if a node exists at a given path, traversing the tree.\r\n * @param {PathType} path - The path to check (e.g., 'player/stats' or ['player', 'stats']).\r\n * @returns {boolean} `true` if the entire path resolves to a node, otherwise `false`.\r\n */\r\n hasPath(path: PathType): boolean {\r\n const traversedPath = this.traversePath(path);\r\n return traversedPath.branch.has(traversedPath.leafName);\r\n }\r\n\r\n /**\r\n * Adds a pre-existing node as a direct child of this tree branch.\r\n * @param {string} name - The name to assign to the new child node.\r\n * @param {TreeNode} node - The node instance to add.\r\n * @returns {TreeNode} The added node.\r\n * @throws If a node with the same name already exists.\r\n */\r\n addNode(name: string, node: TreeNode<TFields>): TreeNode<TFields> {\r\n throwIf(this.has(name), `Can't add node with name: '${name}', node already exists`);\r\n this._nodes.set(name, node);\r\n this.onAdd.emit({ name, node });\r\n return node;\r\n }\r\n\r\n /**\r\n * Retrieves a direct child node by its name.\r\n * @param {string} name - The name of the child node.\r\n * @returns {TreeNode} The retrieved node.\r\n * @throws If a node with the given name cannot be found.\r\n */\r\n getNode(name: string): TreeNode<TFields> {\r\n const node = this._nodes.get(name);\r\n throwIfEmpty(node, `Can't find node with name '${name}'`);\r\n return node!;\r\n }\r\n\r\n /**\r\n * Removes one or more nodes from this tree branch.\r\n *\r\n * This method first validates that all specified nodes exist. If validation passes,\r\n * it recursively calls `destroy()` on each node to ensure proper cleanup of the entire subtree.\r\n * Finally, it emits a single `onRemove` event with the names of all successfully removed nodes.\r\n *\r\n * @param {string | string[]} names - A single name or an array of names of the nodes to remove.\r\n * @throws If any of the specified names do not correspond to an existing node.\r\n */\r\n removeNode(names: string | string[]) {\r\n const toRemoveNames = Array.isArray(names) ? names : [names];\r\n toRemoveNames.forEach(name => {\r\n throwIf(!this.has(name), `Can't remove node with name: '${name}', node doesn't exists`);\r\n });\r\n toRemoveNames.forEach(name => {\r\n this._nodes.get(name)!.destroy();\r\n this._nodes.delete(name);\r\n });\r\n if (toRemoveNames.length) {\r\n this.onRemove.emit({names: toRemoveNames});\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new `FieldTree` (branch) node at the specified path.\r\n * @param {PathType} path - The path where the new `FieldTree` should be created.\r\n * @param {boolean} [createPath=false] - If `true`, any missing parent branches in the path will be created automatically.\r\n * @returns {FieldTree} The newly created `FieldTree` instance.\r\n * @throws If the path is invalid or a node already exists at the target location.\r\n */\r\n createFieldTree<T extends FieldTree<TFields>>(path: PathType, createPath?: boolean): T {\r\n const traversedPath = this.traversePath(path, createPath);\r\n return traversedPath.branch.addNode(traversedPath.leafName, this._factory.tree()) as T;\r\n }\r\n\r\n /**\r\n * Creates a new `Fields` (leaf) container at the specified path.\r\n * @param {PathType} path - The path where the new `Fields` container should be created.\r\n * @param {boolean} [createPath=false] - If `true`, any missing parent branches in the path will be created automatically.\r\n * @returns {Fields} The newly created `Fields` instance.\r\n * @throws If the path is invalid or a node already exists at the target location.\r\n */\r\n createFields(path: PathType, createPath?: boolean): TFields {\r\n const traversedPath = this.traversePath(path, createPath);\r\n return traversedPath.branch.addNode(traversedPath.leafName, this._factory.fields()) as TFields;\r\n }\r\n\r\n /**\r\n * Retrieves a `FieldTree` (branch) node from a specified path.\r\n * @param {PathType} path - The path to the `FieldTree` node.\r\n * @returns {FieldTree} The `FieldTree` instance at the specified path.\r\n * @throws If the path is invalid or the node at the path is not a `FieldTree`.\r\n */\r\n getFieldTree(path: PathType): FieldTree<TFields> {\r\n const traversedPath = this.traversePath(path);\r\n const node = traversedPath.branch.getNode(traversedPath.leafName);\r\n throwIf(\r\n !(node instanceof FieldTree),\r\n `Node with name: ${traversedPath.leafName} by path: '${ensurePathString(path)}' should be instance of FieldTree`\r\n );\r\n return node as FieldTree<TFields>;\r\n }\r\n\r\n /**\r\n * Retrieves a `Fields` (leaf) container from a specified path.\r\n * @param {PathType} path - The path to the `Fields` container.\r\n * @returns {Fields} The `Fields` instance at the specified path.\r\n * @throws If the path is invalid or the node at the path is not a `Fields` container.\r\n */\r\n getFields(path: PathType): TFields {\r\n const traversedPath = this.traversePath(path);\r\n const node = traversedPath.branch.getNode(traversedPath.leafName);\r\n throwIf(\r\n !(node instanceof Fields),\r\n `Node with name: ${traversedPath.leafName} by path: '${ensurePathString(path)}' should be instance of Fields`\r\n );\r\n return node as TFields;\r\n }\r\n\r\n /**\r\n * Retrieves a `FieldTree` at the specified path. If it or any part of the path doesn't exist, it will be created.\r\n * @param {PathType} path - The path to the `FieldTree` node.\r\n * @returns {FieldTree} The existing or newly created `FieldTree` instance.\r\n */\r\n getOrCreateFieldTree(path: PathType): FieldTree<TFields> {\r\n const traversedPath = this.traversePath(path, true);\r\n return traversedPath.branch.has(traversedPath.leafName) ?\r\n traversedPath.branch.getFieldTree(traversedPath.leafName) :\r\n traversedPath.branch.createFieldTree(traversedPath.leafName);\r\n }\r\n\r\n /**\r\n * Retrieves a `Fields` container at the specified path. If it or any part of the path doesn't exist, it will be created.\r\n * @param {PathType} path - The path to the `Fields` container.\r\n * @returns {Fields} The existing or newly created `Fields` instance.\r\n */\r\n getOrCreateFields(path: PathType): TFields {\r\n const traversedPath = this.traversePath(path, true);\r\n return traversedPath.branch.has(traversedPath.leafName) ?\r\n traversedPath.branch.getFields(traversedPath.leafName) :\r\n traversedPath.branch.createFields(traversedPath.leafName);\r\n }\r\n\r\n /**\r\n * Finds the parent node for a given path.\r\n * @param path The path to the target node.\r\n * @returns The parent node (either a FieldTree or Fields).\r\n * @throws An error if the path is invalid or any intermediate node is not a FieldTree.\r\n */\r\n findParentNode(path: PathType): FieldTree<TFields> | TFields {\r\n const info = this.traversePath(path);\r\n return info.branch;\r\n }\r\n\r\n /**\r\n * Removes all child nodes from this tree branch.\r\n * This method ensures that `destroy()` is called on each child node, allowing for\r\n * a full, recursive cleanup of the entire subtree.\r\n */\r\n clear() {\r\n this.removeNode(Array.from(this._nodes.keys()));\r\n }\r\n\r\n /**\r\n * Performs a complete cleanup of this node and its entire subtree.\r\n *\r\n * It recursively destroys all child nodes by calling `clear()` and then\r\n * unsubscribes all listeners from its own event emitters.\r\n * This method should be called when a node is no longer needed.\r\n */\r\n destroy() {\r\n this.clear();\r\n this.onAdd.clear();\r\n this.onRemove.clear();\r\n }\r\n\r\n /**\r\n * @private\r\n * Navigates the tree to the parent of a target node.\r\n * This is the core traversal logic for all path-based operations.\r\n * @param {PathType} path - The full path to the target node.\r\n * @param {boolean} [createPath=false] - If `true`, creates missing `FieldTree` branches along the path.\r\n * @returns {{branch: FieldTree, leafName: string}} An object containing the final branch (parent node) and the name of the leaf (target node).\r\n * @throws If the path is empty, invalid, or contains a `Fields` container as an intermediate segment.\r\n */\r\n private traversePath(\r\n path: PathType,\r\n createPath?: boolean\r\n ): { branch: FieldTree<TFields>, leafName: string } {\r\n const pathArr = ensurePathArray(path);\r\n throwIfEmpty(pathArr, 'The path is empty');\r\n const leafName = pathArr.pop()!;\r\n let currentNode: FieldTree<TFields> = this;\r\n\r\n for (const pathPart of pathArr) {\r\n let node: TreeNode<TFields> | undefined;\r\n if (currentNode.has(pathPart)) {\r\n node = currentNode.getNode(pathPart);\r\n } else {\r\n if (createPath) {\r\n node = currentNode.createFieldTree(pathPart);\r\n }\r\n }\r\n throwIfEmpty(node, `Can't find node with name ${pathPart} by path parsing: ${ensurePathString(path)}`);\r\n throwIf(node instanceof Fields, `Node with name ${pathPart} should be instance of FieldTree`);\r\n currentNode = node as FieldTree<TFields>;\r\n }\r\n\r\n return {branch: currentNode, leafName: leafName};\r\n }\r\n}\r\n","import {CoreBooleanField} from '@axi-engine/fields';\r\nimport {createTypedMethodsMixin} from './mixin-factory';\r\n\r\nexport const WithBooleanFields = createTypedMethodsMixin<\r\n typeof CoreBooleanField,\r\n 'Boolean'\r\n>(CoreBooleanField.typeName, 'Boolean')\r\n","import {\r\n CoreBooleanField,\r\n CoreStringField,\r\n} from '@axi-engine/fields';\r\nimport {createTypedMethodsMixin} from './mixin-factory';\r\n\r\nexport const WithStringFields = createTypedMethodsMixin<\r\n typeof CoreStringField,\r\n 'String'\r\n>(CoreBooleanField.typeName, 'String')\r\n","import {CoreBooleanField, CoreNumericField} from '@axi-engine/fields';\r\nimport {createTypedMethodsMixin} from './mixin-factory';\r\n\r\n\r\nexport const WithNumericFields = createTypedMethodsMixin<\r\n typeof CoreNumericField,\r\n 'Numeric'\r\n>(CoreBooleanField.typeName, 'Numeric')\r\n","import {Constructor} from '@axi-engine/utils';\r\nimport {CoreField, FieldOptions, Fields} from '@axi-engine/fields';\r\n\r\n\r\nexport function WithDefaultGenericFields<TBase extends Constructor<Fields>>(Base: TBase) {\r\n\r\n return class FieldsWithDefaultGeneric extends Base {\r\n createGeneric<T>(name: string, initialValue: T, options?: FieldOptions<T>): CoreField<T> {\r\n return this.create(CoreField.typeName, name, initialValue, options);\r\n }\r\n\r\n upsetGeneric<T>(name: string, value: T, options?: FieldOptions<T>): CoreField<T> {\r\n return this.upset(CoreField.typeName, name, value, options);\r\n }\r\n\r\n getGeneric<T>(name: string): CoreField<T> {\r\n return this.get(name);\r\n }\r\n }\r\n}\r\n\r\n","import {WithBooleanFields} from './mixins/with-boolean-fields.mixin';\r\nimport {WithStringFields} from './mixins/with-string-fields.mixin';\r\nimport {WithNumericFields} from './mixins/with-numeric-fields.mixin';\r\nimport {WithDefaultGenericFields} from './mixins/with-default-generic-fields.mixin';\r\nimport {Fields} from './fields';\r\n\r\nexport class CoreFields extends WithBooleanFields(WithStringFields(WithNumericFields(WithDefaultGenericFields(Fields)))) {}\r\n\r\n","import {CoreFields} from './core-fields';\r\nimport {FieldRegistry} from './field-registry';\r\nimport {FieldsFactory} from './fields-factory';\r\n\r\n\r\nexport class CoreFieldsFactory implements FieldsFactory<CoreFields> {\r\n protected readonly _fieldRegistry: FieldRegistry;\r\n\r\n get fieldRegistry() {\r\n return this._fieldRegistry;\r\n }\r\n\r\n constructor(fieldRegistry: FieldRegistry) {\r\n this._fieldRegistry = fieldRegistry;\r\n }\r\n\r\n fields() {\r\n return new CoreFields(this._fieldRegistry)\r\n }\r\n}\r\n\r\n","import {FieldTree} from './field-tree';\r\nimport {CoreFields} from './core-fields';\r\n\r\nexport class CoreFieldTree extends FieldTree<CoreFields> {}\r\n","import {CoreFieldsFactory} from './core-fields-factory';\r\nimport {FieldTreeFactory} from './field-tree-factory';\r\nimport {CoreFields} from './core-fields';\r\nimport {FieldRegistry} from './field-registry';\r\nimport {CoreFieldTree} from './core-field-tree';\r\n\r\n/**\r\n * The default factory implementation that creates standard DefaultFields and FieldTree instances.\r\n */\r\nexport class CoreTreeNodeFactory extends CoreFieldsFactory implements FieldTreeFactory<CoreFields> {\r\n constructor(fieldRegistry: FieldRegistry) {\r\n super(fieldRegistry);\r\n }\r\n\r\n tree() {\r\n return new CoreFieldTree(this);\r\n }\r\n}\r\n","import {PolicySerializerHandler} from '../policy-serializer';\r\nimport {ClampPolicy} from '@axi-engine/fields';\r\n\r\nexport class ClampPolicySerializerHandler implements PolicySerializerHandler<ClampPolicy, { min: number, max: number }> {\r\n snapshot(policy: ClampPolicy) {\r\n return { min: policy.min, max: policy.max };\r\n }\r\n\r\n hydrate(data: { min: number, max: number }) {\r\n return new ClampPolicy(data.min, data.max);\r\n }\r\n}\r\n","import {PolicySerializerHandler} from '../policy-serializer';\r\nimport {ClampMaxPolicy} from '@axi-engine/fields';\r\n\r\nexport class ClampMaxPolicySerializerHandler implements PolicySerializerHandler<ClampMaxPolicy, { max: number }> {\r\n snapshot(policy: ClampMaxPolicy) {\r\n return { max: policy.max };\r\n }\r\n\r\n hydrate(data: { max: number }) {\r\n return new ClampMaxPolicy(data.max);\r\n }\r\n}\r\n","import {PolicySerializerHandler} from '../policy-serializer';\r\nimport {ClampMinPolicy} from '@axi-engine/fields';\r\n\r\nexport class ClampMinPolicySerializerHandler implements PolicySerializerHandler<ClampMinPolicy, { min: number }> {\r\n snapshot(policy: ClampMinPolicy) {\r\n return { min: policy.min };\r\n }\r\n\r\n hydrate(data: { min: number }) {\r\n return new ClampMinPolicy(data.min);\r\n }\r\n}\r\n","import {Policy} from '../policies';\r\nimport {throwIf, throwIfEmpty} from '@axi-engine/utils';\r\n\r\n/**\r\n * Defines the contract for a handler that can serialize and deserialize a specific type of Policy.\r\n * @template T - The specific Policy class this handler manages.\r\n * @template S - The shape of the plain object this handler produces/consumes.\r\n */\r\nexport interface PolicySerializerHandler<T extends Policy<any>, S extends object> {\r\n /**\r\n * Converts a Policy instance into a serializable plain object.\r\n * @param policy The Policy instance to serialize.\r\n * @returns A plain object representing the policy's state.\r\n */\r\n snapshot(policy: T): S;\r\n\r\n /**\r\n * Creates a new Policy instance from a plain object.\r\n * @param snapshotData The plain object containing the policy's state.\r\n * @returns A new instance of the Policy.\r\n */\r\n hydrate(snapshotData: S): T;\r\n}\r\n\r\nexport class PolicySerializer {\r\n private readonly handlers = new Map<string, PolicySerializerHandler<any, any>>();\r\n\r\n register(policyId: string, handler: PolicySerializerHandler<any, any>) {\r\n throwIf(this.handlers.has(policyId), `A handler for policy ID '${policyId}' is already registered.`);\r\n this.handlers.set(policyId, handler);\r\n return this;\r\n }\r\n\r\n clearHandlers() {\r\n this.handlers.clear();\r\n }\r\n\r\n /**\r\n * Creates a serializable snapshot of a policy instance.\r\n * The snapshot includes the policy's state and a `__type` identifier.\r\n * @param policy The policy instance to snapshot.\r\n * @returns A plain object ready for JSON serialization.\r\n * @throws If no handler is registered for the policy's ID.\r\n */\r\n snapshot(policy: Policy<any>): object {\r\n const handler = this.handlers.get(policy.id);\r\n throwIfEmpty(handler, `No serializer handler registered for policy ID: '${policy.id}'`);\r\n const data = handler.snapshot(policy);\r\n\r\n return {\r\n __type: policy.id,\r\n ...data\r\n };\r\n }\r\n\r\n /**\r\n * Restores a policy instance from its snapshot representation.\r\n * @param snapshot The plain object snapshot, which must contain a `__type` property.\r\n * @returns A new, fully functional policy instance.\r\n * @throws If the snapshot is invalid or no handler is registered for its `__type`.\r\n */\r\n hydrate(snapshot: any): Policy<any> {\r\n const typeId = snapshot?.__type;\r\n throwIfEmpty(typeId, 'Invalid policy snapshot: missing \"__type\" identifier.');\r\n const handler = this.handlers.get(typeId);\r\n throwIfEmpty(handler, `No serializer handler registered for policy ID: '${typeId}'`);\r\n const { __type, ...data } = snapshot;\r\n\r\n return handler.hydrate(data);\r\n }\r\n}\r\n","import {Field, FieldRegistry, Policy} from '@axi-engine/fields';\r\nimport {PolicySerializer} from './policy-serializer';\r\nimport {isNullOrUndefined, throwIfEmpty} from '@axi-engine/utils';\r\n\r\n\r\n/**\r\n * A plain object representation of a Field's state for serialization.\r\n */\r\nexport interface FieldSnapshot {\r\n __type: string;\r\n name: string;\r\n value: any;\r\n policies?: object[];\r\n}\r\n\r\n/**\r\n * Orchestrates the serialization and deserialization of Field instances.\r\n *\r\n * This class acts as a central point for converting complex Field objects into\r\n * plain, storable data (snapshots) and vice-versa. It uses a `FieldRegistry`\r\n * to resolve class constructors and a `PolicySerializer` to handle the state\r\n * of any attached policies.\r\n *\r\n * @todo Implement a `patch(field, snapshot)` method.\r\n * Unlike `hydrate`, which creates a new\r\n * instance, `patch` should update the state of an *existing* field instance\r\n * without breaking external references to it.\r\n */\r\nexport class FieldSerializer {\r\n\r\n /**\r\n * Creates an instance of FieldSerializer.\r\n * @param {FieldRegistry} fieldRegistry - A registry that maps string type names to Field constructors.\r\n * @param {PolicySerializer} policySerializer - A serializer dedicated to handling Policy instances.\r\n */\r\n constructor(\r\n private readonly fieldRegistry: FieldRegistry,\r\n private readonly policySerializer: PolicySerializer\r\n ) {\r\n }\r\n\r\n /**\r\n * Creates a serializable snapshot of a Field instance.\r\n * The snapshot includes the field's type, name, current value, and the state of all its policies.\r\n * @param {Field<any>} field - The Field instance to serialize.\r\n * @returns {FieldSnapshot} A plain object ready for JSON serialization.\r\n */\r\n snapshot(field: Field<any>): FieldSnapshot {\r\n let snapshot: any = {\r\n __type: field.typeName,\r\n name: field.name,\r\n value: field.value,\r\n }\r\n\r\n if (!field.policies.isEmpty()) {\r\n const serializedPolicies: object[] = [];\r\n field.policies.items.forEach(policy => serializedPolicies.push(this.policySerializer.snapshot(policy)));\r\n snapshot.policies = serializedPolicies;\r\n }\r\n\r\n return snapshot;\r\n }\r\n\r\n /**\r\n * Restores a Field instance from its snapshot representation.\r\n * It uses the `__type` property to find the correct constructor and hydrates\r\n * the field with its value and all its policies.\r\n * @param {FieldSnapshot} snapshot - The plain object snapshot to deserialize.\r\n * @returns {Field<any>} A new, fully functional Field instance.\r\n * @throws If the snapshot is invalid, missing a `__type`, or if the type is not registered.\r\n */\r\n hydrate(snapshot: FieldSnapshot): Field<any> {\r\n const fieldType = snapshot.__type;\r\n throwIfEmpty(fieldType, 'Invalid field snapshot: missing \"__type\" identifier.');\r\n const Ctor = this.fieldRegistry.get(fieldType);\r\n\r\n let policies: Policy<any>[] | undefined;\r\n if (!isNullOrUndefined(snapshot.policies)) {\r\n policies = [];\r\n snapshot.policies!.forEach((p: any) => policies!.push(this.policySerializer.hydrate(p)));\r\n }\r\n\r\n return new Ctor(snapshot.name, snapshot.value, {policies}) as Field<any>;\r\n }\r\n}\r\n","import {FieldSerializer, FieldSnapshot} from './field-serializer';\r\nimport {Fields} from '../fields';\r\nimport {FieldsFactory} from '../fields-factory';\r\n\r\n/**\r\n * A plain object representation of a Fields container's state for serialization.\r\n */\r\nexport interface FieldsSnapshot {\r\n __type: string;\r\n [fieldName: string]: FieldSnapshot | string;\r\n}\r\n\r\n/**\r\n * Orchestrates the serialization and deserialization of `Fields` container instances.\r\n *\r\n * This class acts as a high-level composer, responsible for converting an entire `Fields` object\r\n * into a storable snapshot and back.\r\n * It delegates the actual serialization of each `Field` and `Policy` to their respective serializers.\r\n *\r\n * @todo Implement a `patch(fields, snapshot)` method. It should perform a non-destructive\r\n * update, creating new fields, removing missing ones, and patching existing ones\r\n * in place, preserving the container instance itself.\r\n */\r\nexport class FieldsSerializer<TFields extends Fields> {\r\n /**\r\n * Creates an instance of FieldsSerializer.\r\n * @param {FieldsFactory} fieldsFactory - A registry that maps string type names to Field constructors.\r\n * @param {FieldSerializer} fieldSerializer - A serializer of field instances.\r\n */\r\n constructor(\r\n private readonly fieldsFactory: FieldsFactory<TFields>,\r\n private readonly fieldSerializer: FieldSerializer\r\n ) {\r\n }\r\n\r\n /**\r\n * Creates a serializable snapshot of a `Fields` container.\r\n *\r\n * The snapshot includes a `__type` identifier (currently hardcoded) and an array of snapshots\r\n * for each `Field` within the container.\r\n * @param {Fields} fields - The `Fields` instance to serialize.\r\n * @returns {FieldsSnapshot} A plain object ready for JSON serialization.\r\n */\r\n snapshot(fields: Fields): FieldsSnapshot {\r\n const res: FieldsSnapshot = {\r\n __type: fields.typeName,\r\n };\r\n\r\n fields.fields.forEach(field => res[field.name] = this.fieldSerializer.snapshot(field));\r\n return res;\r\n }\r\n\r\n /**\r\n * Restores a `Fields` container instance from its snapshot representation.\r\n *\r\n * It iterates through the field snapshots and hydrates them individually, adding them to the new container.\r\n * @param {FieldsSnapshot} snapshot - The plain object snapshot to deserialize.\r\n * @returns {Fields} A new `DefaultFields` instance populated with the restored fields.\r\n */\r\n hydrate(snapshot: FieldsSnapshot): TFields {\r\n const { __type, ...fieldsData } = snapshot;\r\n const fields = this.fieldsFactory.fields();\r\n\r\n for (const fieldName in fieldsData) {\r\n const fieldSnapshot = fieldsData[fieldName];\r\n const restoredField = this.fieldSerializer.hydrate(fieldSnapshot as FieldSnapshot);\r\n fields.add(restoredField);\r\n }\r\n\r\n return fields;\r\n }\r\n}\r\n","import {\r\n Fields,\r\n FieldsSnapshot,\r\n FieldTree, FieldTreeFactory,\r\n TreeNode\r\n} from '@axi-engine/fields';\r\nimport {FieldsSerializer} from './fields-serializer';\r\nimport {isString} from '@axi-engine/utils';\r\n\r\n\r\n/**\r\n * Represents the serializable state of a `FieldTree` container.\r\n *\r\n * This type describes a plain object that has:\r\n * 1. A required `__type` property to identify the tree's class.\r\n * 2. An arbitrary number of other properties, where each key is the `name`\r\n * of a child node, and the value is the snapshot of that child node.\r\n * The `| string` is included to ensure compatibility with the `__type` property.\r\n */\r\nexport interface FieldTreeSnapshot {\r\n __type: string;\r\n [fieldName: string]: FieldsSnapshot | FieldTreeSnapshot | string;\r\n}\r\n\r\n/**\r\n * Orchestrates the recursive serialization and deserialization of `FieldTree` instances.\r\n *\r\n * This class handles the conversion of an entire `FieldTree` object graph into a\r\n * plain, storable snapshot and vice-versa. It delegates the processing of `Fields`\r\n * leaf nodes to a dedicated `FieldsSerializer`.\r\n * @todo Refactoring: The current implementation uses `if/else` logic in `snapshot` and `hydrate`\r\n * to process different node types. A more extensible approach would be to use a\r\n * registry of dedicated handlers for each node type.\r\n * This would allow new node types to be supported without\r\n * modifying this class, adhering to the Open/Closed Principle.\r\n *\r\n * @todo Implement a `patch(tree, snapshot)` method for recursive, non-destructive\r\n * updates. This method should traverse the existing tree and the snapshot,\r\n * patching nodes in place to maintain object references.\r\n */\r\nexport class FieldTreeSerializer<TFields extends Fields> {\r\n\r\n constructor(\r\n private readonly fieldTreeNodeFactory: FieldTreeFactory<TFields>,\r\n private readonly fieldsSerializer: FieldsSerializer<TFields>\r\n ) {\r\n }\r\n\r\n /**\r\n * Creates a serializable snapshot of the entire tree and its contained fields.\r\n * @returns A plain JavaScript object representing the complete state managed by this tree.\r\n */\r\n snapshot(tree: FieldTree<TFields>): FieldTreeSnapshot {\r\n const res: Record<string, any> = {\r\n __type: tree.typeName\r\n };\r\n\r\n tree.nodes.forEach((node: TreeNode<TFields>, key: string) => {\r\n if (node.typeName === tree.typeName) {\r\n res[key] = this.snapshot(node);\r\n } else if (node.typeName === Fields.typeName) {\r\n res[key] = this.fieldsSerializer.snapshot(node);\r\n }\r\n });\r\n return res as FieldTreeSnapshot;\r\n }\r\n\r\n /**\r\n * Restores the state of the tree from a snapshot.\r\n * It intelligently creates missing nodes based on `__type` metadata and delegates hydration to child nodes.\r\n * @param snapshot The snapshot object to load.\r\n */\r\n hydrate(snapshot: FieldTreeSnapshot): FieldTree<TFields> {\r\n const { __type, ...nodes } = snapshot;\r\n const tree = this.fieldTreeNodeFactory.tree();\r\n\r\n for (const key in nodes) {\r\n const nodeData = nodes[key];\r\n if (isString(nodeData)) {\r\n continue;\r\n }\r\n if (nodeData.__type === FieldTree.typeName) {\r\n tree.addNode(key, this.hydrate(nodeData as FieldTreeSnapshot))\r\n } else if (nodeData.__type === Fields.typeName) {\r\n tree.addNode(key, this.fieldsSerializer.hydrate(nodeData as FieldsSnapshot))\r\n }\r\n }\r\n\r\n return tree;\r\n }\r\n}\r\n","import {CoreBooleanField, CoreNumericField, CoreStringField} from './field-definitions';\r\nimport {isBoolean, isNumber, isString} from '@axi-engine/utils';\r\n\r\nexport interface DataStoreFieldResolver {\r\n /**\r\n * The typeName this resolver corresponds to in the FieldRegistry.\r\n * e.g., 'numeric', 'boolean', 'vector'\r\n */\r\n typeName: string;\r\n\r\n /**\r\n * Checks if this resolver can handle the given value.\r\n * @param value The value to check.\r\n * @returns {boolean} True if the value is supported, otherwise false.\r\n */\r\n supports(value: unknown): boolean\r\n}\r\n\r\nexport class NumericFieldResolver implements DataStoreFieldResolver {\r\n readonly typeName = CoreNumericField.typeName;\r\n supports(value: unknown): boolean {\r\n return isNumber(value);\r\n }\r\n}\r\n\r\nexport class BooleanFieldResolver implements DataStoreFieldResolver {\r\n readonly typeName = CoreBooleanField.typeName;\r\n supports(value: unknown): boolean {\r\n return isBoolean(value);\r\n }\r\n}\r\nexport class StringFieldResolver implements DataStoreFieldResolver {\r\n readonly typeName = CoreStringField.typeName;\r\n supports(value: unknown): boolean {\r\n return isString(value);\r\n }\r\n}\r\n","import {Store, StoreCreateFieldOptions} from './store';\r\nimport {\r\n BooleanFieldResolver,\r\n DataStoreFieldResolver,\r\n NumericFieldResolver,\r\n StringFieldResolver\r\n} from './data-store-field-resolver';\r\nimport {ensurePathArray, ensurePathString, PathType, throwIfEmpty} from '@axi-engine/utils';\r\nimport {Field, FieldOptions} from './field';\r\nimport {CoreFieldTree} from './core-field-tree';\r\nimport {\r\n CoreBooleanField,\r\n CoreBooleanFieldOptions, CoreField,\r\n CoreNumericField,\r\n CoreNumericFieldOptions, CoreStringField, CoreStringFieldOptions\r\n} from './field-definitions';\r\nimport {CoreFields} from './core-fields';\r\n\r\n\r\nexport class DataStore implements Store {\r\n private readonly resolvers: DataStoreFieldResolver[] = [];\r\n private readonly rootFieldsName = '__root_fields';\r\n private _rootFields: CoreFields | undefined;\r\n\r\n private get rootFields(): CoreFields {\r\n if (!this._rootFields) {\r\n this._rootFields = this.tree.getOrCreateFields(this.rootFieldsName);\r\n }\r\n return this._rootFields!;\r\n }\r\n\r\n constructor(private readonly tree: CoreFieldTree) {\r\n this.registerResolver(new NumericFieldResolver());\r\n this.registerResolver(new BooleanFieldResolver());\r\n this.registerResolver(new StringFieldResolver());\r\n }\r\n\r\n registerResolver(resolver: DataStoreFieldResolver) {\r\n this.resolvers.unshift(resolver);\r\n }\r\n\r\n clearResolvers() {\r\n /* set length to 0 because array is readonly, so we can't just reassign them to empty array */\r\n this.resolvers.length = 0;\r\n }\r\n\r\n getValue<T>(path: PathType): T {\r\n return this.getField(path).value;\r\n }\r\n\r\n setValue<T>(path: PathType, val: T): T {\r\n /** for case when field has policies */\r\n const field = this.getField(path);\r\n field.value = val;\r\n return field.value;\r\n }\r\n\r\n createValue<T>(path: PathType, val: T, options?: FieldOptions<T> & StoreCreateFieldOptions): T {\r\n const dest = this.getDestinationFields(path);\r\n if (options?.fieldType) {\r\n return dest.fields.create(options.fieldType, dest.leafName, val, options).value;\r\n }\r\n for (let resolver of this.resolvers) {\r\n if (resolver.supports(val)) {\r\n return dest.fields.create(resolver.typeName, dest.leafName, val, options).value;\r\n }\r\n }\r\n return dest.fields.createGeneric<T>(dest.leafName, val, options).value;\r\n }\r\n\r\n upsetValue<T>(path: PathType, val: T, options?: FieldOptions<T> & StoreCreateFieldOptions): T {\r\n const dest = this.getDestinationFields(path);\r\n if (options?.fieldType) {\r\n return dest.fields.upset(options.fieldType, dest.leafName, val, options).value;\r\n }\r\n for (let resolver of this.resolvers) {\r\n if (resolver.supports(val)) {\r\n return dest.fields.upset(resolver.typeName, dest.leafName, val, options).value;\r\n }\r\n }\r\n return dest.fields.upsetGeneric<T>(dest.leafName, val, options).value;\r\n }\r\n\r\n createBoolean(path: PathType, initialValue: boolean, options?: CoreBooleanFieldOptions): CoreBooleanField {\r\n const dest = this.getDestinationFields(path);\r\n return dest.fields.createBoolean(dest.leafName, initialValue, options);\r\n }\r\n\r\n createNumeric(path: PathType, initialValue: number, options?: CoreNumericFieldOptions): CoreNumericField {\r\n const dest = this.getDestinationFields(path);\r\n return dest.fields.createNumeric(dest.leafName, initialValue, options);\r\n }\r\n\r\n createString(path: PathType, initialValue: string, options?: CoreStringFieldOptions): CoreStringField {\r\n const dest = this.getDestinationFields(path);\r\n return dest.fields.createString(dest.leafName, initialValue, options);\r\n }\r\n\r\n createGeneric<T>(path: PathType, initialValue: T, options?: FieldOptions<T>): CoreField<T> {\r\n const dest = this.getDestinationFields(path);\r\n return dest.fields.createGeneric<T>(dest.leafName, initialValue, options);\r\n }\r\n\r\n getBoolean(path: PathType): CoreBooleanField {\r\n return this.getField<CoreBooleanField>(path);\r\n }\r\n\r\n getNumeric(path: PathType): CoreNumericField {\r\n return this.getField<CoreNumericField>(path);\r\n }\r\n\r\n getString(path: PathType): CoreStringField {\r\n return this.getField<CoreStringField>(path);\r\n }\r\n\r\n getGeneric<T>(path: PathType): CoreField<T> {\r\n return this.getField<CoreField<T>>(path);\r\n }\r\n\r\n getField<TField extends Field<any>>(path: PathType): TField {\r\n const pathArr = ensurePathArray(path);\r\n throwIfEmpty(pathArr, `Wrong path or path is empty: ${ensurePathString(path)}, should contain at least one path segment`);\r\n\r\n if (this.isPathToRootFields(pathArr)) {\r\n return this.rootFields.get<TField>(pathArr[0]) as TField;\r\n }\r\n const fieldName = pathArr.pop()!;\r\n const fields = this.tree.getFields(pathArr);\r\n return fields.get<TField>(fieldName);\r\n }\r\n\r\n createFields(path: PathType): CoreFields {\r\n return this.tree.createFields(path, true);\r\n }\r\n\r\n createTree(path: PathType): CoreFieldTree {\r\n return this.tree.createFieldTree(path, true);\r\n }\r\n\r\n getFields(path: PathType): CoreFields {\r\n return this.tree.getFields(path);\r\n }\r\n\r\n getTree(path: PathType): CoreFieldTree {\r\n return this.tree.getFieldTree(path);\r\n }\r\n\r\n remove(path: PathType) {\r\n const pathArr = ensurePathArray(path);\r\n throwIfEmpty(pathArr, `Wrong path or path is empty: ${ensurePathString(path)}, should contain at least one path segment`);\r\n\r\n /** remove field from root fields */\r\n if (this.isPathToRootFields(pathArr)) {\r\n this.rootFields.remove(pathArr);\r\n return;\r\n }\r\n\r\n const node = this.tree.findParentNode(pathArr);\r\n const leafName = pathArr[pathArr.length - 1];\r\n\r\n if (node instanceof CoreFields) {\r\n node.remove(leafName);\r\n } else if (node instanceof CoreFieldTree) {\r\n node.removeNode(leafName);\r\n }\r\n }\r\n\r\n private isPathToRootFields(path: PathType) {\r\n return ensurePathArray(path).length === 1;\r\n }\r\n\r\n private getDestinationFields(path: PathType): { fields: CoreFields, leafName: string } {\r\n const pathArr = ensurePathArray(path);\r\n if (this.isPathToRootFields(pathArr)) {\r\n return {fields: this.rootFields, leafName: pathArr[0]};\r\n }\r\n const leafName = pathArr.pop()!;\r\n return {fields: this.tree.getOrCreateFields(path), leafName };\r\n }\r\n}\r\n\r\n","import {FieldRegistry} from './field-registry';\r\nimport {\r\n ClampMaxPolicySerializerHandler,\r\n ClampMinPolicySerializerHandler,\r\n ClampPolicySerializerHandler, FieldSerializer, FieldsSerializer, FieldTreeSerializer,\r\n PolicySerializer\r\n} from './serializer';\r\nimport {ClampMaxPolicy, ClampMinPolicy, ClampPolicy} from './policies';\r\nimport {CoreBooleanField, CoreField, CoreNumericField, CoreStringField} from './field-definitions';\r\nimport {CoreFields} from './core-fields';\r\nimport {CoreTreeNodeFactory} from './core-field-tree-factory';\r\n\r\n\r\n/**\r\n * Creates and configures a FieldRegistry with all the core field types.\r\n * @returns {FieldRegistry} A pre-configured FieldRegistry instance.\r\n */\r\nexport function createCoreFieldRegistry(): FieldRegistry {\r\n const fieldRegistry = new FieldRegistry();\r\n fieldRegistry.register(CoreField.typeName, CoreField);\r\n fieldRegistry.register(CoreNumericField.typeName, CoreNumericField);\r\n fieldRegistry.register(CoreStringField.typeName, CoreStringField);\r\n fieldRegistry.register(CoreBooleanField.typeName, CoreBooleanField);\r\n return fieldRegistry;\r\n}\r\n\r\n/**\r\n * Creates and configures a PolicySerializer with handlers for core policies.\r\n * @returns {PolicySerializer} A pre-configured PolicySerializer instance.\r\n */\r\nexport function createCorePolicySerializer(): PolicySerializer {\r\n const policySerializer = new PolicySerializer();\r\n policySerializer.register(ClampPolicy.id, new ClampPolicySerializerHandler());\r\n policySerializer.register(ClampMinPolicy.id, new ClampMinPolicySerializerHandler());\r\n policySerializer.register(ClampMaxPolicy.id, new ClampMaxPolicySerializerHandler());\r\n return policySerializer;\r\n}\r\n\r\n/**\r\n * Creates a factory for CoreFieldTree and CoreFields nodes.\r\n * @param {FieldRegistry} fieldRegistry - The registry to be used by the factory.\r\n * @returns {CoreTreeNodeFactory} A new CoreTreeNodeFactory instance.\r\n */\r\nexport function createCoreTreeNodeFactory(fieldRegistry: FieldRegistry): CoreTreeNodeFactory {\r\n return new CoreTreeNodeFactory(fieldRegistry);\r\n}\r\n\r\n/**\r\n * Creates a fully configured serializer for a FieldTree.\r\n * This function composes all necessary serializers (FieldTree, Fields, Field) for a complete setup.\r\n * @param {CoreTreeNodeFactory} fieldTreeNodeFactory - The factory used to create new tree nodes during deserialization.\r\n * @param policySerializer\r\n * @returns {FieldTreeSerializer<CoreFields>} A top-level serializer for the entire field tree.\r\n */\r\nexport function createCoreTreeSerializer(\r\n fieldTreeNodeFactory: CoreTreeNodeFactory,\r\n policySerializer?: PolicySerializer\r\n): FieldTreeSerializer<CoreFields> {\r\n return new FieldTreeSerializer(\r\n fieldTreeNodeFactory,\r\n new FieldsSerializer(\r\n fieldTreeNodeFactory,\r\n new FieldSerializer(fieldTreeNodeFactory.fieldRegistry, policySerializer ?? createCorePolicySerializer())\r\n )\r\n );\r\n}\r\n\r\nexport interface CoreFieldSystemConfig {\r\n registry?: FieldRegistry,\r\n policySerializer?: PolicySerializer\r\n}\r\n\r\n/**\r\n * Creates a complete core setup for the field system.\r\n * @returns {{factory: CoreTreeNodeFactory, serializer: FieldTreeSerializer<CoreFields>}}\r\n */\r\nexport function createCoreFieldSystem(config?: CoreFieldSystemConfig):\r\n { factory: CoreTreeNodeFactory, serializer: FieldTreeSerializer<CoreFields> }\r\n{\r\n const registry = config?.registry ?? createCoreFieldRegistry();\r\n const factory = createCoreTreeNodeFactory(registry);\r\n const serializer = createCoreTreeSerializer(factory, config?.policySerializer);\r\n return { factory, serializer };\r\n}\r\n"],"mappings":"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"}
|