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.
- package/dist/cjs/vest-utils.development.js +132 -138
- package/dist/cjs/vest-utils.production.js +1 -1
- package/dist/es/vest-utils.development.js +129 -136
- package/dist/es/vest-utils.production.js +1 -1
- package/dist/umd/vest-utils.development.js +132 -138
- package/dist/umd/vest-utils.production.js +1 -1
- package/package.json +2 -2
- package/types/vest-utils.d.ts +49 -20
- package/types/vest-utils.d.ts.map +1 -1
- package/src/__tests__/bindNot.test.ts +0 -37
- package/src/__tests__/bus.test.ts +0 -81
- package/src/__tests__/cache.test.ts +0 -113
- package/src/__tests__/defaultTo.test.ts +0 -50
- package/src/__tests__/deferThrow.test.ts +0 -24
- package/src/__tests__/greaterThan.test.ts +0 -59
- package/src/__tests__/invariant.test.ts +0 -45
- package/src/__tests__/isArray.test.ts +0 -15
- package/src/__tests__/isNull.test.ts +0 -25
- package/src/__tests__/isNumeric.test.ts +0 -26
- package/src/__tests__/isUndefined.test.ts +0 -26
- package/src/__tests__/lengthEquals.test.ts +0 -56
- package/src/__tests__/longerThan.test.ts +0 -56
- package/src/__tests__/mapFirst.test.ts +0 -29
- package/src/__tests__/numberEquals.test.ts +0 -59
- package/src/__tests__/optionalFunctionValue.test.ts +0 -27
- package/src/__tests__/seq.test.ts +0 -28
- package/src/asArray.ts +0 -3
- package/src/assign.ts +0 -1
- package/src/bindNot.ts +0 -3
- package/src/bus.ts +0 -32
- package/src/cache.ts +0 -57
- package/src/callEach.ts +0 -5
- package/src/defaultTo.ts +0 -8
- package/src/deferThrow.ts +0 -5
- package/src/either.ts +0 -3
- package/src/globals.d.ts +0 -3
- package/src/greaterThan.ts +0 -8
- package/src/hasOwnProperty.ts +0 -9
- package/src/invariant.ts +0 -24
- package/src/isArrayValue.ts +0 -11
- package/src/isBooleanValue.ts +0 -3
- package/src/isEmpty.ts +0 -17
- package/src/isFunction.ts +0 -5
- package/src/isNull.ts +0 -7
- package/src/isNullish.ts +0 -9
- package/src/isNumeric.ts +0 -11
- package/src/isPositive.ts +0 -5
- package/src/isPromise.ts +0 -5
- package/src/isStringValue.ts +0 -3
- package/src/isUndefined.ts +0 -7
- package/src/last.ts +0 -7
- package/src/lengthEquals.ts +0 -11
- package/src/longerThan.ts +0 -8
- package/src/mapFirst.ts +0 -25
- package/src/nestedArray.ts +0 -69
- package/src/numberEquals.ts +0 -11
- package/src/optionalFunctionValue.ts +0 -8
- package/src/seq.ts +0 -14
- package/src/utilityTypes.ts +0 -9
- package/src/vest-utils.ts +0 -36
- 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
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
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
|
-
|
|
18
|
+
const numberNotEquals = bindNot(numberEquals);
|
|
27
19
|
|
|
28
20
|
function lengthEquals(value, arg1) {
|
|
29
21
|
return numberEquals(value.length, arg1);
|
|
30
22
|
}
|
|
31
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
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 =
|
|
60
|
-
|
|
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 =
|
|
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(
|
|
71
|
-
|
|
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
|
-
|
|
67
|
+
const isNotNull = bindNot(isNull);
|
|
82
68
|
|
|
83
69
|
function isUndefined(value) {
|
|
84
70
|
return value === undefined;
|
|
85
71
|
}
|
|
86
|
-
|
|
72
|
+
const isNotUndefined = bindNot(isUndefined);
|
|
87
73
|
|
|
88
74
|
function isNullish(value) {
|
|
89
75
|
return isNull(value) || isUndefined(value);
|
|
90
76
|
}
|
|
91
|
-
|
|
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(
|
|
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(
|
|
149
|
+
setTimeout(() => {
|
|
230
150
|
throw new Error(message);
|
|
231
151
|
}, 0);
|
|
232
152
|
}
|
|
233
153
|
|
|
234
154
|
function createBus() {
|
|
235
|
-
|
|
155
|
+
const listeners = {};
|
|
236
156
|
return {
|
|
237
|
-
emit
|
|
238
|
-
listener(event).forEach(
|
|
157
|
+
emit(event, data) {
|
|
158
|
+
listener(event).forEach(handler => {
|
|
239
159
|
handler(data);
|
|
240
160
|
});
|
|
241
161
|
},
|
|
242
|
-
on
|
|
162
|
+
on(event, handler) {
|
|
243
163
|
listeners[event] = listener(event).concat(handler);
|
|
244
164
|
return {
|
|
245
|
-
off
|
|
246
|
-
listeners[event] = listener(event).filter(
|
|
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
|
-
|
|
184
|
+
const seq = genSeq();
|
|
265
185
|
function genSeq(namespace) {
|
|
266
|
-
return (
|
|
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
|
-
|
|
273
|
-
|
|
274
|
-
for (
|
|
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 (
|
|
225
|
+
else if (isObject(value)) {
|
|
296
226
|
return lengthEquals(Object.keys(value), 0);
|
|
297
227
|
}
|
|
298
228
|
return false;
|
|
299
229
|
}
|
|
300
|
-
|
|
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
|
|
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;
|