@axi-engine/fields 0.1.1 → 0.1.3
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 +1 -9
- package/dist/index.d.ts +1 -9
- package/dist/index.js +31 -227
- package/dist/index.mjs +16 -235
- package/package.json +6 -6
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ReadonlySignal, Signal } from '@preact/signals-core';
|
|
2
2
|
import EventEmitter3 from 'eventemitter3';
|
|
3
|
+
import { PathType } from '@axi-engine/utils';
|
|
3
4
|
|
|
4
5
|
declare const enum FieldsNodeType {
|
|
5
6
|
fieldTree = "FieldTree",
|
|
@@ -226,15 +227,6 @@ declare class Fields extends BaseFields<any> {
|
|
|
226
227
|
declare class TypedFields<T> extends BaseFields<T> {
|
|
227
228
|
}
|
|
228
229
|
|
|
229
|
-
/**
|
|
230
|
-
* Represents a path that can be provided as a single string
|
|
231
|
-
* or an array of segments.
|
|
232
|
-
* @example
|
|
233
|
-
* 'player/stats/health'
|
|
234
|
-
* ['player', 'stats', 'health']
|
|
235
|
-
*/
|
|
236
|
-
type PathType = string | string[];
|
|
237
|
-
|
|
238
230
|
/** A type alias for any container that can be a child node in a FieldTree */
|
|
239
231
|
type TreeOrFieldsContainer = FieldTree | Fields | TypedFields<any>;
|
|
240
232
|
/** Describes the payload for events emitted when a container is created or removed from a FieldTree. */
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ReadonlySignal, Signal } from '@preact/signals-core';
|
|
2
2
|
import EventEmitter3 from 'eventemitter3';
|
|
3
|
+
import { PathType } from '@axi-engine/utils';
|
|
3
4
|
|
|
4
5
|
declare const enum FieldsNodeType {
|
|
5
6
|
fieldTree = "FieldTree",
|
|
@@ -226,15 +227,6 @@ declare class Fields extends BaseFields<any> {
|
|
|
226
227
|
declare class TypedFields<T> extends BaseFields<T> {
|
|
227
228
|
}
|
|
228
229
|
|
|
229
|
-
/**
|
|
230
|
-
* Represents a path that can be provided as a single string
|
|
231
|
-
* or an array of segments.
|
|
232
|
-
* @example
|
|
233
|
-
* 'player/stats/health'
|
|
234
|
-
* ['player', 'stats', 'health']
|
|
235
|
-
*/
|
|
236
|
-
type PathType = string | string[];
|
|
237
|
-
|
|
238
230
|
/** A type alias for any container that can be a child node in a FieldTree */
|
|
239
231
|
type TreeOrFieldsContainer = FieldTree | Fields | TypedFields<any>;
|
|
240
232
|
/** Describes the payload for events emitted when a container is created or removed from a FieldTree. */
|
package/dist/index.js
CHANGED
|
@@ -5,9 +5,6 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __commonJS = (cb, mod) => function __require() {
|
|
9
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
10
|
-
};
|
|
11
8
|
var __export = (target, all) => {
|
|
12
9
|
for (var name in all)
|
|
13
10
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -30,168 +27,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
30
27
|
));
|
|
31
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
32
29
|
|
|
33
|
-
// ../../node_modules/eventemitter3/index.js
|
|
34
|
-
var require_eventemitter3 = __commonJS({
|
|
35
|
-
"../../node_modules/eventemitter3/index.js"(exports2, module2) {
|
|
36
|
-
"use strict";
|
|
37
|
-
var has = Object.prototype.hasOwnProperty;
|
|
38
|
-
var prefix = "~";
|
|
39
|
-
function Events() {
|
|
40
|
-
}
|
|
41
|
-
if (Object.create) {
|
|
42
|
-
Events.prototype = /* @__PURE__ */ Object.create(null);
|
|
43
|
-
if (!new Events().__proto__) prefix = false;
|
|
44
|
-
}
|
|
45
|
-
function EE(fn, context, once) {
|
|
46
|
-
this.fn = fn;
|
|
47
|
-
this.context = context;
|
|
48
|
-
this.once = once || false;
|
|
49
|
-
}
|
|
50
|
-
function addListener(emitter, event, fn, context, once) {
|
|
51
|
-
if (typeof fn !== "function") {
|
|
52
|
-
throw new TypeError("The listener must be a function");
|
|
53
|
-
}
|
|
54
|
-
var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event;
|
|
55
|
-
if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;
|
|
56
|
-
else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);
|
|
57
|
-
else emitter._events[evt] = [emitter._events[evt], listener];
|
|
58
|
-
return emitter;
|
|
59
|
-
}
|
|
60
|
-
function clearEvent(emitter, evt) {
|
|
61
|
-
if (--emitter._eventsCount === 0) emitter._events = new Events();
|
|
62
|
-
else delete emitter._events[evt];
|
|
63
|
-
}
|
|
64
|
-
function EventEmitter2() {
|
|
65
|
-
this._events = new Events();
|
|
66
|
-
this._eventsCount = 0;
|
|
67
|
-
}
|
|
68
|
-
EventEmitter2.prototype.eventNames = function eventNames() {
|
|
69
|
-
var names = [], events, name;
|
|
70
|
-
if (this._eventsCount === 0) return names;
|
|
71
|
-
for (name in events = this._events) {
|
|
72
|
-
if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);
|
|
73
|
-
}
|
|
74
|
-
if (Object.getOwnPropertySymbols) {
|
|
75
|
-
return names.concat(Object.getOwnPropertySymbols(events));
|
|
76
|
-
}
|
|
77
|
-
return names;
|
|
78
|
-
};
|
|
79
|
-
EventEmitter2.prototype.listeners = function listeners(event) {
|
|
80
|
-
var evt = prefix ? prefix + event : event, handlers = this._events[evt];
|
|
81
|
-
if (!handlers) return [];
|
|
82
|
-
if (handlers.fn) return [handlers.fn];
|
|
83
|
-
for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {
|
|
84
|
-
ee[i] = handlers[i].fn;
|
|
85
|
-
}
|
|
86
|
-
return ee;
|
|
87
|
-
};
|
|
88
|
-
EventEmitter2.prototype.listenerCount = function listenerCount(event) {
|
|
89
|
-
var evt = prefix ? prefix + event : event, listeners = this._events[evt];
|
|
90
|
-
if (!listeners) return 0;
|
|
91
|
-
if (listeners.fn) return 1;
|
|
92
|
-
return listeners.length;
|
|
93
|
-
};
|
|
94
|
-
EventEmitter2.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
|
|
95
|
-
var evt = prefix ? prefix + event : event;
|
|
96
|
-
if (!this._events[evt]) return false;
|
|
97
|
-
var listeners = this._events[evt], len = arguments.length, args, i;
|
|
98
|
-
if (listeners.fn) {
|
|
99
|
-
if (listeners.once) this.removeListener(event, listeners.fn, void 0, true);
|
|
100
|
-
switch (len) {
|
|
101
|
-
case 1:
|
|
102
|
-
return listeners.fn.call(listeners.context), true;
|
|
103
|
-
case 2:
|
|
104
|
-
return listeners.fn.call(listeners.context, a1), true;
|
|
105
|
-
case 3:
|
|
106
|
-
return listeners.fn.call(listeners.context, a1, a2), true;
|
|
107
|
-
case 4:
|
|
108
|
-
return listeners.fn.call(listeners.context, a1, a2, a3), true;
|
|
109
|
-
case 5:
|
|
110
|
-
return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
|
|
111
|
-
case 6:
|
|
112
|
-
return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
|
|
113
|
-
}
|
|
114
|
-
for (i = 1, args = new Array(len - 1); i < len; i++) {
|
|
115
|
-
args[i - 1] = arguments[i];
|
|
116
|
-
}
|
|
117
|
-
listeners.fn.apply(listeners.context, args);
|
|
118
|
-
} else {
|
|
119
|
-
var length = listeners.length, j;
|
|
120
|
-
for (i = 0; i < length; i++) {
|
|
121
|
-
if (listeners[i].once) this.removeListener(event, listeners[i].fn, void 0, true);
|
|
122
|
-
switch (len) {
|
|
123
|
-
case 1:
|
|
124
|
-
listeners[i].fn.call(listeners[i].context);
|
|
125
|
-
break;
|
|
126
|
-
case 2:
|
|
127
|
-
listeners[i].fn.call(listeners[i].context, a1);
|
|
128
|
-
break;
|
|
129
|
-
case 3:
|
|
130
|
-
listeners[i].fn.call(listeners[i].context, a1, a2);
|
|
131
|
-
break;
|
|
132
|
-
case 4:
|
|
133
|
-
listeners[i].fn.call(listeners[i].context, a1, a2, a3);
|
|
134
|
-
break;
|
|
135
|
-
default:
|
|
136
|
-
if (!args) for (j = 1, args = new Array(len - 1); j < len; j++) {
|
|
137
|
-
args[j - 1] = arguments[j];
|
|
138
|
-
}
|
|
139
|
-
listeners[i].fn.apply(listeners[i].context, args);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
return true;
|
|
144
|
-
};
|
|
145
|
-
EventEmitter2.prototype.on = function on(event, fn, context) {
|
|
146
|
-
return addListener(this, event, fn, context, false);
|
|
147
|
-
};
|
|
148
|
-
EventEmitter2.prototype.once = function once(event, fn, context) {
|
|
149
|
-
return addListener(this, event, fn, context, true);
|
|
150
|
-
};
|
|
151
|
-
EventEmitter2.prototype.removeListener = function removeListener(event, fn, context, once) {
|
|
152
|
-
var evt = prefix ? prefix + event : event;
|
|
153
|
-
if (!this._events[evt]) return this;
|
|
154
|
-
if (!fn) {
|
|
155
|
-
clearEvent(this, evt);
|
|
156
|
-
return this;
|
|
157
|
-
}
|
|
158
|
-
var listeners = this._events[evt];
|
|
159
|
-
if (listeners.fn) {
|
|
160
|
-
if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {
|
|
161
|
-
clearEvent(this, evt);
|
|
162
|
-
}
|
|
163
|
-
} else {
|
|
164
|
-
for (var i = 0, events = [], length = listeners.length; i < length; i++) {
|
|
165
|
-
if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {
|
|
166
|
-
events.push(listeners[i]);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;
|
|
170
|
-
else clearEvent(this, evt);
|
|
171
|
-
}
|
|
172
|
-
return this;
|
|
173
|
-
};
|
|
174
|
-
EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) {
|
|
175
|
-
var evt;
|
|
176
|
-
if (event) {
|
|
177
|
-
evt = prefix ? prefix + event : event;
|
|
178
|
-
if (this._events[evt]) clearEvent(this, evt);
|
|
179
|
-
} else {
|
|
180
|
-
this._events = new Events();
|
|
181
|
-
this._eventsCount = 0;
|
|
182
|
-
}
|
|
183
|
-
return this;
|
|
184
|
-
};
|
|
185
|
-
EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;
|
|
186
|
-
EventEmitter2.prototype.addListener = EventEmitter2.prototype.on;
|
|
187
|
-
EventEmitter2.prefixed = prefix;
|
|
188
|
-
EventEmitter2.EventEmitter = EventEmitter2;
|
|
189
|
-
if ("undefined" !== typeof module2) {
|
|
190
|
-
module2.exports = EventEmitter2;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
});
|
|
194
|
-
|
|
195
30
|
// src/index.ts
|
|
196
31
|
var index_exports = {};
|
|
197
32
|
__export(index_exports, {
|
|
@@ -372,39 +207,8 @@ var Field = class {
|
|
|
372
207
|
}
|
|
373
208
|
};
|
|
374
209
|
|
|
375
|
-
// ../utils/src/guards.ts
|
|
376
|
-
function isNullOrUndefined(val) {
|
|
377
|
-
return val === void 0 || val === null;
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
// ../utils/src/assertion.ts
|
|
381
|
-
function throwIf(conditionForThrow, exceptionMessage) {
|
|
382
|
-
if (conditionForThrow) {
|
|
383
|
-
throw new Error(exceptionMessage);
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
function throwIfEmpty(value, exceptionMessage) {
|
|
387
|
-
const isArrayAndEmpty = Array.isArray(value) && value.length === 0;
|
|
388
|
-
if (isNullOrUndefined(value) || isArrayAndEmpty) {
|
|
389
|
-
throw new Error(exceptionMessage);
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
// ../utils/src/config.ts
|
|
394
|
-
var defaultConfig = {
|
|
395
|
-
pathSeparator: "/"
|
|
396
|
-
};
|
|
397
|
-
var axiSettings = { ...defaultConfig };
|
|
398
|
-
|
|
399
|
-
// ../utils/src/path.ts
|
|
400
|
-
function ensurePathArray(path, separator = axiSettings.pathSeparator) {
|
|
401
|
-
return Array.isArray(path) ? [...path] : path.split(separator);
|
|
402
|
-
}
|
|
403
|
-
function ensurePathString(path, separator = axiSettings.pathSeparator) {
|
|
404
|
-
return !Array.isArray(path) ? path : path.join(separator);
|
|
405
|
-
}
|
|
406
|
-
|
|
407
210
|
// src/number-field.ts
|
|
211
|
+
var import_utils = require("@axi-engine/utils");
|
|
408
212
|
var NumberField = class extends Field {
|
|
409
213
|
get min() {
|
|
410
214
|
const policy = this.getPolicy(ClampPolicy.id) ?? this.getPolicy(ClampMinPolicy.id);
|
|
@@ -416,19 +220,19 @@ var NumberField = class extends Field {
|
|
|
416
220
|
}
|
|
417
221
|
get isMin() {
|
|
418
222
|
const min = this.min;
|
|
419
|
-
return isNullOrUndefined(min) ? false : this.val <= min;
|
|
223
|
+
return (0, import_utils.isNullOrUndefined)(min) ? false : this.val <= min;
|
|
420
224
|
}
|
|
421
225
|
get isMax() {
|
|
422
226
|
const max = this.max;
|
|
423
|
-
return isNullOrUndefined(max) ? false : this.val >= max;
|
|
227
|
+
return (0, import_utils.isNullOrUndefined)(max) ? false : this.val >= max;
|
|
424
228
|
}
|
|
425
229
|
constructor(name, initialVal, options) {
|
|
426
230
|
const policies = options?.policies ?? [];
|
|
427
|
-
if (!isNullOrUndefined(options?.min) && !isNullOrUndefined(options?.max)) {
|
|
231
|
+
if (!(0, import_utils.isNullOrUndefined)(options?.min) && !(0, import_utils.isNullOrUndefined)(options?.max)) {
|
|
428
232
|
policies.unshift(clampPolicy(options.min, options.max));
|
|
429
|
-
} else if (!isNullOrUndefined(options?.min)) {
|
|
233
|
+
} else if (!(0, import_utils.isNullOrUndefined)(options?.min)) {
|
|
430
234
|
policies.unshift(clampMinPolicy(options.min));
|
|
431
|
-
} else if (!isNullOrUndefined(options?.max)) {
|
|
235
|
+
} else if (!(0, import_utils.isNullOrUndefined)(options?.max)) {
|
|
432
236
|
policies.unshift(clampMaxPolicy(options.max));
|
|
433
237
|
}
|
|
434
238
|
super(name, initialVal, { policies });
|
|
@@ -444,17 +248,15 @@ var NumberField = class extends Field {
|
|
|
444
248
|
// src/base-fields.ts
|
|
445
249
|
var import_signals_core2 = require("@preact/signals-core");
|
|
446
250
|
|
|
447
|
-
//
|
|
448
|
-
var
|
|
449
|
-
var
|
|
450
|
-
|
|
451
|
-
// ../events/src/event-emitter.ts
|
|
452
|
-
var AxiEventEmitter = class extends eventemitter3_default {
|
|
251
|
+
// src/internals/event-emitter.ts
|
|
252
|
+
var import_eventemitter3 = __toESM(require("eventemitter3"));
|
|
253
|
+
var AxiEventEmitter = class extends import_eventemitter3.default {
|
|
453
254
|
// Currently, we don't need to add any custom logic.
|
|
454
255
|
// The main purpose of this class is to create an abstraction layer.
|
|
455
256
|
};
|
|
456
257
|
|
|
457
258
|
// src/base-fields.ts
|
|
259
|
+
var import_utils2 = require("@axi-engine/utils");
|
|
458
260
|
var BaseFields = class {
|
|
459
261
|
constructor() {
|
|
460
262
|
this._fields = (0, import_signals_core2.signal)(/* @__PURE__ */ new Map());
|
|
@@ -492,7 +294,7 @@ var BaseFields = class {
|
|
|
492
294
|
* @returns The added `Field` instance.
|
|
493
295
|
*/
|
|
494
296
|
add(field) {
|
|
495
|
-
throwIf(this.has(field.name), `Field with name '${field.name}' already exists`);
|
|
297
|
+
(0, import_utils2.throwIf)(this.has(field.name), `Field with name '${field.name}' already exists`);
|
|
496
298
|
const fieldsMap = new Map(this._fields.value);
|
|
497
299
|
fieldsMap.set(field.name, field);
|
|
498
300
|
this._fields.value = fieldsMap;
|
|
@@ -509,7 +311,7 @@ var BaseFields = class {
|
|
|
509
311
|
* @returns The `Field` instance.
|
|
510
312
|
*/
|
|
511
313
|
get(name) {
|
|
512
|
-
throwIf(!this._fields.value.has(name), `Field with name '${name}' not exists`);
|
|
314
|
+
(0, import_utils2.throwIf)(!this._fields.value.has(name), `Field with name '${name}' not exists`);
|
|
513
315
|
return this._fields.value.get(name);
|
|
514
316
|
}
|
|
515
317
|
/**
|
|
@@ -582,6 +384,7 @@ var BaseFields = class {
|
|
|
582
384
|
};
|
|
583
385
|
|
|
584
386
|
// src/fields.ts
|
|
387
|
+
var import_utils3 = require("@axi-engine/utils");
|
|
585
388
|
var Fields = class extends BaseFields {
|
|
586
389
|
createNumber(name, initialValue, options) {
|
|
587
390
|
return this.add(new NumberField(name, initialValue, options));
|
|
@@ -596,7 +399,7 @@ var Fields = class extends BaseFields {
|
|
|
596
399
|
}
|
|
597
400
|
getNumber(name) {
|
|
598
401
|
const field = this.get(name);
|
|
599
|
-
throwIf(!(field instanceof NumberField), `wrong field type, field ${name} not a instance of NUmberField`);
|
|
402
|
+
(0, import_utils3.throwIf)(!(field instanceof NumberField), `wrong field type, field ${name} not a instance of NUmberField`);
|
|
600
403
|
return field;
|
|
601
404
|
}
|
|
602
405
|
create(name, initialValue) {
|
|
@@ -611,7 +414,7 @@ var Fields = class extends BaseFields {
|
|
|
611
414
|
return this.create(name, value);
|
|
612
415
|
}
|
|
613
416
|
get(name) {
|
|
614
|
-
throwIf(!this._fields.value.has(name), `Field with name '${name}' not exists`);
|
|
417
|
+
(0, import_utils3.throwIf)(!this._fields.value.has(name), `Field with name '${name}' not exists`);
|
|
615
418
|
return this._fields.value.get(name);
|
|
616
419
|
}
|
|
617
420
|
};
|
|
@@ -622,6 +425,7 @@ var TypedFields = class extends BaseFields {
|
|
|
622
425
|
|
|
623
426
|
// src/field-tree.ts
|
|
624
427
|
var import_signals_core3 = require("@preact/signals-core");
|
|
428
|
+
var import_utils4 = require("@axi-engine/utils");
|
|
625
429
|
var FieldTree = class _FieldTree {
|
|
626
430
|
constructor() {
|
|
627
431
|
this.events = new AxiEventEmitter();
|
|
@@ -639,7 +443,7 @@ var FieldTree = class _FieldTree {
|
|
|
639
443
|
* @returns true if the entire path exists, false otherwise.
|
|
640
444
|
*/
|
|
641
445
|
hasPath(path) {
|
|
642
|
-
const pathParts = ensurePathArray(path);
|
|
446
|
+
const pathParts = (0, import_utils4.ensurePathArray)(path);
|
|
643
447
|
let currentNode = this;
|
|
644
448
|
for (let i = 0; i < pathParts.length; i++) {
|
|
645
449
|
const part = pathParts[i];
|
|
@@ -651,9 +455,9 @@ var FieldTree = class _FieldTree {
|
|
|
651
455
|
if (i === pathParts.length - 1) {
|
|
652
456
|
return true;
|
|
653
457
|
}
|
|
654
|
-
throwIf(
|
|
458
|
+
(0, import_utils4.throwIf)(
|
|
655
459
|
pathParts.length - i > 2,
|
|
656
|
-
`Path validation failed, full path: ${ensurePathString(path)}, has extra nodes after Fields placed at: ${ensurePathString(pathParts.slice(0, i + 1))}`
|
|
460
|
+
`Path validation failed, full path: ${(0, import_utils4.ensurePathString)(path)}, has extra nodes after Fields placed at: ${(0, import_utils4.ensurePathString)(pathParts.slice(0, i + 1))}`
|
|
657
461
|
);
|
|
658
462
|
return nextNode.has(pathParts[i + 1]);
|
|
659
463
|
}
|
|
@@ -669,7 +473,7 @@ var FieldTree = class _FieldTree {
|
|
|
669
473
|
*/
|
|
670
474
|
getFieldTree(name) {
|
|
671
475
|
const node = this.getNode(name);
|
|
672
|
-
throwIf(!(node instanceof _FieldTree), `Node '${name}' should be instance of FieldTree`);
|
|
476
|
+
(0, import_utils4.throwIf)(!(node instanceof _FieldTree), `Node '${name}' should be instance of FieldTree`);
|
|
673
477
|
return node;
|
|
674
478
|
}
|
|
675
479
|
/**
|
|
@@ -680,7 +484,7 @@ var FieldTree = class _FieldTree {
|
|
|
680
484
|
*/
|
|
681
485
|
getFields(name) {
|
|
682
486
|
const node = this.getNode(name);
|
|
683
|
-
throwIf(!(node instanceof Fields), `Node '${name}' should be instance of Fields`);
|
|
487
|
+
(0, import_utils4.throwIf)(!(node instanceof Fields), `Node '${name}' should be instance of Fields`);
|
|
684
488
|
return node;
|
|
685
489
|
}
|
|
686
490
|
/**
|
|
@@ -691,7 +495,7 @@ var FieldTree = class _FieldTree {
|
|
|
691
495
|
*/
|
|
692
496
|
getTypedFields(name) {
|
|
693
497
|
const node = this.getNode(name);
|
|
694
|
-
throwIf(!(node instanceof TypedFields), `Node '${name}' should be instance of TypedFields`);
|
|
498
|
+
(0, import_utils4.throwIf)(!(node instanceof TypedFields), `Node '${name}' should be instance of TypedFields`);
|
|
695
499
|
return node;
|
|
696
500
|
}
|
|
697
501
|
/**
|
|
@@ -702,7 +506,7 @@ var FieldTree = class _FieldTree {
|
|
|
702
506
|
*/
|
|
703
507
|
getNode(name) {
|
|
704
508
|
const node = this._items.value.get(name);
|
|
705
|
-
throwIfEmpty(node, `Can't find node with name '${name}'`);
|
|
509
|
+
(0, import_utils4.throwIfEmpty)(node, `Can't find node with name '${name}'`);
|
|
706
510
|
return node;
|
|
707
511
|
}
|
|
708
512
|
/**
|
|
@@ -736,8 +540,8 @@ var FieldTree = class _FieldTree {
|
|
|
736
540
|
* @throws If the path is empty, or any intermediate node is not a `FieldTree`.
|
|
737
541
|
*/
|
|
738
542
|
getFieldsByPath(path) {
|
|
739
|
-
const pathParts = ensurePathArray(path);
|
|
740
|
-
throwIf(!pathParts.length, "Empty path");
|
|
543
|
+
const pathParts = (0, import_utils4.ensurePathArray)(path);
|
|
544
|
+
(0, import_utils4.throwIf)(!pathParts.length, "Empty path");
|
|
741
545
|
let container = this;
|
|
742
546
|
for (let i = 0; i < pathParts.length - 1; i++) {
|
|
743
547
|
container = container.getFieldTree(pathParts[i]);
|
|
@@ -752,9 +556,9 @@ var FieldTree = class _FieldTree {
|
|
|
752
556
|
* @returns The newly created `Field` instance.
|
|
753
557
|
*/
|
|
754
558
|
create(path, initialValue) {
|
|
755
|
-
const fullPath = [...ensurePathArray(path)];
|
|
559
|
+
const fullPath = [...(0, import_utils4.ensurePathArray)(path)];
|
|
756
560
|
const fieldName = fullPath.pop();
|
|
757
|
-
throwIf(!fullPath.length, `Wrong path format of one field creating: '${ensurePathString(path)}', should be at least two sections`);
|
|
561
|
+
(0, import_utils4.throwIf)(!fullPath.length, `Wrong path format of one field creating: '${(0, import_utils4.ensurePathString)(path)}', should be at least two sections`);
|
|
758
562
|
return this.getFieldsByPath(fullPath).create(fieldName, initialValue);
|
|
759
563
|
}
|
|
760
564
|
/**
|
|
@@ -764,7 +568,7 @@ var FieldTree = class _FieldTree {
|
|
|
764
568
|
* @returns The newly created `NumberField` instance.
|
|
765
569
|
*/
|
|
766
570
|
createNumber(path, initialValue) {
|
|
767
|
-
const fullPath = [...ensurePathArray(path)];
|
|
571
|
+
const fullPath = [...(0, import_utils4.ensurePathArray)(path)];
|
|
768
572
|
const fieldName = fullPath.pop();
|
|
769
573
|
return this.getFieldsByPath(fullPath).createNumber(fieldName, initialValue);
|
|
770
574
|
}
|
|
@@ -774,7 +578,7 @@ var FieldTree = class _FieldTree {
|
|
|
774
578
|
* @returns The `Field` instance at the specified path.
|
|
775
579
|
*/
|
|
776
580
|
get(path) {
|
|
777
|
-
const fullPath = [...ensurePathArray(path)];
|
|
581
|
+
const fullPath = [...(0, import_utils4.ensurePathArray)(path)];
|
|
778
582
|
const fieldName = fullPath.pop();
|
|
779
583
|
return this.getFieldsByPath(fullPath).get(fieldName);
|
|
780
584
|
}
|
|
@@ -784,7 +588,7 @@ var FieldTree = class _FieldTree {
|
|
|
784
588
|
* @returns The `NumberField` instance at the specified path.
|
|
785
589
|
*/
|
|
786
590
|
getNumber(path) {
|
|
787
|
-
const fullPath = [...ensurePathArray(path)];
|
|
591
|
+
const fullPath = [...(0, import_utils4.ensurePathArray)(path)];
|
|
788
592
|
const fieldName = fullPath.pop();
|
|
789
593
|
return this.getFieldsByPath(fullPath).getNumber(fieldName);
|
|
790
594
|
}
|
|
@@ -833,7 +637,7 @@ var FieldTree = class _FieldTree {
|
|
|
833
637
|
*/
|
|
834
638
|
createNode(name, ctor) {
|
|
835
639
|
const currentItems = this._items.value;
|
|
836
|
-
throwIf(currentItems.has(name), `Can't create node with name: '${name}', node already exists`);
|
|
640
|
+
(0, import_utils4.throwIf)(currentItems.has(name), `Can't create node with name: '${name}', node already exists`);
|
|
837
641
|
const res = new ctor();
|
|
838
642
|
const newItems = new Map(currentItems);
|
|
839
643
|
newItems.set(name, res);
|
package/dist/index.mjs
CHANGED
|
@@ -1,191 +1,3 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __commonJS = (cb, mod) => function __require() {
|
|
8
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
19
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
20
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
21
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
22
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
23
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
24
|
-
mod
|
|
25
|
-
));
|
|
26
|
-
|
|
27
|
-
// ../../node_modules/eventemitter3/index.js
|
|
28
|
-
var require_eventemitter3 = __commonJS({
|
|
29
|
-
"../../node_modules/eventemitter3/index.js"(exports, module) {
|
|
30
|
-
"use strict";
|
|
31
|
-
var has = Object.prototype.hasOwnProperty;
|
|
32
|
-
var prefix = "~";
|
|
33
|
-
function Events() {
|
|
34
|
-
}
|
|
35
|
-
if (Object.create) {
|
|
36
|
-
Events.prototype = /* @__PURE__ */ Object.create(null);
|
|
37
|
-
if (!new Events().__proto__) prefix = false;
|
|
38
|
-
}
|
|
39
|
-
function EE(fn, context, once) {
|
|
40
|
-
this.fn = fn;
|
|
41
|
-
this.context = context;
|
|
42
|
-
this.once = once || false;
|
|
43
|
-
}
|
|
44
|
-
function addListener(emitter, event, fn, context, once) {
|
|
45
|
-
if (typeof fn !== "function") {
|
|
46
|
-
throw new TypeError("The listener must be a function");
|
|
47
|
-
}
|
|
48
|
-
var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event;
|
|
49
|
-
if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;
|
|
50
|
-
else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);
|
|
51
|
-
else emitter._events[evt] = [emitter._events[evt], listener];
|
|
52
|
-
return emitter;
|
|
53
|
-
}
|
|
54
|
-
function clearEvent(emitter, evt) {
|
|
55
|
-
if (--emitter._eventsCount === 0) emitter._events = new Events();
|
|
56
|
-
else delete emitter._events[evt];
|
|
57
|
-
}
|
|
58
|
-
function EventEmitter2() {
|
|
59
|
-
this._events = new Events();
|
|
60
|
-
this._eventsCount = 0;
|
|
61
|
-
}
|
|
62
|
-
EventEmitter2.prototype.eventNames = function eventNames() {
|
|
63
|
-
var names = [], events, name;
|
|
64
|
-
if (this._eventsCount === 0) return names;
|
|
65
|
-
for (name in events = this._events) {
|
|
66
|
-
if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);
|
|
67
|
-
}
|
|
68
|
-
if (Object.getOwnPropertySymbols) {
|
|
69
|
-
return names.concat(Object.getOwnPropertySymbols(events));
|
|
70
|
-
}
|
|
71
|
-
return names;
|
|
72
|
-
};
|
|
73
|
-
EventEmitter2.prototype.listeners = function listeners(event) {
|
|
74
|
-
var evt = prefix ? prefix + event : event, handlers = this._events[evt];
|
|
75
|
-
if (!handlers) return [];
|
|
76
|
-
if (handlers.fn) return [handlers.fn];
|
|
77
|
-
for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {
|
|
78
|
-
ee[i] = handlers[i].fn;
|
|
79
|
-
}
|
|
80
|
-
return ee;
|
|
81
|
-
};
|
|
82
|
-
EventEmitter2.prototype.listenerCount = function listenerCount(event) {
|
|
83
|
-
var evt = prefix ? prefix + event : event, listeners = this._events[evt];
|
|
84
|
-
if (!listeners) return 0;
|
|
85
|
-
if (listeners.fn) return 1;
|
|
86
|
-
return listeners.length;
|
|
87
|
-
};
|
|
88
|
-
EventEmitter2.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
|
|
89
|
-
var evt = prefix ? prefix + event : event;
|
|
90
|
-
if (!this._events[evt]) return false;
|
|
91
|
-
var listeners = this._events[evt], len = arguments.length, args, i;
|
|
92
|
-
if (listeners.fn) {
|
|
93
|
-
if (listeners.once) this.removeListener(event, listeners.fn, void 0, true);
|
|
94
|
-
switch (len) {
|
|
95
|
-
case 1:
|
|
96
|
-
return listeners.fn.call(listeners.context), true;
|
|
97
|
-
case 2:
|
|
98
|
-
return listeners.fn.call(listeners.context, a1), true;
|
|
99
|
-
case 3:
|
|
100
|
-
return listeners.fn.call(listeners.context, a1, a2), true;
|
|
101
|
-
case 4:
|
|
102
|
-
return listeners.fn.call(listeners.context, a1, a2, a3), true;
|
|
103
|
-
case 5:
|
|
104
|
-
return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
|
|
105
|
-
case 6:
|
|
106
|
-
return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
|
|
107
|
-
}
|
|
108
|
-
for (i = 1, args = new Array(len - 1); i < len; i++) {
|
|
109
|
-
args[i - 1] = arguments[i];
|
|
110
|
-
}
|
|
111
|
-
listeners.fn.apply(listeners.context, args);
|
|
112
|
-
} else {
|
|
113
|
-
var length = listeners.length, j;
|
|
114
|
-
for (i = 0; i < length; i++) {
|
|
115
|
-
if (listeners[i].once) this.removeListener(event, listeners[i].fn, void 0, true);
|
|
116
|
-
switch (len) {
|
|
117
|
-
case 1:
|
|
118
|
-
listeners[i].fn.call(listeners[i].context);
|
|
119
|
-
break;
|
|
120
|
-
case 2:
|
|
121
|
-
listeners[i].fn.call(listeners[i].context, a1);
|
|
122
|
-
break;
|
|
123
|
-
case 3:
|
|
124
|
-
listeners[i].fn.call(listeners[i].context, a1, a2);
|
|
125
|
-
break;
|
|
126
|
-
case 4:
|
|
127
|
-
listeners[i].fn.call(listeners[i].context, a1, a2, a3);
|
|
128
|
-
break;
|
|
129
|
-
default:
|
|
130
|
-
if (!args) for (j = 1, args = new Array(len - 1); j < len; j++) {
|
|
131
|
-
args[j - 1] = arguments[j];
|
|
132
|
-
}
|
|
133
|
-
listeners[i].fn.apply(listeners[i].context, args);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return true;
|
|
138
|
-
};
|
|
139
|
-
EventEmitter2.prototype.on = function on(event, fn, context) {
|
|
140
|
-
return addListener(this, event, fn, context, false);
|
|
141
|
-
};
|
|
142
|
-
EventEmitter2.prototype.once = function once(event, fn, context) {
|
|
143
|
-
return addListener(this, event, fn, context, true);
|
|
144
|
-
};
|
|
145
|
-
EventEmitter2.prototype.removeListener = function removeListener(event, fn, context, once) {
|
|
146
|
-
var evt = prefix ? prefix + event : event;
|
|
147
|
-
if (!this._events[evt]) return this;
|
|
148
|
-
if (!fn) {
|
|
149
|
-
clearEvent(this, evt);
|
|
150
|
-
return this;
|
|
151
|
-
}
|
|
152
|
-
var listeners = this._events[evt];
|
|
153
|
-
if (listeners.fn) {
|
|
154
|
-
if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {
|
|
155
|
-
clearEvent(this, evt);
|
|
156
|
-
}
|
|
157
|
-
} else {
|
|
158
|
-
for (var i = 0, events = [], length = listeners.length; i < length; i++) {
|
|
159
|
-
if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {
|
|
160
|
-
events.push(listeners[i]);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;
|
|
164
|
-
else clearEvent(this, evt);
|
|
165
|
-
}
|
|
166
|
-
return this;
|
|
167
|
-
};
|
|
168
|
-
EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) {
|
|
169
|
-
var evt;
|
|
170
|
-
if (event) {
|
|
171
|
-
evt = prefix ? prefix + event : event;
|
|
172
|
-
if (this._events[evt]) clearEvent(this, evt);
|
|
173
|
-
} else {
|
|
174
|
-
this._events = new Events();
|
|
175
|
-
this._eventsCount = 0;
|
|
176
|
-
}
|
|
177
|
-
return this;
|
|
178
|
-
};
|
|
179
|
-
EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;
|
|
180
|
-
EventEmitter2.prototype.addListener = EventEmitter2.prototype.on;
|
|
181
|
-
EventEmitter2.prefixed = prefix;
|
|
182
|
-
EventEmitter2.EventEmitter = EventEmitter2;
|
|
183
|
-
if ("undefined" !== typeof module) {
|
|
184
|
-
module.exports = EventEmitter2;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
});
|
|
188
|
-
|
|
189
1
|
// src/fields-types.ts
|
|
190
2
|
var FieldsNodeType = /* @__PURE__ */ ((FieldsNodeType2) => {
|
|
191
3
|
FieldsNodeType2["fieldTree"] = "FieldTree";
|
|
@@ -347,39 +159,8 @@ var Field = class {
|
|
|
347
159
|
}
|
|
348
160
|
};
|
|
349
161
|
|
|
350
|
-
// ../utils/src/guards.ts
|
|
351
|
-
function isNullOrUndefined(val) {
|
|
352
|
-
return val === void 0 || val === null;
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
// ../utils/src/assertion.ts
|
|
356
|
-
function throwIf(conditionForThrow, exceptionMessage) {
|
|
357
|
-
if (conditionForThrow) {
|
|
358
|
-
throw new Error(exceptionMessage);
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
function throwIfEmpty(value, exceptionMessage) {
|
|
362
|
-
const isArrayAndEmpty = Array.isArray(value) && value.length === 0;
|
|
363
|
-
if (isNullOrUndefined(value) || isArrayAndEmpty) {
|
|
364
|
-
throw new Error(exceptionMessage);
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
// ../utils/src/config.ts
|
|
369
|
-
var defaultConfig = {
|
|
370
|
-
pathSeparator: "/"
|
|
371
|
-
};
|
|
372
|
-
var axiSettings = { ...defaultConfig };
|
|
373
|
-
|
|
374
|
-
// ../utils/src/path.ts
|
|
375
|
-
function ensurePathArray(path, separator = axiSettings.pathSeparator) {
|
|
376
|
-
return Array.isArray(path) ? [...path] : path.split(separator);
|
|
377
|
-
}
|
|
378
|
-
function ensurePathString(path, separator = axiSettings.pathSeparator) {
|
|
379
|
-
return !Array.isArray(path) ? path : path.join(separator);
|
|
380
|
-
}
|
|
381
|
-
|
|
382
162
|
// src/number-field.ts
|
|
163
|
+
import { isNullOrUndefined } from "@axi-engine/utils";
|
|
383
164
|
var NumberField = class extends Field {
|
|
384
165
|
get min() {
|
|
385
166
|
const policy = this.getPolicy(ClampPolicy.id) ?? this.getPolicy(ClampMinPolicy.id);
|
|
@@ -419,17 +200,15 @@ var NumberField = class extends Field {
|
|
|
419
200
|
// src/base-fields.ts
|
|
420
201
|
import { signal as signal2 } from "@preact/signals-core";
|
|
421
202
|
|
|
422
|
-
//
|
|
423
|
-
|
|
424
|
-
var
|
|
425
|
-
|
|
426
|
-
// ../events/src/event-emitter.ts
|
|
427
|
-
var AxiEventEmitter = class extends eventemitter3_default {
|
|
203
|
+
// src/internals/event-emitter.ts
|
|
204
|
+
import EventEmitter3 from "eventemitter3";
|
|
205
|
+
var AxiEventEmitter = class extends EventEmitter3 {
|
|
428
206
|
// Currently, we don't need to add any custom logic.
|
|
429
207
|
// The main purpose of this class is to create an abstraction layer.
|
|
430
208
|
};
|
|
431
209
|
|
|
432
210
|
// src/base-fields.ts
|
|
211
|
+
import { throwIf } from "@axi-engine/utils";
|
|
433
212
|
var BaseFields = class {
|
|
434
213
|
constructor() {
|
|
435
214
|
this._fields = signal2(/* @__PURE__ */ new Map());
|
|
@@ -557,6 +336,7 @@ var BaseFields = class {
|
|
|
557
336
|
};
|
|
558
337
|
|
|
559
338
|
// src/fields.ts
|
|
339
|
+
import { throwIf as throwIf2 } from "@axi-engine/utils";
|
|
560
340
|
var Fields = class extends BaseFields {
|
|
561
341
|
createNumber(name, initialValue, options) {
|
|
562
342
|
return this.add(new NumberField(name, initialValue, options));
|
|
@@ -571,7 +351,7 @@ var Fields = class extends BaseFields {
|
|
|
571
351
|
}
|
|
572
352
|
getNumber(name) {
|
|
573
353
|
const field = this.get(name);
|
|
574
|
-
|
|
354
|
+
throwIf2(!(field instanceof NumberField), `wrong field type, field ${name} not a instance of NUmberField`);
|
|
575
355
|
return field;
|
|
576
356
|
}
|
|
577
357
|
create(name, initialValue) {
|
|
@@ -586,7 +366,7 @@ var Fields = class extends BaseFields {
|
|
|
586
366
|
return this.create(name, value);
|
|
587
367
|
}
|
|
588
368
|
get(name) {
|
|
589
|
-
|
|
369
|
+
throwIf2(!this._fields.value.has(name), `Field with name '${name}' not exists`);
|
|
590
370
|
return this._fields.value.get(name);
|
|
591
371
|
}
|
|
592
372
|
};
|
|
@@ -597,6 +377,7 @@ var TypedFields = class extends BaseFields {
|
|
|
597
377
|
|
|
598
378
|
// src/field-tree.ts
|
|
599
379
|
import { signal as signal3 } from "@preact/signals-core";
|
|
380
|
+
import { ensurePathArray, ensurePathString, throwIf as throwIf3, throwIfEmpty } from "@axi-engine/utils";
|
|
600
381
|
var FieldTree = class _FieldTree {
|
|
601
382
|
constructor() {
|
|
602
383
|
this.events = new AxiEventEmitter();
|
|
@@ -626,7 +407,7 @@ var FieldTree = class _FieldTree {
|
|
|
626
407
|
if (i === pathParts.length - 1) {
|
|
627
408
|
return true;
|
|
628
409
|
}
|
|
629
|
-
|
|
410
|
+
throwIf3(
|
|
630
411
|
pathParts.length - i > 2,
|
|
631
412
|
`Path validation failed, full path: ${ensurePathString(path)}, has extra nodes after Fields placed at: ${ensurePathString(pathParts.slice(0, i + 1))}`
|
|
632
413
|
);
|
|
@@ -644,7 +425,7 @@ var FieldTree = class _FieldTree {
|
|
|
644
425
|
*/
|
|
645
426
|
getFieldTree(name) {
|
|
646
427
|
const node = this.getNode(name);
|
|
647
|
-
|
|
428
|
+
throwIf3(!(node instanceof _FieldTree), `Node '${name}' should be instance of FieldTree`);
|
|
648
429
|
return node;
|
|
649
430
|
}
|
|
650
431
|
/**
|
|
@@ -655,7 +436,7 @@ var FieldTree = class _FieldTree {
|
|
|
655
436
|
*/
|
|
656
437
|
getFields(name) {
|
|
657
438
|
const node = this.getNode(name);
|
|
658
|
-
|
|
439
|
+
throwIf3(!(node instanceof Fields), `Node '${name}' should be instance of Fields`);
|
|
659
440
|
return node;
|
|
660
441
|
}
|
|
661
442
|
/**
|
|
@@ -666,7 +447,7 @@ var FieldTree = class _FieldTree {
|
|
|
666
447
|
*/
|
|
667
448
|
getTypedFields(name) {
|
|
668
449
|
const node = this.getNode(name);
|
|
669
|
-
|
|
450
|
+
throwIf3(!(node instanceof TypedFields), `Node '${name}' should be instance of TypedFields`);
|
|
670
451
|
return node;
|
|
671
452
|
}
|
|
672
453
|
/**
|
|
@@ -712,7 +493,7 @@ var FieldTree = class _FieldTree {
|
|
|
712
493
|
*/
|
|
713
494
|
getFieldsByPath(path) {
|
|
714
495
|
const pathParts = ensurePathArray(path);
|
|
715
|
-
|
|
496
|
+
throwIf3(!pathParts.length, "Empty path");
|
|
716
497
|
let container = this;
|
|
717
498
|
for (let i = 0; i < pathParts.length - 1; i++) {
|
|
718
499
|
container = container.getFieldTree(pathParts[i]);
|
|
@@ -729,7 +510,7 @@ var FieldTree = class _FieldTree {
|
|
|
729
510
|
create(path, initialValue) {
|
|
730
511
|
const fullPath = [...ensurePathArray(path)];
|
|
731
512
|
const fieldName = fullPath.pop();
|
|
732
|
-
|
|
513
|
+
throwIf3(!fullPath.length, `Wrong path format of one field creating: '${ensurePathString(path)}', should be at least two sections`);
|
|
733
514
|
return this.getFieldsByPath(fullPath).create(fieldName, initialValue);
|
|
734
515
|
}
|
|
735
516
|
/**
|
|
@@ -808,7 +589,7 @@ var FieldTree = class _FieldTree {
|
|
|
808
589
|
*/
|
|
809
590
|
createNode(name, ctor) {
|
|
810
591
|
const currentItems = this._items.value;
|
|
811
|
-
|
|
592
|
+
throwIf3(currentItems.has(name), `Can't create node with name: '${name}', node already exists`);
|
|
812
593
|
const res = new ctor();
|
|
813
594
|
const newItems = new Map(currentItems);
|
|
814
595
|
newItems.set(name, res);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axi-engine/fields",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
22
|
"scripts": {
|
|
23
|
-
"build": "tsup
|
|
23
|
+
"build": "tsup",
|
|
24
24
|
"docs": "typedoc src/index.ts --out docs/api --options ../../typedoc.json",
|
|
25
25
|
"test": "echo 'No tests yet for @axi-engine/fields'"
|
|
26
26
|
},
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
"dist"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@
|
|
31
|
+
"@axi-engine/utils": "*",
|
|
32
|
+
"eventemitter3": "^5.0.1"
|
|
32
33
|
},
|
|
33
|
-
"
|
|
34
|
-
"@
|
|
35
|
-
"@axi-engine/utils": "*"
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"@preact/signals-core": "^1.12.1"
|
|
36
36
|
}
|
|
37
37
|
}
|