vest-utils 0.1.1 → 1.0.0-dev-ec989a

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 (61) hide show
  1. package/dist/cjs/vest-utils.development.js +132 -138
  2. package/dist/cjs/vest-utils.production.js +1 -1
  3. package/dist/es/vest-utils.development.js +129 -136
  4. package/dist/es/vest-utils.production.js +1 -1
  5. package/dist/umd/vest-utils.development.js +132 -138
  6. package/dist/umd/vest-utils.production.js +1 -1
  7. package/package.json +2 -2
  8. package/types/vest-utils.d.ts +49 -20
  9. package/types/vest-utils.d.ts.map +1 -1
  10. package/src/__tests__/bindNot.test.ts +0 -37
  11. package/src/__tests__/bus.test.ts +0 -81
  12. package/src/__tests__/cache.test.ts +0 -113
  13. package/src/__tests__/defaultTo.test.ts +0 -50
  14. package/src/__tests__/deferThrow.test.ts +0 -24
  15. package/src/__tests__/greaterThan.test.ts +0 -59
  16. package/src/__tests__/invariant.test.ts +0 -45
  17. package/src/__tests__/isArray.test.ts +0 -15
  18. package/src/__tests__/isNull.test.ts +0 -25
  19. package/src/__tests__/isNumeric.test.ts +0 -26
  20. package/src/__tests__/isUndefined.test.ts +0 -26
  21. package/src/__tests__/lengthEquals.test.ts +0 -56
  22. package/src/__tests__/longerThan.test.ts +0 -56
  23. package/src/__tests__/mapFirst.test.ts +0 -29
  24. package/src/__tests__/numberEquals.test.ts +0 -59
  25. package/src/__tests__/optionalFunctionValue.test.ts +0 -27
  26. package/src/__tests__/seq.test.ts +0 -28
  27. package/src/asArray.ts +0 -3
  28. package/src/assign.ts +0 -1
  29. package/src/bindNot.ts +0 -3
  30. package/src/bus.ts +0 -32
  31. package/src/cache.ts +0 -57
  32. package/src/callEach.ts +0 -5
  33. package/src/defaultTo.ts +0 -8
  34. package/src/deferThrow.ts +0 -5
  35. package/src/either.ts +0 -3
  36. package/src/globals.d.ts +0 -3
  37. package/src/greaterThan.ts +0 -8
  38. package/src/hasOwnProperty.ts +0 -9
  39. package/src/invariant.ts +0 -24
  40. package/src/isArrayValue.ts +0 -11
  41. package/src/isBooleanValue.ts +0 -3
  42. package/src/isEmpty.ts +0 -17
  43. package/src/isFunction.ts +0 -5
  44. package/src/isNull.ts +0 -7
  45. package/src/isNullish.ts +0 -9
  46. package/src/isNumeric.ts +0 -11
  47. package/src/isPositive.ts +0 -5
  48. package/src/isPromise.ts +0 -5
  49. package/src/isStringValue.ts +0 -3
  50. package/src/isUndefined.ts +0 -7
  51. package/src/last.ts +0 -7
  52. package/src/lengthEquals.ts +0 -11
  53. package/src/longerThan.ts +0 -8
  54. package/src/mapFirst.ts +0 -25
  55. package/src/nestedArray.ts +0 -69
  56. package/src/numberEquals.ts +0 -11
  57. package/src/optionalFunctionValue.ts +0 -8
  58. package/src/seq.ts +0 -14
  59. package/src/utilityTypes.ts +0 -9
  60. package/src/vest-utils.ts +0 -36
  61. package/tsconfig.json +0 -46
@@ -1,34 +1,26 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  function bindNot(fn) {
6
- return function () {
7
- var args = [];
8
- for (var _i = 0; _i < arguments.length; _i++) {
9
- args[_i] = arguments[_i];
10
- }
11
- return !fn.apply(void 0, args);
12
- };
4
+ return (...args) => !fn(...args);
13
5
  }
14
6
 
15
7
  function isNumeric(value) {
16
- var str = String(value);
17
- var num = Number(value);
18
- var result = !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);
8
+ const str = String(value);
9
+ const num = Number(value);
10
+ const result = !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);
19
11
  return Boolean(result);
20
12
  }
21
- var isNotNumeric = bindNot(isNumeric);
13
+ const isNotNumeric = bindNot(isNumeric);
22
14
 
23
15
  function numberEquals(value, eq) {
24
16
  return isNumeric(value) && isNumeric(eq) && Number(value) === Number(eq);
25
17
  }
26
- var numberNotEquals = bindNot(numberEquals);
18
+ const numberNotEquals = bindNot(numberEquals);
27
19
 
28
20
  function lengthEquals(value, arg1) {
29
21
  return numberEquals(value.length, arg1);
30
22
  }
31
- var lengthNotEquals = bindNot(lengthEquals);
23
+ const lengthNotEquals = bindNot(lengthEquals);
32
24
 
33
25
  function greaterThan(value, gt) {
34
26
  return isNumeric(value) && isNumeric(gt) && Number(value) > Number(gt);
@@ -41,145 +33,55 @@ function longerThan(value, arg1) {
41
33
  /**
42
34
  * Creates a cache function
43
35
  */
44
- function createCache(maxSize) {
45
- if (maxSize === void 0) { maxSize = 1; }
46
- var cacheStorage = [];
47
- var cache = function (deps, cacheAction) {
48
- var cacheHit = cache.get(deps);
36
+ function createCache(maxSize = 1) {
37
+ const cacheStorage = [];
38
+ const cache = (deps, cacheAction) => {
39
+ const cacheHit = cache.get(deps);
49
40
  // cache hit is not null
50
41
  if (cacheHit)
51
42
  return cacheHit[1];
52
- var result = cacheAction();
43
+ const result = cacheAction();
53
44
  cacheStorage.unshift([deps.concat(), result]);
54
45
  if (longerThan(cacheStorage, maxSize))
55
46
  cacheStorage.length = maxSize;
56
47
  return result;
57
48
  };
58
49
  // invalidate an item in the cache by its dependencies
59
- cache.invalidate = function (deps) {
60
- var index = findIndex(deps);
50
+ cache.invalidate = (deps) => {
51
+ const index = findIndex(deps);
61
52
  if (index > -1)
62
53
  cacheStorage.splice(index, 1);
63
54
  };
64
55
  // Retrieves an item from the cache.
65
- cache.get = function (deps) {
66
- return cacheStorage[findIndex(deps)] || null;
67
- };
56
+ cache.get = (deps) => cacheStorage[findIndex(deps)] || null;
68
57
  return cache;
69
58
  function findIndex(deps) {
70
- return cacheStorage.findIndex(function (_a) {
71
- var cachedDeps = _a[0];
72
- return lengthEquals(deps, cachedDeps.length) &&
73
- deps.every(function (dep, i) { return dep === cachedDeps[i]; });
74
- });
59
+ return cacheStorage.findIndex(([cachedDeps]) => lengthEquals(deps, cachedDeps.length) &&
60
+ deps.every((dep, i) => dep === cachedDeps[i]));
75
61
  }
76
62
  }
77
63
 
78
64
  function isNull(value) {
79
65
  return value === null;
80
66
  }
81
- var isNotNull = bindNot(isNull);
67
+ const isNotNull = bindNot(isNull);
82
68
 
83
69
  function isUndefined(value) {
84
70
  return value === undefined;
85
71
  }
86
- var isNotUndefined = bindNot(isUndefined);
72
+ const isNotUndefined = bindNot(isUndefined);
87
73
 
88
74
  function isNullish(value) {
89
75
  return isNull(value) || isUndefined(value);
90
76
  }
91
- var isNotNullish = bindNot(isNullish);
77
+ const isNotNullish = bindNot(isNullish);
92
78
 
93
79
  function asArray(possibleArg) {
94
80
  return [].concat(possibleArg);
95
81
  }
96
82
 
97
- function isFunction(value) {
98
- return typeof value === 'function';
99
- }
100
-
101
- function optionalFunctionValue(value) {
102
- var args = [];
103
- for (var _i = 1; _i < arguments.length; _i++) {
104
- args[_i - 1] = arguments[_i];
105
- }
106
- return isFunction(value) ? value.apply(void 0, args) : value;
107
- }
108
-
109
- function defaultTo(value, defaultValue) {
110
- var _a;
111
- return (_a = optionalFunctionValue(value)) !== null && _a !== void 0 ? _a : optionalFunctionValue(defaultValue);
112
- }
113
-
114
- // The module is named "isArrayValue" since it
115
- // is conflicting with a nested npm dependency.
116
- // We may need to revisit this in the future.
117
- function isArray(value) {
118
- return Boolean(Array.isArray(value));
119
- }
120
- var isNotArray = bindNot(isArray);
121
-
122
- function last(values) {
123
- var valuesArray = asArray(values);
124
- return valuesArray[valuesArray.length - 1];
125
- }
126
-
127
- // This is kind of a map/filter in one function.
128
- // Normally, behaves like a nested-array map,
129
- // but returning `null` will drop the element from the array
130
- function transform(array, cb) {
131
- var res = [];
132
- for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {
133
- var v = array_1[_i];
134
- if (isArray(v)) {
135
- res.push(transform(v, cb));
136
- }
137
- else {
138
- var output = cb(v);
139
- if (isNotNull(output)) {
140
- res.push(output);
141
- }
142
- }
143
- }
144
- return res;
145
- }
146
- function valueAtPath(array, path) {
147
- return getCurrent(array, path)[last(path)];
148
- }
149
- function setValueAtPath(array, path, value) {
150
- var current = getCurrent(array, path);
151
- current[last(path)] = value;
152
- return array;
153
- }
154
- function flatten(values) {
155
- return asArray(values).reduce(function (acc, value) {
156
- if (isArray(value)) {
157
- return acc.concat(flatten(value));
158
- }
159
- return asArray(acc).concat(value);
160
- }, []);
161
- }
162
- function getCurrent(array, path) {
163
- var current = array;
164
- for (var _i = 0, _a = path.slice(0, -1); _i < _a.length; _i++) {
165
- var p = _a[_i];
166
- current[p] = defaultTo(current[p], []);
167
- current = current[p];
168
- }
169
- return current;
170
- }
171
-
172
- var nestedArray = /*#__PURE__*/Object.freeze({
173
- __proto__: null,
174
- transform: transform,
175
- valueAtPath: valueAtPath,
176
- setValueAtPath: setValueAtPath,
177
- flatten: flatten,
178
- getCurrent: getCurrent
179
- });
180
-
181
83
  function callEach(arr) {
182
- return arr.forEach(function (fn) { return fn(); });
84
+ return arr.forEach(fn => fn());
183
85
  }
184
86
 
185
87
  /**
@@ -189,12 +91,25 @@ function hasOwnProperty(obj, key) {
189
91
  return Object.prototype.hasOwnProperty.call(obj, key);
190
92
  }
191
93
 
94
+ function isFunction(value) {
95
+ return typeof value === 'function';
96
+ }
97
+
192
98
  function isPromise(value) {
193
99
  return value && isFunction(value.then);
194
100
  }
195
101
 
102
+ function optionalFunctionValue(value, ...args) {
103
+ return isFunction(value) ? value(...args) : value;
104
+ }
105
+
196
106
  var assign = Object.assign;
197
107
 
108
+ function defaultTo(value, defaultValue) {
109
+ var _a;
110
+ return (_a = optionalFunctionValue(value)) !== null && _a !== void 0 ? _a : optionalFunctionValue(defaultValue);
111
+ }
112
+
198
113
  function invariant(condition,
199
114
  // eslint-disable-next-line @typescript-eslint/ban-types
200
115
  message) {
@@ -225,28 +140,33 @@ function isBoolean(value) {
225
140
  return !!value === value;
226
141
  }
227
142
 
143
+ function last(values) {
144
+ const valuesArray = asArray(values);
145
+ return valuesArray[valuesArray.length - 1];
146
+ }
147
+
228
148
  function deferThrow(message) {
229
- setTimeout(function () {
149
+ setTimeout(() => {
230
150
  throw new Error(message);
231
151
  }, 0);
232
152
  }
233
153
 
234
154
  function createBus() {
235
- var listeners = {};
155
+ const listeners = {};
236
156
  return {
237
- emit: function (event, data) {
238
- listener(event).forEach(function (handler) {
157
+ emit(event, data) {
158
+ listener(event).forEach(handler => {
239
159
  handler(data);
240
160
  });
241
161
  },
242
- on: function (event, handler) {
162
+ on(event, handler) {
243
163
  listeners[event] = listener(event).concat(handler);
244
164
  return {
245
- off: function () {
246
- listeners[event] = listener(event).filter(function (h) { return h !== handler; });
247
- }
165
+ off() {
166
+ listeners[event] = listener(event).filter(h => h !== handler);
167
+ },
248
168
  };
249
- }
169
+ },
250
170
  };
251
171
  function listener(event) {
252
172
  return listeners[event] || [];
@@ -261,17 +181,15 @@ var bus = /*#__PURE__*/Object.freeze({
261
181
  /**
262
182
  * @returns a unique numeric id.
263
183
  */
264
- var seq = genSeq();
184
+ const seq = genSeq();
265
185
  function genSeq(namespace) {
266
- return (function (n) { return function () {
267
- return "".concat(namespace ? namespace + '_' : '').concat(n++);
268
- }; })(0);
186
+ return ((n) => () => `${namespace ? namespace + '_' : ''}${n++}`)(0);
269
187
  }
270
188
 
271
189
  function mapFirst(array, callback) {
272
- var broke = false;
273
- var breakoutValue = null;
274
- for (var i = 0; i < array.length; i++) {
190
+ let broke = false;
191
+ let breakoutValue = null;
192
+ for (let i = 0; i < array.length; i++) {
275
193
  callback(array[i], breakout, i);
276
194
  if (broke) {
277
195
  return breakoutValue;
@@ -285,6 +203,18 @@ function mapFirst(array, callback) {
285
203
  }
286
204
  }
287
205
 
206
+ function isObject(v) {
207
+ return typeof v === 'object' && !isNullish(v);
208
+ }
209
+
210
+ // The module is named "isArrayValue" since it
211
+ // is conflicting with a nested npm dependency.
212
+ // We may need to revisit this in the future.
213
+ function isArray(value) {
214
+ return Boolean(Array.isArray(value));
215
+ }
216
+ const isNotArray = bindNot(isArray);
217
+
288
218
  function isEmpty(value) {
289
219
  if (!value) {
290
220
  return true;
@@ -292,17 +222,79 @@ function isEmpty(value) {
292
222
  else if (hasOwnProperty(value, 'length')) {
293
223
  return lengthEquals(value, 0);
294
224
  }
295
- else if (typeof value === 'object') {
225
+ else if (isObject(value)) {
296
226
  return lengthEquals(Object.keys(value), 0);
297
227
  }
298
228
  return false;
299
229
  }
300
- var isNotEmpty = bindNot(isEmpty);
230
+ const isNotEmpty = bindNot(isEmpty);
301
231
 
302
232
  function isPositive(value) {
303
233
  return greaterThan(value, 0);
304
234
  }
305
235
 
236
+ const regexp = /{(.*?)}/g;
237
+ function text(str, ...substitutions) {
238
+ const first = substitutions[0];
239
+ if (isObject(first)) {
240
+ return str.replace(regexp, (placeholder, key) => {
241
+ var _a;
242
+ return `${(_a = first[key]) !== null && _a !== void 0 ? _a : placeholder}`;
243
+ });
244
+ }
245
+ const subs = [...substitutions];
246
+ return str.replace(regexp, placeholder => {
247
+ return `${isEmpty(subs) ? placeholder : subs.shift()}`;
248
+ });
249
+ }
250
+
251
+ const STATE_WILD_CARD = '*';
252
+ function StateMachine(machine) {
253
+ let state = machine.initial;
254
+ const api = { getState, transition };
255
+ return api;
256
+ function getState() {
257
+ return state;
258
+ }
259
+ // eslint-disable-next-line complexity
260
+ function transition(action, payload) {
261
+ var _a, _b, _c;
262
+ const transitionTo = (_b = (_a = machine.states[state]) === null || _a === void 0 ? void 0 : _a[action]) !== null && _b !== void 0 ? _b :
263
+ // @ts-expect-error - This is a valid state
264
+ (_c = machine.states[STATE_WILD_CARD]) === null || _c === void 0 ? void 0 : _c[action];
265
+ let target = transitionTo;
266
+ if (Array.isArray(target)) {
267
+ const [, conditional] = target;
268
+ if (!conditional(payload)) {
269
+ return;
270
+ }
271
+ target = target[0];
272
+ }
273
+ if (!target || target === state) {
274
+ return;
275
+ }
276
+ state = target;
277
+ }
278
+ }
279
+
280
+ function createTinyState(initialValue) {
281
+ let value;
282
+ resetValue();
283
+ return () => [value, setValue, resetValue];
284
+ function setValue(nextValue) {
285
+ value = optionalFunctionValue(nextValue, value);
286
+ }
287
+ function resetValue() {
288
+ setValue(optionalFunctionValue(initialValue));
289
+ }
290
+ }
291
+
292
+ var tinyState = /*#__PURE__*/Object.freeze({
293
+ __proto__: null,
294
+ createTinyState: createTinyState
295
+ });
296
+
297
+ exports.StateMachine = StateMachine;
306
298
  exports.StringObject = StringObject;
307
299
  exports.asArray = asArray;
308
300
  exports.assign = assign;
@@ -330,6 +322,7 @@ exports.isNotUndefined = isNotUndefined;
330
322
  exports.isNull = isNull;
331
323
  exports.isNullish = isNullish;
332
324
  exports.isNumeric = isNumeric;
325
+ exports.isObject = isObject;
333
326
  exports.isPositive = isPositive;
334
327
  exports.isPromise = isPromise;
335
328
  exports.isStringValue = isStringValue;
@@ -339,8 +332,9 @@ exports.lengthEquals = lengthEquals;
339
332
  exports.lengthNotEquals = lengthNotEquals;
340
333
  exports.longerThan = longerThan;
341
334
  exports.mapFirst = mapFirst;
342
- exports.nestedArray = nestedArray;
343
335
  exports.numberEquals = numberEquals;
344
336
  exports.numberNotEquals = numberNotEquals;
345
337
  exports.optionalFunctionValue = optionalFunctionValue;
346
338
  exports.seq = seq;
339
+ exports.text = text;
340
+ exports.tinyState = tinyState;
@@ -1 +1 @@
1
- "use strict";function r(r){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return!r.apply(void 0,t)}}function t(r){var t=String(r),n=Number(r),e=!isNaN(parseFloat(t))&&!isNaN(Number(r))&&isFinite(n);return Boolean(e)}Object.defineProperty(exports,"__esModule",{value:!0});var n=r(t);function e(r,n){return t(r)&&t(n)&&Number(r)===Number(n)}var o=r(e);function u(r,t){return e(r.length,t)}var i=r(u);function s(r,n){return t(r)&&t(n)&&Number(r)>Number(n)}function c(r,t){return s(r.length,t)}function a(r){return null===r}var f=r(a);function l(r){return void 0===r}var p=r(l);function x(r){return a(r)||l(r)}var v=r(x);function h(r){return[].concat(r)}function g(r){return"function"==typeof r}function N(r){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return g(r)?r.apply(void 0,t):r}function d(r,t){var n;return null!==(n=N(r))&&void 0!==n?n:N(t)}function b(r){return Boolean(Array.isArray(r))}var y=r(b);function m(r){var t=h(r);return t[t.length-1]}function E(r,t){for(var n=r,e=0,o=t.slice(0,-1);e<o.length;e++){var u=o[e];n[u]=d(n[u],[]),n=n[u]}return n}var _=Object.freeze({__proto__:null,transform:function r(t,n){for(var e=[],o=0,u=t;o<u.length;o++){var i=u[o];if(b(i))e.push(r(i,n));else{var s=n(i);f(s)&&e.push(s)}}return e},valueAtPath:function(r,t){return E(r,t)[m(t)]},setValueAtPath:function(r,t,n){return E(r,t)[m(t)]=n,r},flatten:function r(t){return h(t).reduce((function(t,n){return b(n)?t.concat(r(n)):h(t).concat(n)}),[])},getCurrent:E});function O(r,t){return Object.prototype.hasOwnProperty.call(r,t)}var j=Object.assign;var w=Object.freeze({__proto__:null,createBus:function(){var r={};return{emit:function(r,n){t(r).forEach((function(r){r(n)}))},on:function(n,e){return r[n]=t(n).concat(e),{off:function(){r[n]=t(n).filter((function(r){return r!==e}))}}}};function t(t){return r[t]||[]}}}),A=P();function P(r){return t=0,function(){return"".concat(r?r+"_":"").concat(t++)};var t}function S(r){return!r||(O(r,"length")?u(r,0):"object"==typeof r&&u(Object.keys(r),0))}var q=r(S);exports.StringObject=function(r){return new String(N(r))},exports.asArray=h,exports.assign=j,exports.bindNot=r,exports.bus=w,exports.cache=function(r){void 0===r&&(r=1);var t=[],n=function(e,o){var u=n.get(e);if(u)return u[1];var i=o();return t.unshift([e.concat(),i]),c(t,r)&&(t.length=r),i};return n.invalidate=function(r){var n=e(r);n>-1&&t.splice(n,1)},n.get=function(r){return t[e(r)]||null},n;function e(r){return t.findIndex((function(t){var n=t[0];return u(r,n.length)&&r.every((function(r,t){return r===n[t]}))}))}},exports.callEach=function(r){return r.forEach((function(r){return r()}))},exports.defaultTo=d,exports.deferThrow=function(r){setTimeout((function(){throw new Error(r)}),0)},exports.either=function(r,t){return!!r!=!!t},exports.genSeq=P,exports.greaterThan=s,exports.hasOwnProperty=O,exports.invariant=function(r,t){if(!r)throw t instanceof String?t.valueOf():new Error(t?N(t):t)},exports.isArray=b,exports.isBoolean=function(r){return!!r===r},exports.isEmpty=S,exports.isFunction=g,exports.isNotArray=y,exports.isNotEmpty=q,exports.isNotNull=f,exports.isNotNullish=v,exports.isNotNumeric=n,exports.isNotUndefined=p,exports.isNull=a,exports.isNullish=x,exports.isNumeric=t,exports.isPositive=function(r){return s(r,0)},exports.isPromise=function(r){return r&&g(r.then)},exports.isStringValue=function(r){return String(r)===r},exports.isUndefined=l,exports.last=m,exports.lengthEquals=u,exports.lengthNotEquals=i,exports.longerThan=c,exports.mapFirst=function(r,t){for(var n=!1,e=null,o=0;o<r.length;o++)if(t(r[o],u,o),n)return e;function u(r,t){r&&(n=!0,e=t)}},exports.nestedArray=_,exports.numberEquals=e,exports.numberNotEquals=o,exports.optionalFunctionValue=N,exports.seq=A;
1
+ "use strict";function t(t){return(...n)=>!t(...n)}function n(t){const n=String(t),r=Number(t),e=!isNaN(parseFloat(n))&&!isNaN(Number(t))&&isFinite(r);return Boolean(e)}const r=t(n);function e(t,r){return n(t)&&n(r)&&Number(t)===Number(r)}const o=t(e);function i(t,n){return e(t.length,n)}const u=t(i);function s(t,r){return n(t)&&n(r)&&Number(t)>Number(r)}function c(t,n){return s(t.length,n)}function f(t){return null===t}const a=t(f);function l(t){return void 0===t}const p=t(l);function x(t){return f(t)||l(t)}const h=t(x);function N(t){return[].concat(t)}function g(t,n){return Object.prototype.hasOwnProperty.call(t,n)}function v(t){return"function"==typeof t}function b(t,...n){return v(t)?t(...n):t}var d=Object.assign;var y=Object.freeze({__proto__:null,createBus:function(){const t={};return{emit(t,r){n(t).forEach((t=>{t(r)}))},on:(r,e)=>(t[r]=n(r).concat(e),{off(){t[r]=n(r).filter((t=>t!==e))}})};function n(n){return t[n]||[]}}});const m=E();function E(t){return n=0,()=>`${t?t+"_":""}${n++}`;var n}function S(t){return"object"==typeof t&&!x(t)}function O(t){return Boolean(Array.isArray(t))}const _=t(O);function j(t){return!t||(g(t,"length")?i(t,0):!!S(t)&&i(Object.keys(t),0))}const w=t(j);const A=/{(.*?)}/g;var q=Object.freeze({__proto__:null,createTinyState:function(t){let n;return e(),()=>[n,r,e];function r(t){n=b(t,n)}function e(){r(b(t))}}});exports.StateMachine=function(t){let n=t.initial;return{getState:function(){return n},transition:function(r,e){var o,i,u;let s=null!==(i=null===(o=t.states[n])||void 0===o?void 0:o[r])&&void 0!==i?i:null===(u=t.states["*"])||void 0===u?void 0:u[r];if(Array.isArray(s)){const[,t]=s;if(!t(e))return;s=s[0]}if(!s||s===n)return;n=s}}},exports.StringObject=function(t){return new String(b(t))},exports.asArray=N,exports.assign=d,exports.bindNot=t,exports.bus=y,exports.cache=function(t=1){const n=[],r=(e,o)=>{const i=r.get(e);if(i)return i[1];const u=o();return n.unshift([e.concat(),u]),c(n,t)&&(n.length=t),u};return r.invalidate=t=>{const r=e(t);r>-1&&n.splice(r,1)},r.get=t=>n[e(t)]||null,r;function e(t){return n.findIndex((([n])=>i(t,n.length)&&t.every(((t,r)=>t===n[r]))))}},exports.callEach=function(t){return t.forEach((t=>t()))},exports.defaultTo=function(t,n){var r;return null!==(r=b(t))&&void 0!==r?r:b(n)},exports.deferThrow=function(t){setTimeout((()=>{throw new Error(t)}),0)},exports.either=function(t,n){return!!t!=!!n},exports.genSeq=E,exports.greaterThan=s,exports.hasOwnProperty=g,exports.invariant=function(t,n){if(!t)throw n instanceof String?n.valueOf():new Error(n?b(n):n)},exports.isArray=O,exports.isBoolean=function(t){return!!t===t},exports.isEmpty=j,exports.isFunction=v,exports.isNotArray=_,exports.isNotEmpty=w,exports.isNotNull=a,exports.isNotNullish=h,exports.isNotNumeric=r,exports.isNotUndefined=p,exports.isNull=f,exports.isNullish=x,exports.isNumeric=n,exports.isObject=S,exports.isPositive=function(t){return s(t,0)},exports.isPromise=function(t){return t&&v(t.then)},exports.isStringValue=function(t){return String(t)===t},exports.isUndefined=l,exports.last=function(t){const n=N(t);return n[n.length-1]},exports.lengthEquals=i,exports.lengthNotEquals=u,exports.longerThan=c,exports.mapFirst=function(t,n){let r=!1,e=null;for(let i=0;i<t.length;i++)if(n(t[i],o,i),r)return e;function o(t,n){t&&(r=!0,e=n)}},exports.numberEquals=e,exports.numberNotEquals=o,exports.optionalFunctionValue=b,exports.seq=m,exports.text=function(t,...n){const r=n[0];if(S(r))return t.replace(A,((t,n)=>{var e;return`${null!==(e=r[n])&&void 0!==e?e:t}`}));const e=[...n];return t.replace(A,(t=>`${j(e)?t:e.shift()}`))},exports.tinyState=q;