@axi-engine/fields 0.3.2 → 0.3.4
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/README.md +6 -2
- 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 +112 -112
- package/dist/index.d.ts +18 -997
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -1228
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2 -2
- 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 +7 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @axi-engine/fields
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/@axi-engine/fields)
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
## Description
|
|
@@ -27,4 +27,8 @@ npm install @axi-engine/fields
|
|
|
27
27
|
|
|
28
28
|
## API Reference
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
[**Browse the API Documentation here**](https://github.com/axijs/engine/tree/main/packages/fields/docs/api)
|
|
31
|
+
|
|
32
|
+
## License
|
|
33
|
+
|
|
34
|
+
MIT
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CoreFieldsFactory } from './core-fields-factory';
|
|
2
|
+
import { FieldTreeFactory } from './field-tree-factory';
|
|
3
|
+
import { CoreFields } from './core-fields';
|
|
4
|
+
import { FieldRegistry } from './field-registry';
|
|
5
|
+
import { CoreFieldTree } from './core-field-tree';
|
|
6
|
+
/**
|
|
7
|
+
* The default factory implementation that creates standard DefaultFields and FieldTree instances.
|
|
8
|
+
*/
|
|
9
|
+
export declare class CoreTreeNodeFactory extends CoreFieldsFactory implements FieldTreeFactory<CoreFields> {
|
|
10
|
+
constructor(fieldRegistry: FieldRegistry);
|
|
11
|
+
tree(): CoreFieldTree;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=core-field-tree-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-field-tree-factory.d.ts","sourceRoot":"","sources":["../src/core-field-tree-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AACzC,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,iBAAkB,YAAW,gBAAgB,CAAC,UAAU,CAAC;gBACpF,aAAa,EAAE,aAAa;IAIxC,IAAI;CAGL"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CoreFieldsFactory } from './core-fields-factory';
|
|
2
|
+
import { CoreFieldTree } from './core-field-tree';
|
|
3
|
+
/**
|
|
4
|
+
* The default factory implementation that creates standard DefaultFields and FieldTree instances.
|
|
5
|
+
*/
|
|
6
|
+
export class CoreTreeNodeFactory extends CoreFieldsFactory {
|
|
7
|
+
constructor(fieldRegistry) {
|
|
8
|
+
super(fieldRegistry);
|
|
9
|
+
}
|
|
10
|
+
tree() {
|
|
11
|
+
return new CoreFieldTree(this);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=core-field-tree-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-field-tree-factory.js","sourceRoot":"","sources":["../src/core-field-tree-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAIxD,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,iBAAiB;IACxD,YAAY,aAA4B;QACtC,KAAK,CAAC,aAAa,CAAC,CAAC;IACvB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-field-tree.d.ts","sourceRoot":"","sources":["../src/core-field-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC,qBAAa,aAAc,SAAQ,SAAS,CAAC,UAAU,CAAC;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-field-tree.js","sourceRoot":"","sources":["../src/core-field-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAGvC,MAAM,OAAO,aAAc,SAAQ,SAAqB;CAAG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CoreFields } from './core-fields';
|
|
2
|
+
import { FieldRegistry } from './field-registry';
|
|
3
|
+
import { FieldsFactory } from './fields-factory';
|
|
4
|
+
export declare class CoreFieldsFactory implements FieldsFactory<CoreFields> {
|
|
5
|
+
protected readonly _fieldRegistry: FieldRegistry;
|
|
6
|
+
get fieldRegistry(): FieldRegistry;
|
|
7
|
+
constructor(fieldRegistry: FieldRegistry);
|
|
8
|
+
fields(): CoreFields;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=core-fields-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-fields-factory.d.ts","sourceRoot":"","sources":["../src/core-fields-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AACzC,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAG/C,qBAAa,iBAAkB,YAAW,aAAa,CAAC,UAAU,CAAC;IACjE,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC;IAEjD,IAAI,aAAa,kBAEhB;gBAEW,aAAa,EAAE,aAAa;IAIxC,MAAM;CAGP"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CoreFields } from './core-fields';
|
|
2
|
+
export class CoreFieldsFactory {
|
|
3
|
+
_fieldRegistry;
|
|
4
|
+
get fieldRegistry() {
|
|
5
|
+
return this._fieldRegistry;
|
|
6
|
+
}
|
|
7
|
+
constructor(fieldRegistry) {
|
|
8
|
+
this._fieldRegistry = fieldRegistry;
|
|
9
|
+
}
|
|
10
|
+
fields() {
|
|
11
|
+
return new CoreFields(this._fieldRegistry);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=core-fields-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-fields-factory.js","sourceRoot":"","sources":["../src/core-fields-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAKzC,MAAM,OAAO,iBAAiB;IACT,cAAc,CAAgB;IAEjD,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,YAAY,aAA4B;QACtC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACtC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC5C,CAAC;CACF"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Fields } from './fields';
|
|
2
|
+
declare const CoreFields_base: import("@axi-engine/utils").Constructor<{
|
|
3
|
+
createGeneric<T>(name: string, initialValue: T, options?: import("./field").FieldOptions<T> | undefined): import("./field-definitions").CoreField<T>;
|
|
4
|
+
upsetGeneric<T>(name: string, value: T, options?: import("./field").FieldOptions<T> | undefined): import("./field-definitions").CoreField<T>;
|
|
5
|
+
getGeneric<T>(name: string): import("./field-definitions").CoreField<T>;
|
|
6
|
+
readonly typeName: "fields";
|
|
7
|
+
readonly _fields: Map<string, import("./field").Field<any>>;
|
|
8
|
+
readonly _fieldRegistry: import("./field-registry").FieldRegistry;
|
|
9
|
+
onAdd: import("@axi-engine/utils").Emitter<[event: {
|
|
10
|
+
name: string;
|
|
11
|
+
field: import("./field").Field<any>;
|
|
12
|
+
}]>;
|
|
13
|
+
onRemove: import("@axi-engine/utils").Emitter<[event: {
|
|
14
|
+
names: string[];
|
|
15
|
+
}]>;
|
|
16
|
+
get fields(): Map<string, import("./field").Field<any>>;
|
|
17
|
+
has(name: string): boolean;
|
|
18
|
+
add<T extends import("./field").Field<any>>(field: import("./field").Field<any>): T;
|
|
19
|
+
create<T extends import("./field").Field<any>>(typeName: string, name: string, initialValue: any, options?: any): T;
|
|
20
|
+
upset<T extends import("./field").Field<any>>(typeName: string, name: string, value: any, options?: any): T;
|
|
21
|
+
get<TField extends import("./field").Field<any>>(name: string): TField;
|
|
22
|
+
remove(names: string | string[]): void;
|
|
23
|
+
clear(): void;
|
|
24
|
+
destroy(): void;
|
|
25
|
+
} & Fields & {
|
|
26
|
+
createNumeric: (name: string, initialValue: number, options?: import("./field-definitions").CoreNumericFieldOptions | undefined) => import("./field-definitions").CoreNumericField;
|
|
27
|
+
} & {
|
|
28
|
+
upsetNumeric: (name: string, value: number, options?: import("./field-definitions").CoreNumericFieldOptions | undefined) => import("./field-definitions").CoreNumericField;
|
|
29
|
+
} & {
|
|
30
|
+
getNumeric: (name: string) => import("./field-definitions").CoreNumericField;
|
|
31
|
+
} & {
|
|
32
|
+
createString: (name: string, initialValue: string, options?: import("./field-definitions").CoreStringFieldOptions | undefined) => import("./field-definitions").CoreStringField;
|
|
33
|
+
} & {
|
|
34
|
+
upsetString: (name: string, value: string, options?: import("./field-definitions").CoreStringFieldOptions | undefined) => import("./field-definitions").CoreStringField;
|
|
35
|
+
} & {
|
|
36
|
+
getString: (name: string) => import("./field-definitions").CoreStringField;
|
|
37
|
+
} & {
|
|
38
|
+
createBoolean: (name: string, initialValue: boolean, options?: import("./field-definitions").CoreBooleanFieldOptions | undefined) => import("./field-definitions").CoreBooleanField;
|
|
39
|
+
} & {
|
|
40
|
+
upsetBoolean: (name: string, value: boolean, options?: import("./field-definitions").CoreBooleanFieldOptions | undefined) => import("./field-definitions").CoreBooleanField;
|
|
41
|
+
} & {
|
|
42
|
+
getBoolean: (name: string) => import("./field-definitions").CoreBooleanField;
|
|
43
|
+
}>;
|
|
44
|
+
export declare class CoreFields extends CoreFields_base {
|
|
45
|
+
}
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=core-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-fields.d.ts","sourceRoot":"","sources":["../src/core-fields.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEhC,qBAAa,UAAW,SAAQ,eAAwF;CAAG"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { WithBooleanFields } from './mixins/with-boolean-fields.mixin';
|
|
2
|
+
import { WithStringFields } from './mixins/with-string-fields.mixin';
|
|
3
|
+
import { WithNumericFields } from './mixins/with-numeric-fields.mixin';
|
|
4
|
+
import { WithDefaultGenericFields } from './mixins/with-default-generic-fields.mixin';
|
|
5
|
+
import { Fields } from './fields';
|
|
6
|
+
export class CoreFields extends WithBooleanFields(WithStringFields(WithNumericFields(WithDefaultGenericFields(Fields)))) {
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=core-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-fields.js","sourceRoot":"","sources":["../src/core-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAC,gBAAgB,EAAC,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAC,iBAAiB,EAAC,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAC,wBAAwB,EAAC,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAEhC,MAAM,OAAO,UAAW,SAAQ,iBAAiB,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAAG"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface DataStoreFieldResolver {
|
|
2
|
+
/**
|
|
3
|
+
* The typeName this resolver corresponds to in the FieldRegistry.
|
|
4
|
+
* e.g., 'numeric', 'boolean', 'vector'
|
|
5
|
+
*/
|
|
6
|
+
typeName: string;
|
|
7
|
+
/**
|
|
8
|
+
* Checks if this resolver can handle the given value.
|
|
9
|
+
* @param value The value to check.
|
|
10
|
+
* @returns {boolean} True if the value is supported, otherwise false.
|
|
11
|
+
*/
|
|
12
|
+
supports(value: unknown): boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare class NumericFieldResolver implements DataStoreFieldResolver {
|
|
15
|
+
readonly typeName: string;
|
|
16
|
+
supports(value: unknown): boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare class BooleanFieldResolver implements DataStoreFieldResolver {
|
|
19
|
+
readonly typeName: string;
|
|
20
|
+
supports(value: unknown): boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare class StringFieldResolver implements DataStoreFieldResolver {
|
|
23
|
+
readonly typeName: string;
|
|
24
|
+
supports(value: unknown): boolean;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data-store-field-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-store-field-resolver.d.ts","sourceRoot":"","sources":["../src/data-store-field-resolver.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAA;CAClC;AAED,qBAAa,oBAAqB,YAAW,sBAAsB;IACjE,QAAQ,CAAC,QAAQ,SAA6B;IAC9C,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAGlC;AAED,qBAAa,oBAAqB,YAAW,sBAAsB;IACjE,QAAQ,CAAC,QAAQ,SAA6B;IAC9C,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAGlC;AACD,qBAAa,mBAAoB,YAAW,sBAAsB;IAChE,QAAQ,CAAC,QAAQ,SAA4B;IAC7C,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAGlC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CoreBooleanField, CoreNumericField, CoreStringField } from './field-definitions';
|
|
2
|
+
import { isBoolean, isNumber, isString } from '@axi-engine/utils';
|
|
3
|
+
export class NumericFieldResolver {
|
|
4
|
+
typeName = CoreNumericField.typeName;
|
|
5
|
+
supports(value) {
|
|
6
|
+
return isNumber(value);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class BooleanFieldResolver {
|
|
10
|
+
typeName = CoreBooleanField.typeName;
|
|
11
|
+
supports(value) {
|
|
12
|
+
return isBoolean(value);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export class StringFieldResolver {
|
|
16
|
+
typeName = CoreStringField.typeName;
|
|
17
|
+
supports(value) {
|
|
18
|
+
return isString(value);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=data-store-field-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-store-field-resolver.js","sourceRoot":"","sources":["../src/data-store-field-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAiBhE,MAAM,OAAO,oBAAoB;IACtB,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;IAC9C,QAAQ,CAAC,KAAc;QACrB,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,oBAAoB;IACtB,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;IAC9C,QAAQ,CAAC,KAAc;QACrB,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;CACF;AACD,MAAM,OAAO,mBAAmB;IACrB,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;IAC7C,QAAQ,CAAC,KAAc;QACrB,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Store, StoreCreateFieldOptions } from './store';
|
|
2
|
+
import { DataStoreFieldResolver } from './data-store-field-resolver';
|
|
3
|
+
import { PathType } from '@axi-engine/utils';
|
|
4
|
+
import { Field, FieldOptions } from './field';
|
|
5
|
+
import { CoreFieldTree } from './core-field-tree';
|
|
6
|
+
import { CoreBooleanField, CoreBooleanFieldOptions, CoreField, CoreNumericField, CoreNumericFieldOptions, CoreStringField, CoreStringFieldOptions } from './field-definitions';
|
|
7
|
+
import { CoreFields } from './core-fields';
|
|
8
|
+
export declare class DataStore implements Store {
|
|
9
|
+
private readonly tree;
|
|
10
|
+
private readonly resolvers;
|
|
11
|
+
private readonly rootFieldsName;
|
|
12
|
+
private _rootFields;
|
|
13
|
+
private get rootFields();
|
|
14
|
+
constructor(tree: CoreFieldTree);
|
|
15
|
+
registerResolver(resolver: DataStoreFieldResolver): void;
|
|
16
|
+
clearResolvers(): void;
|
|
17
|
+
getValue<T>(path: PathType): T;
|
|
18
|
+
setValue<T>(path: PathType, val: T): T;
|
|
19
|
+
createValue<T>(path: PathType, val: T, options?: FieldOptions<T> & StoreCreateFieldOptions): T;
|
|
20
|
+
upsetValue<T>(path: PathType, val: T, options?: FieldOptions<T> & StoreCreateFieldOptions): T;
|
|
21
|
+
createBoolean(path: PathType, initialValue: boolean, options?: CoreBooleanFieldOptions): CoreBooleanField;
|
|
22
|
+
createNumeric(path: PathType, initialValue: number, options?: CoreNumericFieldOptions): CoreNumericField;
|
|
23
|
+
createString(path: PathType, initialValue: string, options?: CoreStringFieldOptions): CoreStringField;
|
|
24
|
+
createGeneric<T>(path: PathType, initialValue: T, options?: FieldOptions<T>): CoreField<T>;
|
|
25
|
+
getBoolean(path: PathType): CoreBooleanField;
|
|
26
|
+
getNumeric(path: PathType): CoreNumericField;
|
|
27
|
+
getString(path: PathType): CoreStringField;
|
|
28
|
+
getGeneric<T>(path: PathType): CoreField<T>;
|
|
29
|
+
getField<TField extends Field<any>>(path: PathType): TField;
|
|
30
|
+
createFields(path: PathType): CoreFields;
|
|
31
|
+
createTree(path: PathType): CoreFieldTree;
|
|
32
|
+
getFields(path: PathType): CoreFields;
|
|
33
|
+
getTree(path: PathType): CoreFieldTree;
|
|
34
|
+
remove(path: PathType): void;
|
|
35
|
+
private isPathToRootFields;
|
|
36
|
+
private getDestinationFields;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-store.d.ts","sourceRoot":"","sources":["../src/data-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,uBAAuB,EAAC,MAAM,SAAS,CAAC;AACvD,OAAO,EAEL,sBAAsB,EAGvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAoC,QAAQ,EAAe,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAC,KAAK,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EAAE,SAAS,EAClC,gBAAgB,EAChB,uBAAuB,EAAE,eAAe,EAAE,sBAAsB,EACjE,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAGzC,qBAAa,SAAU,YAAW,KAAK;IAYzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAXjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,WAAW,CAAyB;IAE5C,OAAO,KAAK,UAAU,GAKrB;gBAE4B,IAAI,EAAE,aAAa;IAMhD,gBAAgB,CAAC,QAAQ,EAAE,sBAAsB;IAIjD,cAAc;IAKd,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAG,CAAC;IAI9B,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;IAOtC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,uBAAuB,GAAG,CAAC;IAa9F,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,uBAAuB,GAAG,CAAC;IAa7F,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,gBAAgB;IAKzG,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,gBAAgB;IAKxG,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,eAAe;IAKrG,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAK1F,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,gBAAgB;IAI5C,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,gBAAgB;IAI5C,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,eAAe;IAI1C,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC;IAI3C,QAAQ,CAAC,MAAM,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM;IAY3D,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU;IAIxC,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa;IAIzC,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU;IAIrC,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa;IAItC,MAAM,CAAC,IAAI,EAAE,QAAQ;IAoBrB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,oBAAoB;CAQ7B"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { BooleanFieldResolver, NumericFieldResolver, StringFieldResolver } from './data-store-field-resolver';
|
|
2
|
+
import { ensurePathArray, ensurePathString, throwIfEmpty } from '@axi-engine/utils';
|
|
3
|
+
import { CoreFieldTree } from './core-field-tree';
|
|
4
|
+
import { CoreFields } from './core-fields';
|
|
5
|
+
export class DataStore {
|
|
6
|
+
tree;
|
|
7
|
+
resolvers = [];
|
|
8
|
+
rootFieldsName = '__root_fields';
|
|
9
|
+
_rootFields;
|
|
10
|
+
get rootFields() {
|
|
11
|
+
if (!this._rootFields) {
|
|
12
|
+
this._rootFields = this.tree.getOrCreateFields(this.rootFieldsName);
|
|
13
|
+
}
|
|
14
|
+
return this._rootFields;
|
|
15
|
+
}
|
|
16
|
+
constructor(tree) {
|
|
17
|
+
this.tree = tree;
|
|
18
|
+
this.registerResolver(new NumericFieldResolver());
|
|
19
|
+
this.registerResolver(new BooleanFieldResolver());
|
|
20
|
+
this.registerResolver(new StringFieldResolver());
|
|
21
|
+
}
|
|
22
|
+
registerResolver(resolver) {
|
|
23
|
+
this.resolvers.unshift(resolver);
|
|
24
|
+
}
|
|
25
|
+
clearResolvers() {
|
|
26
|
+
/* set length to 0 because array is readonly, so we can't just reassign them to empty array */
|
|
27
|
+
this.resolvers.length = 0;
|
|
28
|
+
}
|
|
29
|
+
getValue(path) {
|
|
30
|
+
return this.getField(path).value;
|
|
31
|
+
}
|
|
32
|
+
setValue(path, val) {
|
|
33
|
+
/** for case when field has policies */
|
|
34
|
+
const field = this.getField(path);
|
|
35
|
+
field.value = val;
|
|
36
|
+
return field.value;
|
|
37
|
+
}
|
|
38
|
+
createValue(path, val, options) {
|
|
39
|
+
const dest = this.getDestinationFields(path);
|
|
40
|
+
if (options?.fieldType) {
|
|
41
|
+
return dest.fields.create(options.fieldType, dest.leafName, val, options).value;
|
|
42
|
+
}
|
|
43
|
+
for (let resolver of this.resolvers) {
|
|
44
|
+
if (resolver.supports(val)) {
|
|
45
|
+
return dest.fields.create(resolver.typeName, dest.leafName, val, options).value;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return dest.fields.createGeneric(dest.leafName, val, options).value;
|
|
49
|
+
}
|
|
50
|
+
upsetValue(path, val, options) {
|
|
51
|
+
const dest = this.getDestinationFields(path);
|
|
52
|
+
if (options?.fieldType) {
|
|
53
|
+
return dest.fields.upset(options.fieldType, dest.leafName, val, options).value;
|
|
54
|
+
}
|
|
55
|
+
for (let resolver of this.resolvers) {
|
|
56
|
+
if (resolver.supports(val)) {
|
|
57
|
+
return dest.fields.upset(resolver.typeName, dest.leafName, val, options).value;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return dest.fields.upsetGeneric(dest.leafName, val, options).value;
|
|
61
|
+
}
|
|
62
|
+
createBoolean(path, initialValue, options) {
|
|
63
|
+
const dest = this.getDestinationFields(path);
|
|
64
|
+
return dest.fields.createBoolean(dest.leafName, initialValue, options);
|
|
65
|
+
}
|
|
66
|
+
createNumeric(path, initialValue, options) {
|
|
67
|
+
const dest = this.getDestinationFields(path);
|
|
68
|
+
return dest.fields.createNumeric(dest.leafName, initialValue, options);
|
|
69
|
+
}
|
|
70
|
+
createString(path, initialValue, options) {
|
|
71
|
+
const dest = this.getDestinationFields(path);
|
|
72
|
+
return dest.fields.createString(dest.leafName, initialValue, options);
|
|
73
|
+
}
|
|
74
|
+
createGeneric(path, initialValue, options) {
|
|
75
|
+
const dest = this.getDestinationFields(path);
|
|
76
|
+
return dest.fields.createGeneric(dest.leafName, initialValue, options);
|
|
77
|
+
}
|
|
78
|
+
getBoolean(path) {
|
|
79
|
+
return this.getField(path);
|
|
80
|
+
}
|
|
81
|
+
getNumeric(path) {
|
|
82
|
+
return this.getField(path);
|
|
83
|
+
}
|
|
84
|
+
getString(path) {
|
|
85
|
+
return this.getField(path);
|
|
86
|
+
}
|
|
87
|
+
getGeneric(path) {
|
|
88
|
+
return this.getField(path);
|
|
89
|
+
}
|
|
90
|
+
getField(path) {
|
|
91
|
+
const pathArr = ensurePathArray(path);
|
|
92
|
+
throwIfEmpty(pathArr, `Wrong path or path is empty: ${ensurePathString(path)}, should contain at least one path segment`);
|
|
93
|
+
if (this.isPathToRootFields(pathArr)) {
|
|
94
|
+
return this.rootFields.get(pathArr[0]);
|
|
95
|
+
}
|
|
96
|
+
const fieldName = pathArr.pop();
|
|
97
|
+
const fields = this.tree.getFields(pathArr);
|
|
98
|
+
return fields.get(fieldName);
|
|
99
|
+
}
|
|
100
|
+
createFields(path) {
|
|
101
|
+
return this.tree.createFields(path, true);
|
|
102
|
+
}
|
|
103
|
+
createTree(path) {
|
|
104
|
+
return this.tree.createFieldTree(path, true);
|
|
105
|
+
}
|
|
106
|
+
getFields(path) {
|
|
107
|
+
return this.tree.getFields(path);
|
|
108
|
+
}
|
|
109
|
+
getTree(path) {
|
|
110
|
+
return this.tree.getFieldTree(path);
|
|
111
|
+
}
|
|
112
|
+
remove(path) {
|
|
113
|
+
const pathArr = ensurePathArray(path);
|
|
114
|
+
throwIfEmpty(pathArr, `Wrong path or path is empty: ${ensurePathString(path)}, should contain at least one path segment`);
|
|
115
|
+
/** remove field from root fields */
|
|
116
|
+
if (this.isPathToRootFields(pathArr)) {
|
|
117
|
+
this.rootFields.remove(pathArr);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const node = this.tree.findParentNode(pathArr);
|
|
121
|
+
const leafName = pathArr[pathArr.length - 1];
|
|
122
|
+
if (node instanceof CoreFields) {
|
|
123
|
+
node.remove(leafName);
|
|
124
|
+
}
|
|
125
|
+
else if (node instanceof CoreFieldTree) {
|
|
126
|
+
node.removeNode(leafName);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
isPathToRootFields(path) {
|
|
130
|
+
return ensurePathArray(path).length === 1;
|
|
131
|
+
}
|
|
132
|
+
getDestinationFields(path) {
|
|
133
|
+
const pathArr = ensurePathArray(path);
|
|
134
|
+
if (this.isPathToRootFields(pathArr)) {
|
|
135
|
+
return { fields: this.rootFields, leafName: pathArr[0] };
|
|
136
|
+
}
|
|
137
|
+
const leafName = pathArr.pop();
|
|
138
|
+
return { fields: this.tree.getOrCreateFields(path), leafName };
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=data-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-store.js","sourceRoot":"","sources":["../src/data-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CoreField } from './core-field';
|
|
2
|
+
import { BooleanField, FieldOptions } from '../field';
|
|
3
|
+
export interface CoreBooleanFieldOptions extends FieldOptions<boolean> {
|
|
4
|
+
}
|
|
5
|
+
export declare class CoreBooleanField extends CoreField<boolean> implements BooleanField {
|
|
6
|
+
static readonly typeName: string;
|
|
7
|
+
readonly typeName: string;
|
|
8
|
+
constructor(name: string, initialVal: boolean, options?: CoreBooleanFieldOptions);
|
|
9
|
+
toggle(): boolean;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=core-boolean-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-boolean-field.d.ts","sourceRoot":"","sources":["../../src/field-definitions/core-boolean-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,UAAU,CAAC;AAEpD,MAAM,WAAW,uBAAwB,SAAQ,YAAY,CAAC,OAAO,CAAC;CAAI;AAE1E,qBAAa,gBAAiB,SAAQ,SAAS,CAAC,OAAO,CAAE,YAAW,YAAY;IAC9E,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAa;IAC7C,QAAQ,CAAC,QAAQ,SAA6B;gBAElC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,uBAAuB;IAIhF,MAAM,IAAI,OAAO;CAIlB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CoreField } from './core-field';
|
|
2
|
+
export class CoreBooleanField extends CoreField {
|
|
3
|
+
static typeName = 'boolean';
|
|
4
|
+
typeName = CoreBooleanField.typeName;
|
|
5
|
+
constructor(name, initialVal, options) {
|
|
6
|
+
super(name, initialVal, options);
|
|
7
|
+
}
|
|
8
|
+
toggle() {
|
|
9
|
+
this.value = !this.value;
|
|
10
|
+
return this.value;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=core-boolean-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-boolean-field.js","sourceRoot":"","sources":["../../src/field-definitions/core-boolean-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAKvC,MAAM,OAAO,gBAAiB,SAAQ,SAAkB;IACtD,MAAM,CAAU,QAAQ,GAAW,SAAS,CAAC;IACpC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;IAE9C,YAAY,IAAY,EAAE,UAAmB,EAAE,OAAiC;QAC9E,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Subscribable } from '@axi-engine/utils';
|
|
2
|
+
import { Policies } from '../policies';
|
|
3
|
+
import { Field, FieldOptions } from '../field';
|
|
4
|
+
/**
|
|
5
|
+
* A state container that wraps a value.
|
|
6
|
+
* It allows applying a pipeline of transformation or validation "policies" before any new value is set.
|
|
7
|
+
*
|
|
8
|
+
* @template T The type of the value this field holds.
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
export declare class CoreField<T> implements Field<T> {
|
|
12
|
+
/** A type keyword of the field */
|
|
13
|
+
static readonly typeName: string;
|
|
14
|
+
readonly typeName: string;
|
|
15
|
+
/** A unique identifier for the field. */
|
|
16
|
+
private readonly _name;
|
|
17
|
+
private _value;
|
|
18
|
+
private readonly _onChange;
|
|
19
|
+
readonly onChange: Subscribable<[newValue: T, oldvalue: T]>;
|
|
20
|
+
readonly policies: Policies<T>;
|
|
21
|
+
get name(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Gets the current raw value of the field.
|
|
24
|
+
* For reactive updates, it's recommended to use the `.signal` property instead.
|
|
25
|
+
*/
|
|
26
|
+
get value(): T;
|
|
27
|
+
/**
|
|
28
|
+
* Sets a new value for the field.
|
|
29
|
+
* The provided value will be processed by all registered policies before the underlying signal is updated.
|
|
30
|
+
* @param val The new value to set.
|
|
31
|
+
*/
|
|
32
|
+
set value(val: T);
|
|
33
|
+
/**
|
|
34
|
+
* Creates an instance of a Field.
|
|
35
|
+
* @param name A unique identifier for the field.
|
|
36
|
+
* @param initialVal The initial value of the field.
|
|
37
|
+
* @param options Optional configuration for the field.
|
|
38
|
+
* @param options.policies An array of policies to apply to the field's value on every `set` operation.
|
|
39
|
+
* @param options.isEqual An function for compare old and new value, by default uses the strictEquals from `utils`
|
|
40
|
+
*
|
|
41
|
+
*/
|
|
42
|
+
constructor(name: string, initialVal: T, options?: FieldOptions<T>);
|
|
43
|
+
setValueSilently(val: T): void;
|
|
44
|
+
batchUpdate(updateFn: (currentValue: T) => T): void;
|
|
45
|
+
/**
|
|
46
|
+
* Cleans up resources used by the field and its policies.
|
|
47
|
+
* This should be called when the field is no longer needed to prevent memory leaks from reactive policies.
|
|
48
|
+
*/
|
|
49
|
+
destroy(): void;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=core-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-field.d.ts","sourceRoot":"","sources":["../../src/field-definitions/core-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAC,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAErC,OAAO,EAAC,KAAK,EAAE,YAAY,EAAC,MAAM,UAAU,CAAC;AAG7C;;;;;;GAMG;AACH,qBAAa,SAAS,CAAC,CAAC,CAAE,YAAW,KAAK,CAAC,CAAC,CAAC;IAC3C,kCAAkC;IAClC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAa;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAsB;IAE/C,yCAAyC;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsD;IAChF,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAkB;IAGhD,IAAI,IAAI,WAEP;IAED;;;OAGG;IACH,IAAI,KAAK,IAAI,CAAC,CAEb;IAED;;;;OAIG;IACH,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,EAOf;IAED;;;;;;;;OAQG;gBAED,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,CAAC,EACb,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;IAQ3B,gBAAgB,CAAC,GAAG,EAAE,CAAC;IAIvB,WAAW,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI;IAInD;;;OAGG;IACH,OAAO;CAIR"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Emitter } from '@axi-engine/utils';
|
|
2
|
+
import { Policies } from '../policies';
|
|
3
|
+
import { dequal } from 'dequal';
|
|
4
|
+
/**
|
|
5
|
+
* A state container that wraps a value.
|
|
6
|
+
* It allows applying a pipeline of transformation or validation "policies" before any new value is set.
|
|
7
|
+
*
|
|
8
|
+
* @template T The type of the value this field holds.
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
export class CoreField {
|
|
12
|
+
/** A type keyword of the field */
|
|
13
|
+
static typeName = 'default';
|
|
14
|
+
typeName = CoreField.typeName;
|
|
15
|
+
/** A unique identifier for the field. */
|
|
16
|
+
_name;
|
|
17
|
+
_value;
|
|
18
|
+
_onChange = new Emitter();
|
|
19
|
+
onChange;
|
|
20
|
+
policies = new Policies();
|
|
21
|
+
get name() {
|
|
22
|
+
return this._name;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Gets the current raw value of the field.
|
|
26
|
+
* For reactive updates, it's recommended to use the `.signal` property instead.
|
|
27
|
+
*/
|
|
28
|
+
get value() {
|
|
29
|
+
return this._value;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Sets a new value for the field.
|
|
33
|
+
* The provided value will be processed by all registered policies before the underlying signal is updated.
|
|
34
|
+
* @param val The new value to set.
|
|
35
|
+
*/
|
|
36
|
+
set value(val) {
|
|
37
|
+
const oldVal = this._value;
|
|
38
|
+
const finalVal = this.policies.apply(val);
|
|
39
|
+
if (!dequal(this._value, finalVal)) {
|
|
40
|
+
this._value = finalVal;
|
|
41
|
+
this._onChange.emit(this._value, oldVal);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Creates an instance of a Field.
|
|
46
|
+
* @param name A unique identifier for the field.
|
|
47
|
+
* @param initialVal The initial value of the field.
|
|
48
|
+
* @param options Optional configuration for the field.
|
|
49
|
+
* @param options.policies An array of policies to apply to the field's value on every `set` operation.
|
|
50
|
+
* @param options.isEqual An function for compare old and new value, by default uses the strictEquals from `utils`
|
|
51
|
+
*
|
|
52
|
+
*/
|
|
53
|
+
constructor(name, initialVal, options) {
|
|
54
|
+
this.onChange = this._onChange;
|
|
55
|
+
this._name = name;
|
|
56
|
+
options?.policies?.forEach(policy => this.policies.add(policy));
|
|
57
|
+
this.value = initialVal;
|
|
58
|
+
}
|
|
59
|
+
setValueSilently(val) {
|
|
60
|
+
this._value = this.policies.apply(val);
|
|
61
|
+
}
|
|
62
|
+
batchUpdate(updateFn) {
|
|
63
|
+
this.value = updateFn(this.value);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Cleans up resources used by the field and its policies.
|
|
67
|
+
* This should be called when the field is no longer needed to prevent memory leaks from reactive policies.
|
|
68
|
+
*/
|
|
69
|
+
destroy() {
|
|
70
|
+
this.policies.clear();
|
|
71
|
+
this._onChange.clear();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=core-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-field.js","sourceRoot":"","sources":["../../src/field-definitions/core-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAe,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AACrC,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAI9B;;;;;;GAMG;AACH,MAAM,OAAO,SAAS;IACpB,kCAAkC;IAClC,MAAM,CAAU,QAAQ,GAAW,SAAS,CAAC;IACpC,QAAQ,GAAW,SAAS,CAAC,QAAQ,CAAC;IAE/C,yCAAyC;IACxB,KAAK,CAAS;IACvB,MAAM,CAAK;IACF,SAAS,GAAwC,IAAI,OAAO,EAAE,CAAC;IACvE,QAAQ,CAA2C;IACnD,QAAQ,GAAgB,IAAI,QAAQ,EAAE,CAAC;IAGhD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,IAAI,KAAK,CAAC,GAAM;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,YACE,IAAY,EACZ,UAAa,EACb,OAAyB;QAEzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;IAC1B,CAAC;IAED,gBAAgB,CAAC,GAAM;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,WAAW,CAAC,QAAgC;QAC1C,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CoreField } from './core-field';
|
|
2
|
+
import { FieldOptions, NumericField } from '../field';
|
|
3
|
+
export interface CoreNumericFieldOptions extends FieldOptions<number> {
|
|
4
|
+
min?: number;
|
|
5
|
+
max?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class CoreNumericField extends CoreField<number> implements NumericField {
|
|
8
|
+
static readonly typeName: string;
|
|
9
|
+
readonly typeName: string;
|
|
10
|
+
get min(): number | undefined;
|
|
11
|
+
get max(): number | undefined;
|
|
12
|
+
constructor(name: string, initialVal: number, options?: CoreNumericFieldOptions);
|
|
13
|
+
isMin(): boolean;
|
|
14
|
+
isMax(): boolean;
|
|
15
|
+
inc(amount?: number): void;
|
|
16
|
+
dec(amount?: number): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=core-numeric-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-numeric-field.d.ts","sourceRoot":"","sources":["../../src/field-definitions/core-numeric-field.ts"],"names":[],"mappings":"AAQA,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,UAAU,CAAC;AAGpD,MAAM,WAAW,uBAAwB,SAAQ,YAAY,CAAC,MAAM,CAAC;IACnE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,gBAAiB,SAAQ,SAAS,CAAC,MAAM,CAAE,YAAW,YAAY;IAC7E,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAa;IAC7C,QAAQ,CAAC,QAAQ,SAA6B;IAE9C,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAK5B;IAED,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAK5B;gBAEW,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB;IAY/E,KAAK,IAAI,OAAO;IAKhB,KAAK,IAAI,OAAO;IAKhB,GAAG,CAAC,MAAM,SAAI;IAId,GAAG,CAAC,MAAM,SAAI;CAGf"}
|