@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.
- package/api/client/client.js +109 -125
- package/api/client/index.js +1 -18
- package/api/default-error-handlers.js +18 -44
- package/api/index.js +14 -20
- package/api/response.js +99 -123
- package/api/server/api-controller.js +42 -70
- package/api/server/api-request-token.provider.js +12 -40
- package/api/server/error-handler.js +25 -46
- package/api/server/gateway.js +207 -213
- package/api/server/index.js +5 -22
- package/api/server/middlewares/allowed-methods.middleware.js +17 -40
- package/api/server/middlewares/catch-error.middleware.js +12 -33
- package/api/server/middlewares/cors.middleware.js +49 -69
- package/api/server/middlewares/index.js +4 -21
- package/api/server/middlewares/response-time.middleware.js +8 -31
- package/api/server/module.js +18 -42
- package/api/server/tokens.js +2 -25
- package/api/types.js +14 -40
- package/api/utils.js +13 -36
- package/application/application.js +155 -175
- package/application/index.js +1 -18
- package/async-iterator-symbol.js +5 -28
- package/authentication/authentication.api.js +89 -113
- package/authentication/client/api.client.js +28 -57
- package/authentication/client/authentication.service.js +223 -250
- package/authentication/client/http-client.middleware.js +21 -44
- package/authentication/client/index.js +5 -22
- package/authentication/client/module.js +15 -38
- package/authentication/client/tokens.js +5 -29
- package/authentication/errors/index.js +1 -18
- package/authentication/errors/secret-requirements.error.js +6 -29
- package/authentication/index.js +2 -19
- package/authentication/models/authentication-credentials.model.js +37 -66
- package/authentication/models/authentication-session.model.js +51 -80
- package/authentication/models/index.js +6 -23
- package/authentication/models/init-secret-reset-data.model.js +16 -44
- package/authentication/models/secret-check-result.model.js +9 -36
- package/authentication/models/token-payload-base.model.js +31 -59
- package/authentication/models/token.model.js +1 -16
- package/authentication/server/authentication-api-request-token.provider.js +24 -52
- package/authentication/server/authentication-credentials.repository.js +1 -24
- package/authentication/server/authentication-secret-requirements.validator.js +23 -51
- package/authentication/server/authentication-secret-reset.handler.js +1 -24
- package/authentication/server/authentication-session.repository.js +1 -24
- package/authentication/server/authentication-subject.resolver.js +5 -24
- package/authentication/server/authentication-token-payload.provider.js +5 -29
- package/authentication/server/authentication.api-controller.js +88 -114
- package/authentication/server/authentication.service.js +265 -301
- package/authentication/server/helper.js +66 -87
- package/authentication/server/index.js +11 -28
- package/authentication/server/module.js +25 -47
- package/authentication/server/mongo/index.js +2 -19
- package/authentication/server/mongo/mongo-authentication-credentials.repository.js +52 -84
- package/authentication/server/mongo/mongo-authentication-session.repository.js +49 -81
- package/browser/browser-context-controller.js +71 -99
- package/browser/browser-controller.js +73 -100
- package/browser/browser.service.js +83 -114
- package/browser/document-controller.js +48 -81
- package/browser/element-controller.js +139 -160
- package/browser/frame-controller.js +27 -50
- package/browser/index.js +10 -27
- package/browser/locator-controller.js +36 -59
- package/browser/module.js +23 -47
- package/browser/page-controller.js +89 -108
- package/browser/pdf-options.js +73 -103
- package/browser/types.js +1 -16
- package/browser/utils.js +77 -107
- package/collections/awaitable/awaitable-list.js +99 -122
- package/collections/awaitable/awaitable-map.js +93 -116
- package/collections/awaitable/awaitable-set.js +63 -86
- package/collections/awaitable/index.js +3 -20
- package/collections/collection.js +1 -16
- package/collections/index.js +6 -23
- package/collections/keyed-set.js +53 -77
- package/collections/list.js +1 -16
- package/collections/observable/index.js +8 -25
- package/collections/observable/observable-array.js +95 -118
- package/collections/observable/observable-collection-base.js +60 -83
- package/collections/observable/observable-collection.js +1 -16
- package/collections/observable/observable-list-base.js +55 -78
- package/collections/observable/observable-list.js +1 -16
- package/collections/observable/observable-map.js +56 -79
- package/collections/observable/observable-set.js +75 -98
- package/collections/observable/observable-sorted-array-list.js +165 -188
- package/collections/sorted-array-list.js +156 -179
- package/collections/sorted-list.js +1 -16
- package/collections/sorted-map.js +70 -93
- package/container/container.js +422 -437
- package/container/decorators.js +112 -96
- package/container/index.js +10 -27
- package/container/interfaces.js +2 -26
- package/container/provider.js +28 -59
- package/container/resolve-chain.js +74 -99
- package/container/resolve.error.js +10 -35
- package/container/token.js +17 -38
- package/container/type-info.js +1 -16
- package/container/types.js +1 -16
- package/container/utils.js +18 -42
- package/cookie/cookie.js +49 -71
- package/cookie/index.js +1 -18
- package/core.js +46 -75
- package/data-structures/array-dictionary.js +89 -110
- package/data-structures/array-list.js +105 -128
- package/data-structures/cache.js +41 -64
- package/data-structures/circular-buffer.js +195 -216
- package/data-structures/collection.js +86 -109
- package/data-structures/dictionary.js +51 -75
- package/data-structures/index-out-of-bounds.error.js +8 -31
- package/data-structures/index.js +15 -32
- package/data-structures/iterable-weak-map.js +129 -149
- package/data-structures/linked-list.js +367 -385
- package/data-structures/list.js +78 -101
- package/data-structures/map-dictionary.js +55 -78
- package/data-structures/multi-key-map.js +138 -161
- package/data-structures/set.js +54 -77
- package/data-structures/sorted-array-list.js +142 -169
- package/data-structures/weak-ref-map.js +123 -143
- package/database/entity-repository.js +2 -26
- package/database/entity.js +1 -16
- package/database/id.js +8 -29
- package/database/index.js +6 -23
- package/database/module.js +9 -33
- package/database/mongo/classes.js +13 -42
- package/database/mongo/index.js +10 -27
- package/database/mongo/model/document.js +62 -93
- package/database/mongo/model/index.js +1 -18
- package/database/mongo/module.js +51 -71
- package/database/mongo/mongo-base.repository.js +259 -283
- package/database/mongo/mongo-bulk.js +87 -110
- package/database/mongo/mongo-entity-repository.js +270 -296
- package/database/mongo/operations.js +48 -76
- package/database/mongo/query-converter.js +73 -96
- package/database/mongo/simple-entity-repository.js +5 -28
- package/database/mongo/types.js +2 -25
- package/database/query.js +7 -36
- package/database/utils.js +2 -25
- package/disposable/async-disposer.js +93 -105
- package/disposable/disposable.js +7 -33
- package/disposable/index.js +3 -20
- package/disposable/using.js +15 -37
- package/distributed-loop/controller.js +1 -16
- package/distributed-loop/distributed-loop.js +78 -105
- package/distributed-loop/index.js +3 -20
- package/distributed-loop/provider.js +20 -48
- package/enumerable/async-enumerable.js +238 -261
- package/enumerable/enumerable-methods.js +1 -16
- package/enumerable/enumerable.js +177 -200
- package/enumerable/index.js +2 -19
- package/environment.js +25 -57
- package/error/api.error.js +10 -33
- package/error/assertion.error.js +6 -29
- package/error/bad-request.error.js +6 -29
- package/error/custom.error.js +25 -47
- package/error/details.error.js +8 -31
- package/error/forbidden.error.js +6 -29
- package/error/index.js +16 -33
- package/error/invalid-token.error.js +6 -29
- package/error/max-bytes-exceeded.error.js +9 -32
- package/error/method-not-allowed.error.js +6 -29
- package/error/multi.error.js +8 -31
- package/error/not-found.error.js +6 -29
- package/error/not-implemented.error.js +6 -29
- package/error/not-supported.error.js +11 -34
- package/error/timeout.error.js +6 -29
- package/error/unauthorized.error.js +6 -29
- package/error/unsupported-media-type.error.js +6 -29
- package/examples/api/authentication.js +40 -40
- package/examples/api/basic-overview.js +81 -86
- package/examples/api/custom-authentication.js +61 -66
- package/examples/api/streaming.js +89 -94
- package/examples/browser/basic.js +20 -21
- package/examples/http/client.js +12 -13
- package/examples/mail/basic.js +35 -36
- package/examples/mail/templates/hello-name.js +10 -33
- package/examples/pdf/basic.js +44 -45
- package/examples/pdf/templates/hello-name.js +35 -58
- package/examples/reflection/basic.js +52 -84
- package/examples/template/basic.js +30 -31
- package/examples/template/templates/hello-jsx.js +8 -32
- package/examples/template/templates/hello-name.js +18 -41
- package/global-this.js +17 -36
- package/http/client/adapters/undici-http-client.adapter.js +90 -110
- package/http/client/http-client-options.js +14 -37
- package/http/client/http-client-request.js +149 -171
- package/http/client/http-client-response.js +33 -56
- package/http/client/http-client.adapter.js +1 -24
- package/http/client/http-client.js +301 -322
- package/http/client/index.js +6 -23
- package/http/client/module.js +15 -38
- package/http/cookie-parser.js +19 -42
- package/http/http-body.js +52 -75
- package/http/http-form.js +14 -37
- package/http/http-headers.js +86 -109
- package/http/http-query.js +14 -37
- package/http/http-url-parameters.js +8 -31
- package/http/http-value-map.js +110 -133
- package/http/http.error.js +60 -82
- package/http/index.js +11 -28
- package/http/server/http-server-request.js +24 -47
- package/http/server/http-server-response.js +22 -45
- package/http/server/http-server.js +2 -25
- package/http/server/index.js +3 -20
- package/http/server/node/index.js +2 -19
- package/http/server/node/module.js +8 -28
- package/http/server/node/node-http-server.js +208 -234
- package/http/types.js +21 -47
- package/http/utils.js +92 -108
- package/image-service/image-service.js +59 -91
- package/image-service/imgproxy/imgproxy-image-service.js +86 -124
- package/image-service/imgproxy/index.js +1 -18
- package/image-service/index.js +1 -18
- package/import.js +2 -25
- package/index.js +1 -18
- package/interfaces.js +1 -16
- package/json-path/index.js +1 -18
- package/json-path/json-path.js +138 -138
- package/key-value-store/index.js +2 -19
- package/key-value-store/key-value-store.provider.js +1 -24
- package/key-value-store/key-value.store.js +6 -29
- package/key-value-store/mongo/index.js +6 -23
- package/key-value-store/mongo/module.js +17 -35
- package/key-value-store/mongo/mongo-key-value-store.provider.js +20 -48
- package/key-value-store/mongo/mongo-key-value.model.js +1 -16
- package/key-value-store/mongo/mongo-key-value.repository.js +22 -52
- package/key-value-store/mongo/mongo-key-value.store.js +59 -89
- package/key-value-store/mongo/tokens.js +2 -25
- package/lock/index.js +2 -19
- package/lock/lock.js +5 -28
- package/lock/mongo/index.js +5 -22
- package/lock/mongo/lock.js +111 -135
- package/lock/mongo/model.js +1 -16
- package/lock/mongo/module.js +18 -37
- package/lock/mongo/mongo-lock-repository.js +56 -85
- package/lock/mongo/provider.js +38 -68
- package/lock/provider.js +1 -24
- package/lock/web/index.js +3 -20
- package/lock/web/module.js +11 -31
- package/lock/web/web-lock.js +80 -105
- package/lock/web/web-lock.provider.js +27 -57
- package/logger/console/index.js +1 -18
- package/logger/console/logger.js +53 -80
- package/logger/index.js +2 -19
- package/logger/level.js +8 -31
- package/logger/logger.js +37 -60
- package/logger/noop/index.js +1 -18
- package/logger/noop/logger.js +20 -42
- package/mail/clients/nodemailer.mail-client.js +62 -90
- package/mail/index.js +5 -22
- package/mail/mail-log.repository.js +2 -25
- package/mail/mail.client.js +34 -62
- package/mail/mail.service.js +73 -106
- package/mail/models/index.js +6 -23
- package/mail/models/mail-address.model.js +1 -16
- package/mail/models/mail-content.model.js +1 -16
- package/mail/models/mail-data.model.js +1 -16
- package/mail/models/mail-log.model.js +1 -16
- package/mail/models/mail-send-result.model.js +1 -16
- package/mail/models/mail-template.model.js +5 -28
- package/mail/module.js +21 -41
- package/mail/repositories/mongo-mail-log.repository.js +24 -56
- package/mail/tokens.js +2 -25
- package/memory/finalization.js +36 -60
- package/memory/index.js +2 -19
- package/memory/observable-finalization-registry.js +9 -32
- package/message-bus/broadcast-channel/broadcast-channel-message-bus-provider.js +23 -53
- package/message-bus/broadcast-channel/broadcast-channel-message-bus.js +46 -74
- package/message-bus/broadcast-channel/index.js +3 -20
- package/message-bus/broadcast-channel/module.js +11 -31
- package/message-bus/index.js +3 -20
- package/message-bus/local/index.js +3 -20
- package/message-bus/local/local-message-bus-provider.js +35 -65
- package/message-bus/local/local-message-bus.js +38 -66
- package/message-bus/local/module.js +11 -31
- package/message-bus/local/types.js +1 -16
- package/message-bus/message-bus-base.js +41 -63
- package/message-bus/message-bus-provider.js +1 -24
- package/message-bus/message-bus.js +5 -28
- package/migration/index.js +3 -20
- package/migration/migration-state-repository.js +2 -25
- package/migration/migration-state.js +1 -16
- package/migration/migrator.js +80 -108
- package/migration/mongo/index.js +2 -19
- package/migration/mongo/migration-state-repository.js +23 -53
- package/migration/mongo/module.js +15 -34
- package/module/index.js +4 -21
- package/module/module-base.js +37 -60
- package/module/module-metric-reporter.js +58 -77
- package/module/module.js +10 -34
- package/module/modules/function.module.js +11 -34
- package/module/modules/index.js +2 -19
- package/module/modules/web-server.module.js +67 -103
- package/module/utils.js +19 -43
- package/notification/api.js +21 -50
- package/notification/models/index.js +2 -19
- package/notification/models/notification-channel-job.model.js +1 -16
- package/notification/models/notification.model.js +74 -103
- package/notification/module.js +8 -28
- package/notification/notification-channel.service.js +1 -24
- package/notification/notification.repository.js +1 -24
- package/notification/notification.service.js +30 -58
- package/object-storage/index.js +3 -20
- package/object-storage/object-storage-provider.js +1 -24
- package/object-storage/object-storage.js +6 -29
- package/object-storage/object.js +7 -30
- package/object-storage/s3/index.js +3 -20
- package/object-storage/s3/s3.object-storage-provider.js +82 -108
- package/object-storage/s3/s3.object-storage.js +130 -157
- package/object-storage/s3/s3.object.js +39 -62
- package/openid-connect/cached-oidc-configuration.service.js +35 -65
- package/openid-connect/index.js +11 -28
- package/openid-connect/mongo-oidc-state.repository.js +38 -64
- package/openid-connect/oidc-configuration.service.js +38 -66
- package/openid-connect/oidc-state.model.js +1 -16
- package/openid-connect/oidc-state.repository.js +2 -25
- package/openid-connect/oidc.service-model.js +1 -16
- package/openid-connect/oidc.service.js +157 -187
- package/package.json +11 -11
- package/password/have-i-been-pwned.js +21 -39
- package/password/index.js +4 -21
- package/password/password-check-result.model.js +34 -63
- package/password/password-check.js +46 -76
- package/password/password-check.localization.js +86 -111
- package/pdf/index.js +1 -18
- package/pdf/pdf.service.js +171 -206
- package/pool/index.js +1 -18
- package/pool/pool.js +116 -133
- package/process-shutdown.js +54 -77
- package/promise/cancelable-promise.js +23 -41
- package/promise/deferred-promise.js +68 -92
- package/promise/index.js +3 -20
- package/promise/lazy-promise.js +24 -47
- package/queue/enqueue-batch.js +18 -41
- package/queue/index.js +3 -20
- package/queue/mongo/index.js +4 -21
- package/queue/mongo/job.js +1 -16
- package/queue/mongo/mongo-job.repository.js +44 -70
- package/queue/mongo/queue.js +242 -265
- package/queue/mongo/queue.provider.js +44 -70
- package/queue/provider.js +1 -24
- package/queue/queue.js +15 -41
- package/random/index.js +2 -19
- package/random/number-generator/index.js +3 -20
- package/random/number-generator/mulberry32.js +34 -51
- package/random/number-generator/random-number-generator-function.js +1 -24
- package/random/number-generator/random-number-generator.js +8 -31
- package/random/number-generator/seeded-random-number-generator.js +5 -28
- package/random/number-generator/sfc32.js +41 -64
- package/random/number-generator/utils.js +2 -25
- package/random/series.js +41 -43
- package/reflection/decorator-data.js +63 -80
- package/reflection/decorators.js +39 -69
- package/reflection/index.js +5 -22
- package/reflection/reflection-data-map.js +32 -55
- package/reflection/registry.js +112 -132
- package/reflection/types.js +1 -16
- package/reflection/utils.js +96 -124
- package/require.js +3 -26
- package/rpc/endpoints/message-port.rpc-endpoint.js +29 -48
- package/rpc/index.js +4 -21
- package/rpc/model.js +7 -30
- package/rpc/rpc-endpoint.js +17 -40
- package/rpc/rpc-error.js +17 -40
- package/rpc/rpc.js +223 -235
- package/rxjs/cast.js +4 -28
- package/rxjs/index.js +12 -29
- package/rxjs/intersection-observer.js +25 -48
- package/rxjs/media-query.js +8 -27
- package/rxjs/mutation-observer.js +28 -50
- package/rxjs/noop.js +4 -28
- package/rxjs/performance-observer.js +37 -60
- package/rxjs/resize-observer.js +28 -50
- package/rxjs/retry-backoff.js +23 -47
- package/rxjs/slow-array.js +22 -36
- package/rxjs/teardown.js +21 -44
- package/rxjs/timing.js +26 -57
- package/rxjs/touch.js +11 -30
- package/schema/array-constraints/index.js +2 -19
- package/schema/array-constraints/maximum-length.js +19 -42
- package/schema/array-constraints/minimum-length.js +19 -42
- package/schema/coercers/boolean.coercer.js +25 -49
- package/schema/coercers/date.coercer.js +14 -38
- package/schema/coercers/index.js +6 -23
- package/schema/coercers/number.coercer.js +12 -36
- package/schema/coercers/regexp.coercer.js +18 -41
- package/schema/coercers/string.coercer.js +12 -36
- package/schema/coercers/uint8-array.coercer.js +20 -44
- package/schema/constraints/enumeration.js +27 -49
- package/schema/constraints/generic.js +21 -41
- package/schema/constraints/index.js +12 -29
- package/schema/constraints/integer.js +20 -44
- package/schema/constraints/length.js +14 -36
- package/schema/constraints/literal.js +22 -44
- package/schema/constraints/maximum-date.js +23 -46
- package/schema/constraints/maximum-length.js +22 -45
- package/schema/constraints/maximum.js +21 -44
- package/schema/constraints/minimum-date.js +23 -46
- package/schema/constraints/minimum-length.js +22 -45
- package/schema/constraints/minimum.js +21 -44
- package/schema/constraints/pattern.js +23 -46
- package/schema/decorators/class.js +4 -26
- package/schema/decorators/coerce.js +4 -26
- package/schema/decorators/constraint.js +6 -28
- package/schema/decorators/index.js +6 -23
- package/schema/decorators/property.js +16 -38
- package/schema/decorators/types.js +1 -16
- package/schema/decorators/utils.js +45 -73
- package/schema/index.js +10 -27
- package/schema/schema.error.js +59 -72
- package/schema/schema.js +256 -274
- package/schema/schemas/any.js +7 -30
- package/schema/schemas/array.js +21 -44
- package/schema/schemas/assign.js +23 -46
- package/schema/schemas/boolean.js +7 -30
- package/schema/schemas/constraint.js +6 -29
- package/schema/schemas/date.js +20 -43
- package/schema/schemas/defaulted.js +8 -31
- package/schema/schemas/enumeration.js +15 -38
- package/schema/schemas/index.js +26 -43
- package/schema/schemas/instance.js +4 -26
- package/schema/schemas/literal.js +15 -38
- package/schema/schemas/nullable.js +7 -30
- package/schema/schemas/number.js +25 -48
- package/schema/schemas/object.js +10 -34
- package/schema/schemas/omit.js +14 -37
- package/schema/schemas/one-or-many.js +13 -35
- package/schema/schemas/optional.js +6 -30
- package/schema/schemas/partial.js +16 -39
- package/schema/schemas/pick.js +14 -37
- package/schema/schemas/readable-stream.js +7 -30
- package/schema/schemas/record.js +9 -31
- package/schema/schemas/regexp.js +7 -30
- package/schema/schemas/string.js +36 -59
- package/schema/schemas/transform.js +6 -29
- package/schema/schemas/uint8-array.js +27 -50
- package/schema/schemas/union.js +11 -34
- package/schema/schemas/unknown.js +7 -30
- package/schema/transformers/generic.js +16 -39
- package/schema/transformers/index.js +4 -21
- package/schema/transformers/lowercase.js +10 -33
- package/schema/transformers/trim.js +10 -33
- package/schema/transformers/uppercase.js +10 -33
- package/schema/types/index.js +5 -22
- package/schema/types/schema-array-constraint.js +1 -24
- package/schema/types/schema-value-coercer.js +1 -24
- package/schema/types/schema-value-constraint.js +1 -24
- package/schema/types/schema-value-transformer.js +1 -24
- package/schema/types/types.js +161 -191
- package/schema/utils/index.js +2 -19
- package/schema/utils/schema.js +120 -142
- package/schema/utils/value-type.js +51 -74
- package/search-index/elastic/config.js +19 -49
- package/search-index/elastic/index.js +6 -23
- package/search-index/elastic/keyword-rewriter.js +17 -40
- package/search-index/elastic/model/elastic-query.js +1 -16
- package/search-index/elastic/model/index-mapping.js +4 -26
- package/search-index/elastic/model/index.js +3 -20
- package/search-index/elastic/model/sort.js +1 -16
- package/search-index/elastic/module.js +38 -64
- package/search-index/elastic/query-builder/boolean-query-builder.js +46 -69
- package/search-index/elastic/query-builder/index.js +1 -18
- package/search-index/elastic/query-converter.js +174 -192
- package/search-index/elastic/search-index.js +132 -153
- package/search-index/elastic/sort-converter.js +12 -34
- package/search-index/elastic/types.js +1 -16
- package/search-index/error.js +12 -35
- package/search-index/index.js +3 -20
- package/search-index/memory/index.js +1 -18
- package/search-index/memory/memory-search-index.js +130 -152
- package/search-index/search-index.js +30 -53
- package/search-index/search-result.js +1 -16
- package/serializer/handlers/binary.js +19 -47
- package/serializer/handlers/date.js +4 -28
- package/serializer/handlers/error.js +7 -31
- package/serializer/handlers/index.js +7 -24
- package/serializer/handlers/map.js +16 -40
- package/serializer/handlers/regex.js +7 -31
- package/serializer/handlers/register.js +36 -59
- package/serializer/handlers/set.js +13 -37
- package/serializer/index.js +3 -30
- package/serializer/serializable.js +43 -68
- package/serializer/serializer.js +244 -264
- package/serializer/types.js +6 -34
- package/signals/api.js +17 -45
- package/signals/computed-with-dependencies.js +8 -31
- package/signals/effect-with-dependencies.js +8 -31
- package/signals/implementation/api.js +33 -33
- package/signals/implementation/computed.js +125 -104
- package/signals/implementation/configure.js +18 -41
- package/signals/implementation/effect.js +48 -66
- package/signals/implementation/errors.js +5 -29
- package/signals/implementation/graph.js +164 -136
- package/signals/implementation/index.js +10 -27
- package/signals/implementation/signal.js +91 -101
- package/signals/implementation/to-observable.js +21 -38
- package/signals/implementation/to-signal.js +44 -60
- package/signals/implementation/untracked.js +15 -31
- package/signals/implementation/watch.js +58 -73
- package/signals/index.d.ts +1 -0
- package/signals/index.js +7 -23
- package/signals/pipe.js +7 -31
- package/signals/switch-map.js +4 -27
- package/signals/types.js +1 -16
- package/signals/untracked-operator.d.ts +3 -0
- package/signals/untracked-operator.js +12 -0
- package/sse/index.js +2 -19
- package/sse/model.js +1 -16
- package/sse/server-sent-events-source.js +54 -76
- package/sse/server-sent-events.js +48 -72
- package/supports.js +5 -32
- package/templates/index.js +9 -26
- package/templates/module.js +37 -58
- package/templates/providers/file.template-provider.js +39 -81
- package/templates/providers/memory.template-provider.js +27 -55
- package/templates/renderers/handlebars.template-renderer.js +84 -122
- package/templates/renderers/jsx.template-renderer.js +28 -56
- package/templates/renderers/mjml.template-renderer.js +42 -82
- package/templates/renderers/string.template-renderer.js +24 -52
- package/templates/resolvers/file.template-resolver.js +45 -89
- package/templates/resolvers/jsx.template-resolver.js +29 -59
- package/templates/resolvers/string.template-resolver.js +29 -59
- package/templates/template-renderer.provider.js +36 -66
- package/templates/template-resolver.provider.js +36 -66
- package/templates/template.model.js +39 -69
- package/templates/template.provider.js +1 -24
- package/templates/template.renderer.js +11 -34
- package/templates/template.resolver.js +1 -24
- package/templates/template.service.js +49 -82
- package/templates/tokens.js +3 -27
- package/templates/types/jsx.intrinsic-elements.js +1 -16
- package/text/dynamic-text.model.js +41 -70
- package/text/index.js +3 -20
- package/text/localizable-text.model.js +1 -16
- package/text/localization.service.js +196 -229
- package/theme/adapters/css-adapter.js +23 -46
- package/theme/adapters/tailwind-adapter.js +29 -52
- package/theme/index.js +1 -18
- package/theme/theme-service.js +107 -146
- package/threading/index.js +2 -19
- package/threading/thread-pool.js +48 -70
- package/threading/thread-worker.js +3 -26
- package/tokens.js +2 -25
- package/types/geo-json.js +1 -16
- package/types.js +2 -16
- package/utils/alphabet.js +12 -35
- package/utils/any-iterable-iterator.js +4 -27
- package/utils/array/array-backtracker.js +42 -65
- package/utils/array/array.js +76 -79
- package/utils/array/index.js +2 -19
- package/utils/async-iterable-helpers/all.js +25 -46
- package/utils/async-iterable-helpers/any.js +25 -46
- package/utils/async-iterable-helpers/assert.js +22 -43
- package/utils/async-iterable-helpers/batch.js +26 -46
- package/utils/async-iterable-helpers/buffer.js +47 -64
- package/utils/async-iterable-helpers/concat.js +5 -27
- package/utils/async-iterable-helpers/default-if-empty.js +9 -32
- package/utils/async-iterable-helpers/deferred.js +3 -26
- package/utils/async-iterable-helpers/difference.js +24 -48
- package/utils/async-iterable-helpers/distinct.js +23 -44
- package/utils/async-iterable-helpers/drain.js +4 -26
- package/utils/async-iterable-helpers/filter.js +23 -44
- package/utils/async-iterable-helpers/first-or-default.js +8 -30
- package/utils/async-iterable-helpers/first.js +8 -30
- package/utils/async-iterable-helpers/for-each.js +18 -38
- package/utils/async-iterable-helpers/group-single.js +3 -26
- package/utils/async-iterable-helpers/group-to-map.js +20 -41
- package/utils/async-iterable-helpers/group-to-single-map.js +23 -44
- package/utils/async-iterable-helpers/group.js +3 -26
- package/utils/async-iterable-helpers/includes.js +7 -28
- package/utils/async-iterable-helpers/index.js +48 -65
- package/utils/async-iterable-helpers/interrupt.js +19 -43
- package/utils/async-iterable-helpers/is-async-iterable.js +5 -29
- package/utils/async-iterable-helpers/last-or-default.js +13 -36
- package/utils/async-iterable-helpers/last.js +13 -36
- package/utils/async-iterable-helpers/map-many.js +19 -40
- package/utils/async-iterable-helpers/map.js +19 -40
- package/utils/async-iterable-helpers/materialize.js +21 -42
- package/utils/async-iterable-helpers/metadata.js +38 -58
- package/utils/async-iterable-helpers/multiplex.js +23 -44
- package/utils/async-iterable-helpers/observable-iterable.js +31 -53
- package/utils/async-iterable-helpers/pairwise.js +26 -44
- package/utils/async-iterable-helpers/parallel/feed.js +24 -45
- package/utils/async-iterable-helpers/parallel/filter.js +8 -31
- package/utils/async-iterable-helpers/parallel/for-each.js +21 -44
- package/utils/async-iterable-helpers/parallel/group.js +9 -32
- package/utils/async-iterable-helpers/parallel/index.js +7 -24
- package/utils/async-iterable-helpers/parallel/map.js +6 -29
- package/utils/async-iterable-helpers/parallel/tap.js +6 -29
- package/utils/async-iterable-helpers/parallel/types.js +1 -16
- package/utils/async-iterable-helpers/reduce.js +31 -46
- package/utils/async-iterable-helpers/retry.js +43 -58
- package/utils/async-iterable-helpers/single-or-default.js +17 -40
- package/utils/async-iterable-helpers/single.js +19 -42
- package/utils/async-iterable-helpers/skip.js +3 -26
- package/utils/async-iterable-helpers/sort.js +6 -29
- package/utils/async-iterable-helpers/take-until.js +32 -49
- package/utils/async-iterable-helpers/take-while.js +29 -46
- package/utils/async-iterable-helpers/take.js +10 -33
- package/utils/async-iterable-helpers/tap.js +19 -40
- package/utils/async-iterable-helpers/throttle.js +9 -30
- package/utils/async-iterable-helpers/to-array.js +10 -33
- package/utils/async-iterable-helpers/to-async-iterable-iterator.js +40 -59
- package/utils/async-iterable-helpers/to-async-iterator.js +32 -54
- package/utils/async-iterable-helpers/to-set.js +10 -33
- package/utils/async-iterable-helpers/to-sync-iterable.js +6 -27
- package/utils/async-iterable-helpers/types.js +1 -16
- package/utils/async-iterable-helpers/while.js +25 -46
- package/utils/async-iterator-iterable-iterator.js +41 -62
- package/utils/backoff.js +109 -109
- package/utils/base64.js +153 -140
- package/utils/benchmark.js +114 -107
- package/utils/binary-search.js +70 -87
- package/utils/binary.js +50 -61
- package/utils/cancellation-token.js +120 -140
- package/utils/clone.js +43 -64
- package/utils/comparison.js +76 -98
- package/utils/compression.js +107 -118
- package/utils/config-parser.js +21 -48
- package/utils/crc32.js +20 -42
- package/utils/cryptography.js +163 -121
- package/utils/date-time.js +102 -138
- package/utils/encoding.js +62 -60
- package/utils/enum.js +27 -53
- package/utils/equals.js +103 -119
- package/utils/event-loop.js +19 -39
- package/utils/factory-map.js +53 -75
- package/utils/feedable-async-iterable.js +47 -70
- package/utils/file-reader.js +15 -41
- package/utils/format-error.js +36 -57
- package/utils/format.js +32 -53
- package/utils/function/index.js +2 -19
- package/utils/function/memoize.js +38 -53
- package/utils/function/throttle.js +26 -48
- package/utils/helpers.js +93 -102
- package/utils/image.js +62 -88
- package/utils/index.js +48 -65
- package/utils/iterable-helpers/all.js +8 -31
- package/utils/iterable-helpers/any.js +8 -31
- package/utils/iterable-helpers/assert.js +7 -30
- package/utils/iterable-helpers/batch.js +11 -34
- package/utils/iterable-helpers/concat.js +4 -27
- package/utils/iterable-helpers/default-if-empty.js +9 -32
- package/utils/iterable-helpers/deferred.js +2 -25
- package/utils/iterable-helpers/difference.js +21 -45
- package/utils/iterable-helpers/distinct.js +9 -32
- package/utils/iterable-helpers/drain.js +4 -26
- package/utils/iterable-helpers/filter.js +7 -30
- package/utils/iterable-helpers/first-or-default.js +8 -30
- package/utils/iterable-helpers/first.js +8 -30
- package/utils/iterable-helpers/for-each.js +5 -28
- package/utils/iterable-helpers/group-single.js +3 -26
- package/utils/iterable-helpers/group-to-map.js +9 -32
- package/utils/iterable-helpers/group-to-single-map.js +10 -33
- package/utils/iterable-helpers/group.js +3 -26
- package/utils/iterable-helpers/includes.js +3 -26
- package/utils/iterable-helpers/index.js +39 -56
- package/utils/iterable-helpers/is-iterable.js +5 -29
- package/utils/iterable-helpers/last-or-default.js +13 -36
- package/utils/iterable-helpers/last.js +13 -36
- package/utils/iterable-helpers/map-many.js +6 -29
- package/utils/iterable-helpers/map.js +6 -29
- package/utils/iterable-helpers/materialize.js +2 -25
- package/utils/iterable-helpers/metadata.js +16 -38
- package/utils/iterable-helpers/pairwise.js +11 -33
- package/utils/iterable-helpers/range.js +4 -27
- package/utils/iterable-helpers/reduce.js +11 -33
- package/utils/iterable-helpers/single-or-default.js +14 -37
- package/utils/iterable-helpers/single.js +17 -40
- package/utils/iterable-helpers/skip.js +6 -29
- package/utils/iterable-helpers/sort.js +4 -27
- package/utils/iterable-helpers/take-until.js +8 -31
- package/utils/iterable-helpers/take-while.js +10 -33
- package/utils/iterable-helpers/take.js +10 -33
- package/utils/iterable-helpers/tap.js +6 -29
- package/utils/iterable-helpers/types.js +1 -16
- package/utils/iterable-helpers/while.js +8 -31
- package/utils/jwt.js +77 -100
- package/utils/map.js +35 -62
- package/utils/math.js +102 -64
- package/utils/merge.js +26 -45
- package/utils/middleware.js +36 -60
- package/utils/moving-metric.js +155 -188
- package/utils/noop.js +4 -27
- package/utils/object/decycle.js +57 -78
- package/utils/object/dereference.js +46 -44
- package/utils/object/forward-ref.js +57 -73
- package/utils/object/index.js +7 -24
- package/utils/object/lazy-property.js +81 -96
- package/utils/object/merge.js +48 -70
- package/utils/object/object.js +106 -136
- package/utils/object/property-name.js +69 -72
- package/utils/ordered-feedable-async-iterable.js +42 -65
- package/utils/patch-worker.js +69 -90
- package/utils/patterns.js +7 -29
- package/utils/periodic-reporter.js +60 -82
- package/utils/periodic-sampler.js +67 -91
- package/utils/provider-function-iterable.js +26 -48
- package/utils/proxy.js +17 -42
- package/utils/random.js +40 -50
- package/utils/reflection.js +13 -41
- package/utils/repl.js +14 -33
- package/utils/set.js +36 -62
- package/utils/singleton.js +18 -41
- package/utils/sort.js +53 -77
- package/utils/stream/finalize-stream.js +43 -62
- package/utils/stream/index.js +6 -23
- package/utils/stream/readable-stream-adapter.js +35 -57
- package/utils/stream/readable-stream-from-promise.js +7 -28
- package/utils/stream/size-limited-stream.js +12 -35
- package/utils/stream/stream-helper-types.js +1 -16
- package/utils/stream/stream-reader.js +30 -52
- package/utils/string/hypenate.js +2 -25
- package/utils/string/index.js +3 -20
- package/utils/string/title-case.js +6 -26
- package/utils/string/trim.js +9 -32
- package/utils/throw.js +7 -30
- package/utils/timer.js +70 -91
- package/utils/timing.js +52 -80
- package/utils/type-guards.js +253 -1076
- package/utils/type-of.js +25 -43
- package/utils/units.js +53 -124
- package/utils/url-builder.js +47 -68
- package/utils/value-or-provider.js +6 -29
- package/utils/z-base32.js +42 -63
- package/web-types.js +1 -16
package/utils/crc32.js
CHANGED
|
@@ -1,47 +1,25 @@
|
|
|
1
|
-
|
|
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 crc32_exports = {};
|
|
20
|
-
__export(crc32_exports, {
|
|
21
|
-
crc32b: () => crc32b
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(crc32_exports);
|
|
1
|
+
/* eslint-disable no-bitwise */
|
|
24
2
|
let crcTable;
|
|
25
|
-
function crc32b(bytes) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
3
|
+
export function crc32b(bytes) {
|
|
4
|
+
crcTable ??= generateCrc32Table();
|
|
5
|
+
let crc = 0 ^ (-1);
|
|
6
|
+
for (let i = 0; i < bytes.length; i++) { // eslint-disable-line @typescript-eslint/prefer-for-of
|
|
7
|
+
crc = (crc >>> 8) ^ crcTable[(crc & 0xff) ^ bytes[i]];
|
|
8
|
+
}
|
|
9
|
+
crc = (crc ^ (-1)) >>> 0;
|
|
10
|
+
const buffer = new ArrayBuffer(4);
|
|
11
|
+
const dataView = new DataView(buffer);
|
|
12
|
+
dataView.setUint32(0, crc, false);
|
|
13
|
+
return new Uint8Array(buffer);
|
|
36
14
|
}
|
|
37
15
|
function generateCrc32Table() {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
16
|
+
const table = new Uint32Array(256);
|
|
17
|
+
for (let i = 0; i < 256; i++) {
|
|
18
|
+
let c = i;
|
|
19
|
+
for (let k = 0; k < 8; k++) {
|
|
20
|
+
c = ((c & 1) ? (0xedb88320 ^ (c >>> 1)) : (c >>> 1));
|
|
21
|
+
}
|
|
22
|
+
table[i] = c;
|
|
43
23
|
}
|
|
44
|
-
table
|
|
45
|
-
}
|
|
46
|
-
return table;
|
|
24
|
+
return table;
|
|
47
25
|
}
|
package/utils/cryptography.js
CHANGED
|
@@ -1,137 +1,179 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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 cryptography_exports = {};
|
|
20
|
-
__export(cryptography_exports, {
|
|
21
|
-
decrypt: () => decrypt,
|
|
22
|
-
deriveBytes: () => deriveBytes,
|
|
23
|
-
deriveBytesMultiple: () => deriveBytesMultiple,
|
|
24
|
-
digest: () => digest,
|
|
25
|
-
encrypt: () => encrypt,
|
|
26
|
-
generateEcdsaKey: () => generateEcdsaKey,
|
|
27
|
-
generatePbkdf2Key: () => generatePbkdf2Key,
|
|
28
|
-
importEcdsaKey: () => importEcdsaKey,
|
|
29
|
-
importHmacKey: () => importHmacKey,
|
|
30
|
-
importPbkdf2Key: () => importPbkdf2Key,
|
|
31
|
-
importSymmetricKey: () => importSymmetricKey,
|
|
32
|
-
sign: () => sign,
|
|
33
|
-
verify: () => verify
|
|
34
|
-
});
|
|
35
|
-
module.exports = __toCommonJS(cryptography_exports);
|
|
36
|
-
var import_array = require("./array/array.js");
|
|
37
|
-
var import_base64 = require("./base64.js");
|
|
38
|
-
var import_encoding = require("./encoding.js");
|
|
39
|
-
var import_random = require("./random.js");
|
|
40
|
-
var import_type_guards = require("./type-guards.js");
|
|
41
|
-
var import_z_base32 = require("./z-base32.js");
|
|
1
|
+
import { createArray } from './array/array.js';
|
|
2
|
+
import { encodeBase64, encodeBase64Url } from './base64.js';
|
|
3
|
+
import { decodeText, encodeHex, encodeUtf8 } from './encoding.js';
|
|
4
|
+
import { getRandomBytes } from './random.js';
|
|
5
|
+
import { isDefined, isString } from './type-guards.js';
|
|
6
|
+
import { zBase32Encode } from './z-base32.js';
|
|
42
7
|
const subtle = globalThis.crypto.subtle;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
8
|
+
/**
|
|
9
|
+
* encrypt data
|
|
10
|
+
* @param algorithm algorithm as supported by Web Crypto API
|
|
11
|
+
* @param key key
|
|
12
|
+
* @param data data to encrypt. Encodes string to utf8
|
|
13
|
+
*/
|
|
14
|
+
export function encrypt(algorithm, key, data) {
|
|
15
|
+
const bytes = isString(data) ? encodeUtf8(data) : data;
|
|
16
|
+
const encryptedBuffer = subtle.encrypt(algorithm, key, bytes);
|
|
17
|
+
return {
|
|
18
|
+
toBuffer: async () => encryptedBuffer,
|
|
19
|
+
toHex: async () => encodeHex(await encryptedBuffer),
|
|
20
|
+
toBase64: async () => encodeBase64(await encryptedBuffer),
|
|
21
|
+
toBase64Url: async () => encodeBase64Url(await encryptedBuffer),
|
|
22
|
+
toZBase32: async () => zBase32Encode(await encryptedBuffer)
|
|
23
|
+
};
|
|
53
24
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
25
|
+
/**
|
|
26
|
+
* decrypt data
|
|
27
|
+
* @param algorithm algorithm as supported by Web Crypto API
|
|
28
|
+
* @param key key
|
|
29
|
+
* @param data data to decrypt
|
|
30
|
+
*/
|
|
31
|
+
export function decrypt(algorithm, key, bytes) {
|
|
32
|
+
const decryptedBuffer = subtle.decrypt(algorithm, key, bytes);
|
|
33
|
+
return {
|
|
34
|
+
toBuffer: async () => decryptedBuffer,
|
|
35
|
+
toHex: async () => encodeHex(await decryptedBuffer),
|
|
36
|
+
toBase64: async () => encodeBase64(await decryptedBuffer),
|
|
37
|
+
toBase64Url: async () => encodeBase64Url(await decryptedBuffer),
|
|
38
|
+
toZBase32: async () => zBase32Encode(await decryptedBuffer),
|
|
39
|
+
toUtf8: async () => decodeText(await decryptedBuffer)
|
|
40
|
+
};
|
|
64
41
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
42
|
+
/**
|
|
43
|
+
* hashes data
|
|
44
|
+
* @param algorithm algorithm as supported by Web Crypto API
|
|
45
|
+
* @param data data to encrypt. Encodes string to utf8
|
|
46
|
+
*/
|
|
47
|
+
export function digest(algorithm, data) {
|
|
48
|
+
const bytes = isString(data) ? encodeUtf8(data) : data;
|
|
49
|
+
const arrayBufferPromise = subtle.digest(algorithm, bytes);
|
|
50
|
+
const result = {
|
|
51
|
+
toBuffer: async () => arrayBufferPromise,
|
|
52
|
+
toHex: async () => encodeHex(await arrayBufferPromise),
|
|
53
|
+
toBase64: async () => encodeBase64(await arrayBufferPromise),
|
|
54
|
+
toBase64Url: async () => encodeBase64Url(await arrayBufferPromise),
|
|
55
|
+
toZBase32: async () => zBase32Encode(await arrayBufferPromise)
|
|
56
|
+
};
|
|
57
|
+
return result;
|
|
76
58
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
59
|
+
/**
|
|
60
|
+
* signs data
|
|
61
|
+
* @param algorithm algorithm as supported by Web Crypto API
|
|
62
|
+
* @param key key
|
|
63
|
+
* @param data data to sign
|
|
64
|
+
*/
|
|
65
|
+
export function sign(algorithm, key, data) {
|
|
66
|
+
const bytes = isString(data) ? encodeUtf8(data) : data;
|
|
67
|
+
const arrayBufferPromise = subtle.sign(algorithm, key, bytes);
|
|
68
|
+
const result = {
|
|
69
|
+
toBuffer: async () => arrayBufferPromise,
|
|
70
|
+
toHex: async () => encodeHex(await arrayBufferPromise),
|
|
71
|
+
toBase64: async () => encodeBase64(await arrayBufferPromise),
|
|
72
|
+
toBase64Url: async () => encodeBase64Url(await arrayBufferPromise),
|
|
73
|
+
toZBase32: async () => zBase32Encode(await arrayBufferPromise)
|
|
74
|
+
};
|
|
75
|
+
return result;
|
|
88
76
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
77
|
+
/**
|
|
78
|
+
* verifies data
|
|
79
|
+
* @param algorithm algorithm as supported by Web Crypto API
|
|
80
|
+
* @param key key
|
|
81
|
+
* @param signature signature
|
|
82
|
+
* @param data data to verify using provided signature
|
|
83
|
+
*/
|
|
84
|
+
export async function verify(algorithm, key, signature, data) {
|
|
85
|
+
const signatureBytes = isString(signature) ? encodeUtf8(signature) : signature;
|
|
86
|
+
const dataBytes = isString(data) ? encodeUtf8(data) : data;
|
|
87
|
+
return subtle.verify(algorithm, key, signatureBytes, dataBytes);
|
|
93
88
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
89
|
+
/**
|
|
90
|
+
* imports a HMAC CryptoKey
|
|
91
|
+
* @param algorithm hash algorithm
|
|
92
|
+
* @param key JWK or binary key
|
|
93
|
+
* @param extractable whether the key can be used for exportKey
|
|
94
|
+
*/
|
|
95
|
+
export async function importHmacKey(algorithm, key, extractable = false) {
|
|
96
|
+
const binaryKey = isString(key) ? encodeUtf8(key) : key;
|
|
97
|
+
if (isBinaryKey(binaryKey)) {
|
|
98
|
+
return subtle.importKey('raw', binaryKey, { name: 'HMAC', hash: algorithm }, extractable, ['sign', 'verify']);
|
|
99
|
+
}
|
|
100
|
+
return subtle.importKey('jwk', binaryKey, { name: 'HMAC', hash: algorithm }, extractable, ['sign', 'verify']);
|
|
100
101
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
102
|
+
/**
|
|
103
|
+
* imports a CryptoKey for symmetric encryption
|
|
104
|
+
* @param algorithm symmetric algorithm
|
|
105
|
+
* @param length key length
|
|
106
|
+
* @param key JWK or binary key
|
|
107
|
+
* @param extractable whether the key can be used for exportKey
|
|
108
|
+
*/
|
|
109
|
+
export async function importSymmetricKey(algorithm, length, key, extractable = false) {
|
|
110
|
+
const binaryKey = isString(key) ? encodeUtf8(key) : key;
|
|
111
|
+
if (isBinaryKey(binaryKey)) {
|
|
112
|
+
return subtle.importKey('raw', binaryKey, { name: algorithm, length }, extractable, ['encrypt', 'decrypt']);
|
|
113
|
+
}
|
|
114
|
+
return subtle.importKey('jwk', binaryKey, { name: algorithm, length }, extractable, ['encrypt', 'decrypt']);
|
|
107
115
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
116
|
+
/**
|
|
117
|
+
* imports an ECDSA CryptoKey
|
|
118
|
+
* @param curve ECDSA curve
|
|
119
|
+
* @param key JWK or DER encoded key
|
|
120
|
+
* @param extractable whether the key can be used for exportKey
|
|
121
|
+
*/
|
|
122
|
+
export async function importEcdsaKey(curve, key, extractable = false) {
|
|
123
|
+
const binaryKey = isString(key) ? encodeUtf8(key) : key;
|
|
124
|
+
if (isBinaryKey(binaryKey)) {
|
|
125
|
+
return subtle.importKey('spki', binaryKey, { name: 'ECDSA', namedCurve: curve }, extractable, ['verify']);
|
|
126
|
+
}
|
|
127
|
+
return subtle.importKey('jwk', binaryKey, { name: 'ECDSA', namedCurve: curve }, extractable, ['verify']);
|
|
114
128
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
129
|
+
/**
|
|
130
|
+
* import a pbkdf2 CryptoKey
|
|
131
|
+
* @param key binary key
|
|
132
|
+
* @param extractable whether the key can be used for exportKey
|
|
133
|
+
*/
|
|
134
|
+
export async function importPbkdf2Key(key, extractable = false) {
|
|
135
|
+
const binaryKey = isString(key) ? encodeUtf8(key) : key;
|
|
136
|
+
return globalThis.crypto.subtle.importKey('raw', binaryKey, { name: 'PBKDF2' }, extractable, ['deriveKey', 'deriveBits']);
|
|
118
137
|
}
|
|
119
|
-
|
|
120
|
-
|
|
138
|
+
/**
|
|
139
|
+
* generates a new ECDSA CryptoKeyPair
|
|
140
|
+
* @param curve ECDSA cruve to use
|
|
141
|
+
* @param extractable whether the key can be used for exportKey
|
|
142
|
+
* @param usages whether to generate a key for signing, verifiying or both. Defaults to both
|
|
143
|
+
*/
|
|
144
|
+
export async function generateEcdsaKey(curve, extractable = false, usages = ['sign', 'verify']) {
|
|
145
|
+
return subtle.generateKey({ name: 'ECDSA', namedCurve: curve }, extractable, usages);
|
|
121
146
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
147
|
+
/**
|
|
148
|
+
* generates a pbkdf2 CryptoKey
|
|
149
|
+
* @param extractable whether the key can be used for exportKey
|
|
150
|
+
*/
|
|
151
|
+
export async function generatePbkdf2Key(extractable = false) {
|
|
152
|
+
const key = getRandomBytes(16);
|
|
153
|
+
return importPbkdf2Key(key, extractable);
|
|
125
154
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
155
|
+
/**
|
|
156
|
+
* derive byte array from key
|
|
157
|
+
* @param length length in bytes
|
|
158
|
+
* @param algorithm algorithm to derive with
|
|
159
|
+
* @param baseKey key to derive from
|
|
160
|
+
*/
|
|
161
|
+
export async function deriveBytes(algorithm, baseKey, length) {
|
|
162
|
+
const bytes = await globalThis.crypto.subtle.deriveBits(algorithm, baseKey, length * 8);
|
|
163
|
+
return new Uint8Array(bytes);
|
|
129
164
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
165
|
+
/**
|
|
166
|
+
* derive multiply byte arrays from key
|
|
167
|
+
* @param count how many Uint8Arrays to dervice
|
|
168
|
+
* @param length length of each Uint8Array in bytes
|
|
169
|
+
* @param algorithm algorithm to derive with
|
|
170
|
+
* @param baseKey key to derive from
|
|
171
|
+
*/
|
|
172
|
+
export async function deriveBytesMultiple(algorithm, baseKey, count, length) {
|
|
173
|
+
const totalBits = count * length * 8;
|
|
174
|
+
const bytes = await globalThis.crypto.subtle.deriveBits(algorithm, baseKey, totalBits);
|
|
175
|
+
return createArray(count, (index) => new Uint8Array(bytes.slice(index * length, (index * length) + length)));
|
|
134
176
|
}
|
|
135
177
|
function isBinaryKey(key) {
|
|
136
|
-
|
|
178
|
+
return isDefined(key.byteLength);
|
|
137
179
|
}
|
package/utils/date-time.js
CHANGED
|
@@ -1,139 +1,103 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
function
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
function
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
function
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
function
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
function
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
return {
|
|
104
|
-
date: timestampToNumericDate(timestamp),
|
|
105
|
-
time: timestampToTime(timestamp)
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
function numericDateToTimestamp(numericDate) {
|
|
109
|
-
return numericDate * import_units.millisecondsPerDay;
|
|
110
|
-
}
|
|
111
|
-
function numericDateToDate(numericDate) {
|
|
112
|
-
const timestamp = numericDateToTimestamp(numericDate);
|
|
113
|
-
const date = new Date(timestamp);
|
|
114
|
-
return {
|
|
115
|
-
year: date.getUTCFullYear(),
|
|
116
|
-
month: date.getUTCMonth() + 1,
|
|
117
|
-
day: date.getUTCDate()
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
function numericDateTimeToTimestamp({ date, time }) {
|
|
121
|
-
return numericDateToTimestamp(date) + time;
|
|
122
|
-
}
|
|
123
|
-
function zonedDateObjectToDateTime(zonedDate, units, options) {
|
|
124
|
-
return import_luxon.DateTime.fromObject({ ...zonedDate, ...units }, options);
|
|
125
|
-
}
|
|
126
|
-
function dateTimeToNumericDate(dateTime) {
|
|
127
|
-
const timestamp = dateTime.toUTC(void 0, { keepLocalTime: true }).toMillis();
|
|
128
|
-
return timestampToNumericDate(timestamp);
|
|
129
|
-
}
|
|
130
|
-
function numericDateToDateTime(numericDate, units, options) {
|
|
131
|
-
const date = numericDateToDate(numericDate);
|
|
132
|
-
return import_luxon.DateTime.fromObject({ ...date, ...units }, options);
|
|
133
|
-
}
|
|
134
|
-
function dateTimeToTime(dateTime) {
|
|
135
|
-
return dateTime.startOf("day").until(dateTime).count("milliseconds");
|
|
136
|
-
}
|
|
137
|
-
function numericDateTimeToDateTime({ date, time }, zone) {
|
|
138
|
-
return numericDateToDateTime(date, void 0, { zone }).set({ millisecond: time });
|
|
1
|
+
import { NotSupportedError } from '../error/not-supported.error.js';
|
|
2
|
+
import { DateTime } from 'luxon';
|
|
3
|
+
import { isDate, isNumber } from './type-guards.js';
|
|
4
|
+
import { typeOf } from './type-of.js';
|
|
5
|
+
import { millisecondsPerDay, millisecondsPerHour, millisecondsPerMinute, millisecondsPerSecond } from './units.js';
|
|
6
|
+
export function now() {
|
|
7
|
+
return new Date();
|
|
8
|
+
}
|
|
9
|
+
export function currentTimestamp() {
|
|
10
|
+
return Date.now();
|
|
11
|
+
}
|
|
12
|
+
export function currentTimestampSeconds() {
|
|
13
|
+
return timestampToTimestampSeconds(currentTimestamp());
|
|
14
|
+
}
|
|
15
|
+
export function timestampToTimestampSeconds(timestamp) {
|
|
16
|
+
return Math.floor(timestamp / 1000);
|
|
17
|
+
}
|
|
18
|
+
export function currentDate() {
|
|
19
|
+
const timestamp = currentTimestamp();
|
|
20
|
+
return timestampToNumericDate(timestamp);
|
|
21
|
+
}
|
|
22
|
+
export function currentTime() {
|
|
23
|
+
const timestamp = currentTimestamp();
|
|
24
|
+
return timestampToTime(timestamp);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* @param input {@link DateTime}, Date or timestamp in milliseconds
|
|
28
|
+
* @returns DateTime
|
|
29
|
+
*/
|
|
30
|
+
export function toDateTime(input) {
|
|
31
|
+
if (isNumber(input)) {
|
|
32
|
+
return DateTime.fromMillis(input);
|
|
33
|
+
}
|
|
34
|
+
if (isDate(input)) {
|
|
35
|
+
return DateTime.fromJSDate(input);
|
|
36
|
+
}
|
|
37
|
+
if (DateTime.isDateTime(input)) {
|
|
38
|
+
return input;
|
|
39
|
+
}
|
|
40
|
+
throw new NotSupportedError(`Unsupported input type "${typeOf(input)}".`);
|
|
41
|
+
}
|
|
42
|
+
export function timestampToNumericDate(timestamp) {
|
|
43
|
+
return Math.floor(timestamp / millisecondsPerDay);
|
|
44
|
+
}
|
|
45
|
+
export function dateToNumericDate(date) {
|
|
46
|
+
const timestamp = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate());
|
|
47
|
+
return timestampToNumericDate(timestamp);
|
|
48
|
+
}
|
|
49
|
+
export function timestampToTime(timestamp) {
|
|
50
|
+
return timestamp % millisecondsPerDay;
|
|
51
|
+
}
|
|
52
|
+
export function timeObjectToNumericTime(time) {
|
|
53
|
+
return ((time.hour ?? 0) * millisecondsPerHour)
|
|
54
|
+
+ ((time.minute ?? 0) * millisecondsPerMinute)
|
|
55
|
+
+ ((time.second ?? 0) * millisecondsPerSecond)
|
|
56
|
+
+ (time.millisecond ?? 0);
|
|
57
|
+
}
|
|
58
|
+
export function numericTimeToTimeObject(time) {
|
|
59
|
+
return {
|
|
60
|
+
hour: Math.floor(time / millisecondsPerHour),
|
|
61
|
+
minute: Math.floor((time % millisecondsPerHour) / millisecondsPerMinute),
|
|
62
|
+
second: Math.floor((time % millisecondsPerMinute) / millisecondsPerSecond),
|
|
63
|
+
millisecond: Math.floor(time % millisecondsPerSecond)
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export function timestampToNumericDateAndTime(timestamp) {
|
|
67
|
+
return {
|
|
68
|
+
date: timestampToNumericDate(timestamp),
|
|
69
|
+
time: timestampToTime(timestamp)
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export function numericDateToTimestamp(numericDate) {
|
|
73
|
+
return numericDate * millisecondsPerDay;
|
|
74
|
+
}
|
|
75
|
+
export function numericDateToDate(numericDate) {
|
|
76
|
+
const timestamp = numericDateToTimestamp(numericDate);
|
|
77
|
+
const date = new Date(timestamp);
|
|
78
|
+
return {
|
|
79
|
+
year: date.getUTCFullYear(),
|
|
80
|
+
month: date.getUTCMonth() + 1,
|
|
81
|
+
day: date.getUTCDate()
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export function numericDateTimeToTimestamp({ date, time }) {
|
|
85
|
+
return numericDateToTimestamp(date) + time;
|
|
86
|
+
}
|
|
87
|
+
export function zonedDateObjectToDateTime(zonedDate, units, options) {
|
|
88
|
+
return DateTime.fromObject({ ...zonedDate, ...units }, options);
|
|
89
|
+
}
|
|
90
|
+
export function dateTimeToNumericDate(dateTime) {
|
|
91
|
+
const timestamp = dateTime.toUTC(undefined, { keepLocalTime: true }).toMillis();
|
|
92
|
+
return timestampToNumericDate(timestamp);
|
|
93
|
+
}
|
|
94
|
+
export function numericDateToDateTime(numericDate, units, options) {
|
|
95
|
+
const date = numericDateToDate(numericDate);
|
|
96
|
+
return DateTime.fromObject({ ...date, ...units }, options);
|
|
97
|
+
}
|
|
98
|
+
export function dateTimeToTime(dateTime) {
|
|
99
|
+
return dateTime.startOf('day').until(dateTime).count('milliseconds');
|
|
100
|
+
}
|
|
101
|
+
export function numericDateTimeToDateTime({ date, time }, zone) {
|
|
102
|
+
return numericDateToDateTime(date, undefined, { zone }).set({ millisecond: time });
|
|
139
103
|
}
|