@tstdl/base 0.87.12 → 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 -128
  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,137 +1,121 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var client_exports = {};
20
- __export(client_exports, {
21
- apiDefinitionSymbol: () => apiDefinitionSymbol,
22
- compileClient: () => compileClient,
23
- httpClientSymbol: () => httpClientSymbol
24
- });
25
- module.exports = __toCommonJS(client_exports);
26
- var import_client = require("../../http/client/index.js");
27
- var import_types = require("../../http/types.js");
28
- var import_inject = require("../../injector/inject.js");
29
- var import_injector = require("../../injector/injector.js");
30
- var import_interfaces = require("../../injector/interfaces.js");
31
- var import_schema = require("../../schema/index.js");
32
- var import_server_sent_events = require("../../sse/server-sent-events.js");
33
- var import_array = require("../../utils/array/array.js");
34
- var import_object = require("../../utils/object/object.js");
35
- var import_title_case = require("../../utils/string/title-case.js");
36
- var import_type_guards = require("../../utils/type-guards.js");
37
- var import_url_builder = require("../../utils/url-builder.js");
38
- var import_types2 = require("../types.js");
39
- var import_utils = require("../utils.js");
40
- const httpClientSymbol = Symbol("ApiTransport");
41
- const apiDefinitionSymbol = Symbol("ApiDefinition");
42
- function compileClient(definition, options = {}) {
43
- const { resource: path, endpoints } = definition;
44
- const constructedApiName = (0, import_title_case.toTitleCase)(path[0] ?? "");
45
- const apiName = `${constructedApiName}ApiClient`;
46
- const api = {
47
- [apiName]: class {
48
- [httpClientSymbol];
49
- [apiDefinitionSymbol];
50
- constructor(httpClientOrOptions) {
51
- this[httpClientSymbol] = httpClientOrOptions instanceof import_client.HttpClient ? httpClientOrOptions : (0, import_inject.inject)(import_client.HttpClient, httpClientOrOptions);
52
- this[apiDefinitionSymbol] = definition;
53
- }
54
- }
55
- }[apiName];
56
- import_injector.Injector.registerSingleton(api, {
57
- useFactory: (argument, context) => {
58
- const httpClient = argument instanceof import_client.HttpClient ? argument : context.resolve(import_client.HttpClient, argument ?? options.defaultHttpClientOptions);
59
- return new api(httpClient);
60
- }
61
- });
62
- const endpointsEntries = (0, import_types2.normalizedApiDefinitionEndpointsEntries)(endpoints);
63
- for (const [name, endpoint] of endpointsEntries) {
64
- const methods = (0, import_type_guards.isArray)(endpoint.method) ? endpoint.method : [endpoint.method ?? "GET"];
65
- const resource = (0, import_utils.getFullApiEndpointResource)({ api: definition, endpoint, defaultPrefix: options.prefix });
66
- const hasGet = methods.includes("GET");
67
- const fallbackMethod = methods.filter((method) => method != "GET")[0] ?? "GET";
68
- const apiEndpointFunction = {
69
- async [name](parameters, requestBody) {
70
- const context = { endpoint };
71
- const method = hasGet && (0, import_type_guards.isUndefined)(parameters) ? "GET" : fallbackMethod;
72
- if (endpoint.result == import_server_sent_events.ServerSentEvents) {
73
- if ((0, import_type_guards.isDefined)(requestBody)) {
74
- throw new Error("Body not supported for Server Sent Events.");
75
- }
76
- return getServerSentEvents(this[httpClientSymbol].options.baseUrl, resource, endpoint, parameters);
1
+ import { HttpClient, HttpClientRequest } from '../../http/client/index.js';
2
+ import { normalizeSingleHttpValue } from '../../http/types.js';
3
+ import { inject } from '../../injector/inject.js';
4
+ import { Injector } from '../../injector/injector.js';
5
+ import { resolveArgumentType } from '../../injector/interfaces.js';
6
+ import { Schema } from '../../schema/index.js';
7
+ import { ServerSentEvents } from '../../sse/server-sent-events.js';
8
+ import { toArray } from '../../utils/array/array.js';
9
+ import { objectEntries } from '../../utils/object/object.js';
10
+ import { toTitleCase } from '../../utils/string/title-case.js';
11
+ import { isArray, isBlob, isDefined, isObject, isReadableStream, isString, isUint8Array, isUndefined } from '../../utils/type-guards.js';
12
+ import { buildUrl } from '../../utils/url-builder.js';
13
+ import { normalizedApiDefinitionEndpointsEntries } from '../types.js';
14
+ import { getFullApiEndpointResource } from '../utils.js';
15
+ export const httpClientSymbol = Symbol('ApiTransport');
16
+ export const apiDefinitionSymbol = Symbol('ApiDefinition');
17
+ // eslint-disable-next-line max-lines-per-function
18
+ export function compileClient(definition, options = {}) {
19
+ const { resource: path, endpoints } = definition;
20
+ const constructedApiName = toTitleCase(path[0] ?? '');
21
+ const apiName = `${constructedApiName}ApiClient`;
22
+ const api = {
23
+ [apiName]: class {
24
+ [httpClientSymbol];
25
+ [apiDefinitionSymbol];
26
+ constructor(httpClientOrOptions) {
27
+ this[httpClientSymbol] = (httpClientOrOptions instanceof HttpClient) ? httpClientOrOptions : inject(HttpClient, httpClientOrOptions);
28
+ this[apiDefinitionSymbol] = definition;
29
+ }
30
+ }
31
+ }[apiName];
32
+ Injector.registerSingleton(api, {
33
+ useFactory: (argument, context) => {
34
+ const httpClient = (argument instanceof HttpClient) ? argument : context.resolve(HttpClient, argument ?? options.defaultHttpClientOptions);
35
+ return new api(httpClient);
77
36
  }
78
- const request = new import_client.HttpClientRequest({
79
- method,
80
- url: resource,
81
- parameters,
82
- body: getRequestBody(requestBody),
83
- credentials: endpoint.credentials == true ? "include" : void 0,
84
- context
85
- });
86
- const response = await this[httpClientSymbol].rawRequest(request);
87
- return getResponseBody(response, endpoint.result);
88
- }
89
- }[name];
90
- Object.defineProperty(api.prototype, name, {
91
- enumerable: true,
92
- configurable: true,
93
- writable: true,
94
- value: apiEndpointFunction
95
37
  });
96
- }
97
- return api;
38
+ const endpointsEntries = normalizedApiDefinitionEndpointsEntries(endpoints);
39
+ for (const [name, endpoint] of endpointsEntries) {
40
+ const methods = isArray(endpoint.method) ? endpoint.method : [endpoint.method ?? 'GET'];
41
+ const resource = getFullApiEndpointResource({ api: definition, endpoint, defaultPrefix: options.prefix });
42
+ const hasGet = methods.includes('GET');
43
+ const fallbackMethod = methods.filter((method) => method != 'GET')[0] ?? 'GET';
44
+ const apiEndpointFunction = {
45
+ async [name](parameters, requestBody) {
46
+ const context = { endpoint };
47
+ const method = (hasGet && isUndefined(parameters)) ? 'GET' : fallbackMethod;
48
+ if (endpoint.result == ServerSentEvents) {
49
+ if (isDefined(requestBody)) {
50
+ throw new Error('Body not supported for Server Sent Events.');
51
+ }
52
+ return getServerSentEvents(this[httpClientSymbol].options.baseUrl, resource, endpoint, parameters);
53
+ }
54
+ const request = new HttpClientRequest({
55
+ method,
56
+ url: resource,
57
+ parameters,
58
+ body: getRequestBody(requestBody),
59
+ credentials: (endpoint.credentials == true) ? 'include' : undefined,
60
+ context
61
+ });
62
+ const response = await this[httpClientSymbol].rawRequest(request);
63
+ return getResponseBody(response, endpoint.result);
64
+ }
65
+ }[name];
66
+ Object.defineProperty(api.prototype, name, {
67
+ enumerable: true,
68
+ configurable: true,
69
+ writable: true,
70
+ value: apiEndpointFunction
71
+ });
72
+ }
73
+ return api;
98
74
  }
99
75
  function getRequestBody(body) {
100
- if ((0, import_type_guards.isUndefined)(body)) {
101
- return void 0;
102
- }
103
- if ((0, import_type_guards.isUint8Array)(body)) {
104
- return { buffer: body };
105
- }
106
- if ((0, import_type_guards.isReadableStream)(body)) {
107
- return { stream: body };
108
- }
109
- if ((0, import_type_guards.isBlob)(body)) {
110
- return { blob: body };
111
- }
112
- if ((0, import_type_guards.isString)(body)) {
113
- return { text: body };
114
- }
115
- return { json: body };
76
+ if (isUndefined(body)) {
77
+ return undefined;
78
+ }
79
+ if (isUint8Array(body)) {
80
+ return { buffer: body };
81
+ }
82
+ if (isReadableStream(body)) {
83
+ return { stream: body };
84
+ }
85
+ if (isBlob(body)) {
86
+ return { blob: body };
87
+ }
88
+ if (isString(body)) {
89
+ return { text: body };
90
+ }
91
+ return { json: body };
116
92
  }
117
93
  async function getResponseBody(response, schema) {
118
- if ((0, import_type_guards.isUndefined)(schema)) {
119
- response.close();
120
- return void 0;
121
- }
122
- const body = response.hasBody ? schema == ReadableStream ? response.body.readAsBinaryStream() : schema == Uint8Array ? await response.body.readAsBuffer() : schema == String ? await response.body.readAsText() : await response.body.read() : void 0;
123
- return import_schema.Schema.parse(schema, body, { mask: true });
94
+ if (isUndefined(schema)) {
95
+ response.close();
96
+ return undefined;
97
+ }
98
+ const body = response.hasBody
99
+ ? (schema == ReadableStream)
100
+ ? response.body.readAsBinaryStream()
101
+ : (schema == Uint8Array)
102
+ ? await response.body.readAsBuffer()
103
+ : (schema == String)
104
+ ? await response.body.readAsText()
105
+ : await response.body.read()
106
+ : undefined;
107
+ return Schema.parse(schema, body, { mask: true });
124
108
  }
125
109
  function getServerSentEvents(baseUrl, resource, endpoint, parameters) {
126
- const { parsedUrl, parametersRest } = (0, import_url_builder.buildUrl)(resource, parameters, { arraySeparator: "," });
127
- const url = new URL(parsedUrl, baseUrl);
128
- for (const [parameter, value] of (0, import_object.objectEntries)(parametersRest)) {
129
- for (const val of (0, import_array.toArray)(value)) {
130
- if ((0, import_type_guards.isUndefined)(val) || (0, import_type_guards.isObject)(val)) {
131
- continue;
132
- }
133
- url.searchParams.append(parameter, (0, import_types.normalizeSingleHttpValue)(val));
110
+ const { parsedUrl, parametersRest } = buildUrl(resource, parameters, { arraySeparator: ',' });
111
+ const url = new URL(parsedUrl, baseUrl);
112
+ for (const [parameter, value] of objectEntries(parametersRest)) {
113
+ for (const val of toArray(value)) {
114
+ if (isUndefined(val) || isObject(val)) {
115
+ continue;
116
+ }
117
+ url.searchParams.append(parameter, normalizeSingleHttpValue(val));
118
+ }
134
119
  }
135
- }
136
- return new import_server_sent_events.ServerSentEvents(url.toString(), { withCredentials: endpoint.credentials });
120
+ return new ServerSentEvents(url.toString(), { withCredentials: endpoint.credentials });
137
121
  }
@@ -1,18 +1 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __copyProps = (to, from, except, desc) => {
7
- if (from && typeof from === "object" || typeof from === "function") {
8
- for (let key of __getOwnPropNames(from))
9
- if (!__hasOwnProp.call(to, key) && key !== except)
10
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
- }
12
- return to;
13
- };
14
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
- var client_exports = {};
17
- module.exports = __toCommonJS(client_exports);
18
- __reExport(client_exports, require("./client.js"), module.exports);
1
+ export * from './client.js';
@@ -1,48 +1,22 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var default_error_handlers_exports = {};
20
- __export(default_error_handlers_exports, {
21
- deserializeInnerSchemaError: () => deserializeInnerSchemaError,
22
- deserializeSchemaError: () => deserializeSchemaError,
23
- serializeInnerSchemaError: () => serializeInnerSchemaError,
24
- serializeSchemaError: () => serializeSchemaError
25
- });
26
- module.exports = __toCommonJS(default_error_handlers_exports);
27
- var import_schema = require("../schema/index.js");
28
- var import_type_guards = require("../utils/type-guards.js");
29
- function serializeSchemaError(error) {
30
- return {
31
- path: error.path,
32
- details: error.details,
33
- inner: (0, import_type_guards.isDefined)(error.inner) ? (0, import_type_guards.isArray)(error.inner) ? error.inner.map(serializeInnerSchemaError) : serializeInnerSchemaError(error.inner) : void 0
34
- };
1
+ import { SchemaError } from '../schema/index.js';
2
+ import { isArray, isDefined } from '../utils/type-guards.js';
3
+ export function serializeSchemaError(error) {
4
+ return {
5
+ path: error.path,
6
+ details: error.details,
7
+ inner: isDefined(error.inner) ? isArray(error.inner) ? error.inner.map(serializeInnerSchemaError) : serializeInnerSchemaError(error.inner) : undefined
8
+ };
35
9
  }
36
- function serializeInnerSchemaError(error) {
37
- return {
38
- message: error.message,
39
- ...serializeSchemaError(error)
40
- };
10
+ export function serializeInnerSchemaError(error) {
11
+ return {
12
+ message: error.message,
13
+ ...serializeSchemaError(error)
14
+ };
41
15
  }
42
- function deserializeSchemaError(message, data) {
43
- const inner = (0, import_type_guards.isDefined)(data.inner) ? (0, import_type_guards.isArray)(data.inner) ? data.inner.map(deserializeInnerSchemaError) : deserializeInnerSchemaError(data.inner) : void 0;
44
- return new import_schema.SchemaError(message, { path: data.path, details: data.details, inner });
16
+ export function deserializeSchemaError(message, data) {
17
+ const inner = isDefined(data.inner) ? isArray(data.inner) ? data.inner.map(deserializeInnerSchemaError) : deserializeInnerSchemaError(data.inner) : undefined;
18
+ return new SchemaError(message, { path: data.path, details: data.details, inner });
45
19
  }
46
- function deserializeInnerSchemaError(data) {
47
- return deserializeSchemaError(data.message, data);
20
+ export function deserializeInnerSchemaError(data) {
21
+ return deserializeSchemaError(data.message, data);
48
22
  }
package/api/index.js CHANGED
@@ -1,20 +1,14 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __copyProps = (to, from, except, desc) => {
7
- if (from && typeof from === "object" || typeof from === "function") {
8
- for (let key of __getOwnPropNames(from))
9
- if (!__hasOwnProp.call(to, key) && key !== except)
10
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
- }
12
- return to;
13
- };
14
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
- var api_exports = {};
17
- module.exports = __toCommonJS(api_exports);
18
- __reExport(api_exports, require("./default-error-handlers.js"), module.exports);
19
- __reExport(api_exports, require("./response.js"), module.exports);
20
- __reExport(api_exports, require("./types.js"), module.exports);
1
+ /**
2
+ * Module for creating and consuming HTTP apis with built-in support for validation and error handling.
3
+ *
4
+ * This module contains types and functions to define and register apis and error handlers.
5
+ *
6
+ * Consumers of these definitions are [client](api_client.html) and [server](api_server.html).
7
+ *
8
+ * A basic example with a working minimal api server and client can be found in `source/examples/api/basic-overview.ts`
9
+ *
10
+ * @module
11
+ */
12
+ export * from './default-error-handlers.js';
13
+ export * from './response.js';
14
+ export * from './types.js';
package/api/response.js CHANGED
@@ -1,136 +1,112 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var response_exports = {};
20
- __export(response_exports, {
21
- createErrorResponse: () => createErrorResponse,
22
- createResultResponse: () => createResultResponse,
23
- getErrorStatusCode: () => getErrorStatusCode,
24
- hasErrorHandler: () => hasErrorHandler,
25
- isErrorResponse: () => isErrorResponse,
26
- isResponse: () => isResponse,
27
- isResultResponse: () => isResultResponse,
28
- parseErrorResponse: () => parseErrorResponse,
29
- parseResponse: () => parseResponse,
30
- registerErrorHandler: () => registerErrorHandler
31
- });
32
- module.exports = __toCommonJS(response_exports);
33
- var import_secret_requirements_error = require("../authentication/errors/secret-requirements.error.js");
34
- var import_schema_error = require("../schema/schema.error.js");
35
- var import_error = require("../error/index.js");
36
- var import_type_guards = require("../utils/type-guards.js");
37
- var import_default_error_handlers = require("./default-error-handlers.js");
38
- const errorHandlers = /* @__PURE__ */ new Map();
39
- function registerErrorHandler(constructor, statusCode, serializer, deserializer) {
40
- (0, import_type_guards.assertString)(constructor.errorName, "static property 'errorName' missing.");
41
- if (errorHandlers.has(constructor.errorName)) {
42
- throw new Error(`A handler for ${constructor.errorName} already registered.`);
43
- }
44
- errorHandlers.set(constructor.errorName, { statusCode, serializer, deserializer });
1
+ import { SecretRequirementsError } from '../authentication/errors/secret-requirements.error.js';
2
+ import { SchemaError } from '../schema/schema.error.js';
3
+ import { ApiError, BadRequestError, ForbiddenError, InvalidTokenError, MaxBytesExceededError, MethodNotAllowedError, NotFoundError, NotImplementedError, NotSupportedError, UnauthorizedError, UnsupportedMediaTypeError } from '../error/index.js';
4
+ import { assertString, isDefined, isFunction, isObject, isString } from '../utils/type-guards.js';
5
+ import { deserializeSchemaError, serializeSchemaError } from './default-error-handlers.js';
6
+ const errorHandlers = new Map();
7
+ export function registerErrorHandler(constructor, statusCode, serializer, deserializer) {
8
+ assertString(constructor.errorName, 'static property \'errorName\' missing.');
9
+ if (errorHandlers.has(constructor.errorName)) {
10
+ throw new Error(`A handler for ${constructor.errorName} already registered.`);
11
+ }
12
+ errorHandlers.set(constructor.errorName, { statusCode, serializer, deserializer });
45
13
  }
46
- function hasErrorHandler(constructor) {
47
- const name = (0, import_type_guards.isFunction)(constructor) ? constructor.errorName : (0, import_type_guards.isString)(constructor) ? constructor : isErrorResponse(constructor) ? constructor.error.name : void 0;
48
- return errorHandlers.has(name);
14
+ export function hasErrorHandler(constructor) {
15
+ const name = isFunction(constructor)
16
+ ? constructor.errorName
17
+ : isString(constructor)
18
+ ? constructor
19
+ : isErrorResponse(constructor)
20
+ ? constructor.error.name
21
+ : undefined;
22
+ return errorHandlers.has(name);
49
23
  }
50
- function getErrorStatusCode(error, defaultStatusCode = 500) {
51
- return errorHandlers.get(error.name)?.statusCode ?? defaultStatusCode;
24
+ export function getErrorStatusCode(error, defaultStatusCode = 500) {
25
+ return errorHandlers.get(error.name)?.statusCode ?? defaultStatusCode;
52
26
  }
53
- function createResultResponse(result) {
54
- const response = {
55
- result
56
- };
57
- return response;
27
+ export function createResultResponse(result) {
28
+ const response = {
29
+ result
30
+ };
31
+ return response;
58
32
  }
59
- function createErrorResponse(errorOrName, message = "", details) {
60
- let response;
61
- if (errorOrName instanceof Error) {
62
- const handler = errorHandlers.get(errorOrName.name);
63
- if (handler != void 0) {
64
- const data = handler.serializer(errorOrName);
65
- response = {
66
- error: {
67
- name: errorOrName.name,
68
- message: errorOrName.message,
69
- details,
70
- data
33
+ export function createErrorResponse(errorOrName, message = '', details) {
34
+ let response;
35
+ if (errorOrName instanceof Error) {
36
+ const handler = errorHandlers.get(errorOrName.name);
37
+ if (handler != undefined) {
38
+ const data = handler.serializer(errorOrName);
39
+ response = {
40
+ error: {
41
+ name: errorOrName.name,
42
+ message: errorOrName.message,
43
+ details,
44
+ data
45
+ }
46
+ };
71
47
  }
72
- };
73
- } else {
74
- response = {
75
- error: {
76
- name: errorOrName.name,
77
- message: errorOrName.message,
78
- details
48
+ else {
49
+ response = {
50
+ error: {
51
+ name: errorOrName.name,
52
+ message: errorOrName.message,
53
+ details
54
+ }
55
+ };
79
56
  }
80
- };
81
57
  }
82
- } else {
83
- response = {
84
- error: {
85
- name: errorOrName,
86
- message,
87
- details
88
- }
89
- };
90
- }
91
- return response;
58
+ else {
59
+ response = {
60
+ error: {
61
+ name: errorOrName,
62
+ message,
63
+ details
64
+ }
65
+ };
66
+ }
67
+ return response;
92
68
  }
93
- function parseResponse(response) {
94
- if (isResultResponse(response)) {
95
- return response.result;
96
- }
97
- if (isErrorResponse(response)) {
98
- throw parseErrorResponse(response);
99
- }
100
- throw new Error("Unsupported response.");
69
+ export function parseResponse(response) {
70
+ if (isResultResponse(response)) {
71
+ return response.result;
72
+ }
73
+ if (isErrorResponse(response)) {
74
+ throw parseErrorResponse(response);
75
+ }
76
+ throw new Error('Unsupported response.');
101
77
  }
102
- function parseErrorResponse(response, fallbackToGenericApiError = true) {
103
- const handler = errorHandlers.get(response.error.name);
104
- if (handler != void 0) {
105
- const error = handler.deserializer(response.error.data, response.error);
106
- return error;
107
- }
108
- if (!fallbackToGenericApiError) {
109
- return void 0;
110
- }
111
- return new import_error.ApiError(response);
78
+ export function parseErrorResponse(response, fallbackToGenericApiError = true) {
79
+ const handler = errorHandlers.get(response.error.name);
80
+ if (handler != undefined) {
81
+ const error = handler.deserializer(response.error.data, response.error);
82
+ return error;
83
+ }
84
+ if (!fallbackToGenericApiError) {
85
+ return undefined;
86
+ }
87
+ return new ApiError(response);
112
88
  }
113
- function isResultResponse(response) {
114
- const hasResult = (0, import_type_guards.isObject)(response) && (0, import_type_guards.isDefined)(response.result);
115
- return hasResult;
89
+ export function isResultResponse(response) {
90
+ const hasResult = isObject(response) && isDefined(response.result);
91
+ return hasResult;
116
92
  }
117
- function isErrorResponse(response) {
118
- const hasError = (0, import_type_guards.isObject)(response) && (0, import_type_guards.isDefined)(response.error);
119
- return hasError;
93
+ export function isErrorResponse(response) {
94
+ const hasError = isObject(response) && isDefined(response.error);
95
+ return hasError;
120
96
  }
121
- function isResponse(obj) {
122
- return isResultResponse(obj) || isErrorResponse(obj);
97
+ export function isResponse(obj) {
98
+ return (isResultResponse(obj) || isErrorResponse(obj));
123
99
  }
124
- registerErrorHandler(import_error.ApiError, 400, ({ response }) => response, (response) => new import_error.ApiError(response));
125
- registerErrorHandler(import_error.BadRequestError, 400, () => void 0, (_, error) => new import_error.BadRequestError(error.message));
126
- registerErrorHandler(import_error.ForbiddenError, 403, () => void 0, (_, error) => new import_error.ForbiddenError(error.message));
127
- registerErrorHandler(import_error.InvalidTokenError, 401, () => void 0, (_, error) => new import_error.InvalidTokenError(error.message));
128
- registerErrorHandler(import_error.MaxBytesExceededError, 400, () => void 0, (_, error) => new import_error.MaxBytesExceededError(error.message));
129
- registerErrorHandler(import_error.NotFoundError, 404, () => void 0, (_, error) => new import_error.NotFoundError(error.message));
130
- registerErrorHandler(import_error.NotImplementedError, 501, () => void 0, (_, error) => new import_error.NotImplementedError(error.message));
131
- registerErrorHandler(import_error.NotSupportedError, 400, () => void 0, (_, error) => new import_error.NotSupportedError(error.message));
132
- registerErrorHandler(import_error.UnauthorizedError, 401, () => void 0, (_, error) => new import_error.UnauthorizedError(error.message));
133
- registerErrorHandler(import_error.MethodNotAllowedError, 405, () => void 0, (_, error) => new import_error.MethodNotAllowedError(error.message));
134
- registerErrorHandler(import_error.UnsupportedMediaTypeError, 415, () => void 0, (_, error) => new import_error.UnsupportedMediaTypeError(error.message));
135
- registerErrorHandler(import_schema_error.SchemaError, 400, import_default_error_handlers.serializeSchemaError, (data, error) => (0, import_default_error_handlers.deserializeSchemaError)(error.message, data));
136
- registerErrorHandler(import_secret_requirements_error.SecretRequirementsError, 403, () => void 0, (_, error) => new import_secret_requirements_error.SecretRequirementsError(error.message));
100
+ registerErrorHandler(ApiError, 400, ({ response }) => response, (response) => new ApiError(response));
101
+ registerErrorHandler(BadRequestError, 400, () => undefined, (_, error) => new BadRequestError(error.message));
102
+ registerErrorHandler(ForbiddenError, 403, () => undefined, (_, error) => new ForbiddenError(error.message));
103
+ registerErrorHandler(InvalidTokenError, 401, () => undefined, (_, error) => new InvalidTokenError(error.message));
104
+ registerErrorHandler(MaxBytesExceededError, 400, () => undefined, (_, error) => new MaxBytesExceededError(error.message));
105
+ registerErrorHandler(NotFoundError, 404, () => undefined, (_, error) => new NotFoundError(error.message));
106
+ registerErrorHandler(NotImplementedError, 501, () => undefined, (_, error) => new NotImplementedError(error.message));
107
+ registerErrorHandler(NotSupportedError, 400, () => undefined, (_, error) => new NotSupportedError(error.message));
108
+ registerErrorHandler(UnauthorizedError, 401, () => undefined, (_, error) => new UnauthorizedError(error.message));
109
+ registerErrorHandler(MethodNotAllowedError, 405, () => undefined, (_, error) => new MethodNotAllowedError(error.message));
110
+ registerErrorHandler(UnsupportedMediaTypeError, 415, () => undefined, (_, error) => new UnsupportedMediaTypeError(error.message));
111
+ registerErrorHandler(SchemaError, 400, serializeSchemaError, (data, error) => deserializeSchemaError(error.message, data));
112
+ registerErrorHandler(SecretRequirementsError, 403, () => undefined, (_, error) => new SecretRequirementsError(error.message));