@tstdl/base 0.87.13 → 0.88.0-alpha1

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 (740) 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/async-iterator-symbol.js +5 -28
  23. package/authentication/authentication.api.js +89 -113
  24. package/authentication/client/api.client.js +29 -57
  25. package/authentication/client/authentication.service.js +214 -235
  26. package/authentication/client/http-client.middleware.js +16 -38
  27. package/authentication/client/index.js +5 -22
  28. package/authentication/client/module.js +22 -45
  29. package/authentication/client/tokens.js +6 -30
  30. package/authentication/errors/index.js +1 -18
  31. package/authentication/errors/secret-requirements.error.js +6 -29
  32. package/authentication/index.js +2 -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.js +10 -27
  62. package/browser/locator-controller.js +36 -59
  63. package/browser/module.js +26 -50
  64. package/browser/page-controller.js +150 -166
  65. package/browser/pdf-options.js +73 -103
  66. package/browser/types.js +1 -16
  67. package/browser/utils.js +94 -128
  68. package/cancellation/index.js +1 -18
  69. package/cancellation/token.js +164 -184
  70. package/collections/awaitable/awaitable-list.js +99 -122
  71. package/collections/awaitable/awaitable-map.js +93 -116
  72. package/collections/awaitable/awaitable-set.js +63 -86
  73. package/collections/awaitable/index.js +3 -20
  74. package/collections/collection.js +1 -16
  75. package/collections/index.js +6 -23
  76. package/collections/keyed-set.js +53 -77
  77. package/collections/list.js +1 -16
  78. package/collections/observable/index.js +8 -25
  79. package/collections/observable/observable-array.js +95 -118
  80. package/collections/observable/observable-collection-base.js +60 -83
  81. package/collections/observable/observable-collection.js +1 -16
  82. package/collections/observable/observable-list-base.js +55 -78
  83. package/collections/observable/observable-list.js +1 -16
  84. package/collections/observable/observable-map.js +56 -79
  85. package/collections/observable/observable-set.js +75 -98
  86. package/collections/observable/observable-sorted-array-list.js +165 -188
  87. package/collections/sorted-array-list.js +156 -179
  88. package/collections/sorted-list.js +1 -16
  89. package/collections/sorted-map.js +70 -93
  90. package/container/decorators.js +1 -34
  91. package/container/index.js +3 -20
  92. package/container/interfaces.js +1 -25
  93. package/container/token.js +1 -26
  94. package/cookie/cookie.js +49 -71
  95. package/cookie/index.js +1 -18
  96. package/core.js +56 -81
  97. package/data-structures/array-dictionary.js +89 -110
  98. package/data-structures/array-list.js +107 -130
  99. package/data-structures/cache.js +41 -64
  100. package/data-structures/circular-buffer.js +200 -220
  101. package/data-structures/collection.js +86 -109
  102. package/data-structures/dictionary.js +51 -75
  103. package/data-structures/distinct-collection.js +49 -73
  104. package/data-structures/index-out-of-bounds.error.js +8 -31
  105. package/data-structures/index.js +16 -33
  106. package/data-structures/iterable-weak-map.js +129 -149
  107. package/data-structures/linked-list.js +368 -385
  108. package/data-structures/list.js +86 -109
  109. package/data-structures/map-dictionary.js +55 -78
  110. package/data-structures/multi-key-map.js +141 -163
  111. package/data-structures/multi-key-set.js +56 -79
  112. package/data-structures/set-collection.js +54 -77
  113. package/data-structures/sorted-array-list.js +140 -166
  114. package/data-structures/weak-ref-map.js +126 -146
  115. package/database/entity-repository.js +2 -26
  116. package/database/entity.js +1 -16
  117. package/database/id.js +8 -29
  118. package/database/index.js +6 -23
  119. package/database/module.js +9 -33
  120. package/database/mongo/classes.js +18 -43
  121. package/database/mongo/index.js +10 -27
  122. package/database/mongo/model/document.js +62 -93
  123. package/database/mongo/model/index.js +1 -18
  124. package/database/mongo/module.js +59 -79
  125. package/database/mongo/mongo-base.repository.js +259 -283
  126. package/database/mongo/mongo-bulk.js +87 -110
  127. package/database/mongo/mongo-entity-repository.js +270 -296
  128. package/database/mongo/operations.js +48 -76
  129. package/database/mongo/query-converter.js +73 -96
  130. package/database/mongo/simple-entity-repository.js +5 -28
  131. package/database/mongo/types.js +2 -25
  132. package/database/query.js +7 -36
  133. package/database/utils.js +2 -25
  134. package/decorators/index.js +1 -18
  135. package/decorators/log.js +29 -51
  136. package/disposable/async-disposer.js +118 -130
  137. package/disposable/disposable.js +9 -36
  138. package/disposable/index.js +3 -20
  139. package/disposable/using.js +15 -37
  140. package/distributed-loop/controller.js +1 -16
  141. package/distributed-loop/distributed-loop.js +77 -105
  142. package/distributed-loop/index.js +3 -20
  143. package/distributed-loop/provider.js +21 -48
  144. package/enumerable/async-enumerable.js +238 -261
  145. package/enumerable/enumerable-methods.js +1 -16
  146. package/enumerable/enumerable.js +177 -200
  147. package/enumerable/index.js +2 -19
  148. package/environment.js +25 -57
  149. package/error/api.error.js +10 -33
  150. package/error/assertion.error.js +6 -29
  151. package/error/bad-request.error.js +6 -29
  152. package/error/custom.error.js +25 -47
  153. package/error/details.error.js +8 -31
  154. package/error/forbidden.error.js +6 -29
  155. package/error/index.js +16 -33
  156. package/error/invalid-token.error.js +6 -29
  157. package/error/max-bytes-exceeded.error.js +9 -32
  158. package/error/method-not-allowed.error.js +6 -29
  159. package/error/multi.error.js +8 -31
  160. package/error/not-found.error.js +6 -29
  161. package/error/not-implemented.error.js +6 -29
  162. package/error/not-supported.error.js +11 -34
  163. package/error/timeout.error.js +6 -29
  164. package/error/unauthorized.error.js +6 -29
  165. package/error/unsupported-media-type.error.js +6 -29
  166. package/examples/api/authentication.js +49 -49
  167. package/examples/api/basic-overview.js +80 -85
  168. package/examples/api/custom-authentication.js +94 -99
  169. package/examples/api/streaming.js +90 -95
  170. package/examples/browser/basic.js +21 -22
  171. package/examples/http/client.js +15 -16
  172. package/examples/mail/basic.js +41 -42
  173. package/examples/mail/templates/hello-name.js +10 -33
  174. package/examples/pdf/basic.js +48 -49
  175. package/examples/pdf/templates/hello-name.js +35 -58
  176. package/examples/reflection/basic.js +53 -84
  177. package/examples/template/basic.js +32 -33
  178. package/examples/template/templates/hello-jsx.js +8 -32
  179. package/examples/template/templates/hello-name.js +18 -41
  180. package/function/index.js +1 -18
  181. package/function/log.js +18 -40
  182. package/http/client/adapters/undici-http-client.adapter.js +92 -111
  183. package/http/client/http-client-options.js +10 -33
  184. package/http/client/http-client-request.js +149 -171
  185. package/http/client/http-client-response.js +33 -56
  186. package/http/client/http-client.adapter.js +1 -24
  187. package/http/client/http-client.js +295 -313
  188. package/http/client/index.js +6 -23
  189. package/http/client/middleware.js +1 -16
  190. package/http/client/module.js +20 -43
  191. package/http/client/tokens.js +2 -25
  192. package/http/cookie-parser.js +19 -42
  193. package/http/http-body.js +52 -75
  194. package/http/http-form.js +14 -37
  195. package/http/http-headers.js +86 -109
  196. package/http/http-query.js +14 -37
  197. package/http/http-url-parameters.js +8 -31
  198. package/http/http-value-map.js +110 -133
  199. package/http/http.error.js +60 -82
  200. package/http/index.js +11 -28
  201. package/http/server/http-server-request.js +24 -47
  202. package/http/server/http-server-response.js +22 -45
  203. package/http/server/http-server.js +2 -25
  204. package/http/server/index.js +3 -20
  205. package/http/server/node/index.js +2 -19
  206. package/http/server/node/module.js +8 -28
  207. package/http/server/node/node-http-server.js +205 -230
  208. package/http/types.js +21 -47
  209. package/http/utils.js +92 -108
  210. package/image-service/image-service.js +59 -91
  211. package/image-service/imgproxy/imgproxy-image-service.js +88 -125
  212. package/image-service/imgproxy/index.js +1 -18
  213. package/image-service/index.js +1 -18
  214. package/import.js +2 -25
  215. package/index.js +1 -18
  216. package/injector/decorators.js +134 -112
  217. package/injector/index.js +11 -28
  218. package/injector/inject.js +104 -103
  219. package/injector/injector.js +481 -497
  220. package/injector/interfaces.js +2 -26
  221. package/injector/provider.js +22 -54
  222. package/injector/resolve-chain.js +91 -117
  223. package/injector/resolve.error.js +11 -36
  224. package/injector/symbols.js +2 -26
  225. package/injector/token.js +17 -38
  226. package/injector/type-info.js +1 -16
  227. package/injector/types.js +1 -16
  228. package/interfaces.js +1 -16
  229. package/json-path/index.js +1 -18
  230. package/json-path/json-path.js +138 -138
  231. package/key-value-store/index.js +2 -19
  232. package/key-value-store/key-value-store.provider.js +1 -24
  233. package/key-value-store/key-value.store.js +6 -29
  234. package/key-value-store/mongo/index.js +6 -23
  235. package/key-value-store/mongo/module.js +17 -35
  236. package/key-value-store/mongo/mongo-key-value-store.provider.js +21 -48
  237. package/key-value-store/mongo/mongo-key-value.model.js +1 -16
  238. package/key-value-store/mongo/mongo-key-value.repository.js +23 -52
  239. package/key-value-store/mongo/mongo-key-value.store.js +60 -89
  240. package/key-value-store/mongo/tokens.js +2 -25
  241. package/lock/index.js +2 -19
  242. package/lock/lock.js +6 -29
  243. package/lock/mongo/index.js +5 -22
  244. package/lock/mongo/lock.js +112 -135
  245. package/lock/mongo/model.js +1 -16
  246. package/lock/mongo/module.js +18 -37
  247. package/lock/mongo/mongo-lock-repository.js +57 -85
  248. package/lock/mongo/provider.js +39 -68
  249. package/lock/provider.js +2 -25
  250. package/lock/web/index.js +3 -20
  251. package/lock/web/module.js +11 -31
  252. package/lock/web/web-lock.js +81 -105
  253. package/lock/web/web-lock.provider.js +28 -57
  254. package/logger/console/index.js +1 -18
  255. package/logger/console/logger.js +55 -81
  256. package/logger/index.js +3 -20
  257. package/logger/level.js +8 -31
  258. package/logger/logger.js +38 -61
  259. package/logger/noop/index.js +1 -18
  260. package/logger/noop/logger.js +20 -42
  261. package/logger/tokens.js +2 -25
  262. package/mail/clients/nodemailer.mail-client.js +64 -91
  263. package/mail/index.js +5 -22
  264. package/mail/mail-log.repository.js +2 -25
  265. package/mail/mail.client.js +35 -63
  266. package/mail/mail.service.js +74 -106
  267. package/mail/models/index.js +6 -23
  268. package/mail/models/mail-address.model.js +1 -16
  269. package/mail/models/mail-content.model.js +1 -16
  270. package/mail/models/mail-data.model.js +1 -16
  271. package/mail/models/mail-log.model.js +1 -16
  272. package/mail/models/mail-send-result.model.js +1 -16
  273. package/mail/models/mail-template.model.js +5 -28
  274. package/mail/module.js +21 -41
  275. package/mail/repositories/mongo-mail-log.repository.js +25 -56
  276. package/mail/tokens.js +2 -25
  277. package/memory/finalization.js +36 -60
  278. package/memory/index.js +2 -19
  279. package/memory/observable-finalization-registry.js +9 -32
  280. package/message-bus/broadcast-channel/broadcast-channel-message-bus-provider.js +24 -53
  281. package/message-bus/broadcast-channel/broadcast-channel-message-bus.js +47 -74
  282. package/message-bus/broadcast-channel/index.js +3 -20
  283. package/message-bus/broadcast-channel/module.js +11 -31
  284. package/message-bus/index.js +3 -20
  285. package/message-bus/local/index.js +3 -20
  286. package/message-bus/local/local-message-bus-provider.js +36 -65
  287. package/message-bus/local/local-message-bus.js +39 -66
  288. package/message-bus/local/module.js +11 -31
  289. package/message-bus/local/types.js +1 -16
  290. package/message-bus/message-bus-base.js +41 -63
  291. package/message-bus/message-bus-provider.js +1 -24
  292. package/message-bus/message-bus.js +6 -29
  293. package/migration/index.js +3 -20
  294. package/migration/migration-state-repository.js +2 -25
  295. package/migration/migration-state.js +1 -16
  296. package/migration/migrator.js +81 -108
  297. package/migration/mongo/index.js +2 -19
  298. package/migration/mongo/migration-state-repository.js +24 -53
  299. package/migration/mongo/module.js +15 -34
  300. package/module/index.js +4 -21
  301. package/module/module-base.js +37 -60
  302. package/module/module-metric-reporter.js +58 -77
  303. package/module/module.js +10 -34
  304. package/module/modules/function.module.js +11 -34
  305. package/module/modules/index.js +2 -19
  306. package/module/modules/web-server.module.js +54 -83
  307. package/module/utils.js +19 -43
  308. package/notification/api.js +22 -50
  309. package/notification/models/index.js +2 -19
  310. package/notification/models/notification-channel-job.model.js +1 -16
  311. package/notification/models/notification.model.js +75 -103
  312. package/notification/module.js +8 -28
  313. package/notification/notification-channel.service.js +1 -24
  314. package/notification/notification.repository.js +1 -24
  315. package/notification/notification.service.js +31 -58
  316. package/object-storage/index.js +3 -20
  317. package/object-storage/object-storage-provider.js +1 -24
  318. package/object-storage/object-storage.js +7 -30
  319. package/object-storage/object.js +7 -30
  320. package/object-storage/s3/index.js +3 -20
  321. package/object-storage/s3/s3.object-storage-provider.js +75 -100
  322. package/object-storage/s3/s3.object-storage.js +134 -160
  323. package/object-storage/s3/s3.object.js +39 -62
  324. package/openid-connect/cached-oidc-configuration.service.js +36 -65
  325. package/openid-connect/index.js +11 -28
  326. package/openid-connect/mongo-oidc-state.repository.js +40 -65
  327. package/openid-connect/oidc-configuration.service.js +39 -66
  328. package/openid-connect/oidc-state.model.js +1 -16
  329. package/openid-connect/oidc-state.repository.js +2 -25
  330. package/openid-connect/oidc.service-model.js +1 -16
  331. package/openid-connect/oidc.service.js +158 -187
  332. package/package.json +7 -5
  333. package/password/have-i-been-pwned.js +21 -39
  334. package/password/index.js +4 -21
  335. package/password/password-check-result.model.js +34 -63
  336. package/password/password-check.js +46 -76
  337. package/password/password-check.localization.js +86 -111
  338. package/pdf/index.js +1 -18
  339. package/pdf/pdf.service.js +172 -206
  340. package/polyfills.js +1 -2
  341. package/pool/index.js +1 -18
  342. package/pool/pool.js +116 -133
  343. package/process-shutdown.js +57 -81
  344. package/promise/cancelable-promise.js +23 -41
  345. package/promise/deferred-promise.js +68 -92
  346. package/promise/index.js +3 -20
  347. package/promise/lazy-promise.js +24 -47
  348. package/queue/enqueue-batch.js +18 -41
  349. package/queue/index.js +3 -20
  350. package/queue/mongo/index.js +4 -21
  351. package/queue/mongo/job.js +1 -16
  352. package/queue/mongo/mongo-job.repository.js +45 -70
  353. package/queue/mongo/queue.js +243 -265
  354. package/queue/mongo/queue.provider.js +47 -72
  355. package/queue/provider.js +1 -24
  356. package/queue/queue.js +15 -41
  357. package/random/index.js +2 -19
  358. package/random/number-generator/index.js +3 -20
  359. package/random/number-generator/mulberry32.js +34 -51
  360. package/random/number-generator/random-number-generator-function.js +1 -24
  361. package/random/number-generator/random-number-generator.js +8 -31
  362. package/random/number-generator/seeded-random-number-generator.js +5 -28
  363. package/random/number-generator/sfc32.js +41 -64
  364. package/random/number-generator/utils.js +2 -25
  365. package/random/series.js +41 -43
  366. package/reflection/decorator-data.js +63 -80
  367. package/reflection/decorators.js +39 -69
  368. package/reflection/index.js +5 -22
  369. package/reflection/reflection-data-map.js +32 -55
  370. package/reflection/registry.js +110 -130
  371. package/reflection/types.js +1 -16
  372. package/reflection/utils.js +96 -124
  373. package/require.js +3 -26
  374. package/rpc/endpoints/message-port.rpc-endpoint.js +29 -48
  375. package/rpc/index.js +4 -21
  376. package/rpc/model.js +7 -30
  377. package/rpc/rpc-endpoint.js +17 -40
  378. package/rpc/rpc-error.js +17 -40
  379. package/rpc/rpc.js +223 -235
  380. package/rxjs/cast.js +4 -28
  381. package/rxjs/index.js +13 -30
  382. package/rxjs/intersection-observer.js +25 -48
  383. package/rxjs/media-query.js +8 -27
  384. package/rxjs/mutation-observer.js +28 -50
  385. package/rxjs/noop.js +4 -28
  386. package/rxjs/performance-observer.js +37 -60
  387. package/rxjs/resize-observer.js +28 -50
  388. package/rxjs/retry-backoff.js +23 -47
  389. package/rxjs/slow-array.js +22 -36
  390. package/rxjs/start-with-provider.js +5 -28
  391. package/rxjs/teardown.js +21 -44
  392. package/rxjs/timing.js +26 -57
  393. package/rxjs/touch.js +11 -30
  394. package/schema/array-constraints/index.js +2 -19
  395. package/schema/array-constraints/maximum-length.js +19 -42
  396. package/schema/array-constraints/minimum-length.js +19 -42
  397. package/schema/coercers/boolean.coercer.js +25 -49
  398. package/schema/coercers/date.coercer.js +14 -38
  399. package/schema/coercers/index.js +6 -23
  400. package/schema/coercers/number.coercer.js +12 -36
  401. package/schema/coercers/regexp.coercer.js +18 -41
  402. package/schema/coercers/string.coercer.js +12 -36
  403. package/schema/coercers/uint8-array.coercer.js +20 -44
  404. package/schema/constraints/enumeration.js +27 -49
  405. package/schema/constraints/generic.js +21 -41
  406. package/schema/constraints/index.js +12 -29
  407. package/schema/constraints/integer.js +20 -44
  408. package/schema/constraints/length.js +14 -36
  409. package/schema/constraints/literal.js +22 -44
  410. package/schema/constraints/maximum-date.js +23 -46
  411. package/schema/constraints/maximum-length.js +22 -45
  412. package/schema/constraints/maximum.js +21 -44
  413. package/schema/constraints/minimum-date.js +23 -46
  414. package/schema/constraints/minimum-length.js +22 -45
  415. package/schema/constraints/minimum.js +21 -44
  416. package/schema/constraints/pattern.js +23 -46
  417. package/schema/decorators/class.js +4 -26
  418. package/schema/decorators/coerce.js +4 -26
  419. package/schema/decorators/constraint.js +6 -28
  420. package/schema/decorators/index.js +6 -23
  421. package/schema/decorators/property.js +16 -38
  422. package/schema/decorators/types.js +1 -16
  423. package/schema/decorators/utils.js +45 -73
  424. package/schema/index.js +10 -27
  425. package/schema/schema.error.js +59 -72
  426. package/schema/schema.js +256 -274
  427. package/schema/schemas/any.js +7 -30
  428. package/schema/schemas/array.js +21 -44
  429. package/schema/schemas/assign.js +23 -46
  430. package/schema/schemas/boolean.js +7 -30
  431. package/schema/schemas/constraint.js +6 -29
  432. package/schema/schemas/date.js +20 -43
  433. package/schema/schemas/defaulted.js +8 -31
  434. package/schema/schemas/enumeration.js +15 -38
  435. package/schema/schemas/index.js +26 -43
  436. package/schema/schemas/instance.js +4 -26
  437. package/schema/schemas/literal.js +15 -38
  438. package/schema/schemas/nullable.js +7 -30
  439. package/schema/schemas/number.js +25 -48
  440. package/schema/schemas/object.js +10 -34
  441. package/schema/schemas/omit.js +14 -37
  442. package/schema/schemas/one-or-many.js +13 -35
  443. package/schema/schemas/optional.js +6 -30
  444. package/schema/schemas/partial.js +16 -39
  445. package/schema/schemas/pick.js +14 -37
  446. package/schema/schemas/readable-stream.js +7 -30
  447. package/schema/schemas/record.js +9 -31
  448. package/schema/schemas/regexp.js +7 -30
  449. package/schema/schemas/string.js +36 -59
  450. package/schema/schemas/transform.js +6 -29
  451. package/schema/schemas/uint8-array.js +27 -50
  452. package/schema/schemas/union.js +11 -34
  453. package/schema/schemas/unknown.js +7 -30
  454. package/schema/transformers/generic.js +16 -39
  455. package/schema/transformers/index.js +4 -21
  456. package/schema/transformers/lowercase.js +10 -33
  457. package/schema/transformers/trim.js +10 -33
  458. package/schema/transformers/uppercase.js +10 -33
  459. package/schema/types/index.js +5 -22
  460. package/schema/types/schema-array-constraint.js +1 -24
  461. package/schema/types/schema-value-coercer.js +1 -24
  462. package/schema/types/schema-value-constraint.js +1 -24
  463. package/schema/types/schema-value-transformer.js +1 -24
  464. package/schema/types/types.js +161 -191
  465. package/schema/utils/index.js +2 -19
  466. package/schema/utils/schema.js +120 -142
  467. package/schema/utils/value-type.js +51 -74
  468. package/search-index/elastic/config.js +21 -50
  469. package/search-index/elastic/index.js +6 -23
  470. package/search-index/elastic/keyword-rewriter.js +17 -40
  471. package/search-index/elastic/model/elastic-query.js +1 -16
  472. package/search-index/elastic/model/index-mapping.js +4 -26
  473. package/search-index/elastic/model/index.js +3 -20
  474. package/search-index/elastic/model/sort.js +1 -16
  475. package/search-index/elastic/module.js +43 -68
  476. package/search-index/elastic/query-builder/boolean-query-builder.js +46 -69
  477. package/search-index/elastic/query-builder/index.js +1 -18
  478. package/search-index/elastic/query-converter.js +174 -192
  479. package/search-index/elastic/search-index.js +132 -153
  480. package/search-index/elastic/sort-converter.js +12 -34
  481. package/search-index/elastic/types.js +1 -16
  482. package/search-index/error.js +12 -35
  483. package/search-index/index.js +3 -20
  484. package/search-index/memory/index.js +1 -18
  485. package/search-index/memory/memory-search-index.js +130 -152
  486. package/search-index/search-index.js +30 -53
  487. package/search-index/search-result.js +1 -16
  488. package/serializer/handlers/binary.js +19 -47
  489. package/serializer/handlers/date.js +4 -28
  490. package/serializer/handlers/error.js +7 -31
  491. package/serializer/handlers/index.js +7 -24
  492. package/serializer/handlers/map.js +16 -40
  493. package/serializer/handlers/regex.js +7 -31
  494. package/serializer/handlers/register.js +36 -59
  495. package/serializer/handlers/set.js +13 -37
  496. package/serializer/index.js +3 -30
  497. package/serializer/serializable.js +43 -68
  498. package/serializer/serializer.js +244 -264
  499. package/serializer/types.js +6 -34
  500. package/signals/api.js +18 -46
  501. package/signals/computed-with-dependencies.js +8 -31
  502. package/signals/effect-with-dependencies.js +8 -31
  503. package/signals/implementation/api.js +33 -33
  504. package/signals/implementation/computed.js +125 -104
  505. package/signals/implementation/configure.js +18 -41
  506. package/signals/implementation/effect.js +48 -66
  507. package/signals/implementation/errors.js +5 -29
  508. package/signals/implementation/graph.js +168 -136
  509. package/signals/implementation/index.js +10 -27
  510. package/signals/implementation/signal.js +91 -101
  511. package/signals/implementation/to-observable.js +21 -38
  512. package/signals/implementation/to-signal.js +44 -60
  513. package/signals/implementation/untracked.js +15 -31
  514. package/signals/implementation/watch.js +58 -73
  515. package/signals/index.js +9 -26
  516. package/signals/lazylize.js +4 -27
  517. package/signals/pipe.js +9 -33
  518. package/signals/switch-map.js +4 -27
  519. package/signals/to-signal-2.js +38 -61
  520. package/signals/types.js +1 -16
  521. package/signals/untracked-operator.js +11 -33
  522. package/sse/index.js +2 -19
  523. package/sse/model.js +1 -16
  524. package/sse/server-sent-events-source.js +54 -76
  525. package/sse/server-sent-events.js +48 -72
  526. package/supports.js +5 -32
  527. package/templates/index.js +9 -26
  528. package/templates/module.js +27 -48
  529. package/templates/providers/file.template-provider.js +41 -82
  530. package/templates/providers/memory.template-provider.js +28 -55
  531. package/templates/renderers/handlebars.template-renderer.js +85 -122
  532. package/templates/renderers/jsx.template-renderer.js +29 -56
  533. package/templates/renderers/mjml.template-renderer.js +43 -82
  534. package/templates/renderers/string.template-renderer.js +25 -52
  535. package/templates/resolvers/file.template-resolver.js +47 -90
  536. package/templates/resolvers/jsx.template-resolver.js +30 -59
  537. package/templates/resolvers/string.template-resolver.js +30 -59
  538. package/templates/template-renderer.provider.js +37 -66
  539. package/templates/template-resolver.provider.js +37 -66
  540. package/templates/template.model.js +40 -69
  541. package/templates/template.provider.js +1 -24
  542. package/templates/template.renderer.js +11 -34
  543. package/templates/template.resolver.js +1 -24
  544. package/templates/template.service.js +50 -82
  545. package/templates/tokens.js +3 -27
  546. package/templates/types/jsx.intrinsic-elements.js +1 -16
  547. package/text/dynamic-text.model.js +42 -71
  548. package/text/index.js +3 -20
  549. package/text/localizable-text.model.js +1 -16
  550. package/text/localization.service.js +197 -229
  551. package/theme/adapters/css-adapter.js +23 -46
  552. package/theme/adapters/tailwind-adapter.js +29 -52
  553. package/theme/index.js +1 -18
  554. package/theme/theme-service.js +109 -147
  555. package/threading/index.js +2 -19
  556. package/threading/thread-pool.js +48 -70
  557. package/threading/thread-worker.js +3 -26
  558. package/tokens.js +2 -25
  559. package/types/geo-json.js +1 -16
  560. package/types.js +2 -16
  561. package/utils/alphabet.js +12 -35
  562. package/utils/any-iterable-iterator.js +4 -27
  563. package/utils/array/array-backtracker.js +42 -65
  564. package/utils/array/array.js +76 -79
  565. package/utils/array/index.js +2 -19
  566. package/utils/async-iterable-helpers/all.js +25 -46
  567. package/utils/async-iterable-helpers/any.js +25 -46
  568. package/utils/async-iterable-helpers/assert.js +22 -43
  569. package/utils/async-iterable-helpers/batch.js +26 -46
  570. package/utils/async-iterable-helpers/buffer.js +47 -64
  571. package/utils/async-iterable-helpers/concat.js +5 -27
  572. package/utils/async-iterable-helpers/default-if-empty.js +9 -32
  573. package/utils/async-iterable-helpers/deferred.js +3 -26
  574. package/utils/async-iterable-helpers/difference.js +24 -48
  575. package/utils/async-iterable-helpers/distinct.js +23 -44
  576. package/utils/async-iterable-helpers/drain.js +4 -26
  577. package/utils/async-iterable-helpers/filter.js +23 -44
  578. package/utils/async-iterable-helpers/first-or-default.js +8 -30
  579. package/utils/async-iterable-helpers/first.js +8 -30
  580. package/utils/async-iterable-helpers/for-each.js +18 -38
  581. package/utils/async-iterable-helpers/group-single.js +3 -26
  582. package/utils/async-iterable-helpers/group-to-map.js +20 -41
  583. package/utils/async-iterable-helpers/group-to-single-map.js +23 -44
  584. package/utils/async-iterable-helpers/group.js +3 -26
  585. package/utils/async-iterable-helpers/includes.js +7 -28
  586. package/utils/async-iterable-helpers/index.js +48 -65
  587. package/utils/async-iterable-helpers/interrupt.js +19 -43
  588. package/utils/async-iterable-helpers/is-async-iterable.js +5 -29
  589. package/utils/async-iterable-helpers/last-or-default.js +13 -36
  590. package/utils/async-iterable-helpers/last.js +13 -36
  591. package/utils/async-iterable-helpers/map-many.js +19 -40
  592. package/utils/async-iterable-helpers/map.js +19 -40
  593. package/utils/async-iterable-helpers/materialize.js +21 -42
  594. package/utils/async-iterable-helpers/metadata.js +36 -54
  595. package/utils/async-iterable-helpers/multiplex.js +23 -44
  596. package/utils/async-iterable-helpers/observable-iterable.js +31 -53
  597. package/utils/async-iterable-helpers/pairwise.js +26 -44
  598. package/utils/async-iterable-helpers/parallel/feed.js +24 -45
  599. package/utils/async-iterable-helpers/parallel/filter.js +8 -31
  600. package/utils/async-iterable-helpers/parallel/for-each.js +21 -44
  601. package/utils/async-iterable-helpers/parallel/group.js +9 -32
  602. package/utils/async-iterable-helpers/parallel/index.js +7 -24
  603. package/utils/async-iterable-helpers/parallel/map.js +6 -29
  604. package/utils/async-iterable-helpers/parallel/tap.js +6 -29
  605. package/utils/async-iterable-helpers/parallel/types.js +1 -16
  606. package/utils/async-iterable-helpers/reduce.js +31 -46
  607. package/utils/async-iterable-helpers/retry.js +43 -58
  608. package/utils/async-iterable-helpers/single-or-default.js +17 -40
  609. package/utils/async-iterable-helpers/single.js +19 -42
  610. package/utils/async-iterable-helpers/skip.js +3 -26
  611. package/utils/async-iterable-helpers/sort.js +6 -29
  612. package/utils/async-iterable-helpers/take-until.js +32 -49
  613. package/utils/async-iterable-helpers/take-while.js +29 -46
  614. package/utils/async-iterable-helpers/take.js +23 -44
  615. package/utils/async-iterable-helpers/tap.js +19 -40
  616. package/utils/async-iterable-helpers/throttle.js +9 -30
  617. package/utils/async-iterable-helpers/to-array.js +10 -33
  618. package/utils/async-iterable-helpers/to-async-iterable-iterator.js +40 -59
  619. package/utils/async-iterable-helpers/to-async-iterator.js +32 -54
  620. package/utils/async-iterable-helpers/to-set.js +10 -33
  621. package/utils/async-iterable-helpers/to-sync-iterable.js +6 -27
  622. package/utils/async-iterable-helpers/types.js +1 -16
  623. package/utils/async-iterable-helpers/while.js +25 -46
  624. package/utils/async-iterator-iterable-iterator.js +41 -62
  625. package/utils/backoff.js +109 -109
  626. package/utils/base64.js +153 -140
  627. package/utils/benchmark.js +114 -107
  628. package/utils/binary-search.js +70 -87
  629. package/utils/binary.js +50 -61
  630. package/utils/clone.js +43 -64
  631. package/utils/comparison.js +76 -98
  632. package/utils/compression.js +107 -118
  633. package/utils/config-parser.js +21 -48
  634. package/utils/crc32.js +20 -42
  635. package/utils/cryptography.js +163 -121
  636. package/utils/date-time.js +102 -138
  637. package/utils/encoding.js +62 -60
  638. package/utils/enum.js +27 -53
  639. package/utils/equals.js +103 -119
  640. package/utils/event-loop.js +19 -39
  641. package/utils/factory-map.js +53 -75
  642. package/utils/feedable-async-iterable.js +47 -70
  643. package/utils/file-reader.js +15 -41
  644. package/utils/format-error.js +36 -57
  645. package/utils/format.js +32 -53
  646. package/utils/function/index.js +2 -19
  647. package/utils/function/memoize.js +38 -53
  648. package/utils/function/throttle.js +26 -48
  649. package/utils/helpers.js +93 -102
  650. package/utils/image.js +62 -88
  651. package/utils/index.js +47 -64
  652. package/utils/iterable-helpers/all.js +8 -31
  653. package/utils/iterable-helpers/any.js +8 -31
  654. package/utils/iterable-helpers/assert.js +7 -30
  655. package/utils/iterable-helpers/batch.js +11 -34
  656. package/utils/iterable-helpers/concat.js +4 -27
  657. package/utils/iterable-helpers/default-if-empty.js +9 -32
  658. package/utils/iterable-helpers/deferred.js +2 -25
  659. package/utils/iterable-helpers/difference.js +21 -45
  660. package/utils/iterable-helpers/distinct.js +9 -32
  661. package/utils/iterable-helpers/drain.js +4 -26
  662. package/utils/iterable-helpers/filter.js +7 -30
  663. package/utils/iterable-helpers/first-or-default.js +8 -30
  664. package/utils/iterable-helpers/first.js +8 -30
  665. package/utils/iterable-helpers/for-each.js +5 -28
  666. package/utils/iterable-helpers/group-single.js +3 -26
  667. package/utils/iterable-helpers/group-to-map.js +9 -32
  668. package/utils/iterable-helpers/group-to-single-map.js +10 -33
  669. package/utils/iterable-helpers/group.js +3 -26
  670. package/utils/iterable-helpers/includes.js +3 -26
  671. package/utils/iterable-helpers/index.js +39 -56
  672. package/utils/iterable-helpers/is-iterable.js +5 -29
  673. package/utils/iterable-helpers/last-or-default.js +13 -36
  674. package/utils/iterable-helpers/last.js +13 -36
  675. package/utils/iterable-helpers/map-many.js +6 -29
  676. package/utils/iterable-helpers/map.js +6 -29
  677. package/utils/iterable-helpers/materialize.js +2 -25
  678. package/utils/iterable-helpers/metadata.js +16 -38
  679. package/utils/iterable-helpers/pairwise.js +11 -33
  680. package/utils/iterable-helpers/range.js +4 -27
  681. package/utils/iterable-helpers/reduce.js +11 -33
  682. package/utils/iterable-helpers/single-or-default.js +14 -37
  683. package/utils/iterable-helpers/single.js +17 -40
  684. package/utils/iterable-helpers/skip.js +6 -29
  685. package/utils/iterable-helpers/sort.js +4 -27
  686. package/utils/iterable-helpers/take-until.js +8 -31
  687. package/utils/iterable-helpers/take-while.js +10 -33
  688. package/utils/iterable-helpers/take.js +10 -33
  689. package/utils/iterable-helpers/tap.js +6 -29
  690. package/utils/iterable-helpers/types.js +1 -16
  691. package/utils/iterable-helpers/while.js +8 -31
  692. package/utils/jwt.js +77 -100
  693. package/utils/map.js +35 -62
  694. package/utils/math.js +102 -64
  695. package/utils/merge.js +26 -45
  696. package/utils/middleware.js +36 -60
  697. package/utils/moving-metric.js +155 -188
  698. package/utils/noop.js +4 -27
  699. package/utils/object/decycle.js +57 -78
  700. package/utils/object/dereference.js +46 -44
  701. package/utils/object/forward-ref.js +59 -73
  702. package/utils/object/index.js +7 -24
  703. package/utils/object/lazy-property.js +81 -96
  704. package/utils/object/merge.js +48 -70
  705. package/utils/object/object.js +106 -136
  706. package/utils/object/property-name.js +69 -72
  707. package/utils/ordered-feedable-async-iterable.js +42 -65
  708. package/utils/patch-worker.js +69 -90
  709. package/utils/patterns.js +7 -29
  710. package/utils/periodic-reporter.js +60 -82
  711. package/utils/periodic-sampler.js +67 -91
  712. package/utils/provider-function-iterable.js +26 -48
  713. package/utils/proxy.js +17 -42
  714. package/utils/random.js +40 -50
  715. package/utils/reflection.js +13 -41
  716. package/utils/repl.js +14 -33
  717. package/utils/set.js +36 -62
  718. package/utils/singleton.js +18 -41
  719. package/utils/sort.js +53 -77
  720. package/utils/stream/finalize-stream.js +43 -62
  721. package/utils/stream/index.js +6 -23
  722. package/utils/stream/readable-stream-adapter.js +35 -57
  723. package/utils/stream/readable-stream-from-promise.js +7 -28
  724. package/utils/stream/size-limited-stream.js +12 -35
  725. package/utils/stream/stream-helper-types.js +1 -16
  726. package/utils/stream/stream-reader.js +30 -52
  727. package/utils/string/hypenate.js +2 -25
  728. package/utils/string/index.js +3 -20
  729. package/utils/string/title-case.js +6 -26
  730. package/utils/string/trim.js +9 -32
  731. package/utils/throw.js +7 -30
  732. package/utils/timer.js +70 -91
  733. package/utils/timing.js +52 -80
  734. package/utils/type-guards.js +253 -1076
  735. package/utils/type-of.js +25 -43
  736. package/utils/units.js +53 -124
  737. package/utils/url-builder.js +47 -68
  738. package/utils/value-or-provider.js +19 -44
  739. package/utils/z-base32.js +42 -63
  740. package/web-types.js +1 -16
@@ -1,243 +1,237 @@
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 });
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
9
6
  };
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;
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
17
9
  };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var gateway_exports = {};
20
- __export(gateway_exports, {
21
- ApiGateway: () => ApiGateway,
22
- ApiGatewayOptions: () => ApiGatewayOptions
23
- });
24
- module.exports = __toCommonJS(gateway_exports);
25
- var import_urlpattern_polyfill = require("urlpattern-polyfill");
26
- var import_bad_request_error = require("../../error/bad-request.error.js");
27
- var import_not_found_error = require("../../error/not-found.error.js");
28
- var import_not_implemented_error = require("../../error/not-implemented.error.js");
29
- var import_server = require("../../http/server/index.js");
30
- var import_injector = require("../../injector/index.js");
31
- var import_logger = require("../../logger/index.js");
32
- var import_schema = require("../../schema/index.js");
33
- var import_server_sent_events_source = require("../../sse/server-sent-events-source.js");
34
- var import_array = require("../../utils/array/array.js");
35
- var import_middleware = require("../../utils/middleware.js");
36
- var import_throw = require("../../utils/throw.js");
37
- var import_type_guards = require("../../utils/type-guards.js");
38
- var import_units = require("../../utils/units.js");
39
- var import_types = require("../types.js");
40
- var import_utils = require("../utils.js");
41
- var import_api_request_token_provider = require("./api-request-token.provider.js");
42
- var import_error_handler = require("./error-handler.js");
43
- var import_middlewares = require("./middlewares/index.js");
44
- var import_tokens = require("./tokens.js");
45
- var __decorate = function(decorators, target, key, desc) {
46
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
47
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
48
- r = Reflect.decorate(decorators, target, key, desc);
49
- else
50
- for (var i = decorators.length - 1; i >= 0; i--)
51
- if (d = decorators[i])
52
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
53
- return c > 3 && r && Object.defineProperty(target, key, r), r;
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
54
12
  };
55
- var __metadata = function(k, v) {
56
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
57
- return Reflect.metadata(k, v);
58
- };
59
- var __param = function(paramIndex, decorator) {
60
- return function(target, key) {
61
- decorator(target, key, paramIndex);
62
- };
63
- };
64
- const defaultMaxBytes = 10 * import_units.mebibyte;
65
- class ApiGatewayOptions {
66
- /**
67
- * Api prefix. Pass `null` to disable prefix.
68
- * @default api
69
- */
70
- prefix;
71
- /** Initial middlewares */
72
- middlewares;
73
- /** Errors to supress in log output */
74
- supressedErrors;
75
- /** Cors middleware options */
76
- cors;
77
- /**
78
- * Maximum size of request body. Useful to prevent harmful requests.
79
- * @default 10 MB
80
- */
81
- defaultMaxBytes;
13
+ import 'urlpattern-polyfill'; // eslint-disable-line import/no-unassigned-import
14
+ import { BadRequestError } from '../../error/bad-request.error.js';
15
+ import { NotFoundError } from '../../error/not-found.error.js';
16
+ import { NotImplementedError } from '../../error/not-implemented.error.js';
17
+ import { HttpServerResponse } from '../../http/server/index.js';
18
+ import { InjectArg, ResolveArg, Singleton, resolveArgumentType } from '../../injector/index.js';
19
+ import { Logger } from '../../logger/index.js';
20
+ import { Schema } from '../../schema/index.js';
21
+ import { ServerSentEventsSource } from '../../sse/server-sent-events-source.js';
22
+ import { toArray } from '../../utils/array/array.js';
23
+ import { composeAsyncMiddleware } from '../../utils/middleware.js';
24
+ import { deferThrow } from '../../utils/throw.js';
25
+ import { isArray, isBlob, isDefined, isNull, isNullOrUndefined, isObject, isReadableStream, isUint8Array, isUndefined } from '../../utils/type-guards.js';
26
+ import { mebibyte } from '../../utils/units.js';
27
+ import { normalizedApiDefinitionEndpointsEntries } from '../types.js';
28
+ import { getFullApiEndpointResource } from '../utils.js';
29
+ import { ApiRequestTokenProvider } from './api-request-token.provider.js';
30
+ import { handleApiError } from './error-handler.js';
31
+ import { allowedMethodsMiddleware, catchErrorMiddleware, corsMiddleware, responseTimeMiddleware } from './middlewares/index.js';
32
+ import { API_MODULE_OPTIONS } from './tokens.js';
33
+ const defaultMaxBytes = 10 * mebibyte;
34
+ export class ApiGatewayOptions {
35
+ /**
36
+ * Api prefix. Pass `null` to disable prefix.
37
+ * @default api
38
+ */
39
+ prefix;
40
+ /** Initial middlewares */
41
+ middlewares;
42
+ /** Errors to supress in log output */
43
+ supressedErrors;
44
+ /** Cors middleware options */
45
+ cors;
46
+ /**
47
+ * Maximum size of request body. Useful to prevent harmful requests.
48
+ * @default 10 MB
49
+ */
50
+ defaultMaxBytes;
82
51
  }
83
- let ApiGateway = class ApiGateway2 {
84
- requestTokenProvider;
85
- logger;
86
- prefix;
87
- apis;
88
- middlewares;
89
- supressedErrors;
90
- catchErrorMiddleware;
91
- options;
92
- handler;
93
- constructor(requestTokenProvider, logger, options = {}) {
94
- this.requestTokenProvider = requestTokenProvider;
95
- this.logger = logger;
96
- this.options = options;
97
- this.prefix = (0, import_type_guards.isNull)(options.prefix) ? null : options.prefix ?? "api";
98
- this.apis = /* @__PURE__ */ new Map();
99
- this.middlewares = options.middlewares ?? [];
100
- this.supressedErrors = new Set(options.supressedErrors);
101
- this.catchErrorMiddleware = (0, import_middlewares.catchErrorMiddleware)(this.supressedErrors, logger);
102
- this.updateMiddleware();
103
- }
104
- addMiddleware(middleware) {
105
- this.middlewares.push(middleware);
106
- this.updateMiddleware();
107
- }
108
- supressErrors(...errorTypes) {
109
- for (const type of errorTypes) {
110
- this.supressedErrors.add(type);
52
+ /**
53
+ * router for {@link ApiTransport} requests to {@link ApiImplementation}
54
+ * @todo error handling (standardized format, serialization etc.)
55
+ */
56
+ let ApiGateway = class ApiGateway {
57
+ requestTokenProvider;
58
+ logger;
59
+ prefix;
60
+ apis;
61
+ middlewares;
62
+ supressedErrors;
63
+ catchErrorMiddleware;
64
+ options;
65
+ handler;
66
+ constructor(requestTokenProvider, logger, options = {}) {
67
+ this.requestTokenProvider = requestTokenProvider;
68
+ this.logger = logger;
69
+ this.options = options;
70
+ this.prefix = isNull(options.prefix) ? null : (options.prefix ?? 'api');
71
+ this.apis = new Map();
72
+ this.middlewares = options.middlewares ?? [];
73
+ this.supressedErrors = new Set(options.supressedErrors);
74
+ this.catchErrorMiddleware = catchErrorMiddleware(this.supressedErrors, logger);
75
+ this.updateMiddleware();
111
76
  }
112
- }
113
- registerApi(definition, implementation) {
114
- for (const [name, endpointDefinition] of (0, import_types.normalizedApiDefinitionEndpointsEntries)(definition.endpoints)) {
115
- const versionArray = (0, import_type_guards.isUndefined)(endpointDefinition.version) ? [1] : (0, import_array.toArray)(endpointDefinition.version);
116
- for (const version of versionArray) {
117
- const resource = (0, import_utils.getFullApiEndpointResource)({ api: definition, endpoint: endpointDefinition, defaultPrefix: this.prefix, explicitVersion: version });
118
- const methods = (0, import_type_guards.isArray)(endpointDefinition.method) ? endpointDefinition.method : [endpointDefinition.method ?? "GET"];
119
- if (methods.length == 0) {
120
- throw new Error(`No method provided for resource ${resource}.`);
121
- }
122
- let resourceApis = this.apis.get(resource);
123
- if ((0, import_type_guards.isUndefined)(resourceApis)) {
124
- resourceApis = {
125
- resource,
126
- pattern: new URLPattern({
127
- pathname: resource,
128
- baseURL: "http://localhost",
129
- username: "*",
130
- password: "*",
131
- protocol: "*",
132
- hostname: "*",
133
- port: "*",
134
- search: "*",
135
- hash: "*"
136
- }),
137
- endpoints: /* @__PURE__ */ new Map()
138
- };
139
- this.apis.set(resource, resourceApis);
77
+ addMiddleware(middleware) {
78
+ this.middlewares.push(middleware);
79
+ this.updateMiddleware();
80
+ }
81
+ supressErrors(...errorTypes) {
82
+ for (const type of errorTypes) {
83
+ this.supressedErrors.add(type);
140
84
  }
141
- const endpointImplementation = implementation[name]?.bind(implementation) ?? (0, import_throw.deferThrow)(new import_not_implemented_error.NotImplementedError(`Endpoint ${name} for resource ${resource} not implemented.`));
142
- for (const method of methods) {
143
- resourceApis.endpoints.set(method, { definition: endpointDefinition, implementation: endpointImplementation });
85
+ }
86
+ registerApi(definition, implementation) {
87
+ for (const [name, endpointDefinition] of normalizedApiDefinitionEndpointsEntries(definition.endpoints)) {
88
+ const versionArray = isUndefined(endpointDefinition.version) ? [1] : toArray(endpointDefinition.version);
89
+ for (const version of versionArray) {
90
+ const resource = getFullApiEndpointResource({ api: definition, endpoint: endpointDefinition, defaultPrefix: this.prefix, explicitVersion: version });
91
+ const methods = isArray(endpointDefinition.method) ? endpointDefinition.method : [endpointDefinition.method ?? 'GET'];
92
+ if (methods.length == 0) {
93
+ throw new Error(`No method provided for resource ${resource}.`);
94
+ }
95
+ let resourceApis = this.apis.get(resource);
96
+ if (isUndefined(resourceApis)) {
97
+ resourceApis = {
98
+ resource,
99
+ pattern: new URLPattern({
100
+ pathname: resource,
101
+ baseURL: 'http://localhost',
102
+ username: '*',
103
+ password: '*',
104
+ protocol: '*',
105
+ hostname: '*',
106
+ port: '*',
107
+ search: '*',
108
+ hash: '*'
109
+ }),
110
+ endpoints: new Map()
111
+ };
112
+ this.apis.set(resource, resourceApis);
113
+ }
114
+ const endpointImplementation = implementation[name]?.bind(implementation) ?? deferThrow(new NotImplementedError(`Endpoint ${name} for resource ${resource} not implemented.`));
115
+ for (const method of methods) {
116
+ resourceApis.endpoints.set(method, { definition: endpointDefinition, implementation: endpointImplementation });
117
+ }
118
+ }
144
119
  }
145
- }
146
120
  }
147
- }
148
- async handleHttpServerRequestContext({ request, respond, close }) {
149
- let responded = false;
150
- try {
151
- const { api, patternResult } = this.getApiMetadata(request.url);
152
- const endpoint = api.endpoints.get(request.method);
153
- const response = await this.handler(request, { api, resourcePatternResult: patternResult, endpoint });
154
- responded = true;
155
- await respond(response);
156
- } catch (error) {
157
- try {
158
- const response = (0, import_error_handler.handleApiError)(error, this.supressedErrors, this.logger);
159
- if (responded) {
160
- await close();
161
- } else {
162
- try {
121
+ async handleHttpServerRequestContext({ request, respond, close }) {
122
+ let responded = false;
123
+ try {
124
+ const { api, patternResult } = this.getApiMetadata(request.url);
125
+ const endpoint = api.endpoints.get(request.method);
126
+ const response = await this.handler(request, { api, resourcePatternResult: patternResult, endpoint });
127
+ responded = true;
163
128
  await respond(response);
164
- } catch (errorRespondError) {
165
- this.logger.error(errorRespondError);
166
- await close();
167
- }
168
129
  }
169
- } catch {
170
- }
130
+ catch (error) {
131
+ try {
132
+ const response = handleApiError(error, this.supressedErrors, this.logger);
133
+ if (responded) {
134
+ await close();
135
+ }
136
+ else {
137
+ try {
138
+ await respond(response);
139
+ }
140
+ catch (errorRespondError) {
141
+ this.logger.error(errorRespondError);
142
+ await close();
143
+ }
144
+ }
145
+ }
146
+ catch { /* ignore */ }
147
+ }
171
148
  }
172
- }
173
- getApiMetadata(resource) {
174
- const urlWithoutPort = new URL(resource);
175
- urlWithoutPort.port = "";
176
- for (const api of this.apis.values()) {
177
- const result = api.pattern.exec(urlWithoutPort);
178
- if ((0, import_type_guards.isNullOrUndefined)(result)) {
179
- continue;
180
- }
181
- return { api, patternResult: result };
149
+ getApiMetadata(resource) {
150
+ const urlWithoutPort = new URL(resource);
151
+ urlWithoutPort.port = '';
152
+ for (const api of this.apis.values()) {
153
+ const result = api.pattern.exec(urlWithoutPort);
154
+ if (isNullOrUndefined(result)) {
155
+ continue;
156
+ }
157
+ return { api, patternResult: result };
158
+ }
159
+ throw new NotFoundError(`Resource ${resource.pathname} not available.`);
182
160
  }
183
- throw new import_not_found_error.NotFoundError(`Resource ${resource.pathname} not available.`);
184
- }
185
- updateMiddleware() {
186
- const middlewares = [import_middlewares.responseTimeMiddleware, (0, import_middlewares.corsMiddleware)(this.options.cors), import_middlewares.allowedMethodsMiddleware, this.catchErrorMiddleware, ...this.middlewares];
187
- this.handler = (0, import_middleware.composeAsyncMiddleware)(middlewares, async (request, context) => this.middlewareHandler(request, context));
188
- }
189
- async middlewareHandler(request, context) {
190
- const readBodyOptions = { maxBytes: context.endpoint.definition.maxBytes ?? this.options.defaultMaxBytes ?? defaultMaxBytes };
191
- const body = (0, import_type_guards.isDefined)(context.endpoint.definition.body) ? await this.getBody(request, readBodyOptions, context.endpoint.definition.body) : void 0;
192
- const bodyAsParameters = (0, import_type_guards.isUndefined)(context.endpoint.definition.body) && request.headers.contentType?.includes("json") == true ? await request.body.readAsJson(readBodyOptions) : void 0;
193
- if ((0, import_type_guards.isDefined)(bodyAsParameters) && !(0, import_type_guards.isObject)(bodyAsParameters)) {
194
- throw new import_bad_request_error.BadRequestError("Expected json object as body.");
161
+ updateMiddleware() {
162
+ const middlewares = [responseTimeMiddleware, corsMiddleware(this.options.cors), allowedMethodsMiddleware, this.catchErrorMiddleware, ...this.middlewares];
163
+ this.handler = composeAsyncMiddleware(middlewares, async (request, context) => this.middlewareHandler(request, context));
195
164
  }
196
- const parameters = { ...request.query.asObject(), ...bodyAsParameters, ...context.resourcePatternResult.pathname.groups };
197
- const validatedParameters = (0, import_type_guards.isDefined)(context.endpoint.definition.parameters) ? import_schema.Schema.parse(context.endpoint.definition.parameters, parameters) : parameters;
198
- const requestContext = {
199
- parameters: validatedParameters,
200
- body,
201
- request,
202
- getToken: async () => this.requestTokenProvider.getToken(requestContext)
203
- };
204
- const result = await context.endpoint.implementation(requestContext);
205
- if (result instanceof import_server.HttpServerResponse) {
206
- return result;
165
+ async middlewareHandler(request, context) {
166
+ const readBodyOptions = { maxBytes: context.endpoint.definition.maxBytes ?? this.options.defaultMaxBytes ?? defaultMaxBytes };
167
+ const body = isDefined(context.endpoint.definition.body)
168
+ ? await this.getBody(request, readBodyOptions, context.endpoint.definition.body)
169
+ : undefined;
170
+ const bodyAsParameters = (isUndefined(context.endpoint.definition.body) && (request.headers.contentType?.includes('json') == true))
171
+ ? await request.body.readAsJson(readBodyOptions)
172
+ : undefined;
173
+ if (isDefined(bodyAsParameters) && !isObject(bodyAsParameters)) {
174
+ throw new BadRequestError('Expected json object as body.');
175
+ }
176
+ const parameters = { ...request.query.asObject(), ...bodyAsParameters, ...context.resourcePatternResult.pathname.groups };
177
+ const validatedParameters = isDefined(context.endpoint.definition.parameters)
178
+ ? Schema.parse(context.endpoint.definition.parameters, parameters)
179
+ : parameters;
180
+ const requestContext = {
181
+ parameters: validatedParameters,
182
+ body,
183
+ request,
184
+ getToken: async () => this.requestTokenProvider.getToken(requestContext)
185
+ };
186
+ const result = await context.endpoint.implementation(requestContext);
187
+ if (result instanceof HttpServerResponse) {
188
+ return result;
189
+ }
190
+ const response = new HttpServerResponse({
191
+ body: isUint8Array(result) ? { buffer: result }
192
+ : isBlob(result) ? { stream: result.stream() }
193
+ : isReadableStream(result) ? { stream: result }
194
+ : (result instanceof ServerSentEventsSource) ? { events: result }
195
+ : (context.endpoint.definition.result == String) ? { text: result }
196
+ : { json: result }
197
+ });
198
+ return response;
207
199
  }
208
- const response = new import_server.HttpServerResponse({
209
- body: (0, import_type_guards.isUint8Array)(result) ? { buffer: result } : (0, import_type_guards.isBlob)(result) ? { stream: result.stream() } : (0, import_type_guards.isReadableStream)(result) ? { stream: result } : result instanceof import_server_sent_events_source.ServerSentEventsSource ? { events: result } : context.endpoint.definition.result == String ? { text: result } : { json: result }
210
- });
211
- return response;
212
- }
213
- async getBody(request, options, schema) {
214
- let body;
215
- if (request.hasBody) {
216
- if (schema == ReadableStream) {
217
- body = request.body.readAsBinaryStream(options);
218
- } else if (schema == Uint8Array) {
219
- body = await request.body.readAsBuffer(options);
220
- } else if (schema == Blob) {
221
- const buffer = await request.body.readAsBuffer(options);
222
- body = new Blob([buffer], { type: request.headers.contentType });
223
- } else if (schema == String) {
224
- body = await request.body.readAsText(options);
225
- } else if (request.headers.contentType?.startsWith("text") == true) {
226
- body = await request.body.readAsText(options);
227
- } else if (request.headers.contentType?.includes("json") == true) {
228
- body = await request.body.readAsJson(options);
229
- } else {
230
- body = await request.body.readAsBuffer(options);
231
- }
200
+ async getBody(request, options, schema) {
201
+ let body;
202
+ if (request.hasBody) {
203
+ if (schema == ReadableStream) {
204
+ body = request.body.readAsBinaryStream(options);
205
+ }
206
+ else if (schema == Uint8Array) {
207
+ body = await request.body.readAsBuffer(options);
208
+ }
209
+ else if (schema == Blob) {
210
+ const buffer = await request.body.readAsBuffer(options);
211
+ body = new Blob([buffer], { type: request.headers.contentType });
212
+ }
213
+ else if (schema == String) {
214
+ body = await request.body.readAsText(options);
215
+ }
216
+ else if (request.headers.contentType?.startsWith('text') == true) {
217
+ body = await request.body.readAsText(options);
218
+ }
219
+ else if (request.headers.contentType?.includes('json') == true) {
220
+ body = await request.body.readAsJson(options);
221
+ }
222
+ else {
223
+ body = await request.body.readAsBuffer(options);
224
+ }
225
+ }
226
+ return Schema.parse(schema, body);
232
227
  }
233
- return import_schema.Schema.parse(schema, body);
234
- }
235
228
  };
236
229
  ApiGateway = __decorate([
237
- (0, import_injector.Singleton)({
238
- defaultArgumentProvider: (context) => context.resolve(import_tokens.API_MODULE_OPTIONS).gatewayOptions
239
- }),
240
- __param(1, (0, import_injector.ResolveArg)("ApiGateway")),
241
- __param(2, (0, import_injector.InjectArg)()),
242
- __metadata("design:paramtypes", [import_api_request_token_provider.ApiRequestTokenProvider, import_logger.Logger, ApiGatewayOptions])
230
+ Singleton({
231
+ defaultArgumentProvider: (context) => context.resolve(API_MODULE_OPTIONS).gatewayOptions
232
+ }),
233
+ __param(1, ResolveArg('ApiGateway')),
234
+ __param(2, InjectArg()),
235
+ __metadata("design:paramtypes", [ApiRequestTokenProvider, Logger, ApiGatewayOptions])
243
236
  ], ApiGateway);
237
+ export { ApiGateway };
@@ -1,22 +1,5 @@
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 server_exports = {};
17
- module.exports = __toCommonJS(server_exports);
18
- __reExport(server_exports, require("./api-controller.js"), module.exports);
19
- __reExport(server_exports, require("./api-request-token.provider.js"), module.exports);
20
- __reExport(server_exports, require("./gateway.js"), module.exports);
21
- __reExport(server_exports, require("./module.js"), module.exports);
22
- __reExport(server_exports, require("./tokens.js"), module.exports);
1
+ export * from './api-controller.js';
2
+ export * from './api-request-token.provider.js';
3
+ export * from './gateway.js';
4
+ export * from './module.js';
5
+ export * from './tokens.js';
@@ -1,42 +1,19 @@
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 allowed_methods_middleware_exports = {};
20
- __export(allowed_methods_middleware_exports, {
21
- allowedMethodsMiddleware: () => allowedMethodsMiddleware
22
- });
23
- module.exports = __toCommonJS(allowed_methods_middleware_exports);
24
- var import_method_not_allowed_error = require("../../../error/method-not-allowed.error.js");
25
- var import_server = require("../../../http/server/index.js");
26
- var import_type_guards = require("../../../utils/type-guards.js");
27
- async function allowedMethodsMiddleware(request, next, context) {
28
- if (request.method != "OPTIONS") {
29
- if ((0, import_type_guards.isUndefined)(context.endpoint)) {
30
- throw new import_method_not_allowed_error.MethodNotAllowedError(`Method ${request.method} for resource ${context.api.resource} not available.`);
1
+ import { MethodNotAllowedError } from '../../../error/method-not-allowed.error.js';
2
+ import { HttpServerResponse } from '../../../http/server/index.js';
3
+ import { isUndefined } from '../../../utils/type-guards.js';
4
+ export async function allowedMethodsMiddleware(request, next, context) {
5
+ if (request.method != 'OPTIONS') {
6
+ if (isUndefined(context.endpoint)) {
7
+ throw new MethodNotAllowedError(`Method ${request.method} for resource ${context.api.resource} not available.`);
8
+ }
9
+ return next(request);
31
10
  }
32
- return next(request);
33
- }
34
- const allowMethods = [...context.api.endpoints.keys()].join(", ");
35
- return import_server.HttpServerResponse.fromObject({
36
- statusCode: 204,
37
- statusMessage: "No Content",
38
- headers: {
39
- Allow: allowMethods
40
- }
41
- });
11
+ const allowMethods = [...context.api.endpoints.keys()].join(', ');
12
+ return HttpServerResponse.fromObject({
13
+ statusCode: 204,
14
+ statusMessage: 'No Content',
15
+ headers: {
16
+ Allow: allowMethods
17
+ }
18
+ });
42
19
  }
@@ -1,35 +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 __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 catch_error_middleware_exports = {};
20
- __export(catch_error_middleware_exports, {
21
- catchErrorMiddleware: () => catchErrorMiddleware
22
- });
23
- module.exports = __toCommonJS(catch_error_middleware_exports);
24
- var import_error_handler = require("../error-handler.js");
25
- function catchErrorMiddleware(supressedErrors, logger) {
26
- async function catchErrorMiddleware2(request, next) {
27
- try {
28
- const response = await next(request);
29
- return response;
30
- } catch (error) {
31
- return (0, import_error_handler.handleApiError)(error, supressedErrors, logger);
1
+ import { handleApiError } from '../error-handler.js';
2
+ export function catchErrorMiddleware(supressedErrors, logger) {
3
+ // eslint-disable-next-line @typescript-eslint/no-shadow
4
+ async function catchErrorMiddleware(request, next) {
5
+ try {
6
+ const response = await next(request);
7
+ return response;
8
+ }
9
+ catch (error) {
10
+ return handleApiError(error, supressedErrors, logger);
11
+ }
32
12
  }
33
- }
34
- return catchErrorMiddleware2;
13
+ return catchErrorMiddleware;
35
14
  }