@axi-engine/fields 0.2.3 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +304 -76
- package/dist/index.d.ts +304 -76
- package/dist/index.js +287 -63
- package/dist/index.mjs +273 -56
- package/package.json +7 -2
package/dist/index.mjs
CHANGED
|
@@ -142,13 +142,13 @@ function createTypedMethodsMixin(typeName, baseMethodName) {
|
|
|
142
142
|
};
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
-
// src/field-definitions/
|
|
145
|
+
// src/field-definitions/core-field.ts
|
|
146
146
|
import { Emitter } from "@axi-engine/utils";
|
|
147
147
|
import { dequal } from "dequal";
|
|
148
|
-
var
|
|
148
|
+
var CoreField = class _CoreField {
|
|
149
149
|
/** A type keyword of the field */
|
|
150
150
|
static typeName = "default";
|
|
151
|
-
typeName =
|
|
151
|
+
typeName = _CoreField.typeName;
|
|
152
152
|
/** A unique identifier for the field. */
|
|
153
153
|
_name;
|
|
154
154
|
_value;
|
|
@@ -209,10 +209,10 @@ var DefaultField = class _DefaultField {
|
|
|
209
209
|
}
|
|
210
210
|
};
|
|
211
211
|
|
|
212
|
-
// src/field-definitions/
|
|
213
|
-
var
|
|
212
|
+
// src/field-definitions/core-boolean-field.ts
|
|
213
|
+
var CoreBooleanField = class _CoreBooleanField extends CoreField {
|
|
214
214
|
static typeName = "boolean";
|
|
215
|
-
typeName =
|
|
215
|
+
typeName = _CoreBooleanField.typeName;
|
|
216
216
|
constructor(name, initialVal, options) {
|
|
217
217
|
super(name, initialVal, options);
|
|
218
218
|
}
|
|
@@ -222,10 +222,10 @@ var DefaultBooleanField = class _DefaultBooleanField extends DefaultField {
|
|
|
222
222
|
}
|
|
223
223
|
};
|
|
224
224
|
|
|
225
|
-
// src/field-definitions/
|
|
226
|
-
var
|
|
225
|
+
// src/field-definitions/core-string-field.ts
|
|
226
|
+
var CoreStringField = class _CoreStringField extends CoreField {
|
|
227
227
|
static typeName = "string";
|
|
228
|
-
typeName =
|
|
228
|
+
typeName = _CoreStringField.typeName;
|
|
229
229
|
constructor(name, initialVal, options) {
|
|
230
230
|
super(name, initialVal, options);
|
|
231
231
|
}
|
|
@@ -249,11 +249,11 @@ var DefaultStringField = class _DefaultStringField extends DefaultField {
|
|
|
249
249
|
}
|
|
250
250
|
};
|
|
251
251
|
|
|
252
|
-
// src/field-definitions/
|
|
252
|
+
// src/field-definitions/core-numeric-field.ts
|
|
253
253
|
import { isNullOrUndefined } from "@axi-engine/utils";
|
|
254
|
-
var
|
|
254
|
+
var CoreNumericField = class _CoreNumericField extends CoreField {
|
|
255
255
|
static typeName = "numeric";
|
|
256
|
-
typeName =
|
|
256
|
+
typeName = _CoreNumericField.typeName;
|
|
257
257
|
get min() {
|
|
258
258
|
const policy = this.policies.get(ClampPolicy.id) ?? this.policies.get(ClampMinPolicy.id);
|
|
259
259
|
return policy?.min;
|
|
@@ -433,9 +433,9 @@ var Fields = class _Fields {
|
|
|
433
433
|
}
|
|
434
434
|
/**
|
|
435
435
|
* Retrieves a field by its name.
|
|
436
|
-
* @template
|
|
436
|
+
* @template TField - The expected `Field` type to be returned.
|
|
437
437
|
* @param {string} name - The name of the field to retrieve.
|
|
438
|
-
* @returns {
|
|
438
|
+
* @returns {TField} The `Field` instance.
|
|
439
439
|
* @throws If the field does not exist.
|
|
440
440
|
*/
|
|
441
441
|
get(name) {
|
|
@@ -475,34 +475,6 @@ var Fields = class _Fields {
|
|
|
475
475
|
}
|
|
476
476
|
};
|
|
477
477
|
|
|
478
|
-
// src/mixins/with-boolean-fields.mixin.ts
|
|
479
|
-
var WithBooleanFields = createTypedMethodsMixin(DefaultBooleanField.typeName, "Boolean");
|
|
480
|
-
|
|
481
|
-
// src/mixins/with-string-fields.mixin.ts
|
|
482
|
-
var WithStringFields = createTypedMethodsMixin(DefaultBooleanField.typeName, "String");
|
|
483
|
-
|
|
484
|
-
// src/mixins/with-numeric-fields.mixin.ts
|
|
485
|
-
var WithNumericFields = createTypedMethodsMixin(DefaultBooleanField.typeName, "Numeric");
|
|
486
|
-
|
|
487
|
-
// src/mixins/with-default-generic-fields.mixin.ts
|
|
488
|
-
function WithDefaultGenericFields(Base) {
|
|
489
|
-
return class FieldsWithDefaultGeneric extends Base {
|
|
490
|
-
createGeneric(name, initialValue, options) {
|
|
491
|
-
return this.create(DefaultField.typeName, name, initialValue, options);
|
|
492
|
-
}
|
|
493
|
-
upsetGeneric(name, value, options) {
|
|
494
|
-
return this.upset(DefaultField.typeName, name, value, options);
|
|
495
|
-
}
|
|
496
|
-
getGeneric(name) {
|
|
497
|
-
return this.get(name);
|
|
498
|
-
}
|
|
499
|
-
};
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
// src/default-fields.ts
|
|
503
|
-
var DefaultFields = class extends WithBooleanFields(WithStringFields(WithNumericFields(WithDefaultGenericFields(Fields)))) {
|
|
504
|
-
};
|
|
505
|
-
|
|
506
478
|
// src/field-tree.ts
|
|
507
479
|
import { Emitter as Emitter3, ensurePathArray, ensurePathString, throwIf as throwIf3, throwIfEmpty as throwIfEmpty2 } from "@axi-engine/utils";
|
|
508
480
|
var FieldTree = class _FieldTree {
|
|
@@ -543,7 +515,7 @@ var FieldTree = class _FieldTree {
|
|
|
543
515
|
}
|
|
544
516
|
/**
|
|
545
517
|
* Creates an instance of FieldTree.
|
|
546
|
-
* @param {
|
|
518
|
+
* @param {FieldTreeFactory} factory - A factory responsible for creating new nodes within the tree.
|
|
547
519
|
*/
|
|
548
520
|
constructor(factory) {
|
|
549
521
|
this._factory = factory;
|
|
@@ -682,6 +654,16 @@ var FieldTree = class _FieldTree {
|
|
|
682
654
|
const traversedPath = this.traversePath(path, true);
|
|
683
655
|
return traversedPath.branch.has(traversedPath.leafName) ? traversedPath.branch.getFields(traversedPath.leafName) : traversedPath.branch.createFields(traversedPath.leafName);
|
|
684
656
|
}
|
|
657
|
+
/**
|
|
658
|
+
* Finds the parent node for a given path.
|
|
659
|
+
* @param path The path to the target node.
|
|
660
|
+
* @returns The parent node (either a FieldTree or Fields).
|
|
661
|
+
* @throws An error if the path is invalid or any intermediate node is not a FieldTree.
|
|
662
|
+
*/
|
|
663
|
+
findParentNode(path) {
|
|
664
|
+
const info = this.traversePath(path);
|
|
665
|
+
return info.branch;
|
|
666
|
+
}
|
|
685
667
|
/**
|
|
686
668
|
* Removes all child nodes from this tree branch.
|
|
687
669
|
* This method ensures that `destroy()` is called on each child node, allowing for
|
|
@@ -733,21 +715,59 @@ var FieldTree = class _FieldTree {
|
|
|
733
715
|
}
|
|
734
716
|
};
|
|
735
717
|
|
|
736
|
-
// src/
|
|
737
|
-
var
|
|
718
|
+
// src/mixins/with-boolean-fields.mixin.ts
|
|
719
|
+
var WithBooleanFields = createTypedMethodsMixin(CoreBooleanField.typeName, "Boolean");
|
|
720
|
+
|
|
721
|
+
// src/mixins/with-string-fields.mixin.ts
|
|
722
|
+
var WithStringFields = createTypedMethodsMixin(CoreBooleanField.typeName, "String");
|
|
723
|
+
|
|
724
|
+
// src/mixins/with-numeric-fields.mixin.ts
|
|
725
|
+
var WithNumericFields = createTypedMethodsMixin(CoreBooleanField.typeName, "Numeric");
|
|
726
|
+
|
|
727
|
+
// src/mixins/with-default-generic-fields.mixin.ts
|
|
728
|
+
function WithDefaultGenericFields(Base) {
|
|
729
|
+
return class FieldsWithDefaultGeneric extends Base {
|
|
730
|
+
createGeneric(name, initialValue, options) {
|
|
731
|
+
return this.create(CoreField.typeName, name, initialValue, options);
|
|
732
|
+
}
|
|
733
|
+
upsetGeneric(name, value, options) {
|
|
734
|
+
return this.upset(CoreField.typeName, name, value, options);
|
|
735
|
+
}
|
|
736
|
+
getGeneric(name) {
|
|
737
|
+
return this.get(name);
|
|
738
|
+
}
|
|
739
|
+
};
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
// src/core-fields.ts
|
|
743
|
+
var CoreFields = class extends WithBooleanFields(WithStringFields(WithNumericFields(WithDefaultGenericFields(Fields)))) {
|
|
744
|
+
};
|
|
745
|
+
|
|
746
|
+
// src/core-fields-factory.ts
|
|
747
|
+
var CoreFieldsFactory = class {
|
|
748
|
+
_fieldRegistry;
|
|
749
|
+
get fieldRegistry() {
|
|
750
|
+
return this._fieldRegistry;
|
|
751
|
+
}
|
|
738
752
|
constructor(fieldRegistry) {
|
|
739
|
-
this.
|
|
753
|
+
this._fieldRegistry = fieldRegistry;
|
|
740
754
|
}
|
|
741
755
|
fields() {
|
|
742
|
-
return new
|
|
756
|
+
return new CoreFields(this._fieldRegistry);
|
|
743
757
|
}
|
|
744
758
|
};
|
|
745
|
-
|
|
759
|
+
|
|
760
|
+
// src/core-field-tree.ts
|
|
761
|
+
var CoreFieldTree = class extends FieldTree {
|
|
762
|
+
};
|
|
763
|
+
|
|
764
|
+
// src/core-field-tree-factory.ts
|
|
765
|
+
var CoreTreeNodeFactory = class extends CoreFieldsFactory {
|
|
746
766
|
constructor(fieldRegistry) {
|
|
747
767
|
super(fieldRegistry);
|
|
748
768
|
}
|
|
749
769
|
tree() {
|
|
750
|
-
return new
|
|
770
|
+
return new CoreFieldTree(this);
|
|
751
771
|
}
|
|
752
772
|
};
|
|
753
773
|
|
|
@@ -968,6 +988,196 @@ var FieldTreeSerializer = class {
|
|
|
968
988
|
return tree;
|
|
969
989
|
}
|
|
970
990
|
};
|
|
991
|
+
|
|
992
|
+
// src/data-store-field-resolver.ts
|
|
993
|
+
import { isBoolean, isNumber, isString as isString2 } from "@axi-engine/utils";
|
|
994
|
+
var NumericFieldResolver = class {
|
|
995
|
+
typeName = CoreNumericField.typeName;
|
|
996
|
+
supports(value) {
|
|
997
|
+
return isNumber(value);
|
|
998
|
+
}
|
|
999
|
+
};
|
|
1000
|
+
var BooleanFieldResolver = class {
|
|
1001
|
+
typeName = CoreBooleanField.typeName;
|
|
1002
|
+
supports(value) {
|
|
1003
|
+
return isBoolean(value);
|
|
1004
|
+
}
|
|
1005
|
+
};
|
|
1006
|
+
var StringFieldResolver = class {
|
|
1007
|
+
typeName = CoreStringField.typeName;
|
|
1008
|
+
supports(value) {
|
|
1009
|
+
return isString2(value);
|
|
1010
|
+
}
|
|
1011
|
+
};
|
|
1012
|
+
|
|
1013
|
+
// src/data-store.ts
|
|
1014
|
+
import { ensurePathArray as ensurePathArray2, ensurePathString as ensurePathString2, throwIfEmpty as throwIfEmpty5 } from "@axi-engine/utils";
|
|
1015
|
+
var DataStore = class {
|
|
1016
|
+
constructor(tree) {
|
|
1017
|
+
this.tree = tree;
|
|
1018
|
+
this.registerResolver(new NumericFieldResolver());
|
|
1019
|
+
this.registerResolver(new BooleanFieldResolver());
|
|
1020
|
+
this.registerResolver(new StringFieldResolver());
|
|
1021
|
+
}
|
|
1022
|
+
resolvers = [];
|
|
1023
|
+
rootFieldsName = "__root_fields";
|
|
1024
|
+
_rootFields;
|
|
1025
|
+
get rootFields() {
|
|
1026
|
+
if (!this._rootFields) {
|
|
1027
|
+
this._rootFields = this.tree.getOrCreateFields(this.rootFieldsName);
|
|
1028
|
+
}
|
|
1029
|
+
return this._rootFields;
|
|
1030
|
+
}
|
|
1031
|
+
registerResolver(resolver) {
|
|
1032
|
+
this.resolvers.unshift(resolver);
|
|
1033
|
+
}
|
|
1034
|
+
clearResolvers() {
|
|
1035
|
+
this.resolvers.length = 0;
|
|
1036
|
+
}
|
|
1037
|
+
getValue(path) {
|
|
1038
|
+
return this.getField(path).value;
|
|
1039
|
+
}
|
|
1040
|
+
setValue(path, val) {
|
|
1041
|
+
const field = this.getField(path);
|
|
1042
|
+
field.value = val;
|
|
1043
|
+
return field.value;
|
|
1044
|
+
}
|
|
1045
|
+
createValue(path, val, options) {
|
|
1046
|
+
const dest = this.getDestinationFields(path);
|
|
1047
|
+
if (options?.fieldType) {
|
|
1048
|
+
return dest.fields.create(options.fieldType, dest.leafName, val, options).value;
|
|
1049
|
+
}
|
|
1050
|
+
for (let resolver of this.resolvers) {
|
|
1051
|
+
if (resolver.supports(val)) {
|
|
1052
|
+
return dest.fields.create(resolver.typeName, dest.leafName, val, options).value;
|
|
1053
|
+
}
|
|
1054
|
+
}
|
|
1055
|
+
return dest.fields.createGeneric(dest.leafName, val, options).value;
|
|
1056
|
+
}
|
|
1057
|
+
upsetValue(path, val, options) {
|
|
1058
|
+
const dest = this.getDestinationFields(path);
|
|
1059
|
+
if (options?.fieldType) {
|
|
1060
|
+
return dest.fields.upset(options.fieldType, dest.leafName, val, options).value;
|
|
1061
|
+
}
|
|
1062
|
+
for (let resolver of this.resolvers) {
|
|
1063
|
+
if (resolver.supports(val)) {
|
|
1064
|
+
return dest.fields.upset(resolver.typeName, dest.leafName, val, options).value;
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
return dest.fields.upsetGeneric(dest.leafName, val, options).value;
|
|
1068
|
+
}
|
|
1069
|
+
createBoolean(path, initialValue, options) {
|
|
1070
|
+
const dest = this.getDestinationFields(path);
|
|
1071
|
+
return dest.fields.createBoolean(dest.leafName, initialValue, options);
|
|
1072
|
+
}
|
|
1073
|
+
createNumeric(path, initialValue, options) {
|
|
1074
|
+
const dest = this.getDestinationFields(path);
|
|
1075
|
+
return dest.fields.createNumeric(dest.leafName, initialValue, options);
|
|
1076
|
+
}
|
|
1077
|
+
createString(path, initialValue, options) {
|
|
1078
|
+
const dest = this.getDestinationFields(path);
|
|
1079
|
+
return dest.fields.createString(dest.leafName, initialValue, options);
|
|
1080
|
+
}
|
|
1081
|
+
createGeneric(path, initialValue, options) {
|
|
1082
|
+
const dest = this.getDestinationFields(path);
|
|
1083
|
+
return dest.fields.createGeneric(dest.leafName, initialValue, options);
|
|
1084
|
+
}
|
|
1085
|
+
getBoolean(path) {
|
|
1086
|
+
return this.getField(path);
|
|
1087
|
+
}
|
|
1088
|
+
getNumeric(path) {
|
|
1089
|
+
return this.getField(path);
|
|
1090
|
+
}
|
|
1091
|
+
getString(path) {
|
|
1092
|
+
return this.getField(path);
|
|
1093
|
+
}
|
|
1094
|
+
getGeneric(path) {
|
|
1095
|
+
return this.getField(path);
|
|
1096
|
+
}
|
|
1097
|
+
getField(path) {
|
|
1098
|
+
const pathArr = ensurePathArray2(path);
|
|
1099
|
+
throwIfEmpty5(pathArr, `Wrong path or path is empty: ${ensurePathString2(path)}, should contain at least one path segment`);
|
|
1100
|
+
if (this.isPathToRootFields(pathArr)) {
|
|
1101
|
+
return this.rootFields.get(pathArr[0]);
|
|
1102
|
+
}
|
|
1103
|
+
const fieldName = pathArr.pop();
|
|
1104
|
+
const fields = this.tree.getFields(pathArr);
|
|
1105
|
+
return fields.get(fieldName);
|
|
1106
|
+
}
|
|
1107
|
+
createFields(path) {
|
|
1108
|
+
return this.tree.createFields(path, true);
|
|
1109
|
+
}
|
|
1110
|
+
createTree(path) {
|
|
1111
|
+
return this.tree.createFieldTree(path, true);
|
|
1112
|
+
}
|
|
1113
|
+
getFields(path) {
|
|
1114
|
+
return this.tree.getFields(path);
|
|
1115
|
+
}
|
|
1116
|
+
getTree(path) {
|
|
1117
|
+
return this.tree.getFieldTree(path);
|
|
1118
|
+
}
|
|
1119
|
+
remove(path) {
|
|
1120
|
+
const pathArr = ensurePathArray2(path);
|
|
1121
|
+
throwIfEmpty5(pathArr, `Wrong path or path is empty: ${ensurePathString2(path)}, should contain at least one path segment`);
|
|
1122
|
+
if (this.isPathToRootFields(pathArr)) {
|
|
1123
|
+
this.rootFields.remove(pathArr);
|
|
1124
|
+
return;
|
|
1125
|
+
}
|
|
1126
|
+
const node = this.tree.findParentNode(pathArr);
|
|
1127
|
+
const leafName = pathArr[pathArr.length - 1];
|
|
1128
|
+
if (node instanceof CoreFields) {
|
|
1129
|
+
node.remove(leafName);
|
|
1130
|
+
} else if (node instanceof CoreFieldTree) {
|
|
1131
|
+
node.removeNode(leafName);
|
|
1132
|
+
}
|
|
1133
|
+
}
|
|
1134
|
+
isPathToRootFields(path) {
|
|
1135
|
+
return ensurePathArray2(path).length === 1;
|
|
1136
|
+
}
|
|
1137
|
+
getDestinationFields(path) {
|
|
1138
|
+
const pathArr = ensurePathArray2(path);
|
|
1139
|
+
if (this.isPathToRootFields(pathArr)) {
|
|
1140
|
+
return { fields: this.rootFields, leafName: pathArr[0] };
|
|
1141
|
+
}
|
|
1142
|
+
const leafName = pathArr.pop();
|
|
1143
|
+
return { fields: this.tree.getOrCreateFields(path), leafName };
|
|
1144
|
+
}
|
|
1145
|
+
};
|
|
1146
|
+
|
|
1147
|
+
// src/setup.ts
|
|
1148
|
+
function createCoreFieldRegistry() {
|
|
1149
|
+
const fieldRegistry = new FieldRegistry();
|
|
1150
|
+
fieldRegistry.register(CoreField.typeName, CoreField);
|
|
1151
|
+
fieldRegistry.register(CoreNumericField.typeName, CoreNumericField);
|
|
1152
|
+
fieldRegistry.register(CoreStringField.typeName, CoreStringField);
|
|
1153
|
+
fieldRegistry.register(CoreBooleanField.typeName, CoreBooleanField);
|
|
1154
|
+
return fieldRegistry;
|
|
1155
|
+
}
|
|
1156
|
+
function createCorePolicySerializer() {
|
|
1157
|
+
const policySerializer = new PolicySerializer();
|
|
1158
|
+
policySerializer.register(ClampPolicy.id, new ClampPolicySerializerHandler());
|
|
1159
|
+
policySerializer.register(ClampMinPolicy.id, new ClampMinPolicySerializerHandler());
|
|
1160
|
+
policySerializer.register(ClampMaxPolicy.id, new ClampMaxPolicySerializerHandler());
|
|
1161
|
+
return policySerializer;
|
|
1162
|
+
}
|
|
1163
|
+
function createCoreTreeNodeFactory(fieldRegistry) {
|
|
1164
|
+
return new CoreTreeNodeFactory(fieldRegistry);
|
|
1165
|
+
}
|
|
1166
|
+
function createCoreTreeSerializer(fieldTreeNodeFactory, policySerializer) {
|
|
1167
|
+
return new FieldTreeSerializer(
|
|
1168
|
+
fieldTreeNodeFactory,
|
|
1169
|
+
new FieldsSerializer(
|
|
1170
|
+
fieldTreeNodeFactory,
|
|
1171
|
+
new FieldSerializer(fieldTreeNodeFactory.fieldRegistry, policySerializer ?? createCorePolicySerializer())
|
|
1172
|
+
)
|
|
1173
|
+
);
|
|
1174
|
+
}
|
|
1175
|
+
function createCoreFieldSystem(config) {
|
|
1176
|
+
const registry = config?.registry ?? createCoreFieldRegistry();
|
|
1177
|
+
const factory = createCoreTreeNodeFactory(registry);
|
|
1178
|
+
const serializer = createCoreTreeSerializer(factory, config?.policySerializer);
|
|
1179
|
+
return { factory, serializer };
|
|
1180
|
+
}
|
|
971
1181
|
export {
|
|
972
1182
|
ClampMaxPolicy,
|
|
973
1183
|
ClampMaxPolicySerializerHandler,
|
|
@@ -975,13 +1185,15 @@ export {
|
|
|
975
1185
|
ClampMinPolicySerializerHandler,
|
|
976
1186
|
ClampPolicy,
|
|
977
1187
|
ClampPolicySerializerHandler,
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
1188
|
+
CoreBooleanField,
|
|
1189
|
+
CoreField,
|
|
1190
|
+
CoreFieldTree,
|
|
1191
|
+
CoreFields,
|
|
1192
|
+
CoreFieldsFactory,
|
|
1193
|
+
CoreNumericField,
|
|
1194
|
+
CoreStringField,
|
|
1195
|
+
CoreTreeNodeFactory,
|
|
1196
|
+
DataStore,
|
|
985
1197
|
FieldRegistry,
|
|
986
1198
|
FieldSerializer,
|
|
987
1199
|
FieldTree,
|
|
@@ -993,5 +1205,10 @@ export {
|
|
|
993
1205
|
clampMaxPolicy,
|
|
994
1206
|
clampMinPolicy,
|
|
995
1207
|
clampPolicy,
|
|
1208
|
+
createCoreFieldRegistry,
|
|
1209
|
+
createCoreFieldSystem,
|
|
1210
|
+
createCorePolicySerializer,
|
|
1211
|
+
createCoreTreeNodeFactory,
|
|
1212
|
+
createCoreTreeSerializer,
|
|
996
1213
|
createTypedMethodsMixin
|
|
997
1214
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axi-engine/fields",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -28,7 +28,12 @@
|
|
|
28
28
|
"dist"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@axi-engine/utils": "^0.1.6",
|
|
32
31
|
"dequal": "^2.0.3"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@axi-engine/utils": "^0.1.6"
|
|
35
|
+
},
|
|
36
|
+
"peerDependencies": {
|
|
37
|
+
"@axi-engine/utils": "^0.1.6"
|
|
33
38
|
}
|
|
34
39
|
}
|