@oscarpalmer/atoms 0.203.0 → 0.204.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/array/filter.mjs +0 -1
  2. package/dist/array/find.mjs +0 -1
  3. package/dist/array/first.mjs +0 -1
  4. package/dist/array/group-by.mjs +0 -1
  5. package/dist/array/last.mjs +0 -1
  6. package/dist/array/move.mjs +0 -4
  7. package/dist/array/select.mjs +0 -1
  8. package/dist/array/sort.mjs +6 -15
  9. package/dist/array/swap.mjs +0 -1
  10. package/dist/array/to-map.mjs +0 -1
  11. package/dist/array/to-record.mjs +0 -1
  12. package/dist/beacon.mjs +36 -36
  13. package/dist/color/instance.mjs +42 -84
  14. package/dist/color/misc/alpha.d.mts +3 -1
  15. package/dist/color/misc/alpha.mjs +8 -2
  16. package/dist/color/misc/is.mjs +5 -4
  17. package/dist/color/misc/state.d.mts +29 -4
  18. package/dist/color/misc/state.mjs +18 -40
  19. package/dist/color/space/hex.d.mts +5 -1
  20. package/dist/color/space/hex.mjs +21 -2
  21. package/dist/color/space/hsl.d.mts +6 -2
  22. package/dist/color/space/hsl.mjs +25 -4
  23. package/dist/color/space/hwb.d.mts +6 -2
  24. package/dist/color/space/hwb.mjs +24 -3
  25. package/dist/color/space/rgb.d.mts +6 -2
  26. package/dist/color/space/rgb.mjs +41 -20
  27. package/dist/function/limit.mjs +0 -2
  28. package/dist/function/once.mjs +30 -36
  29. package/dist/function/retry.mjs +0 -1
  30. package/dist/index.d.mts +5 -5
  31. package/dist/index.mjs +488 -547
  32. package/dist/internal/{abort.d.mts → aborter.d.mts} +1 -1
  33. package/dist/internal/{abort.mjs → aborter.mjs} +1 -1
  34. package/dist/internal/array/get.mjs +3 -2
  35. package/dist/internal/array/index-of.mjs +0 -1
  36. package/dist/internal/function/assert.d.mts +1 -1
  37. package/dist/internal/function/assert.mjs +0 -7
  38. package/dist/internal/function/limit.mjs +10 -14
  39. package/dist/internal/function/memoize.mjs +22 -20
  40. package/dist/internal/function/work.mjs +0 -2
  41. package/dist/internal/herald.mjs +14 -15
  42. package/dist/internal/result/misc.mjs +2 -5
  43. package/dist/internal/subscription.mjs +24 -22
  44. package/dist/internal/value/compare.d.mts +1 -1
  45. package/dist/internal/value/compare.mjs +0 -5
  46. package/dist/internal/value/equal.d.mts +1 -1
  47. package/dist/internal/value/equal.mjs +4 -12
  48. package/dist/internal/value/handlers.d.mts +1 -1
  49. package/dist/internal/value/handlers.mjs +5 -7
  50. package/dist/internal/value/has.mjs +0 -1
  51. package/dist/internal/value/misc.d.mts +1 -1
  52. package/dist/internal/value/misc.mjs +4 -3
  53. package/dist/internal/value/partial.mjs +2 -1
  54. package/dist/internal/value/set.mjs +2 -1
  55. package/dist/logger.mjs +46 -45
  56. package/dist/promise/delay.mjs +1 -1
  57. package/dist/promise/helpers.mjs +4 -3
  58. package/dist/promise/index.mjs +1 -2
  59. package/dist/promise/misc.d.mts +1 -1
  60. package/dist/promise/models.d.mts +1 -1
  61. package/dist/promise/timed.mjs +1 -1
  62. package/dist/queue.mjs +86 -80
  63. package/dist/result/index.mjs +0 -1
  64. package/dist/result/match.mjs +0 -1
  65. package/dist/result/work/flow.mjs +0 -1
  66. package/dist/result/work/pipe.mjs +0 -1
  67. package/dist/string/fuzzy.mjs +18 -21
  68. package/dist/string/normalize.mjs +2 -3
  69. package/dist/string/template.mjs +2 -3
  70. package/dist/value/clone.d.mts +1 -1
  71. package/dist/value/clone.mjs +4 -12
  72. package/dist/value/freeze.mjs +0 -4
  73. package/dist/value/merge.mjs +5 -7
  74. package/dist/value/transform.mjs +1 -2
  75. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  import { GenericCallback } from "../models.mjs";
2
- //#region src/internal/abort.d.ts
2
+ //#region src/internal/aborter.d.ts
3
3
  export type Aborter = {
4
4
  callback: GenericCallback;
5
5
  signal: AbortSignal;
@@ -1,4 +1,4 @@
1
- //#region src/internal/abort.ts
1
+ //#region src/internal/aborter.ts
2
2
  function createAborter(value, onAbort) {
3
3
  if (!(value instanceof AbortSignal)) return;
4
4
  value.addEventListener(ABORT_EVENT, onAbort, ABORT_OPTIONS);
@@ -6,13 +6,14 @@ function getArray(value, indiced) {
6
6
  if (value instanceof Set) return [...value.values()];
7
7
  if (isNonPlainObject(value)) return [value];
8
8
  if (indiced !== true) return Object.entries(value);
9
- const keys = Object.keys(value);
9
+ const obj = value;
10
+ const keys = Object.keys(obj);
10
11
  const { length } = keys;
11
12
  const array = [];
12
13
  for (let index = 0; index < length; index += 1) {
13
14
  const key = keys[index];
14
15
  const asNumber = Number.parseInt(key, 10);
15
- if (!Number.isNaN(asNumber)) array[asNumber] = value[key];
16
+ if (!Number.isNaN(asNumber)) array[asNumber] = obj[key];
16
17
  }
17
18
  return array;
18
19
  }
@@ -7,6 +7,5 @@ function lastIndexOf(array, ...parameters) {
7
7
  return findValue(FIND_VALUE_INDEX, array, parameters, true);
8
8
  }
9
9
  indexOf.last = lastIndexOf;
10
- Object.defineProperty(indexOf, "last", { value: lastIndexOf });
11
10
  //#endregion
12
11
  export { indexOf, lastIndexOf };
@@ -78,5 +78,5 @@ export declare function assertIs<Value>(condition: (value: unknown) => value is
78
78
  * @param error Error constructor _(defaults to `Error`)_
79
79
  * @returns _Asserter_
80
80
  */
81
- export declare function assertProperty<Value extends PlainObject, Path extends NestedKeys<Value>, Asserted = NestedPick<Value, Path>>(path: Path, condition: (value: NestedValue<Value, Path>) => boolean, message: string, error?: ErrorConstructor): Asserter<Asserted>;
81
+ export declare function assertProperty<Value extends PlainObject, Path extends NestedKeys<Value>>(path: Path, condition: (value: NestedValue<Value, Path>) => boolean, message: string, error?: ErrorConstructor): Asserter<NestedPick<Value, Path>>;
82
82
  //#endregion
@@ -92,12 +92,5 @@ assert.defined = assertDefined;
92
92
  assert.instanceOf = assertInstanceOf;
93
93
  assert.is = assertIs;
94
94
  assert.property = assertProperty;
95
- Object.defineProperties(assert, {
96
- condition: { value: assertCondition },
97
- defined: { value: assertDefined },
98
- instanceOf: { value: assertInstanceOf },
99
- is: { value: assertIs },
100
- property: { value: assertProperty }
101
- });
102
95
  //#endregion
103
96
  export { assert, assertCondition, assertDefined, assertInstanceOf, assertIs, assertProperty };
@@ -4,33 +4,29 @@ const LIMITER_NAME_ASYNC = "asyncLimiter";
4
4
  const LIMITER_NAME_SYNC = "limiter";
5
5
  const LIMITER_PROPERTY = "$limiter";
6
6
  function AsyncLimiter(type, callback, time) {
7
- Object.defineProperty(this, LIMITER_SYMBOL, { value: {
7
+ this[LIMITER_SYMBOL] = {
8
8
  callback,
9
9
  type,
10
10
  interval: getNumberOrDefault(time, 0),
11
11
  parameters: [],
12
12
  throttle: type === LIMITER_THROTTLE
13
- } });
13
+ };
14
14
  }
15
- Object.defineProperties(AsyncLimiter.prototype, {
16
- [LIMITER_PROPERTY]: { value: LIMITER_NAME_ASYNC },
17
- cancel: { value: cancelAsyncLimiter },
18
- run: { value: runAsyncLimiter }
19
- });
15
+ AsyncLimiter.prototype[LIMITER_PROPERTY] = LIMITER_NAME_ASYNC;
16
+ AsyncLimiter.prototype.cancel = cancelAsyncLimiter;
17
+ AsyncLimiter.prototype.run = runAsyncLimiter;
20
18
  function Limiter(type, callback, time) {
21
- Object.defineProperty(this, LIMITER_SYMBOL, { value: {
19
+ this[LIMITER_SYMBOL] = {
22
20
  callback,
23
21
  type,
24
22
  interval: getNumberOrDefault(time, 0),
25
23
  parameters: [],
26
24
  throttle: type === LIMITER_THROTTLE
27
- } });
25
+ };
28
26
  }
29
- Object.defineProperties(Limiter.prototype, {
30
- [LIMITER_PROPERTY]: { value: LIMITER_NAME_SYNC },
31
- cancel: { value: cancelLimiter },
32
- run: { value: runLimiter }
33
- });
27
+ Limiter.prototype[LIMITER_PROPERTY] = LIMITER_NAME_SYNC;
28
+ Limiter.prototype.cancel = cancelLimiter;
29
+ Limiter.prototype.run = runLimiter;
34
30
  function cancelAsyncLimiter() {
35
31
  const state = this[LIMITER_SYMBOL];
36
32
  if (state.timer != null) clearTimer(state.timer);
@@ -3,32 +3,28 @@ import { getString, join } from "../string/misc.mjs";
3
3
  import { getNumberOrDefault } from "../defaults.mjs";
4
4
  import { SizedMap } from "../sized/map.mjs";
5
5
  //#region src/internal/function/memoize.ts
6
- const MEMOIZED_PROPERTY = "$memoized";
7
6
  function Memoized(callback, options) {
8
- Object.defineProperty(this, MEMOIZED_SYMBOL, { value: {
7
+ this[MEMOIZED_SYMBOL] = {
9
8
  options,
10
9
  cache: new SizedMap(options.cacheSize),
11
10
  getter: void 0
12
- } });
11
+ };
13
12
  this[MEMOIZED_SYMBOL].getter = createGetter(this[MEMOIZED_SYMBOL], callback);
14
- Object.defineProperties(this, {
15
- maximum: {
16
- enumerable: true,
17
- get: () => this[MEMOIZED_SYMBOL].cache.maximum
18
- },
19
- size: {
20
- enumerable: true,
21
- get: () => this[MEMOIZED_SYMBOL].cache.size
22
- }
23
- });
24
13
  }
14
+ Memoized.prototype.clear = clearMemoized;
15
+ Memoized.prototype.delete = deleteMemoizedValue;
16
+ Memoized.prototype.get = getMemoizedValue;
17
+ Memoized.prototype.has = hasMemoizedValue;
18
+ Memoized.prototype.run = runMemoized;
25
19
  Object.defineProperties(Memoized.prototype, {
26
- [MEMOIZED_PROPERTY]: { value: true },
27
- clear: { value: clearMemoized },
28
- delete: { value: deleteMemoizedValue },
29
- get: { value: getMemoizedValue },
30
- has: { value: hasMemoizedValue },
31
- run: { value: runMemoized }
20
+ maximum: {
21
+ enumerable: true,
22
+ get: getMemoizedMaximum
23
+ },
24
+ size: {
25
+ enumerable: true,
26
+ get: getMemoizedSize
27
+ }
32
28
  });
33
29
  function clearMemoized() {
34
30
  this[MEMOIZED_SYMBOL].cache.clear();
@@ -52,6 +48,12 @@ function createMemoizationOptions(input) {
52
48
  cacheSize: getNumberOrDefault(cacheSize, MEMOIZED_CACHE_SIZE_DEFAULT)
53
49
  };
54
50
  }
51
+ function getMemoizedMaximum() {
52
+ return this[MEMOIZED_SYMBOL].cache.maximum;
53
+ }
54
+ function getMemoizedSize() {
55
+ return this[MEMOIZED_SYMBOL].cache.size;
56
+ }
55
57
  function getMemoizedValue(key) {
56
58
  return this[MEMOIZED_SYMBOL].cache.get(key);
57
59
  }
@@ -75,6 +77,6 @@ function runMemoized(...parameters) {
75
77
  const MEMOIZED_CACHE_SIZE_DEFAULT = 1024;
76
78
  const MEMOIZED_CALLBACK = "Memoized requires a callback function";
77
79
  const MEMOIZED_KEY_SEPARATOR = "_";
78
- const MEMOIZED_SYMBOL = Symbol(MEMOIZED_PROPERTY);
80
+ const MEMOIZED_SYMBOL = Symbol("memoized");
79
81
  //#endregion
80
82
  export { memoize };
@@ -59,7 +59,5 @@ const assertFlowFunctions = assert.condition((value) => Array.isArray(value) &&
59
59
  const assertPipeFunctions = assert.condition((value) => Array.isArray(value) && value.every((item) => typeof item === "function"), WORK_MESSAGE_PIPE_ARRAY, TypeError);
60
60
  flow.async = asyncFlow;
61
61
  pipe.async = asyncPipe;
62
- Object.defineProperty(flow, "async", { value: asyncFlow });
63
- Object.defineProperty(pipe, "async", { value: asyncPipe });
64
62
  //#endregion
65
63
  export { asyncFlow, asyncPipe, flow, pipe };
@@ -9,23 +9,19 @@ function Events(herald, state) {
9
9
  }
10
10
  Events.prototype[HERALD_PROPERTY] = HERALD_NAME_EVENTS;
11
11
  function Herald(state) {
12
- Object.defineProperty(this, HERALD_SYMBOL, { value: {
12
+ this[HERALD_SYMBOL] = {
13
13
  state,
14
14
  events: new Events(this, state)
15
- } });
15
+ };
16
16
  }
17
- Object.defineProperties(Herald.prototype, {
18
- [HERALD_PROPERTY]: { value: HERALD_NAME_HERALD },
19
- clear: { value: clearHerald },
20
- emit: { value: emitForHerald },
21
- events: {
22
- enumerable: true,
23
- get() {
24
- return this[HERALD_SYMBOL].events;
25
- }
26
- },
27
- observed: { value: eventIsObserved },
28
- subscribe: { value: subscribeToHerald }
17
+ Herald.prototype[HERALD_PROPERTY] = HERALD_NAME_HERALD;
18
+ Herald.prototype.clear = clearHerald;
19
+ Herald.prototype.emit = emitForHerald;
20
+ Herald.prototype.observed = eventIsObserved;
21
+ Herald.prototype.subscribe = subscribeToHerald;
22
+ Object.defineProperty(Herald.prototype, "events", {
23
+ enumerable: true,
24
+ get: getHeraldEvents
29
25
  });
30
26
  function clearHerald() {
31
27
  this[HERALD_SYMBOL].state.store.clear();
@@ -63,6 +59,9 @@ function emitForHerald(event, ...parameters) {
63
59
  function eventIsObserved(event) {
64
60
  return (this[HERALD_SYMBOL].state.store.items.keyed?.get(event)?.size ?? 0) > 0;
65
61
  }
62
+ function getHeraldEvents() {
63
+ return this[HERALD_SYMBOL].events;
64
+ }
66
65
  /**
67
66
  * Create a _Herald_ for announcing named events
68
67
  *
@@ -101,7 +100,7 @@ function isHeraldInstance(name, value) {
101
100
  * @returns `true` if the value is a herald subscription, otherwise `false`
102
101
  */
103
102
  function isHeraldSubscription(value) {
104
- return isSubscription(value) && value[HERALD_PROPERTY] === "subscription";
103
+ return isSubscription(value) && HERALD_PROPERTY in value && value[HERALD_PROPERTY] === "subscription";
105
104
  }
106
105
  function subscribeToHerald(key, callback, signal) {
107
106
  const { state } = this[HERALD_SYMBOL];
@@ -1,4 +1,4 @@
1
- import { isNonPlainObject } from "../is.mjs";
1
+ import { isPlainObject } from "../is.mjs";
2
2
  //#region src/internal/result/misc.ts
3
3
  function error(value, original) {
4
4
  return getError(value, original);
@@ -27,8 +27,7 @@ function isResult(value) {
27
27
  return isResultValue(value, true) || isResultValue(value, false);
28
28
  }
29
29
  function isResultValue(value, okValue) {
30
- if (isNonPlainObject(value)) return false;
31
- return value.ok === okValue && (okValue ? RESULT_PROPERTY_VALUE : RESULT_PROPERTY_ERROR) in value;
30
+ return isPlainObject(value) && value.ok === okValue && (okValue ? RESULT_PROPERTY_VALUE : RESULT_PROPERTY_ERROR) in value;
32
31
  }
33
32
  /**
34
33
  * Creates an ok result
@@ -49,7 +48,5 @@ const RESULT_PROPERTY_ERROR = "error";
49
48
  const RESULT_PROPERTY_VALUE = "value";
50
49
  error.is = isError;
51
50
  ok.is = isOk;
52
- Object.defineProperty(error, "is", { value: isError });
53
- Object.defineProperty(ok, "is", { value: isOk });
54
51
  //#endregion
55
52
  export { error, getError, isError, isOk, isResult, ok, unwrap };
@@ -1,44 +1,36 @@
1
1
  import { isKey, isPlainObject } from "./is.mjs";
2
- import { createAborter } from "./abort.mjs";
2
+ import { createAborter } from "./aborter.mjs";
3
3
  //#region src/internal/subscription.ts
4
4
  const SUBSCRIPTION_NAME = "subscription";
5
5
  const SUBSCRIPTION_PROPERTY = "$subscription";
6
6
  const SUBSCRIPTION_STORE = "subscriptions";
7
7
  function Subscription(state, property, parameters) {
8
- Object.defineProperty(this, SUBSCRIPTION_SYMBOL, { value: state });
8
+ this[SUBSCRIPTION_SYMBOL] = state;
9
+ this[property.key] = property.value;
9
10
  state.aborter = createAborter(parameters.signal, () => this.unsubscribe(subscriptions, this, state));
10
- Object.defineProperties(this, {
11
- [property.key]: { value: property.value },
12
- active: {
13
- enumerable: true,
14
- get: () => (state.parameters?.isActive?.() ?? true) && state.active
15
- }
16
- });
17
11
  addSubscription(this);
18
12
  }
19
- Object.defineProperties(Subscription.prototype, {
20
- [SUBSCRIPTION_PROPERTY]: { value: SUBSCRIPTION_NAME },
21
- unsubscribe: { value: removeSubscription }
13
+ Subscription.prototype[SUBSCRIPTION_PROPERTY] = SUBSCRIPTION_NAME;
14
+ Subscription.prototype.unsubscribe = removeSubscription;
15
+ Object.defineProperty(Subscription.prototype, "active", {
16
+ enumerable: true,
17
+ get: getSubscriptionActive
22
18
  });
23
19
  function Subscriptions(parameters) {
24
20
  const { keys, property } = createSubscriptionsParameters(parameters);
25
- Object.defineProperty(this, SUBSCRIPTION_SYMBOL, { value: createSubscriptionsState(property, keys) });
21
+ this[SUBSCRIPTION_SYMBOL] = createSubscriptionsState(property, keys);
26
22
  }
23
+ Subscriptions.prototype[SUBSCRIPTION_PROPERTY] = SUBSCRIPTION_STORE;
24
+ Subscriptions.prototype.clear = clearSubscriptions;
25
+ Subscriptions.prototype.create = createSubscription;
27
26
  Object.defineProperties(Subscriptions.prototype, {
28
- [SUBSCRIPTION_PROPERTY]: { value: SUBSCRIPTION_STORE },
29
- clear: { value: clearSubscriptions },
30
- create: { value: createSubscription },
31
27
  items: {
32
28
  enumerable: true,
33
- get() {
34
- return this[SUBSCRIPTION_SYMBOL].items;
35
- }
29
+ get: getSubscriptionsItems
36
30
  },
37
31
  values: {
38
32
  enumerable: true,
39
- get() {
40
- return this[SUBSCRIPTION_SYMBOL].values;
41
- }
33
+ get: getSubscriptionsValues
42
34
  }
43
35
  });
44
36
  function addSubscription(instance) {
@@ -101,6 +93,16 @@ function getExistingSubscription(subscriptions, state) {
101
93
  const { parameters } = state;
102
94
  return isKey(parameters.key) ? values.from.keyed?.get(parameters.key)?.get(parameters.value) : values.from.any.get(parameters.value);
103
95
  }
96
+ function getSubscriptionActive() {
97
+ const state = this[SUBSCRIPTION_SYMBOL];
98
+ return (state.parameters?.isActive?.() ?? true) && state.active;
99
+ }
100
+ function getSubscriptionsItems() {
101
+ return this[SUBSCRIPTION_SYMBOL].items;
102
+ }
103
+ function getSubscriptionsValues() {
104
+ return this[SUBSCRIPTION_SYMBOL].values;
105
+ }
104
106
  function createSubscriptionParameters(input) {
105
107
  const values = isPlainObject(input) ? input : {};
106
108
  if (values.value == null) throw new Error(SUBSCRIPTION_INVALID_VALUE);
@@ -13,7 +13,7 @@ export declare namespace compare {
13
13
  var deregister: typeof deregisterComparator;
14
14
  var handler: {
15
15
  base: {
16
- handlers: WeakMap<Constructor, string | GenericCallback>;
16
+ handlers: WeakMap<WeakKey, string | GenericCallback>;
17
17
  options: {
18
18
  callback: GenericCallback;
19
19
  method?: string;
@@ -85,10 +85,5 @@ const compareHandler = createCompareHandler(compare, {
85
85
  compare.deregister = deregisterComparator;
86
86
  compare.handler = compareHandler;
87
87
  compare.register = registerComparator;
88
- Object.defineProperties(compare, {
89
- deregister: { value: deregisterComparator },
90
- handler: { value: compareHandler },
91
- register: { value: registerComparator }
92
- });
93
88
  //#endregion
94
89
  export { compare, deregisterComparator, registerComparator };
@@ -95,7 +95,7 @@ export declare namespace equal {
95
95
  var deregister: typeof deregisterEqualizer;
96
96
  var handler: {
97
97
  base: {
98
- handlers: WeakMap<Constructor, string | GenericCallback>;
98
+ handlers: WeakMap<WeakKey, string | GenericCallback>;
99
99
  options: {
100
100
  callback: GenericCallback;
101
101
  method?: string;
@@ -2,13 +2,11 @@ import { isNonPlainObject, isPlainObject, isPrimitive, isTypedArray } from "../i
2
2
  import { createCompareHandler } from "./handlers.mjs";
3
3
  //#region src/internal/value/equal.ts
4
4
  function Equalizer(options) {
5
- Object.defineProperty(this, EQUAL_SYMBOL, { value: options });
5
+ this[EQUAL_SYMBOL] = options;
6
6
  }
7
- Object.defineProperties(Equalizer.prototype, {
8
- compare: { value: compare },
9
- deregister: { value: deregisterEqualizer },
10
- register: { value: registerEqualizer }
11
- });
7
+ Equalizer.prototype.compare = compare;
8
+ Equalizer.prototype.deregister = deregisterEqualizer;
9
+ Equalizer.prototype.register = registerEqualizer;
12
10
  function compare(first, second) {
13
11
  return equalValue(first, second, this[EQUAL_SYMBOL]);
14
12
  }
@@ -181,11 +179,5 @@ equal.deregister = deregisterEqualizer;
181
179
  equal.handler = equalHandler;
182
180
  equal.initialize = initializeEqualizer;
183
181
  equal.register = registerEqualizer;
184
- Object.defineProperties(equal, {
185
- deregister: { value: deregisterEqualizer },
186
- handler: { value: equalHandler },
187
- initialize: { value: initializeEqualizer },
188
- register: { value: registerEqualizer }
189
- });
190
182
  //#endregion
191
183
  export { deregisterEqualizer, equal, initializeEqualizer, registerEqualizer };
@@ -1,7 +1,7 @@
1
1
  import { Constructor, GenericCallback } from "../../models.mjs";
2
2
  //#region src/internal/value/handlers.d.ts
3
3
  type BaseHandler = {
4
- handlers: WeakMap<Constructor, string | GenericCallback>;
4
+ handlers: WeakMap<WeakKey, string | GenericCallback>;
5
5
  options: BaseHandlerOptions;
6
6
  owner: GenericCallback;
7
7
  deregister: (constructor: Constructor) => void;
@@ -5,19 +5,17 @@ function BaseHandler(owner, options) {
5
5
  this.owner = owner;
6
6
  this.options = options;
7
7
  }
8
- Object.defineProperties(BaseHandler.prototype, {
9
- deregister: { value: deregisterHandler },
10
- get: { value: getHandler },
11
- register: { value: registerHandler }
12
- });
8
+ BaseHandler.prototype.deregister = deregisterHandler;
9
+ BaseHandler.prototype.get = getHandler;
10
+ BaseHandler.prototype.register = registerHandler;
13
11
  function CompareHandler(base) {
14
12
  this.base = base;
15
13
  }
16
- Object.defineProperties(CompareHandler.prototype, { handle: { value: handleComparison } });
14
+ CompareHandler.prototype.handle = handleComparison;
17
15
  function ValueHandler(value) {
18
16
  this.base = value;
19
17
  }
20
- Object.defineProperties(ValueHandler.prototype, { handle: { value: handleValue } });
18
+ ValueHandler.prototype.handle = handleValue;
21
19
  function createBaseHandler(owner, options) {
22
20
  return new BaseHandler(owner, options);
23
21
  }
@@ -7,6 +7,5 @@ function hasValueResult(data, path, ignoreCase) {
7
7
  return getNestedValue(data, path, ignoreCase === true);
8
8
  }
9
9
  hasValue.get = hasValueResult;
10
- Object.defineProperty(hasValue, "get", { value: hasValueResult });
11
10
  //#endregion
12
11
  export { hasValue, hasValueResult };
@@ -3,6 +3,6 @@ import { Result } from "../result/models.mjs";
3
3
  export declare function findKey(needle: string, haystack: object): string;
4
4
  export declare function getNestedValue(data: object, path: string, ignoreCase: boolean): Result<unknown, string>;
5
5
  export declare function getPaths(path: string, lowercase: boolean): string | string[];
6
- export declare function handleValue(data: object, path: string, value: unknown, get: true, ignoreCase: boolean): Result<unknown, string>;
6
+ export declare function handleValue(data: object, path: string, value: unknown, get: true, ignoreCase: boolean): Result<object, string>;
7
7
  export declare function handleValue(data: object, path: string, value: unknown, get: false, ignoreCase: boolean): void;
8
8
  //#endregion
@@ -30,9 +30,10 @@ function getPaths(path, lowercase) {
30
30
  function handleValue(data, path, value, get, ignoreCase) {
31
31
  if (typeof data === "object" && data !== null) {
32
32
  if (ignoreKey(path)) return error(MISC_NESTED_MESSAGE_UNSAFE);
33
- const key = ignoreCase ? findKey(path, data) : path;
34
- if (get) return key in data ? ok(data[key]) : error(MISC_NESTED_MESSAGE_MISSING);
35
- data[key] = typeof value === "function" ? value(data[key]) : value;
33
+ const dataObject = data;
34
+ const key = ignoreCase ? findKey(path, dataObject) : path;
35
+ if (get) return key in dataObject ? ok(dataObject[key]) : error(MISC_NESTED_MESSAGE_MISSING);
36
+ dataObject[key] = typeof value === "function" ? value(dataObject[key]) : value;
36
37
  }
37
38
  if (get) return error(MISC_NESTED_MESSAGE_MISSING);
38
39
  }
@@ -1,6 +1,7 @@
1
+ import { isPlainObject } from "../is.mjs";
1
2
  //#region src/internal/value/partial.ts
2
3
  function partial(value, providedKeys, omit) {
3
- if (typeof value !== "object" || value === null) return {};
4
+ if (!isPlainObject(value)) return {};
4
5
  const keys = omit ? Object.keys(value) : Array.isArray(providedKeys) ? providedKeys : [];
5
6
  const { length } = keys;
6
7
  if (length === 0) return omit ? value : {};
@@ -1,3 +1,4 @@
1
+ import { unwrap } from "../result/misc.mjs";
1
2
  import { getPaths, handleValue } from "./misc.mjs";
2
3
  //#region src/internal/value/set.ts
3
4
  function setValue(data, path, value, ignoreCase) {
@@ -17,7 +18,7 @@ function setValue(data, path, value, ignoreCase) {
17
18
  handleValue(target, currentPath, value, false, shouldIgnoreCase);
18
19
  break;
19
20
  }
20
- let next = handleValue(target, currentPath, null, true, shouldIgnoreCase).value;
21
+ let next = unwrap(handleValue(target, currentPath, null, true, shouldIgnoreCase), void 0);
21
22
  if (typeof next !== "object" || next === null) {
22
23
  const nextPath = paths[index + 1];
23
24
  if (SET_EXPRESSION_INDEX.test(nextPath)) next = Array.from({ length: Number(nextPath) + 1 }, () => void 0);
package/dist/logger.mjs CHANGED
@@ -4,36 +4,32 @@ import { getString } from "./internal/string/misc.mjs";
4
4
  const LOGGER_NAME = "Logger";
5
5
  const LOGGER_NAME_TIMED = "TimedLogger";
6
6
  const LOGGER_PROPERTY = "$logger";
7
- function Lumberjack() {
8
- for (const method of methods) {
9
- const bound = console[method].bind(console);
10
- Object.defineProperty(this, method, {
11
- enumerable: true,
12
- get() {
13
- return enabled ? bound : noop;
14
- }
15
- });
16
- }
17
- }
7
+ function Lumberjack() {}
18
8
  Lumberjack.prototype[LOGGER_PROPERTY] = LOGGER_NAME;
9
+ Lumberjack.prototype.time = getTimeLogger;
19
10
  Object.defineProperties(Lumberjack.prototype, {
11
+ debug: { get: getLoggerCallback.bind("debug") },
12
+ dir: { get: getLoggerCallback.bind("dir") },
13
+ error: { get: getLoggerCallback.bind("error") },
20
14
  enabled: {
21
15
  enumerable: true,
22
- get: () => enabled,
23
- set: (value) => {
24
- enabled = typeof value === "boolean" ? value : enabled;
25
- }
16
+ get: getLoggerEnabled,
17
+ set: setLoggerEnabled
26
18
  },
27
- time: { value: (label) => new TimeLogger(getString(label)) }
19
+ info: { get: getLoggerCallback.bind("info") },
20
+ log: { get: getLoggerCallback.bind("log") },
21
+ table: { get: getLoggerCallback.bind("table") },
22
+ trace: { get: getLoggerCallback.bind("trace") },
23
+ warn: { get: getLoggerCallback.bind("warn") }
28
24
  });
29
25
  function TimeLogger(label) {
30
- Object.defineProperty(this, LOGGER_SYMBOL, { value: {
26
+ this[LOGGER_SYMBOL] = {
31
27
  label,
32
28
  started: enabled,
33
29
  stopped: false
34
- } });
30
+ };
35
31
  this[LOGGER_SYMBOL].isActive = () => {
36
- return this[LOGGER_SYMBOL].started && !this[LOGGER_SYMBOL].stopped && enabled;
32
+ return enabled && this[LOGGER_SYMBOL].started && !this[LOGGER_SYMBOL].stopped;
37
33
  };
38
34
  if (this[LOGGER_SYMBOL].started) console.time(label);
39
35
  }
@@ -41,43 +37,48 @@ TimeLogger.prototype[LOGGER_PROPERTY] = LOGGER_NAME_TIMED;
41
37
  Object.defineProperties(TimeLogger.prototype, {
42
38
  active: {
43
39
  enumerable: true,
44
- get() {
45
- return this[LOGGER_SYMBOL].isActive();
46
- }
40
+ get: getTimeLoggerActive
47
41
  },
48
- log: { get() {
49
- const state = this[LOGGER_SYMBOL];
50
- return state.isActive() ? console.timeLog.bind(console, state.label) : noop;
51
- } },
52
- stop: { get() {
53
- const state = this[LOGGER_SYMBOL];
54
- if (state.isActive()) {
55
- state.stopped = true;
56
- return console.timeEnd.bind(console, state.label);
57
- }
58
- return noop;
59
- } }
42
+ log: { get: getTimerLoggerLog },
43
+ stop: { get: getTimeLoggerStop }
60
44
  });
45
+ function getLoggerCallback() {
46
+ return enabled ? console[this].bind(console) : noop;
47
+ }
48
+ function getLoggerEnabled() {
49
+ return enabled;
50
+ }
51
+ function getTimeLogger(label) {
52
+ return new TimeLogger(getString(label));
53
+ }
54
+ function getTimeLoggerActive() {
55
+ return this[LOGGER_SYMBOL].isActive();
56
+ }
57
+ function getTimerLoggerLog() {
58
+ const state = this[LOGGER_SYMBOL];
59
+ return state.isActive() ? console.timeLog.bind(console, state.label) : noop;
60
+ }
61
+ function getTimeLoggerStop() {
62
+ const state = this[LOGGER_SYMBOL];
63
+ if (state.isActive()) {
64
+ state.stopped = true;
65
+ return console.timeEnd.bind(console, state.label);
66
+ }
67
+ return noop;
68
+ }
61
69
  function isLogger(value) {
62
70
  return isLoggerInstance(LOGGER_NAME, value);
63
71
  }
64
72
  function isLoggerInstance(name, value) {
65
- return typeof value === "object" && value !== null && value[LOGGER_PROPERTY] === name;
73
+ return typeof value === "object" && value !== null && LOGGER_PROPERTY in value && value[LOGGER_PROPERTY] === name;
66
74
  }
67
75
  function isTimeLogger(value) {
68
76
  return isLoggerInstance(LOGGER_NAME_TIMED, value);
69
77
  }
78
+ function setLoggerEnabled(value) {
79
+ enabled = typeof value === "boolean" ? value : enabled;
80
+ }
70
81
  const LOGGER_SYMBOL = Symbol(LOGGER_PROPERTY);
71
- const methods = [
72
- "debug",
73
- "dir",
74
- "error",
75
- "info",
76
- "log",
77
- "table",
78
- "trace",
79
- "warn"
80
- ];
81
82
  /**
82
83
  * A logger that can be used to log messages to the console
83
84
  *
@@ -1,4 +1,4 @@
1
- import { createAborter } from "../internal/abort.mjs";
1
+ import { createAborter } from "../internal/aborter.mjs";
2
2
  import { LIMITER_WAIT, getLimiter } from "../internal/function/limit.mjs";
3
3
  import { createPromiseOptions } from "./helpers.mjs";
4
4
  import { settlePromise } from "./misc.mjs";