@ls-stack/utils 1.13.2 → 2.0.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.
- package/dist/arrayUtils.cjs +91 -0
- package/dist/arrayUtils.d.cts +51 -0
- package/dist/arrayUtils.js +1 -2
- package/dist/assertions.cjs +99 -0
- package/dist/assertions.d.cts +17 -0
- package/dist/assertions.js +1 -2
- package/dist/castValues.cjs +41 -0
- package/dist/castValues.d.cts +4 -0
- package/dist/castValues.js +0 -1
- package/dist/{chunk-FYMTZQ42.js → chunk-4UGSP3L3.js} +0 -1
- package/dist/{chunk-HLFWWIDK.js → chunk-5DZT3Z5Z.js} +0 -1
- package/dist/{chunk-W7X6NSGR.js → chunk-AZBBTE33.js} +0 -1
- package/dist/{chunk-MMKMF4GG.js → chunk-IATIXMCE.js} +0 -1
- package/dist/chunk-JOBPQAI3.js +147 -0
- package/dist/{chunk-M74KKYE4.js → chunk-KCOXGSRA.js} +0 -1
- package/dist/{chunk-NKCC3375.js → chunk-NWXBMMHO.js} +0 -1
- package/dist/{chunk-SNAAKCTH.js → chunk-RVVH3MDA.js} +0 -1
- package/dist/{chunk-4QK76IRX.js → chunk-T5WDDPFI.js} +1 -6
- package/dist/{chunk-GLZ5MZC5.js → chunk-V2L472LS.js} +0 -30
- package/dist/consoleFmt.cjs +84 -0
- package/dist/consoleFmt.d.cts +48 -0
- package/dist/consoleFmt.js +0 -1
- package/dist/conversions.cjs +44 -0
- package/dist/conversions.d.cts +3 -0
- package/dist/conversions.js +1 -2
- package/dist/createThrottleController.cjs +183 -0
- package/dist/createThrottleController.d.cts +16 -0
- package/dist/createThrottleController.js +2 -3
- package/dist/debounce.cjs +125 -0
- package/dist/debounce.d.cts +45 -0
- package/dist/debounce.js +0 -1
- package/dist/dedent.cjs +57 -0
- package/dist/dedent.d.cts +4 -0
- package/dist/dedent.js +0 -1
- package/dist/deepEqual.cjs +88 -0
- package/dist/deepEqual.d.cts +4 -0
- package/dist/deepEqual.js +1 -2
- package/dist/enhancedMap.cjs +128 -0
- package/dist/enhancedMap.d.cts +20 -0
- package/dist/enhancedMap.d.ts +0 -2
- package/dist/enhancedMap.js +2 -3
- package/dist/exhaustiveMatch.cjs +55 -0
- package/dist/exhaustiveMatch.d.cts +6 -0
- package/dist/exhaustiveMatch.js +0 -1
- package/dist/interpolate.cjs +88 -0
- package/dist/interpolate.d.cts +11 -0
- package/dist/interpolate.js +2 -3
- package/dist/levenshtein.cjs +180 -0
- package/dist/levenshtein.d.cts +5 -0
- package/dist/levenshtein.js +0 -1
- package/dist/main.cjs +4 -0
- package/dist/main.d.cts +2 -0
- package/dist/main.d.ts +1 -1
- package/dist/main.js +0 -1
- package/dist/mathUtils.cjs +50 -0
- package/dist/mathUtils.d.cts +6 -0
- package/dist/mathUtils.js +1 -2
- package/dist/objUtils.cjs +67 -0
- package/dist/objUtils.d.cts +7 -0
- package/dist/objUtils.js +1 -2
- package/dist/parallelAsyncCalls.cjs +265 -0
- package/dist/{parallelAsyncResultCalls.d.ts → parallelAsyncCalls.d.cts} +7 -7
- package/dist/parallelAsyncCalls.d.ts +76 -0
- package/dist/{parallelAsyncResultCalls.js → parallelAsyncCalls.js} +7 -9
- package/dist/promiseUtils.cjs +38 -0
- package/dist/promiseUtils.d.cts +8 -0
- package/dist/promiseUtils.js +0 -1
- package/dist/rsResult.cjs +179 -0
- package/dist/rsResult.d.cts +88 -0
- package/dist/rsResult.d.ts +33 -63
- package/dist/rsResult.js +6 -10
- package/dist/runShellCmd.cjs +127 -0
- package/dist/runShellCmd.d.cts +23 -0
- package/dist/runShellCmd.d.ts +2 -1
- package/dist/runShellCmd.js +9 -4
- package/dist/shallowEqual.cjs +88 -0
- package/dist/shallowEqual.d.cts +4 -0
- package/dist/shallowEqual.js +0 -1
- package/dist/sleep.cjs +32 -0
- package/dist/sleep.d.cts +3 -0
- package/dist/sleep.js +1 -2
- package/dist/stringUtils.cjs +66 -0
- package/dist/stringUtils.d.cts +16 -0
- package/dist/stringUtils.d.ts +1 -3
- package/dist/stringUtils.js +1 -4
- package/dist/testUtils.cjs +357 -0
- package/dist/testUtils.d.cts +38 -0
- package/dist/testUtils.js +5 -6
- package/dist/typingFnUtils.cjs +55 -0
- package/dist/typingFnUtils.d.cts +15 -0
- package/dist/typingFnUtils.js +0 -1
- package/dist/typingTestUtils.cjs +43 -0
- package/dist/typingTestUtils.d.cts +12 -0
- package/dist/typingTestUtils.js +0 -1
- package/dist/typingUtils.cjs +18 -0
- package/dist/typingUtils.d.cts +11 -0
- package/dist/typingUtils.js +0 -1
- package/dist/yamlStringify.cjs +346 -0
- package/dist/yamlStringify.d.cts +8 -0
- package/dist/yamlStringify.js +3 -4
- package/package.json +64 -34
- package/dist/arrayUtils.js.map +0 -1
- package/dist/assertions.js.map +0 -1
- package/dist/castValues.js.map +0 -1
- package/dist/chunk-4QK76IRX.js.map +0 -1
- package/dist/chunk-FYMTZQ42.js.map +0 -1
- package/dist/chunk-GLZ5MZC5.js.map +0 -1
- package/dist/chunk-HLFWWIDK.js.map +0 -1
- package/dist/chunk-I7ZDKDUM.js +0 -217
- package/dist/chunk-I7ZDKDUM.js.map +0 -1
- package/dist/chunk-M74KKYE4.js.map +0 -1
- package/dist/chunk-MMKMF4GG.js.map +0 -1
- package/dist/chunk-NKCC3375.js.map +0 -1
- package/dist/chunk-SNAAKCTH.js.map +0 -1
- package/dist/chunk-W7X6NSGR.js.map +0 -1
- package/dist/consoleFmt.js.map +0 -1
- package/dist/conversions.js.map +0 -1
- package/dist/createThrottleController.js.map +0 -1
- package/dist/debounce.js.map +0 -1
- package/dist/dedent.js.map +0 -1
- package/dist/deepEqual.js.map +0 -1
- package/dist/enhancedMap.js.map +0 -1
- package/dist/exhaustiveMatch.js.map +0 -1
- package/dist/interpolate.js.map +0 -1
- package/dist/levenshtein.js.map +0 -1
- package/dist/main.js.map +0 -1
- package/dist/mathUtils.js.map +0 -1
- package/dist/objUtils.js.map +0 -1
- package/dist/parallelAsyncResultCalls.js.map +0 -1
- package/dist/promiseUtils.js.map +0 -1
- package/dist/rsResult.js.map +0 -1
- package/dist/runShellCmd.js.map +0 -1
- package/dist/shallowEqual.js.map +0 -1
- package/dist/sleep.js.map +0 -1
- package/dist/stringUtils.js.map +0 -1
- package/dist/testUtils.js.map +0 -1
- package/dist/typingFnUtils.js.map +0 -1
- package/dist/typingTestUtils.js.map +0 -1
- package/dist/typingUtils.js.map +0 -1
- package/dist/yamlStringify.js.map +0 -1
package/dist/levenshtein.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/levenshtein.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\n// cspell:disable\n// forked from https://github.com/ka-weihe/fastest-levenshtein/blob/master/mod.ts\n\nconst peq = new Uint32Array(0x10000);\n\nconst myers_32 = (a: string, b: string): number => {\n const n = a.length;\n const m = b.length;\n const lst = 1 << (n - 1);\n let pv = -1;\n let mv = 0;\n let sc = n;\n let i = n;\n while (i--) {\n peq[a.charCodeAt(i)]! |= 1 << i;\n }\n for (i = 0; i < m; i++) {\n let eq = peq[b.charCodeAt(i)]!;\n const xv = eq | mv;\n eq |= ((eq & pv) + pv) ^ pv;\n mv |= ~(eq | pv);\n pv &= eq;\n if (mv & lst) {\n sc++;\n }\n if (pv & lst) {\n sc--;\n }\n mv = (mv << 1) | 1;\n pv = (pv << 1) | ~(xv | mv);\n mv &= xv;\n }\n i = n;\n while (i--) {\n peq[a.charCodeAt(i)] = 0;\n }\n return sc;\n};\n\nconst myers_x = (b: string, a: string): number => {\n const n = a.length;\n const m = b.length;\n const mhc = [];\n const phc = [];\n const hsize = Math.ceil(n / 32);\n const vsize = Math.ceil(m / 32);\n for (let i = 0; i < hsize; i++) {\n phc[i] = -1;\n mhc[i] = 0;\n }\n let j = 0;\n for (; j < vsize - 1; j++) {\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)]! |= 1 << k;\n }\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)]!;\n const pb = (phc[(i / 32) | 0]! >>> i) & 1;\n const mb = (mhc[(i / 32) | 0]! >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0]! ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0]! ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n }\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m - start) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)]! |= 1 << k;\n }\n let score = m;\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)]!;\n const pb = (phc[(i / 32) | 0]! >>> i) & 1;\n const mb = (mhc[(i / 32) | 0]! >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n score += (ph >>> (m - 1)) & 1;\n score -= (mh >>> (m - 1)) & 1;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0]! ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0]! ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n return score;\n};\n\nexport function levenshteinDistance(a: string, b: string): number {\n if (a.length < b.length) {\n const tmp = b;\n b = a;\n a = tmp;\n }\n if (b.length === 0) {\n return a.length;\n }\n if (a.length <= 32) {\n return myers_32(a, b);\n }\n return myers_x(a, b);\n}\n\nexport function getClosestString(\n str: string,\n arr: readonly string[],\n maxDistance = 2,\n): string | undefined {\n let min_distance = Infinity;\n let closestString: string | undefined;\n for (let i = 0; i < arr.length; i++) {\n const dist = levenshteinDistance(str, arr[i]!);\n if (dist < min_distance && dist <= maxDistance) {\n min_distance = dist;\n closestString = arr[i];\n }\n }\n return closestString;\n}\n\nexport function getClosestStringsUpToDist(\n str: string,\n arr: readonly string[],\n maxDistance = 2,\n): string[] {\n const distanceMap = new Map<string, number>();\n\n for (const item of arr) {\n const distance = levenshteinDistance(str, item);\n if (distance <= maxDistance) {\n distanceMap.set(item, distance);\n }\n }\n\n return Array.from(distanceMap.entries())\n .sort((a, b) => a[1] - b[1])\n .map(([item]) => item);\n}\n"],"mappings":";AAIA,IAAM,MAAM,IAAI,YAAY,KAAO;AAEnC,IAAM,WAAW,CAAC,GAAW,MAAsB;AACjD,QAAM,IAAI,EAAE;AACZ,QAAM,IAAI,EAAE;AACZ,QAAM,MAAM,KAAM,IAAI;AACtB,MAAI,KAAK;AACT,MAAI,KAAK;AACT,MAAI,KAAK;AACT,MAAI,IAAI;AACR,SAAO,KAAK;AACV,QAAI,EAAE,WAAW,CAAC,CAAC,KAAM,KAAK;AAAA,EAChC;AACA,OAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,QAAI,KAAK,IAAI,EAAE,WAAW,CAAC,CAAC;AAC5B,UAAM,KAAK,KAAK;AAChB,WAAQ,KAAK,MAAM,KAAM;AACzB,UAAM,EAAE,KAAK;AACb,UAAM;AACN,QAAI,KAAK,KAAK;AACZ;AAAA,IACF;AACA,QAAI,KAAK,KAAK;AACZ;AAAA,IACF;AACA,SAAM,MAAM,IAAK;AACjB,SAAM,MAAM,IAAK,EAAE,KAAK;AACxB,UAAM;AAAA,EACR;AACA,MAAI;AACJ,SAAO,KAAK;AACV,QAAI,EAAE,WAAW,CAAC,CAAC,IAAI;AAAA,EACzB;AACA,SAAO;AACT;AAEA,IAAM,UAAU,CAAC,GAAW,MAAsB;AAChD,QAAM,IAAI,EAAE;AACZ,QAAM,IAAI,EAAE;AACZ,QAAM,MAAM,CAAC;AACb,QAAM,MAAM,CAAC;AACb,QAAM,QAAQ,KAAK,KAAK,IAAI,EAAE;AAC9B,QAAM,QAAQ,KAAK,KAAK,IAAI,EAAE;AAC9B,WAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC9B,QAAI,CAAC,IAAI;AACT,QAAI,CAAC,IAAI;AAAA,EACX;AACA,MAAI,IAAI;AACR,SAAO,IAAI,QAAQ,GAAG,KAAK;AACzB,QAAIA,MAAK;AACT,QAAIC,MAAK;AACT,UAAMC,SAAQ,IAAI;AAClB,UAAMC,QAAO,KAAK,IAAI,IAAI,CAAC,IAAID;AAC/B,aAAS,IAAIA,QAAO,IAAIC,OAAM,KAAK;AACjC,UAAI,EAAE,WAAW,CAAC,CAAC,KAAM,KAAK;AAAA,IAChC;AACA,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAM,KAAK,IAAI,EAAE,WAAW,CAAC,CAAC;AAC9B,YAAM,KAAM,IAAK,IAAI,KAAM,CAAC,MAAO,IAAK;AACxC,YAAM,KAAM,IAAK,IAAI,KAAM,CAAC,MAAO,IAAK;AACxC,YAAM,KAAK,KAAKH;AAChB,YAAM,OAAS,KAAK,MAAMC,OAAMA,MAAMA,MAAM,KAAK;AACjD,UAAI,KAAKD,MAAK,EAAE,KAAKC;AACrB,UAAI,KAAKA,MAAK;AACd,UAAK,OAAO,KAAM,IAAI;AACpB,YAAK,IAAI,KAAM,CAAC,KAAM,KAAK;AAAA,MAC7B;AACA,UAAK,OAAO,KAAM,IAAI;AACpB,YAAK,IAAI,KAAM,CAAC,KAAM,KAAK;AAAA,MAC7B;AACA,WAAM,MAAM,IAAK;AACjB,WAAM,MAAM,IAAK;AACjB,MAAAA,MAAK,KAAK,EAAE,KAAK;AACjB,MAAAD,MAAK,KAAK;AAAA,IACZ;AACA,aAAS,IAAIE,QAAO,IAAIC,OAAM,KAAK;AACjC,UAAI,EAAE,WAAW,CAAC,CAAC,IAAI;AAAA,IACzB;AAAA,EACF;AACA,MAAI,KAAK;AACT,MAAI,KAAK;AACT,QAAM,QAAQ,IAAI;AAClB,QAAM,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI;AACvC,WAAS,IAAI,OAAO,IAAI,MAAM,KAAK;AACjC,QAAI,EAAE,WAAW,CAAC,CAAC,KAAM,KAAK;AAAA,EAChC;AACA,MAAI,QAAQ;AACZ,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,UAAM,KAAK,IAAI,EAAE,WAAW,CAAC,CAAC;AAC9B,UAAM,KAAM,IAAK,IAAI,KAAM,CAAC,MAAO,IAAK;AACxC,UAAM,KAAM,IAAK,IAAI,KAAM,CAAC,MAAO,IAAK;AACxC,UAAM,KAAK,KAAK;AAChB,UAAM,OAAS,KAAK,MAAM,MAAM,KAAM,KAAM,KAAK;AACjD,QAAI,KAAK,KAAK,EAAE,KAAK;AACrB,QAAI,KAAK,KAAK;AACd,aAAU,OAAQ,IAAI,IAAM;AAC5B,aAAU,OAAQ,IAAI,IAAM;AAC5B,QAAK,OAAO,KAAM,IAAI;AACpB,UAAK,IAAI,KAAM,CAAC,KAAM,KAAK;AAAA,IAC7B;AACA,QAAK,OAAO,KAAM,IAAI;AACpB,UAAK,IAAI,KAAM,CAAC,KAAM,KAAK;AAAA,IAC7B;AACA,SAAM,MAAM,IAAK;AACjB,SAAM,MAAM,IAAK;AACjB,SAAK,KAAK,EAAE,KAAK;AACjB,SAAK,KAAK;AAAA,EACZ;AACA,WAAS,IAAI,OAAO,IAAI,MAAM,KAAK;AACjC,QAAI,EAAE,WAAW,CAAC,CAAC,IAAI;AAAA,EACzB;AACA,SAAO;AACT;AAEO,SAAS,oBAAoB,GAAW,GAAmB;AAChE,MAAI,EAAE,SAAS,EAAE,QAAQ;AACvB,UAAM,MAAM;AACZ,QAAI;AACJ,QAAI;AAAA,EACN;AACA,MAAI,EAAE,WAAW,GAAG;AAClB,WAAO,EAAE;AAAA,EACX;AACA,MAAI,EAAE,UAAU,IAAI;AAClB,WAAO,SAAS,GAAG,CAAC;AAAA,EACtB;AACA,SAAO,QAAQ,GAAG,CAAC;AACrB;AAEO,SAAS,iBACd,KACA,KACA,cAAc,GACM;AACpB,MAAI,eAAe;AACnB,MAAI;AACJ,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,UAAM,OAAO,oBAAoB,KAAK,IAAI,CAAC,CAAE;AAC7C,QAAI,OAAO,gBAAgB,QAAQ,aAAa;AAC9C,qBAAe;AACf,sBAAgB,IAAI,CAAC;AAAA,IACvB;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,0BACd,KACA,KACA,cAAc,GACJ;AACV,QAAM,cAAc,oBAAI,IAAoB;AAE5C,aAAW,QAAQ,KAAK;AACtB,UAAM,WAAW,oBAAoB,KAAK,IAAI;AAC9C,QAAI,YAAY,aAAa;AAC3B,kBAAY,IAAI,MAAM,QAAQ;AAAA,IAChC;AAAA,EACF;AAEA,SAAO,MAAM,KAAK,YAAY,QAAQ,CAAC,EACpC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAC1B,IAAI,CAAC,CAAC,IAAI,MAAM,IAAI;AACzB;","names":["mv","pv","start","vlen"]}
|
package/dist/main.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.ts"],"sourcesContent":["throw new Error('do not use this file');\n"],"mappings":";AAAA,MAAM,IAAI,MAAM,sBAAsB;","names":[]}
|
package/dist/mathUtils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/objUtils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/parallelAsyncResultCalls.ts"],"sourcesContent":["import { invariant, isObject } from './assertions';\nimport { NormalizedError, Result, normalizeError } from './rsResult';\nimport { sleep } from './sleep';\n\ntype ValidMetadata = string | number | boolean | Record<string, unknown>;\n\ntype TupleRunAllSuccess<T> =\n T extends () => Promise<Result<infer V>> ? Succeeded<V, undefined>\n : T extends { metadata: infer M; fn: () => Promise<Result<infer V>> } ?\n Succeeded<V, M>\n : never;\n\ntype TupleRunAllFailed<T> =\n T extends () => Promise<Result<any>> ?\n { metadata: undefined; error: NormalizedError }\n : T extends { metadata: infer M extends ValidMetadata } ?\n { metadata: M; error: NormalizedError }\n : never;\n\ntype TupleRunAllSettled<T> =\n T extends () => Promise<Result<infer V>> ?\n Succeeded<V, undefined> | Failed<undefined>\n : T extends { metadata: infer M; fn: () => Promise<Result<infer V>> } ?\n Succeeded<V, M> | Failed<M>\n : never;\n\ntype RunProps = {\n delayStart?: (index: number) => number;\n};\n\ntype Failed<M> = {\n metadata: M;\n error: NormalizedError;\n};\ntype Succeeded<R, M> = {\n value: R;\n metadata: M;\n};\n\nclass ParallelAsyncResultCalls<\n M extends ValidMetadata | undefined = undefined,\n R = unknown,\n> {\n private pendingCalls: {\n metadata: M;\n fn: () => Promise<Result<R>>;\n }[] = [];\n alreadyRun = false;\n\n constructor() {}\n\n add(\n call: M extends undefined ? () => Promise<Result<R>>\n : { metadata: M; fn: () => Promise<Result<R>> },\n ) {\n this.pendingCalls.push(\n isObject(call) ? call : { metadata: undefined as any, fn: call },\n );\n\n return this;\n }\n\n /** adds calls return tuples with inferred results */\n addTuple<\n T extends (M extends undefined ? () => Promise<Result<R>>\n : { metadata: M; fn: () => Promise<Result<R>> })[],\n >(\n ...calls: T\n ): {\n runAllSettled: (props?: RunProps) => Promise<{\n results: {\n [I in keyof T]: TupleRunAllSettled<T[I]>;\n };\n allFailed: boolean;\n }>;\n runAll: (props?: RunProps) => Promise<\n Result<\n {\n [I in keyof T]: TupleRunAllSuccess<T[I]>;\n },\n TupleRunAllFailed<T[number]>\n >\n >;\n } {\n for (const call of calls) {\n this.pendingCalls.push(\n isObject(call) ? call : { metadata: undefined as any, fn: call },\n );\n }\n\n return {\n runAll: this.runAll.bind(this) as any,\n runAllSettled: this.runAllSettled.bind(this) as any,\n };\n }\n\n async runAllSettled({ delayStart }: RunProps = {}) {\n invariant(!this.alreadyRun, 'Already run');\n\n const asyncResults = await Promise.allSettled(\n this.pendingCalls.map(async (call, i) => {\n try {\n if (delayStart) {\n await sleep(delayStart(i));\n }\n\n const result = await call.fn();\n\n return { result, callMetadata: call.metadata };\n } catch (exception) {\n return {\n result: Result.normalizedUnknownErr(exception),\n callMetadata: call.metadata,\n };\n }\n }),\n );\n\n const failed: Failed<M>[] = [];\n const succeeded: Succeeded<R, M>[] = [];\n const results: (Failed<M> | Succeeded<R, M>)[] = [];\n\n for (const asyncResult of asyncResults) {\n invariant(asyncResult.status === 'fulfilled');\n\n const { result, callMetadata } = asyncResult.value;\n\n if (result.ok) {\n const success = { value: result.value, metadata: callMetadata };\n results.push(success);\n succeeded.push(success);\n } else {\n const fail = { metadata: callMetadata, error: result.error };\n results.push(fail);\n failed.push(fail);\n }\n }\n\n const allFailed = failed.length === this.pendingCalls.length;\n\n this.alreadyRun = true;\n this.pendingCalls = [];\n\n return {\n failed,\n succeeded,\n allFailed,\n results,\n };\n }\n\n async runAll({\n delayStart,\n }: { delayStart?: (index: number) => number } = {}): Promise<\n Result<\n Succeeded<R, M>[],\n {\n metadata: M;\n error: NormalizedError;\n }\n >\n > {\n invariant(!this.alreadyRun, 'Already run');\n\n try {\n const asyncResults = await Promise.all(\n this.pendingCalls.map(async (call, i) => {\n try {\n if (delayStart) {\n await sleep(delayStart(i));\n }\n\n const result = await call.fn();\n\n if (!result.ok) {\n throw result.error;\n }\n\n return {\n value: result.value,\n metadata: call.metadata,\n };\n } catch (exception) {\n throw {\n metadata: call.metadata,\n error: normalizeError(exception),\n };\n }\n }),\n );\n\n return Result.ok(asyncResults);\n } catch (exception) {\n return Result.err(\n exception as {\n metadata: M;\n error: NormalizedError;\n },\n );\n } finally {\n this.alreadyRun = true;\n this.pendingCalls = [];\n }\n }\n}\n\n/**\n * Executes multiple asynchronous calls in parallel and collects the results in a easier to use format.\n *\n * @template R - The type of the result value.\n * @template M - The type of the call metadata.\n */\nexport function parallelAsyncResultCalls<\n M extends ValidMetadata | undefined = undefined,\n R = unknown,\n>() {\n return new ParallelAsyncResultCalls<M, R>();\n}\n"],"mappings":";;;;;;;;;;;;;;AAuCA,IAAM,2BAAN,MAGE;AAAA,EACQ,eAGF,CAAC;AAAA,EACP,aAAa;AAAA,EAEb,cAAc;AAAA,EAAC;AAAA,EAEf,IACE,MAEA;AACA,SAAK,aAAa;AAAA,MAChB,SAAS,IAAI,IAAI,OAAO,EAAE,UAAU,QAAkB,IAAI,KAAK;AAAA,IACjE;AAEA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,YAIK,OAgBH;AACA,eAAW,QAAQ,OAAO;AACxB,WAAK,aAAa;AAAA,QAChB,SAAS,IAAI,IAAI,OAAO,EAAE,UAAU,QAAkB,IAAI,KAAK;AAAA,MACjE;AAAA,IACF;AAEA,WAAO;AAAA,MACL,QAAQ,KAAK,OAAO,KAAK,IAAI;AAAA,MAC7B,eAAe,KAAK,cAAc,KAAK,IAAI;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,EAAE,WAAW,IAAc,CAAC,GAAG;AACjD,cAAU,CAAC,KAAK,YAAY,aAAa;AAEzC,UAAM,eAAe,MAAM,QAAQ;AAAA,MACjC,KAAK,aAAa,IAAI,OAAO,MAAM,MAAM;AACvC,YAAI;AACF,cAAI,YAAY;AACd,kBAAM,MAAM,WAAW,CAAC,CAAC;AAAA,UAC3B;AAEA,gBAAM,SAAS,MAAM,KAAK,GAAG;AAE7B,iBAAO,EAAE,QAAQ,cAAc,KAAK,SAAS;AAAA,QAC/C,SAAS,WAAW;AAClB,iBAAO;AAAA,YACL,QAAQ,OAAO,qBAAqB,SAAS;AAAA,YAC7C,cAAc,KAAK;AAAA,UACrB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAEA,UAAM,SAAsB,CAAC;AAC7B,UAAM,YAA+B,CAAC;AACtC,UAAM,UAA2C,CAAC;AAElD,eAAW,eAAe,cAAc;AACtC,gBAAU,YAAY,WAAW,WAAW;AAE5C,YAAM,EAAE,QAAQ,aAAa,IAAI,YAAY;AAE7C,UAAI,OAAO,IAAI;AACb,cAAM,UAAU,EAAE,OAAO,OAAO,OAAO,UAAU,aAAa;AAC9D,gBAAQ,KAAK,OAAO;AACpB,kBAAU,KAAK,OAAO;AAAA,MACxB,OAAO;AACL,cAAM,OAAO,EAAE,UAAU,cAAc,OAAO,OAAO,MAAM;AAC3D,gBAAQ,KAAK,IAAI;AACjB,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,IACF;AAEA,UAAM,YAAY,OAAO,WAAW,KAAK,aAAa;AAEtD,SAAK,aAAa;AAClB,SAAK,eAAe,CAAC;AAErB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,OAAO;AAAA,IACX;AAAA,EACF,IAAgD,CAAC,GAQ/C;AACA,cAAU,CAAC,KAAK,YAAY,aAAa;AAEzC,QAAI;AACF,YAAM,eAAe,MAAM,QAAQ;AAAA,QACjC,KAAK,aAAa,IAAI,OAAO,MAAM,MAAM;AACvC,cAAI;AACF,gBAAI,YAAY;AACd,oBAAM,MAAM,WAAW,CAAC,CAAC;AAAA,YAC3B;AAEA,kBAAM,SAAS,MAAM,KAAK,GAAG;AAE7B,gBAAI,CAAC,OAAO,IAAI;AACd,oBAAM,OAAO;AAAA,YACf;AAEA,mBAAO;AAAA,cACL,OAAO,OAAO;AAAA,cACd,UAAU,KAAK;AAAA,YACjB;AAAA,UACF,SAAS,WAAW;AAClB,kBAAM;AAAA,cACJ,UAAU,KAAK;AAAA,cACf,OAAO,eAAe,SAAS;AAAA,YACjC;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAEA,aAAO,OAAO,GAAG,YAAY;AAAA,IAC/B,SAAS,WAAW;AAClB,aAAO,OAAO;AAAA,QACZ;AAAA,MAIF;AAAA,IACF,UAAE;AACA,WAAK,aAAa;AAClB,WAAK,eAAe,CAAC;AAAA,IACvB;AAAA,EACF;AACF;AAQO,SAAS,2BAGZ;AACF,SAAO,IAAI,yBAA+B;AAC5C;","names":[]}
|
package/dist/promiseUtils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/promiseUtils.ts"],"sourcesContent":["type Deferred<T> = {\n resolve: (value: T | PromiseLike<T>) => void;\n reject: (reason: unknown) => void;\n promise: Promise<T>;\n};\n\nexport function defer<T = void>(): Deferred<T> {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason: unknown) => void;\n const promise = new Promise<T>((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n return { resolve, reject, promise };\n}\n"],"mappings":";AAMO,SAAS,QAA+B;AAC7C,MAAI;AACJ,MAAI;AACJ,QAAM,UAAU,IAAI,QAAW,CAAC,UAAU,YAAY;AACpD,cAAU;AACV,aAAS;AAAA,EACX,CAAC;AACD,SAAO,EAAE,SAAS,QAAQ,QAAQ;AACpC;","names":[]}
|
package/dist/rsResult.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/runShellCmd.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/runShellCmd.ts"],"sourcesContent":["/* eslint-disable no-console -- we need console here to print errors */\n\ntype CmdResult = {\n label: string | null;\n out: string;\n error: boolean;\n stdout: string;\n stderr: string;\n};\n\nimport { spawn } from 'child_process';\n\n(process.env as any).FORCE_COLOR = true;\n\ntype RunCmdOptions = {\n mock?: CmdResult;\n silent?: boolean | 'timeOnly';\n cwd?: string;\n throwOnError?: boolean;\n};\n\nexport function runCmd(\n label: string | null,\n command: string | string[],\n { mock, silent, throwOnError, cwd = process.cwd() }: RunCmdOptions = {},\n): Promise<CmdResult> {\n if (mock) return Promise.resolve(mock);\n\n if (label && (!silent || silent === 'timeOnly')) {\n console.log(`----${label}----`);\n console.time('✅');\n }\n\n return new Promise((resolve) => {\n const [cmd = '', ...args] =\n Array.isArray(command) ?\n command.flatMap((item) =>\n item.startsWith('$') ? item.replace('$', '').split(' ') : item,\n )\n : command.split(' ');\n const child = spawn(cmd, args, {\n cwd,\n });\n\n let stdout = '';\n let stderr = '';\n let out = '';\n\n child.stdout.on('data', (data) => {\n stdout += String(data);\n out += String(data);\n\n if (!silent) {\n console.log(String(data));\n }\n });\n\n child.stderr.on('data', (data) => {\n stderr += String(data);\n out += String(data);\n\n if (!silent) {\n console.log(String(data));\n }\n });\n\n child.on('close', (code) => {\n const hasError = code !== 0;\n\n if (!silent || silent === 'timeOnly') {\n if (!hasError) {\n console.timeEnd('✅');\n }\n\n console.log('\\n');\n }\n\n if (throwOnError && hasError) {\n if (silent) {\n if (label) {\n console.log(`----${label}----`);\n } else {\n console.trace();\n }\n console.error(stderr);\n }\n\n process.exit(1);\n }\n\n resolve({ label, out, stderr, stdout, error: hasError });\n });\n });\n}\n\nexport async function concurrentCmd(\n label: string,\n cmd: string | string[],\n onResult: (result: CmdResult) => void,\n) {\n const start = Date.now();\n\n const result = await runCmd(label, cmd, { silent: true });\n\n onResult(result);\n\n const elapsedSeconds = (Date.now() - start) / 1000;\n\n console.log(\n `${result.error ? '🔴' : '✅'} ${result.label} (${elapsedSeconds.toFixed(\n 1,\n )}s)`,\n );\n\n return () => {\n if (result.error) {\n console.log(`❌ ${result.label} errors:`);\n console.log(result.out);\n console.log('\\n');\n }\n };\n}\n\nexport async function runCmdUnwrap(\n label: string | null,\n command: string | string[],\n {\n silent,\n }: {\n silent?: boolean | 'timeOnly';\n } = {},\n) {\n return (await runCmd(label, command, { silent, throwOnError: true })).stdout;\n}\n\nexport function runCmdSilent(command: string | string[]) {\n return runCmd(null, command, { silent: true });\n}\n\nexport function runCmdSilentUnwrap(command: string | string[]) {\n return runCmdUnwrap(null, command, { silent: true });\n}\n"],"mappings":"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","names":[]}
|
package/dist/shallowEqual.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/shallowEqual.ts"],"sourcesContent":["/* eslint-disable */\nvar has = Object.prototype.hasOwnProperty;\n\nfunction find(iter: any[], tar: any, key?: any) {\n for (key of iter.keys()) {\n if (key === tar) return key;\n }\n}\n\n/** shallow equal version of https://github.com/lukeed/dequal */\nexport function shallowEqual(foo: any, bar: any): boolean {\n var ctor, len, tmp;\n if (foo === bar) return true;\n\n if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n if (ctor === Date) return shallowEqual(foo.getTime(), bar.getTime());\n if (ctor === RegExp) return foo.toString() === bar.toString();\n\n if (ctor === Array) {\n if ((len = foo.length) === bar.length) {\n while (len-- && foo[len] === bar[len]);\n }\n return len === -1;\n }\n\n if (ctor === Set) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len;\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!bar.has(tmp)) return false;\n }\n return true;\n }\n\n if (ctor === Map) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len[0];\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (len[1] !== bar.get(tmp)) {\n return false;\n }\n }\n return true;\n }\n\n if (!ctor || typeof foo === 'object') {\n len = 0;\n for (ctor in foo) {\n if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n if (!(ctor in bar) || !(foo[ctor] === bar[ctor])) return false;\n }\n return Object.keys(bar).length === len;\n }\n }\n\n return foo !== foo && bar !== bar;\n}\n"],"mappings":";AACA,IAAI,MAAM,OAAO,UAAU;AAE3B,SAAS,KAAK,MAAa,KAAU,KAAW;AAC9C,OAAK,OAAO,KAAK,KAAK,GAAG;AACvB,QAAI,QAAQ,IAAK,QAAO;AAAA,EAC1B;AACF;AAGO,SAAS,aAAa,KAAU,KAAmB;AACxD,MAAI,MAAM,KAAK;AACf,MAAI,QAAQ,IAAK,QAAO;AAExB,MAAI,OAAO,QAAQ,OAAO,IAAI,iBAAiB,IAAI,aAAa;AAC9D,QAAI,SAAS,KAAM,QAAO,aAAa,IAAI,QAAQ,GAAG,IAAI,QAAQ,CAAC;AACnE,QAAI,SAAS,OAAQ,QAAO,IAAI,SAAS,MAAM,IAAI,SAAS;AAE5D,QAAI,SAAS,OAAO;AAClB,WAAK,MAAM,IAAI,YAAY,IAAI,QAAQ;AACrC,eAAO,SAAS,IAAI,GAAG,MAAM,IAAI,GAAG,EAAE;AAAA,MACxC;AACA,aAAO,QAAQ;AAAA,IACjB;AAEA,QAAI,SAAS,KAAK;AAChB,UAAI,IAAI,SAAS,IAAI,MAAM;AACzB,eAAO;AAAA,MACT;AACA,WAAK,OAAO,KAAK;AACf,cAAM;AACN,YAAI,OAAO,OAAO,QAAQ,UAAU;AAClC,gBAAM,KAAK,KAAK,GAAG;AACnB,cAAI,CAAC,IAAK,QAAO;AAAA,QACnB;AACA,YAAI,CAAC,IAAI,IAAI,GAAG,EAAG,QAAO;AAAA,MAC5B;AACA,aAAO;AAAA,IACT;AAEA,QAAI,SAAS,KAAK;AAChB,UAAI,IAAI,SAAS,IAAI,MAAM;AACzB,eAAO;AAAA,MACT;AACA,WAAK,OAAO,KAAK;AACf,cAAM,IAAI,CAAC;AACX,YAAI,OAAO,OAAO,QAAQ,UAAU;AAClC,gBAAM,KAAK,KAAK,GAAG;AACnB,cAAI,CAAC,IAAK,QAAO;AAAA,QACnB;AACA,YAAI,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG,GAAG;AAC3B,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,QAAQ,OAAO,QAAQ,UAAU;AACpC,YAAM;AACN,WAAK,QAAQ,KAAK;AAChB,YAAI,IAAI,KAAK,KAAK,IAAI,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,KAAK,IAAI,EAAG,QAAO;AACjE,YAAI,EAAE,QAAQ,QAAQ,EAAE,IAAI,IAAI,MAAM,IAAI,IAAI,GAAI,QAAO;AAAA,MAC3D;AACA,aAAO,OAAO,KAAK,GAAG,EAAE,WAAW;AAAA,IACrC;AAAA,EACF;AAEA,SAAO,QAAQ,OAAO,QAAQ;AAChC;","names":[]}
|
package/dist/sleep.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/stringUtils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/testUtils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/testUtils.ts"],"sourcesContent":["import { arrayWithPrevAndIndex, filterAndMap } from './arrayUtils';\nimport { isObject } from './assertions';\nimport { deepEqual } from './deepEqual';\nimport { clampMin } from './mathUtils';\nimport { omit, pick } from './objUtils';\n\nexport function createLoggerStore({\n filterKeys: defaultFilterKeys,\n rejectKeys: defaultRejectKeys,\n splitLongLines: defaultSplitLongLines = true,\n maxLineLengthBeforeSplit: defaultMaxLineLengthBeforeSplit = 80,\n fromLastSnapshot: defaultFromLastSnapshot = false,\n arrays: defaultArrays = { firstNItems: 1 },\n changesOnly: defaultChangesOnly = false,\n useEmojiForBooleans: defaultUseEmojiForBooleans = true,\n}: {\n filterKeys?: string[];\n rejectKeys?: string[];\n splitLongLines?: true;\n maxLineLengthBeforeSplit?: number;\n fromLastSnapshot?: boolean;\n arrays?: 'all' | 'firstAndLast' | 'length' | { firstNItems: number };\n changesOnly?: boolean;\n useEmojiForBooleans?: boolean;\n} = {}) {\n let logs: Record<string, unknown>[] = [];\n let logsTime: number[] = [];\n let startTime = Date.now();\n let onNextLog: () => void = () => {};\n\n function reset(keepLastRender = false) {\n logs = keepLastRender ? [logs.at(-1)!] : [];\n logsTime = [];\n startTime = Date.now();\n }\n\n function add(\n render: Record<string, unknown> | readonly Record<string, unknown>[],\n ) {\n if (!isObject(render)) {\n for (const [i, r] of render.entries()) {\n logs.push({\n i: i + 1,\n ...r,\n });\n logsTime.push(Date.now() - startTime);\n }\n } else {\n logs.push(render);\n logsTime.push(Date.now() - startTime);\n }\n\n onNextLog();\n\n if (logs.length > 100) {\n throw new Error('Too many logs');\n }\n }\n\n function logsCount() {\n return logs.filter((item) => !item._lastSnapshotMark).length;\n }\n\n async function waitNextLog(timeout = 50) {\n return new Promise<void>((resolve) => {\n const timeoutId = setTimeout(() => {\n throw new Error('Timeout');\n }, timeout);\n\n onNextLog = () => {\n clearTimeout(timeoutId);\n resolve();\n };\n });\n }\n\n function getSnapshot({\n arrays = defaultArrays,\n changesOnly = defaultChangesOnly,\n filterKeys = defaultFilterKeys,\n rejectKeys = defaultRejectKeys,\n includeLastSnapshotEndMark = true,\n splitLongLines = defaultSplitLongLines,\n maxLineLengthBeforeSplit = defaultMaxLineLengthBeforeSplit,\n fromLastSnapshot = defaultFromLastSnapshot,\n useEmojiForBooleans = defaultUseEmojiForBooleans,\n }: {\n arrays?: 'all' | 'firstAndLast' | 'length' | { firstNItems: number };\n changesOnly?: boolean;\n filterKeys?: string[];\n rejectKeys?: string[];\n includeLastSnapshotEndMark?: boolean;\n splitLongLines?: boolean;\n maxLineLengthBeforeSplit?: number;\n fromLastSnapshot?: boolean;\n useEmojiForBooleans?: boolean;\n } = {}) {\n let rendersToUse = logs;\n\n if (changesOnly || filterKeys || rejectKeys) {\n rendersToUse = [];\n\n for (let { item, prev } of arrayWithPrevAndIndex(logs)) {\n if (item._lastSnapshotMark || item._mark) {\n rendersToUse.push(item);\n continue;\n }\n\n if (filterKeys) {\n prev = prev && pick(prev, filterKeys);\n item = pick(item, filterKeys);\n }\n\n if (rejectKeys) {\n prev = prev && omit(prev, rejectKeys);\n item = omit(item, rejectKeys);\n }\n\n if (!deepEqual(prev, item)) {\n rendersToUse.push(item);\n }\n }\n }\n\n if (fromLastSnapshot) {\n const lastSnapshotMark = rendersToUse.findLastIndex(\n (item) => item._lastSnapshotMark === true,\n );\n\n rendersToUse = rendersToUse.slice(clampMin(lastSnapshotMark, 0));\n }\n\n logs.push({ _lastSnapshotMark: true });\n\n const propDivider = '⋅';\n\n const snapShot = `\\n${filterAndMap(rendersToUse, (render, i) => {\n if (render._lastSnapshotMark) {\n if (includeLastSnapshotEndMark) {\n if (rendersToUse.length === 1) {\n return '⋅⋅⋅';\n }\n\n if (i !== rendersToUse.length - 1) {\n return '⋅⋅⋅';\n }\n\n return false;\n } else {\n return false;\n }\n }\n\n if (render._mark) {\n const prevIsLastSnapshotMark = rendersToUse[i - 1]?._lastSnapshotMark;\n let mark = `${\n prevIsLastSnapshotMark ? '' : '\\n'\n }>>> ${String(render._mark)}`;\n\n const nextRender = rendersToUse[i + 1];\n\n if (nextRender && !nextRender._mark && !nextRender._lastSnapshotMark) {\n mark = `${mark}\\n`;\n }\n\n return mark;\n }\n\n let line = '';\n\n for (const [key, _value] of Object.entries(render)) {\n let value = _value;\n\n if (Array.isArray(value)) {\n if (arrays === 'length') {\n value = `Array(${value.length})`;\n } else if (arrays === 'firstAndLast' && value.length > 2) {\n const intermediateSize = clampMin(value.length - 2, 0);\n\n value = [value[0], `…(${intermediateSize} between)`, value.at(-1)];\n } else if (typeof arrays === 'object' && value.length > 2) {\n value = [\n ...value.slice(0, arrays.firstNItems),\n `…(${value.length - arrays.firstNItems} more)`,\n ];\n }\n }\n\n if (typeof value === 'boolean' && useEmojiForBooleans) {\n value = value ? '✅' : '❌';\n }\n\n if (value === '') {\n value = `''`;\n }\n\n if (typeof value === 'object' && value !== null) {\n value = JSON.stringify(value)\n .replace(/:true/g, ':✅')\n .replace(/:false/g, ':❌')\n .replace(/:\"\"/g, \":''\")\n .replace(/\"/g, '')\n .replace(/,/g, ', ');\n }\n\n line += `${key}: ${value} ${propDivider} `;\n }\n\n line = line.slice(0, (propDivider.length + 2) * -1);\n\n if (splitLongLines && line.length > maxLineLengthBeforeSplit) {\n const parts = line.split(` ${propDivider} `);\n\n if (parts.length === 1) {\n return line;\n }\n\n line = '';\n\n const propDividerML = '⋅';\n\n for (const { item, index } of arrayWithPrevAndIndex(parts)) {\n if (index === 0) {\n line += `┌─\\n${propDividerML} `;\n } else if (index === parts.length - 1) {\n line += `${propDividerML} `;\n } else {\n line += `${propDividerML} `;\n }\n\n line += `${item}\\n`;\n\n if (index === parts.length - 1) {\n line += '└─';\n }\n }\n } else {\n line = `-> ${line}`;\n }\n\n return line;\n }).join('\\n')}\\n`;\n\n return snapShot === `\\n⋅⋅⋅\\n` ? '⋅⋅⋅empty⋅⋅⋅' : snapShot;\n }\n\n function addMark(label: string) {\n add({ _mark: label });\n }\n\n return {\n add,\n reset,\n getSnapshot,\n waitNextLog,\n get changesSnapshot() {\n return getSnapshot({ changesOnly: true });\n },\n get snapshot() {\n return getSnapshot();\n },\n get snapshotFromLast() {\n return getSnapshot({ fromLastSnapshot: true });\n },\n logsCount,\n get rendersTime() {\n return logsTime;\n },\n addMark,\n };\n}\n\nexport function getResultFn<T extends (...args: any[]) => any>(\n fnGetter: () => T,\n wrapper?: (...args: any[]) => any,\n): T {\n return ((...args: any[]) => {\n const fn = fnGetter();\n\n if (wrapper) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return wrapper(fn(...args));\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return fn(...args);\n }\n }) as T;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/typingFnUtils.ts"],"sourcesContent":["import { NonPartial } from './typingUtils';\n\nexport function asNonPartial<T extends Record<string, unknown>>(\n obj: T,\n): NonPartial<T> {\n return obj;\n}\n\n/** a wrapper to Object.entries with a better typing inference */\nexport function typedObjectEntries<T extends Record<string, unknown>>(\n obj: T,\n): NonNullable<\n {\n [K in keyof T]: [K, T[K]];\n }[keyof T]\n>[] {\n return Object.entries(obj) as any;\n}\n\n/** a wrapper to Object.keys with a better typing inference */\nexport function typedObjectKeys<T extends Record<string, unknown>>(\n obj: T,\n): (keyof T)[] {\n return Object.keys(obj) as any;\n}\n\n/** a safe way to cast types, use to substitute the `as Type` */\nexport function asType<T = unknown>(value: T): T {\n return value;\n}\n\n/** narrow a string to a union of strings */\nexport function narrowStringToUnion<const T extends string>(\n key: string | undefined | null,\n union: T[],\n): T | undefined {\n if (key && union.includes(key as T)) {\n return key as T;\n }\n\n return undefined;\n}\n"],"mappings":";AAEO,SAAS,aACd,KACe;AACf,SAAO;AACT;AAGO,SAAS,mBACd,KAKE;AACF,SAAO,OAAO,QAAQ,GAAG;AAC3B;AAGO,SAAS,gBACd,KACa;AACb,SAAO,OAAO,KAAK,GAAG;AACxB;AAGO,SAAS,OAAoB,OAAa;AAC/C,SAAO;AACT;AAGO,SAAS,oBACd,KACA,OACe;AACf,MAAI,OAAO,MAAM,SAAS,GAAQ,GAAG;AACnC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/typingTestUtils.ts"],"sourcesContent":["export type TestTypeIsEqual<X, Y> =\n (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? true\n : false;\nexport type TestTypeNotEqual<X, Y> =\n true extends TestTypeIsEqual<X, Y> ? false : true;\n\nfunction test(title: string, func: () => any) {\n func();\n}\n\nfunction describe(title: string, func: () => any) {\n func();\n}\n\nfunction expectType<T extends true>() {\n return {} as T;\n}\n\nexport const typingTest = {\n test,\n describe,\n expectType,\n};\n"],"mappings":";AAMA,SAAS,KAAK,OAAe,MAAiB;AAC5C,OAAK;AACP;AAEA,SAAS,SAAS,OAAe,MAAiB;AAChD,OAAK;AACP;AAEA,SAAS,aAA6B;AACpC,SAAO,CAAC;AACV;AAEO,IAAM,aAAa;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AACF;","names":[]}
|
package/dist/typingUtils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/yamlStringify.ts"],"sourcesContent":["import { isObject, isPlainObject } from './assertions';\nimport { bytesToHumanReadable } from './conversions';\nimport { truncateString } from './stringUtils';\n\nexport function yamlStringify(\n obj: unknown,\n {\n maxLineLength = 100,\n showUndefined,\n maxDepth = 50,\n addRootObjSpaces = 'beforeAndAfter',\n }: {\n maxLineLength?: number;\n showUndefined?: boolean;\n maxDepth?: number;\n addRootObjSpaces?: 'before' | 'after' | 'beforeAndAfter' | false;\n } = {},\n): string {\n if (isObject(obj) || Array.isArray(obj) || typeof obj === 'function') {\n return `${stringifyValue(obj, '', maxLineLength, !!showUndefined, maxDepth, 0, addRootObjSpaces)}\\n`;\n }\n\n return JSON.stringify(obj) || 'undefined';\n}\n\nfunction stringifyValue(\n value: unknown,\n indent: string,\n maxLineLength: number,\n showUndefined: boolean,\n maxDepth: number,\n depth: number,\n addObjSpaces: 'before' | 'after' | 'beforeAndAfter' | false,\n): string {\n let result = '';\n const childIndent = `${indent} `;\n\n if (isPlainObject(value)) {\n if (Object.keys(value).length === 0) {\n return '{}';\n }\n\n let prevValue: unknown;\n let afterSpaceWasAdded = false;\n\n for (let [key, objVal] of Object.entries(value)) {\n if (objVal === undefined && !showUndefined) {\n continue;\n }\n\n if (depth > maxDepth) {\n objVal = `{max depth reached}`;\n }\n\n const normalizedValue = normalizeValue(objVal);\n\n if (normalizedValue !== null) {\n objVal = normalizedValue[1];\n key = `${key}{${normalizedValue[0]}}`;\n }\n\n const valueString = stringifyValue(\n objVal,\n childIndent,\n maxLineLength,\n showUndefined,\n maxDepth,\n depth + 1,\n addObjSpaces,\n );\n\n if (\n !afterSpaceWasAdded &&\n indent === '' &&\n isObject(objVal) &&\n prevValue &&\n (addObjSpaces === 'before' || addObjSpaces === 'beforeAndAfter')\n ) {\n result += '\\n';\n }\n\n if (Array.isArray(objVal)) {\n const arrayIsSingleLine = valueString.split('\\n').length === 1;\n\n if (arrayIsSingleLine && !valueString.trim().startsWith('-')) {\n result += `${indent}${key}: `;\n } else {\n result += `${indent}${key}:\\n`;\n }\n } else if (isObject(objVal)) {\n if (Object.keys(objVal).length === 0) {\n result += `${indent}${key}: `;\n } else {\n result += `${indent}${key}:\\n`;\n }\n } else {\n result += `${indent}${key}: `;\n }\n\n result += valueString;\n result += '\\n';\n\n if (indent === '') {\n if (isObject(objVal)) {\n if (addObjSpaces === 'after' || addObjSpaces === 'beforeAndAfter') {\n result += '\\n';\n afterSpaceWasAdded = true;\n } else {\n afterSpaceWasAdded = false;\n }\n }\n }\n\n prevValue = objVal;\n }\n\n return result.trimEnd();\n }\n\n if (Array.isArray(value)) {\n let arrayWasAdded = false;\n\n if (\n value.length === 0 ||\n value.every(\n (item) =>\n typeof item === 'string' ||\n typeof item === 'number' ||\n typeof item === 'boolean' ||\n item === null ||\n item === undefined,\n )\n ) {\n let line = '';\n\n line += `[`;\n\n line += value\n .map((item) => {\n let valueToUse = item;\n\n if (depth > maxDepth) {\n valueToUse = `{max depth reached}`;\n }\n\n if (typeof valueToUse === 'string' && valueToUse.includes('\\n')) {\n valueToUse = valueToUse.replace(/\\n/g, '\\\\n');\n }\n\n return stringifyValue(\n valueToUse,\n '',\n maxLineLength,\n showUndefined,\n maxDepth,\n depth + 1,\n addObjSpaces,\n );\n })\n .join(', ');\n\n line += ']';\n\n if (line.length <= maxLineLength) {\n result += line;\n arrayWasAdded = true;\n }\n }\n\n if (!arrayWasAdded) {\n for (let item of value) {\n if (depth > maxDepth) {\n item = `{max depth reached}`;\n }\n\n result += `${indent}- `;\n\n if (Array.isArray(item) || isObject(item)) {\n let arrayString = stringifyValue(\n item,\n childIndent,\n maxLineLength,\n showUndefined,\n maxDepth,\n depth + 1,\n addObjSpaces,\n );\n\n arrayString = arrayString.trimStart();\n\n result += arrayString;\n } else {\n result += stringifyValue(\n item,\n childIndent,\n maxLineLength,\n showUndefined,\n maxDepth,\n depth + 1,\n addObjSpaces,\n );\n }\n\n result += '\\n';\n }\n }\n\n return result.trimEnd();\n }\n\n if (typeof value === 'string') {\n if (value.includes('\\n')) {\n const lines = value.split('\\n');\n\n for (const [i, line] of lines.entries()) {\n if (i === 0) {\n if (value.endsWith('\\n')) {\n result += `|`;\n } else {\n result += `|-`;\n }\n\n result += `\\n${indent}${line}\\n`;\n } else {\n result += `${indent}${line}\\n`;\n }\n }\n } else {\n if (value.includes(\"'\")) {\n result += `\"${value}\"`;\n } else {\n result += `'${value}'`;\n }\n }\n\n return result.trimEnd();\n }\n\n if (\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null ||\n value === undefined\n ) {\n return String(value).trimEnd();\n }\n\n const normalizedValue = normalizeValue(value);\n\n if (normalizedValue !== null) {\n return stringifyValue(\n {\n [`${normalizedValue[0]}#`]: normalizedValue[1],\n },\n indent,\n maxLineLength,\n showUndefined,\n maxDepth,\n depth + 1,\n addObjSpaces,\n );\n }\n\n return JSON.stringify(value);\n}\n\nfunction normalizeValue(value: unknown): [string, unknown] | null {\n if (value === null || isPlainObject(value) || Array.isArray(value)) {\n return null;\n }\n\n if (value instanceof Map) {\n const mapEntries = Array.from(value.entries());\n\n let mapValue: unknown;\n\n if (mapEntries.every(([key]) => typeof key === 'string')) {\n const mapObjValue: Record<string, unknown> = {};\n\n for (const [key, val] of mapEntries) {\n mapObjValue[key] = val;\n }\n\n mapValue = mapObjValue;\n } else {\n mapValue = mapEntries.map(([key, val]) => ({\n key,\n value: val,\n }));\n }\n\n return ['Map', mapValue];\n }\n\n if (value instanceof Set) {\n const setValue = Array.from(value);\n\n return ['Set', setValue];\n }\n\n if (value instanceof Date) {\n return ['Date', value.toISOString()];\n }\n\n if (value instanceof RegExp) {\n return ['RegExp', value.toString()];\n }\n\n if (value instanceof Error) {\n return [\n 'Error',\n {\n message: value.message,\n name: value.name,\n stack: value.stack,\n },\n ];\n }\n\n if (value instanceof File) {\n return [\n 'File',\n {\n name: value.name,\n type: value.type,\n lastModified: new Date(value.lastModified).toISOString(),\n size: bytesToHumanReadable(value.size),\n },\n ];\n }\n\n if (typeof value === 'object') {\n if ('toJSON' in value && typeof value.toJSON === 'function') {\n return [value.constructor.name, value.toJSON()];\n }\n\n if ('toString' in value && typeof value.toString === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n const stringValue = value.toString();\n\n if (stringValue.toString() !== '[object Object]') {\n return [value.constructor.name, stringValue];\n }\n }\n\n const objectValue = { ...value };\n\n const displayValue: Record<string, unknown> = {};\n let addedKeys = 0;\n\n for (const [key, item] of Object.entries(objectValue)) {\n if (addedKeys > 4) {\n displayValue['...and more properties'] =\n Object.keys(objectValue).length - 4;\n break;\n }\n\n if (\n typeof item === 'string' ||\n typeof item === 'number' ||\n typeof item === 'boolean' ||\n item === null ||\n item === undefined\n ) {\n displayValue[key] = item;\n addedKeys++;\n }\n }\n\n return [String(value.constructor.name), displayValue];\n }\n\n if (typeof value === 'function') {\n const functionString = value.toString();\n\n return [\n `Function`,\n functionString.includes('\\n') ?\n truncateString(functionString.split('\\n').join(''), 40)\n : functionString,\n ];\n }\n\n return null;\n}\n"],"mappings":"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","names":["normalizedValue"]}
|