@tstdl/base 0.85.14 → 0.86.0-beta2

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