@tstdl/base 0.85.13 → 0.86.0-beta1

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 (724) 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 +11 -11
  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.d.ts +1 -0
  499. package/signals/index.js +7 -23
  500. package/signals/pipe.js +7 -31
  501. package/signals/switch-map.js +4 -27
  502. package/signals/types.js +1 -16
  503. package/signals/untracked-operator.d.ts +3 -0
  504. package/signals/untracked-operator.js +12 -0
  505. package/sse/index.js +2 -19
  506. package/sse/model.js +1 -16
  507. package/sse/server-sent-events-source.js +54 -76
  508. package/sse/server-sent-events.js +48 -72
  509. package/supports.js +5 -32
  510. package/templates/index.js +9 -26
  511. package/templates/module.js +37 -58
  512. package/templates/providers/file.template-provider.js +39 -81
  513. package/templates/providers/memory.template-provider.js +27 -55
  514. package/templates/renderers/handlebars.template-renderer.js +84 -122
  515. package/templates/renderers/jsx.template-renderer.js +28 -56
  516. package/templates/renderers/mjml.template-renderer.js +42 -82
  517. package/templates/renderers/string.template-renderer.js +24 -52
  518. package/templates/resolvers/file.template-resolver.js +45 -89
  519. package/templates/resolvers/jsx.template-resolver.js +29 -59
  520. package/templates/resolvers/string.template-resolver.js +29 -59
  521. package/templates/template-renderer.provider.js +36 -66
  522. package/templates/template-resolver.provider.js +36 -66
  523. package/templates/template.model.js +39 -69
  524. package/templates/template.provider.js +1 -24
  525. package/templates/template.renderer.js +11 -34
  526. package/templates/template.resolver.js +1 -24
  527. package/templates/template.service.js +49 -82
  528. package/templates/tokens.js +3 -27
  529. package/templates/types/jsx.intrinsic-elements.js +1 -16
  530. package/text/dynamic-text.model.js +41 -70
  531. package/text/index.js +3 -20
  532. package/text/localizable-text.model.js +1 -16
  533. package/text/localization.service.js +196 -229
  534. package/theme/adapters/css-adapter.js +23 -46
  535. package/theme/adapters/tailwind-adapter.js +29 -52
  536. package/theme/index.js +1 -18
  537. package/theme/theme-service.js +107 -146
  538. package/threading/index.js +2 -19
  539. package/threading/thread-pool.js +48 -70
  540. package/threading/thread-worker.js +3 -26
  541. package/tokens.js +2 -25
  542. package/types/geo-json.js +1 -16
  543. package/types.js +2 -16
  544. package/utils/alphabet.js +12 -35
  545. package/utils/any-iterable-iterator.js +4 -27
  546. package/utils/array/array-backtracker.js +42 -65
  547. package/utils/array/array.js +76 -79
  548. package/utils/array/index.js +2 -19
  549. package/utils/async-iterable-helpers/all.js +25 -46
  550. package/utils/async-iterable-helpers/any.js +25 -46
  551. package/utils/async-iterable-helpers/assert.js +22 -43
  552. package/utils/async-iterable-helpers/batch.js +26 -46
  553. package/utils/async-iterable-helpers/buffer.js +47 -64
  554. package/utils/async-iterable-helpers/concat.js +5 -27
  555. package/utils/async-iterable-helpers/default-if-empty.js +9 -32
  556. package/utils/async-iterable-helpers/deferred.js +3 -26
  557. package/utils/async-iterable-helpers/difference.js +24 -48
  558. package/utils/async-iterable-helpers/distinct.js +23 -44
  559. package/utils/async-iterable-helpers/drain.js +4 -26
  560. package/utils/async-iterable-helpers/filter.js +23 -44
  561. package/utils/async-iterable-helpers/first-or-default.js +8 -30
  562. package/utils/async-iterable-helpers/first.js +8 -30
  563. package/utils/async-iterable-helpers/for-each.js +18 -38
  564. package/utils/async-iterable-helpers/group-single.js +3 -26
  565. package/utils/async-iterable-helpers/group-to-map.js +20 -41
  566. package/utils/async-iterable-helpers/group-to-single-map.js +23 -44
  567. package/utils/async-iterable-helpers/group.js +3 -26
  568. package/utils/async-iterable-helpers/includes.js +7 -28
  569. package/utils/async-iterable-helpers/index.js +48 -65
  570. package/utils/async-iterable-helpers/interrupt.js +19 -43
  571. package/utils/async-iterable-helpers/is-async-iterable.js +5 -29
  572. package/utils/async-iterable-helpers/last-or-default.js +13 -36
  573. package/utils/async-iterable-helpers/last.js +13 -36
  574. package/utils/async-iterable-helpers/map-many.js +19 -40
  575. package/utils/async-iterable-helpers/map.js +19 -40
  576. package/utils/async-iterable-helpers/materialize.js +21 -42
  577. package/utils/async-iterable-helpers/metadata.js +38 -58
  578. package/utils/async-iterable-helpers/multiplex.js +23 -44
  579. package/utils/async-iterable-helpers/observable-iterable.js +31 -53
  580. package/utils/async-iterable-helpers/pairwise.js +26 -44
  581. package/utils/async-iterable-helpers/parallel/feed.js +24 -45
  582. package/utils/async-iterable-helpers/parallel/filter.js +8 -31
  583. package/utils/async-iterable-helpers/parallel/for-each.js +21 -44
  584. package/utils/async-iterable-helpers/parallel/group.js +9 -32
  585. package/utils/async-iterable-helpers/parallel/index.js +7 -24
  586. package/utils/async-iterable-helpers/parallel/map.js +6 -29
  587. package/utils/async-iterable-helpers/parallel/tap.js +6 -29
  588. package/utils/async-iterable-helpers/parallel/types.js +1 -16
  589. package/utils/async-iterable-helpers/reduce.js +31 -46
  590. package/utils/async-iterable-helpers/retry.js +43 -58
  591. package/utils/async-iterable-helpers/single-or-default.js +17 -40
  592. package/utils/async-iterable-helpers/single.js +19 -42
  593. package/utils/async-iterable-helpers/skip.js +3 -26
  594. package/utils/async-iterable-helpers/sort.js +6 -29
  595. package/utils/async-iterable-helpers/take-until.js +32 -49
  596. package/utils/async-iterable-helpers/take-while.js +29 -46
  597. package/utils/async-iterable-helpers/take.js +10 -33
  598. package/utils/async-iterable-helpers/tap.js +19 -40
  599. package/utils/async-iterable-helpers/throttle.js +9 -30
  600. package/utils/async-iterable-helpers/to-array.js +10 -33
  601. package/utils/async-iterable-helpers/to-async-iterable-iterator.js +40 -59
  602. package/utils/async-iterable-helpers/to-async-iterator.js +32 -54
  603. package/utils/async-iterable-helpers/to-set.js +10 -33
  604. package/utils/async-iterable-helpers/to-sync-iterable.js +6 -27
  605. package/utils/async-iterable-helpers/types.js +1 -16
  606. package/utils/async-iterable-helpers/while.js +25 -46
  607. package/utils/async-iterator-iterable-iterator.js +41 -62
  608. package/utils/backoff.js +109 -109
  609. package/utils/base64.js +153 -140
  610. package/utils/benchmark.js +114 -107
  611. package/utils/binary-search.js +70 -87
  612. package/utils/binary.js +50 -61
  613. package/utils/cancellation-token.js +120 -140
  614. package/utils/clone.js +43 -64
  615. package/utils/comparison.js +76 -98
  616. package/utils/compression.js +107 -118
  617. package/utils/config-parser.js +21 -48
  618. package/utils/crc32.js +20 -42
  619. package/utils/cryptography.js +163 -121
  620. package/utils/date-time.js +102 -138
  621. package/utils/encoding.js +62 -60
  622. package/utils/enum.js +27 -53
  623. package/utils/equals.js +103 -119
  624. package/utils/event-loop.js +19 -39
  625. package/utils/factory-map.js +53 -75
  626. package/utils/feedable-async-iterable.js +47 -70
  627. package/utils/file-reader.js +15 -41
  628. package/utils/format-error.js +36 -57
  629. package/utils/format.js +32 -53
  630. package/utils/function/index.js +2 -19
  631. package/utils/function/memoize.js +38 -53
  632. package/utils/function/throttle.js +26 -48
  633. package/utils/helpers.js +93 -102
  634. package/utils/image.js +62 -88
  635. package/utils/index.js +48 -65
  636. package/utils/iterable-helpers/all.js +8 -31
  637. package/utils/iterable-helpers/any.js +8 -31
  638. package/utils/iterable-helpers/assert.js +7 -30
  639. package/utils/iterable-helpers/batch.js +11 -34
  640. package/utils/iterable-helpers/concat.js +4 -27
  641. package/utils/iterable-helpers/default-if-empty.js +9 -32
  642. package/utils/iterable-helpers/deferred.js +2 -25
  643. package/utils/iterable-helpers/difference.js +21 -45
  644. package/utils/iterable-helpers/distinct.js +9 -32
  645. package/utils/iterable-helpers/drain.js +4 -26
  646. package/utils/iterable-helpers/filter.js +7 -30
  647. package/utils/iterable-helpers/first-or-default.js +8 -30
  648. package/utils/iterable-helpers/first.js +8 -30
  649. package/utils/iterable-helpers/for-each.js +5 -28
  650. package/utils/iterable-helpers/group-single.js +3 -26
  651. package/utils/iterable-helpers/group-to-map.js +9 -32
  652. package/utils/iterable-helpers/group-to-single-map.js +10 -33
  653. package/utils/iterable-helpers/group.js +3 -26
  654. package/utils/iterable-helpers/includes.js +3 -26
  655. package/utils/iterable-helpers/index.js +39 -56
  656. package/utils/iterable-helpers/is-iterable.js +5 -29
  657. package/utils/iterable-helpers/last-or-default.js +13 -36
  658. package/utils/iterable-helpers/last.js +13 -36
  659. package/utils/iterable-helpers/map-many.js +6 -29
  660. package/utils/iterable-helpers/map.js +6 -29
  661. package/utils/iterable-helpers/materialize.js +2 -25
  662. package/utils/iterable-helpers/metadata.js +16 -38
  663. package/utils/iterable-helpers/pairwise.js +11 -33
  664. package/utils/iterable-helpers/range.js +4 -27
  665. package/utils/iterable-helpers/reduce.js +11 -33
  666. package/utils/iterable-helpers/single-or-default.js +14 -37
  667. package/utils/iterable-helpers/single.js +17 -40
  668. package/utils/iterable-helpers/skip.js +6 -29
  669. package/utils/iterable-helpers/sort.js +4 -27
  670. package/utils/iterable-helpers/take-until.js +8 -31
  671. package/utils/iterable-helpers/take-while.js +10 -33
  672. package/utils/iterable-helpers/take.js +10 -33
  673. package/utils/iterable-helpers/tap.js +6 -29
  674. package/utils/iterable-helpers/types.js +1 -16
  675. package/utils/iterable-helpers/while.js +8 -31
  676. package/utils/jwt.js +77 -100
  677. package/utils/map.js +35 -62
  678. package/utils/math.js +102 -64
  679. package/utils/merge.js +26 -45
  680. package/utils/middleware.js +36 -60
  681. package/utils/moving-metric.js +155 -188
  682. package/utils/noop.js +4 -27
  683. package/utils/object/decycle.js +57 -78
  684. package/utils/object/dereference.js +46 -44
  685. package/utils/object/forward-ref.js +57 -73
  686. package/utils/object/index.js +7 -24
  687. package/utils/object/lazy-property.js +81 -96
  688. package/utils/object/merge.js +48 -70
  689. package/utils/object/object.js +106 -136
  690. package/utils/object/property-name.js +69 -72
  691. package/utils/ordered-feedable-async-iterable.js +42 -65
  692. package/utils/patch-worker.js +69 -90
  693. package/utils/patterns.js +7 -29
  694. package/utils/periodic-reporter.js +60 -82
  695. package/utils/periodic-sampler.js +67 -91
  696. package/utils/provider-function-iterable.js +26 -48
  697. package/utils/proxy.js +17 -42
  698. package/utils/random.js +40 -50
  699. package/utils/reflection.js +13 -41
  700. package/utils/repl.js +14 -33
  701. package/utils/set.js +36 -62
  702. package/utils/singleton.js +18 -41
  703. package/utils/sort.js +53 -77
  704. package/utils/stream/finalize-stream.js +43 -62
  705. package/utils/stream/index.js +6 -23
  706. package/utils/stream/readable-stream-adapter.js +35 -57
  707. package/utils/stream/readable-stream-from-promise.js +7 -28
  708. package/utils/stream/size-limited-stream.js +12 -35
  709. package/utils/stream/stream-helper-types.js +1 -16
  710. package/utils/stream/stream-reader.js +30 -52
  711. package/utils/string/hypenate.js +2 -25
  712. package/utils/string/index.js +3 -20
  713. package/utils/string/title-case.js +6 -26
  714. package/utils/string/trim.js +9 -32
  715. package/utils/throw.js +7 -30
  716. package/utils/timer.js +70 -91
  717. package/utils/timing.js +52 -80
  718. package/utils/type-guards.js +253 -1076
  719. package/utils/type-of.js +25 -43
  720. package/utils/units.js +53 -124
  721. package/utils/url-builder.js +47 -68
  722. package/utils/value-or-provider.js +6 -29
  723. package/utils/z-base32.js +42 -63
  724. package/web-types.js +1 -16
@@ -1,315 +1,279 @@
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 authentication_service_exports = {};
20
- __export(authentication_service_exports, {
21
- AuthenticationService: () => AuthenticationService,
22
- AuthenticationServiceOptions: () => AuthenticationServiceOptions
23
- });
24
- module.exports = __toCommonJS(authentication_service_exports);
25
- var import_container = require("../../container/index.js");
26
- var import_invalid_token_error = require("../../error/invalid-token.error.js");
27
- var import_not_implemented_error = require("../../error/not-implemented.error.js");
28
- var import_alphabet = require("../../utils/alphabet.js");
29
- var import_cryptography = require("../../utils/cryptography.js");
30
- var import_date_time = require("../../utils/date-time.js");
31
- var import_equals = require("../../utils/equals.js");
32
- var import_jwt = require("../../utils/jwt.js");
33
- var import_random = require("../../utils/random.js");
34
- var import_type_guards = require("../../utils/type-guards.js");
35
- var import_units = require("../../utils/units.js");
36
- var import_authentication_credentials_repository = require("./authentication-credentials.repository.js");
37
- var import_authentication_secret_requirements_validator = require("./authentication-secret-requirements.validator.js");
38
- var import_authentication_secret_reset_handler = require("./authentication-secret-reset.handler.js");
39
- var import_authentication_session_repository = require("./authentication-session.repository.js");
40
- var import_authentication_subject_resolver = require("./authentication-subject.resolver.js");
41
- var import_authentication_token_payload_provider = require("./authentication-token-payload.provider.js");
42
- var import_helper = require("./helper.js");
43
- var __decorate = function(decorators, target, key, desc) {
44
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
45
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
46
- r = Reflect.decorate(decorators, target, key, desc);
47
- else
48
- for (var i = decorators.length - 1; i >= 0; i--)
49
- if (d = decorators[i])
50
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
51
- 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); }
52
12
  };
53
- var __metadata = function(k, v) {
54
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
55
- return Reflect.metadata(k, v);
56
- };
57
- var __param = function(paramIndex, decorator) {
58
- return function(target, key) {
59
- decorator(target, key, paramIndex);
60
- };
61
- };
62
- class AuthenticationServiceOptions {
63
- /**
64
- * Secrets used for signing tokens and refreshTokens
65
- * If single secret is provided, multiple secrets are derived internally
66
- */
67
- secret;
68
- /** Token version, forces refresh on mismatch (useful if payload changes) */
69
- version;
70
- /** How long a token is valid */
71
- tokenTimeToLive;
72
- /** How long a refresh token is valid. Implies session time to live. */
73
- refreshTokenTimeToLive;
74
- /** How long a secret reset token is valid. */
75
- secretResetTokenTimeToLive;
13
+ import { afterResolve, inject, optional, singleton } from '../../container/index.js';
14
+ import { InvalidTokenError } from '../../error/invalid-token.error.js';
15
+ import { NotImplementedError } from '../../error/not-implemented.error.js';
16
+ import { Alphabet } from '../../utils/alphabet.js';
17
+ import { deriveBytesMultiple, importPbkdf2Key } from '../../utils/cryptography.js';
18
+ import { currentTimestamp, timestampToTimestampSeconds } from '../../utils/date-time.js';
19
+ import { binaryEquals } from '../../utils/equals.js';
20
+ import { createJwtTokenString } from '../../utils/jwt.js';
21
+ import { getRandomBytes, getRandomString } from '../../utils/random.js';
22
+ import { isBinaryData, isString, isUndefined } from '../../utils/type-guards.js';
23
+ import { millisecondsPerDay, millisecondsPerMinute } from '../../utils/units.js';
24
+ import { AuthenticationCredentialsRepository } from './authentication-credentials.repository.js';
25
+ import { AuthenticationSecretRequirementsValidator } from './authentication-secret-requirements.validator.js';
26
+ import { AuthenticationSecretResetHandler } from './authentication-secret-reset.handler.js';
27
+ import { AuthenticationSessionRepository } from './authentication-session.repository.js';
28
+ import { AuthenticationSubjectResolver } from './authentication-subject.resolver.js';
29
+ import { AuthenticationTokenPayloadProvider, GetTokenPayloadContextAction } from './authentication-token-payload.provider.js';
30
+ import { getRefreshTokenFromString, getSecretResetTokenFromString, getTokenFromString } from './helper.js';
31
+ export class AuthenticationServiceOptions {
32
+ /**
33
+ * Secrets used for signing tokens and refreshTokens
34
+ * If single secret is provided, multiple secrets are derived internally
35
+ */
36
+ secret;
37
+ /** Token version, forces refresh on mismatch (useful if payload changes) */
38
+ version;
39
+ /** How long a token is valid */
40
+ tokenTimeToLive;
41
+ /** How long a refresh token is valid. Implies session time to live. */
42
+ refreshTokenTimeToLive;
43
+ /** How long a secret reset token is valid. */
44
+ secretResetTokenTimeToLive;
76
45
  }
77
46
  const SIGNING_SECRETS_LENGTH = 64;
78
- let AuthenticationService = class AuthenticationService2 {
79
- credentialsRepository;
80
- sessionRepository;
81
- authenticationSecretRequirementsValidator;
82
- tokenPayloadProvider;
83
- subjectResolver;
84
- authenticationResetSecretHandler;
85
- options;
86
- secret;
87
- tokenVersion;
88
- tokenTimeToLive;
89
- refreshTokenTimeToLive;
90
- secretResetTokenTimeToLive;
91
- derivedTokenSigningSecret;
92
- derivedRefreshTokenSigningSecret;
93
- derivedSecretResetTokenSigningSecret;
94
- constructor(credentialsRepository, sessionRepository, authenticationSecretRequirementsValidator, subjectResolver, tokenPayloadProvider, authenticationResetSecretHandler, options) {
95
- this.credentialsRepository = credentialsRepository;
96
- this.sessionRepository = sessionRepository;
97
- this.authenticationSecretRequirementsValidator = authenticationSecretRequirementsValidator;
98
- this.subjectResolver = subjectResolver;
99
- this.tokenPayloadProvider = tokenPayloadProvider;
100
- this.authenticationResetSecretHandler = authenticationResetSecretHandler;
101
- this.options = options;
102
- this.tokenVersion = options.version ?? 1;
103
- this.tokenTimeToLive = options.tokenTimeToLive ?? 5 * import_units.millisecondsPerMinute;
104
- this.refreshTokenTimeToLive = options.refreshTokenTimeToLive ?? 5 * import_units.millisecondsPerDay;
105
- this.secretResetTokenTimeToLive = options.secretResetTokenTimeToLive ?? 10 * import_units.millisecondsPerMinute;
106
- }
107
- async [import_container.afterResolve]() {
108
- await this.initialize();
109
- }
110
- async initialize() {
111
- if ((0, import_type_guards.isString)(this.options.secret) || (0, import_type_guards.isBinaryData)(this.options.secret)) {
112
- await this.deriveSigningSecrets(this.options.secret);
113
- } else {
114
- this.derivedTokenSigningSecret = this.options.secret.tokenSigningSecret;
115
- this.derivedRefreshTokenSigningSecret = this.options.secret.refreshTokenSigningSecret;
116
- this.derivedSecretResetTokenSigningSecret = this.options.secret.secretResetTokenSigningSecret;
47
+ export let AuthenticationService = class AuthenticationService {
48
+ credentialsRepository;
49
+ sessionRepository;
50
+ authenticationSecretRequirementsValidator;
51
+ tokenPayloadProvider;
52
+ subjectResolver;
53
+ authenticationResetSecretHandler;
54
+ options;
55
+ secret;
56
+ tokenVersion;
57
+ tokenTimeToLive;
58
+ refreshTokenTimeToLive;
59
+ secretResetTokenTimeToLive;
60
+ derivedTokenSigningSecret;
61
+ derivedRefreshTokenSigningSecret;
62
+ derivedSecretResetTokenSigningSecret;
63
+ constructor(credentialsRepository, sessionRepository, authenticationSecretRequirementsValidator, subjectResolver, tokenPayloadProvider, authenticationResetSecretHandler, options) {
64
+ this.credentialsRepository = credentialsRepository;
65
+ this.sessionRepository = sessionRepository;
66
+ this.authenticationSecretRequirementsValidator = authenticationSecretRequirementsValidator;
67
+ this.subjectResolver = subjectResolver;
68
+ this.tokenPayloadProvider = tokenPayloadProvider;
69
+ this.authenticationResetSecretHandler = authenticationResetSecretHandler;
70
+ this.options = options;
71
+ this.tokenVersion = options.version ?? 1;
72
+ this.tokenTimeToLive = options.tokenTimeToLive ?? (5 * millisecondsPerMinute);
73
+ this.refreshTokenTimeToLive = options.refreshTokenTimeToLive ?? (5 * millisecondsPerDay);
74
+ this.secretResetTokenTimeToLive = options.secretResetTokenTimeToLive ?? (10 * millisecondsPerMinute);
75
+ }
76
+ async [afterResolve]() {
77
+ await this.initialize();
78
+ }
79
+ async initialize() {
80
+ if (isString(this.options.secret) || isBinaryData(this.options.secret)) {
81
+ await this.deriveSigningSecrets(this.options.secret);
82
+ }
83
+ else {
84
+ this.derivedTokenSigningSecret = this.options.secret.tokenSigningSecret;
85
+ this.derivedRefreshTokenSigningSecret = this.options.secret.refreshTokenSigningSecret;
86
+ this.derivedSecretResetTokenSigningSecret = this.options.secret.secretResetTokenSigningSecret;
87
+ }
88
+ }
89
+ async setCredentials(subject, secret) {
90
+ const actualSubject = await this.resolveSubject(subject);
91
+ await this.authenticationSecretRequirementsValidator.validateSecretRequirements(secret);
92
+ const salt = getRandomBytes(32);
93
+ const hash = await this.getHash(secret, salt);
94
+ const credentials = {
95
+ subject: actualSubject,
96
+ hashVersion: 1,
97
+ salt,
98
+ hash
99
+ };
100
+ await this.credentialsRepository.save(credentials);
101
+ }
102
+ async authenticate(subject, secret) {
103
+ const actualSubject = await this.resolveSubject(subject);
104
+ const credentials = await this.credentialsRepository.tryLoadBySubject(actualSubject);
105
+ if (isUndefined(credentials)) {
106
+ return { success: false };
107
+ }
108
+ const hash = await this.getHash(secret, credentials.salt);
109
+ const valid = binaryEquals(hash, credentials.hash);
110
+ if (valid) {
111
+ return { success: true, subject: credentials.subject };
112
+ }
113
+ return { success: false };
114
+ }
115
+ async getToken(subject, authenticationData) {
116
+ const actualSubject = await this.resolveSubject(subject);
117
+ const now = currentTimestamp();
118
+ const end = now + this.refreshTokenTimeToLive;
119
+ const session = await this.sessionRepository.insert({
120
+ subject: actualSubject,
121
+ begin: now,
122
+ end,
123
+ refreshTokenHashVersion: 0,
124
+ refreshTokenSalt: new Uint8Array(),
125
+ refreshTokenHash: new Uint8Array()
126
+ });
127
+ const tokenPayload = await this.tokenPayloadProvider?.getTokenPayload(actualSubject, authenticationData, { action: GetTokenPayloadContextAction.GetToken });
128
+ const { token, jsonToken } = await this.createToken({ additionalTokenPayload: tokenPayload, subject: actualSubject, sessionId: session.id, refreshTokenExpiration: end, timestamp: now });
129
+ const refreshToken = await this.createRefreshToken(actualSubject, session.id, end);
130
+ await this.sessionRepository.extend(session.id, {
131
+ end,
132
+ refreshTokenHashVersion: 1,
133
+ refreshTokenSalt: refreshToken.salt,
134
+ refreshTokenHash: refreshToken.hash
135
+ });
136
+ return { token, jsonToken, refreshToken: refreshToken.token };
137
+ }
138
+ async endSession(sessionId) {
139
+ const now = currentTimestamp();
140
+ await this.sessionRepository.end(sessionId, now);
141
+ }
142
+ async refresh(refreshToken, authenticationData) {
143
+ const validatedToken = await this.validateRefreshToken(refreshToken);
144
+ const sessionId = validatedToken.payload.sessionId;
145
+ const session = await this.sessionRepository.load(sessionId);
146
+ const hash = await this.getHash(validatedToken.payload.secret, session.refreshTokenSalt);
147
+ if (session.end <= currentTimestamp()) {
148
+ throw new InvalidTokenError('Session is expired.');
149
+ }
150
+ if (!binaryEquals(hash, session.refreshTokenHash)) {
151
+ throw new InvalidTokenError('Invalid refresh token.');
152
+ }
153
+ const now = currentTimestamp();
154
+ const newEnd = now + this.refreshTokenTimeToLive;
155
+ const tokenPayload = await this.tokenPayloadProvider?.getTokenPayload(session.subject, authenticationData, { action: GetTokenPayloadContextAction.Refresh });
156
+ const { token, jsonToken } = await this.createToken({ additionalTokenPayload: tokenPayload, subject: session.subject, sessionId, refreshTokenExpiration: newEnd, timestamp: now });
157
+ const newRefreshToken = await this.createRefreshToken(validatedToken.payload.subject, sessionId, newEnd);
158
+ await this.sessionRepository.extend(sessionId, {
159
+ end: newEnd,
160
+ refreshTokenHashVersion: 1,
161
+ refreshTokenSalt: newRefreshToken.salt,
162
+ refreshTokenHash: newRefreshToken.hash
163
+ });
164
+ return { token, jsonToken, refreshToken: newRefreshToken.token };
165
+ }
166
+ async initResetSecret(subject) {
167
+ if (isUndefined(this.authenticationResetSecretHandler)) {
168
+ throw new NotImplementedError();
169
+ }
170
+ const actualSubject = await this.resolveSubject(subject);
171
+ const secretResetToken = await this.createSecretResetToken(actualSubject, currentTimestamp() + this.secretResetTokenTimeToLive);
172
+ const initSecretResetData = {
173
+ subject: actualSubject,
174
+ token: secretResetToken.token
175
+ };
176
+ await this.authenticationResetSecretHandler.handleInitSecretReset(initSecretResetData);
177
+ }
178
+ async resetSecret(tokenString, newSecret) {
179
+ const token = await this.validateSecretResetToken(tokenString);
180
+ await this.setCredentials(token.payload.subject, newSecret);
181
+ }
182
+ async checkSecret(secret) {
183
+ return this.authenticationSecretRequirementsValidator.checkSecretRequirements(secret);
184
+ }
185
+ async validateToken(token) {
186
+ return getTokenFromString(token, this.tokenVersion, this.derivedTokenSigningSecret);
187
+ }
188
+ async validateRefreshToken(token) {
189
+ return getRefreshTokenFromString(token, this.derivedRefreshTokenSigningSecret);
190
+ }
191
+ async validateSecretResetToken(token) {
192
+ return getSecretResetTokenFromString(token, this.derivedSecretResetTokenSigningSecret);
193
+ }
194
+ async resolveSubject(subject) {
195
+ return this.subjectResolver?.resolveSubject(subject) ?? subject;
117
196
  }
118
- }
119
- async setCredentials(subject, secret) {
120
- const actualSubject = await this.resolveSubject(subject);
121
- await this.authenticationSecretRequirementsValidator.validateSecretRequirements(secret);
122
- const salt = (0, import_random.getRandomBytes)(32);
123
- const hash = await this.getHash(secret, salt);
124
- const credentials = {
125
- subject: actualSubject,
126
- hashVersion: 1,
127
- salt,
128
- hash
129
- };
130
- await this.credentialsRepository.save(credentials);
131
- }
132
- async authenticate(subject, secret) {
133
- const actualSubject = await this.resolveSubject(subject);
134
- const credentials = await this.credentialsRepository.tryLoadBySubject(actualSubject);
135
- if ((0, import_type_guards.isUndefined)(credentials)) {
136
- return { success: false };
197
+ /** Creates a token without session or refresh token and is not saved in database */
198
+ async createToken({ tokenVersion, jwtId, issuedAt, expiration, additionalTokenPayload, subject, sessionId, refreshTokenExpiration, timestamp = currentTimestamp() }) {
199
+ const header = {
200
+ v: tokenVersion ?? this.tokenVersion,
201
+ alg: 'HS256',
202
+ typ: 'JWT'
203
+ };
204
+ const payload = {
205
+ jti: jwtId ?? getRandomString(24, Alphabet.LowerUpperCaseNumbers),
206
+ iat: issuedAt ?? timestampToTimestampSeconds(timestamp),
207
+ exp: expiration ?? timestampToTimestampSeconds(timestamp + this.tokenTimeToLive),
208
+ refreshTokenExp: timestampToTimestampSeconds(refreshTokenExpiration),
209
+ sessionId,
210
+ subject,
211
+ ...additionalTokenPayload
212
+ };
213
+ const jsonToken = {
214
+ header,
215
+ payload
216
+ };
217
+ const token = await createJwtTokenString(jsonToken, this.derivedTokenSigningSecret);
218
+ return { token, jsonToken };
137
219
  }
138
- const hash = await this.getHash(secret, credentials.salt);
139
- const valid = (0, import_equals.binaryEquals)(hash, credentials.hash);
140
- if (valid) {
141
- return { success: true, subject: credentials.subject };
220
+ /** Creates a refresh token without session or something else. */
221
+ async createRefreshToken(subject, sessionId, expirationTimestamp) {
222
+ const secret = getRandomString(64, Alphabet.LowerUpperCaseNumbers);
223
+ const salt = getRandomBytes(32);
224
+ const hash = await this.getHash(secret, salt);
225
+ const jsonToken = {
226
+ header: {
227
+ alg: 'HS256',
228
+ typ: 'JWT'
229
+ },
230
+ payload: {
231
+ exp: timestampToTimestampSeconds(expirationTimestamp),
232
+ subject,
233
+ sessionId,
234
+ secret
235
+ }
236
+ };
237
+ const token = await createJwtTokenString(jsonToken, this.derivedRefreshTokenSigningSecret);
238
+ return { token, jsonToken, salt, hash: new Uint8Array(hash) };
142
239
  }
143
- return { success: false };
144
- }
145
- async getToken(subject, authenticationData) {
146
- const actualSubject = await this.resolveSubject(subject);
147
- const now = (0, import_date_time.currentTimestamp)();
148
- const end = now + this.refreshTokenTimeToLive;
149
- const session = await this.sessionRepository.insert({
150
- subject: actualSubject,
151
- begin: now,
152
- end,
153
- refreshTokenHashVersion: 0,
154
- refreshTokenSalt: new Uint8Array(),
155
- refreshTokenHash: new Uint8Array()
156
- });
157
- const tokenPayload = await this.tokenPayloadProvider?.getTokenPayload(actualSubject, authenticationData, { action: import_authentication_token_payload_provider.GetTokenPayloadContextAction.GetToken });
158
- const { token, jsonToken } = await this.createToken({ additionalTokenPayload: tokenPayload, subject: actualSubject, sessionId: session.id, refreshTokenExpiration: end, timestamp: now });
159
- const refreshToken = await this.createRefreshToken(actualSubject, session.id, end);
160
- await this.sessionRepository.extend(session.id, {
161
- end,
162
- refreshTokenHashVersion: 1,
163
- refreshTokenSalt: refreshToken.salt,
164
- refreshTokenHash: refreshToken.hash
165
- });
166
- return { token, jsonToken, refreshToken: refreshToken.token };
167
- }
168
- async endSession(sessionId) {
169
- const now = (0, import_date_time.currentTimestamp)();
170
- await this.sessionRepository.end(sessionId, now);
171
- }
172
- async refresh(refreshToken, authenticationData) {
173
- const validatedToken = await this.validateRefreshToken(refreshToken);
174
- const sessionId = validatedToken.payload.sessionId;
175
- const session = await this.sessionRepository.load(sessionId);
176
- const hash = await this.getHash(validatedToken.payload.secret, session.refreshTokenSalt);
177
- if (session.end <= (0, import_date_time.currentTimestamp)()) {
178
- throw new import_invalid_token_error.InvalidTokenError("Session is expired.");
240
+ async createSecretResetToken(subject, expirationTimestamp) {
241
+ const jsonToken = {
242
+ header: {
243
+ alg: 'HS256',
244
+ typ: 'JWT'
245
+ },
246
+ payload: {
247
+ exp: timestampToTimestampSeconds(expirationTimestamp),
248
+ subject
249
+ }
250
+ };
251
+ const token = await createJwtTokenString(jsonToken, this.derivedSecretResetTokenSigningSecret);
252
+ return { token, jsonToken };
179
253
  }
180
- if (!(0, import_equals.binaryEquals)(hash, session.refreshTokenHash)) {
181
- throw new import_invalid_token_error.InvalidTokenError("Invalid refresh token.");
254
+ async deriveSigningSecrets(secret) {
255
+ const key = await importPbkdf2Key(secret);
256
+ const algorithm = { name: 'PBKDF2', hash: 'SHA-512', iterations: 500000, salt: new Uint8Array() };
257
+ const [derivedTokenSigningSecret, derivedRefreshTokenSigningSecret, derivedSecretResetTokenSigningSecret] = await deriveBytesMultiple(algorithm, key, 3, SIGNING_SECRETS_LENGTH);
258
+ this.derivedTokenSigningSecret = derivedTokenSigningSecret;
259
+ this.derivedRefreshTokenSigningSecret = derivedRefreshTokenSigningSecret;
260
+ this.derivedSecretResetTokenSigningSecret = derivedSecretResetTokenSigningSecret;
182
261
  }
183
- const now = (0, import_date_time.currentTimestamp)();
184
- const newEnd = now + this.refreshTokenTimeToLive;
185
- const tokenPayload = await this.tokenPayloadProvider?.getTokenPayload(session.subject, authenticationData, { action: import_authentication_token_payload_provider.GetTokenPayloadContextAction.Refresh });
186
- const { token, jsonToken } = await this.createToken({ additionalTokenPayload: tokenPayload, subject: session.subject, sessionId, refreshTokenExpiration: newEnd, timestamp: now });
187
- const newRefreshToken = await this.createRefreshToken(validatedToken.payload.subject, sessionId, newEnd);
188
- await this.sessionRepository.extend(sessionId, {
189
- end: newEnd,
190
- refreshTokenHashVersion: 1,
191
- refreshTokenSalt: newRefreshToken.salt,
192
- refreshTokenHash: newRefreshToken.hash
193
- });
194
- return { token, jsonToken, refreshToken: newRefreshToken.token };
195
- }
196
- async initResetSecret(subject) {
197
- if ((0, import_type_guards.isUndefined)(this.authenticationResetSecretHandler)) {
198
- throw new import_not_implemented_error.NotImplementedError();
262
+ async getHash(secret, salt) {
263
+ const key = await importPbkdf2Key(secret);
264
+ const hash = await globalThis.crypto.subtle.deriveBits({ name: 'PBKDF2', hash: 'SHA-512', iterations: 250000, salt }, key, 512);
265
+ return new Uint8Array(hash);
199
266
  }
200
- const actualSubject = await this.resolveSubject(subject);
201
- const secretResetToken = await this.createSecretResetToken(actualSubject, (0, import_date_time.currentTimestamp)() + this.secretResetTokenTimeToLive);
202
- const initSecretResetData = {
203
- subject: actualSubject,
204
- token: secretResetToken.token
205
- };
206
- await this.authenticationResetSecretHandler.handleInitSecretReset(initSecretResetData);
207
- }
208
- async resetSecret(tokenString, newSecret) {
209
- const token = await this.validateSecretResetToken(tokenString);
210
- await this.setCredentials(token.payload.subject, newSecret);
211
- }
212
- async checkSecret(secret) {
213
- return this.authenticationSecretRequirementsValidator.checkSecretRequirements(secret);
214
- }
215
- async validateToken(token) {
216
- return (0, import_helper.getTokenFromString)(token, this.tokenVersion, this.derivedTokenSigningSecret);
217
- }
218
- async validateRefreshToken(token) {
219
- return (0, import_helper.getRefreshTokenFromString)(token, this.derivedRefreshTokenSigningSecret);
220
- }
221
- async validateSecretResetToken(token) {
222
- return (0, import_helper.getSecretResetTokenFromString)(token, this.derivedSecretResetTokenSigningSecret);
223
- }
224
- async resolveSubject(subject) {
225
- return this.subjectResolver?.resolveSubject(subject) ?? subject;
226
- }
227
- /** Creates a token without session or refresh token and is not saved in database */
228
- async createToken({ tokenVersion, jwtId, issuedAt, expiration, additionalTokenPayload, subject, sessionId, refreshTokenExpiration, timestamp = (0, import_date_time.currentTimestamp)() }) {
229
- const header = {
230
- v: tokenVersion ?? this.tokenVersion,
231
- alg: "HS256",
232
- typ: "JWT"
233
- };
234
- const payload = {
235
- jti: jwtId ?? (0, import_random.getRandomString)(24, import_alphabet.Alphabet.LowerUpperCaseNumbers),
236
- iat: issuedAt ?? (0, import_date_time.timestampToTimestampSeconds)(timestamp),
237
- exp: expiration ?? (0, import_date_time.timestampToTimestampSeconds)(timestamp + this.tokenTimeToLive),
238
- refreshTokenExp: (0, import_date_time.timestampToTimestampSeconds)(refreshTokenExpiration),
239
- sessionId,
240
- subject,
241
- ...additionalTokenPayload
242
- };
243
- const jsonToken = {
244
- header,
245
- payload
246
- };
247
- const token = await (0, import_jwt.createJwtTokenString)(jsonToken, this.derivedTokenSigningSecret);
248
- return { token, jsonToken };
249
- }
250
- /** Creates a refresh token without session or something else. */
251
- async createRefreshToken(subject, sessionId, expirationTimestamp) {
252
- const secret = (0, import_random.getRandomString)(64, import_alphabet.Alphabet.LowerUpperCaseNumbers);
253
- const salt = (0, import_random.getRandomBytes)(32);
254
- const hash = await this.getHash(secret, salt);
255
- const jsonToken = {
256
- header: {
257
- alg: "HS256",
258
- typ: "JWT"
259
- },
260
- payload: {
261
- exp: (0, import_date_time.timestampToTimestampSeconds)(expirationTimestamp),
262
- subject,
263
- sessionId,
264
- secret
265
- }
266
- };
267
- const token = await (0, import_jwt.createJwtTokenString)(jsonToken, this.derivedRefreshTokenSigningSecret);
268
- return { token, jsonToken, salt, hash: new Uint8Array(hash) };
269
- }
270
- async createSecretResetToken(subject, expirationTimestamp) {
271
- const jsonToken = {
272
- header: {
273
- alg: "HS256",
274
- typ: "JWT"
275
- },
276
- payload: {
277
- exp: (0, import_date_time.timestampToTimestampSeconds)(expirationTimestamp),
278
- subject
279
- }
280
- };
281
- const token = await (0, import_jwt.createJwtTokenString)(jsonToken, this.derivedSecretResetTokenSigningSecret);
282
- return { token, jsonToken };
283
- }
284
- async deriveSigningSecrets(secret) {
285
- const key = await (0, import_cryptography.importPbkdf2Key)(secret);
286
- const algorithm = { name: "PBKDF2", hash: "SHA-512", iterations: 5e5, salt: new Uint8Array() };
287
- const [derivedTokenSigningSecret, derivedRefreshTokenSigningSecret, derivedSecretResetTokenSigningSecret] = await (0, import_cryptography.deriveBytesMultiple)(algorithm, key, 3, SIGNING_SECRETS_LENGTH);
288
- this.derivedTokenSigningSecret = derivedTokenSigningSecret;
289
- this.derivedRefreshTokenSigningSecret = derivedRefreshTokenSigningSecret;
290
- this.derivedSecretResetTokenSigningSecret = derivedSecretResetTokenSigningSecret;
291
- }
292
- async getHash(secret, salt) {
293
- const key = await (0, import_cryptography.importPbkdf2Key)(secret);
294
- const hash = await globalThis.crypto.subtle.deriveBits({ name: "PBKDF2", hash: "SHA-512", iterations: 25e4, salt }, key, 512);
295
- return new Uint8Array(hash);
296
- }
297
267
  };
298
268
  AuthenticationService = __decorate([
299
- (0, import_container.singleton)(),
300
- __param(3, (0, import_container.inject)(import_authentication_subject_resolver.AuthenticationSubjectResolver)),
301
- __param(3, (0, import_container.optional)()),
302
- __param(4, (0, import_container.inject)(import_authentication_token_payload_provider.AuthenticationTokenPayloadProvider)),
303
- __param(4, (0, import_container.optional)()),
304
- __param(5, (0, import_container.inject)(import_authentication_secret_reset_handler.AuthenticationSecretResetHandler)),
305
- __param(5, (0, import_container.optional)()),
306
- __metadata("design:paramtypes", [
307
- import_authentication_credentials_repository.AuthenticationCredentialsRepository,
308
- import_authentication_session_repository.AuthenticationSessionRepository,
309
- import_authentication_secret_requirements_validator.AuthenticationSecretRequirementsValidator,
310
- Object,
311
- Object,
312
- Object,
313
- AuthenticationServiceOptions
314
- ])
269
+ singleton(),
270
+ __param(3, inject(AuthenticationSubjectResolver)),
271
+ __param(3, optional()),
272
+ __param(4, inject(AuthenticationTokenPayloadProvider)),
273
+ __param(4, optional()),
274
+ __param(5, inject(AuthenticationSecretResetHandler)),
275
+ __param(5, optional()),
276
+ __metadata("design:paramtypes", [AuthenticationCredentialsRepository,
277
+ AuthenticationSessionRepository,
278
+ AuthenticationSecretRequirementsValidator, Object, Object, Object, AuthenticationServiceOptions])
315
279
  ], AuthenticationService);