@tstdl/base 0.87.15 → 0.88.0-alpha2

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 (784) hide show
  1. package/api/client/client.js +111 -127
  2. package/api/client/index.js +1 -18
  3. package/api/default-error-handlers.js +18 -44
  4. package/api/index.js +14 -20
  5. package/api/response.js +99 -123
  6. package/api/server/api-controller.js +43 -71
  7. package/api/server/api-request-token.provider.js +13 -40
  8. package/api/server/error-handler.js +25 -46
  9. package/api/server/gateway.js +219 -225
  10. package/api/server/index.js +5 -22
  11. package/api/server/middlewares/allowed-methods.middleware.js +17 -40
  12. package/api/server/middlewares/catch-error.middleware.js +12 -33
  13. package/api/server/middlewares/cors.middleware.js +49 -69
  14. package/api/server/middlewares/index.js +4 -21
  15. package/api/server/middlewares/response-time.middleware.js +8 -31
  16. package/api/server/module.js +18 -42
  17. package/api/server/tokens.js +6 -31
  18. package/api/types.js +14 -40
  19. package/api/utils.js +13 -36
  20. package/application/application.js +147 -169
  21. package/application/index.js +1 -18
  22. package/authentication/authentication.api.js +89 -113
  23. package/authentication/client/api.client.js +29 -57
  24. package/authentication/client/authentication.service.js +214 -235
  25. package/authentication/client/http-client.middleware.js +16 -38
  26. package/authentication/client/index.js +5 -22
  27. package/authentication/client/module.js +22 -45
  28. package/authentication/client/tokens.js +6 -30
  29. package/authentication/errors/index.js +1 -18
  30. package/authentication/errors/secret-requirements.error.js +6 -29
  31. package/authentication/index.d.ts +1 -0
  32. package/authentication/index.js +3 -19
  33. package/authentication/models/authentication-credentials.model.js +37 -66
  34. package/authentication/models/authentication-session.model.js +51 -80
  35. package/authentication/models/index.js +6 -23
  36. package/authentication/models/init-secret-reset-data.model.js +16 -44
  37. package/authentication/models/secret-check-result.model.js +10 -36
  38. package/authentication/models/token-payload-base.model.js +31 -59
  39. package/authentication/models/token.model.js +1 -16
  40. package/authentication/server/authentication-api-request-token.provider.js +25 -52
  41. package/authentication/server/authentication-credentials.repository.js +1 -24
  42. package/authentication/server/authentication-secret-requirements.validator.js +30 -57
  43. package/authentication/server/authentication-secret-reset.handler.js +1 -24
  44. package/authentication/server/authentication-session.repository.js +1 -24
  45. package/authentication/server/authentication-subject.resolver.js +5 -24
  46. package/authentication/server/authentication-token-payload.provider.js +5 -29
  47. package/authentication/server/authentication.api-controller.js +89 -114
  48. package/authentication/server/authentication.service.js +273 -308
  49. package/authentication/server/helper.js +66 -87
  50. package/authentication/server/index.js +11 -28
  51. package/authentication/server/module.js +26 -48
  52. package/authentication/server/mongo/index.js +2 -19
  53. package/authentication/server/mongo/mongo-authentication-credentials.repository.js +54 -84
  54. package/authentication/server/mongo/mongo-authentication-session.repository.js +51 -81
  55. package/browser/browser-context-controller.js +106 -133
  56. package/browser/browser-controller.js +87 -113
  57. package/browser/browser.service.js +87 -117
  58. package/browser/document-controller.js +70 -94
  59. package/browser/element-controller.js +231 -252
  60. package/browser/frame-controller.js +24 -47
  61. package/browser/index.d.ts +1 -0
  62. package/browser/index.js +11 -27
  63. package/browser/locator-controller.js +36 -59
  64. package/browser/module.js +26 -50
  65. package/browser/page-controller.js +150 -166
  66. package/browser/pdf-options.js +73 -103
  67. package/browser/types.js +1 -16
  68. package/browser/utils.js +94 -128
  69. package/cancellation/index.js +1 -18
  70. package/cancellation/token.js +164 -184
  71. package/collections/awaitable/awaitable-list.js +99 -122
  72. package/collections/awaitable/awaitable-map.js +93 -116
  73. package/collections/awaitable/awaitable-set.js +63 -86
  74. package/collections/awaitable/index.js +3 -20
  75. package/collections/collection.js +1 -16
  76. package/collections/index.js +6 -23
  77. package/collections/keyed-set.js +53 -77
  78. package/collections/list.js +1 -16
  79. package/collections/observable/index.js +8 -25
  80. package/collections/observable/observable-array.js +95 -118
  81. package/collections/observable/observable-collection-base.js +60 -83
  82. package/collections/observable/observable-collection.js +1 -16
  83. package/collections/observable/observable-list-base.js +55 -78
  84. package/collections/observable/observable-list.js +1 -16
  85. package/collections/observable/observable-map.js +56 -79
  86. package/collections/observable/observable-set.js +75 -98
  87. package/collections/observable/observable-sorted-array-list.js +165 -188
  88. package/collections/sorted-array-list.js +156 -179
  89. package/collections/sorted-list.js +1 -16
  90. package/collections/sorted-map.js +70 -93
  91. package/container/decorators.js +1 -34
  92. package/container/index.js +3 -20
  93. package/container/interfaces.js +1 -25
  94. package/container/token.js +1 -26
  95. package/cookie/cookie.js +49 -71
  96. package/cookie/index.js +1 -18
  97. package/core.js +56 -81
  98. package/data-structures/array-dictionary.js +89 -110
  99. package/data-structures/array-list.js +107 -130
  100. package/data-structures/cache.js +41 -64
  101. package/data-structures/circular-buffer.js +200 -220
  102. package/data-structures/collection.js +86 -109
  103. package/data-structures/dictionary.js +51 -75
  104. package/data-structures/distinct-collection.js +49 -73
  105. package/data-structures/index-out-of-bounds.error.js +8 -31
  106. package/data-structures/index.d.ts +1 -0
  107. package/data-structures/index.js +17 -33
  108. package/data-structures/iterable-weak-map.js +129 -149
  109. package/data-structures/linked-list.js +368 -385
  110. package/data-structures/list.js +86 -109
  111. package/data-structures/map-dictionary.js +55 -78
  112. package/data-structures/multi-key-map.js +141 -163
  113. package/data-structures/multi-key-set.js +56 -79
  114. package/data-structures/set-collection.js +54 -77
  115. package/data-structures/sorted-array-list.js +140 -166
  116. package/data-structures/weak-ref-map.js +126 -146
  117. package/database/entity-repository.js +2 -26
  118. package/database/entity.js +1 -16
  119. package/database/id.js +8 -29
  120. package/database/index.js +6 -23
  121. package/database/module.js +9 -33
  122. package/database/mongo/classes.js +18 -43
  123. package/database/mongo/index.js +10 -27
  124. package/database/mongo/model/document.js +62 -93
  125. package/database/mongo/model/index.js +1 -18
  126. package/database/mongo/module.js +59 -79
  127. package/database/mongo/mongo-base.repository.js +259 -283
  128. package/database/mongo/mongo-bulk.js +87 -110
  129. package/database/mongo/mongo-entity-repository.js +270 -296
  130. package/database/mongo/operations.js +48 -76
  131. package/database/mongo/query-converter.js +73 -96
  132. package/database/mongo/simple-entity-repository.js +5 -28
  133. package/database/mongo/types.js +2 -25
  134. package/database/query.js +7 -36
  135. package/database/utils.js +2 -25
  136. package/decorators/index.js +1 -18
  137. package/decorators/log.js +29 -51
  138. package/disposable/async-disposer.js +118 -130
  139. package/disposable/disposable.js +9 -36
  140. package/disposable/index.js +3 -20
  141. package/disposable/using.js +15 -37
  142. package/distributed-loop/controller.js +1 -16
  143. package/distributed-loop/distributed-loop.js +77 -105
  144. package/distributed-loop/index.js +3 -20
  145. package/distributed-loop/provider.js +21 -48
  146. package/enumerable/async-enumerable.js +238 -261
  147. package/enumerable/enumerable-methods.js +1 -16
  148. package/enumerable/enumerable.js +177 -200
  149. package/enumerable/index.js +2 -19
  150. package/environment.js +25 -57
  151. package/error/api.error.js +10 -33
  152. package/error/assertion.error.js +6 -29
  153. package/error/bad-request.error.js +6 -29
  154. package/error/custom.error.js +25 -47
  155. package/error/details.error.js +8 -31
  156. package/error/forbidden.error.js +6 -29
  157. package/error/index.js +16 -33
  158. package/error/invalid-token.error.js +6 -29
  159. package/error/max-bytes-exceeded.error.js +9 -32
  160. package/error/method-not-allowed.error.js +6 -29
  161. package/error/multi.error.js +8 -31
  162. package/error/not-found.error.js +6 -29
  163. package/error/not-implemented.error.js +6 -29
  164. package/error/not-supported.error.js +11 -34
  165. package/error/timeout.error.js +6 -29
  166. package/error/unauthorized.error.js +6 -29
  167. package/error/unsupported-media-type.error.js +6 -29
  168. package/examples/api/authentication.js +49 -49
  169. package/examples/api/basic-overview.js +80 -85
  170. package/examples/api/custom-authentication.js +94 -99
  171. package/examples/api/streaming.js +90 -95
  172. package/examples/browser/basic.js +21 -22
  173. package/examples/http/client.js +15 -16
  174. package/examples/mail/basic.js +41 -42
  175. package/examples/mail/templates/hello-name.js +10 -33
  176. package/examples/pdf/basic.js +48 -49
  177. package/examples/pdf/templates/hello-name.js +35 -58
  178. package/examples/reflection/basic.js +53 -84
  179. package/examples/template/basic.js +32 -33
  180. package/examples/template/templates/hello-jsx.js +8 -32
  181. package/examples/template/templates/hello-name.js +18 -41
  182. package/function/index.js +1 -18
  183. package/function/log.js +18 -40
  184. package/http/client/adapters/index.d.ts +1 -0
  185. package/http/client/adapters/index.js +1 -0
  186. package/http/client/adapters/undici-http-client.adapter.js +92 -111
  187. package/http/client/http-client-options.js +10 -33
  188. package/http/client/http-client-request.js +149 -171
  189. package/http/client/http-client-response.js +33 -56
  190. package/http/client/http-client.adapter.js +1 -24
  191. package/http/client/http-client.js +295 -313
  192. package/http/client/index.d.ts +2 -0
  193. package/http/client/index.js +8 -23
  194. package/http/client/middleware.js +1 -16
  195. package/http/client/module.js +20 -43
  196. package/http/client/tokens.js +2 -25
  197. package/http/cookie-parser.js +19 -42
  198. package/http/http-body.js +52 -75
  199. package/http/http-form.js +14 -37
  200. package/http/http-headers.js +86 -109
  201. package/http/http-query.js +14 -37
  202. package/http/http-url-parameters.js +8 -31
  203. package/http/http-value-map.js +110 -133
  204. package/http/http.error.js +60 -82
  205. package/http/index.js +11 -28
  206. package/http/server/http-server-request.js +24 -47
  207. package/http/server/http-server-response.js +22 -45
  208. package/http/server/http-server.js +2 -25
  209. package/http/server/index.js +3 -20
  210. package/http/server/node/index.js +2 -19
  211. package/http/server/node/module.js +8 -28
  212. package/http/server/node/node-http-server.js +205 -230
  213. package/http/types.js +21 -47
  214. package/http/utils.js +92 -108
  215. package/image-service/image-service.js +59 -91
  216. package/image-service/imgproxy/imgproxy-image-service.js +88 -125
  217. package/image-service/imgproxy/index.js +1 -18
  218. package/image-service/index.js +1 -18
  219. package/import.js +2 -25
  220. package/index.js +1 -18
  221. package/injector/decorators.js +134 -112
  222. package/injector/index.js +11 -28
  223. package/injector/inject.js +104 -103
  224. package/injector/injector.js +481 -497
  225. package/injector/interfaces.js +2 -26
  226. package/injector/provider.js +22 -54
  227. package/injector/resolve-chain.js +91 -117
  228. package/injector/resolve.error.js +11 -36
  229. package/injector/symbols.js +2 -26
  230. package/injector/token.js +17 -38
  231. package/injector/type-info.js +1 -16
  232. package/injector/types.js +1 -16
  233. package/interfaces.js +1 -16
  234. package/json-path/index.js +1 -18
  235. package/json-path/json-path.js +138 -138
  236. package/key-value-store/index.js +2 -19
  237. package/key-value-store/key-value-store.provider.js +1 -24
  238. package/key-value-store/key-value.store.js +6 -29
  239. package/key-value-store/mongo/index.js +6 -23
  240. package/key-value-store/mongo/module.js +17 -35
  241. package/key-value-store/mongo/mongo-key-value-store.provider.js +21 -48
  242. package/key-value-store/mongo/mongo-key-value.model.js +1 -16
  243. package/key-value-store/mongo/mongo-key-value.repository.js +23 -52
  244. package/key-value-store/mongo/mongo-key-value.store.js +60 -89
  245. package/key-value-store/mongo/tokens.js +2 -25
  246. package/lock/index.js +2 -19
  247. package/lock/lock.js +6 -29
  248. package/lock/mongo/index.js +5 -22
  249. package/lock/mongo/lock.js +112 -135
  250. package/lock/mongo/model.js +1 -16
  251. package/lock/mongo/module.js +18 -37
  252. package/lock/mongo/mongo-lock-repository.js +57 -85
  253. package/lock/mongo/provider.js +39 -68
  254. package/lock/provider.js +2 -25
  255. package/lock/web/index.js +3 -20
  256. package/lock/web/module.js +11 -31
  257. package/lock/web/web-lock.js +81 -105
  258. package/lock/web/web-lock.provider.js +28 -57
  259. package/logger/console/index.js +1 -18
  260. package/logger/console/logger.js +55 -81
  261. package/logger/index.js +3 -20
  262. package/logger/level.js +8 -31
  263. package/logger/logger.js +38 -61
  264. package/logger/noop/index.js +1 -18
  265. package/logger/noop/logger.js +20 -42
  266. package/logger/tokens.js +2 -25
  267. package/mail/clients/index.d.ts +1 -0
  268. package/mail/clients/index.js +1 -0
  269. package/mail/clients/nodemailer.mail-client.js +64 -91
  270. package/mail/index.d.ts +2 -0
  271. package/mail/index.js +7 -22
  272. package/mail/mail.client.js +35 -63
  273. package/mail/mail.service.d.ts +1 -1
  274. package/mail/mail.service.js +74 -106
  275. package/mail/models/index.js +6 -23
  276. package/mail/models/mail-address.model.js +1 -16
  277. package/mail/models/mail-content.model.js +1 -16
  278. package/mail/models/mail-data.model.js +1 -16
  279. package/mail/models/mail-log.model.js +1 -16
  280. package/mail/models/mail-send-result.model.js +1 -16
  281. package/mail/models/mail-template.model.js +5 -28
  282. package/mail/module.d.ts +1 -1
  283. package/mail/module.js +21 -41
  284. package/mail/repositories/index.d.ts +1 -0
  285. package/mail/repositories/index.js +1 -0
  286. package/mail/repositories/mail-log.repository.d.ts +4 -0
  287. package/mail/repositories/mail-log.repository.js +3 -0
  288. package/mail/repositories/mongo/index.d.ts +1 -0
  289. package/mail/repositories/mongo/index.js +1 -0
  290. package/mail/repositories/{mongo-mail-log.repository.d.ts → mongo/mongo-mail-log.repository.d.ts} +6 -6
  291. package/mail/repositories/mongo/mongo-mail-log.repository.js +33 -0
  292. package/mail/tokens.js +2 -25
  293. package/memory/finalization.js +36 -60
  294. package/memory/index.js +2 -19
  295. package/memory/observable-finalization-registry.js +9 -32
  296. package/message-bus/broadcast-channel/broadcast-channel-message-bus-provider.js +24 -53
  297. package/message-bus/broadcast-channel/broadcast-channel-message-bus.js +47 -74
  298. package/message-bus/broadcast-channel/index.js +3 -20
  299. package/message-bus/broadcast-channel/module.js +11 -31
  300. package/message-bus/index.js +3 -20
  301. package/message-bus/local/index.js +3 -20
  302. package/message-bus/local/local-message-bus-provider.js +36 -65
  303. package/message-bus/local/local-message-bus.js +39 -66
  304. package/message-bus/local/module.js +11 -31
  305. package/message-bus/local/types.js +1 -16
  306. package/message-bus/message-bus-base.js +41 -63
  307. package/message-bus/message-bus-provider.js +1 -24
  308. package/message-bus/message-bus.js +6 -29
  309. package/migration/index.js +3 -20
  310. package/migration/migration-state-repository.js +2 -25
  311. package/migration/migration-state.js +1 -16
  312. package/migration/migrator.js +81 -108
  313. package/migration/mongo/index.js +2 -19
  314. package/migration/mongo/migration-state-repository.js +24 -53
  315. package/migration/mongo/module.js +15 -34
  316. package/module/index.js +4 -21
  317. package/module/module-base.js +37 -60
  318. package/module/module-metric-reporter.js +58 -77
  319. package/module/module.js +10 -34
  320. package/module/modules/function.module.js +11 -34
  321. package/module/modules/index.js +2 -19
  322. package/module/modules/web-server.module.js +54 -83
  323. package/module/utils.js +19 -43
  324. package/object-storage/index.js +3 -20
  325. package/object-storage/object-storage-provider.js +1 -24
  326. package/object-storage/object-storage.js +7 -30
  327. package/object-storage/object.js +7 -30
  328. package/object-storage/s3/index.js +3 -20
  329. package/object-storage/s3/s3.object-storage-provider.js +75 -100
  330. package/object-storage/s3/s3.object-storage.js +134 -160
  331. package/object-storage/s3/s3.object.js +39 -62
  332. package/openid-connect/cached-oidc-configuration.service.js +36 -65
  333. package/openid-connect/index.js +11 -28
  334. package/openid-connect/mongo-oidc-state.repository.js +40 -65
  335. package/openid-connect/oidc-configuration.service.js +39 -66
  336. package/openid-connect/oidc-state.model.js +1 -16
  337. package/openid-connect/oidc-state.repository.js +2 -25
  338. package/openid-connect/oidc.service-model.js +1 -16
  339. package/openid-connect/oidc.service.js +158 -187
  340. package/package.json +95 -5
  341. package/password/have-i-been-pwned.js +21 -39
  342. package/password/index.js +4 -21
  343. package/password/password-check-result.model.js +34 -63
  344. package/password/password-check.js +46 -76
  345. package/password/password-check.localization.js +86 -111
  346. package/pdf/index.js +1 -18
  347. package/pdf/pdf.service.js +172 -206
  348. package/polyfills.js +1 -2
  349. package/pool/index.js +1 -18
  350. package/pool/pool.js +116 -133
  351. package/process-shutdown.js +57 -81
  352. package/promise/cancelable-promise.js +23 -41
  353. package/promise/deferred-promise.js +68 -92
  354. package/promise/index.js +3 -20
  355. package/promise/lazy-promise.js +24 -47
  356. package/queue/enqueue-batch.js +18 -41
  357. package/queue/index.js +3 -20
  358. package/queue/mongo/index.js +4 -21
  359. package/queue/mongo/job.js +1 -16
  360. package/queue/mongo/mongo-job.repository.js +45 -70
  361. package/queue/mongo/queue.js +243 -265
  362. package/queue/mongo/queue.provider.js +47 -72
  363. package/queue/provider.js +1 -24
  364. package/queue/queue.js +15 -41
  365. package/random/index.js +2 -19
  366. package/random/number-generator/index.d.ts +2 -0
  367. package/random/number-generator/index.js +5 -20
  368. package/random/number-generator/mulberry32.js +34 -51
  369. package/random/number-generator/random-number-generator-function.js +1 -24
  370. package/random/number-generator/random-number-generator.js +8 -31
  371. package/random/number-generator/seeded-random-number-generator.js +5 -28
  372. package/random/number-generator/sfc32.js +41 -64
  373. package/random/number-generator/utils.d.ts +1 -0
  374. package/random/number-generator/utils.js +7 -25
  375. package/random/series.js +41 -43
  376. package/reflection/decorator-data.js +63 -80
  377. package/reflection/decorators.js +39 -69
  378. package/reflection/index.js +5 -22
  379. package/reflection/reflection-data-map.js +32 -55
  380. package/reflection/registry.js +110 -130
  381. package/reflection/types.js +1 -16
  382. package/reflection/utils.js +96 -124
  383. package/require.js +3 -26
  384. package/rpc/endpoints/index.d.ts +1 -0
  385. package/rpc/endpoints/index.js +1 -0
  386. package/rpc/endpoints/message-port.rpc-endpoint.js +29 -48
  387. package/rpc/index.js +4 -21
  388. package/rpc/model.js +7 -30
  389. package/rpc/rpc-endpoint.js +17 -40
  390. package/rpc/rpc-error.js +17 -40
  391. package/rpc/rpc.js +223 -235
  392. package/rxjs/cast.js +4 -28
  393. package/rxjs/index.js +13 -30
  394. package/rxjs/intersection-observer.js +25 -48
  395. package/rxjs/media-query.js +8 -27
  396. package/rxjs/mutation-observer.js +28 -50
  397. package/rxjs/noop.js +4 -28
  398. package/rxjs/performance-observer.js +37 -60
  399. package/rxjs/resize-observer.js +28 -50
  400. package/rxjs/retry-backoff.js +23 -47
  401. package/rxjs/slow-array.js +22 -36
  402. package/rxjs/start-with-provider.js +5 -28
  403. package/rxjs/teardown.js +21 -44
  404. package/rxjs/timing.js +26 -57
  405. package/rxjs/touch.js +11 -30
  406. package/schema/array-constraints/index.js +2 -19
  407. package/schema/array-constraints/maximum-length.js +19 -42
  408. package/schema/array-constraints/minimum-length.js +19 -42
  409. package/schema/coercers/boolean.coercer.js +25 -49
  410. package/schema/coercers/date.coercer.js +14 -38
  411. package/schema/coercers/index.js +6 -23
  412. package/schema/coercers/number.coercer.js +12 -36
  413. package/schema/coercers/regexp.coercer.js +18 -41
  414. package/schema/coercers/string.coercer.js +12 -36
  415. package/schema/coercers/uint8-array.coercer.js +20 -44
  416. package/schema/constraints/enumeration.js +27 -49
  417. package/schema/constraints/generic.js +21 -41
  418. package/schema/constraints/index.js +12 -29
  419. package/schema/constraints/integer.js +20 -44
  420. package/schema/constraints/length.js +14 -36
  421. package/schema/constraints/literal.js +22 -44
  422. package/schema/constraints/maximum-date.js +23 -46
  423. package/schema/constraints/maximum-length.js +22 -45
  424. package/schema/constraints/maximum.js +21 -44
  425. package/schema/constraints/minimum-date.js +23 -46
  426. package/schema/constraints/minimum-length.js +22 -45
  427. package/schema/constraints/minimum.js +21 -44
  428. package/schema/constraints/pattern.js +23 -46
  429. package/schema/decorators/class.js +4 -26
  430. package/schema/decorators/coerce.js +4 -26
  431. package/schema/decorators/constraint.js +6 -28
  432. package/schema/decorators/index.js +6 -23
  433. package/schema/decorators/property.js +16 -38
  434. package/schema/decorators/types.js +1 -16
  435. package/schema/decorators/utils.js +45 -73
  436. package/schema/index.js +10 -27
  437. package/schema/schema.error.js +59 -72
  438. package/schema/schema.js +256 -274
  439. package/schema/schemas/any.js +7 -30
  440. package/schema/schemas/array.js +21 -44
  441. package/schema/schemas/assign.js +23 -46
  442. package/schema/schemas/boolean.js +7 -30
  443. package/schema/schemas/constraint.js +6 -29
  444. package/schema/schemas/date.js +20 -43
  445. package/schema/schemas/defaulted.js +8 -31
  446. package/schema/schemas/enumeration.js +15 -38
  447. package/schema/schemas/index.js +26 -43
  448. package/schema/schemas/instance.js +4 -26
  449. package/schema/schemas/literal.js +15 -38
  450. package/schema/schemas/nullable.js +7 -30
  451. package/schema/schemas/number.js +25 -48
  452. package/schema/schemas/object.js +10 -34
  453. package/schema/schemas/omit.js +14 -37
  454. package/schema/schemas/one-or-many.js +13 -35
  455. package/schema/schemas/optional.js +6 -30
  456. package/schema/schemas/partial.js +16 -39
  457. package/schema/schemas/pick.js +14 -37
  458. package/schema/schemas/readable-stream.js +7 -30
  459. package/schema/schemas/record.js +9 -31
  460. package/schema/schemas/regexp.js +7 -30
  461. package/schema/schemas/string.js +36 -59
  462. package/schema/schemas/transform.js +6 -29
  463. package/schema/schemas/uint8-array.js +27 -50
  464. package/schema/schemas/union.js +11 -34
  465. package/schema/schemas/unknown.js +7 -30
  466. package/schema/transformers/generic.js +16 -39
  467. package/schema/transformers/index.js +4 -21
  468. package/schema/transformers/lowercase.js +10 -33
  469. package/schema/transformers/trim.js +10 -33
  470. package/schema/transformers/uppercase.js +10 -33
  471. package/schema/types/index.js +5 -22
  472. package/schema/types/schema-array-constraint.js +1 -24
  473. package/schema/types/schema-value-coercer.js +1 -24
  474. package/schema/types/schema-value-constraint.js +1 -24
  475. package/schema/types/schema-value-transformer.js +1 -24
  476. package/schema/types/types.js +161 -191
  477. package/schema/utils/index.js +2 -19
  478. package/schema/utils/schema.js +120 -142
  479. package/schema/utils/value-type.js +51 -74
  480. package/search-index/elastic/config.js +21 -50
  481. package/search-index/elastic/index.js +6 -23
  482. package/search-index/elastic/keyword-rewriter.js +17 -40
  483. package/search-index/elastic/model/elastic-query.js +1 -16
  484. package/search-index/elastic/model/index-mapping.js +4 -26
  485. package/search-index/elastic/model/index.js +3 -20
  486. package/search-index/elastic/model/sort.js +1 -16
  487. package/search-index/elastic/module.js +43 -68
  488. package/search-index/elastic/query-builder/boolean-query-builder.js +46 -69
  489. package/search-index/elastic/query-builder/index.js +1 -18
  490. package/search-index/elastic/query-converter.js +174 -192
  491. package/search-index/elastic/search-index.js +132 -153
  492. package/search-index/elastic/sort-converter.js +12 -34
  493. package/search-index/elastic/types.js +1 -16
  494. package/search-index/error.js +12 -35
  495. package/search-index/index.js +3 -20
  496. package/search-index/memory/index.js +1 -18
  497. package/search-index/memory/memory-search-index.js +130 -152
  498. package/search-index/search-index.js +30 -53
  499. package/search-index/search-result.js +1 -16
  500. package/serializer/handlers/binary.js +19 -47
  501. package/serializer/handlers/date.js +4 -28
  502. package/serializer/handlers/error.js +7 -31
  503. package/serializer/handlers/index.js +7 -24
  504. package/serializer/handlers/map.js +16 -40
  505. package/serializer/handlers/regex.js +7 -31
  506. package/serializer/handlers/register.js +36 -59
  507. package/serializer/handlers/set.js +13 -37
  508. package/serializer/index.js +3 -30
  509. package/serializer/serializable.js +43 -68
  510. package/serializer/serializer.js +244 -264
  511. package/serializer/types.js +6 -34
  512. package/signals/api.js +18 -46
  513. package/signals/computed-with-dependencies.js +8 -31
  514. package/signals/effect-with-dependencies.js +8 -31
  515. package/signals/implementation/api.js +25 -30
  516. package/signals/implementation/computed.js +77 -73
  517. package/signals/implementation/configure.js +18 -41
  518. package/signals/implementation/effect.js +49 -66
  519. package/signals/implementation/errors.js +5 -29
  520. package/signals/implementation/graph.js +232 -176
  521. package/signals/implementation/index.js +10 -27
  522. package/signals/implementation/signal.js +62 -76
  523. package/signals/implementation/to-observable.js +21 -38
  524. package/signals/implementation/to-signal.js +44 -60
  525. package/signals/implementation/untracked.js +15 -31
  526. package/signals/implementation/watch.js +41 -64
  527. package/signals/index.js +9 -26
  528. package/signals/lazylize.js +4 -27
  529. package/signals/pipe.js +9 -33
  530. package/signals/switch-map.js +4 -27
  531. package/signals/to-signal-2.js +38 -61
  532. package/signals/types.js +1 -16
  533. package/signals/untracked-operator.js +11 -33
  534. package/sse/index.d.ts +1 -0
  535. package/sse/index.js +3 -19
  536. package/sse/model.js +1 -16
  537. package/sse/server-sent-events-source.js +54 -76
  538. package/sse/server-sent-events.js +48 -72
  539. package/supports.js +5 -32
  540. package/templates/index.js +9 -26
  541. package/templates/module.js +27 -48
  542. package/templates/providers/file.template-provider.js +41 -82
  543. package/templates/providers/index.d.ts +2 -0
  544. package/templates/providers/index.js +2 -0
  545. package/templates/providers/memory.template-provider.js +28 -55
  546. package/templates/renderers/handlebars.template-renderer.js +85 -122
  547. package/templates/renderers/index.d.ts +4 -0
  548. package/templates/renderers/index.js +4 -0
  549. package/templates/renderers/jsx.template-renderer.js +29 -56
  550. package/templates/renderers/mjml.template-renderer.js +43 -82
  551. package/templates/renderers/string.template-renderer.js +25 -52
  552. package/templates/resolvers/file.template-resolver.js +47 -90
  553. package/templates/resolvers/index.d.ts +3 -0
  554. package/templates/resolvers/index.js +3 -0
  555. package/templates/resolvers/jsx.template-resolver.js +30 -59
  556. package/templates/resolvers/string.template-resolver.js +30 -59
  557. package/templates/template-renderer.provider.js +37 -66
  558. package/templates/template-resolver.provider.js +37 -66
  559. package/templates/template.model.js +40 -69
  560. package/templates/template.provider.js +1 -24
  561. package/templates/template.renderer.js +11 -34
  562. package/templates/template.resolver.js +1 -24
  563. package/templates/template.service.js +50 -82
  564. package/templates/tokens.js +3 -27
  565. package/templates/types/index.d.ts +1 -0
  566. package/templates/types/index.js +1 -0
  567. package/templates/types/jsx.intrinsic-elements.js +1 -16
  568. package/text/dynamic-text.model.js +40 -69
  569. package/text/index.js +3 -20
  570. package/text/localizable-text.model.js +1 -16
  571. package/text/localization.service.js +197 -229
  572. package/theme/adapters/css-adapter.js +23 -46
  573. package/theme/adapters/index.d.ts +2 -0
  574. package/theme/adapters/index.js +2 -0
  575. package/theme/adapters/tailwind-adapter.js +29 -52
  576. package/theme/index.js +1 -18
  577. package/theme/theme-service.js +109 -147
  578. package/threading/index.js +2 -19
  579. package/threading/thread-pool.js +48 -70
  580. package/threading/thread-worker.js +3 -26
  581. package/tokens.js +2 -25
  582. package/types/geo-json.js +1 -16
  583. package/types.js +2 -16
  584. package/utils/alphabet.js +12 -35
  585. package/utils/any-iterable-iterator.js +4 -27
  586. package/utils/array/array-backtracker.js +42 -65
  587. package/utils/array/array.js +76 -79
  588. package/utils/array/index.js +2 -19
  589. package/utils/async-iterable-helpers/all.js +25 -46
  590. package/utils/async-iterable-helpers/any.js +25 -46
  591. package/utils/async-iterable-helpers/assert.js +22 -43
  592. package/utils/async-iterable-helpers/batch.js +26 -46
  593. package/utils/async-iterable-helpers/buffer.js +47 -64
  594. package/utils/async-iterable-helpers/concat.js +5 -27
  595. package/utils/async-iterable-helpers/default-if-empty.js +9 -32
  596. package/utils/async-iterable-helpers/deferred.js +3 -26
  597. package/utils/async-iterable-helpers/difference.js +24 -48
  598. package/utils/async-iterable-helpers/distinct.js +23 -44
  599. package/utils/async-iterable-helpers/drain.js +4 -26
  600. package/utils/async-iterable-helpers/filter.js +23 -44
  601. package/utils/async-iterable-helpers/first-or-default.js +8 -30
  602. package/utils/async-iterable-helpers/first.js +8 -30
  603. package/utils/async-iterable-helpers/for-each.js +18 -38
  604. package/utils/async-iterable-helpers/group-single.js +3 -26
  605. package/utils/async-iterable-helpers/group-to-map.js +20 -41
  606. package/utils/async-iterable-helpers/group-to-single-map.js +23 -44
  607. package/utils/async-iterable-helpers/group.js +3 -26
  608. package/utils/async-iterable-helpers/includes.js +7 -28
  609. package/utils/async-iterable-helpers/index.js +48 -65
  610. package/utils/async-iterable-helpers/interrupt.js +19 -43
  611. package/utils/async-iterable-helpers/is-async-iterable.js +5 -29
  612. package/utils/async-iterable-helpers/last-or-default.js +13 -36
  613. package/utils/async-iterable-helpers/last.js +13 -36
  614. package/utils/async-iterable-helpers/map-many.js +19 -40
  615. package/utils/async-iterable-helpers/map.js +19 -40
  616. package/utils/async-iterable-helpers/materialize.js +21 -42
  617. package/utils/async-iterable-helpers/metadata.js +36 -54
  618. package/utils/async-iterable-helpers/multiplex.js +23 -44
  619. package/utils/async-iterable-helpers/observable-iterable.js +31 -53
  620. package/utils/async-iterable-helpers/pairwise.js +26 -44
  621. package/utils/async-iterable-helpers/parallel/feed.js +24 -45
  622. package/utils/async-iterable-helpers/parallel/filter.js +8 -31
  623. package/utils/async-iterable-helpers/parallel/for-each.js +21 -44
  624. package/utils/async-iterable-helpers/parallel/group.js +9 -32
  625. package/utils/async-iterable-helpers/parallel/index.js +7 -24
  626. package/utils/async-iterable-helpers/parallel/map.js +6 -29
  627. package/utils/async-iterable-helpers/parallel/tap.js +6 -29
  628. package/utils/async-iterable-helpers/parallel/types.js +1 -16
  629. package/utils/async-iterable-helpers/reduce.js +31 -46
  630. package/utils/async-iterable-helpers/retry.js +43 -58
  631. package/utils/async-iterable-helpers/single-or-default.js +17 -40
  632. package/utils/async-iterable-helpers/single.js +19 -42
  633. package/utils/async-iterable-helpers/skip.js +3 -26
  634. package/utils/async-iterable-helpers/sort.js +6 -29
  635. package/utils/async-iterable-helpers/take-until.js +32 -49
  636. package/utils/async-iterable-helpers/take-while.js +29 -46
  637. package/utils/async-iterable-helpers/take.js +23 -44
  638. package/utils/async-iterable-helpers/tap.js +19 -40
  639. package/utils/async-iterable-helpers/throttle.js +9 -30
  640. package/utils/async-iterable-helpers/to-array.js +10 -33
  641. package/utils/async-iterable-helpers/to-async-iterable-iterator.js +40 -59
  642. package/utils/async-iterable-helpers/to-async-iterator.js +32 -54
  643. package/utils/async-iterable-helpers/to-set.js +10 -33
  644. package/utils/async-iterable-helpers/to-sync-iterable.js +6 -27
  645. package/utils/async-iterable-helpers/types.js +1 -16
  646. package/utils/async-iterable-helpers/while.js +25 -46
  647. package/utils/async-iterator-iterable-iterator.js +41 -62
  648. package/utils/backoff.js +109 -109
  649. package/utils/base64.js +153 -140
  650. package/utils/benchmark.js +114 -107
  651. package/utils/binary-search.js +70 -87
  652. package/utils/binary.js +50 -61
  653. package/utils/clone.js +43 -64
  654. package/utils/comparison.js +76 -98
  655. package/utils/compression.js +107 -118
  656. package/utils/config-parser.js +21 -48
  657. package/utils/crc32.js +20 -42
  658. package/utils/cryptography.js +163 -121
  659. package/utils/date-time.js +102 -138
  660. package/utils/encoding.js +62 -60
  661. package/utils/enum.js +27 -53
  662. package/utils/equals.js +103 -119
  663. package/utils/event-loop.js +19 -39
  664. package/utils/factory-map.js +53 -75
  665. package/utils/feedable-async-iterable.js +47 -70
  666. package/utils/file-reader.js +15 -41
  667. package/utils/format-error.js +36 -57
  668. package/utils/format.js +32 -53
  669. package/utils/function/index.js +2 -19
  670. package/utils/function/memoize.js +38 -53
  671. package/utils/function/throttle.js +26 -48
  672. package/utils/helpers.js +93 -102
  673. package/utils/image.js +62 -88
  674. package/utils/index.js +47 -64
  675. package/utils/iterable-helpers/all.js +8 -31
  676. package/utils/iterable-helpers/any.js +8 -31
  677. package/utils/iterable-helpers/assert.js +7 -30
  678. package/utils/iterable-helpers/batch.js +11 -34
  679. package/utils/iterable-helpers/concat.js +4 -27
  680. package/utils/iterable-helpers/default-if-empty.js +9 -32
  681. package/utils/iterable-helpers/deferred.js +2 -25
  682. package/utils/iterable-helpers/difference.js +21 -45
  683. package/utils/iterable-helpers/distinct.js +9 -32
  684. package/utils/iterable-helpers/drain.js +4 -26
  685. package/utils/iterable-helpers/filter.js +7 -30
  686. package/utils/iterable-helpers/first-or-default.js +8 -30
  687. package/utils/iterable-helpers/first.js +8 -30
  688. package/utils/iterable-helpers/for-each.js +5 -28
  689. package/utils/iterable-helpers/group-single.js +3 -26
  690. package/utils/iterable-helpers/group-to-map.js +9 -32
  691. package/utils/iterable-helpers/group-to-single-map.js +10 -33
  692. package/utils/iterable-helpers/group.js +3 -26
  693. package/utils/iterable-helpers/includes.js +3 -26
  694. package/utils/iterable-helpers/index.js +39 -56
  695. package/utils/iterable-helpers/is-iterable.js +5 -29
  696. package/utils/iterable-helpers/last-or-default.js +13 -36
  697. package/utils/iterable-helpers/last.js +13 -36
  698. package/utils/iterable-helpers/map-many.js +6 -29
  699. package/utils/iterable-helpers/map.js +6 -29
  700. package/utils/iterable-helpers/materialize.js +2 -25
  701. package/utils/iterable-helpers/metadata.js +16 -38
  702. package/utils/iterable-helpers/pairwise.js +11 -33
  703. package/utils/iterable-helpers/range.js +4 -27
  704. package/utils/iterable-helpers/reduce.js +11 -33
  705. package/utils/iterable-helpers/single-or-default.js +14 -37
  706. package/utils/iterable-helpers/single.js +17 -40
  707. package/utils/iterable-helpers/skip.js +6 -29
  708. package/utils/iterable-helpers/sort.js +4 -27
  709. package/utils/iterable-helpers/take-until.js +8 -31
  710. package/utils/iterable-helpers/take-while.js +10 -33
  711. package/utils/iterable-helpers/take.js +10 -33
  712. package/utils/iterable-helpers/tap.js +6 -29
  713. package/utils/iterable-helpers/types.js +1 -16
  714. package/utils/iterable-helpers/while.js +8 -31
  715. package/utils/jwt.js +77 -100
  716. package/utils/map.js +35 -62
  717. package/utils/math.js +102 -64
  718. package/utils/merge.js +26 -45
  719. package/utils/middleware.js +36 -60
  720. package/utils/moving-metric.js +155 -188
  721. package/utils/noop.js +4 -27
  722. package/utils/object/decycle.js +57 -78
  723. package/utils/object/dereference.js +46 -44
  724. package/utils/object/forward-ref.js +59 -73
  725. package/utils/object/index.js +7 -24
  726. package/utils/object/lazy-property.js +81 -96
  727. package/utils/object/merge.js +48 -70
  728. package/utils/object/object.js +106 -136
  729. package/utils/object/property-name.js +69 -72
  730. package/utils/ordered-feedable-async-iterable.js +42 -65
  731. package/utils/patch-worker.js +69 -90
  732. package/utils/patterns.js +7 -29
  733. package/utils/periodic-reporter.js +60 -82
  734. package/utils/periodic-sampler.js +67 -91
  735. package/utils/provider-function-iterable.js +26 -48
  736. package/utils/proxy.js +17 -42
  737. package/utils/random.js +40 -50
  738. package/utils/reflection.js +13 -41
  739. package/utils/repl.js +14 -33
  740. package/utils/set.js +36 -62
  741. package/utils/singleton.js +18 -41
  742. package/utils/sort.js +53 -77
  743. package/utils/stream/finalize-stream.js +43 -62
  744. package/utils/stream/index.js +6 -23
  745. package/utils/stream/readable-stream-adapter.js +35 -57
  746. package/utils/stream/readable-stream-from-promise.js +7 -28
  747. package/utils/stream/size-limited-stream.js +12 -35
  748. package/utils/stream/stream-helper-types.js +1 -16
  749. package/utils/stream/stream-reader.js +30 -52
  750. package/utils/string/hypenate.js +2 -25
  751. package/utils/string/index.js +3 -20
  752. package/utils/string/title-case.js +6 -26
  753. package/utils/string/trim.js +9 -32
  754. package/utils/throw.js +7 -30
  755. package/utils/timer.js +70 -91
  756. package/utils/timing.js +52 -80
  757. package/utils/type-guards.js +253 -1076
  758. package/utils/type-of.js +25 -43
  759. package/utils/units.js +53 -124
  760. package/utils/url-builder.js +47 -68
  761. package/utils/value-or-provider.js +19 -44
  762. package/utils/z-base32.js +42 -63
  763. package/web-types.js +1 -16
  764. package/async-iterator-symbol.d.ts +0 -1
  765. package/async-iterator-symbol.js +0 -29
  766. package/mail/mail-log.repository.d.ts +0 -4
  767. package/mail/mail-log.repository.js +0 -26
  768. package/mail/repositories/mongo-mail-log.repository.js +0 -64
  769. package/notification/api.d.ts +0 -15
  770. package/notification/api.js +0 -56
  771. package/notification/models/index.d.ts +0 -2
  772. package/notification/models/index.js +0 -19
  773. package/notification/models/notification-channel-job.model.d.ts +0 -3
  774. package/notification/models/notification-channel-job.model.js +0 -16
  775. package/notification/models/notification.model.d.ts +0 -45
  776. package/notification/models/notification.model.js +0 -131
  777. package/notification/module.d.ts +0 -9
  778. package/notification/module.js +0 -30
  779. package/notification/notification-channel.service.d.ts +0 -5
  780. package/notification/notification-channel.service.js +0 -25
  781. package/notification/notification.repository.d.ts +0 -5
  782. package/notification/notification.repository.js +0 -25
  783. package/notification/notification.service.d.ts +0 -8
  784. package/notification/notification.service.js +0 -63
@@ -1,137 +1,121 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var client_exports = {};
20
- __export(client_exports, {
21
- apiDefinitionSymbol: () => apiDefinitionSymbol,
22
- compileClient: () => compileClient,
23
- httpClientSymbol: () => httpClientSymbol
24
- });
25
- module.exports = __toCommonJS(client_exports);
26
- var import_client = require("../../http/client/index.js");
27
- var import_types = require("../../http/types.js");
28
- var import_inject = require("../../injector/inject.js");
29
- var import_injector = require("../../injector/injector.js");
30
- var import_interfaces = require("../../injector/interfaces.js");
31
- var import_schema = require("../../schema/index.js");
32
- var import_server_sent_events = require("../../sse/server-sent-events.js");
33
- var import_array = require("../../utils/array/array.js");
34
- var import_object = require("../../utils/object/object.js");
35
- var import_title_case = require("../../utils/string/title-case.js");
36
- var import_type_guards = require("../../utils/type-guards.js");
37
- var import_url_builder = require("../../utils/url-builder.js");
38
- var import_types2 = require("../types.js");
39
- var import_utils = require("../utils.js");
40
- const httpClientSymbol = Symbol("ApiTransport");
41
- const apiDefinitionSymbol = Symbol("ApiDefinition");
42
- function compileClient(definition, options = {}) {
43
- const { resource: path, endpoints } = definition;
44
- const constructedApiName = (0, import_title_case.toTitleCase)(path[0] ?? "");
45
- const apiName = `${constructedApiName}ApiClient`;
46
- const api = {
47
- [apiName]: class {
48
- [httpClientSymbol];
49
- [apiDefinitionSymbol];
50
- constructor(httpClientOrOptions) {
51
- this[httpClientSymbol] = httpClientOrOptions instanceof import_client.HttpClient ? httpClientOrOptions : (0, import_inject.inject)(import_client.HttpClient, httpClientOrOptions);
52
- this[apiDefinitionSymbol] = definition;
53
- }
54
- }
55
- }[apiName];
56
- import_injector.Injector.registerSingleton(api, {
57
- useFactory: (argument, context) => {
58
- const httpClient = argument instanceof import_client.HttpClient ? argument : context.resolve(import_client.HttpClient, argument ?? options.defaultHttpClientOptions);
59
- return new api(httpClient);
60
- }
61
- });
62
- const endpointsEntries = (0, import_types2.normalizedApiDefinitionEndpointsEntries)(endpoints);
63
- for (const [name, endpoint] of endpointsEntries) {
64
- const methods = (0, import_type_guards.isArray)(endpoint.method) ? endpoint.method : [endpoint.method ?? "GET"];
65
- const resource = (0, import_utils.getFullApiEndpointResource)({ api: definition, endpoint, defaultPrefix: options.prefix });
66
- const hasGet = methods.includes("GET");
67
- const fallbackMethod = methods.filter((method) => method != "GET")[0] ?? "GET";
68
- const apiEndpointFunction = {
69
- async [name](parameters, requestBody) {
70
- const context = { endpoint };
71
- const method = hasGet && (0, import_type_guards.isUndefined)(parameters) ? "GET" : fallbackMethod;
72
- if (endpoint.result == import_server_sent_events.ServerSentEvents) {
73
- if ((0, import_type_guards.isDefined)(requestBody)) {
74
- throw new Error("Body not supported for Server Sent Events.");
75
- }
76
- return getServerSentEvents(this[httpClientSymbol].options.baseUrl, resource, endpoint, parameters);
1
+ import { HttpClient, HttpClientRequest } from '../../http/client/index.js';
2
+ import { normalizeSingleHttpValue } from '../../http/types.js';
3
+ import { inject } from '../../injector/inject.js';
4
+ import { Injector } from '../../injector/injector.js';
5
+ import { resolveArgumentType } from '../../injector/interfaces.js';
6
+ import { Schema } from '../../schema/index.js';
7
+ import { ServerSentEvents } from '../../sse/server-sent-events.js';
8
+ import { toArray } from '../../utils/array/array.js';
9
+ import { objectEntries } from '../../utils/object/object.js';
10
+ import { toTitleCase } from '../../utils/string/title-case.js';
11
+ import { isArray, isBlob, isDefined, isObject, isReadableStream, isString, isUint8Array, isUndefined } from '../../utils/type-guards.js';
12
+ import { buildUrl } from '../../utils/url-builder.js';
13
+ import { normalizedApiDefinitionEndpointsEntries } from '../types.js';
14
+ import { getFullApiEndpointResource } from '../utils.js';
15
+ export const httpClientSymbol = Symbol('ApiTransport');
16
+ export const apiDefinitionSymbol = Symbol('ApiDefinition');
17
+ // eslint-disable-next-line max-lines-per-function
18
+ export function compileClient(definition, options = {}) {
19
+ const { resource: path, endpoints } = definition;
20
+ const constructedApiName = toTitleCase(path[0] ?? '');
21
+ const apiName = `${constructedApiName}ApiClient`;
22
+ const api = {
23
+ [apiName]: class {
24
+ [httpClientSymbol];
25
+ [apiDefinitionSymbol];
26
+ constructor(httpClientOrOptions) {
27
+ this[httpClientSymbol] = (httpClientOrOptions instanceof HttpClient) ? httpClientOrOptions : inject(HttpClient, httpClientOrOptions);
28
+ this[apiDefinitionSymbol] = definition;
29
+ }
30
+ }
31
+ }[apiName];
32
+ Injector.registerSingleton(api, {
33
+ useFactory: (argument, context) => {
34
+ const httpClient = (argument instanceof HttpClient) ? argument : context.resolve(HttpClient, argument ?? options.defaultHttpClientOptions);
35
+ return new api(httpClient);
77
36
  }
78
- const request = new import_client.HttpClientRequest({
79
- method,
80
- url: resource,
81
- parameters,
82
- body: getRequestBody(requestBody),
83
- credentials: endpoint.credentials == true ? "include" : void 0,
84
- context
85
- });
86
- const response = await this[httpClientSymbol].rawRequest(request);
87
- return getResponseBody(response, endpoint.result);
88
- }
89
- }[name];
90
- Object.defineProperty(api.prototype, name, {
91
- enumerable: true,
92
- configurable: true,
93
- writable: true,
94
- value: apiEndpointFunction
95
37
  });
96
- }
97
- return api;
38
+ const endpointsEntries = normalizedApiDefinitionEndpointsEntries(endpoints);
39
+ for (const [name, endpoint] of endpointsEntries) {
40
+ const methods = isArray(endpoint.method) ? endpoint.method : [endpoint.method ?? 'GET'];
41
+ const resource = getFullApiEndpointResource({ api: definition, endpoint, defaultPrefix: options.prefix });
42
+ const hasGet = methods.includes('GET');
43
+ const fallbackMethod = methods.filter((method) => method != 'GET')[0] ?? 'GET';
44
+ const apiEndpointFunction = {
45
+ async [name](parameters, requestBody) {
46
+ const context = { endpoint };
47
+ const method = (hasGet && isUndefined(parameters)) ? 'GET' : fallbackMethod;
48
+ if (endpoint.result == ServerSentEvents) {
49
+ if (isDefined(requestBody)) {
50
+ throw new Error('Body not supported for Server Sent Events.');
51
+ }
52
+ return getServerSentEvents(this[httpClientSymbol].options.baseUrl, resource, endpoint, parameters);
53
+ }
54
+ const request = new HttpClientRequest({
55
+ method,
56
+ url: resource,
57
+ parameters,
58
+ body: getRequestBody(requestBody),
59
+ credentials: (endpoint.credentials == true) ? 'include' : undefined,
60
+ context
61
+ });
62
+ const response = await this[httpClientSymbol].rawRequest(request);
63
+ return getResponseBody(response, endpoint.result);
64
+ }
65
+ }[name];
66
+ Object.defineProperty(api.prototype, name, {
67
+ enumerable: true,
68
+ configurable: true,
69
+ writable: true,
70
+ value: apiEndpointFunction
71
+ });
72
+ }
73
+ return api;
98
74
  }
99
75
  function getRequestBody(body) {
100
- if ((0, import_type_guards.isUndefined)(body)) {
101
- return void 0;
102
- }
103
- if ((0, import_type_guards.isUint8Array)(body)) {
104
- return { buffer: body };
105
- }
106
- if ((0, import_type_guards.isReadableStream)(body)) {
107
- return { stream: body };
108
- }
109
- if ((0, import_type_guards.isBlob)(body)) {
110
- return { blob: body };
111
- }
112
- if ((0, import_type_guards.isString)(body)) {
113
- return { text: body };
114
- }
115
- return { json: body };
76
+ if (isUndefined(body)) {
77
+ return undefined;
78
+ }
79
+ if (isUint8Array(body)) {
80
+ return { buffer: body };
81
+ }
82
+ if (isReadableStream(body)) {
83
+ return { stream: body };
84
+ }
85
+ if (isBlob(body)) {
86
+ return { blob: body };
87
+ }
88
+ if (isString(body)) {
89
+ return { text: body };
90
+ }
91
+ return { json: body };
116
92
  }
117
93
  async function getResponseBody(response, schema) {
118
- if ((0, import_type_guards.isUndefined)(schema)) {
119
- response.close();
120
- return void 0;
121
- }
122
- const body = response.hasBody ? schema == ReadableStream ? response.body.readAsBinaryStream() : schema == Uint8Array ? await response.body.readAsBuffer() : schema == String ? await response.body.readAsText() : await response.body.read() : void 0;
123
- return import_schema.Schema.parse(schema, body, { mask: true });
94
+ if (isUndefined(schema)) {
95
+ response.close();
96
+ return undefined;
97
+ }
98
+ const body = response.hasBody
99
+ ? (schema == ReadableStream)
100
+ ? response.body.readAsBinaryStream()
101
+ : (schema == Uint8Array)
102
+ ? await response.body.readAsBuffer()
103
+ : (schema == String)
104
+ ? await response.body.readAsText()
105
+ : await response.body.read()
106
+ : undefined;
107
+ return Schema.parse(schema, body, { mask: true });
124
108
  }
125
109
  function getServerSentEvents(baseUrl, resource, endpoint, parameters) {
126
- const { parsedUrl, parametersRest } = (0, import_url_builder.buildUrl)(resource, parameters, { arraySeparator: "," });
127
- const url = new URL(parsedUrl, baseUrl);
128
- for (const [parameter, value] of (0, import_object.objectEntries)(parametersRest)) {
129
- for (const val of (0, import_array.toArray)(value)) {
130
- if ((0, import_type_guards.isUndefined)(val) || (0, import_type_guards.isObject)(val)) {
131
- continue;
132
- }
133
- url.searchParams.append(parameter, (0, import_types.normalizeSingleHttpValue)(val));
110
+ const { parsedUrl, parametersRest } = buildUrl(resource, parameters, { arraySeparator: ',' });
111
+ const url = new URL(parsedUrl, baseUrl);
112
+ for (const [parameter, value] of objectEntries(parametersRest)) {
113
+ for (const val of toArray(value)) {
114
+ if (isUndefined(val) || isObject(val)) {
115
+ continue;
116
+ }
117
+ url.searchParams.append(parameter, normalizeSingleHttpValue(val));
118
+ }
134
119
  }
135
- }
136
- return new import_server_sent_events.ServerSentEvents(url.toString(), { withCredentials: endpoint.credentials });
120
+ return new ServerSentEvents(url.toString(), { withCredentials: endpoint.credentials });
137
121
  }
@@ -1,18 +1 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __copyProps = (to, from, except, desc) => {
7
- if (from && typeof from === "object" || typeof from === "function") {
8
- for (let key of __getOwnPropNames(from))
9
- if (!__hasOwnProp.call(to, key) && key !== except)
10
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
- }
12
- return to;
13
- };
14
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
- var client_exports = {};
17
- module.exports = __toCommonJS(client_exports);
18
- __reExport(client_exports, require("./client.js"), module.exports);
1
+ export * from './client.js';
@@ -1,48 +1,22 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var default_error_handlers_exports = {};
20
- __export(default_error_handlers_exports, {
21
- deserializeInnerSchemaError: () => deserializeInnerSchemaError,
22
- deserializeSchemaError: () => deserializeSchemaError,
23
- serializeInnerSchemaError: () => serializeInnerSchemaError,
24
- serializeSchemaError: () => serializeSchemaError
25
- });
26
- module.exports = __toCommonJS(default_error_handlers_exports);
27
- var import_schema = require("../schema/index.js");
28
- var import_type_guards = require("../utils/type-guards.js");
29
- function serializeSchemaError(error) {
30
- return {
31
- path: error.path,
32
- details: error.details,
33
- inner: (0, import_type_guards.isDefined)(error.inner) ? (0, import_type_guards.isArray)(error.inner) ? error.inner.map(serializeInnerSchemaError) : serializeInnerSchemaError(error.inner) : void 0
34
- };
1
+ import { SchemaError } from '../schema/index.js';
2
+ import { isArray, isDefined } from '../utils/type-guards.js';
3
+ export function serializeSchemaError(error) {
4
+ return {
5
+ path: error.path,
6
+ details: error.details,
7
+ inner: isDefined(error.inner) ? isArray(error.inner) ? error.inner.map(serializeInnerSchemaError) : serializeInnerSchemaError(error.inner) : undefined
8
+ };
35
9
  }
36
- function serializeInnerSchemaError(error) {
37
- return {
38
- message: error.message,
39
- ...serializeSchemaError(error)
40
- };
10
+ export function serializeInnerSchemaError(error) {
11
+ return {
12
+ message: error.message,
13
+ ...serializeSchemaError(error)
14
+ };
41
15
  }
42
- function deserializeSchemaError(message, data) {
43
- const inner = (0, import_type_guards.isDefined)(data.inner) ? (0, import_type_guards.isArray)(data.inner) ? data.inner.map(deserializeInnerSchemaError) : deserializeInnerSchemaError(data.inner) : void 0;
44
- return new import_schema.SchemaError(message, { path: data.path, details: data.details, inner });
16
+ export function deserializeSchemaError(message, data) {
17
+ const inner = isDefined(data.inner) ? isArray(data.inner) ? data.inner.map(deserializeInnerSchemaError) : deserializeInnerSchemaError(data.inner) : undefined;
18
+ return new SchemaError(message, { path: data.path, details: data.details, inner });
45
19
  }
46
- function deserializeInnerSchemaError(data) {
47
- return deserializeSchemaError(data.message, data);
20
+ export function deserializeInnerSchemaError(data) {
21
+ return deserializeSchemaError(data.message, data);
48
22
  }
package/api/index.js CHANGED
@@ -1,20 +1,14 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __copyProps = (to, from, except, desc) => {
7
- if (from && typeof from === "object" || typeof from === "function") {
8
- for (let key of __getOwnPropNames(from))
9
- if (!__hasOwnProp.call(to, key) && key !== except)
10
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
- }
12
- return to;
13
- };
14
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
- var api_exports = {};
17
- module.exports = __toCommonJS(api_exports);
18
- __reExport(api_exports, require("./default-error-handlers.js"), module.exports);
19
- __reExport(api_exports, require("./response.js"), module.exports);
20
- __reExport(api_exports, require("./types.js"), module.exports);
1
+ /**
2
+ * Module for creating and consuming HTTP apis with built-in support for validation and error handling.
3
+ *
4
+ * This module contains types and functions to define and register apis and error handlers.
5
+ *
6
+ * Consumers of these definitions are [client](api_client.html) and [server](api_server.html).
7
+ *
8
+ * A basic example with a working minimal api server and client can be found in `source/examples/api/basic-overview.ts`
9
+ *
10
+ * @module
11
+ */
12
+ export * from './default-error-handlers.js';
13
+ export * from './response.js';
14
+ export * from './types.js';
package/api/response.js CHANGED
@@ -1,136 +1,112 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var response_exports = {};
20
- __export(response_exports, {
21
- createErrorResponse: () => createErrorResponse,
22
- createResultResponse: () => createResultResponse,
23
- getErrorStatusCode: () => getErrorStatusCode,
24
- hasErrorHandler: () => hasErrorHandler,
25
- isErrorResponse: () => isErrorResponse,
26
- isResponse: () => isResponse,
27
- isResultResponse: () => isResultResponse,
28
- parseErrorResponse: () => parseErrorResponse,
29
- parseResponse: () => parseResponse,
30
- registerErrorHandler: () => registerErrorHandler
31
- });
32
- module.exports = __toCommonJS(response_exports);
33
- var import_secret_requirements_error = require("../authentication/errors/secret-requirements.error.js");
34
- var import_schema_error = require("../schema/schema.error.js");
35
- var import_error = require("../error/index.js");
36
- var import_type_guards = require("../utils/type-guards.js");
37
- var import_default_error_handlers = require("./default-error-handlers.js");
38
- const errorHandlers = /* @__PURE__ */ new Map();
39
- function registerErrorHandler(constructor, statusCode, serializer, deserializer) {
40
- (0, import_type_guards.assertString)(constructor.errorName, "static property 'errorName' missing.");
41
- if (errorHandlers.has(constructor.errorName)) {
42
- throw new Error(`A handler for ${constructor.errorName} already registered.`);
43
- }
44
- errorHandlers.set(constructor.errorName, { statusCode, serializer, deserializer });
1
+ import { SecretRequirementsError } from '../authentication/errors/secret-requirements.error.js';
2
+ import { SchemaError } from '../schema/schema.error.js';
3
+ import { ApiError, BadRequestError, ForbiddenError, InvalidTokenError, MaxBytesExceededError, MethodNotAllowedError, NotFoundError, NotImplementedError, NotSupportedError, UnauthorizedError, UnsupportedMediaTypeError } from '../error/index.js';
4
+ import { assertString, isDefined, isFunction, isObject, isString } from '../utils/type-guards.js';
5
+ import { deserializeSchemaError, serializeSchemaError } from './default-error-handlers.js';
6
+ const errorHandlers = new Map();
7
+ export function registerErrorHandler(constructor, statusCode, serializer, deserializer) {
8
+ assertString(constructor.errorName, 'static property \'errorName\' missing.');
9
+ if (errorHandlers.has(constructor.errorName)) {
10
+ throw new Error(`A handler for ${constructor.errorName} already registered.`);
11
+ }
12
+ errorHandlers.set(constructor.errorName, { statusCode, serializer, deserializer });
45
13
  }
46
- function hasErrorHandler(constructor) {
47
- const name = (0, import_type_guards.isFunction)(constructor) ? constructor.errorName : (0, import_type_guards.isString)(constructor) ? constructor : isErrorResponse(constructor) ? constructor.error.name : void 0;
48
- return errorHandlers.has(name);
14
+ export function hasErrorHandler(constructor) {
15
+ const name = isFunction(constructor)
16
+ ? constructor.errorName
17
+ : isString(constructor)
18
+ ? constructor
19
+ : isErrorResponse(constructor)
20
+ ? constructor.error.name
21
+ : undefined;
22
+ return errorHandlers.has(name);
49
23
  }
50
- function getErrorStatusCode(error, defaultStatusCode = 500) {
51
- return errorHandlers.get(error.name)?.statusCode ?? defaultStatusCode;
24
+ export function getErrorStatusCode(error, defaultStatusCode = 500) {
25
+ return errorHandlers.get(error.name)?.statusCode ?? defaultStatusCode;
52
26
  }
53
- function createResultResponse(result) {
54
- const response = {
55
- result
56
- };
57
- return response;
27
+ export function createResultResponse(result) {
28
+ const response = {
29
+ result
30
+ };
31
+ return response;
58
32
  }
59
- function createErrorResponse(errorOrName, message = "", details) {
60
- let response;
61
- if (errorOrName instanceof Error) {
62
- const handler = errorHandlers.get(errorOrName.name);
63
- if (handler != void 0) {
64
- const data = handler.serializer(errorOrName);
65
- response = {
66
- error: {
67
- name: errorOrName.name,
68
- message: errorOrName.message,
69
- details,
70
- data
33
+ export function createErrorResponse(errorOrName, message = '', details) {
34
+ let response;
35
+ if (errorOrName instanceof Error) {
36
+ const handler = errorHandlers.get(errorOrName.name);
37
+ if (handler != undefined) {
38
+ const data = handler.serializer(errorOrName);
39
+ response = {
40
+ error: {
41
+ name: errorOrName.name,
42
+ message: errorOrName.message,
43
+ details,
44
+ data
45
+ }
46
+ };
71
47
  }
72
- };
73
- } else {
74
- response = {
75
- error: {
76
- name: errorOrName.name,
77
- message: errorOrName.message,
78
- details
48
+ else {
49
+ response = {
50
+ error: {
51
+ name: errorOrName.name,
52
+ message: errorOrName.message,
53
+ details
54
+ }
55
+ };
79
56
  }
80
- };
81
57
  }
82
- } else {
83
- response = {
84
- error: {
85
- name: errorOrName,
86
- message,
87
- details
88
- }
89
- };
90
- }
91
- return response;
58
+ else {
59
+ response = {
60
+ error: {
61
+ name: errorOrName,
62
+ message,
63
+ details
64
+ }
65
+ };
66
+ }
67
+ return response;
92
68
  }
93
- function parseResponse(response) {
94
- if (isResultResponse(response)) {
95
- return response.result;
96
- }
97
- if (isErrorResponse(response)) {
98
- throw parseErrorResponse(response);
99
- }
100
- throw new Error("Unsupported response.");
69
+ export function parseResponse(response) {
70
+ if (isResultResponse(response)) {
71
+ return response.result;
72
+ }
73
+ if (isErrorResponse(response)) {
74
+ throw parseErrorResponse(response);
75
+ }
76
+ throw new Error('Unsupported response.');
101
77
  }
102
- function parseErrorResponse(response, fallbackToGenericApiError = true) {
103
- const handler = errorHandlers.get(response.error.name);
104
- if (handler != void 0) {
105
- const error = handler.deserializer(response.error.data, response.error);
106
- return error;
107
- }
108
- if (!fallbackToGenericApiError) {
109
- return void 0;
110
- }
111
- return new import_error.ApiError(response);
78
+ export function parseErrorResponse(response, fallbackToGenericApiError = true) {
79
+ const handler = errorHandlers.get(response.error.name);
80
+ if (handler != undefined) {
81
+ const error = handler.deserializer(response.error.data, response.error);
82
+ return error;
83
+ }
84
+ if (!fallbackToGenericApiError) {
85
+ return undefined;
86
+ }
87
+ return new ApiError(response);
112
88
  }
113
- function isResultResponse(response) {
114
- const hasResult = (0, import_type_guards.isObject)(response) && (0, import_type_guards.isDefined)(response.result);
115
- return hasResult;
89
+ export function isResultResponse(response) {
90
+ const hasResult = isObject(response) && isDefined(response.result);
91
+ return hasResult;
116
92
  }
117
- function isErrorResponse(response) {
118
- const hasError = (0, import_type_guards.isObject)(response) && (0, import_type_guards.isDefined)(response.error);
119
- return hasError;
93
+ export function isErrorResponse(response) {
94
+ const hasError = isObject(response) && isDefined(response.error);
95
+ return hasError;
120
96
  }
121
- function isResponse(obj) {
122
- return isResultResponse(obj) || isErrorResponse(obj);
97
+ export function isResponse(obj) {
98
+ return (isResultResponse(obj) || isErrorResponse(obj));
123
99
  }
124
- registerErrorHandler(import_error.ApiError, 400, ({ response }) => response, (response) => new import_error.ApiError(response));
125
- registerErrorHandler(import_error.BadRequestError, 400, () => void 0, (_, error) => new import_error.BadRequestError(error.message));
126
- registerErrorHandler(import_error.ForbiddenError, 403, () => void 0, (_, error) => new import_error.ForbiddenError(error.message));
127
- registerErrorHandler(import_error.InvalidTokenError, 401, () => void 0, (_, error) => new import_error.InvalidTokenError(error.message));
128
- registerErrorHandler(import_error.MaxBytesExceededError, 400, () => void 0, (_, error) => new import_error.MaxBytesExceededError(error.message));
129
- registerErrorHandler(import_error.NotFoundError, 404, () => void 0, (_, error) => new import_error.NotFoundError(error.message));
130
- registerErrorHandler(import_error.NotImplementedError, 501, () => void 0, (_, error) => new import_error.NotImplementedError(error.message));
131
- registerErrorHandler(import_error.NotSupportedError, 400, () => void 0, (_, error) => new import_error.NotSupportedError(error.message));
132
- registerErrorHandler(import_error.UnauthorizedError, 401, () => void 0, (_, error) => new import_error.UnauthorizedError(error.message));
133
- registerErrorHandler(import_error.MethodNotAllowedError, 405, () => void 0, (_, error) => new import_error.MethodNotAllowedError(error.message));
134
- registerErrorHandler(import_error.UnsupportedMediaTypeError, 415, () => void 0, (_, error) => new import_error.UnsupportedMediaTypeError(error.message));
135
- registerErrorHandler(import_schema_error.SchemaError, 400, import_default_error_handlers.serializeSchemaError, (data, error) => (0, import_default_error_handlers.deserializeSchemaError)(error.message, data));
136
- registerErrorHandler(import_secret_requirements_error.SecretRequirementsError, 403, () => void 0, (_, error) => new import_secret_requirements_error.SecretRequirementsError(error.message));
100
+ registerErrorHandler(ApiError, 400, ({ response }) => response, (response) => new ApiError(response));
101
+ registerErrorHandler(BadRequestError, 400, () => undefined, (_, error) => new BadRequestError(error.message));
102
+ registerErrorHandler(ForbiddenError, 403, () => undefined, (_, error) => new ForbiddenError(error.message));
103
+ registerErrorHandler(InvalidTokenError, 401, () => undefined, (_, error) => new InvalidTokenError(error.message));
104
+ registerErrorHandler(MaxBytesExceededError, 400, () => undefined, (_, error) => new MaxBytesExceededError(error.message));
105
+ registerErrorHandler(NotFoundError, 404, () => undefined, (_, error) => new NotFoundError(error.message));
106
+ registerErrorHandler(NotImplementedError, 501, () => undefined, (_, error) => new NotImplementedError(error.message));
107
+ registerErrorHandler(NotSupportedError, 400, () => undefined, (_, error) => new NotSupportedError(error.message));
108
+ registerErrorHandler(UnauthorizedError, 401, () => undefined, (_, error) => new UnauthorizedError(error.message));
109
+ registerErrorHandler(MethodNotAllowedError, 405, () => undefined, (_, error) => new MethodNotAllowedError(error.message));
110
+ registerErrorHandler(UnsupportedMediaTypeError, 415, () => undefined, (_, error) => new UnsupportedMediaTypeError(error.message));
111
+ registerErrorHandler(SchemaError, 400, serializeSchemaError, (data, error) => deserializeSchemaError(error.message, data));
112
+ registerErrorHandler(SecretRequirementsError, 403, () => undefined, (_, error) => new SecretRequirementsError(error.message));