@wener/utils 1.1.27 → 1.1.29

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 (324) hide show
  1. package/lib/arrays/MaybeArray.js +36 -25
  2. package/lib/arrays/MaybeArray.js.map +1 -1
  3. package/lib/arrays/arrayFromAsync.js +5 -7
  4. package/lib/arrays/arrayFromAsync.js.map +1 -1
  5. package/lib/asyncs/AsyncInterval.js +11 -12
  6. package/lib/asyncs/AsyncInterval.js.map +1 -1
  7. package/lib/asyncs/MaybePromise.js +3 -0
  8. package/lib/asyncs/MaybePromise.js.map +1 -0
  9. package/lib/asyncs/createAsyncIterator.js +37 -35
  10. package/lib/asyncs/createAsyncIterator.js.map +1 -1
  11. package/lib/asyncs/createLazyPromise.js +59 -60
  12. package/lib/asyncs/createLazyPromise.js.map +1 -1
  13. package/lib/asyncs/firstOfAsyncIterator.js +7 -9
  14. package/lib/asyncs/firstOfAsyncIterator.js.map +1 -1
  15. package/lib/asyncs/generatorOfStream.js +16 -0
  16. package/lib/asyncs/generatorOfStream.js.map +1 -0
  17. package/lib/asyncs/isIterator.js +3 -4
  18. package/lib/asyncs/isIterator.js.map +1 -1
  19. package/lib/asyncs/isPromise.js +3 -4
  20. package/lib/asyncs/isPromise.js.map +1 -1
  21. package/lib/asyncs/isThenable.js +6 -0
  22. package/lib/asyncs/isThenable.js.map +1 -0
  23. package/lib/asyncs/nextOfAsyncIterator.js +20 -14
  24. package/lib/asyncs/nextOfAsyncIterator.js.map +1 -1
  25. package/lib/asyncs/promiseOfCallback.js +17 -0
  26. package/lib/asyncs/promiseOfCallback.js.map +1 -0
  27. package/lib/asyncs/sleep.js +2 -3
  28. package/lib/asyncs/sleep.js.map +1 -1
  29. package/lib/asyncs/timeout.js +22 -26
  30. package/lib/asyncs/timeout.js.map +1 -1
  31. package/lib/browsers/copy.js +47 -45
  32. package/lib/browsers/copy.js.map +1 -1
  33. package/lib/browsers/download.js +38 -27
  34. package/lib/browsers/download.js.map +1 -1
  35. package/lib/browsers/getFileFromDataTransfer.js +41 -28
  36. package/lib/browsers/getFileFromDataTransfer.js.map +1 -1
  37. package/lib/browsers/loaders.js +43 -43
  38. package/lib/browsers/loaders.js.map +1 -1
  39. package/lib/crypto/base.js +5 -4
  40. package/lib/crypto/base.js.map +1 -1
  41. package/lib/crypto/getNodeCrypto.js +14 -13
  42. package/lib/crypto/getNodeCrypto.js.map +1 -1
  43. package/lib/crypto/getRandomValues.js +22 -26
  44. package/lib/crypto/getRandomValues.js.map +1 -1
  45. package/lib/crypto/hashing.js +42 -50
  46. package/lib/crypto/hashing.js.map +1 -1
  47. package/lib/crypto/md5.bench.js +21 -0
  48. package/lib/crypto/md5.bench.js.map +1 -0
  49. package/lib/crypto/md5.d.js +3 -0
  50. package/lib/crypto/md5.d.js.map +1 -0
  51. package/lib/crypto/md5.js +119 -121
  52. package/lib/crypto/md5.js.map +1 -1
  53. package/lib/crypto/pem/pem.js +32 -35
  54. package/lib/crypto/pem/pem.js.map +1 -1
  55. package/lib/crypto/randomUUID.js +12 -11
  56. package/lib/crypto/randomUUID.js.map +1 -1
  57. package/lib/crypto/ulid.js +123 -112
  58. package/lib/crypto/ulid.js.map +1 -1
  59. package/lib/errors/Errors.js +167 -149
  60. package/lib/errors/Errors.js.map +1 -1
  61. package/lib/fetch/createFetchWith.js +20 -23
  62. package/lib/fetch/createFetchWith.js.map +1 -1
  63. package/lib/fetch/createFetchWithLogging.js +20 -16
  64. package/lib/fetch/createFetchWithLogging.js.map +1 -1
  65. package/lib/fetch/createFetchWithRetry.js +61 -65
  66. package/lib/fetch/createFetchWithRetry.js.map +1 -1
  67. package/lib/fetch/dumpRequest.js +39 -42
  68. package/lib/fetch/dumpRequest.js.map +1 -1
  69. package/lib/fetch/dumpResponse.js +13 -20
  70. package/lib/fetch/dumpResponse.js.map +1 -1
  71. package/lib/fetch/index.js +7 -0
  72. package/lib/fetch/index.js.map +1 -0
  73. package/lib/fetch/types.js +3 -0
  74. package/lib/fetch/types.js.map +1 -0
  75. package/lib/http/HttpStatus.js +89 -80
  76. package/lib/http/HttpStatus.js.map +1 -1
  77. package/lib/i18n/createTranslate.js +48 -48
  78. package/lib/i18n/createTranslate.js.map +1 -1
  79. package/lib/index.js +28 -14
  80. package/lib/index.js.map +1 -1
  81. package/lib/io/AbstractEncoding.js +7 -0
  82. package/lib/io/AbstractEncoding.js.map +1 -0
  83. package/lib/io/ArrayBuffer.test-d.js +7 -0
  84. package/lib/io/ArrayBuffer.test-d.js.map +1 -0
  85. package/lib/io/ArrayBuffers.js +198 -172
  86. package/lib/io/ArrayBuffers.js.map +1 -1
  87. package/lib/io/Buffer.js +21 -20
  88. package/lib/io/Buffer.js.map +1 -1
  89. package/lib/io/base64.js +49 -48
  90. package/lib/io/base64.js.map +1 -1
  91. package/lib/io/isBuffer.js +7 -5
  92. package/lib/io/isBuffer.js.map +1 -1
  93. package/lib/io/isTransferable.js +23 -19
  94. package/lib/io/isTransferable.js.map +1 -1
  95. package/lib/isomorphics/getGlobalThis.js +17 -12
  96. package/lib/isomorphics/getGlobalThis.js.map +1 -1
  97. package/lib/isomorphics/structuredClone.js +71 -63
  98. package/lib/isomorphics/structuredClone.js.map +1 -1
  99. package/lib/langs/MaybeFunction.js +7 -7
  100. package/lib/langs/MaybeFunction.js.map +1 -1
  101. package/lib/langs/classOf.js +3 -4
  102. package/lib/langs/classOf.js.map +1 -1
  103. package/lib/langs/deepEqual.js +77 -85
  104. package/lib/langs/deepEqual.js.map +1 -1
  105. package/lib/langs/deepFreeze.js +17 -13
  106. package/lib/langs/deepFreeze.js.map +1 -1
  107. package/lib/langs/hashCode.ignored.js +112 -0
  108. package/lib/langs/hashCode.ignored.js.map +1 -0
  109. package/lib/langs/isClass.js +3 -4
  110. package/lib/langs/isClass.js.map +1 -1
  111. package/lib/langs/isDefined.js +3 -4
  112. package/lib/langs/isDefined.js.map +1 -1
  113. package/lib/langs/isEmptyObject.js +3 -5
  114. package/lib/langs/isEmptyObject.js.map +1 -1
  115. package/lib/langs/isFunction.js +5 -0
  116. package/lib/langs/isFunction.js.map +1 -0
  117. package/lib/langs/isPlainObject.js +7 -8
  118. package/lib/langs/isPlainObject.js.map +1 -1
  119. package/lib/langs/memoize.js +19 -21
  120. package/lib/langs/memoize.js.map +1 -1
  121. package/lib/langs/parseBoolean.js +26 -27
  122. package/lib/langs/parseBoolean.js.map +1 -1
  123. package/lib/langs/shallowClone.js +12 -12
  124. package/lib/langs/shallowClone.js.map +1 -1
  125. package/lib/langs/shallowEqual.js +21 -18
  126. package/lib/langs/shallowEqual.js.map +1 -1
  127. package/lib/libs/ms.js +123 -103
  128. package/lib/libs/ms.js.map +1 -1
  129. package/lib/logging/Logger.js +5 -0
  130. package/lib/logging/Logger.js.map +1 -0
  131. package/lib/logging/createChildLogger.js +12 -14
  132. package/lib/logging/createChildLogger.js.map +1 -1
  133. package/lib/logging/createLogger.js +59 -33
  134. package/lib/logging/createLogger.js.map +1 -1
  135. package/lib/logging/createNoopLogger.js +11 -12
  136. package/lib/logging/createNoopLogger.js.map +1 -1
  137. package/lib/logging/slog.js +143 -0
  138. package/lib/logging/slog.js.map +1 -0
  139. package/lib/maths/clamp.js +20 -20
  140. package/lib/maths/clamp.js.map +1 -1
  141. package/lib/maths/random.js +14 -15
  142. package/lib/maths/random.js.map +1 -1
  143. package/lib/modules/isModule.js +5 -4
  144. package/lib/modules/isModule.js.map +1 -1
  145. package/lib/modules/parseModuleId.js +36 -31
  146. package/lib/modules/parseModuleId.js.map +1 -1
  147. package/lib/objects/get.js +13 -11
  148. package/lib/objects/get.js.map +1 -1
  149. package/lib/objects/get.test-d.js +33 -0
  150. package/lib/objects/get.test-d.js.map +1 -0
  151. package/lib/objects/merge/index.js +3 -0
  152. package/lib/objects/merge/index.js.map +1 -0
  153. package/lib/objects/merge/isMergeableObject.js +11 -10
  154. package/lib/objects/merge/isMergeableObject.js.map +1 -1
  155. package/lib/objects/merge/merge.js +65 -66
  156. package/lib/objects/merge/merge.js.map +1 -1
  157. package/lib/objects/parseObjectPath.js +35 -23
  158. package/lib/objects/parseObjectPath.js.map +1 -1
  159. package/lib/objects/set.js +33 -34
  160. package/lib/objects/set.js.map +1 -1
  161. package/lib/schema/typebox/gen/codegen/common/encoder.js +93 -67
  162. package/lib/schema/typebox/gen/codegen/common/encoder.js.map +1 -1
  163. package/lib/schema/typebox/gen/codegen/common/formatter.js +31 -8
  164. package/lib/schema/typebox/gen/codegen/common/formatter.js.map +1 -1
  165. package/lib/schema/typebox/gen/codegen/common/index.js +5 -0
  166. package/lib/schema/typebox/gen/codegen/common/index.js.map +1 -0
  167. package/lib/schema/typebox/gen/codegen/common/jsdoc.js +109 -60
  168. package/lib/schema/typebox/gen/codegen/common/jsdoc.js.map +1 -1
  169. package/lib/schema/typebox/gen/codegen/expression/compiler.js +359 -317
  170. package/lib/schema/typebox/gen/codegen/expression/compiler.js.map +1 -1
  171. package/lib/schema/typebox/gen/codegen/expression/errors.js +255 -233
  172. package/lib/schema/typebox/gen/codegen/expression/errors.js.map +1 -1
  173. package/lib/schema/typebox/gen/codegen/expression/evaluator.js +249 -236
  174. package/lib/schema/typebox/gen/codegen/expression/evaluator.js.map +1 -1
  175. package/lib/schema/typebox/gen/codegen/expression/expression.js +382 -198
  176. package/lib/schema/typebox/gen/codegen/expression/expression.js.map +1 -1
  177. package/lib/schema/typebox/gen/codegen/expression/index.js +6 -0
  178. package/lib/schema/typebox/gen/codegen/expression/index.js.map +1 -0
  179. package/lib/schema/typebox/gen/codegen/index.js +5 -19
  180. package/lib/schema/typebox/gen/codegen/index.js.map +1 -1
  181. package/lib/schema/typebox/gen/codegen/model/index.js +16 -0
  182. package/lib/schema/typebox/gen/codegen/model/index.js.map +1 -0
  183. package/lib/schema/typebox/gen/codegen/model/model-to-arktype.js +236 -260
  184. package/lib/schema/typebox/gen/codegen/model/model-to-arktype.js.map +1 -1
  185. package/lib/schema/typebox/gen/codegen/model/model-to-expression.js +348 -352
  186. package/lib/schema/typebox/gen/codegen/model/model-to-expression.js.map +1 -1
  187. package/lib/schema/typebox/gen/codegen/model/model-to-grpc.js +214 -242
  188. package/lib/schema/typebox/gen/codegen/model/model-to-grpc.js.map +1 -1
  189. package/lib/schema/typebox/gen/codegen/model/model-to-io-ts.js +229 -292
  190. package/lib/schema/typebox/gen/codegen/model/model-to-io-ts.js.map +1 -1
  191. package/lib/schema/typebox/gen/codegen/model/model-to-javascript.js +42 -15
  192. package/lib/schema/typebox/gen/codegen/model/model-to-javascript.js.map +1 -1
  193. package/lib/schema/typebox/gen/codegen/model/model-to-json-schema.js +168 -168
  194. package/lib/schema/typebox/gen/codegen/model/model-to-json-schema.js.map +1 -1
  195. package/lib/schema/typebox/gen/codegen/model/model-to-typebox.js +31 -8
  196. package/lib/schema/typebox/gen/codegen/model/model-to-typebox.js.map +1 -1
  197. package/lib/schema/typebox/gen/codegen/model/model-to-typescript.js +156 -190
  198. package/lib/schema/typebox/gen/codegen/model/model-to-typescript.js.map +1 -1
  199. package/lib/schema/typebox/gen/codegen/model/model-to-valibot.js +215 -249
  200. package/lib/schema/typebox/gen/codegen/model/model-to-valibot.js.map +1 -1
  201. package/lib/schema/typebox/gen/codegen/model/model-to-value.js +37 -13
  202. package/lib/schema/typebox/gen/codegen/model/model-to-value.js.map +1 -1
  203. package/lib/schema/typebox/gen/codegen/model/model-to-yrel.js +201 -242
  204. package/lib/schema/typebox/gen/codegen/model/model-to-yrel.js.map +1 -1
  205. package/lib/schema/typebox/gen/codegen/model/model-to-yup.js +200 -245
  206. package/lib/schema/typebox/gen/codegen/model/model-to-yup.js.map +1 -1
  207. package/lib/schema/typebox/gen/codegen/model/model-to-zod.js +223 -268
  208. package/lib/schema/typebox/gen/codegen/model/model-to-zod.js.map +1 -1
  209. package/lib/schema/typebox/gen/codegen/model/model.js +27 -0
  210. package/lib/schema/typebox/gen/codegen/model/model.js.map +1 -0
  211. package/lib/schema/typebox/gen/codegen/typescript/index.js +4 -0
  212. package/lib/schema/typebox/gen/codegen/typescript/index.js.map +1 -0
  213. package/lib/schema/typebox/gen/codegen/typescript/typescript-to-model.js +43 -40
  214. package/lib/schema/typebox/gen/codegen/typescript/typescript-to-model.js.map +1 -1
  215. package/lib/schema/typebox/gen/codegen/typescript/typescript-to-typebox.js +592 -616
  216. package/lib/schema/typebox/gen/codegen/typescript/typescript-to-typebox.js.map +1 -1
  217. package/lib/schema/typebox/gen/index.js +3 -3
  218. package/lib/schema/typebox/gen/index.js.map +1 -1
  219. package/lib/schema/typebox/index.js +3 -3
  220. package/lib/schema/typebox/index.js.map +1 -1
  221. package/lib/schema/typebox/typebox.js +18 -29
  222. package/lib/schema/typebox/typebox.js.map +1 -1
  223. package/lib/server.js +2 -1
  224. package/lib/server.js.map +1 -1
  225. package/lib/servers/crypto/md5.js +3 -5
  226. package/lib/servers/crypto/md5.js.map +1 -1
  227. package/lib/servers/fetch/createFetchWithProxy.js +2 -4
  228. package/lib/servers/fetch/createFetchWithProxy.js.map +1 -1
  229. package/lib/servers/fetch/createFetchWithProxyByNodeFetch.js +34 -34
  230. package/lib/servers/fetch/createFetchWithProxyByNodeFetch.js.map +1 -1
  231. package/lib/servers/fetch/createFetchWithProxyByUndici.js +57 -58
  232. package/lib/servers/fetch/createFetchWithProxyByUndici.js.map +1 -1
  233. package/lib/servers/getPackageDir.js +8 -10
  234. package/lib/servers/getPackageDir.js.map +1 -1
  235. package/lib/servers/jsdom.js +3 -2
  236. package/lib/servers/jsdom.js.map +1 -1
  237. package/lib/servers/node-fetch.js +4 -3
  238. package/lib/servers/node-fetch.js.map +1 -1
  239. package/lib/servers/polyfill/polyfillBrowser.js +17 -0
  240. package/lib/servers/polyfill/polyfillBrowser.js.map +1 -0
  241. package/lib/servers/polyfill/polyfillCrypto.js +8 -10
  242. package/lib/servers/polyfill/polyfillCrypto.js.map +1 -1
  243. package/lib/servers/polyfill/polyfillFetch.js +23 -22
  244. package/lib/servers/polyfill/polyfillFetch.js.map +1 -1
  245. package/lib/servers/polyfill/polyfillJsDom.js +59 -52
  246. package/lib/servers/polyfill/polyfillJsDom.js.map +1 -1
  247. package/lib/servers/polyfill/polyfillWebSocket.js +13 -13
  248. package/lib/servers/polyfill/polyfillWebSocket.js.map +1 -1
  249. package/lib/servers/ws.js +3 -2
  250. package/lib/servers/ws.js.map +1 -1
  251. package/lib/strings/camelCase.js +51 -49
  252. package/lib/strings/camelCase.js.map +1 -1
  253. package/lib/strings/formatBytes.js +41 -15
  254. package/lib/strings/formatBytes.js.map +1 -1
  255. package/lib/strings/renderTemplate.js +27 -20
  256. package/lib/strings/renderTemplate.js.map +1 -1
  257. package/lib/typedoc.js +4 -0
  258. package/lib/typedoc.js.map +1 -0
  259. package/lib/types/global.d.js +2 -0
  260. package/lib/types/global.d.js.map +1 -0
  261. package/lib/types/index.d.js +6 -0
  262. package/lib/types/index.d.js.map +1 -0
  263. package/lib/validations/asserts.js +14 -0
  264. package/lib/validations/asserts.js.map +1 -0
  265. package/lib/validations/isUUID.js +3 -4
  266. package/lib/validations/isUUID.js.map +1 -1
  267. package/lib/validations/parseTimestamp.js +25 -21
  268. package/lib/validations/parseTimestamp.js.map +1 -1
  269. package/package.json +47 -47
  270. package/dist/LICENSE.txt +0 -1
  271. package/dist/cjs/createFetchWith-qhRObsE4.js +0 -2
  272. package/dist/cjs/createFetchWith-qhRObsE4.js.map +0 -1
  273. package/dist/cjs/getGlobalThis-GhffAgiG.js +0 -2
  274. package/dist/cjs/getGlobalThis-GhffAgiG.js.map +0 -1
  275. package/dist/cjs/index.cjs +0 -21
  276. package/dist/cjs/index.cjs.map +0 -1
  277. package/dist/cjs/schema/typebox/gen/index.cjs +0 -118
  278. package/dist/cjs/schema/typebox/gen/index.cjs.map +0 -1
  279. package/dist/cjs/schema/typebox/index.cjs +0 -2
  280. package/dist/cjs/schema/typebox/index.cjs.map +0 -1
  281. package/dist/cjs/server.cjs +0 -2
  282. package/dist/cjs/server.cjs.map +0 -1
  283. package/dist/cjs/servers/jsdom.cjs +0 -2
  284. package/dist/cjs/servers/jsdom.cjs.map +0 -1
  285. package/dist/cjs/servers/node-fetch.cjs +0 -2
  286. package/dist/cjs/servers/node-fetch.cjs.map +0 -1
  287. package/dist/cjs/servers/ws.cjs +0 -2
  288. package/dist/cjs/servers/ws.cjs.map +0 -1
  289. package/dist/esm/createFetchWith-1q1S-Xro.js +0 -2
  290. package/dist/esm/createFetchWith-1q1S-Xro.js.map +0 -1
  291. package/dist/esm/getGlobalThis-A8F-nU7J.js +0 -2
  292. package/dist/esm/getGlobalThis-A8F-nU7J.js.map +0 -1
  293. package/dist/esm/index.js +0 -21
  294. package/dist/esm/index.js.map +0 -1
  295. package/dist/esm/schema/typebox/gen.js +0 -118
  296. package/dist/esm/schema/typebox/gen.js.map +0 -1
  297. package/dist/esm/schema/typebox.js +0 -2
  298. package/dist/esm/schema/typebox.js.map +0 -1
  299. package/dist/esm/server.js +0 -2
  300. package/dist/esm/server.js.map +0 -1
  301. package/dist/esm/servers/jsdom.js +0 -2
  302. package/dist/esm/servers/jsdom.js.map +0 -1
  303. package/dist/esm/servers/node-fetch.js +0 -2
  304. package/dist/esm/servers/node-fetch.js.map +0 -1
  305. package/dist/esm/servers/ws.js +0 -2
  306. package/dist/esm/servers/ws.js.map +0 -1
  307. package/dist/system/createFetchWith-TjUle-dI.js +0 -2
  308. package/dist/system/createFetchWith-TjUle-dI.js.map +0 -1
  309. package/dist/system/getGlobalThis-X5ifUXDI.js +0 -2
  310. package/dist/system/getGlobalThis-X5ifUXDI.js.map +0 -1
  311. package/dist/system/index.js +0 -21
  312. package/dist/system/index.js.map +0 -1
  313. package/dist/system/schema/typebox/gen.js +0 -118
  314. package/dist/system/schema/typebox/gen.js.map +0 -1
  315. package/dist/system/schema/typebox.js +0 -2
  316. package/dist/system/schema/typebox.js.map +0 -1
  317. package/dist/system/server.js +0 -2
  318. package/dist/system/server.js.map +0 -1
  319. package/dist/system/servers/jsdom.js +0 -2
  320. package/dist/system/servers/jsdom.js.map +0 -1
  321. package/dist/system/servers/node-fetch.js +0 -2
  322. package/dist/system/servers/node-fetch.js.map +0 -1
  323. package/dist/system/servers/ws.js +0 -2
  324. package/dist/system/servers/ws.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"createNoopLogger.js","sources":["../../src/logging/createNoopLogger.ts"],"sourcesContent":["import type { LoggerWithChild } from './Logger';\n\nexport function createNoopLogger(): LoggerWithChild {\n const noop = (..._: any[]) => undefined;\n return {\n trace: noop,\n debug: noop,\n info: noop,\n warn: noop,\n error: noop,\n child: () => createNoopLogger(),\n };\n}\n"],"names":[],"mappings":"AAEO,SAAS,gBAAoC,GAAA;AAClD,EAAM,MAAA,IAAA,GAAO,IAAI,CAAa,KAAA,KAAA,CAAA,CAAA;AAC9B,EAAO,OAAA;AAAA,IACL,KAAO,EAAA,IAAA;AAAA,IACP,KAAO,EAAA,IAAA;AAAA,IACP,IAAM,EAAA,IAAA;AAAA,IACN,IAAM,EAAA,IAAA;AAAA,IACN,KAAO,EAAA,IAAA;AAAA,IACP,KAAA,EAAO,MAAM,gBAAiB,EAAA;AAAA,GAChC,CAAA;AACF;;;;"}
1
+ {"version":3,"sources":["../../src/logging/createNoopLogger.ts"],"sourcesContent":["import type { LoggerWithChild } from './Logger';\n\nexport function createNoopLogger(): LoggerWithChild {\n const noop = (..._: any[]) => undefined;\n return {\n trace: noop,\n debug: noop,\n info: noop,\n warn: noop,\n error: noop,\n child: () => createNoopLogger(),\n };\n}\n"],"names":["createNoopLogger","noop","_","undefined","trace","debug","info","warn","error","child"],"mappings":"AAEA,OAAO,SAASA;IACd,MAAMC,OAAO,CAAC,GAAGC,IAAaC;IAC9B,OAAO;QACLC,OAAOH;QACPI,OAAOJ;QACPK,MAAML;QACNM,MAAMN;QACNO,OAAOP;QACPQ,OAAO,IAAMT;IACf;AACF"}
@@ -0,0 +1,143 @@
1
+ var Level;
2
+ (function(Level) {
3
+ Level[Level["trace"] = -8] = "trace";
4
+ Level[Level["debug"] = -4] = "debug";
5
+ Level[Level["info"] = 0] = "info";
6
+ Level[Level["warn"] = 4] = "warn";
7
+ Level[Level["error"] = 8] = "error";
8
+ })(Level || (Level = {}));
9
+ function createLogFunc(opts) {
10
+ return (msg, ...args)=>{
11
+ const rec = {
12
+ message: String(msg),
13
+ level: opts.level,
14
+ attrs: Object.assign({}, opts.attrs)
15
+ };
16
+ if (args[0] && typeof args[0] === 'object') {
17
+ rec.attrs = Object.assign(rec.attrs, args[0]);
18
+ } else {
19
+ for(let i = 0; i < args.length; i += 2){
20
+ rec.attrs[String(args[i])] = args[i + 1];
21
+ }
22
+ }
23
+ opts.onRecord(rec);
24
+ };
25
+ }
26
+ function stringify(rec, opts = {}) {
27
+ const sb = [];
28
+ if (rec.time) {
29
+ sb.push(rec.time.toJSON());
30
+ }
31
+ rec.level && opts.level !== false && sb.push(rec.level.toUpperCase().padStart(5, ' '));
32
+ sb.push(rec.message);
33
+ if (rec.attrs) {
34
+ for (let [key, value] of Object.entries(rec.attrs)){
35
+ sb.push(`${key}=${JSON.stringify(value)}`);
36
+ }
37
+ }
38
+ return sb.join(' ');
39
+ }
40
+ export function createLogger(opts = {}) {
41
+ opts.time ??= typeof window === 'undefined';
42
+ const onRecord = (record)=>{
43
+ // can change options after create
44
+ const { writer = createLogger.writer, level, time } = opts;
45
+ if (level) {
46
+ if (Level[level] < Level[record.level]) {
47
+ return;
48
+ }
49
+ }
50
+ if (time) {
51
+ record.time = new Date();
52
+ }
53
+ writer(record);
54
+ };
55
+ return {
56
+ trace: createLogFunc({
57
+ onRecord,
58
+ level: 'trace'
59
+ }),
60
+ debug: createLogFunc({
61
+ onRecord,
62
+ level: 'debug'
63
+ }),
64
+ info: createLogFunc({
65
+ onRecord,
66
+ level: 'info'
67
+ }),
68
+ warn: createLogFunc({
69
+ onRecord,
70
+ level: 'warn'
71
+ }),
72
+ error: createLogFunc({
73
+ onRecord,
74
+ level: 'error'
75
+ })
76
+ };
77
+ }
78
+ createLogger.writer = (record)=>{
79
+ const { level } = record;
80
+ console[level || 'info'](stringify(record));
81
+ };
82
+ let formatter = (open, close, replace = open)=>(input)=>{
83
+ let string = '' + input;
84
+ let index = string.indexOf(close, open.length);
85
+ return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;
86
+ };
87
+ let replaceClose = (string, close, replace, index)=>{
88
+ let start = string.substring(0, index) + replace;
89
+ let end = string.substring(index + close.length);
90
+ let nextIndex = end.indexOf(close);
91
+ return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end;
92
+ };
93
+ function getEnv() {
94
+ if (typeof process === 'object') {
95
+ return process.env;
96
+ }
97
+ return {};
98
+ }
99
+ function isColorSupported() {
100
+ if (typeof window === 'object') {
101
+ return true;
102
+ }
103
+ const env = getEnv();
104
+ if ('NO_COLOR' in env) {
105
+ return false;
106
+ }
107
+ if ('FORCE_COLOR' in env || 'CI' in env) {
108
+ return true;
109
+ }
110
+ return false;
111
+ }
112
+ export function createConsoleColors(enabled = isColorSupported()) {
113
+ return {
114
+ isColorSupported: enabled,
115
+ reset: enabled ? (s)=>`\x1b[0m${s}\x1b[0m` : String,
116
+ bold: enabled ? formatter('\x1b[1m', '\x1b[22m', '\x1b[22m\x1b[1m') : String,
117
+ dim: enabled ? formatter('\x1b[2m', '\x1b[22m', '\x1b[22m\x1b[2m') : String,
118
+ italic: enabled ? formatter('\x1b[3m', '\x1b[23m') : String,
119
+ underline: enabled ? formatter('\x1b[4m', '\x1b[24m') : String,
120
+ inverse: enabled ? formatter('\x1b[7m', '\x1b[27m') : String,
121
+ hidden: enabled ? formatter('\x1b[8m', '\x1b[28m') : String,
122
+ strikethrough: enabled ? formatter('\x1b[9m', '\x1b[29m') : String,
123
+ black: enabled ? formatter('\x1b[30m', '\x1b[39m') : String,
124
+ red: enabled ? formatter('\x1b[31m', '\x1b[39m') : String,
125
+ green: enabled ? formatter('\x1b[32m', '\x1b[39m') : String,
126
+ yellow: enabled ? formatter('\x1b[33m', '\x1b[39m') : String,
127
+ blue: enabled ? formatter('\x1b[34m', '\x1b[39m') : String,
128
+ magenta: enabled ? formatter('\x1b[35m', '\x1b[39m') : String,
129
+ cyan: enabled ? formatter('\x1b[36m', '\x1b[39m') : String,
130
+ white: enabled ? formatter('\x1b[37m', '\x1b[39m') : String,
131
+ gray: enabled ? formatter('\x1b[90m', '\x1b[39m') : String,
132
+ bgBlack: enabled ? formatter('\x1b[40m', '\x1b[49m') : String,
133
+ bgRed: enabled ? formatter('\x1b[41m', '\x1b[49m') : String,
134
+ bgGreen: enabled ? formatter('\x1b[42m', '\x1b[49m') : String,
135
+ bgYellow: enabled ? formatter('\x1b[43m', '\x1b[49m') : String,
136
+ bgBlue: enabled ? formatter('\x1b[44m', '\x1b[49m') : String,
137
+ bgMagenta: enabled ? formatter('\x1b[45m', '\x1b[49m') : String,
138
+ bgCyan: enabled ? formatter('\x1b[46m', '\x1b[49m') : String,
139
+ bgWhite: enabled ? formatter('\x1b[47m', '\x1b[49m') : String
140
+ };
141
+ }
142
+
143
+ //# sourceMappingURL=slog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/logging/slog.ts"],"sourcesContent":["import { Logger, LogLevel } from './Logger';\n\nenum Level {\n trace = -8,\n debug = -4,\n info = 0,\n warn = 4,\n error = 8,\n}\n\ninterface LogRecord {\n time?: Date;\n message: string;\n level?: 'info' | 'debug' | 'warn' | 'error' | 'trace';\n attrs?: Record<string, any>;\n\n source?: {\n func?: string;\n file?: string;\n line?: number;\n };\n\n // https://cs.opensource.google/go/x/exp/+/d63ba01a:slog/record.go\n}\n\ntype LogFunc =\n | ((message: string) => void)\n | ((message: string, attrs: Record<string, any>) => void)\n | ((message: string, key: string, value: any, ...attrs: any[]) => void);\n\nfunction createLogFunc(opts: {\n onRecord: (rec: LogRecord) => void;\n attrs?: Record<string, any>;\n level?: LogLevel;\n}): LogFunc {\n return (msg: string, ...args: any[]) => {\n const rec = {\n message: String(msg),\n level: opts.level,\n attrs: Object.assign({}, opts.attrs),\n };\n\n if (args[0] && typeof args[0] === 'object') {\n rec.attrs = Object.assign(rec.attrs, args[0]);\n } else {\n for (let i = 0; i < args.length; i += 2) {\n rec.attrs[String(args[i])] = args[i + 1];\n }\n }\n\n opts.onRecord(rec);\n };\n}\n\nfunction stringify(rec: LogRecord, opts: { level?: boolean } = {}) {\n const sb = [];\n if (rec.time) {\n sb.push(rec.time.toJSON());\n }\n rec.level && opts.level !== false && sb.push(rec.level.toUpperCase().padStart(5, ' '));\n sb.push(rec.message);\n\n if (rec.attrs) {\n for (let [key, value] of Object.entries(rec.attrs)) {\n sb.push(`${key}=${JSON.stringify(value)}`);\n }\n }\n return sb.join(' ');\n}\n\nexport function createLogger(\n opts: { writer?: (record: LogRecord) => void; level?: LogLevel; time?: boolean } = {},\n): Logger {\n opts.time ??= typeof window === 'undefined';\n const onRecord = (record: LogRecord) => {\n // can change options after create\n const { writer = createLogger.writer, level, time } = opts;\n if (level) {\n if (Level[level] < Level[record.level!]) {\n return;\n }\n }\n if (time) {\n record.time = new Date();\n }\n writer(record);\n };\n return {\n trace: createLogFunc({ onRecord, level: 'trace' }),\n debug: createLogFunc({ onRecord, level: 'debug' }),\n info: createLogFunc({ onRecord, level: 'info' }),\n warn: createLogFunc({ onRecord, level: 'warn' }),\n error: createLogFunc({ onRecord, level: 'error' }),\n };\n}\n\ncreateLogger.writer = (record: LogRecord) => {\n const { level } = record;\n console[level || 'info'](stringify(record));\n};\n\n// https://github.com/alexeyraspopov/picocolors/blob/main/picocolors.js\n/*\nMDN: Styling console output\nhttps://developer.mozilla.org/en-US/docs/Web/API/console#Usage\n\nChrome: Console API Reference\nhttps://developers.google.com/web/tools/chrome-devtools/console/console-write#styling_console_output_with_css\n\nWebKit: Console Object API\nhttps://webkit.org/web-inspector/console-object-api/\n\nhttps://stackoverflow.com/questions/7505623\n\nconsole.log('\\x1b[36m Hello \\x1b[34m Colored \\x1b[35m World!');\nconsole.log('\\x1B[31mHello\\x1B[34m World');\nconsole.log('\\x1b[43mHighlighted');\n\n\nNestJS Formatter\nhttps://github.com/nestjs/nest/blob/d4bda940fc10238eb18f14ebf66d66b7ef8bff41/packages/common/services/console-logger.service.ts#L201-L227\n\n */\n\nexport type Formatter = (input: string | number | null | undefined) => string;\n\nexport interface Colors {\n isColorSupported: boolean;\n reset: Formatter;\n bold: Formatter;\n dim: Formatter;\n italic: Formatter;\n underline: Formatter;\n inverse: Formatter;\n hidden: Formatter;\n strikethrough: Formatter;\n black: Formatter;\n red: Formatter;\n green: Formatter;\n yellow: Formatter;\n blue: Formatter;\n magenta: Formatter;\n cyan: Formatter;\n white: Formatter;\n gray: Formatter;\n bgBlack: Formatter;\n bgRed: Formatter;\n bgGreen: Formatter;\n bgYellow: Formatter;\n bgBlue: Formatter;\n bgMagenta: Formatter;\n bgCyan: Formatter;\n bgWhite: Formatter;\n}\n\nlet formatter =\n (open: string, close: string, replace: string = open) =>\n (input: string) => {\n let string = '' + input;\n let index = string.indexOf(close, open.length);\n return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;\n };\n\nlet replaceClose = (string: string, close: string, replace: string, index: number): string => {\n let start = string.substring(0, index) + replace;\n let end = string.substring(index + close.length);\n let nextIndex = end.indexOf(close);\n return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end;\n};\n\nfunction getEnv(): Record<string, string | undefined> {\n if (typeof process === 'object') {\n return process.env;\n }\n return {};\n}\n\nfunction isColorSupported() {\n if (typeof window === 'object') {\n return true;\n }\n const env = getEnv();\n if ('NO_COLOR' in env) {\n return false;\n }\n if ('FORCE_COLOR' in env || 'CI' in env) {\n return true;\n }\n return false;\n}\n\nexport function createConsoleColors(enabled = isColorSupported()) {\n return {\n isColorSupported: enabled,\n reset: enabled ? (s: string) => `\\x1b[0m${s}\\x1b[0m` : String,\n bold: enabled ? formatter('\\x1b[1m', '\\x1b[22m', '\\x1b[22m\\x1b[1m') : String,\n dim: enabled ? formatter('\\x1b[2m', '\\x1b[22m', '\\x1b[22m\\x1b[2m') : String,\n italic: enabled ? formatter('\\x1b[3m', '\\x1b[23m') : String,\n underline: enabled ? formatter('\\x1b[4m', '\\x1b[24m') : String,\n inverse: enabled ? formatter('\\x1b[7m', '\\x1b[27m') : String,\n hidden: enabled ? formatter('\\x1b[8m', '\\x1b[28m') : String,\n strikethrough: enabled ? formatter('\\x1b[9m', '\\x1b[29m') : String,\n black: enabled ? formatter('\\x1b[30m', '\\x1b[39m') : String,\n red: enabled ? formatter('\\x1b[31m', '\\x1b[39m') : String,\n green: enabled ? formatter('\\x1b[32m', '\\x1b[39m') : String,\n yellow: enabled ? formatter('\\x1b[33m', '\\x1b[39m') : String,\n blue: enabled ? formatter('\\x1b[34m', '\\x1b[39m') : String,\n magenta: enabled ? formatter('\\x1b[35m', '\\x1b[39m') : String,\n cyan: enabled ? formatter('\\x1b[36m', '\\x1b[39m') : String,\n white: enabled ? formatter('\\x1b[37m', '\\x1b[39m') : String,\n gray: enabled ? formatter('\\x1b[90m', '\\x1b[39m') : String,\n bgBlack: enabled ? formatter('\\x1b[40m', '\\x1b[49m') : String,\n bgRed: enabled ? formatter('\\x1b[41m', '\\x1b[49m') : String,\n bgGreen: enabled ? formatter('\\x1b[42m', '\\x1b[49m') : String,\n bgYellow: enabled ? formatter('\\x1b[43m', '\\x1b[49m') : String,\n bgBlue: enabled ? formatter('\\x1b[44m', '\\x1b[49m') : String,\n bgMagenta: enabled ? formatter('\\x1b[45m', '\\x1b[49m') : String,\n bgCyan: enabled ? formatter('\\x1b[46m', '\\x1b[49m') : String,\n bgWhite: enabled ? formatter('\\x1b[47m', '\\x1b[49m') : String,\n };\n}\n"],"names":["Level","trace","debug","info","warn","error","createLogFunc","opts","msg","args","rec","message","String","level","attrs","Object","assign","i","length","onRecord","stringify","sb","time","push","toJSON","toUpperCase","padStart","key","value","entries","JSON","join","createLogger","window","record","writer","Date","console","formatter","open","close","replace","input","string","index","indexOf","replaceClose","start","substring","end","nextIndex","getEnv","process","env","isColorSupported","createConsoleColors","enabled","reset","s","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite"],"mappings":"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"}
@@ -1,21 +1,21 @@
1
- function clamp(value, ...o) {
2
- let min, max, def;
3
- if (o.length === 1) {
4
- ({ min, max, default: def = min } = o[0]);
5
- } else {
6
- [min, max, def = min] = o;
7
- }
8
- if (value === null || value === void 0) {
9
- return def;
10
- }
11
- if (value < min) {
12
- return min;
13
- }
14
- if (value > max) {
15
- return max;
16
- }
17
- return value;
18
- }
1
+ // export function clamp<T>(value: T | null | undefined, o: { min: T; max: T; default?: T }): T;
2
+ export function clamp(value, ...o) {
3
+ let min, max, def;
4
+ if (o.length === 1) {
5
+ ({ min, max, default: def = min } = o[0]);
6
+ } else {
7
+ [min, max, def = min] = o;
8
+ }
9
+ if (value === null || value === undefined) {
10
+ return def;
11
+ }
12
+ if (value < min) {
13
+ return min;
14
+ }
15
+ if (value > max) {
16
+ return max;
17
+ }
18
+ return value;
19
+ } // type Comparable = number | string | Date | BigInt;
19
20
 
20
- export { clamp };
21
- //# sourceMappingURL=clamp.js.map
21
+ //# sourceMappingURL=clamp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clamp.js","sources":["../../src/maths/clamp.ts"],"sourcesContent":["// export function clamp<T>(value: T | null | undefined, o: { min: T; max: T; default?: T }): T;\n\nexport function clamp<T>(value: T | null | undefined, min: T, max: T, def?: T): T;\nexport function clamp<T>(value: T | null | undefined, ...o: any[]): T {\n let min: T, max: T, def: T;\n if (o.length === 1) {\n ({ min, max, default: def = min! } = o[0]);\n } else {\n [min, max, def = min!] = o;\n }\n if (value === null || value === undefined) {\n return def;\n }\n if (value < min) {\n return min;\n }\n if (value > max) {\n return max;\n }\n return value;\n}\n\n// type Comparable = number | string | Date | BigInt;\n"],"names":[],"mappings":"AAGgB,SAAA,KAAA,CAAS,UAAgC,CAAa,EAAA;AACpE,EAAA,IAAI,KAAQ,GAAQ,EAAA,GAAA,CAAA;AACpB,EAAI,IAAA,CAAA,CAAE,WAAW,CAAG,EAAA;AAClB,IAAC,CAAA,EAAE,KAAK,GAAK,EAAA,OAAA,EAAS,MAAM,GAAK,EAAA,GAAI,EAAE,CAAC,CAAA,EAAA;AAAA,GACnC,MAAA;AACL,IAAA,CAAC,GAAK,EAAA,GAAA,EAAK,GAAM,GAAA,GAAI,CAAI,GAAA,CAAA,CAAA;AAAA,GAC3B;AACA,EAAI,IAAA,KAAA,KAAU,IAAQ,IAAA,KAAA,KAAU,KAAW,CAAA,EAAA;AACzC,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AACA,EAAA,IAAI,QAAQ,GAAK,EAAA;AACf,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AACA,EAAA,IAAI,QAAQ,GAAK,EAAA;AACf,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,KAAA,CAAA;AACT;;;;"}
1
+ {"version":3,"sources":["../../src/maths/clamp.ts"],"sourcesContent":["// export function clamp<T>(value: T | null | undefined, o: { min: T; max: T; default?: T }): T;\n\nexport function clamp<T>(value: T | null | undefined, min: T, max: T, def?: T): T;\nexport function clamp<T>(value: T | null | undefined, ...o: any[]): T {\n let min: T, max: T, def: T;\n if (o.length === 1) {\n ({ min, max, default: def = min! } = o[0]);\n } else {\n [min, max, def = min!] = o;\n }\n if (value === null || value === undefined) {\n return def;\n }\n if (value < min) {\n return min;\n }\n if (value > max) {\n return max;\n }\n return value;\n}\n\n// type Comparable = number | string | Date | BigInt;\n"],"names":["clamp","value","o","min","max","def","length","default","undefined"],"mappings":"AAAA,gGAAgG;AAGhG,OAAO,SAASA,MAASC,KAA2B,EAAE,GAAGC,CAAQ;IAC/D,IAAIC,KAAQC,KAAQC;IACpB,IAAIH,EAAEI,MAAM,KAAK,GAAG;QACjB,CAAA,EAAEH,GAAG,EAAEC,GAAG,EAAEG,SAASF,MAAMF,GAAI,EAAE,GAAGD,CAAC,CAAC,EAAE,AAAD;IAC1C,OAAO;QACL,CAACC,KAAKC,KAAKC,MAAMF,GAAI,CAAC,GAAGD;IAC3B;IACA,IAAID,UAAU,QAAQA,UAAUO,WAAW;QACzC,OAAOH;IACT;IACA,IAAIJ,QAAQE,KAAK;QACf,OAAOA;IACT;IACA,IAAIF,QAAQG,KAAK;QACf,OAAOA;IACT;IACA,OAAOH;AACT,EAEA,qDAAqD"}
@@ -1,18 +1,17 @@
1
- function createRandom(o = {}) {
2
- var _a;
3
- let seed = typeof o.seed === "string" ? 0 : (_a = o.seed) != null ? _a : 0;
4
- if (typeof o.seed === "string") {
5
- let sum = 0;
6
- for (let i = 0; i < o.seed.length; i++) {
7
- sum += o.seed.charCodeAt(i);
1
+ /// javascript pseudo random
2
+ export function createRandom(o = {}) {
3
+ let seed = typeof o.seed === 'string' ? 0 : o.seed ?? 0;
4
+ if (typeof o.seed === 'string') {
5
+ let sum = 0;
6
+ for(let i = 0; i < o.seed.length; i++){
7
+ sum += o.seed.charCodeAt(i);
8
+ }
9
+ seed = sum;
8
10
  }
9
- seed = sum;
10
- }
11
- return () => {
12
- const x = Math.sin(seed++) * 1e4;
13
- return x - Math.floor(x);
14
- };
11
+ return ()=>{
12
+ const x = Math.sin(seed++) * 10000;
13
+ return x - Math.floor(x);
14
+ };
15
15
  }
16
16
 
17
- export { createRandom };
18
- //# sourceMappingURL=random.js.map
17
+ //# sourceMappingURL=random.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"random.js","sources":["../../src/maths/random.ts"],"sourcesContent":["/// javascript pseudo random\nexport function createRandom(o: { seed?: string | number } = {}) {\n let seed = typeof o.seed === 'string' ? 0 : o.seed ?? 0;\n if (typeof o.seed === 'string') {\n let sum = 0;\n for (let i = 0; i < o.seed.length; i++) {\n sum += o.seed.charCodeAt(i);\n }\n seed = sum;\n }\n\n return () => {\n const x = Math.sin(seed++) * 10000;\n return x - Math.floor(x);\n };\n}\n"],"names":[],"mappings":"AACgB,SAAA,YAAA,CAAa,CAAgC,GAAA,EAAI,EAAA;AADjE,EAAA,IAAA,EAAA,CAAA;AAEE,EAAI,IAAA,IAAA,GAAO,OAAO,CAAE,CAAA,IAAA,KAAS,WAAW,CAAI,GAAA,CAAA,EAAA,GAAA,CAAA,CAAE,SAAF,IAAU,GAAA,EAAA,GAAA,CAAA,CAAA;AACtD,EAAI,IAAA,OAAO,CAAE,CAAA,IAAA,KAAS,QAAU,EAAA;AAC9B,IAAA,IAAI,GAAM,GAAA,CAAA,CAAA;AACV,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,CAAE,CAAA,IAAA,CAAK,QAAQ,CAAK,EAAA,EAAA;AACtC,MAAO,GAAA,IAAA,CAAA,CAAE,IAAK,CAAA,UAAA,CAAW,CAAC,CAAA,CAAA;AAAA,KAC5B;AACA,IAAO,IAAA,GAAA,GAAA,CAAA;AAAA,GACT;AAEA,EAAA,OAAO,MAAM;AACX,IAAA,MAAM,CAAI,GAAA,IAAA,CAAK,GAAI,CAAA,IAAA,EAAM,CAAI,GAAA,GAAA,CAAA;AAC7B,IAAO,OAAA,CAAA,GAAI,IAAK,CAAA,KAAA,CAAM,CAAC,CAAA,CAAA;AAAA,GACzB,CAAA;AACF;;;;"}
1
+ {"version":3,"sources":["../../src/maths/random.ts"],"sourcesContent":["/// javascript pseudo random\nexport function createRandom(o: { seed?: string | number } = {}) {\n let seed = typeof o.seed === 'string' ? 0 : o.seed ?? 0;\n if (typeof o.seed === 'string') {\n let sum = 0;\n for (let i = 0; i < o.seed.length; i++) {\n sum += o.seed.charCodeAt(i);\n }\n seed = sum;\n }\n\n return () => {\n const x = Math.sin(seed++) * 10000;\n return x - Math.floor(x);\n };\n}\n"],"names":["createRandom","o","seed","sum","i","length","charCodeAt","x","Math","sin","floor"],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,SAASA,aAAaC,IAAgC,CAAC,CAAC;IAC7D,IAAIC,OAAO,OAAOD,EAAEC,IAAI,KAAK,WAAW,IAAID,EAAEC,IAAI,IAAI;IACtD,IAAI,OAAOD,EAAEC,IAAI,KAAK,UAAU;QAC9B,IAAIC,MAAM;QACV,IAAK,IAAIC,IAAI,GAAGA,IAAIH,EAAEC,IAAI,CAACG,MAAM,EAAED,IAAK;YACtCD,OAAOF,EAAEC,IAAI,CAACI,UAAU,CAACF;QAC3B;QACAF,OAAOC;IACT;IAEA,OAAO;QACL,MAAMI,IAAIC,KAAKC,GAAG,CAACP,UAAU;QAC7B,OAAOK,IAAIC,KAAKE,KAAK,CAACH;IACxB;AACF"}
@@ -1,6 +1,7 @@
1
- function isModule(o) {
2
- return o && o[Symbol.toStringTag] === "Module";
1
+ /**
2
+ * Check is ESM Module
3
+ */ export function isModule(o) {
4
+ return o && o[Symbol.toStringTag] === 'Module';
3
5
  }
4
6
 
5
- export { isModule };
6
- //# sourceMappingURL=isModule.js.map
7
+ //# sourceMappingURL=isModule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isModule.js","sources":["../../src/modules/isModule.ts"],"sourcesContent":["/**\n * Check is ESM Module\n */\nexport function isModule(o: any): o is Module {\n return o && o[Symbol.toStringTag] === 'Module';\n}\n\nexport interface Module {\n [Symbol.toStringTag]: 'Module';\n default?: any;\n\n [k: string | symbol]: any;\n}\n"],"names":[],"mappings":"AAGO,SAAS,SAAS,CAAqB,EAAA;AAC5C,EAAA,OAAO,CAAK,IAAA,CAAA,CAAE,MAAO,CAAA,WAAW,CAAM,KAAA,QAAA,CAAA;AACxC;;;;"}
1
+ {"version":3,"sources":["../../src/modules/isModule.ts"],"sourcesContent":["/**\n * Check is ESM Module\n */\nexport function isModule(o: any): o is Module {\n return o && o[Symbol.toStringTag] === 'Module';\n}\n\nexport interface Module {\n [Symbol.toStringTag]: 'Module';\n default?: any;\n\n [k: string | symbol]: any;\n}\n"],"names":["isModule","o","Symbol","toStringTag"],"mappings":"AAAA;;CAEC,GACD,OAAO,SAASA,SAASC,CAAM;IAC7B,OAAOA,KAAKA,CAAC,CAACC,OAAOC,WAAW,CAAC,KAAK;AACxC"}
@@ -1,34 +1,39 @@
1
+ // https://regex101.com/r/eMcXQ9/1
1
2
  const regModuleId = /^(?<n>(?:@(?<org>[a-z0-9-~][a-z0-9-._~]*)\/)?(?<pkg>[a-z0-9-~][a-z0-9-._~]*))(?:@(?<v>[-a-z0-9><=_.^~]+))?(?<p>\/[^\r\n]*)?$/;
2
- function parseModuleId(s) {
3
- var _a;
4
- const groups = (_a = s.match(regModuleId)) == null ? void 0 : _a.groups;
5
- if (!groups) {
6
- return void 0;
7
- }
8
- const { n: name, v: version, p: path, org, pkg } = groups;
9
- const scoped = Boolean(org);
10
- const v = /^\d+\.\d+\.\d+/.test(version) ? version : void 0;
11
- const range = version || "latest";
12
- const o = {
13
- id: `${name}@${range}`,
14
- name,
15
- range,
16
- scoped,
17
- pkg,
18
- org,
19
- versioned: Boolean(version)
20
- };
21
- if (v) {
22
- o.version = v;
23
- }
24
- if (path) {
25
- o.path = path;
26
- }
27
- if (!o.scoped) {
28
- delete o.org;
29
- }
30
- return o;
3
+ /**
4
+ * Parse NPM module id
5
+ *
6
+ * @example
7
+ * parseModuleId('@wener/reaction@latest/index.js')
8
+ * // { id: '@wener/reaction@latest', name: '@wener/reaction', version: 'latest', range: 'latest', pkg: 'reaction', path: '/index.js', scoped: true, org: 'wener' }
9
+ */ export function parseModuleId(s) {
10
+ const groups = s.match(regModuleId)?.groups;
11
+ if (!groups) {
12
+ return undefined;
13
+ }
14
+ const { n: name, v: version, p: path, org, pkg } = groups;
15
+ const scoped = Boolean(org);
16
+ const v = /^\d+\.\d+\.\d+/.test(version) ? version : undefined;
17
+ const range = version || 'latest';
18
+ const o = {
19
+ id: `${name}@${range}`,
20
+ name,
21
+ range,
22
+ scoped,
23
+ pkg,
24
+ org,
25
+ versioned: Boolean(version)
26
+ };
27
+ if (v) {
28
+ o.version = v;
29
+ }
30
+ if (path) {
31
+ o.path = path;
32
+ }
33
+ if (!o.scoped) {
34
+ delete o.org;
35
+ }
36
+ return o;
31
37
  }
32
38
 
33
- export { parseModuleId };
34
- //# sourceMappingURL=parseModuleId.js.map
39
+ //# sourceMappingURL=parseModuleId.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseModuleId.js","sources":["../../src/modules/parseModuleId.ts"],"sourcesContent":["// https://regex101.com/r/eMcXQ9/1\nconst regModuleId =\n /^(?<n>(?:@(?<org>[a-z0-9-~][a-z0-9-._~]*)\\/)?(?<pkg>[a-z0-9-~][a-z0-9-._~]*))(?:@(?<v>[-a-z0-9><=_.^~]+))?(?<p>\\/[^\\r\\n]*)?$/;\n\nexport type ParsedModuleId = {\n id: string; // name@version\n name: string; // @org/pkg, pkg\n version?: string; // 1.1.1\n range: string; // version, tag, range\n pkg: string;\n path?: string;\n org?: string;\n versioned: boolean; // is module id contain a version specifier\n} & (\n | { scoped: false }\n | {\n scoped: true;\n org: string;\n }\n);\n\n/**\n * Parse NPM module id\n *\n * @example\n * parseModuleId('@wener/reaction@latest/index.js')\n * // { id: '@wener/reaction@latest', name: '@wener/reaction', version: 'latest', range: 'latest', pkg: 'reaction', path: '/index.js', scoped: true, org: 'wener' }\n */\nexport function parseModuleId(s: string): ParsedModuleId | undefined {\n const groups = s.match(regModuleId)?.groups;\n if (!groups) {\n return undefined;\n }\n const { n: name, v: version, p: path, org, pkg } = groups;\n const scoped = Boolean(org);\n const v = /^\\d+\\.\\d+\\.\\d+/.test(version) ? version : undefined;\n const range = version || 'latest';\n const o: ParsedModuleId = {\n id: `${name}@${range}`,\n name,\n range,\n scoped,\n pkg,\n org,\n versioned: Boolean(version),\n };\n if (v) {\n o.version = v;\n }\n if (path) {\n o.path = path;\n }\n if (!o.scoped) {\n delete o.org;\n }\n return o;\n}\n"],"names":[],"mappings":"AACA,MAAM,WACJ,GAAA,8HAAA,CAAA;AA0BK,SAAS,cAAc,CAAuC,EAAA;AA5BrE,EAAA,IAAA,EAAA,CAAA;AA6BE,EAAA,MAAM,MAAS,GAAA,CAAA,EAAA,GAAA,CAAA,CAAE,KAAM,CAAA,WAAW,MAAnB,IAAsB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,CAAA;AACrC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AACA,EAAM,MAAA,EAAE,GAAG,IAAM,EAAA,CAAA,EAAG,SAAS,CAAG,EAAA,IAAA,EAAM,GAAK,EAAA,GAAA,EAAQ,GAAA,MAAA,CAAA;AACnD,EAAM,MAAA,MAAA,GAAS,QAAQ,GAAG,CAAA,CAAA;AAC1B,EAAA,MAAM,CAAI,GAAA,gBAAA,CAAiB,IAAK,CAAA,OAAO,IAAI,OAAU,GAAA,KAAA,CAAA,CAAA;AACrD,EAAA,MAAM,QAAQ,OAAW,IAAA,QAAA,CAAA;AACzB,EAAA,MAAM,CAAoB,GAAA;AAAA,IACxB,EAAI,EAAA,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAAA,IACpB,IAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAA;AAAA,IACA,SAAA,EAAW,QAAQ,OAAO,CAAA;AAAA,GAC5B,CAAA;AACA,EAAA,IAAI,CAAG,EAAA;AACL,IAAA,CAAA,CAAE,OAAU,GAAA,CAAA,CAAA;AAAA,GACd;AACA,EAAA,IAAI,IAAM,EAAA;AACR,IAAA,CAAA,CAAE,IAAO,GAAA,IAAA,CAAA;AAAA,GACX;AACA,EAAI,IAAA,CAAC,EAAE,MAAQ,EAAA;AACb,IAAA,OAAO,CAAE,CAAA,GAAA,CAAA;AAAA,GACX;AACA,EAAO,OAAA,CAAA,CAAA;AACT;;;;"}
1
+ {"version":3,"sources":["../../src/modules/parseModuleId.ts"],"sourcesContent":["// https://regex101.com/r/eMcXQ9/1\nconst regModuleId =\n /^(?<n>(?:@(?<org>[a-z0-9-~][a-z0-9-._~]*)\\/)?(?<pkg>[a-z0-9-~][a-z0-9-._~]*))(?:@(?<v>[-a-z0-9><=_.^~]+))?(?<p>\\/[^\\r\\n]*)?$/;\n\nexport type ParsedModuleId = {\n id: string; // name@version\n name: string; // @org/pkg, pkg\n version?: string; // 1.1.1\n range: string; // version, tag, range\n pkg: string;\n path?: string;\n org?: string;\n versioned: boolean; // is module id contain a version specifier\n} & (\n | { scoped: false }\n | {\n scoped: true;\n org: string;\n }\n);\n\n/**\n * Parse NPM module id\n *\n * @example\n * parseModuleId('@wener/reaction@latest/index.js')\n * // { id: '@wener/reaction@latest', name: '@wener/reaction', version: 'latest', range: 'latest', pkg: 'reaction', path: '/index.js', scoped: true, org: 'wener' }\n */\nexport function parseModuleId(s: string): ParsedModuleId | undefined {\n const groups = s.match(regModuleId)?.groups;\n if (!groups) {\n return undefined;\n }\n const { n: name, v: version, p: path, org, pkg } = groups;\n const scoped = Boolean(org);\n const v = /^\\d+\\.\\d+\\.\\d+/.test(version) ? version : undefined;\n const range = version || 'latest';\n const o: ParsedModuleId = {\n id: `${name}@${range}`,\n name,\n range,\n scoped,\n pkg,\n org,\n versioned: Boolean(version),\n };\n if (v) {\n o.version = v;\n }\n if (path) {\n o.path = path;\n }\n if (!o.scoped) {\n delete o.org;\n }\n return o;\n}\n"],"names":["regModuleId","parseModuleId","s","groups","match","undefined","n","name","v","version","p","path","org","pkg","scoped","Boolean","test","range","o","id","versioned"],"mappings":"AAAA,kCAAkC;AAClC,MAAMA,cACJ;AAmBF;;;;;;CAMC,GACD,OAAO,SAASC,cAAcC,CAAS;IACrC,MAAMC,SAASD,EAAEE,KAAK,CAACJ,cAAcG;IACrC,IAAI,CAACA,QAAQ;QACX,OAAOE;IACT;IACA,MAAM,EAAEC,GAAGC,IAAI,EAAEC,GAAGC,OAAO,EAAEC,GAAGC,IAAI,EAAEC,GAAG,EAAEC,GAAG,EAAE,GAAGV;IACnD,MAAMW,SAASC,QAAQH;IACvB,MAAMJ,IAAI,iBAAiBQ,IAAI,CAACP,WAAWA,UAAUJ;IACrD,MAAMY,QAAQR,WAAW;IACzB,MAAMS,IAAoB;QACxBC,IAAI,CAAC,EAAEZ,KAAK,CAAC,EAAEU,MAAM,CAAC;QACtBV;QACAU;QACAH;QACAD;QACAD;QACAQ,WAAWL,QAAQN;IACrB;IACA,IAAID,GAAG;QACLU,EAAET,OAAO,GAAGD;IACd;IACA,IAAIG,MAAM;QACRO,EAAEP,IAAI,GAAGA;IACX;IACA,IAAI,CAACO,EAAEJ,MAAM,EAAE;QACb,OAAOI,EAAEN,GAAG;IACd;IACA,OAAOM;AACT"}
@@ -1,14 +1,16 @@
1
1
  import { parseObjectPath } from './parseObjectPath.js';
2
-
3
- function get(obj, key, def) {
4
- const undef = void 0;
5
- const path = parseObjectPath(key);
6
- let out = obj;
7
- for (const i of path) {
8
- out = out ? out[i] : undef;
9
- }
10
- return out === undef ? def : out;
2
+ /**
3
+ * get by path
4
+ *
5
+ * {@link https://github.com/developit/dlv dlv}
6
+ */ export function get(obj, key, def) {
7
+ const undef = undefined;
8
+ const path = parseObjectPath(key);
9
+ let out = obj;
10
+ for (const i of path){
11
+ out = out ? out[i] : undef;
12
+ }
13
+ return out === undef ? def : out;
11
14
  }
12
15
 
13
- export { get };
14
- //# sourceMappingURL=get.js.map
16
+ //# sourceMappingURL=get.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sources":["../../src/objects/get.ts"],"sourcesContent":["import type { ObjectKey } from './parseObjectPath';\nimport { parseObjectPath } from './parseObjectPath';\n\n/**\n * get by path\n *\n * {@link https://github.com/developit/dlv dlv}\n */\nexport function get<O extends object, P extends ObjectKey, OrElse extends unknown>(\n obj: O,\n key: P | P[],\n def?: OrElse,\n): ResolveObjectPathType<O, P, OrElse> {\n const undef = undefined;\n const path = parseObjectPath(key);\n let out: any = obj;\n for (const i of path) {\n out = out ? out[i] : undef;\n }\n return out === undef ? def : out;\n}\n\n/**\n * It tries to resolve the path of the given object, otherwise it will return OrElse\n *\n * {@link https://github.com/Pouja/typescript-deep-path-safe typescript-deep-path-safe}\n */\nexport type ResolveObjectPathType<\n ObjectType,\n Path extends string | symbol | number,\n OrElse,\n> = Path extends keyof ObjectType\n ? ObjectType[Path]\n : Path extends `${infer LeftSide}.${infer RightSide}`\n ? LeftSide extends keyof ObjectType\n ? ResolveObjectPathType<ObjectType[LeftSide], RightSide, OrElse>\n : Path extends `${infer LeftSide}[${number}].${infer RightSide}`\n ? LeftSide extends keyof ObjectType\n ? ObjectType[LeftSide] extends Array<infer U>\n ? ResolveObjectPathType<U, RightSide, OrElse>\n : OrElse\n : OrElse\n : OrElse\n : Path extends `${infer LeftSide}[${number}]`\n ? LeftSide extends keyof ObjectType\n ? ObjectType[LeftSide] extends Array<infer U>\n ? U\n : OrElse\n : OrElse\n : OrElse;\n"],"names":[],"mappings":";;AAQgB,SAAA,GAAA,CACd,GACA,EAAA,GAAA,EACA,GACqC,EAAA;AACrC,EAAA,MAAM,KAAQ,GAAA,KAAA,CAAA,CAAA;AACd,EAAM,MAAA,IAAA,GAAO,gBAAgB,GAAG,CAAA,CAAA;AAChC,EAAA,IAAI,GAAW,GAAA,GAAA,CAAA;AACf,EAAA,KAAA,MAAW,KAAK,IAAM,EAAA;AACpB,IAAM,GAAA,GAAA,GAAA,GAAM,GAAI,CAAA,CAAC,CAAI,GAAA,KAAA,CAAA;AAAA,GACvB;AACA,EAAO,OAAA,GAAA,KAAQ,QAAQ,GAAM,GAAA,GAAA,CAAA;AAC/B;;;;"}
1
+ {"version":3,"sources":["../../src/objects/get.ts"],"sourcesContent":["import type { ObjectKey } from './parseObjectPath';\nimport { parseObjectPath } from './parseObjectPath';\n\n/**\n * get by path\n *\n * {@link https://github.com/developit/dlv dlv}\n */\nexport function get<O extends object, P extends ObjectKey, OrElse extends unknown>(\n obj: O,\n key: P | P[],\n def?: OrElse,\n): ResolveObjectPathType<O, P, OrElse> {\n const undef = undefined;\n const path = parseObjectPath(key);\n let out: any = obj;\n for (const i of path) {\n out = out ? out[i] : undef;\n }\n return out === undef ? def : out;\n}\n\n/**\n * It tries to resolve the path of the given object, otherwise it will return OrElse\n *\n * {@link https://github.com/Pouja/typescript-deep-path-safe typescript-deep-path-safe}\n */\nexport type ResolveObjectPathType<\n ObjectType,\n Path extends string | symbol | number,\n OrElse,\n> = Path extends keyof ObjectType\n ? ObjectType[Path]\n : Path extends `${infer LeftSide}.${infer RightSide}`\n ? LeftSide extends keyof ObjectType\n ? ResolveObjectPathType<ObjectType[LeftSide], RightSide, OrElse>\n : Path extends `${infer LeftSide}[${number}].${infer RightSide}`\n ? LeftSide extends keyof ObjectType\n ? ObjectType[LeftSide] extends Array<infer U>\n ? ResolveObjectPathType<U, RightSide, OrElse>\n : OrElse\n : OrElse\n : OrElse\n : Path extends `${infer LeftSide}[${number}]`\n ? LeftSide extends keyof ObjectType\n ? ObjectType[LeftSide] extends Array<infer U>\n ? U\n : OrElse\n : OrElse\n : OrElse;\n"],"names":["parseObjectPath","get","obj","key","def","undef","undefined","path","out","i"],"mappings":"AACA,SAASA,eAAe,QAAQ,oBAAoB;AAEpD;;;;CAIC,GACD,OAAO,SAASC,IACdC,GAAM,EACNC,GAAY,EACZC,GAAY;IAEZ,MAAMC,QAAQC;IACd,MAAMC,OAAOP,gBAAgBG;IAC7B,IAAIK,MAAWN;IACf,KAAK,MAAMO,KAAKF,KAAM;QACpBC,MAAMA,MAAMA,GAAG,CAACC,EAAE,GAAGJ;IACvB;IACA,OAAOG,QAAQH,QAAQD,MAAMI;AAC/B"}
@@ -0,0 +1,33 @@
1
+ import { expectTypeOf, test } from 'vitest';
2
+ import { get } from './get.js';
3
+ test('get typing', ()=>{
4
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
5
+ const obj = {};
6
+ expectTypeOf(get(obj, 'nested.a', null)).toMatchTypeOf();
7
+ expectTypeOf(get(obj, 'normal', null)).toMatchTypeOf();
8
+ expectTypeOf(get(obj, 'nested.a')).toMatchTypeOf();
9
+ expectTypeOf(get(obj, 'nested.b.c')).toMatchTypeOf();
10
+ expectTypeOf(get(obj, 'arr')).toMatchTypeOf();
11
+ expectTypeOf(get(obj, 'arr[13]')).toMatchTypeOf();
12
+ // @ts-ignore
13
+ expectTypeOf(get(obj, 'arr.13')).toMatchTypeOf();
14
+ expectTypeOf(get(obj, 'nestedArr[3].other')).toMatchTypeOf();
15
+ // @ts-ignore
16
+ expectTypeOf(get(obj, 'deep.deep')).toMatchTypeOf();
17
+ expectTypeOf(get(obj, 'deep.arr[333]')).toMatchTypeOf();
18
+ expectTypeOf(get(obj, 'deep.arr[333].length')).toMatchTypeOf();
19
+ // @ts-ignore
20
+ expectTypeOf(get(obj, 'nested["b"]["c"]')).toMatchTypeOf();
21
+ // @ts-ignore
22
+ expectTypeOf(get(obj, '')).toMatchTypeOf();
23
+ expectTypeOf(get(obj, '', 3)).toMatchTypeOf();
24
+ // @ts-ignore
25
+ expectTypeOf(get(obj, 'nested.asdfasdf')).toMatchTypeOf();
26
+ expectTypeOf(get(obj, 'deeplvl1[1].deeplvl2.deeplvl3[88].deeplvl4.value')).toMatchTypeOf();
27
+ // @ts-ignore
28
+ expectTypeOf(get(obj, 'deeplvl1[1].deeplvl2.deeplvl1[88].deeplvl4.value')).toMatchTypeOf();
29
+ expectTypeOf(get(obj, 'deeplvl1[1].deeplvl2.deeplvl1[88].deeplvl4.value', obj)).toMatchTypeOf();
30
+ expectTypeOf(get(obj, 'nested["dd"]', '')).toMatchTypeOf();
31
+ });
32
+
33
+ //# sourceMappingURL=get.test-d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/objects/get.test-d.ts"],"sourcesContent":["import { expectTypeOf, test } from 'vitest';\nimport { get } from './get';\n\ninterface TestClass {\n normal: string;\n nested: {\n a: number;\n b: {\n c: boolean;\n };\n };\n arr: number[];\n nestedArr: {\n sum: number;\n other: null;\n }[];\n deep: {\n arr: string[];\n };\n deeplvl1: {\n deeplvl2: {\n deeplvl3: {\n deeplvl4: {\n value: RegExp;\n };\n }[];\n };\n }[];\n}\n\ntest('get typing', () => {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const obj = {} as TestClass;\n expectTypeOf(get(obj, 'nested.a', null)).toMatchTypeOf<number>();\n expectTypeOf(get(obj, 'normal', null)).toMatchTypeOf<string>();\n expectTypeOf(get(obj, 'nested.a')).toMatchTypeOf<number>();\n expectTypeOf(get(obj, 'nested.b.c')).toMatchTypeOf<boolean>();\n expectTypeOf(get(obj, 'arr')).toMatchTypeOf<number[]>();\n expectTypeOf(get(obj, 'arr[13]')).toMatchTypeOf<number>();\n // @ts-ignore\n expectTypeOf(get(obj, 'arr.13')).toMatchTypeOf<number>();\n expectTypeOf(get(obj, 'nestedArr[3].other')).toMatchTypeOf<null>();\n // @ts-ignore\n expectTypeOf(get(obj, 'deep.deep')).toMatchTypeOf<string[]>();\n expectTypeOf(get(obj, 'deep.arr[333]')).toMatchTypeOf<string>();\n expectTypeOf(get(obj, 'deep.arr[333].length')).toMatchTypeOf<number>();\n // @ts-ignore\n expectTypeOf(get(obj, 'nested[\"b\"][\"c\"]')).toMatchTypeOf<boolean>();\n // @ts-ignore\n expectTypeOf(get(obj, '')).toMatchTypeOf<never>();\n expectTypeOf(get(obj, '', 3)).toMatchTypeOf<number>();\n // @ts-ignore\n expectTypeOf(get(obj, 'nested.asdfasdf')).toMatchTypeOf<never>();\n expectTypeOf(get(obj, 'deeplvl1[1].deeplvl2.deeplvl3[88].deeplvl4.value')).toMatchTypeOf<RegExp>();\n // @ts-ignore\n expectTypeOf(get(obj, 'deeplvl1[1].deeplvl2.deeplvl1[88].deeplvl4.value')).toMatchTypeOf<never>();\n expectTypeOf(get(obj, 'deeplvl1[1].deeplvl2.deeplvl1[88].deeplvl4.value', obj)).toMatchTypeOf<TestClass>();\n expectTypeOf(get(obj, 'nested[\"dd\"]', '')).toMatchTypeOf<string>();\n});\n"],"names":["expectTypeOf","test","get","obj","toMatchTypeOf"],"mappings":"AAAA,SAASA,YAAY,EAAEC,IAAI,QAAQ,SAAS;AAC5C,SAASC,GAAG,QAAQ,QAAQ;AA6B5BD,KAAK,cAAc;IACjB,yEAAyE;IACzE,MAAME,MAAM,CAAC;IACbH,aAAaE,IAAIC,KAAK,YAAY,OAAOC,aAAa;IACtDJ,aAAaE,IAAIC,KAAK,UAAU,OAAOC,aAAa;IACpDJ,aAAaE,IAAIC,KAAK,aAAaC,aAAa;IAChDJ,aAAaE,IAAIC,KAAK,eAAeC,aAAa;IAClDJ,aAAaE,IAAIC,KAAK,QAAQC,aAAa;IAC3CJ,aAAaE,IAAIC,KAAK,YAAYC,aAAa;IAC/C,aAAa;IACbJ,aAAaE,IAAIC,KAAK,WAAWC,aAAa;IAC9CJ,aAAaE,IAAIC,KAAK,uBAAuBC,aAAa;IAC1D,aAAa;IACbJ,aAAaE,IAAIC,KAAK,cAAcC,aAAa;IACjDJ,aAAaE,IAAIC,KAAK,kBAAkBC,aAAa;IACrDJ,aAAaE,IAAIC,KAAK,yBAAyBC,aAAa;IAC5D,aAAa;IACbJ,aAAaE,IAAIC,KAAK,qBAAqBC,aAAa;IACxD,aAAa;IACbJ,aAAaE,IAAIC,KAAK,KAAKC,aAAa;IACxCJ,aAAaE,IAAIC,KAAK,IAAI,IAAIC,aAAa;IAC3C,aAAa;IACbJ,aAAaE,IAAIC,KAAK,oBAAoBC,aAAa;IACvDJ,aAAaE,IAAIC,KAAK,qDAAqDC,aAAa;IACxF,aAAa;IACbJ,aAAaE,IAAIC,KAAK,qDAAqDC,aAAa;IACxFJ,aAAaE,IAAIC,KAAK,oDAAoDA,MAAMC,aAAa;IAC7FJ,aAAaE,IAAIC,KAAK,gBAAgB,KAAKC,aAAa;AAC1D"}
@@ -0,0 +1,3 @@
1
+ export { merge } from './merge.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/objects/merge/index.ts"],"sourcesContent":["export { merge, type MergeOptions } from './merge';\n"],"names":["merge"],"mappings":"AAAA,SAASA,KAAK,QAA2B,UAAU"}
@@ -1,18 +1,19 @@
1
- function isMergeableObject(value) {
2
- return isNonNullObject(value) && !isSpecial(value);
1
+ // https://github.com/TehShrike/is-mergeable-object/blob/master/index.js
2
+ export function isMergeableObject(value) {
3
+ return isNonNullObject(value) && !isSpecial(value);
3
4
  }
4
5
  function isNonNullObject(value) {
5
- return !!value && typeof value === "object";
6
+ return !!value && typeof value === 'object';
6
7
  }
7
8
  function isSpecial(value) {
8
- var stringValue = Object.prototype.toString.call(value);
9
- return stringValue === "[object RegExp]" || stringValue === "[object Date]" || isReactElement(value);
9
+ var stringValue = Object.prototype.toString.call(value);
10
+ return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);
10
11
  }
11
- var canUseSymbol = typeof Symbol === "function" && Symbol.for;
12
- var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for("react.element") : 60103;
12
+ // see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25
13
+ var canUseSymbol = typeof Symbol === 'function' && Symbol.for;
14
+ var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;
13
15
  function isReactElement(value) {
14
- return value.$$typeof === REACT_ELEMENT_TYPE;
16
+ return value.$$typeof === REACT_ELEMENT_TYPE;
15
17
  }
16
18
 
17
- export { isMergeableObject };
18
- //# sourceMappingURL=isMergeableObject.js.map
19
+ //# sourceMappingURL=isMergeableObject.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isMergeableObject.js","sources":["../../../src/objects/merge/isMergeableObject.ts"],"sourcesContent":["// https://github.com/TehShrike/is-mergeable-object/blob/master/index.js\n\nexport function isMergeableObject(value: any) {\n return isNonNullObject(value) && !isSpecial(value);\n}\n\nfunction isNonNullObject(value: any) {\n return !!value && typeof value === 'object';\n}\n\nfunction isSpecial(value: any) {\n var stringValue = Object.prototype.toString.call(value);\n\n return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value: any) {\n return value.$$typeof === REACT_ELEMENT_TYPE;\n}\n"],"names":[],"mappings":"AAEO,SAAS,kBAAkB,KAAY,EAAA;AAC5C,EAAA,OAAO,eAAgB,CAAA,KAAK,CAAK,IAAA,CAAC,UAAU,KAAK,CAAA,CAAA;AACnD,CAAA;AAEA,SAAS,gBAAgB,KAAY,EAAA;AACnC,EAAA,OAAO,CAAC,CAAC,KAAS,IAAA,OAAO,KAAU,KAAA,QAAA,CAAA;AACrC,CAAA;AAEA,SAAS,UAAU,KAAY,EAAA;AAC7B,EAAA,IAAI,WAAc,GAAA,MAAA,CAAO,SAAU,CAAA,QAAA,CAAS,KAAK,KAAK,CAAA,CAAA;AAEtD,EAAA,OAAO,WAAgB,KAAA,iBAAA,IAAqB,WAAgB,KAAA,eAAA,IAAmB,eAAe,KAAK,CAAA,CAAA;AACrG,CAAA;AAGA,IAAI,YAAe,GAAA,OAAO,MAAW,KAAA,UAAA,IAAc,MAAO,CAAA,GAAA,CAAA;AAC1D,IAAI,kBAAqB,GAAA,YAAA,GAAe,MAAO,CAAA,GAAA,CAAI,eAAe,CAAI,GAAA,KAAA,CAAA;AAEtE,SAAS,eAAe,KAAY,EAAA;AAClC,EAAA,OAAO,MAAM,QAAa,KAAA,kBAAA,CAAA;AAC5B;;;;"}
1
+ {"version":3,"sources":["../../../src/objects/merge/isMergeableObject.ts"],"sourcesContent":["// https://github.com/TehShrike/is-mergeable-object/blob/master/index.js\n\nexport function isMergeableObject(value: any) {\n return isNonNullObject(value) && !isSpecial(value);\n}\n\nfunction isNonNullObject(value: any) {\n return !!value && typeof value === 'object';\n}\n\nfunction isSpecial(value: any) {\n var stringValue = Object.prototype.toString.call(value);\n\n return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value: any) {\n return value.$$typeof === REACT_ELEMENT_TYPE;\n}\n"],"names":["isMergeableObject","value","isNonNullObject","isSpecial","stringValue","Object","prototype","toString","call","isReactElement","canUseSymbol","Symbol","for","REACT_ELEMENT_TYPE","$$typeof"],"mappings":"AAAA,wEAAwE;AAExE,OAAO,SAASA,kBAAkBC,KAAU;IAC1C,OAAOC,gBAAgBD,UAAU,CAACE,UAAUF;AAC9C;AAEA,SAASC,gBAAgBD,KAAU;IACjC,OAAO,CAAC,CAACA,SAAS,OAAOA,UAAU;AACrC;AAEA,SAASE,UAAUF,KAAU;IAC3B,IAAIG,cAAcC,OAAOC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACP;IAEjD,OAAOG,gBAAgB,qBAAqBA,gBAAgB,mBAAmBK,eAAeR;AAChG;AAEA,6IAA6I;AAC7I,IAAIS,eAAe,OAAOC,WAAW,cAAcA,OAAOC,GAAG;AAC7D,IAAIC,qBAAqBH,eAAeC,OAAOC,GAAG,CAAC,mBAAmB;AAEtE,SAASH,eAAeR,KAAU;IAChC,OAAOA,MAAMa,QAAQ,KAAKD;AAC5B"}