@wener/utils 1.1.26 → 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 (351) hide show
  1. package/README.md +4 -0
  2. package/lib/arrays/MaybeArray.js +36 -25
  3. package/lib/arrays/MaybeArray.js.map +1 -1
  4. package/lib/arrays/arrayFromAsync.js +5 -7
  5. package/lib/arrays/arrayFromAsync.js.map +1 -1
  6. package/lib/asyncs/AsyncInterval.js +11 -12
  7. package/lib/asyncs/AsyncInterval.js.map +1 -1
  8. package/lib/asyncs/MaybePromise.js +3 -0
  9. package/lib/asyncs/MaybePromise.js.map +1 -0
  10. package/lib/asyncs/createAsyncIterator.js +37 -35
  11. package/lib/asyncs/createAsyncIterator.js.map +1 -1
  12. package/lib/asyncs/createLazyPromise.js +59 -60
  13. package/lib/asyncs/createLazyPromise.js.map +1 -1
  14. package/lib/asyncs/firstOfAsyncIterator.js +7 -9
  15. package/lib/asyncs/firstOfAsyncIterator.js.map +1 -1
  16. package/lib/asyncs/generatorOfStream.js +16 -0
  17. package/lib/asyncs/generatorOfStream.js.map +1 -0
  18. package/lib/asyncs/isIterator.js +3 -4
  19. package/lib/asyncs/isIterator.js.map +1 -1
  20. package/lib/asyncs/isPromise.js +3 -4
  21. package/lib/asyncs/isPromise.js.map +1 -1
  22. package/lib/asyncs/isThenable.js +6 -0
  23. package/lib/asyncs/isThenable.js.map +1 -0
  24. package/lib/asyncs/nextOfAsyncIterator.js +20 -14
  25. package/lib/asyncs/nextOfAsyncIterator.js.map +1 -1
  26. package/lib/asyncs/promiseOfCallback.js +17 -0
  27. package/lib/asyncs/promiseOfCallback.js.map +1 -0
  28. package/lib/asyncs/sleep.js +2 -3
  29. package/lib/asyncs/sleep.js.map +1 -1
  30. package/lib/asyncs/timeout.js +22 -26
  31. package/lib/asyncs/timeout.js.map +1 -1
  32. package/lib/browsers/copy.js +47 -45
  33. package/lib/browsers/copy.js.map +1 -1
  34. package/lib/browsers/download.js +38 -27
  35. package/lib/browsers/download.js.map +1 -1
  36. package/lib/browsers/getFileFromDataTransfer.js +41 -28
  37. package/lib/browsers/getFileFromDataTransfer.js.map +1 -1
  38. package/lib/browsers/loaders.js +43 -43
  39. package/lib/browsers/loaders.js.map +1 -1
  40. package/lib/crypto/base.js +5 -4
  41. package/lib/crypto/base.js.map +1 -1
  42. package/lib/crypto/getNodeCrypto.js +14 -13
  43. package/lib/crypto/getNodeCrypto.js.map +1 -1
  44. package/lib/crypto/getRandomValues.js +22 -26
  45. package/lib/crypto/getRandomValues.js.map +1 -1
  46. package/lib/crypto/hashing.js +42 -50
  47. package/lib/crypto/hashing.js.map +1 -1
  48. package/lib/crypto/md5.bench.js +21 -0
  49. package/lib/crypto/md5.bench.js.map +1 -0
  50. package/lib/crypto/md5.d.js +3 -0
  51. package/lib/crypto/md5.d.js.map +1 -0
  52. package/lib/crypto/md5.js +119 -121
  53. package/lib/crypto/md5.js.map +1 -1
  54. package/lib/crypto/pem/pem.js +32 -35
  55. package/lib/crypto/pem/pem.js.map +1 -1
  56. package/lib/crypto/randomUUID.js +12 -11
  57. package/lib/crypto/randomUUID.js.map +1 -1
  58. package/lib/crypto/ulid.js +123 -112
  59. package/lib/crypto/ulid.js.map +1 -1
  60. package/lib/errors/Errors.js +167 -149
  61. package/lib/errors/Errors.js.map +1 -1
  62. package/lib/fetch/createFetchWith.js +20 -23
  63. package/lib/fetch/createFetchWith.js.map +1 -1
  64. package/lib/fetch/createFetchWithLogging.js +20 -16
  65. package/lib/fetch/createFetchWithLogging.js.map +1 -1
  66. package/lib/fetch/createFetchWithRetry.js +61 -65
  67. package/lib/fetch/createFetchWithRetry.js.map +1 -1
  68. package/lib/fetch/dumpRequest.js +39 -42
  69. package/lib/fetch/dumpRequest.js.map +1 -1
  70. package/lib/fetch/dumpResponse.js +13 -20
  71. package/lib/fetch/dumpResponse.js.map +1 -1
  72. package/lib/fetch/index.js +7 -0
  73. package/lib/fetch/index.js.map +1 -0
  74. package/lib/fetch/types.js +3 -0
  75. package/lib/fetch/types.js.map +1 -0
  76. package/lib/http/HttpStatus.js +89 -80
  77. package/lib/http/HttpStatus.js.map +1 -1
  78. package/lib/i18n/createTranslate.js +48 -48
  79. package/lib/i18n/createTranslate.js.map +1 -1
  80. package/lib/index.js +30 -14
  81. package/lib/index.js.map +1 -1
  82. package/lib/io/AbstractEncoding.js +7 -0
  83. package/lib/io/AbstractEncoding.js.map +1 -0
  84. package/lib/io/ArrayBuffer.test-d.js +7 -0
  85. package/lib/io/ArrayBuffer.test-d.js.map +1 -0
  86. package/lib/io/ArrayBuffers.js +198 -172
  87. package/lib/io/ArrayBuffers.js.map +1 -1
  88. package/lib/io/Buffer.js +21 -20
  89. package/lib/io/Buffer.js.map +1 -1
  90. package/lib/io/base64.js +49 -48
  91. package/lib/io/base64.js.map +1 -1
  92. package/lib/io/isBuffer.js +7 -5
  93. package/lib/io/isBuffer.js.map +1 -1
  94. package/lib/io/isTransferable.js +23 -19
  95. package/lib/io/isTransferable.js.map +1 -1
  96. package/lib/isomorphics/getGlobalThis.js +17 -12
  97. package/lib/isomorphics/getGlobalThis.js.map +1 -1
  98. package/lib/isomorphics/structuredClone.js +71 -63
  99. package/lib/isomorphics/structuredClone.js.map +1 -1
  100. package/lib/langs/MaybeFunction.js +7 -7
  101. package/lib/langs/MaybeFunction.js.map +1 -1
  102. package/lib/langs/classOf.js +3 -4
  103. package/lib/langs/classOf.js.map +1 -1
  104. package/lib/langs/deepEqual.js +77 -85
  105. package/lib/langs/deepEqual.js.map +1 -1
  106. package/lib/langs/deepFreeze.js +20 -0
  107. package/lib/langs/deepFreeze.js.map +1 -0
  108. package/lib/langs/hashCode.ignored.js +112 -0
  109. package/lib/langs/hashCode.ignored.js.map +1 -0
  110. package/lib/langs/isClass.js +3 -4
  111. package/lib/langs/isClass.js.map +1 -1
  112. package/lib/langs/isDefined.js +3 -4
  113. package/lib/langs/isDefined.js.map +1 -1
  114. package/lib/langs/isEmptyObject.js +3 -5
  115. package/lib/langs/isEmptyObject.js.map +1 -1
  116. package/lib/langs/isFunction.js +5 -0
  117. package/lib/langs/isFunction.js.map +1 -0
  118. package/lib/langs/isPlainObject.js +7 -8
  119. package/lib/langs/isPlainObject.js.map +1 -1
  120. package/lib/langs/memoize.js +19 -21
  121. package/lib/langs/memoize.js.map +1 -1
  122. package/lib/langs/parseBoolean.js +26 -27
  123. package/lib/langs/parseBoolean.js.map +1 -1
  124. package/lib/langs/shallowClone.js +12 -12
  125. package/lib/langs/shallowClone.js.map +1 -1
  126. package/lib/langs/shallowEqual.js +21 -18
  127. package/lib/langs/shallowEqual.js.map +1 -1
  128. package/lib/libs/ms.js +123 -103
  129. package/lib/libs/ms.js.map +1 -1
  130. package/lib/logging/Logger.js +5 -0
  131. package/lib/logging/Logger.js.map +1 -0
  132. package/lib/logging/createChildLogger.js +12 -14
  133. package/lib/logging/createChildLogger.js.map +1 -1
  134. package/lib/logging/createLogger.js +59 -33
  135. package/lib/logging/createLogger.js.map +1 -1
  136. package/lib/logging/createNoopLogger.js +11 -12
  137. package/lib/logging/createNoopLogger.js.map +1 -1
  138. package/lib/logging/slog.js +143 -0
  139. package/lib/logging/slog.js.map +1 -0
  140. package/lib/maths/clamp.js +21 -0
  141. package/lib/maths/clamp.js.map +1 -0
  142. package/lib/maths/random.js +14 -15
  143. package/lib/maths/random.js.map +1 -1
  144. package/lib/modules/isModule.js +5 -4
  145. package/lib/modules/isModule.js.map +1 -1
  146. package/lib/modules/parseModuleId.js +36 -31
  147. package/lib/modules/parseModuleId.js.map +1 -1
  148. package/lib/objects/get.js +13 -11
  149. package/lib/objects/get.js.map +1 -1
  150. package/lib/objects/get.test-d.js +33 -0
  151. package/lib/objects/get.test-d.js.map +1 -0
  152. package/lib/objects/merge/index.js +3 -0
  153. package/lib/objects/merge/index.js.map +1 -0
  154. package/lib/objects/merge/isMergeableObject.js +11 -10
  155. package/lib/objects/merge/isMergeableObject.js.map +1 -1
  156. package/lib/objects/merge/merge.js +65 -66
  157. package/lib/objects/merge/merge.js.map +1 -1
  158. package/lib/objects/parseObjectPath.js +35 -23
  159. package/lib/objects/parseObjectPath.js.map +1 -1
  160. package/lib/objects/set.js +33 -34
  161. package/lib/objects/set.js.map +1 -1
  162. package/lib/schema/typebox/gen/codegen/common/encoder.js +100 -0
  163. package/lib/schema/typebox/gen/codegen/common/encoder.js.map +1 -0
  164. package/lib/schema/typebox/gen/codegen/common/formatter.js +33 -0
  165. package/lib/schema/typebox/gen/codegen/common/formatter.js.map +1 -0
  166. package/lib/schema/typebox/gen/codegen/common/index.js +5 -0
  167. package/lib/schema/typebox/gen/codegen/common/index.js.map +1 -0
  168. package/lib/schema/typebox/gen/codegen/common/jsdoc.js +117 -0
  169. package/lib/schema/typebox/gen/codegen/common/jsdoc.js.map +1 -0
  170. package/lib/schema/typebox/gen/codegen/expression/compiler.js +367 -0
  171. package/lib/schema/typebox/gen/codegen/expression/compiler.js.map +1 -0
  172. package/lib/schema/typebox/gen/codegen/expression/errors.js +259 -0
  173. package/lib/schema/typebox/gen/codegen/expression/errors.js.map +1 -0
  174. package/lib/schema/typebox/gen/codegen/expression/evaluator.js +254 -0
  175. package/lib/schema/typebox/gen/codegen/expression/evaluator.js.map +1 -0
  176. package/lib/schema/typebox/gen/codegen/expression/expression.js +384 -0
  177. package/lib/schema/typebox/gen/codegen/expression/expression.js.map +1 -0
  178. package/lib/schema/typebox/gen/codegen/expression/index.js +6 -0
  179. package/lib/schema/typebox/gen/codegen/expression/index.js.map +1 -0
  180. package/lib/schema/typebox/gen/codegen/index.js +5 -0
  181. package/lib/schema/typebox/gen/codegen/index.js.map +1 -0
  182. package/lib/schema/typebox/gen/codegen/model/index.js +16 -0
  183. package/lib/schema/typebox/gen/codegen/model/index.js.map +1 -0
  184. package/lib/schema/typebox/gen/codegen/model/model-to-arktype.js +239 -0
  185. package/lib/schema/typebox/gen/codegen/model/model-to-arktype.js.map +1 -0
  186. package/lib/schema/typebox/gen/codegen/model/model-to-expression.js +359 -0
  187. package/lib/schema/typebox/gen/codegen/model/model-to-expression.js.map +1 -0
  188. package/lib/schema/typebox/gen/codegen/model/model-to-grpc.js +217 -0
  189. package/lib/schema/typebox/gen/codegen/model/model-to-grpc.js.map +1 -0
  190. package/lib/schema/typebox/gen/codegen/model/model-to-io-ts.js +253 -0
  191. package/lib/schema/typebox/gen/codegen/model/model-to-io-ts.js.map +1 -0
  192. package/lib/schema/typebox/gen/codegen/model/model-to-javascript.js +47 -0
  193. package/lib/schema/typebox/gen/codegen/model/model-to-javascript.js.map +1 -0
  194. package/lib/schema/typebox/gen/codegen/model/model-to-json-schema.js +171 -0
  195. package/lib/schema/typebox/gen/codegen/model/model-to-json-schema.js.map +1 -0
  196. package/lib/schema/typebox/gen/codegen/model/model-to-typebox.js +33 -0
  197. package/lib/schema/typebox/gen/codegen/model/model-to-typebox.js.map +1 -0
  198. package/lib/schema/typebox/gen/codegen/model/model-to-typescript.js +164 -0
  199. package/lib/schema/typebox/gen/codegen/model/model-to-typescript.js.map +1 -0
  200. package/lib/schema/typebox/gen/codegen/model/model-to-valibot.js +218 -0
  201. package/lib/schema/typebox/gen/codegen/model/model-to-valibot.js.map +1 -0
  202. package/lib/schema/typebox/gen/codegen/model/model-to-value.js +43 -0
  203. package/lib/schema/typebox/gen/codegen/model/model-to-value.js.map +1 -0
  204. package/lib/schema/typebox/gen/codegen/model/model-to-yrel.js +206 -0
  205. package/lib/schema/typebox/gen/codegen/model/model-to-yrel.js.map +1 -0
  206. package/lib/schema/typebox/gen/codegen/model/model-to-yup.js +204 -0
  207. package/lib/schema/typebox/gen/codegen/model/model-to-yup.js.map +1 -0
  208. package/lib/schema/typebox/gen/codegen/model/model-to-zod.js +227 -0
  209. package/lib/schema/typebox/gen/codegen/model/model-to-zod.js.map +1 -0
  210. package/lib/schema/typebox/gen/codegen/model/model.js +27 -0
  211. package/lib/schema/typebox/gen/codegen/model/model.js.map +1 -0
  212. package/lib/schema/typebox/gen/codegen/typescript/index.js +4 -0
  213. package/lib/schema/typebox/gen/codegen/typescript/index.js.map +1 -0
  214. package/lib/schema/typebox/gen/codegen/typescript/typescript-to-model.js +48 -0
  215. package/lib/schema/typebox/gen/codegen/typescript/typescript-to-model.js.map +1 -0
  216. package/lib/schema/typebox/gen/codegen/typescript/typescript-to-typebox.js +596 -0
  217. package/lib/schema/typebox/gen/codegen/typescript/typescript-to-typebox.js.map +1 -0
  218. package/lib/schema/typebox/gen/index.js +3 -0
  219. package/lib/schema/typebox/gen/index.js.map +1 -0
  220. package/lib/schema/typebox/index.js +3 -0
  221. package/lib/schema/typebox/index.js.map +1 -0
  222. package/lib/schema/typebox/typebox.js +23 -0
  223. package/lib/schema/typebox/typebox.js.map +1 -0
  224. package/lib/server.js +2 -1
  225. package/lib/server.js.map +1 -1
  226. package/lib/servers/crypto/md5.js +3 -5
  227. package/lib/servers/crypto/md5.js.map +1 -1
  228. package/lib/servers/fetch/createFetchWithProxy.js +2 -4
  229. package/lib/servers/fetch/createFetchWithProxy.js.map +1 -1
  230. package/lib/servers/fetch/createFetchWithProxyByNodeFetch.js +34 -34
  231. package/lib/servers/fetch/createFetchWithProxyByNodeFetch.js.map +1 -1
  232. package/lib/servers/fetch/createFetchWithProxyByUndici.js +59 -45
  233. package/lib/servers/fetch/createFetchWithProxyByUndici.js.map +1 -1
  234. package/lib/servers/getPackageDir.js +8 -10
  235. package/lib/servers/getPackageDir.js.map +1 -1
  236. package/lib/servers/jsdom.js +3 -2
  237. package/lib/servers/jsdom.js.map +1 -1
  238. package/lib/servers/node-fetch.js +4 -3
  239. package/lib/servers/node-fetch.js.map +1 -1
  240. package/lib/servers/polyfill/polyfillBrowser.js +17 -0
  241. package/lib/servers/polyfill/polyfillBrowser.js.map +1 -0
  242. package/lib/servers/polyfill/polyfillCrypto.js +8 -10
  243. package/lib/servers/polyfill/polyfillCrypto.js.map +1 -1
  244. package/lib/servers/polyfill/polyfillFetch.js +23 -22
  245. package/lib/servers/polyfill/polyfillFetch.js.map +1 -1
  246. package/lib/servers/polyfill/polyfillJsDom.js +59 -52
  247. package/lib/servers/polyfill/polyfillJsDom.js.map +1 -1
  248. package/lib/servers/polyfill/polyfillWebSocket.js +13 -13
  249. package/lib/servers/polyfill/polyfillWebSocket.js.map +1 -1
  250. package/lib/servers/ws.js +3 -2
  251. package/lib/servers/ws.js.map +1 -1
  252. package/lib/strings/camelCase.js +51 -49
  253. package/lib/strings/camelCase.js.map +1 -1
  254. package/lib/strings/formatBytes.js +41 -15
  255. package/lib/strings/formatBytes.js.map +1 -1
  256. package/lib/strings/renderTemplate.js +27 -20
  257. package/lib/strings/renderTemplate.js.map +1 -1
  258. package/lib/typedoc.js +4 -0
  259. package/lib/typedoc.js.map +1 -0
  260. package/lib/types/global.d.js +2 -0
  261. package/lib/types/global.d.js.map +1 -0
  262. package/lib/types/index.d.js +6 -0
  263. package/lib/types/index.d.js.map +1 -0
  264. package/lib/validations/asserts.js +14 -0
  265. package/lib/validations/asserts.js.map +1 -0
  266. package/lib/validations/isUUID.js +3 -4
  267. package/lib/validations/isUUID.js.map +1 -1
  268. package/lib/validations/parseTimestamp.js +25 -21
  269. package/lib/validations/parseTimestamp.js.map +1 -1
  270. package/package.json +59 -44
  271. package/src/index.ts +3 -3
  272. package/src/langs/deepFreeze.ts +19 -0
  273. package/src/langs/hashCode.ignored.ts +125 -0
  274. package/src/libs/README.md +2 -0
  275. package/src/logging/slog.ts +121 -0
  276. package/src/maths/clamp.test.ts +19 -0
  277. package/src/maths/clamp.ts +23 -1
  278. package/src/objects/get.ts +14 -14
  279. package/src/objects/set.ts +5 -5
  280. package/src/schema/typebox/gen/codegen/common/encoder.ts +99 -0
  281. package/src/schema/typebox/gen/codegen/common/formatter.ts +31 -0
  282. package/src/schema/typebox/gen/codegen/common/index.ts +29 -0
  283. package/src/schema/typebox/gen/codegen/common/jsdoc.ts +93 -0
  284. package/src/schema/typebox/gen/codegen/expression/compiler.ts +377 -0
  285. package/src/schema/typebox/gen/codegen/expression/errors.ts +302 -0
  286. package/src/schema/typebox/gen/codegen/expression/evaluator.ts +268 -0
  287. package/src/schema/typebox/gen/codegen/expression/expression.ts +538 -0
  288. package/src/schema/typebox/gen/codegen/expression/index.ts +32 -0
  289. package/src/schema/typebox/gen/codegen/index.ts +29 -0
  290. package/src/schema/typebox/gen/codegen/model/index.ts +40 -0
  291. package/src/schema/typebox/gen/codegen/model/model-to-arktype.ts +266 -0
  292. package/src/schema/typebox/gen/codegen/model/model-to-expression.ts +378 -0
  293. package/src/schema/typebox/gen/codegen/model/model-to-grpc.ts +244 -0
  294. package/src/schema/typebox/gen/codegen/model/model-to-io-ts.ts +294 -0
  295. package/src/schema/typebox/gen/codegen/model/model-to-javascript.ts +42 -0
  296. package/src/schema/typebox/gen/codegen/model/model-to-json-schema.ts +166 -0
  297. package/src/schema/typebox/gen/codegen/model/model-to-typebox.ts +32 -0
  298. package/src/schema/typebox/gen/codegen/model/model-to-typescript.ts +189 -0
  299. package/src/schema/typebox/gen/codegen/model/model-to-valibot.ts +236 -0
  300. package/src/schema/typebox/gen/codegen/model/model-to-value.ts +42 -0
  301. package/src/schema/typebox/gen/codegen/model/model-to-yrel.ts +232 -0
  302. package/src/schema/typebox/gen/codegen/model/model-to-yup.ts +226 -0
  303. package/src/schema/typebox/gen/codegen/model/model-to-zod.ts +251 -0
  304. package/src/schema/typebox/gen/codegen/model/model.ts +33 -0
  305. package/src/schema/typebox/gen/codegen/typescript/index.ts +28 -0
  306. package/src/schema/typebox/gen/codegen/typescript/typescript-to-model.ts +61 -0
  307. package/src/schema/typebox/gen/codegen/typescript/typescript-to-typebox.ts +647 -0
  308. package/src/schema/typebox/gen/gen.test.ts +12 -0
  309. package/src/schema/typebox/gen/index.ts +1 -0
  310. package/src/schema/typebox/index.ts +1 -0
  311. package/src/schema/typebox/typebox.ts +34 -0
  312. package/src/servers/fetch/createFetchWithProxyByUndici.ts +16 -1
  313. package/src/types/index.d.ts +1 -0
  314. package/dist/LICENSE.txt +0 -1
  315. package/dist/cjs/getGlobalThis-304f74e0.js +0 -2
  316. package/dist/cjs/getGlobalThis-304f74e0.js.map +0 -1
  317. package/dist/cjs/index.cjs +0 -21
  318. package/dist/cjs/index.cjs.map +0 -1
  319. package/dist/cjs/server.cjs +0 -2
  320. package/dist/cjs/server.cjs.map +0 -1
  321. package/dist/cjs/servers/jsdom.cjs +0 -2
  322. package/dist/cjs/servers/jsdom.cjs.map +0 -1
  323. package/dist/cjs/servers/node-fetch.cjs +0 -2
  324. package/dist/cjs/servers/node-fetch.cjs.map +0 -1
  325. package/dist/cjs/servers/ws.cjs +0 -2
  326. package/dist/cjs/servers/ws.cjs.map +0 -1
  327. package/dist/esm/getGlobalThis-b7ad0cf9.js +0 -2
  328. package/dist/esm/getGlobalThis-b7ad0cf9.js.map +0 -1
  329. package/dist/esm/index.js +0 -21
  330. package/dist/esm/index.js.map +0 -1
  331. package/dist/esm/server.js +0 -2
  332. package/dist/esm/server.js.map +0 -1
  333. package/dist/esm/servers/jsdom.js +0 -2
  334. package/dist/esm/servers/jsdom.js.map +0 -1
  335. package/dist/esm/servers/node-fetch.js +0 -2
  336. package/dist/esm/servers/node-fetch.js.map +0 -1
  337. package/dist/esm/servers/ws.js +0 -2
  338. package/dist/esm/servers/ws.js.map +0 -1
  339. package/dist/system/getGlobalThis-8951eb0e.js +0 -2
  340. package/dist/system/getGlobalThis-8951eb0e.js.map +0 -1
  341. package/dist/system/index.js +0 -21
  342. package/dist/system/index.js.map +0 -1
  343. package/dist/system/server.js +0 -2
  344. package/dist/system/server.js.map +0 -1
  345. package/dist/system/servers/jsdom.js +0 -2
  346. package/dist/system/servers/jsdom.js.map +0 -1
  347. package/dist/system/servers/node-fetch.js +0 -2
  348. package/dist/system/servers/node-fetch.js.map +0 -1
  349. package/dist/system/servers/ws.js +0 -2
  350. package/dist/system/servers/ws.js.map +0 -1
  351. package/src/langs/hashCode.ts +0 -37
@@ -1,163 +1,181 @@
1
1
  import { getHttpStatusText } from '../http/HttpStatus.js';
2
-
3
- class DetailError extends Error {
4
- constructor(detail) {
5
- super(detail.message, {
6
- cause: detail.cause
7
- });
8
- this.detail = detail;
9
- this.status = detail.status;
10
- this.description = detail.description;
11
- }
12
- status;
13
- description;
14
- toJSON() {
15
- return {
16
- code: this.detail.code,
17
- message: this.message,
18
- status: this.status,
19
- description: this.description,
20
- cause: this.cause
21
- };
22
- }
2
+ export class DetailError extends Error {
3
+ detail;
4
+ status;
5
+ description;
6
+ constructor(detail){
7
+ super(detail.message, {
8
+ cause: detail.cause
9
+ });
10
+ this.detail = detail;
11
+ this.status = detail.status;
12
+ this.description = detail.description;
13
+ }
14
+ toJSON() {
15
+ return {
16
+ code: this.detail.code,
17
+ message: this.message,
18
+ status: this.status,
19
+ description: this.description,
20
+ cause: this.cause
21
+ };
22
+ }
23
23
  }
24
- class DetailHolder {
25
- message;
26
- status;
27
- code;
28
- metadata;
29
- description;
30
- cause;
31
- constructor({
32
- status,
33
- message = getHttpStatusText(status),
34
- code = status,
35
- metadata,
36
- description,
37
- cause
38
- }) {
39
- this.message = message != null ? message : String(status);
40
- this.status = status;
41
- this.code = code;
42
- this.description = description;
43
- this.metadata = metadata;
44
- this.cause = cause;
45
- }
46
- with(o) {
47
- if (typeof o === "string") {
48
- o = { message: o };
24
+ let DetailHolder = class DetailHolder {
25
+ message;
26
+ status;
27
+ code;
28
+ metadata;
29
+ description;
30
+ cause;
31
+ constructor({ status, message = getHttpStatusText(status), code = status, metadata, description, cause }){
32
+ this.message = message ?? String(status);
33
+ this.status = status;
34
+ this.code = code;
35
+ this.description = description;
36
+ this.metadata = metadata;
37
+ this.cause = cause;
49
38
  }
50
- if (o === void 0) {
51
- return new DetailHolder(this);
39
+ with(o) {
40
+ if (typeof o === 'string') {
41
+ o = {
42
+ message: o
43
+ };
44
+ }
45
+ if (o === undefined) {
46
+ return new DetailHolder(this);
47
+ }
48
+ return new DetailHolder({
49
+ status: this.status,
50
+ code: this.code,
51
+ message: this.message,
52
+ metadata: this.metadata,
53
+ cause: this.cause,
54
+ ...o
55
+ });
52
56
  }
53
- return new DetailHolder({
54
- status: this.status,
55
- code: this.code,
56
- message: this.message,
57
- metadata: this.metadata,
58
- cause: this.cause,
59
- ...o
60
- });
61
- }
62
- asError(o) {
63
- if (typeof o === "string") {
64
- o = { message: o };
57
+ asError(o) {
58
+ if (typeof o === 'string') {
59
+ o = {
60
+ message: o
61
+ };
62
+ }
63
+ return new DetailError(this.with(o));
65
64
  }
66
- return new DetailError(this.with(o));
67
- }
68
- require(v, o) {
69
- if (v === void 0 || v === null) {
70
- throw this.asError(o);
65
+ require(v, o) {
66
+ if (v === undefined || v === null) {
67
+ throw this.asError(o);
68
+ }
69
+ return v;
71
70
  }
72
- return v;
73
- }
74
- check(cond, o) {
75
- switch (cond) {
76
- case false:
77
- case void 0:
78
- case null: {
71
+ check(cond, o) {
72
+ switch(cond){
73
+ case false:
74
+ case undefined:
75
+ case null:
76
+ {
77
+ throw this.asError(o);
78
+ }
79
+ }
80
+ }
81
+ throw(o) {
79
82
  throw this.asError(o);
80
- }
81
83
  }
82
- }
83
- throw(o) {
84
- throw this.asError(o);
85
- }
86
- toJSON() {
87
- return {
88
- code: this.code,
89
- message: this.message,
90
- status: this.status,
91
- description: this.description,
92
- cause: this.cause,
93
- metadata: this.metadata
94
- };
95
- }
96
- asResponse() {
97
- return new Response(JSON.stringify(this.toJSON()), {
98
- status: this.status,
99
- statusText: this.description,
100
- headers: {
101
- "Content-Type": "application/json"
102
- }
103
- });
104
- }
105
- }
106
- class Errors {
107
- static BadRequest = this.with({ status: 400 });
108
- static Unauthorized = this.with({ status: 403 });
109
- static Forbidden = this.with({ status: 403 });
110
- static NotFound = this.with({ status: 404 });
111
- static InternalServerError = this.with({ status: 501 });
112
- static NotImplemented = this.with({ status: 501 });
113
- static ServiceUnavailable = this.with({ status: 503 });
114
- static resolvers = [];
115
- static with(init) {
116
- return new DetailHolder(init);
117
- }
118
- static ok(res, o) {
119
- if (res.ok) {
120
- return res;
84
+ toJSON() {
85
+ return {
86
+ code: this.code,
87
+ message: this.message,
88
+ status: this.status,
89
+ description: this.description,
90
+ cause: this.cause,
91
+ metadata: this.metadata
92
+ };
121
93
  }
122
- throw this.with({
123
- description: res.statusText,
124
- status: res.status,
125
- ...o,
126
- metadata: {
127
- ...o == null ? void 0 : o.metadata,
128
- response: res
129
- }
130
- }).asError();
131
- }
132
- static resolve(e) {
133
- if (e instanceof DetailHolder) {
134
- return e;
94
+ asResponse() {
95
+ return new Response(JSON.stringify(this.toJSON()), {
96
+ status: this.status,
97
+ statusText: this.description,
98
+ headers: {
99
+ 'Content-Type': 'application/json'
100
+ }
101
+ });
135
102
  }
136
- if (e instanceof DetailError) {
137
- return e.detail;
103
+ };
104
+ export class Errors {
105
+ static BadRequest = this.with({
106
+ status: 400
107
+ });
108
+ static Unauthorized = this.with({
109
+ status: 403
110
+ });
111
+ static Forbidden = this.with({
112
+ status: 403
113
+ });
114
+ static NotFound = this.with({
115
+ status: 404
116
+ });
117
+ static InternalServerError = this.with({
118
+ status: 501
119
+ });
120
+ static NotImplemented = this.with({
121
+ status: 501
122
+ });
123
+ static ServiceUnavailable = this.with({
124
+ status: 503
125
+ });
126
+ static resolvers = [];
127
+ static with(init) {
128
+ return new DetailHolder(init);
138
129
  }
139
- for (const resolver of this.resolvers) {
140
- const r = resolver(e);
141
- if (r) {
142
- return r;
143
- }
130
+ static ok(res, o) {
131
+ if (res.ok) {
132
+ return res;
133
+ }
134
+ throw this.with({
135
+ description: res.statusText,
136
+ status: res.status,
137
+ ...o,
138
+ metadata: {
139
+ ...o?.metadata,
140
+ response: res
141
+ }
142
+ }).asError();
144
143
  }
145
- if (e instanceof Error) {
146
- const { message, code, status } = e;
147
- return new DetailHolder({
148
- message,
149
- status: parseInt(status) || 500,
150
- code,
151
- cause: e
152
- });
144
+ static resolve(e) {
145
+ if (e instanceof DetailHolder) {
146
+ return e;
147
+ }
148
+ if (e instanceof DetailError) {
149
+ return e.detail;
150
+ }
151
+ for (const resolver of this.resolvers){
152
+ const r = resolver(e);
153
+ if (r) {
154
+ return r;
155
+ }
156
+ }
157
+ if (e instanceof Error) {
158
+ const { message, code, status } = e;
159
+ // can get status from NestJS HttpException
160
+ return new DetailHolder({
161
+ message,
162
+ status: parseInt(status) || 500,
163
+ code,
164
+ cause: e
165
+ });
166
+ }
167
+ return new DetailHolder({
168
+ message: e.message,
169
+ status: 500,
170
+ cause: e
171
+ });
153
172
  }
154
- return new DetailHolder({
155
- message: e.message,
156
- status: 500,
157
- cause: e
158
- });
159
- }
160
- }
173
+ } // interface ZodError {
174
+ // path: Array<string | number>;
175
+ // message: string;
176
+ // code: string;
177
+ // expected?: any;
178
+ // received?: any;
179
+ // }
161
180
 
162
- export { DetailError, Errors };
163
- //# sourceMappingURL=Errors.js.map
181
+ //# sourceMappingURL=Errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Errors.js","sources":["../../src/errors/Errors.ts"],"sourcesContent":["import { getHttpStatusText } from '../http/HttpStatus';\n\nexport interface ErrorDetailInit {\n message?: string;\n status: number;\n description?: string;\n code?: number | string;\n metadata?: Record<string, any>;\n cause?: any;\n}\n\nexport class DetailError extends Error {\n readonly status: number;\n readonly description?: string;\n\n constructor(readonly detail: ErrorDetail) {\n super(detail.message, {\n cause: detail.cause,\n });\n this.status = detail.status;\n this.description = detail.description;\n }\n\n toJSON() {\n return {\n code: this.detail.code,\n message: this.message,\n status: this.status,\n description: this.description,\n cause: this.cause,\n };\n }\n}\n\nclass DetailHolder implements ErrorDetail {\n readonly message: string;\n readonly status: number;\n readonly code: number | string;\n readonly metadata?: Record<string, any>;\n readonly description?: string;\n readonly cause?: any;\n\n constructor({\n status,\n message = getHttpStatusText(status),\n code = status,\n metadata,\n description,\n cause,\n }: ErrorDetailInit) {\n this.message = message ?? String(status);\n this.status = status;\n this.code = code;\n this.description = description;\n this.metadata = metadata;\n this.cause = cause;\n }\n\n with(o?: Partial<ErrorDetailInit> | string): DetailHolder {\n if (typeof o === 'string') {\n o = { message: o };\n }\n\n if (o === undefined) {\n return new DetailHolder(this);\n }\n\n return new DetailHolder({\n status: this.status,\n code: this.code,\n message: this.message,\n metadata: this.metadata,\n cause: this.cause,\n ...o,\n });\n }\n\n asError(o?: Partial<ErrorDetailInit> | string): Error {\n if (typeof o === 'string') {\n o = { message: o };\n }\n\n return new DetailError(this.with(o));\n }\n\n require(v: any, o?: Partial<ErrorDetailInit> | string): any {\n if (v === undefined || v === null) {\n throw this.asError(o);\n }\n\n return v;\n }\n\n check(cond: any, o?: Partial<ErrorDetailInit> | string) {\n switch (cond) {\n case false:\n case undefined:\n case null: {\n throw this.asError(o);\n }\n }\n }\n\n throw(o?: string | Partial<ErrorDetailInit>): never {\n throw this.asError(o);\n }\n\n toJSON() {\n return {\n code: this.code,\n message: this.message,\n status: this.status,\n description: this.description,\n cause: this.cause,\n metadata: this.metadata,\n };\n }\n\n asResponse(): Response {\n return new Response(JSON.stringify(this.toJSON()), {\n status: this.status,\n statusText: this.description,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n }\n}\n\nexport interface ErrorDetail {\n readonly message: string;\n readonly status: number;\n readonly code?: number | string;\n readonly metadata?: Record<string, any>;\n readonly description?: string;\n readonly cause?: any;\n\n with(message: string): ErrorDetail;\n\n with(o?: Partial<ErrorDetailInit>): ErrorDetail;\n\n asError(o?: string | Partial<ErrorDetailInit>): Error;\n\n asResponse(): Response;\n\n throw(o?: string | Partial<ErrorDetailInit>): never;\n\n require<T>(v: T | undefined, o?: Partial<ErrorDetailInit> | string): NonNullable<T>;\n\n // 不支持 return value\n // https://stackoverflow.com/a/73252858/1870054\n\n check(condition: boolean, o?: Partial<ErrorDetailInit> | string): asserts condition;\n\n check<T>(v: T | undefined | null, o?: Partial<ErrorDetailInit> | string): asserts v is NonNullable<T>;\n}\n\nexport class Errors {\n static BadRequest: ErrorDetail = this.with({ status: 400 });\n static Unauthorized: ErrorDetail = this.with({ status: 403 });\n static Forbidden: ErrorDetail = this.with({ status: 403 });\n static NotFound: ErrorDetail = this.with({ status: 404 });\n static InternalServerError: ErrorDetail = this.with({ status: 501 });\n static NotImplemented: ErrorDetail = this.with({ status: 501 });\n static ServiceUnavailable: ErrorDetail = this.with({ status: 503 });\n\n static resolvers: ((e: any) => ErrorDetail | void)[] = [];\n\n static with(init: ErrorDetailInit): ErrorDetail {\n return new DetailHolder(init);\n }\n\n static ok(res: Response, o?: Partial<ErrorDetailInit>) {\n if (res.ok) {\n return res;\n }\n throw this.with({\n description: res.statusText,\n status: res.status,\n ...o,\n metadata: {\n ...o?.metadata,\n response: res,\n },\n }).asError();\n }\n\n static resolve(e: any): ErrorDetail {\n if (e instanceof DetailHolder) {\n return e;\n }\n\n if (e instanceof DetailError) {\n return e.detail;\n }\n\n for (const resolver of this.resolvers) {\n const r = resolver(e);\n if (r) {\n return r;\n }\n }\n\n if (e instanceof Error) {\n const { message, code, status } = e as any;\n // can get status from NestJS HttpException\n return new DetailHolder({\n message,\n status: parseInt(status) || 500,\n code,\n cause: e,\n });\n }\n\n return new DetailHolder({\n message: e.message,\n status: 500,\n cause: e,\n });\n }\n}\n\n// interface ZodError {\n// path: Array<string | number>;\n// message: string;\n// code: string;\n// expected?: any;\n// received?: any;\n// }\n"],"names":[],"mappings":";;AAWO,MAAM,oBAAoB,KAAM,CAAA;AAAA,EAIrC,YAAqB,MAAqB,EAAA;AACxC,IAAA,KAAA,CAAM,OAAO,OAAS,EAAA;AAAA,MACpB,OAAO,MAAO,CAAA,KAAA;AAAA,KACf,CAAA,CAAA;AAHkB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;AAInB,IAAA,IAAA,CAAK,SAAS,MAAO,CAAA,MAAA,CAAA;AACrB,IAAA,IAAA,CAAK,cAAc,MAAO,CAAA,WAAA,CAAA;AAAA,GAC5B;AAAA,EATS,MAAA,CAAA;AAAA,EACA,WAAA,CAAA;AAAA,EAUT,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,IAAA,EAAM,KAAK,MAAO,CAAA,IAAA;AAAA,MAClB,SAAS,IAAK,CAAA,OAAA;AAAA,MACd,QAAQ,IAAK,CAAA,MAAA;AAAA,MACb,aAAa,IAAK,CAAA,WAAA;AAAA,MAClB,OAAO,IAAK,CAAA,KAAA;AAAA,KACd,CAAA;AAAA,GACF;AACF,CAAA;AAEA,MAAM,YAAoC,CAAA;AAAA,EAC/B,OAAA,CAAA;AAAA,EACA,MAAA,CAAA;AAAA,EACA,IAAA,CAAA;AAAA,EACA,QAAA,CAAA;AAAA,EACA,WAAA,CAAA;AAAA,EACA,KAAA,CAAA;AAAA,EAET,WAAY,CAAA;AAAA,IACV,MAAA;AAAA,IACA,OAAA,GAAU,kBAAkB,MAAM,CAAA;AAAA,IAClC,IAAO,GAAA,MAAA;AAAA,IACP,QAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,GACkB,EAAA;AAClB,IAAK,IAAA,CAAA,OAAA,GAAU,OAAW,IAAA,IAAA,GAAA,OAAA,GAAA,MAAA,CAAO,MAAM,CAAA,CAAA;AACvC,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA,CAAA;AACd,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA,CAAA;AACZ,IAAA,IAAA,CAAK,WAAc,GAAA,WAAA,CAAA;AACnB,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA,CAAA;AAChB,IAAA,IAAA,CAAK,KAAQ,GAAA,KAAA,CAAA;AAAA,GACf;AAAA,EAEA,KAAK,CAAqD,EAAA;AACxD,IAAI,IAAA,OAAO,MAAM,QAAU,EAAA;AACzB,MAAI,CAAA,GAAA,EAAE,SAAS,CAAE,EAAA,CAAA;AAAA,KACnB;AAEA,IAAA,IAAI,MAAM,KAAW,CAAA,EAAA;AACnB,MAAO,OAAA,IAAI,aAAa,IAAI,CAAA,CAAA;AAAA,KAC9B;AAEA,IAAA,OAAO,IAAI,YAAa,CAAA;AAAA,MACtB,QAAQ,IAAK,CAAA,MAAA;AAAA,MACb,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,SAAS,IAAK,CAAA,OAAA;AAAA,MACd,UAAU,IAAK,CAAA,QAAA;AAAA,MACf,OAAO,IAAK,CAAA,KAAA;AAAA,MACZ,GAAG,CAAA;AAAA,KACJ,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,QAAQ,CAA8C,EAAA;AACpD,IAAI,IAAA,OAAO,MAAM,QAAU,EAAA;AACzB,MAAI,CAAA,GAAA,EAAE,SAAS,CAAE,EAAA,CAAA;AAAA,KACnB;AAEA,IAAA,OAAO,IAAI,WAAA,CAAY,IAAK,CAAA,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA;AAAA,GACrC;AAAA,EAEA,OAAA,CAAQ,GAAQ,CAA4C,EAAA;AAC1D,IAAI,IAAA,CAAA,KAAM,KAAa,CAAA,IAAA,CAAA,KAAM,IAAM,EAAA;AACjC,MAAM,MAAA,IAAA,CAAK,QAAQ,CAAC,CAAA,CAAA;AAAA,KACtB;AAEA,IAAO,OAAA,CAAA,CAAA;AAAA,GACT;AAAA,EAEA,KAAA,CAAM,MAAW,CAAuC,EAAA;AACtD,IAAA,QAAQ,IAAM;AAAA,MACZ,KAAK,KAAA,CAAA;AAAA,MACL,KAAK,KAAA,CAAA,CAAA;AAAA,MACL,KAAK,IAAM,EAAA;AACT,QAAM,MAAA,IAAA,CAAK,QAAQ,CAAC,CAAA,CAAA;AAAA,OACtB;AAAA,KACF;AAAA,GACF;AAAA,EAEA,MAAM,CAA8C,EAAA;AAClD,IAAM,MAAA,IAAA,CAAK,QAAQ,CAAC,CAAA,CAAA;AAAA,GACtB;AAAA,EAEA,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,SAAS,IAAK,CAAA,OAAA;AAAA,MACd,QAAQ,IAAK,CAAA,MAAA;AAAA,MACb,aAAa,IAAK,CAAA,WAAA;AAAA,MAClB,OAAO,IAAK,CAAA,KAAA;AAAA,MACZ,UAAU,IAAK,CAAA,QAAA;AAAA,KACjB,CAAA;AAAA,GACF;AAAA,EAEA,UAAuB,GAAA;AACrB,IAAA,OAAO,IAAI,QAAS,CAAA,IAAA,CAAK,UAAU,IAAK,CAAA,MAAA,EAAQ,CAAG,EAAA;AAAA,MACjD,QAAQ,IAAK,CAAA,MAAA;AAAA,MACb,YAAY,IAAK,CAAA,WAAA;AAAA,MACjB,OAAS,EAAA;AAAA,QACP,cAAgB,EAAA,kBAAA;AAAA,OAClB;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AACF,CAAA;AA8BO,MAAM,MAAO,CAAA;AAAA,EAClB,OAAO,UAA0B,GAAA,IAAA,CAAK,KAAK,EAAE,MAAA,EAAQ,KAAK,CAAA,CAAA;AAAA,EAC1D,OAAO,YAA4B,GAAA,IAAA,CAAK,KAAK,EAAE,MAAA,EAAQ,KAAK,CAAA,CAAA;AAAA,EAC5D,OAAO,SAAyB,GAAA,IAAA,CAAK,KAAK,EAAE,MAAA,EAAQ,KAAK,CAAA,CAAA;AAAA,EACzD,OAAO,QAAwB,GAAA,IAAA,CAAK,KAAK,EAAE,MAAA,EAAQ,KAAK,CAAA,CAAA;AAAA,EACxD,OAAO,mBAAmC,GAAA,IAAA,CAAK,KAAK,EAAE,MAAA,EAAQ,KAAK,CAAA,CAAA;AAAA,EACnE,OAAO,cAA8B,GAAA,IAAA,CAAK,KAAK,EAAE,MAAA,EAAQ,KAAK,CAAA,CAAA;AAAA,EAC9D,OAAO,kBAAkC,GAAA,IAAA,CAAK,KAAK,EAAE,MAAA,EAAQ,KAAK,CAAA,CAAA;AAAA,EAElE,OAAO,YAAgD,EAAC,CAAA;AAAA,EAExD,OAAO,KAAK,IAAoC,EAAA;AAC9C,IAAO,OAAA,IAAI,aAAa,IAAI,CAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,OAAO,EAAG,CAAA,GAAA,EAAe,CAA8B,EAAA;AACrD,IAAA,IAAI,IAAI,EAAI,EAAA;AACV,MAAO,OAAA,GAAA,CAAA;AAAA,KACT;AACA,IAAA,MAAM,KAAK,IAAK,CAAA;AAAA,MACd,aAAa,GAAI,CAAA,UAAA;AAAA,MACjB,QAAQ,GAAI,CAAA,MAAA;AAAA,MACZ,GAAG,CAAA;AAAA,MACH,QAAU,EAAA;AAAA,QACR,GAAG,CAAG,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAA,CAAA,QAAA;AAAA,QACN,QAAU,EAAA,GAAA;AAAA,OACZ;AAAA,KACD,EAAE,OAAQ,EAAA,CAAA;AAAA,GACb;AAAA,EAEA,OAAO,QAAQ,CAAqB,EAAA;AAClC,IAAA,IAAI,aAAa,YAAc,EAAA;AAC7B,MAAO,OAAA,CAAA,CAAA;AAAA,KACT;AAEA,IAAA,IAAI,aAAa,WAAa,EAAA;AAC5B,MAAA,OAAO,CAAE,CAAA,MAAA,CAAA;AAAA,KACX;AAEA,IAAW,KAAA,MAAA,QAAA,IAAY,KAAK,SAAW,EAAA;AACrC,MAAM,MAAA,CAAA,GAAI,SAAS,CAAC,CAAA,CAAA;AACpB,MAAA,IAAI,CAAG,EAAA;AACL,QAAO,OAAA,CAAA,CAAA;AAAA,OACT;AAAA,KACF;AAEA,IAAA,IAAI,aAAa,KAAO,EAAA;AACtB,MAAA,MAAM,EAAE,OAAA,EAAS,IAAM,EAAA,MAAA,EAAW,GAAA,CAAA,CAAA;AAElC,MAAA,OAAO,IAAI,YAAa,CAAA;AAAA,QACtB,OAAA;AAAA,QACA,MAAA,EAAQ,QAAS,CAAA,MAAM,CAAK,IAAA,GAAA;AAAA,QAC5B,IAAA;AAAA,QACA,KAAO,EAAA,CAAA;AAAA,OACR,CAAA,CAAA;AAAA,KACH;AAEA,IAAA,OAAO,IAAI,YAAa,CAAA;AAAA,MACtB,SAAS,CAAE,CAAA,OAAA;AAAA,MACX,MAAQ,EAAA,GAAA;AAAA,MACR,KAAO,EAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAAA,GACH;AACF;;;;"}
1
+ {"version":3,"sources":["../../src/errors/Errors.ts"],"sourcesContent":["import { getHttpStatusText } from '../http/HttpStatus';\n\nexport interface ErrorDetailInit {\n message?: string;\n status: number;\n description?: string;\n code?: number | string;\n metadata?: Record<string, any>;\n cause?: any;\n}\n\nexport class DetailError extends Error {\n readonly status: number;\n readonly description?: string;\n\n constructor(readonly detail: ErrorDetail) {\n super(detail.message, {\n cause: detail.cause,\n });\n this.status = detail.status;\n this.description = detail.description;\n }\n\n toJSON() {\n return {\n code: this.detail.code,\n message: this.message,\n status: this.status,\n description: this.description,\n cause: this.cause,\n };\n }\n}\n\nclass DetailHolder implements ErrorDetail {\n readonly message: string;\n readonly status: number;\n readonly code: number | string;\n readonly metadata?: Record<string, any>;\n readonly description?: string;\n readonly cause?: any;\n\n constructor({\n status,\n message = getHttpStatusText(status),\n code = status,\n metadata,\n description,\n cause,\n }: ErrorDetailInit) {\n this.message = message ?? String(status);\n this.status = status;\n this.code = code;\n this.description = description;\n this.metadata = metadata;\n this.cause = cause;\n }\n\n with(o?: Partial<ErrorDetailInit> | string): DetailHolder {\n if (typeof o === 'string') {\n o = { message: o };\n }\n\n if (o === undefined) {\n return new DetailHolder(this);\n }\n\n return new DetailHolder({\n status: this.status,\n code: this.code,\n message: this.message,\n metadata: this.metadata,\n cause: this.cause,\n ...o,\n });\n }\n\n asError(o?: Partial<ErrorDetailInit> | string): Error {\n if (typeof o === 'string') {\n o = { message: o };\n }\n\n return new DetailError(this.with(o));\n }\n\n require(v: any, o?: Partial<ErrorDetailInit> | string): any {\n if (v === undefined || v === null) {\n throw this.asError(o);\n }\n\n return v;\n }\n\n check(cond: any, o?: Partial<ErrorDetailInit> | string) {\n switch (cond) {\n case false:\n case undefined:\n case null: {\n throw this.asError(o);\n }\n }\n }\n\n throw(o?: string | Partial<ErrorDetailInit>): never {\n throw this.asError(o);\n }\n\n toJSON() {\n return {\n code: this.code,\n message: this.message,\n status: this.status,\n description: this.description,\n cause: this.cause,\n metadata: this.metadata,\n };\n }\n\n asResponse(): Response {\n return new Response(JSON.stringify(this.toJSON()), {\n status: this.status,\n statusText: this.description,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n }\n}\n\nexport interface ErrorDetail {\n readonly message: string;\n readonly status: number;\n readonly code?: number | string;\n readonly metadata?: Record<string, any>;\n readonly description?: string;\n readonly cause?: any;\n\n with(message: string): ErrorDetail;\n\n with(o?: Partial<ErrorDetailInit>): ErrorDetail;\n\n asError(o?: string | Partial<ErrorDetailInit>): Error;\n\n asResponse(): Response;\n\n throw(o?: string | Partial<ErrorDetailInit>): never;\n\n require<T>(v: T | undefined, o?: Partial<ErrorDetailInit> | string): NonNullable<T>;\n\n // 不支持 return value\n // https://stackoverflow.com/a/73252858/1870054\n\n check(condition: boolean, o?: Partial<ErrorDetailInit> | string): asserts condition;\n\n check<T>(v: T | undefined | null, o?: Partial<ErrorDetailInit> | string): asserts v is NonNullable<T>;\n}\n\nexport class Errors {\n static BadRequest: ErrorDetail = this.with({ status: 400 });\n static Unauthorized: ErrorDetail = this.with({ status: 403 });\n static Forbidden: ErrorDetail = this.with({ status: 403 });\n static NotFound: ErrorDetail = this.with({ status: 404 });\n static InternalServerError: ErrorDetail = this.with({ status: 501 });\n static NotImplemented: ErrorDetail = this.with({ status: 501 });\n static ServiceUnavailable: ErrorDetail = this.with({ status: 503 });\n\n static resolvers: ((e: any) => ErrorDetail | void)[] = [];\n\n static with(init: ErrorDetailInit): ErrorDetail {\n return new DetailHolder(init);\n }\n\n static ok(res: Response, o?: Partial<ErrorDetailInit>) {\n if (res.ok) {\n return res;\n }\n throw this.with({\n description: res.statusText,\n status: res.status,\n ...o,\n metadata: {\n ...o?.metadata,\n response: res,\n },\n }).asError();\n }\n\n static resolve(e: any): ErrorDetail {\n if (e instanceof DetailHolder) {\n return e;\n }\n\n if (e instanceof DetailError) {\n return e.detail;\n }\n\n for (const resolver of this.resolvers) {\n const r = resolver(e);\n if (r) {\n return r;\n }\n }\n\n if (e instanceof Error) {\n const { message, code, status } = e as any;\n // can get status from NestJS HttpException\n return new DetailHolder({\n message,\n status: parseInt(status) || 500,\n code,\n cause: e,\n });\n }\n\n return new DetailHolder({\n message: e.message,\n status: 500,\n cause: e,\n });\n }\n}\n\n// interface ZodError {\n// path: Array<string | number>;\n// message: string;\n// code: string;\n// expected?: any;\n// received?: any;\n// }\n"],"names":["getHttpStatusText","DetailError","Error","detail","status","description","constructor","message","cause","toJSON","code","DetailHolder","metadata","String","with","o","undefined","asError","require","v","check","cond","throw","asResponse","Response","JSON","stringify","statusText","headers","Errors","BadRequest","Unauthorized","Forbidden","NotFound","InternalServerError","NotImplemented","ServiceUnavailable","resolvers","init","ok","res","response","resolve","e","resolver","r","parseInt"],"mappings":"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"}
@@ -1,26 +1,23 @@
1
1
  import { getGlobalThis } from '../isomorphics/getGlobalThis.js';
2
-
3
- function createFetchWith({
4
- fetch = getGlobalThis().fetch,
5
- onRequest = (ctx) => ctx.next(ctx.url, ctx.req),
6
- onResponse = (ctx) => ctx.res
7
- }) {
8
- return async (urlOrRequest, init) => {
9
- var _a;
10
- const url = String(urlOrRequest);
11
- let req = init || {};
12
- const nextFetch = req.fetch || fetch;
13
- const res = (_a = await onRequest({
14
- url,
15
- req,
16
- next: (url2, init2) => {
17
- req = init2;
18
- return nextFetch(url2, init2);
19
- }
20
- })) != null ? _a : await nextFetch(url, init);
21
- return onResponse({ url, req, res });
22
- };
2
+ export function createFetchWith({ fetch = getGlobalThis().fetch, onRequest = (ctx)=>ctx.next(ctx.url, ctx.req), onResponse = (ctx)=>ctx.res }) {
3
+ return async (urlOrRequest, init)=>{
4
+ const url = String(urlOrRequest);
5
+ let req = init || {};
6
+ const nextFetch = req.fetch || fetch;
7
+ const res = await onRequest({
8
+ url,
9
+ req,
10
+ next: (url, init)=>{
11
+ req = init;
12
+ return nextFetch(url, init);
13
+ }
14
+ }) ?? await nextFetch(url, init);
15
+ return onResponse({
16
+ url,
17
+ req,
18
+ res
19
+ });
20
+ };
23
21
  }
24
22
 
25
- export { createFetchWith };
26
- //# sourceMappingURL=createFetchWith.js.map
23
+ //# sourceMappingURL=createFetchWith.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createFetchWith.js","sources":["../../src/fetch/createFetchWith.ts"],"sourcesContent":["import { MaybePromise } from '../asyncs/MaybePromise';\nimport { getGlobalThis } from '../isomorphics/getGlobalThis';\nimport { type FetchLike } from './types';\n\nexport function createFetchWith({\n fetch = getGlobalThis().fetch,\n onRequest = (ctx) => ctx.next(ctx.url, ctx.req),\n onResponse = (ctx) => ctx.res,\n}: {\n fetch?: FetchLike;\n onRequest?: (ctx: {\n url: string;\n req: RequestInit;\n next: (url: string, req: RequestInit) => Promise<Response>;\n }) => MaybePromise<Response | void>;\n onResponse?: (ctx: { url: string; req: RequestInit; res: Response }) => MaybePromise<Response>;\n}) {\n return async (urlOrRequest: string | URL | Request, init?: RequestInit & { fetch?: FetchLike }) => {\n const url = String(urlOrRequest);\n let req = init || {};\n const nextFetch = req.fetch || fetch;\n const res =\n (await onRequest({\n url,\n req,\n next: (url, init) => {\n req = init;\n return nextFetch(url, init);\n },\n })) ?? (await nextFetch(url, init));\n return onResponse({ url, req, res });\n };\n}\n"],"names":["url","init"],"mappings":";;AAIO,SAAS,eAAgB,CAAA;AAAA,EAC9B,KAAA,GAAQ,eAAgB,CAAA,KAAA;AAAA,EACxB,SAAA,GAAY,CAAC,GAAQ,KAAA,GAAA,CAAI,KAAK,GAAI,CAAA,GAAA,EAAK,IAAI,GAAG,CAAA;AAAA,EAC9C,UAAA,GAAa,CAAC,GAAA,KAAQ,GAAI,CAAA,GAAA;AAC5B,CAQG,EAAA;AACD,EAAO,OAAA,OAAO,cAAsC,IAA+C,KAAA;AAjBrG,IAAA,IAAA,EAAA,CAAA;AAkBI,IAAM,MAAA,GAAA,GAAM,OAAO,YAAY,CAAA,CAAA;AAC/B,IAAI,IAAA,GAAA,GAAM,QAAQ,EAAC,CAAA;AACnB,IAAM,MAAA,SAAA,GAAY,IAAI,KAAS,IAAA,KAAA,CAAA;AAC/B,IAAM,MAAA,GAAA,GAAA,CACH,WAAM,SAAU,CAAA;AAAA,MACf,GAAA;AAAA,MACA,GAAA;AAAA,MACA,IAAA,EAAM,CAACA,IAAAA,EAAKC,KAAS,KAAA;AACnB,QAAMA,GAAAA,GAAAA,KAAAA,CAAAA;AACN,QAAO,OAAA,SAAA,CAAUD,MAAKC,KAAI,CAAA,CAAA;AAAA,OAC5B;AAAA,KACD,CAPA,KAAA,IAAA,GAAA,EAAA,GAOO,MAAM,SAAA,CAAU,KAAK,IAAI,CAAA,CAAA;AACnC,IAAA,OAAO,UAAW,CAAA,EAAE,GAAK,EAAA,GAAA,EAAK,KAAK,CAAA,CAAA;AAAA,GACrC,CAAA;AACF;;;;"}
1
+ {"version":3,"sources":["../../src/fetch/createFetchWith.ts"],"sourcesContent":["import { MaybePromise } from '../asyncs/MaybePromise';\nimport { getGlobalThis } from '../isomorphics/getGlobalThis';\nimport { type FetchLike } from './types';\n\nexport function createFetchWith({\n fetch = getGlobalThis().fetch,\n onRequest = (ctx) => ctx.next(ctx.url, ctx.req),\n onResponse = (ctx) => ctx.res,\n}: {\n fetch?: FetchLike;\n onRequest?: (ctx: {\n url: string;\n req: RequestInit;\n next: (url: string, req: RequestInit) => Promise<Response>;\n }) => MaybePromise<Response | void>;\n onResponse?: (ctx: { url: string; req: RequestInit; res: Response }) => MaybePromise<Response>;\n}) {\n return async (urlOrRequest: string | URL | Request, init?: RequestInit & { fetch?: FetchLike }) => {\n const url = String(urlOrRequest);\n let req = init || {};\n const nextFetch = req.fetch || fetch;\n const res =\n (await onRequest({\n url,\n req,\n next: (url, init) => {\n req = init;\n return nextFetch(url, init);\n },\n })) ?? (await nextFetch(url, init));\n return onResponse({ url, req, res });\n };\n}\n"],"names":["getGlobalThis","createFetchWith","fetch","onRequest","ctx","next","url","req","onResponse","res","urlOrRequest","init","String","nextFetch"],"mappings":"AACA,SAASA,aAAa,QAAQ,+BAA+B;AAG7D,OAAO,SAASC,gBAAgB,EAC9BC,QAAQF,gBAAgBE,KAAK,EAC7BC,YAAY,CAACC,MAAQA,IAAIC,IAAI,CAACD,IAAIE,GAAG,EAAEF,IAAIG,GAAG,CAAC,EAC/CC,aAAa,CAACJ,MAAQA,IAAIK,GAAG,EAS9B;IACC,OAAO,OAAOC,cAAsCC;QAClD,MAAML,MAAMM,OAAOF;QACnB,IAAIH,MAAMI,QAAQ,CAAC;QACnB,MAAME,YAAYN,IAAIL,KAAK,IAAIA;QAC/B,MAAMO,MACJ,AAAC,MAAMN,UAAU;YACfG;YACAC;YACAF,MAAM,CAACC,KAAKK;gBACVJ,MAAMI;gBACN,OAAOE,UAAUP,KAAKK;YACxB;QACF,MAAQ,MAAME,UAAUP,KAAKK;QAC/B,OAAOH,WAAW;YAAEF;YAAKC;YAAKE;QAAI;IACpC;AACF"}
@@ -1,21 +1,25 @@
1
1
  import { createFetchWith } from './createFetchWith.js';
2
2
  import { dumpRequest } from './dumpRequest.js';
3
3
  import { dumpResponse } from './dumpResponse.js';
4
-
5
- function createFetchWithLogging({
6
- fetch,
7
- log = console.log
8
- } = {}) {
9
- return createFetchWith({
10
- fetch,
11
- onRequest: ({ url, req }) => {
12
- void dumpRequest({ url, req, log });
13
- },
14
- onResponse: ({ url, req, res }) => {
15
- return dumpResponse({ url, req, res, log });
16
- }
17
- });
4
+ export function createFetchWithLogging({ fetch, log = console.log } = {}) {
5
+ return createFetchWith({
6
+ fetch,
7
+ onRequest: ({ url, req })=>{
8
+ void dumpRequest({
9
+ url,
10
+ req,
11
+ log
12
+ });
13
+ },
14
+ onResponse: ({ url, req, res })=>{
15
+ return dumpResponse({
16
+ url,
17
+ req,
18
+ res,
19
+ log
20
+ });
21
+ }
22
+ });
18
23
  }
19
24
 
20
- export { createFetchWithLogging };
21
- //# sourceMappingURL=createFetchWithLogging.js.map
25
+ //# sourceMappingURL=createFetchWithLogging.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createFetchWithLogging.js","sources":["../../src/fetch/createFetchWithLogging.ts"],"sourcesContent":["import { createFetchWith } from './createFetchWith';\nimport { dumpRequest } from './dumpRequest';\nimport { dumpResponse } from './dumpResponse';\nimport { type FetchLike } from './types';\n\nexport function createFetchWithLogging({\n fetch,\n log = console.log,\n}: {\n fetch?: FetchLike;\n log?: (s: string) => void;\n} = {}): FetchLike {\n return createFetchWith({\n fetch,\n onRequest: ({ url, req }) => {\n void dumpRequest({ url, req, log });\n },\n onResponse: ({ url, req, res }) => {\n return dumpResponse({ url, req, res, log });\n },\n });\n}\n"],"names":[],"mappings":";;;;AAKO,SAAS,sBAAuB,CAAA;AAAA,EACrC,KAAA;AAAA,EACA,MAAM,OAAQ,CAAA,GAAA;AAChB,CAAA,GAGI,EAAe,EAAA;AACjB,EAAA,OAAO,eAAgB,CAAA;AAAA,IACrB,KAAA;AAAA,IACA,SAAW,EAAA,CAAC,EAAE,GAAA,EAAK,KAAU,KAAA;AAC3B,MAAA,KAAK,WAAY,CAAA,EAAE,GAAK,EAAA,GAAA,EAAK,KAAK,CAAA,CAAA;AAAA,KACpC;AAAA,IACA,YAAY,CAAC,EAAE,GAAK,EAAA,GAAA,EAAK,KAAU,KAAA;AACjC,MAAA,OAAO,aAAa,EAAE,GAAA,EAAK,GAAK,EAAA,GAAA,EAAK,KAAK,CAAA,CAAA;AAAA,KAC5C;AAAA,GACD,CAAA,CAAA;AACH;;;;"}
1
+ {"version":3,"sources":["../../src/fetch/createFetchWithLogging.ts"],"sourcesContent":["import { createFetchWith } from './createFetchWith';\nimport { dumpRequest } from './dumpRequest';\nimport { dumpResponse } from './dumpResponse';\nimport { type FetchLike } from './types';\n\nexport function createFetchWithLogging({\n fetch,\n log = console.log,\n}: {\n fetch?: FetchLike;\n log?: (s: string) => void;\n} = {}): FetchLike {\n return createFetchWith({\n fetch,\n onRequest: ({ url, req }) => {\n void dumpRequest({ url, req, log });\n },\n onResponse: ({ url, req, res }) => {\n return dumpResponse({ url, req, res, log });\n },\n });\n}\n"],"names":["createFetchWith","dumpRequest","dumpResponse","createFetchWithLogging","fetch","log","console","onRequest","url","req","onResponse","res"],"mappings":"AAAA,SAASA,eAAe,QAAQ,oBAAoB;AACpD,SAASC,WAAW,QAAQ,gBAAgB;AAC5C,SAASC,YAAY,QAAQ,iBAAiB;AAG9C,OAAO,SAASC,uBAAuB,EACrCC,KAAK,EACLC,MAAMC,QAAQD,GAAG,EAIlB,GAAG,CAAC,CAAC;IACJ,OAAOL,gBAAgB;QACrBI;QACAG,WAAW,CAAC,EAAEC,GAAG,EAAEC,GAAG,EAAE;YACtB,KAAKR,YAAY;gBAAEO;gBAAKC;gBAAKJ;YAAI;QACnC;QACAK,YAAY,CAAC,EAAEF,GAAG,EAAEC,GAAG,EAAEE,GAAG,EAAE;YAC5B,OAAOT,aAAa;gBAAEM;gBAAKC;gBAAKE;gBAAKN;YAAI;QAC3C;IACF;AACF"}
@@ -1,70 +1,66 @@
1
1
  import { getGlobalThis } from '../isomorphics/getGlobalThis.js';
2
-
3
- function createFetchWithRetry({
4
- fetch = getGlobalThis().fetch,
5
- retries = 3,
6
- retryDelay = 1e3,
7
- retryOn = []
8
- } = {}) {
9
- return function fetchRetry(input, init) {
10
- return new Promise(function(resolve, reject) {
11
- var wrappedFetch = function(attempt) {
12
- var _input = typeof Request !== "undefined" && input instanceof Request ? input.clone() : input;
13
- fetch(_input, init).then(function(response) {
14
- if (Array.isArray(retryOn) && retryOn.indexOf(response.status) === -1) {
15
- resolve(response);
16
- } else if (typeof retryOn === "function") {
17
- try {
18
- return Promise.resolve(retryOn(attempt, null, response)).then(function(retryOnResponse) {
19
- if (retryOnResponse) {
20
- retry(attempt, null, response);
21
- } else {
22
- resolve(response);
23
- }
24
- }).catch(reject);
25
- } catch (error) {
26
- reject(error);
27
- }
28
- } else {
29
- if (attempt < retries) {
30
- retry(attempt, null, response);
31
- } else {
32
- resolve(response);
33
- }
34
- }
35
- return;
36
- }).catch(function(error) {
37
- if (typeof retryOn === "function") {
38
- try {
39
- Promise.resolve(retryOn(attempt, error, null)).then(function(retryOnResponse) {
40
- if (retryOnResponse) {
41
- retry(attempt, error, null);
42
- } else {
43
- reject(error);
44
- }
45
- }).catch(function(error2) {
46
- reject(error2);
47
- });
48
- } catch (error2) {
49
- reject(error2);
2
+ export function createFetchWithRetry({ fetch = getGlobalThis().fetch, retries = 3, retryDelay = 1000, retryOn = [] } = {}) {
3
+ // https://github.com/jonbern/fetch-retry/blob/master/index.js
4
+ return function fetchRetry(input, init) {
5
+ return new Promise(function(resolve, reject) {
6
+ var wrappedFetch = function(attempt) {
7
+ // As of node 18, this is no longer needed since node comes with native support for fetch:
8
+ /* istanbul ignore next */ var _input = typeof Request !== 'undefined' && input instanceof Request ? input.clone() : input;
9
+ fetch(_input, init).then(function(response) {
10
+ if (Array.isArray(retryOn) && retryOn.indexOf(response.status) === -1) {
11
+ resolve(response);
12
+ } else if (typeof retryOn === 'function') {
13
+ try {
14
+ return Promise.resolve(retryOn(attempt, null, response)).then(function(retryOnResponse) {
15
+ if (retryOnResponse) {
16
+ retry(attempt, null, response);
17
+ } else {
18
+ resolve(response);
19
+ }
20
+ }).catch(reject);
21
+ } catch (error) {
22
+ reject(error);
23
+ }
24
+ } else {
25
+ if (attempt < retries) {
26
+ retry(attempt, null, response);
27
+ } else {
28
+ resolve(response);
29
+ }
30
+ }
31
+ return;
32
+ }).catch(function(error) {
33
+ if (typeof retryOn === 'function') {
34
+ try {
35
+ // eslint-disable-next-line no-undef
36
+ Promise.resolve(retryOn(attempt, error, null)).then(function(retryOnResponse) {
37
+ if (retryOnResponse) {
38
+ retry(attempt, error, null);
39
+ } else {
40
+ reject(error);
41
+ }
42
+ }).catch(function(error) {
43
+ reject(error);
44
+ });
45
+ } catch (error) {
46
+ reject(error);
47
+ }
48
+ } else if (attempt < retries) {
49
+ retry(attempt, error, null);
50
+ } else {
51
+ reject(error);
52
+ }
53
+ });
54
+ };
55
+ function retry(attempt, error, response) {
56
+ let delay = typeof retryDelay === 'function' ? retryDelay(attempt, error, response) : retryDelay;
57
+ setTimeout(function() {
58
+ wrappedFetch(++attempt);
59
+ }, delay);
50
60
  }
51
- } else if (attempt < retries) {
52
- retry(attempt, error, null);
53
- } else {
54
- reject(error);
55
- }
61
+ wrappedFetch(0);
56
62
  });
57
- };
58
- function retry(attempt, error, response) {
59
- let delay = typeof retryDelay === "function" ? retryDelay(attempt, error, response) : retryDelay;
60
- setTimeout(function() {
61
- wrappedFetch(++attempt);
62
- }, delay);
63
- }
64
- wrappedFetch(0);
65
- });
66
- };
63
+ };
67
64
  }
68
65
 
69
- export { createFetchWithRetry };
70
- //# sourceMappingURL=createFetchWithRetry.js.map
66
+ //# sourceMappingURL=createFetchWithRetry.js.map