@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 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
- // ../../node_modules/eventemitter3/index.mjs
448
- var import_index = __toESM(require_eventemitter3(), 1);
449
- var eventemitter3_default = import_index.default;
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
- // ../../node_modules/eventemitter3/index.mjs
423
- var import_index = __toESM(require_eventemitter3(), 1);
424
- var eventemitter3_default = import_index.default;
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
- throwIf(!(field instanceof NumberField), `wrong field type, field ${name} not a instance of NUmberField`);
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
- throwIf(!this._fields.value.has(name), `Field with name '${name}' not exists`);
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
- throwIf(
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
- throwIf(!(node instanceof _FieldTree), `Node '${name}' should be instance of FieldTree`);
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
- throwIf(!(node instanceof Fields), `Node '${name}' should be instance of Fields`);
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
- throwIf(!(node instanceof TypedFields), `Node '${name}' should be instance of TypedFields`);
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
- throwIf(!pathParts.length, "Empty path");
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
- throwIf(!fullPath.length, `Wrong path format of one field creating: '${ensurePathString(path)}', should be at least two sections`);
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
- throwIf(currentItems.has(name), `Can't create node with name: '${name}', node already exists`);
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.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 src/index.ts --format cjs,esm --dts --clean",
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
- "@preact/signals-core": "^1.12.1"
31
+ "@axi-engine/utils": "*",
32
+ "eventemitter3": "^5.0.1"
32
33
  },
33
- "devDependencies": {
34
- "@axi-engine/events": "*",
35
- "@axi-engine/utils": "*"
34
+ "peerDependencies": {
35
+ "@preact/signals-core": "^1.12.1"
36
36
  }
37
37
  }