@naturalcycles/js-lib 14.276.0 → 15.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.
Files changed (353) hide show
  1. package/cfg/frontend/tsconfig.json +3 -3
  2. package/dist/abort.js +1 -4
  3. package/dist/array/array.util.d.ts +1 -1
  4. package/dist/array/array.util.js +47 -88
  5. package/dist/array/range.d.ts +2 -2
  6. package/dist/array/range.js +7 -12
  7. package/dist/bot.js +6 -10
  8. package/dist/browser/adminService.d.ts +1 -1
  9. package/dist/browser/adminService.js +10 -14
  10. package/dist/browser/analytics.util.js +10 -15
  11. package/dist/browser/i18n/fetchTranslationLoader.d.ts +3 -3
  12. package/dist/browser/i18n/fetchTranslationLoader.js +1 -5
  13. package/dist/browser/i18n/translation.service.d.ts +1 -1
  14. package/dist/browser/i18n/translation.service.js +5 -10
  15. package/dist/browser/imageFitter.js +1 -5
  16. package/dist/browser/script.util.js +8 -12
  17. package/dist/browser/topbar.js +7 -10
  18. package/dist/datetime/dateInterval.d.ts +2 -2
  19. package/dist/datetime/dateInterval.js +7 -11
  20. package/dist/datetime/localDate.d.ts +3 -3
  21. package/dist/datetime/localDate.js +40 -44
  22. package/dist/datetime/localTime.d.ts +3 -3
  23. package/dist/datetime/localTime.js +36 -40
  24. package/dist/datetime/timeInterval.d.ts +2 -2
  25. package/dist/datetime/timeInterval.js +6 -10
  26. package/dist/datetime/wallTime.d.ts +3 -3
  27. package/dist/datetime/wallTime.js +5 -9
  28. package/dist/decorators/asyncMemo.decorator.d.ts +3 -3
  29. package/dist/decorators/asyncMemo.decorator.js +12 -17
  30. package/dist/decorators/createPromiseDecorator.js +3 -6
  31. package/dist/decorators/debounce.d.ts +1 -1
  32. package/dist/decorators/debounce.decorator.d.ts +1 -1
  33. package/dist/decorators/debounce.decorator.js +5 -9
  34. package/dist/decorators/debounce.js +2 -6
  35. package/dist/decorators/decorator.util.d.ts +1 -1
  36. package/dist/decorators/decorator.util.js +3 -8
  37. package/dist/decorators/logMethod.decorator.d.ts +1 -1
  38. package/dist/decorators/logMethod.decorator.js +11 -14
  39. package/dist/decorators/memo.decorator.d.ts +3 -3
  40. package/dist/decorators/memo.decorator.js +11 -16
  41. package/dist/decorators/memo.util.d.ts +2 -2
  42. package/dist/decorators/memo.util.js +11 -17
  43. package/dist/decorators/memoFn.d.ts +3 -3
  44. package/dist/decorators/memoFn.js +3 -6
  45. package/dist/decorators/memoFnAsync.d.ts +3 -3
  46. package/dist/decorators/memoFnAsync.js +5 -8
  47. package/dist/decorators/memoSimple.decorator.d.ts +1 -1
  48. package/dist/decorators/memoSimple.decorator.js +6 -10
  49. package/dist/decorators/retry.decorator.d.ts +1 -1
  50. package/dist/decorators/retry.decorator.js +3 -6
  51. package/dist/decorators/swarmSafe.decorator.js +3 -7
  52. package/dist/decorators/timeout.decorator.d.ts +1 -1
  53. package/dist/decorators/timeout.decorator.js +7 -10
  54. package/dist/define.d.ts +1 -1
  55. package/dist/define.js +11 -19
  56. package/dist/deviceIdService.js +7 -11
  57. package/dist/enum.util.d.ts +1 -1
  58. package/dist/enum.util.js +20 -42
  59. package/dist/env/buildInfo.d.ts +1 -1
  60. package/dist/env/buildInfo.js +3 -6
  61. package/dist/env.js +2 -6
  62. package/dist/error/assert.d.ts +3 -3
  63. package/dist/error/assert.js +30 -44
  64. package/dist/error/error.model.d.ts +2 -2
  65. package/dist/error/error.model.js +1 -2
  66. package/dist/error/error.util.d.ts +1 -1
  67. package/dist/error/error.util.js +25 -44
  68. package/dist/error/errorMode.js +2 -5
  69. package/dist/error/try.d.ts +2 -2
  70. package/dist/error/try.js +15 -23
  71. package/dist/error/tryCatch.d.ts +2 -2
  72. package/dist/error/tryCatch.js +6 -11
  73. package/dist/form.util.d.ts +1 -1
  74. package/dist/form.util.js +2 -6
  75. package/dist/http/fetcher.d.ts +3 -3
  76. package/dist/http/fetcher.js +48 -53
  77. package/dist/http/fetcher.model.d.ts +5 -5
  78. package/dist/http/fetcher.model.js +1 -2
  79. package/dist/http/http.model.js +1 -4
  80. package/dist/index.d.ts +96 -96
  81. package/dist/index.js +96 -99
  82. package/dist/is.util.d.ts +2 -2
  83. package/dist/is.util.js +12 -27
  84. package/dist/iter/asyncIterable2.d.ts +3 -3
  85. package/dist/iter/asyncIterable2.js +8 -12
  86. package/dist/iter/iterable2.d.ts +2 -2
  87. package/dist/iter/iterable2.js +8 -12
  88. package/dist/json-schema/from-data/generateJsonSchemaFromData.d.ts +1 -1
  89. package/dist/json-schema/from-data/generateJsonSchemaFromData.js +4 -7
  90. package/dist/json-schema/jsonSchema.cnst.d.ts +1 -1
  91. package/dist/json-schema/jsonSchema.cnst.js +1 -4
  92. package/dist/json-schema/jsonSchema.model.d.ts +1 -1
  93. package/dist/json-schema/jsonSchema.model.js +1 -2
  94. package/dist/json-schema/jsonSchema.util.d.ts +2 -2
  95. package/dist/json-schema/jsonSchema.util.js +5 -8
  96. package/dist/json-schema/jsonSchemaBuilder.d.ts +2 -2
  97. package/dist/json-schema/jsonSchemaBuilder.js +16 -25
  98. package/dist/json-schema/jsonSchemas.d.ts +2 -2
  99. package/dist/json-schema/jsonSchemas.js +5 -8
  100. package/dist/log/commonLogger.js +14 -21
  101. package/dist/math/accumulatingAverage.js +1 -5
  102. package/dist/math/math.util.js +11 -19
  103. package/dist/math/sma.js +1 -5
  104. package/dist/math/stack.util.js +11 -16
  105. package/dist/nanoid.js +2 -6
  106. package/dist/number/createDeterministicRandom.js +1 -4
  107. package/dist/number/number.util.d.ts +1 -1
  108. package/dist/number/number.util.js +9 -20
  109. package/dist/object/deepEquals.js +3 -8
  110. package/dist/object/map2.js +1 -5
  111. package/dist/object/object.util.d.ts +2 -2
  112. package/dist/object/object.util.js +40 -70
  113. package/dist/object/set2.js +1 -5
  114. package/dist/object/sortObject.d.ts +1 -1
  115. package/dist/object/sortObject.js +1 -4
  116. package/dist/object/sortObjectDeep.js +1 -4
  117. package/dist/polyfill.js +1 -4
  118. package/dist/promise/abortable.d.ts +1 -1
  119. package/dist/promise/abortable.js +2 -7
  120. package/dist/promise/pDefer.js +1 -4
  121. package/dist/promise/pDelay.d.ts +2 -2
  122. package/dist/promise/pDelay.js +4 -8
  123. package/dist/promise/pFilter.d.ts +1 -1
  124. package/dist/promise/pFilter.js +1 -4
  125. package/dist/promise/pHang.js +1 -4
  126. package/dist/promise/pMap.d.ts +2 -2
  127. package/dist/promise/pMap.js +17 -20
  128. package/dist/promise/pProps.js +1 -4
  129. package/dist/promise/pQueue.d.ts +2 -2
  130. package/dist/promise/pQueue.js +7 -11
  131. package/dist/promise/pRetry.d.ts +1 -1
  132. package/dist/promise/pRetry.js +8 -12
  133. package/dist/promise/pState.js +1 -4
  134. package/dist/promise/pTimeout.d.ts +3 -3
  135. package/dist/promise/pTimeout.js +7 -11
  136. package/dist/semver.d.ts +1 -1
  137. package/dist/semver.js +13 -18
  138. package/dist/string/case.js +9 -14
  139. package/dist/string/escape.js +2 -6
  140. package/dist/string/hash.util.d.ts +1 -1
  141. package/dist/string/hash.util.js +4 -10
  142. package/dist/string/json.util.d.ts +1 -1
  143. package/dist/string/json.util.js +5 -10
  144. package/dist/string/leven.js +1 -4
  145. package/dist/string/lodash/unicodeWords.js +1 -4
  146. package/dist/string/lodash/words.js +3 -6
  147. package/dist/string/pupa.d.ts +1 -1
  148. package/dist/string/pupa.js +4 -9
  149. package/dist/string/readingTime.d.ts +1 -1
  150. package/dist/string/readingTime.js +1 -4
  151. package/dist/string/regex.js +1 -4
  152. package/dist/string/safeJsonStringify.d.ts +1 -1
  153. package/dist/string/safeJsonStringify.js +1 -4
  154. package/dist/string/slugify.js +1 -4
  155. package/dist/string/string.util.js +15 -32
  156. package/dist/string/stringify.d.ts +1 -1
  157. package/dist/string/stringify.js +10 -14
  158. package/dist/string/url.util.d.ts +1 -1
  159. package/dist/string/url.util.js +2 -6
  160. package/dist/time/time.util.d.ts +1 -1
  161. package/dist/time/time.util.js +3 -8
  162. package/dist/typeFest.js +1 -2
  163. package/dist/types.d.ts +7 -3
  164. package/dist/types.js +21 -23
  165. package/dist/unit/size.util.js +5 -12
  166. package/dist/web.d.ts +1 -1
  167. package/dist/web.js +1 -5
  168. package/dist/zod/index.d.ts +2 -2
  169. package/dist/zod/index.js +4 -10
  170. package/dist/zod/zod.shared.schemas.js +36 -39
  171. package/dist/zod/zod.util.js +7 -14
  172. package/package.json +7 -8
  173. package/src/array/array.util.ts +3 -3
  174. package/src/array/range.ts +2 -2
  175. package/src/bot.ts +1 -1
  176. package/src/browser/adminService.ts +4 -4
  177. package/src/browser/analytics.util.ts +1 -1
  178. package/src/browser/i18n/fetchTranslationLoader.ts +3 -3
  179. package/src/browser/i18n/translation.service.ts +2 -2
  180. package/src/browser/script.util.ts +2 -2
  181. package/src/datetime/dateInterval.ts +3 -3
  182. package/src/datetime/localDate.ts +5 -5
  183. package/src/datetime/localTime.ts +6 -6
  184. package/src/datetime/timeInterval.ts +3 -3
  185. package/src/datetime/wallTime.ts +4 -4
  186. package/src/decorators/asyncMemo.decorator.ts +7 -7
  187. package/src/decorators/createPromiseDecorator.ts +1 -1
  188. package/src/decorators/debounce.decorator.ts +2 -2
  189. package/src/decorators/debounce.ts +1 -1
  190. package/src/decorators/decorator.util.ts +1 -1
  191. package/src/decorators/logMethod.decorator.ts +4 -4
  192. package/src/decorators/memo.decorator.ts +7 -7
  193. package/src/decorators/memo.util.ts +4 -4
  194. package/src/decorators/memoFn.ts +4 -4
  195. package/src/decorators/memoFnAsync.ts +5 -5
  196. package/src/decorators/memoSimple.decorator.ts +4 -4
  197. package/src/decorators/retry.decorator.ts +2 -2
  198. package/src/decorators/swarmSafe.decorator.ts +2 -2
  199. package/src/decorators/timeout.decorator.ts +4 -4
  200. package/src/define.ts +3 -3
  201. package/src/deviceIdService.ts +3 -3
  202. package/src/enum.util.ts +1 -1
  203. package/src/env/buildInfo.ts +2 -2
  204. package/src/error/assert.ts +7 -7
  205. package/src/error/error.model.ts +2 -2
  206. package/src/error/error.util.ts +5 -5
  207. package/src/error/try.ts +5 -5
  208. package/src/error/tryCatch.ts +3 -3
  209. package/src/form.util.ts +1 -1
  210. package/src/http/fetcher.model.ts +5 -5
  211. package/src/http/fetcher.ts +20 -15
  212. package/src/index.ts +96 -96
  213. package/src/is.util.ts +2 -2
  214. package/src/iter/asyncIterable2.ts +3 -3
  215. package/src/iter/iterable2.ts +2 -2
  216. package/src/json-schema/from-data/generateJsonSchemaFromData.ts +2 -2
  217. package/src/json-schema/jsonSchema.cnst.ts +1 -1
  218. package/src/json-schema/jsonSchema.model.ts +1 -1
  219. package/src/json-schema/jsonSchema.util.ts +4 -4
  220. package/src/json-schema/jsonSchemaBuilder.ts +5 -5
  221. package/src/json-schema/jsonSchemas.ts +2 -2
  222. package/src/math/math.util.ts +2 -2
  223. package/src/math/stack.util.ts +1 -1
  224. package/src/number/number.util.ts +1 -1
  225. package/src/object/object.util.ts +3 -3
  226. package/src/object/sortObject.ts +1 -1
  227. package/src/promise/abortable.ts +1 -1
  228. package/src/promise/pDelay.ts +3 -3
  229. package/src/promise/pFilter.ts +1 -1
  230. package/src/promise/pMap.ts +2 -2
  231. package/src/promise/pQueue.ts +4 -4
  232. package/src/promise/pRetry.ts +2 -2
  233. package/src/promise/pTimeout.ts +4 -4
  234. package/src/semver.ts +3 -3
  235. package/src/string/case.ts +2 -2
  236. package/src/string/hash.util.ts +1 -1
  237. package/src/string/json.util.ts +2 -2
  238. package/src/string/lodash/words.ts +1 -1
  239. package/src/string/pupa.ts +2 -2
  240. package/src/string/readingTime.ts +1 -1
  241. package/src/string/safeJsonStringify.ts +1 -1
  242. package/src/string/stringify.ts +4 -4
  243. package/src/string/url.util.ts +1 -1
  244. package/src/time/time.util.ts +1 -1
  245. package/src/types.ts +15 -3
  246. package/src/web.ts +1 -1
  247. package/src/zod/index.ts +2 -2
  248. package/src/zod/zod.util.ts +1 -1
  249. package/dist-esm/abort.js +0 -12
  250. package/dist-esm/array/array.util.js +0 -458
  251. package/dist-esm/array/range.js +0 -34
  252. package/dist-esm/bot.js +0 -130
  253. package/dist-esm/browser/adminService.js +0 -94
  254. package/dist-esm/browser/analytics.util.js +0 -54
  255. package/dist-esm/browser/i18n/fetchTranslationLoader.js +0 -13
  256. package/dist-esm/browser/i18n/translation.service.js +0 -56
  257. package/dist-esm/browser/imageFitter.js +0 -65
  258. package/dist-esm/browser/script.util.js +0 -46
  259. package/dist-esm/browser/topbar.js +0 -135
  260. package/dist-esm/datetime/dateInterval.js +0 -80
  261. package/dist-esm/datetime/localDate.js +0 -719
  262. package/dist-esm/datetime/localTime.js +0 -996
  263. package/dist-esm/datetime/timeInterval.js +0 -88
  264. package/dist-esm/datetime/wallTime.js +0 -70
  265. package/dist-esm/decorators/asyncMemo.decorator.js +0 -111
  266. package/dist-esm/decorators/createPromiseDecorator.js +0 -82
  267. package/dist-esm/decorators/debounce.decorator.js +0 -17
  268. package/dist-esm/decorators/debounce.js +0 -114
  269. package/dist-esm/decorators/decorator.util.js +0 -31
  270. package/dist-esm/decorators/logMethod.decorator.js +0 -85
  271. package/dist-esm/decorators/memo.decorator.js +0 -80
  272. package/dist-esm/decorators/memo.util.js +0 -97
  273. package/dist-esm/decorators/memoFn.js +0 -29
  274. package/dist-esm/decorators/memoFnAsync.js +0 -35
  275. package/dist-esm/decorators/memoSimple.decorator.js +0 -55
  276. package/dist-esm/decorators/retry.decorator.js +0 -9
  277. package/dist-esm/decorators/swarmSafe.decorator.js +0 -38
  278. package/dist-esm/decorators/timeout.decorator.js +0 -19
  279. package/dist-esm/define.js +0 -109
  280. package/dist-esm/deviceIdService.js +0 -105
  281. package/dist-esm/enum.util.js +0 -157
  282. package/dist-esm/env/buildInfo.js +0 -19
  283. package/dist-esm/env.js +0 -19
  284. package/dist-esm/error/assert.js +0 -122
  285. package/dist-esm/error/error.model.js +0 -1
  286. package/dist-esm/error/error.util.js +0 -337
  287. package/dist-esm/error/errorMode.js +0 -20
  288. package/dist-esm/error/try.js +0 -105
  289. package/dist-esm/error/tryCatch.js +0 -41
  290. package/dist-esm/form.util.js +0 -16
  291. package/dist-esm/http/fetcher.js +0 -704
  292. package/dist-esm/http/fetcher.model.js +0 -3
  293. package/dist-esm/http/http.model.js +0 -1
  294. package/dist-esm/index.js +0 -96
  295. package/dist-esm/is.util.js +0 -70
  296. package/dist-esm/iter/asyncIterable2.js +0 -103
  297. package/dist-esm/iter/iterable2.js +0 -87
  298. package/dist-esm/json-schema/from-data/generateJsonSchemaFromData.js +0 -86
  299. package/dist-esm/json-schema/jsonSchema.cnst.js +0 -38
  300. package/dist-esm/json-schema/jsonSchema.model.js +0 -1
  301. package/dist-esm/json-schema/jsonSchema.util.js +0 -27
  302. package/dist-esm/json-schema/jsonSchemaBuilder.js +0 -352
  303. package/dist-esm/json-schema/jsonSchemas.js +0 -6
  304. package/dist-esm/log/commonLogger.js +0 -78
  305. package/dist-esm/math/accumulatingAverage.js +0 -32
  306. package/dist-esm/math/math.util.js +0 -85
  307. package/dist-esm/math/sma.js +0 -43
  308. package/dist-esm/math/stack.util.js +0 -82
  309. package/dist-esm/nanoid.js +0 -57
  310. package/dist-esm/number/createDeterministicRandom.js +0 -18
  311. package/dist-esm/number/number.util.js +0 -109
  312. package/dist-esm/object/deepEquals.js +0 -170
  313. package/dist-esm/object/map2.js +0 -21
  314. package/dist-esm/object/object.util.js +0 -435
  315. package/dist-esm/object/set2.js +0 -15
  316. package/dist-esm/object/sortObject.js +0 -21
  317. package/dist-esm/object/sortObjectDeep.js +0 -17
  318. package/dist-esm/polyfill.js +0 -6
  319. package/dist-esm/promise/abortable.js +0 -31
  320. package/dist-esm/promise/pDefer.js +0 -17
  321. package/dist-esm/promise/pDelay.js +0 -37
  322. package/dist-esm/promise/pFilter.js +0 -5
  323. package/dist-esm/promise/pHang.js +0 -6
  324. package/dist-esm/promise/pMap.js +0 -174
  325. package/dist-esm/promise/pProps.js +0 -20
  326. package/dist-esm/promise/pQueue.js +0 -101
  327. package/dist-esm/promise/pRetry.js +0 -64
  328. package/dist-esm/promise/pState.js +0 -14
  329. package/dist-esm/promise/pTimeout.js +0 -64
  330. package/dist-esm/semver.js +0 -149
  331. package/dist-esm/string/case.js +0 -24
  332. package/dist-esm/string/escape.js +0 -49
  333. package/dist-esm/string/hash.util.js +0 -67
  334. package/dist-esm/string/json.util.js +0 -46
  335. package/dist-esm/string/leven.js +0 -77
  336. package/dist-esm/string/lodash/unicodeWords.js +0 -68
  337. package/dist-esm/string/lodash/words.js +0 -31
  338. package/dist-esm/string/pupa.js +0 -54
  339. package/dist-esm/string/readingTime.js +0 -102
  340. package/dist-esm/string/regex.js +0 -6
  341. package/dist-esm/string/safeJsonStringify.js +0 -39
  342. package/dist-esm/string/slugify.js +0 -66
  343. package/dist-esm/string/string.util.js +0 -99
  344. package/dist-esm/string/stringify.js +0 -133
  345. package/dist-esm/string/url.util.js +0 -42
  346. package/dist-esm/time/time.util.js +0 -61
  347. package/dist-esm/typeFest.js +0 -2
  348. package/dist-esm/types.js +0 -59
  349. package/dist-esm/unit/size.util.js +0 -43
  350. package/dist-esm/web.js +0 -40
  351. package/dist-esm/zod/index.js +0 -4
  352. package/dist-esm/zod/zod.shared.schemas.js +0 -92
  353. package/dist-esm/zod/zod.util.js +0 -52
@@ -1,133 +0,0 @@
1
- import { _isBackendErrorResponseObject, _isErrorLike, _isErrorObject } from '../error/error.util';
2
- import { _jsonParseIfPossible } from './json.util';
3
- import { _safeJsonStringify } from './safeJsonStringify';
4
- const supportsAggregateError = typeof globalThis.AggregateError === 'function';
5
- let globalStringifyFunction = _safeJsonStringify;
6
- /**
7
- * Allows to set Global "stringifyFunction" that will be used to "pretty-print" objects
8
- * in various cases.
9
- *
10
- * Used, for example, by _stringify() to pretty-print objects/arrays.
11
- *
12
- * Defaults to _safeJsonStringify.
13
- *
14
- * Node.js project can set it to _inspect, which allows to use `util.inspect`
15
- * as pretty-printing function.
16
- *
17
- * It's recommended that this function is circular-reference-safe.
18
- */
19
- export function setGlobalStringifyFunction(fn) {
20
- globalStringifyFunction = fn;
21
- }
22
- /**
23
- * Inspired by `_inspect` from nodejs-lib, which is based on util.inpect that is not available in the Browser.
24
- * Potentially can do this (with extra 2Kb gz size): https://github.com/deecewan/browser-util-inspect
25
- *
26
- * Transforms ANY to human-readable string (via JSON.stringify pretty).
27
- * Safe (no error throwing).
28
- *
29
- * Correctly prints Errors, AppErrors, ErrorObjects: error.message + \n + _stringify(error.data)
30
- *
31
- * Enforces max length (default to 1000, pass 0 to skip it).
32
- *
33
- * Logs numbers as-is, e.g: `6`.
34
- * Logs strings as-is (without single quotes around, unlike default util.inspect behavior).
35
- * Otherwise - just uses JSON.stringify().
36
- *
37
- * Returns 'empty_string' if empty string is passed.
38
- * Returns 'undefined' if undefined is passed (default util.inspect behavior).
39
- */
40
- export function _stringify(obj, opt = {}) {
41
- if (obj === undefined)
42
- return 'undefined';
43
- if (obj === null)
44
- return 'null';
45
- if (typeof obj === 'function')
46
- return 'function';
47
- if (typeof obj === 'symbol')
48
- return obj.toString();
49
- let s;
50
- // Parse JSON string, if possible
51
- obj = _jsonParseIfPossible(obj); // in case it's e.g non-pretty JSON, or even a stringified ErrorObject
52
- //
53
- // HttpErrorResponse
54
- //
55
- if (_isBackendErrorResponseObject(obj)) {
56
- return _stringify(obj.error, opt);
57
- }
58
- if (obj instanceof Error || _isErrorLike(obj)) {
59
- const { includeErrorCause = true } = opt;
60
- //
61
- // Error or ErrorLike
62
- //
63
- // Omit "default" error name as non-informative
64
- // UPD: no, it's still important to understand that we're dealing with Error and not just some string
65
- // if (obj?.name === 'Error') {
66
- // s = obj.message
67
- // }
68
- // if (_isErrorObject(obj) && _isHttpErrorObject(obj)) {
69
- // // Printing (0) to avoid ambiguity
70
- // s = `${obj.name}(${obj.data.backendResponseStatusCode}): ${obj.message}`
71
- // }
72
- s = [obj.name, obj.message].filter(Boolean).join(': ');
73
- if (typeof obj.code === 'string') {
74
- // Error that has no `data`, but has `code` property
75
- s += `\ncode: ${obj.code}`;
76
- }
77
- if (opt.includeErrorData && _isErrorObject(obj) && Object.keys(obj.data).length) {
78
- s += '\n' + _stringify(obj.data, opt);
79
- }
80
- if (opt.includeErrorStack && obj.stack) {
81
- // Here we're using the previously-generated "title line" (e.g "Error: some_message"),
82
- // concatenating it with the Stack (but without the title line of the Stack)
83
- // This is to fix the rare error (happened with Got) where `err.message` was changed,
84
- // but err.stack had "old" err.message
85
- // This should "fix" that
86
- const sLines = s.split('\n').length;
87
- s = [s, ...obj.stack.split('\n').slice(sLines)].join('\n');
88
- }
89
- if (supportsAggregateError && obj instanceof AggregateError && obj.errors.length) {
90
- s = [
91
- s,
92
- `${obj.errors.length} error(s):`,
93
- ...obj.errors.map((err, i) => `${i + 1}. ${_stringify(err, opt)}`),
94
- ].join('\n');
95
- }
96
- if (obj.cause && includeErrorCause) {
97
- s = s + '\nCaused by: ' + _stringify(obj.cause, opt);
98
- }
99
- }
100
- else if (typeof obj === 'string') {
101
- //
102
- // String
103
- //
104
- s = obj.trim() || 'empty_string';
105
- }
106
- else {
107
- //
108
- // Other
109
- //
110
- if (obj instanceof Map) {
111
- obj = Object.fromEntries(obj);
112
- }
113
- else if (obj instanceof Set) {
114
- obj = [...obj];
115
- }
116
- try {
117
- const { stringifyFn = globalStringifyFunction } = opt;
118
- s = stringifyFn(obj, undefined, 2);
119
- }
120
- catch {
121
- s = String(obj); // fallback
122
- }
123
- }
124
- // Shouldn't happen, but some weird input parameters may return this
125
- if (s === undefined)
126
- return 'undefined';
127
- // Handle maxLen
128
- const { maxLen = 10000 } = opt;
129
- if (maxLen && s.length > maxLen) {
130
- s = s.slice(0, maxLen) + `... ${Math.ceil(s.length / 1024)} KB message truncated`;
131
- }
132
- return s;
133
- }
@@ -1,42 +0,0 @@
1
- /**
2
- * Parses `location.search` string (e.g `?a=1&b=2`) into a StringMap, e.g:
3
- * `{ a: '1', b: '2' }`
4
- *
5
- * Pass `location.search` to it in the Frontend, or any other string on the Backend (where `location.search` is not available).
6
- *
7
- * Works both with and without leading `?` character.
8
- *
9
- * Yes, there's `URLSearchParams` existing in the Frontend (not in Node yet), but it's API is not
10
- * as convenient. And the implementation here is super-small.
11
- *
12
- * Goal of this function is to produce exactly same output as URLSearchParams would.
13
- */
14
- export function _parseQueryString(search) {
15
- const qs = {};
16
- search
17
- .slice(search.startsWith('?') ? 1 : 0)
18
- .split('&')
19
- .forEach(p => {
20
- const [k, v] = p.split('=');
21
- if (!k)
22
- return;
23
- qs[decodeURIComponent(k)] = decodeURIComponent(v || '');
24
- });
25
- return qs;
26
- }
27
- /**
28
- * A wrapper around `new URL(href)`, but it returns `null` instead of throwing an error.
29
- * While `URL.parse` exists, and behaves similarly, it's not widely supported.
30
- *
31
- * `null` was chosen instead of `undefined` in the return type union to make it easier to move to `URL.parse` if it ever becomes widely supported.
32
- */
33
- export function _toUrlOrNull(url, base) {
34
- if (typeof url !== 'string')
35
- return null;
36
- try {
37
- return new URL(url, base || undefined);
38
- }
39
- catch {
40
- return null;
41
- }
42
- }
@@ -1,61 +0,0 @@
1
- /**
2
- * using _ = blockTimer()
3
- * // will log "took 1.234 sec" on dispose
4
- *
5
- * using _ = blockTimer('named')
6
- * // will log "named took 1.234 sec" on dispose
7
- *
8
- * @experimental
9
- */
10
- export function _blockTimer(name) {
11
- const started = Date.now();
12
- return {
13
- [Symbol.dispose]() {
14
- console.log(`${name ? name + ' ' : ''}took ${_since(started)}`);
15
- },
16
- };
17
- }
18
- /**
19
- * Returns time passed since `from` until `until` (default to Date.now())
20
- */
21
- export function _since(from, until = Date.now()) {
22
- return _ms(until - from);
23
- }
24
- /**
25
- * Returns, e.g:
26
- * 125 ms
27
- * 1.125 sec
28
- * 11 sec
29
- * 1m12s
30
- * 59m2s
31
- * 1h3m12s
32
- */
33
- export function _ms(millis) {
34
- // <1 sec
35
- if (millis < 1000)
36
- return `${Math.round(millis)} ms`;
37
- // < 5 sec
38
- if (millis < 5000) {
39
- const s = millis / 1000;
40
- return `${Math.trunc(s) === s ? s : s.toFixed(3)} sec`;
41
- }
42
- const sec = Math.floor(millis / 1000) % 60;
43
- const min = Math.floor(millis / (60 * 1000)) % 60;
44
- const hrs = Math.floor(millis / (3600 * 1000));
45
- // <1 hr
46
- if (hrs === 0) {
47
- // <1 min
48
- if (min === 0)
49
- return `${sec} sec`;
50
- return `${min}m${sec}s`;
51
- }
52
- if (hrs < 24) {
53
- return `${hrs}h${min}m`;
54
- }
55
- if (hrs < 48) {
56
- return `${Math.round(hrs + min / 60)}h`;
57
- }
58
- // >= 48 hours
59
- const days = Math.floor(hrs / 24);
60
- return `${days} days`;
61
- }
@@ -1,2 +0,0 @@
1
- /* eslint-disable */
2
- export {};
package/dist-esm/types.js DELETED
@@ -1,59 +0,0 @@
1
- /**
2
- * Symbol to indicate END of Sequence.
3
- */
4
- export const END = Symbol('END');
5
- /**
6
- * Symbol to indicate SKIP of item (e.g in AbortableMapper)
7
- */
8
- export const SKIP = Symbol('SKIP');
9
- /**
10
- * Symbol to indicate cache miss.
11
- * To distinguish from cache returning `undefined` or `null`.
12
- */
13
- export const MISS = Symbol('MISS');
14
- export const _passthroughMapper = item => item;
15
- export const _passUndefinedMapper = () => undefined;
16
- /**
17
- * Function that does nothings and returns `undefined`.
18
- */
19
- export const _noop = (..._args) => undefined;
20
- export const _passthroughPredicate = () => true;
21
- export const _passNothingPredicate = () => false;
22
- /**
23
- * Needed due to https://github.com/microsoft/TypeScript/issues/13778
24
- * Only affects typings, no runtime effect.
25
- */
26
- export const _stringMapValues = Object.values;
27
- /**
28
- * Needed due to https://github.com/microsoft/TypeScript/issues/13778
29
- * Only affects typings, no runtime effect.
30
- */
31
- export const _stringMapEntries = Object.entries;
32
- /**
33
- * Alias of `Object.keys`, but returns keys typed as `keyof T`, not as just `string`.
34
- * This is how TypeScript should work, actually.
35
- */
36
- export const _objectKeys = Object.keys;
37
- /**
38
- * Alias of `Object.entries`, but returns better-typed output.
39
- *
40
- * So e.g you can use _objectEntries(obj).map([k, v] => {})
41
- * and `k` will be `keyof obj` instead of generic `string`.
42
- */
43
- export const _objectEntries = Object.entries;
44
- /**
45
- * Utility function that helps to cast *existing variable* to needed type T.
46
- *
47
- * @example
48
- * try {} catch (err) {
49
- * // err is unknown here
50
- * _typeCast<AppError>(err)
51
- * // now err is of type AppError
52
- * err.data = {} // can be done, because it was casted
53
- * }
54
- */
55
- export function _typeCast(v) { }
56
- /**
57
- * Type-safe Object.assign that checks that part is indeed a Partial<T>
58
- */
59
- export const _objectAssign = Object.assign;
@@ -1,43 +0,0 @@
1
- export function _gb(b) {
2
- return Math.round(b / 1024 ** 3);
3
- }
4
- export function _mb(b) {
5
- return Math.round(b / 1024 ** 2);
6
- }
7
- export function _kb(b) {
8
- return Math.round(b / 1024);
9
- }
10
- /**
11
- * Byte size to Human byte size string
12
- */
13
- export function _hb(b = 0) {
14
- if (b < 1024)
15
- return `${Math.round(b)} byte(s)`;
16
- if (b < 1024 ** 2)
17
- return `${(b / 1024).toPrecision(3)} Kb`;
18
- if (b < 1024 ** 3)
19
- return `${(b / 1024 ** 2).toPrecision(3)} Mb`;
20
- if (b < 1024 ** 4)
21
- return `${(b / 1024 ** 3).toPrecision(3)} Gb`;
22
- if (b < 1024 ** 5)
23
- return `${(b / 1024 ** 4).toPrecision(3)} Tb`;
24
- return `${Math.round(b / 1024 ** 4)} Tb`;
25
- }
26
- /**
27
- * hc stands for "human count", similar to "human bytes" `_hb` function.
28
- * Helpful to print big numbers, as it adds `K` (kilo), `M` (mega), etc to make
29
- * them more readable.
30
- */
31
- export function _hc(c = 0) {
32
- if (c < 10 ** 4)
33
- return String(c);
34
- if (c < 10 ** 6)
35
- return (c / 10 ** 3).toPrecision(3) + ' K';
36
- if (c < 10 ** 9)
37
- return (c / 10 ** 6).toPrecision(3) + ' M'; // million
38
- if (c < 10 ** 12)
39
- return (c / 10 ** 9).toPrecision(3) + ' B'; // billion
40
- if (c < 10 ** 15)
41
- return (c / 10 ** 12).toPrecision(3) + ' T'; // trillion
42
- return Math.round(c / 10 ** 12) + ' T';
43
- }
package/dist-esm/web.js DELETED
@@ -1,40 +0,0 @@
1
- /// <reference lib="es2022" preserve="true" />
2
- /// <reference lib="dom" preserve="true" />
3
- /**
4
- * Implements WebStorage API by using in-memory storage.
5
- * Can be useful in SSR environment or unit tests.
6
- *
7
- * This is how localStorage can be mocked in Node:
8
- *
9
- * Object.assign(globalThis, {
10
- * localStorage: new InMemoryWebStorage(),
11
- * })
12
- *
13
- * @experimental
14
- */
15
- export class InMemoryWebStorage {
16
- constructor(data = {}) {
17
- this.data = data;
18
- }
19
- // Not implementing "free property access" now for simplicity,
20
- // but can be implemented with Proxy
21
- // [ name: string ]: any
22
- getItem(key) {
23
- return this.data[key] ?? null;
24
- }
25
- setItem(key, value) {
26
- this.data[key] = String(value);
27
- }
28
- removeItem(key) {
29
- delete this.data[key];
30
- }
31
- key(index) {
32
- return Object.keys(this.data)[index] ?? null;
33
- }
34
- clear() {
35
- this.data = {};
36
- }
37
- get length() {
38
- return Object.keys(this.data).length;
39
- }
40
- }
@@ -1,4 +0,0 @@
1
- export * from './zod.shared.schemas';
2
- export * from './zod.util';
3
- import { z, ZodError, ZodSchema } from 'zod';
4
- export { z, ZodError, ZodSchema };
@@ -1,92 +0,0 @@
1
- import { z } from 'zod';
2
- export const TS_2500 = 16725225600; // 2500-01-01
3
- export const TS_2000 = 946684800; // 2000-01-01
4
- export const zUnixTimestamp = z
5
- .number()
6
- .int()
7
- .min(0)
8
- .max(TS_2500, 'Must be a UnixTimestamp number')
9
- .describe('UnixTimestamp');
10
- export const zUnixTimestamp2000 = z
11
- .number()
12
- .int()
13
- .min(TS_2000)
14
- .max(TS_2500, 'Must be a UnixTimestamp number after 2000-01-01')
15
- .describe('UnixTimestamp2000');
16
- export const zUnixTimestampMillis = z
17
- .number()
18
- .int()
19
- .min(0)
20
- .max(TS_2500 * 1000, 'Must be a UnixTimestampMillis number')
21
- .describe('UnixTimestampMillis');
22
- export const zUnixTimestampMillis2000 = z
23
- .number()
24
- .int()
25
- .min(TS_2000 * 1000)
26
- .max(TS_2500 * 1000, 'Must be a UnixTimestampMillis number after 2000-01-01')
27
- .describe('UnixTimestampMillis2000');
28
- export const zSemVer = z
29
- .string()
30
- .regex(/^[0-9]+\.[0-9]+\.[0-9]+$/, 'Must be a SemVer string')
31
- .describe('SemVer');
32
- export const zIsoDateString = z
33
- .string()
34
- .refine(v => {
35
- return /^\d{4}-\d{2}-\d{2}$/.test(v);
36
- }, 'Must be an IsoDateString')
37
- .describe('IsoDateString');
38
- export const zEmail = z
39
- .string()
40
- .trim()
41
- .email()
42
- .transform(s => s.toLowerCase())
43
- .describe('Email');
44
- export const BASE62_REGEX = /^[a-zA-Z0-9]+$/;
45
- export const BASE64_REGEX = /^[A-Za-z0-9+/]+={0,2}$/;
46
- export const BASE64URL_REGEX = /^[\w-/]+$/;
47
- export const zBase62 = z
48
- .string()
49
- .regex(BASE62_REGEX, 'Must be a base62 string')
50
- .describe('Base62String');
51
- export const zBase64 = z
52
- .string()
53
- .regex(BASE64_REGEX, 'Must be a base64 string')
54
- .describe('Base64String');
55
- export const zBase64Url = z
56
- .string()
57
- .regex(BASE64URL_REGEX, 'Must be a base64url string')
58
- .describe('Base64UrlString');
59
- export const JWT_REGEX = /^[\w-]+\.[\w-]+\.[\w-]+$/;
60
- export const zJwt = z.string().regex(JWT_REGEX, 'Must be a JWT string').describe('JWTString');
61
- export const zId = z
62
- .string()
63
- .regex(/^[a-zA-Z0-9_]{6,64}$/, 'Must be an id string')
64
- .describe('IdString');
65
- export const zIdBase62 = z
66
- .string()
67
- .regex(/^[a-zA-Z0-9]{8,64}$/, 'Must be a base62 id string')
68
- .describe('Base62Id');
69
- export const zIdBase64 = z
70
- .string()
71
- .regex(/^[A-Za-z0-9+/]{6,62}={0,2}$/, 'Must be a base64 id string')
72
- .describe('Base64Id');
73
- export const zIdBase64Url = z
74
- .string()
75
- .regex(/^[\w-/]{8,64}$/, 'Must be a base64url id string')
76
- .describe('Base64UrlId');
77
- /**
78
- * "Slug" - a valid URL, filename, etc.
79
- */
80
- export const zSlug = z
81
- .string()
82
- .regex(/^[a-z0-9-]{1,255}$/, 'Must be a slug string')
83
- .describe('Slug');
84
- export const zBaseDBEntity = z
85
- .object({
86
- id: z.string(),
87
- // created/updated are intentionally optional here
88
- created: zUnixTimestamp2000.optional(),
89
- updated: zUnixTimestamp2000.optional(),
90
- })
91
- .describe('BaseDBEntity');
92
- // export const zSavedDBEntity = zBaseDBEntity.required().describe('SavedDBEntity')
@@ -1,52 +0,0 @@
1
- import { ZodError } from 'zod';
2
- import { _stringify } from '../string/stringify';
3
- export function zIsValid(value, schema) {
4
- const { success } = schema.safeParse(value);
5
- return success;
6
- }
7
- export function zValidate(value, schema) {
8
- const r = zSafeValidate(value, schema);
9
- if (r.success) {
10
- return r.data;
11
- }
12
- throw r.error;
13
- }
14
- export function zSafeValidate(value, schema) {
15
- const r = schema.safeParse(value);
16
- if (r.success) {
17
- return r;
18
- }
19
- return {
20
- success: false,
21
- error: new ZodValidationError(r.error.issues, value, schema),
22
- };
23
- }
24
- export class ZodValidationError extends ZodError {
25
- constructor(issues, value, schema) {
26
- super(issues);
27
- this.value = value;
28
- this.schema = schema;
29
- }
30
- get message() {
31
- return this.annotate();
32
- }
33
- annotate() {
34
- let objectTitle = this.schema.description;
35
- if (typeof this.value === 'object' && this.value) {
36
- const objectName = this.schema.description || this.value.constructor?.name;
37
- const objectId = this.value['id'];
38
- objectTitle = [objectName, objectId].filter(Boolean).join('.');
39
- }
40
- objectTitle || (objectTitle = 'data');
41
- return [
42
- `Invalid ${objectTitle}`,
43
- '',
44
- 'Input:',
45
- _stringify(this.value),
46
- this.issues.length > 1 ? `\n${this.issues.length} issues:` : '',
47
- ...this.issues.slice(0, 100).map(i => {
48
- return [i.path.join('.'), i.message].filter(Boolean).join(': ');
49
- }),
50
- ].join('\n');
51
- }
52
- }