@furo/open-models 0.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +27 -0
  3. package/dist/CustomPrototypes.d.ts +6 -0
  4. package/dist/CustomPrototypes.js +4 -0
  5. package/dist/CustomPrototypes.js.map +1 -0
  6. package/dist/FDM_OPTIONS.d.ts +16 -0
  7. package/dist/FDM_OPTIONS.js +8 -0
  8. package/dist/FDM_OPTIONS.js.map +1 -0
  9. package/dist/FieldConstraints.d.ts +15 -0
  10. package/dist/FieldConstraints.js +3 -0
  11. package/dist/FieldConstraints.js.map +1 -0
  12. package/dist/FieldNode.d.ts +339 -0
  13. package/dist/FieldNode.js +835 -0
  14. package/dist/FieldNode.js.map +1 -0
  15. package/dist/OM_OPTIONS.d.ts +16 -0
  16. package/dist/OM_OPTIONS.js +8 -0
  17. package/dist/OM_OPTIONS.js.map +1 -0
  18. package/dist/OPEN_MODELS_OPTIONS.d.ts +16 -0
  19. package/dist/OPEN_MODELS_OPTIONS.js +8 -0
  20. package/dist/OPEN_MODELS_OPTIONS.js.map +1 -0
  21. package/dist/OPTIONS.d.ts +16 -0
  22. package/dist/OPTIONS.js +8 -0
  23. package/dist/OPTIONS.js.map +1 -0
  24. package/dist/Registry.d.ts +17 -0
  25. package/dist/Registry.js +29 -0
  26. package/dist/Registry.js.map +1 -0
  27. package/dist/Validator.d.ts +7 -0
  28. package/dist/Validator.js +3 -0
  29. package/dist/Validator.js.map +1 -0
  30. package/dist/ValueState.d.ts +37 -0
  31. package/dist/ValueState.js +39 -0
  32. package/dist/ValueState.js.map +1 -0
  33. package/dist/index.d.ts +21 -0
  34. package/dist/index.js +19 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/primitives/BOOLEAN.d.ts +14 -0
  37. package/dist/primitives/BOOLEAN.js +56 -0
  38. package/dist/primitives/BOOLEAN.js.map +1 -0
  39. package/dist/primitives/ENUM.d.ts +17 -0
  40. package/dist/primitives/ENUM.js +76 -0
  41. package/dist/primitives/ENUM.js.map +1 -0
  42. package/dist/primitives/INT32.d.ts +18 -0
  43. package/dist/primitives/INT32.js +98 -0
  44. package/dist/primitives/INT32.js.map +1 -0
  45. package/dist/primitives/STRING.d.ts +16 -0
  46. package/dist/primitives/STRING.js +99 -0
  47. package/dist/primitives/STRING.js.map +1 -0
  48. package/dist/proxies/ARRAY.d.ts +165 -0
  49. package/dist/proxies/ARRAY.js +398 -0
  50. package/dist/proxies/ARRAY.js.map +1 -0
  51. package/dist/proxies/MAP.d.ts +101 -0
  52. package/dist/proxies/MAP.js +225 -0
  53. package/dist/proxies/MAP.js.map +1 -0
  54. package/dist/proxies/RECURSION.d.ts +13 -0
  55. package/dist/proxies/RECURSION.js +51 -0
  56. package/dist/proxies/RECURSION.js.map +1 -0
  57. package/dist/well_known/ANY.d.ts +20 -0
  58. package/dist/well_known/ANY.js +91 -0
  59. package/dist/well_known/ANY.js.map +1 -0
  60. package/dist/well_known/Int32Value.d.ts +17 -0
  61. package/dist/well_known/Int32Value.js +115 -0
  62. package/dist/well_known/Int32Value.js.map +1 -0
  63. package/dist/well_known/Int64Value.d.ts +16 -0
  64. package/dist/well_known/Int64Value.js +105 -0
  65. package/dist/well_known/Int64Value.js.map +1 -0
  66. package/package.json +83 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ENUM.js","sourceRoot":"","sources":["../../src/primitives/ENUM.ts"],"names":[],"mappings":"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","sourcesContent":["import { FieldNode } from '../FieldNode';\nimport { OPEN_MODELS_OPTIONS } from '../OPEN_MODELS_OPTIONS';\n\nfunction isEnumMember<E>(\n value: unknown,\n enumArg: Record<string | number | symbol, E>,\n): value is E {\n return (Object.values(enumArg) as unknown[]).includes(value);\n}\n\nexport class ENUM<T> extends FieldNode {\n private _nullValue: T;\n\n get value(): T {\n return this._value;\n }\n\n set value(value: T) {\n this._value = value;\n if (this._value === this._nullValue) {\n this.__isEmpty = !(\n OPEN_MODELS_OPTIONS.EmitDefaultValues ||\n OPEN_MODELS_OPTIONS.EmitUnpopulated\n );\n } else {\n this.__isEmpty = false;\n }\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: T;\n\n private _initialValue: T;\n\n enumArg: Record<string | number | symbol, T>;\n\n constructor(\n initData: T | undefined,\n parent: FieldNode,\n parentAttributeName: string,\n enumArg: Record<string | number | symbol, T>,\n defaultValue: T,\n ) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this.__meta.typeName = 'primitives.ENUM';\n this._value = initData !== undefined ? initData : defaultValue;\n this._initialValue = defaultValue;\n this._nullValue = defaultValue;\n this.enumArg = enumArg;\n }\n\n // use the initial value if a value out of range was set\n __updateWithLiteral(v: T) {\n if (isEnumMember(v, this.enumArg)) {\n this._value = v;\n this._initialValue = v;\n if (this._value === this._nullValue) {\n this.__isEmpty = !(\n OPEN_MODELS_OPTIONS.EmitDefaultValues ||\n OPEN_MODELS_OPTIONS.EmitUnpopulated\n );\n } else {\n this.__isEmpty = false;\n }\n } else {\n this._value = this._initialValue;\n }\n this.__notifyFieldValueChange(false);\n }\n\n __toJson(): string {\n return this.__toLiteral();\n }\n\n protected ___updateNotEmptyPath() {\n if (this._value === this._nullValue) {\n this.___isEmpty = !(\n OPEN_MODELS_OPTIONS.EmitDefaultValues ||\n OPEN_MODELS_OPTIONS.EmitUnpopulated\n );\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n __mapJsonToLiteral(data: string): string {\n return data;\n }\n\n __toLiteral(): string {\n return this._value as string;\n }\n\n toString(): string {\n return this._value as string;\n }\n\n __clear() {\n this._value = this._initialValue;\n }\n}\n"]}
@@ -0,0 +1,18 @@
1
+ import { FieldNode } from '../FieldNode.js';
2
+ import { FieldConstraints } from '../FieldConstraints.js';
3
+ export declare class INT32 extends FieldNode {
4
+ get value(): number;
5
+ set value(value: number);
6
+ _value: number;
7
+ constructor(initData?: number, parent?: FieldNode, parentAttributeName?: string);
8
+ __updateWithLiteral(v: number): void;
9
+ protected ___updateNotEmptyPath(): void;
10
+ __mapJsonToLiteral(data: number): number;
11
+ protected __checkTypeBoundaries(): string[] | undefined;
12
+ protected __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined;
13
+ __toJson(): number;
14
+ __toLiteral(): number;
15
+ valueOf(): number;
16
+ toString(): string;
17
+ __clear(): void;
18
+ }
@@ -0,0 +1,98 @@
1
+ import { FieldNode } from '../FieldNode.js';
2
+ import { Registry } from '../Registry.js';
3
+ import { OPEN_MODELS_OPTIONS } from '../OPEN_MODELS_OPTIONS.js';
4
+ export class INT32 extends FieldNode {
5
+ get value() {
6
+ return this._value;
7
+ }
8
+ set value(value) {
9
+ this._value = value;
10
+ this.__isEmpty = false;
11
+ this.__climbUpValidation();
12
+ this.__notifyFieldValueChange(true);
13
+ }
14
+ constructor(initData, parent, parentAttributeName) {
15
+ super(undefined, parent, parentAttributeName);
16
+ this.__isPrimitive = true;
17
+ this._value = Number.isInteger(initData) ? initData : 0;
18
+ this.__meta.typeName = 'primitives.INT32';
19
+ }
20
+ __updateWithLiteral(v) {
21
+ this._value = v;
22
+ this.__isEmpty = false;
23
+ this.__notifyFieldValueChange(false);
24
+ }
25
+ ___updateNotEmptyPath() {
26
+ if (this._value === 0) {
27
+ this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues ||
28
+ OPEN_MODELS_OPTIONS.EmitUnpopulated);
29
+ }
30
+ else {
31
+ this.___isEmpty = false;
32
+ super.___updateNotEmptyPath();
33
+ }
34
+ }
35
+ // eslint-disable-next-line class-methods-use-this
36
+ __mapJsonToLiteral(data) {
37
+ return data;
38
+ }
39
+ __checkTypeBoundaries() {
40
+ // check for int32 min max boundaries
41
+ if (this._value > 2147483647) {
42
+ return ['constraint.violation.range.int32.max', '2147483647'];
43
+ }
44
+ if (this._value < -2147483648) {
45
+ return ['constraint.violation.range.int32.min', '-2147483648'];
46
+ }
47
+ return undefined;
48
+ }
49
+ __checkConstraints(fieldConstraints) {
50
+ // eslint-disable-next-line guard-for-in
51
+ for (const [constraint, value] of Object.entries(fieldConstraints)) {
52
+ // An int32 has always a value if (constraint === 'required') {}
53
+ if (constraint === 'maximum') {
54
+ // By default, the minimum and maximum values are included in the range. ">" is used to check.
55
+ if (fieldConstraints.exclusive_maximum && this._value >= value) {
56
+ return ['constraint.violation.exclusive_maximum', value, this._value];
57
+ }
58
+ if (this._value > value) {
59
+ return ['constraint.violation.maximum', value];
60
+ }
61
+ }
62
+ if (constraint === 'minimum') {
63
+ // By default, the minimum and maximum values are included in the range. "<" is used to check.
64
+ if (fieldConstraints.exclusive_minimum && this._value <= value) {
65
+ return ['constraint.violation.exclusive_minimum', value, this._value];
66
+ }
67
+ if (this._value < value) {
68
+ return ['constraint.violation.minimum', value, this._value];
69
+ }
70
+ }
71
+ if (constraint === 'multiple_of') {
72
+ // Use the multiple_of keyword to specify that a number must be the multiple of another number
73
+ // use this to define the step ??
74
+ if (this._value % value !== 0) {
75
+ return ['constraint.violation.multiple_of', value, this._value];
76
+ }
77
+ }
78
+ }
79
+ return undefined;
80
+ }
81
+ __toJson() {
82
+ return this.__toLiteral();
83
+ }
84
+ __toLiteral() {
85
+ return this._value;
86
+ }
87
+ valueOf() {
88
+ return this._value;
89
+ }
90
+ toString() {
91
+ return this._value.toString();
92
+ }
93
+ __clear() {
94
+ this._value = 0;
95
+ }
96
+ }
97
+ Registry.register('int32', INT32);
98
+ //# sourceMappingURL=INT32.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"INT32.js","sourceRoot":"","sources":["../../src/primitives/INT32.ts"],"names":[],"mappings":"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","sourcesContent":["import { FieldNode } from '../FieldNode';\nimport { Registry } from '../Registry';\nimport { FieldConstraints } from '../FieldConstraints';\nimport { OPEN_MODELS_OPTIONS } from '../OPEN_MODELS_OPTIONS';\n\nexport class INT32 extends FieldNode {\n get value(): number {\n return this._value;\n }\n\n set value(value: number) {\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: number;\n\n constructor(\n initData?: number,\n parent?: FieldNode,\n parentAttributeName?: string,\n ) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = Number.isInteger(initData) ? (initData as number) : 0;\n this.__meta.typeName = 'primitives.INT32';\n }\n\n __updateWithLiteral(v: number) {\n this._value = v;\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected ___updateNotEmptyPath() {\n if (this._value === 0) {\n this.___isEmpty = !(\n OPEN_MODELS_OPTIONS.EmitDefaultValues ||\n OPEN_MODELS_OPTIONS.EmitUnpopulated\n );\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n __mapJsonToLiteral(data: number): number {\n return data;\n }\n\n protected __checkTypeBoundaries(): string[] | undefined {\n // check for int32 min max boundaries\n\n if (this._value > 2147483647) {\n return ['constraint.violation.range.int32.max', '2147483647'];\n }\n if (this._value < -2147483648) {\n return ['constraint.violation.range.int32.min', '-2147483648'];\n }\n return undefined;\n }\n\n protected __checkConstraints(\n fieldConstraints: FieldConstraints,\n ): string[] | undefined {\n // eslint-disable-next-line guard-for-in\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // An int32 has always a value if (constraint === 'required') {}\n if (constraint === 'maximum') {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return ['constraint.violation.exclusive_maximum', value, this._value];\n }\n if (this._value > value) {\n return ['constraint.violation.maximum', value];\n }\n }\n if (constraint === 'minimum') {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return ['constraint.violation.exclusive_minimum', value, this._value];\n }\n if (this._value < value) {\n return ['constraint.violation.minimum', value, this._value];\n }\n }\n if (constraint === 'multiple_of') {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % value !== 0) {\n return ['constraint.violation.multiple_of', value, this._value];\n }\n }\n }\n\n return undefined;\n }\n\n __toJson(): number {\n return this.__toLiteral();\n }\n\n __toLiteral() {\n return this._value;\n }\n\n valueOf(): number {\n return this._value;\n }\n\n toString(): string {\n return this._value.toString();\n }\n\n __clear() {\n this._value = 0;\n }\n}\n\nRegistry.register('int32', INT32);\n"]}
@@ -0,0 +1,16 @@
1
+ import { FieldNode } from '../FieldNode.js';
2
+ import { FieldConstraints } from '../FieldConstraints.js';
3
+ export declare class STRING extends FieldNode {
4
+ get value(): string;
5
+ set value(value: string);
6
+ _value: string;
7
+ constructor(initData?: string, parent?: FieldNode, parentAttributeName?: string);
8
+ __updateWithLiteral(v: string): void;
9
+ protected ___updateNotEmptyPath(): void;
10
+ __mapJsonToLiteral(data: string): string;
11
+ protected __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined;
12
+ __toJson(): string;
13
+ __toLiteral(): string;
14
+ toString(): string;
15
+ __clear(): void;
16
+ }
@@ -0,0 +1,99 @@
1
+ import { FieldNode } from '../FieldNode.js';
2
+ import { Registry } from '../Registry.js';
3
+ import { OPEN_MODELS_OPTIONS } from '../OPEN_MODELS_OPTIONS.js';
4
+ export class STRING extends FieldNode {
5
+ get value() {
6
+ return this._value;
7
+ }
8
+ set value(value) {
9
+ this._value = value;
10
+ if (this._value === '') {
11
+ this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues ||
12
+ OPEN_MODELS_OPTIONS.EmitUnpopulated);
13
+ }
14
+ else {
15
+ this.__isEmpty = false;
16
+ }
17
+ this.__climbUpValidation();
18
+ this.__notifyFieldValueChange(true);
19
+ }
20
+ constructor(initData, parent, parentAttributeName) {
21
+ super(undefined, parent, parentAttributeName);
22
+ this.__isPrimitive = true;
23
+ this._value = initData || '';
24
+ this.__meta.typeName = 'primitives.STRING';
25
+ this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues ||
26
+ OPEN_MODELS_OPTIONS.EmitUnpopulated);
27
+ }
28
+ __updateWithLiteral(v) {
29
+ this._value = v;
30
+ if (this._value === '') {
31
+ this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues ||
32
+ OPEN_MODELS_OPTIONS.EmitUnpopulated);
33
+ }
34
+ else {
35
+ this.__isEmpty = false;
36
+ }
37
+ this.__notifyFieldValueChange(false);
38
+ }
39
+ ___updateNotEmptyPath() {
40
+ if (this._value === '') {
41
+ this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues ||
42
+ OPEN_MODELS_OPTIONS.EmitUnpopulated);
43
+ }
44
+ else {
45
+ this.___isEmpty = false;
46
+ super.___updateNotEmptyPath();
47
+ }
48
+ }
49
+ // eslint-disable-next-line class-methods-use-this
50
+ __mapJsonToLiteral(data) {
51
+ return data;
52
+ }
53
+ __checkConstraints(fieldConstraints) {
54
+ // eslint-disable-next-line guard-for-in
55
+ for (const [constraint, value] of Object.entries(fieldConstraints)) {
56
+ if (constraint === 'required') {
57
+ if (this._value === '') {
58
+ return ['constraint.violation.required'];
59
+ }
60
+ }
61
+ if (constraint === 'max_length') {
62
+ // String length can be restricted using minLength and maxLength. ">" is used to check.
63
+ if (this._value.length > value) {
64
+ return ['constraint.violation.max_length', value, this._value];
65
+ }
66
+ }
67
+ if (constraint === 'min_length') {
68
+ // String length can be restricted using minLength and maxLength. "<" is used to check.
69
+ if (this._value.length < value) {
70
+ return ['constraint.violation.min_length', value, this._value];
71
+ }
72
+ }
73
+ if (constraint === 'pattern') {
74
+ // The pattern keyword lets you define a regular expression template for the string value.
75
+ const re = new RegExp(value);
76
+ if (!this._value.match(re)) {
77
+ return ['constraint.violation.pattern', value, this._value];
78
+ }
79
+ }
80
+ }
81
+ return undefined;
82
+ }
83
+ __toJson() {
84
+ return this.__toLiteral();
85
+ }
86
+ __toLiteral() {
87
+ return this._value;
88
+ }
89
+ toString() {
90
+ return this._value;
91
+ }
92
+ __clear() {
93
+ this._value = '';
94
+ this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues ||
95
+ OPEN_MODELS_OPTIONS.EmitUnpopulated);
96
+ }
97
+ }
98
+ Registry.register('string', STRING);
99
+ //# sourceMappingURL=STRING.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"STRING.js","sourceRoot":"","sources":["../../src/primitives/STRING.ts"],"names":[],"mappings":"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","sourcesContent":["import { FieldNode } from '../FieldNode';\nimport { Registry } from '../Registry';\nimport { OPEN_MODELS_OPTIONS } from '../OPEN_MODELS_OPTIONS';\nimport { FieldConstraints } from '../FieldConstraints';\n\nexport class STRING extends FieldNode {\n get value(): string {\n return this._value;\n }\n\n set value(value: string) {\n this._value = value;\n if (this._value === '') {\n this.__isEmpty = !(\n OPEN_MODELS_OPTIONS.EmitDefaultValues ||\n OPEN_MODELS_OPTIONS.EmitUnpopulated\n );\n } else {\n this.__isEmpty = false;\n }\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: string;\n\n constructor(\n initData?: string,\n parent?: FieldNode,\n parentAttributeName?: string,\n ) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = initData || '';\n this.__meta.typeName = 'primitives.STRING';\n this.__isEmpty = !(\n OPEN_MODELS_OPTIONS.EmitDefaultValues ||\n OPEN_MODELS_OPTIONS.EmitUnpopulated\n );\n }\n\n __updateWithLiteral(v: string) {\n this._value = v;\n if (this._value === '') {\n this.__isEmpty = !(\n OPEN_MODELS_OPTIONS.EmitDefaultValues ||\n OPEN_MODELS_OPTIONS.EmitUnpopulated\n );\n } else {\n this.__isEmpty = false;\n }\n this.__notifyFieldValueChange(false);\n }\n\n protected ___updateNotEmptyPath() {\n if (this._value === '') {\n this.___isEmpty = !(\n OPEN_MODELS_OPTIONS.EmitDefaultValues ||\n OPEN_MODELS_OPTIONS.EmitUnpopulated\n );\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n __mapJsonToLiteral(data: string): string {\n return data;\n }\n\n protected __checkConstraints(\n fieldConstraints: FieldConstraints,\n ): string[] | undefined {\n // eslint-disable-next-line guard-for-in\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n if (constraint === 'required') {\n if (this._value === '') {\n return ['constraint.violation.required'];\n }\n }\n if (constraint === 'max_length') {\n // String length can be restricted using minLength and maxLength. \">\" is used to check.\n if (this._value.length > value) {\n return ['constraint.violation.max_length', value, this._value];\n }\n }\n if (constraint === 'min_length') {\n // String length can be restricted using minLength and maxLength. \"<\" is used to check.\n if (this._value.length < value) {\n return ['constraint.violation.min_length', value, this._value];\n }\n }\n if (constraint === 'pattern') {\n // The pattern keyword lets you define a regular expression template for the string value.\n\n const re = new RegExp(value);\n if (!this._value.match(re)) {\n return ['constraint.violation.pattern', value, this._value];\n }\n }\n }\n\n return undefined;\n }\n\n __toJson(): string {\n return this.__toLiteral();\n }\n\n __toLiteral() {\n return this._value;\n }\n\n toString(): string {\n return this._value;\n }\n\n __clear() {\n this._value = '';\n this.__isEmpty = !(\n OPEN_MODELS_OPTIONS.EmitDefaultValues ||\n OPEN_MODELS_OPTIONS.EmitUnpopulated\n );\n }\n}\n\nRegistry.register('string', STRING);\n"]}
@@ -0,0 +1,165 @@
1
+ import { FieldNode } from '../FieldNode.js';
2
+ export declare class ARRAY<T extends FieldNode, I> extends FieldNode {
3
+ private _value;
4
+ private ___Constructor;
5
+ constructor(initData?: I[], parent?: FieldNode, parentATributeName?: string);
6
+ /**
7
+ * Creates an element of type T and adds it to the beginning or end (default) of the ARRAY
8
+ * @param initData
9
+ * @param before
10
+ */
11
+ add(initData?: I, before?: boolean): T;
12
+ /**
13
+ *
14
+ * @param initData
15
+ */
16
+ initFromLiteral(Constructor: {
17
+ new (): T;
18
+ }, initData: I[]): void;
19
+ /**
20
+ * creates a literal type from a json type
21
+ *
22
+ */
23
+ __mapJsonToLiteral(data: any): any;
24
+ __updateWithLiteral(initData: I[]): void;
25
+ __getFieldNodeByPath(deepPath?: string): FieldNode | undefined;
26
+ private __notifyArrayChanges;
27
+ get __childNodes(): T[];
28
+ private __getConstructor;
29
+ /**
30
+ * @function
31
+ * @template T FieldNode
32
+ * @template I Json like interface type
33
+ * @param {T} Constructor - Const
34
+ * @param {I[]} initData - Initial open-models
35
+ * @returns {ARRAY<T, I>}
36
+ */
37
+ static Builder<T extends FieldNode, I>(Constructor: new () => T, initData: I[]): ARRAY<T, I>;
38
+ toString(): string;
39
+ __stringify(): string;
40
+ __toJson(): T[];
41
+ __toLiteral(): T[];
42
+ __clear(): void;
43
+ delete(index: number): I;
44
+ deleteT(index: number): T;
45
+ get value(): T[];
46
+ /**
47
+ * NOT needed any more, because we use the __TypeSetter instead of the __PrimitivesSetter
48
+ set value(arr: T[]) {
49
+ // assigning the new array will destroy any reference to it
50
+ // __clear the array
51
+ this.__clear();
52
+ // (this as any)[`_${fieldName}`].length = 0;
53
+ // refill the array
54
+ arr.forEach((e, i) => {
55
+ e.__parentNode = this;
56
+ e.__meta.fieldName = `${i}`;
57
+ e.__meta.index = i;
58
+ e.__meta.isArrayNode = true;
59
+ this._value.push(e);
60
+ });
61
+ this.__notifyArrayChanges(true);
62
+ }
63
+ */
64
+ get length(): number;
65
+ /**
66
+ * The at() method of Array instances takes an integer value and returns the item at that index, allowing for positive and negative integers. Negative integers count back from the last item in the array.
67
+ *
68
+ * This method returns the Interface type.
69
+ *
70
+ * @param {I} index - Zero-based index of the array element to be returned, converted to an integer . Negative index counts back from the end of the array — if index < 0, index + array. length is accessed.
71
+ */
72
+ at(index: number): T | undefined;
73
+ /**
74
+ * The at() method of Array instances takes an integer value and returns the item at that index, allowing for positive and negative integers. Negative integers count back from the last item in the array.
75
+ *
76
+ * This method returns the FieldNode type.
77
+ *
78
+ * @param {T} index - Zero-based index of the array element to be returned, converted to an integer . Negative index counts back from the end of the array — if index < 0, index + array. length is accessed.
79
+ */
80
+ atT(index: number): T | undefined;
81
+ /**
82
+ * The entries() method of Array instances returns a new array iterator object that contains the key/ value pairs for each index in the array.
83
+ */
84
+ entries(): IterableIterator<[number, I]>;
85
+ /**
86
+ * The entries() method of Array instances returns a new array iterator object that contains the key/ value pairs for each index in the array.
87
+ */
88
+ entriesT(): IterableIterator<[number, T]>;
89
+ /**
90
+ * Map with interface type as value.
91
+ *
92
+ * The map() method of Array instances creates a new array populated with the results of calling a provided function on every element in the calling array.
93
+ */
94
+ mapI<U>(callbackfn: (value: I, index: number, array: I[]) => U, thisArg?: unknown): U[];
95
+ /**
96
+ * The map() method of Array instances creates a new array populated with the results of calling a provided function on every element in the calling array.
97
+ */
98
+ map<U>(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: unknown): U[];
99
+ forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: unknown): void;
100
+ /**
101
+ * ...
102
+ * This method requires a FieldNode, not the interface type
103
+ * @param searchElement
104
+ * @param fromIndex
105
+ */
106
+ includes(searchElement: T, fromIndex?: number): boolean;
107
+ /**
108
+ * ...
109
+ * Alternatively you can use the T.__meta.index to get the index of an element.
110
+ * This method requires a FieldNode, not the interface type.
111
+ * @param searchElement
112
+ * @param fromIndex
113
+ */
114
+ indexOf(searchElement: T, fromIndex?: number): number;
115
+ keys(): IterableIterator<number>;
116
+ lastIndexOf(searchElement: T, fromIndex?: number): number;
117
+ pop(): T | undefined;
118
+ /**
119
+ * The push() method of Array instances adds the specified elements to the end of an array and returns the new length of the array.
120
+ * Params:
121
+ * element1 … elementN – The element(s) to add to the end of the array.
122
+ * Returns:
123
+ * The new length property of the object upon which the method was called
124
+ * @param items
125
+ */
126
+ push(...items: I[]): number;
127
+ private __pushWithoutNotifications;
128
+ reverse(): T[];
129
+ /**
130
+ * The shift() method of Array instances removes the first element from an array and returns that removed element.
131
+ *
132
+ * This method changes the length of the array.
133
+ */
134
+ shift(): I | undefined;
135
+ /**
136
+ * The slice() method of Array instances returns a shallow copy of a portion of an array into a new array object selected from start to end (end not included) where start and end represent the index of items in that array. The original array will not be modified.
137
+ * #### Params:
138
+ * start – Zero-based index at which to start extraction, converted to an integer .
139
+ * Negative index counts back from the end of the array — if start < 0, start + array. length is used.
140
+ * If start < -array. length or start is omitted, 0 is used.
141
+ * If start >= array. length, nothing is extracted.
142
+ *
143
+ * end – Zero-based index at which to end extraction, converted to an integer . slice() extracts up to but not including end.
144
+ * Negative index counts back from the end of the array — if end < 0, end + array. length is used.
145
+ * If end < -array. length, 0 is used.
146
+ * If end >= array. length or end is omitted, array. length is used, causing all elements until the end to be extracted.
147
+ * If end is positioned before or at start after normalization, nothing is extracted.
148
+ *
149
+ */
150
+ slice(start?: number, end?: number): I[];
151
+ splice(start: number, deleteCount?: number): I[];
152
+ splice(start: number, deleteCount: number, ...items: I[]): I[];
153
+ /**
154
+ * The unshift() method of Array instances adds the specified elements to the beginning of an array and returns the new length of the array.
155
+ * #### Params:
156
+ * - **element1 … elementN** The elements to add to the front of the arr.
157
+ *
158
+ * #### Returns:
159
+ * The new length property of the object upon which the method was called.
160
+ *
161
+ */
162
+ unshift(...items: T[]): number;
163
+ values(): IterableIterator<T>;
164
+ private _rebuildIndexAndFieldName;
165
+ }