@webda/core 4.0.0-beta.2 → 4.0.0-beta.3
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/README.md +252 -0
- package/lib/application/application.d.ts +437 -0
- package/lib/application/application.d.ts.map +1 -0
- package/lib/application/application.js +792 -0
- package/lib/application/application.js.map +1 -0
- package/lib/application/hooks.d.ts +34 -0
- package/lib/application/hooks.d.ts.map +1 -0
- package/lib/application/hooks.js +57 -0
- package/lib/application/hooks.js.map +1 -0
- package/lib/application/iapplication.d.ts +43 -0
- package/lib/application/iapplication.d.ts.map +1 -0
- package/lib/application/iapplication.js +2 -0
- package/lib/application/iapplication.js.map +1 -0
- package/lib/application/iconfiguration.d.ts +176 -0
- package/lib/application/iconfiguration.d.ts.map +1 -0
- package/lib/application/iconfiguration.js +8 -0
- package/lib/application/iconfiguration.js.map +1 -0
- package/lib/application/runner.d.ts +8 -0
- package/lib/application/runner.d.ts.map +1 -0
- package/lib/application/runner.js +26 -0
- package/lib/application/runner.js.map +1 -0
- package/lib/{unpackedapplication.d.ts → application/unpackedapplication.d.ts} +43 -23
- package/lib/application/unpackedapplication.d.ts.map +1 -0
- package/lib/application/unpackedapplication.js +492 -0
- package/lib/application/unpackedapplication.js.map +1 -0
- package/lib/bin/cli-phase.d.ts +28 -0
- package/lib/bin/cli-phase.d.ts.map +1 -0
- package/lib/bin/cli-phase.js +44 -0
- package/lib/bin/cli-phase.js.map +1 -0
- package/lib/bin/cli.d.ts +161 -0
- package/lib/bin/cli.d.ts.map +1 -0
- package/lib/bin/cli.js +828 -0
- package/lib/bin/cli.js.map +1 -0
- package/lib/bin/launcher.d.ts +3 -0
- package/lib/bin/launcher.d.ts.map +1 -0
- package/lib/bin/launcher.js +50 -0
- package/lib/bin/launcher.js.map +1 -0
- package/lib/cache/cache.d.ts +33 -0
- package/lib/cache/cache.d.ts.map +1 -0
- package/lib/cache/cache.js +8 -0
- package/lib/cache/cache.js.map +1 -0
- package/lib/{services/configuration.d.ts → configurations/configuration.service.d.ts} +58 -58
- package/lib/configurations/configuration.service.d.ts.map +1 -0
- package/lib/configurations/configuration.service.js +248 -0
- package/lib/configurations/configuration.service.js.map +1 -0
- package/lib/configurations/fileconfiguration.service.d.ts +30 -0
- package/lib/configurations/fileconfiguration.service.d.ts.map +1 -0
- package/lib/configurations/fileconfiguration.service.js +65 -0
- package/lib/configurations/fileconfiguration.service.js.map +1 -0
- package/lib/configurations/kubernetesconfiguration.service.d.ts +43 -0
- package/lib/configurations/kubernetesconfiguration.service.d.ts.map +1 -0
- package/lib/configurations/kubernetesconfiguration.service.js +83 -0
- package/lib/configurations/kubernetesconfiguration.service.js.map +1 -0
- package/lib/contexts/execution.d.ts +33 -0
- package/lib/contexts/execution.d.ts.map +1 -0
- package/lib/contexts/execution.js +73 -0
- package/lib/contexts/execution.js.map +1 -0
- package/lib/contexts/globalcontext.d.ts +29 -0
- package/lib/contexts/globalcontext.d.ts.map +1 -0
- package/lib/contexts/globalcontext.js +38 -0
- package/lib/contexts/globalcontext.js.map +1 -0
- package/lib/{utils → contexts}/httpcontext.d.ts +44 -19
- package/lib/contexts/httpcontext.d.ts.map +1 -0
- package/lib/{utils → contexts}/httpcontext.js +95 -27
- package/lib/contexts/httpcontext.js.map +1 -0
- package/lib/contexts/icontext.d.ts +236 -0
- package/lib/contexts/icontext.d.ts.map +1 -0
- package/lib/contexts/icontext.js +230 -0
- package/lib/contexts/icontext.js.map +1 -0
- package/lib/contexts/operationcontext.d.ts +179 -0
- package/lib/contexts/operationcontext.d.ts.map +1 -0
- package/lib/contexts/operationcontext.js +358 -0
- package/lib/contexts/operationcontext.js.map +1 -0
- package/lib/contexts/simplecontext.d.ts +31 -0
- package/lib/contexts/simplecontext.d.ts.map +1 -0
- package/lib/contexts/simplecontext.js +45 -0
- package/lib/contexts/simplecontext.js.map +1 -0
- package/lib/contexts/webcontext.d.ts +218 -0
- package/lib/contexts/webcontext.d.ts.map +1 -0
- package/lib/contexts/webcontext.js +389 -0
- package/lib/contexts/webcontext.js.map +1 -0
- package/lib/core/authorizer.d.ts +23 -0
- package/lib/core/authorizer.d.ts.map +1 -0
- package/lib/core/authorizer.js +17 -0
- package/lib/core/authorizer.js.map +1 -0
- package/lib/core/core.d.ts +225 -0
- package/lib/core/core.d.ts.map +1 -0
- package/lib/core/core.js +576 -0
- package/lib/core/core.js.map +1 -0
- package/lib/core/hooks.d.ts +72 -0
- package/lib/core/hooks.d.ts.map +1 -0
- package/lib/core/hooks.js +73 -0
- package/lib/core/hooks.js.map +1 -0
- package/lib/core/icore.d.ts +249 -0
- package/lib/core/icore.d.ts.map +1 -0
- package/lib/core/icore.js +15 -0
- package/lib/core/icore.js.map +1 -0
- package/lib/core/instancestorage.d.ts +61 -0
- package/lib/core/instancestorage.d.ts.map +1 -0
- package/lib/core/instancestorage.js +75 -0
- package/lib/core/instancestorage.js.map +1 -0
- package/lib/core/operations.d.ts +181 -0
- package/lib/core/operations.d.ts.map +1 -0
- package/lib/core/operations.js +559 -0
- package/lib/core/operations.js.map +1 -0
- package/lib/errors/errors.d.ts +126 -0
- package/lib/errors/errors.d.ts.map +1 -0
- package/lib/errors/errors.js +165 -0
- package/lib/errors/errors.js.map +1 -0
- package/lib/events/asynceventemitter.d.ts +159 -0
- package/lib/events/asynceventemitter.d.ts.map +1 -0
- package/lib/events/asynceventemitter.js +152 -0
- package/lib/events/asynceventemitter.js.map +1 -0
- package/lib/events/events.d.ts +112 -0
- package/lib/events/events.d.ts.map +1 -0
- package/lib/events/events.js +45 -0
- package/lib/events/events.js.map +1 -0
- package/lib/index.d.ts +82 -53
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +81 -62
- package/lib/index.js.map +1 -1
- package/lib/loggers/console.service.d.ts +24 -0
- package/lib/loggers/console.service.d.ts.map +1 -0
- package/lib/loggers/console.service.js +30 -0
- package/lib/loggers/console.service.js.map +1 -0
- package/lib/loggers/file.service.d.ts +25 -0
- package/lib/loggers/file.service.d.ts.map +1 -0
- package/lib/loggers/file.service.js +33 -0
- package/lib/loggers/file.service.js.map +1 -0
- package/lib/loggers/hooks.d.ts +20 -0
- package/lib/loggers/hooks.d.ts.map +1 -0
- package/lib/loggers/hooks.js +40 -0
- package/lib/loggers/hooks.js.map +1 -0
- package/lib/loggers/ilogger.d.ts +76 -0
- package/lib/loggers/ilogger.d.ts.map +1 -0
- package/lib/loggers/ilogger.js +108 -0
- package/lib/loggers/ilogger.js.map +1 -0
- package/lib/loggers/logger.d.ts +13 -0
- package/lib/loggers/logger.d.ts.map +1 -0
- package/lib/loggers/logger.js +18 -0
- package/lib/loggers/logger.js.map +1 -0
- package/lib/loggers/memory.service.d.ts +18 -0
- package/lib/loggers/memory.service.d.ts.map +1 -0
- package/lib/loggers/memory.service.js +21 -0
- package/lib/loggers/memory.service.js.map +1 -0
- package/lib/loggers/params.d.ts +47 -0
- package/lib/loggers/params.d.ts.map +1 -0
- package/lib/loggers/params.js +56 -0
- package/lib/loggers/params.js.map +1 -0
- package/lib/metrics/metrics.d.ts +25 -0
- package/lib/metrics/metrics.d.ts.map +1 -0
- package/lib/metrics/metrics.js +51 -0
- package/lib/metrics/metrics.js.map +1 -0
- package/lib/models/aclmodel.d.ts +20 -76
- package/lib/models/aclmodel.d.ts.map +1 -1
- package/lib/models/aclmodel.js +27 -203
- package/lib/models/aclmodel.js.map +1 -1
- package/lib/models/coremodel.model.d.ts +5 -0
- package/lib/models/coremodel.model.d.ts.map +1 -0
- package/lib/models/coremodel.model.js +5 -0
- package/lib/models/coremodel.model.js.map +1 -0
- package/lib/models/decorator.d.ts +63 -0
- package/lib/models/decorator.d.ts.map +1 -0
- package/lib/models/decorator.js +63 -0
- package/lib/models/decorator.js.map +1 -0
- package/lib/models/deployment.d.ts +1 -1
- package/lib/models/deployment.d.ts.map +1 -1
- package/lib/models/ident.model.d.ts +89 -0
- package/lib/models/ident.model.d.ts.map +1 -0
- package/lib/models/ident.model.js +115 -0
- package/lib/models/ident.model.js.map +1 -0
- package/lib/models/ownermodel.model.d.ts +68 -0
- package/lib/models/ownermodel.model.d.ts.map +1 -0
- package/lib/models/ownermodel.model.js +112 -0
- package/lib/models/ownermodel.model.js.map +1 -0
- package/lib/models/registry.model.d.ts +76 -0
- package/lib/models/registry.model.d.ts.map +1 -0
- package/lib/models/registry.model.js +104 -0
- package/lib/models/registry.model.js.map +1 -0
- package/lib/models/rolemodel.model.d.ts +28 -0
- package/lib/models/rolemodel.model.d.ts.map +1 -0
- package/lib/models/{rolemodel.js → rolemodel.model.js} +23 -5
- package/lib/models/rolemodel.model.js.map +1 -0
- package/lib/models/simpleuser.model.d.ts +78 -0
- package/lib/models/simpleuser.model.d.ts.map +1 -0
- package/lib/models/simpleuser.model.js +123 -0
- package/lib/models/simpleuser.model.js.map +1 -0
- package/lib/models/types.d.ts +113 -0
- package/lib/models/types.d.ts.map +1 -0
- package/lib/models/types.js +2 -0
- package/lib/models/types.js.map +1 -0
- package/lib/models/user.model.d.ts +103 -0
- package/lib/models/user.model.d.ts.map +1 -0
- package/lib/models/user.model.js +125 -0
- package/lib/models/user.model.js.map +1 -0
- package/lib/queues/{memoryqueue.d.ts → memoryqueue.service.d.ts} +26 -13
- package/lib/queues/memoryqueue.service.d.ts.map +1 -0
- package/lib/queues/{memoryqueue.js → memoryqueue.service.js} +55 -31
- package/lib/queues/memoryqueue.service.js.map +1 -0
- package/lib/queues/pubsubservice.d.ts +8 -6
- package/lib/queues/pubsubservice.d.ts.map +1 -1
- package/lib/queues/pubsubservice.js +5 -4
- package/lib/queues/pubsubservice.js.map +1 -1
- package/lib/queues/queueservice.d.ts +9 -11
- package/lib/queues/queueservice.d.ts.map +1 -1
- package/lib/queues/queueservice.js +41 -13
- package/lib/queues/queueservice.js.map +1 -1
- package/lib/rest/hooks.d.ts +8 -0
- package/lib/rest/hooks.d.ts.map +1 -0
- package/lib/rest/hooks.js +10 -0
- package/lib/rest/hooks.js.map +1 -0
- package/lib/rest/irest.d.ts +212 -0
- package/lib/rest/irest.d.ts.map +1 -0
- package/lib/rest/irest.js +39 -0
- package/lib/rest/irest.js.map +1 -0
- package/lib/rest/originfilter.d.ts +38 -0
- package/lib/rest/originfilter.d.ts.map +1 -0
- package/lib/rest/originfilter.js +61 -0
- package/lib/rest/originfilter.js.map +1 -0
- package/lib/rest/restoperationstransport.service.d.ts +193 -0
- package/lib/rest/restoperationstransport.service.d.ts.map +1 -0
- package/lib/rest/restoperationstransport.service.js +780 -0
- package/lib/rest/restoperationstransport.service.js.map +1 -0
- package/lib/rest/router.service.d.ts +244 -0
- package/lib/rest/router.service.d.ts.map +1 -0
- package/lib/rest/router.service.js +843 -0
- package/lib/rest/router.service.js.map +1 -0
- package/lib/schemas/hooks.d.ts +48 -0
- package/lib/schemas/hooks.d.ts.map +1 -0
- package/lib/schemas/hooks.js +152 -0
- package/lib/schemas/hooks.js.map +1 -0
- package/lib/services/audit.model.d.ts +208 -0
- package/lib/services/audit.model.d.ts.map +1 -0
- package/lib/services/audit.model.js +431 -0
- package/lib/services/audit.model.js.map +1 -0
- package/lib/services/{authentication.d.ts → authentication.service.d.ts} +140 -59
- package/lib/services/authentication.service.d.ts.map +1 -0
- package/lib/services/authentication.service.js +932 -0
- package/lib/services/authentication.service.js.map +1 -0
- package/lib/services/binary.service.d.ts +808 -0
- package/lib/services/binary.service.d.ts.map +1 -0
- package/lib/services/binary.service.js +1365 -0
- package/lib/services/binary.service.js.map +1 -0
- package/lib/services/cloudbinary.d.ts +17 -12
- package/lib/services/cloudbinary.d.ts.map +1 -1
- package/lib/services/cloudbinary.js +23 -17
- package/lib/services/cloudbinary.js.map +1 -1
- package/lib/services/command.d.ts +118 -0
- package/lib/services/command.d.ts.map +1 -0
- package/lib/services/command.js +97 -0
- package/lib/services/command.js.map +1 -0
- package/lib/services/cron.service.d.ts +142 -0
- package/lib/services/cron.service.d.ts.map +1 -0
- package/lib/services/cron.service.js +291 -0
- package/lib/services/cron.service.js.map +1 -0
- package/lib/services/{cryptoservice.d.ts → cryptoservice.service.d.ts} +75 -141
- package/lib/services/cryptoservice.service.d.ts.map +1 -0
- package/lib/services/cryptoservice.service.js +527 -0
- package/lib/services/cryptoservice.service.js.map +1 -0
- package/lib/services/debugmailer.service.d.ts +49 -0
- package/lib/services/debugmailer.service.d.ts.map +1 -0
- package/lib/services/{debugmailer.js → debugmailer.service.js} +25 -10
- package/lib/services/debugmailer.service.js.map +1 -0
- package/lib/services/domainservice.service.d.ts +203 -0
- package/lib/services/domainservice.service.d.ts.map +1 -0
- package/lib/services/domainservice.service.js +600 -0
- package/lib/services/domainservice.service.js.map +1 -0
- package/lib/services/httpserver.service.d.ts +248 -0
- package/lib/services/httpserver.service.d.ts.map +1 -0
- package/lib/services/httpserver.service.js +673 -0
- package/lib/services/httpserver.service.js.map +1 -0
- package/lib/services/iauthentication.d.ts +9 -0
- package/lib/services/iauthentication.d.ts.map +1 -0
- package/lib/services/iauthentication.js +2 -0
- package/lib/services/iauthentication.js.map +1 -0
- package/lib/services/icryptoservice.d.ts +127 -0
- package/lib/services/icryptoservice.d.ts.map +1 -0
- package/lib/services/icryptoservice.js +68 -0
- package/lib/services/icryptoservice.js.map +1 -0
- package/lib/services/imailer.d.ts +17 -0
- package/lib/services/imailer.d.ts.map +1 -0
- package/lib/services/imailer.js +2 -0
- package/lib/services/imailer.js.map +1 -0
- package/lib/services/iservice.d.ts +104 -0
- package/lib/services/iservice.d.ts.map +1 -0
- package/lib/services/iservice.js +63 -0
- package/lib/services/iservice.js.map +1 -0
- package/lib/services/mailer.service.d.ts +220 -0
- package/lib/services/mailer.service.d.ts.map +1 -0
- package/lib/services/mailer.service.js +251 -0
- package/lib/services/mailer.service.js.map +1 -0
- package/lib/services/{notificationservice.d.ts → notificationservice.service.d.ts} +10 -11
- package/lib/services/notificationservice.service.d.ts.map +1 -0
- package/lib/services/{notificationservice.js → notificationservice.service.js} +24 -12
- package/lib/services/notificationservice.service.js.map +1 -0
- package/lib/services/oauth.d.ts +52 -28
- package/lib/services/oauth.d.ts.map +1 -1
- package/lib/services/oauth.js +365 -254
- package/lib/services/oauth.js.map +1 -1
- package/lib/services/operationstransport.d.ts +65 -0
- package/lib/services/operationstransport.d.ts.map +1 -0
- package/lib/services/operationstransport.js +103 -0
- package/lib/services/operationstransport.js.map +1 -0
- package/lib/services/{prometheus.d.ts → prometheus.service.d.ts} +13 -12
- package/lib/services/prometheus.service.d.ts.map +1 -0
- package/lib/services/prometheus.service.js +203 -0
- package/lib/services/prometheus.service.js.map +1 -0
- package/lib/services/{resource.d.ts → resource.service.d.ts} +34 -15
- package/lib/services/resource.service.d.ts.map +1 -0
- package/lib/services/resource.service.js +301 -0
- package/lib/services/resource.service.js.map +1 -0
- package/lib/services/service.d.ts +87 -188
- package/lib/services/service.d.ts.map +1 -1
- package/lib/services/service.js +407 -422
- package/lib/services/service.js.map +1 -1
- package/lib/services/servicecommands.d.ts +99 -0
- package/lib/services/servicecommands.d.ts.map +1 -0
- package/lib/services/servicecommands.js +165 -0
- package/lib/services/servicecommands.js.map +1 -0
- package/lib/services/serviceparameters.d.ts +33 -0
- package/lib/services/serviceparameters.d.ts.map +1 -0
- package/lib/services/serviceparameters.js +79 -0
- package/lib/services/serviceparameters.js.map +1 -0
- package/lib/{utils → session}/cookie.d.ts +32 -19
- package/lib/session/cookie.d.ts.map +1 -0
- package/lib/{utils → session}/cookie.js +76 -23
- package/lib/session/cookie.js.map +1 -0
- package/lib/session/manager.model.d.ts +71 -0
- package/lib/session/manager.model.d.ts.map +1 -0
- package/lib/session/manager.model.js +155 -0
- package/lib/session/manager.model.js.map +1 -0
- package/lib/session/session.d.ts +57 -0
- package/lib/session/session.d.ts.map +1 -0
- package/lib/session/session.js +126 -0
- package/lib/session/session.js.map +1 -0
- package/lib/stores/istore.d.ts +99 -0
- package/lib/stores/istore.d.ts.map +1 -0
- package/lib/stores/istore.js +26 -0
- package/lib/stores/istore.js.map +1 -0
- package/lib/stores/memory.service.d.ts +114 -0
- package/lib/stores/memory.service.d.ts.map +1 -0
- package/lib/stores/memory.service.js +343 -0
- package/lib/stores/memory.service.js.map +1 -0
- package/lib/stores/store.d.ts +126 -626
- package/lib/stores/store.d.ts.map +1 -1
- package/lib/stores/store.js +257 -1117
- package/lib/stores/store.js.map +1 -1
- package/lib/templates/templates.d.ts +39 -0
- package/lib/templates/templates.d.ts.map +1 -0
- package/lib/templates/templates.js +92 -0
- package/lib/templates/templates.js.map +1 -0
- package/lib/test/application.d.ts +174 -0
- package/lib/test/application.d.ts.map +1 -0
- package/lib/test/application.js +288 -0
- package/lib/test/application.js.map +1 -0
- package/lib/test/asyncstorage.d.ts +16 -0
- package/lib/test/asyncstorage.d.ts.map +1 -0
- package/lib/test/asyncstorage.js +32 -0
- package/lib/test/asyncstorage.js.map +1 -0
- package/lib/test/core.d.ts +63 -0
- package/lib/test/core.d.ts.map +1 -0
- package/lib/test/core.js +190 -0
- package/lib/test/core.js.map +1 -0
- package/lib/test/index.d.ts +7 -0
- package/lib/test/index.d.ts.map +1 -0
- package/lib/test/index.js +8 -0
- package/lib/test/index.js.map +1 -0
- package/lib/test/internal.d.ts +34 -0
- package/lib/test/internal.d.ts.map +1 -0
- package/lib/test/internal.js +156 -0
- package/lib/test/internal.js.map +1 -0
- package/lib/test/objects.d.ts +318 -0
- package/lib/test/objects.d.ts.map +1 -0
- package/lib/test/objects.js +443 -0
- package/lib/test/objects.js.map +1 -0
- package/lib/utils/abstractdeployer.d.ts +4 -2
- package/lib/utils/abstractdeployer.d.ts.map +1 -1
- package/lib/utils/abstractdeployer.js +3 -0
- package/lib/utils/abstractdeployer.js.map +1 -1
- package/package.json +85 -60
- package/test/cachedapp/webda.config.json +1 -5
- package/test/config-cached.json +1 -5
- package/test/config.json +0 -9
- package/test/my-cnf.json +9 -0
- package/webda.module.json +3463 -2482
- package/lib/application.d.ts +0 -888
- package/lib/application.d.ts.map +0 -1
- package/lib/application.js +0 -768
- package/lib/application.js.map +0 -1
- package/lib/application.spec.d.ts +0 -2
- package/lib/application.spec.d.ts.map +0 -1
- package/lib/application.spec.js +0 -248
- package/lib/application.spec.js.map +0 -1
- package/lib/core.d.ts +0 -743
- package/lib/core.d.ts.map +0 -1
- package/lib/core.js +0 -1334
- package/lib/core.js.map +0 -1
- package/lib/core.spec.d.ts +0 -2
- package/lib/core.spec.d.ts.map +0 -1
- package/lib/core.spec.js +0 -790
- package/lib/core.spec.js.map +0 -1
- package/lib/errors.d.ts +0 -64
- package/lib/errors.d.ts.map +0 -1
- package/lib/errors.js +0 -97
- package/lib/errors.js.map +0 -1
- package/lib/errors.spec.d.ts +0 -2
- package/lib/errors.spec.d.ts.map +0 -1
- package/lib/errors.spec.js +0 -33
- package/lib/errors.spec.js.map +0 -1
- package/lib/models/aclmodel.spec.d.ts +0 -2
- package/lib/models/aclmodel.spec.d.ts.map +0 -1
- package/lib/models/aclmodel.spec.js +0 -187
- package/lib/models/aclmodel.spec.js.map +0 -1
- package/lib/models/coremodel.d.ts +0 -896
- package/lib/models/coremodel.d.ts.map +0 -1
- package/lib/models/coremodel.js +0 -1214
- package/lib/models/coremodel.js.map +0 -1
- package/lib/models/coremodel.spec.d.ts +0 -2
- package/lib/models/coremodel.spec.d.ts.map +0 -1
- package/lib/models/coremodel.spec.js +0 -464
- package/lib/models/coremodel.spec.js.map +0 -1
- package/lib/models/ident.d.ts +0 -68
- package/lib/models/ident.d.ts.map +0 -1
- package/lib/models/ident.js +0 -26
- package/lib/models/ident.js.map +0 -1
- package/lib/models/ident.spec.d.ts +0 -2
- package/lib/models/ident.spec.d.ts.map +0 -1
- package/lib/models/ident.spec.js +0 -24
- package/lib/models/ident.spec.js.map +0 -1
- package/lib/models/ownermodel.d.ts +0 -51
- package/lib/models/ownermodel.d.ts.map +0 -1
- package/lib/models/ownermodel.js +0 -65
- package/lib/models/ownermodel.js.map +0 -1
- package/lib/models/ownermodel.spec.d.ts +0 -2
- package/lib/models/ownermodel.spec.d.ts.map +0 -1
- package/lib/models/ownermodel.spec.js +0 -215
- package/lib/models/ownermodel.spec.js.map +0 -1
- package/lib/models/relations.d.ts +0 -182
- package/lib/models/relations.d.ts.map +0 -1
- package/lib/models/relations.js +0 -157
- package/lib/models/relations.js.map +0 -1
- package/lib/models/relations.spec.d.ts +0 -14
- package/lib/models/relations.spec.d.ts.map +0 -1
- package/lib/models/relations.spec.js +0 -217
- package/lib/models/relations.spec.js.map +0 -1
- package/lib/models/rolemodel.d.ts +0 -11
- package/lib/models/rolemodel.d.ts.map +0 -1
- package/lib/models/rolemodel.js.map +0 -1
- package/lib/models/rolemodel.spec.d.ts +0 -2
- package/lib/models/rolemodel.spec.d.ts.map +0 -1
- package/lib/models/rolemodel.spec.js +0 -90
- package/lib/models/rolemodel.spec.js.map +0 -1
- package/lib/models/simpleuser.d.ts +0 -47
- package/lib/models/simpleuser.d.ts.map +0 -1
- package/lib/models/simpleuser.js +0 -84
- package/lib/models/simpleuser.js.map +0 -1
- package/lib/models/test.d.ts +0 -11
- package/lib/models/test.d.ts.map +0 -1
- package/lib/models/test.js +0 -7
- package/lib/models/test.js.map +0 -1
- package/lib/models/user.d.ts +0 -67
- package/lib/models/user.d.ts.map +0 -1
- package/lib/models/user.js +0 -86
- package/lib/models/user.js.map +0 -1
- package/lib/models/user.spec.d.ts +0 -2
- package/lib/models/user.spec.d.ts.map +0 -1
- package/lib/models/user.spec.js +0 -89
- package/lib/models/user.spec.js.map +0 -1
- package/lib/queues/filequeue.d.ts +0 -59
- package/lib/queues/filequeue.d.ts.map +0 -1
- package/lib/queues/filequeue.js +0 -131
- package/lib/queues/filequeue.js.map +0 -1
- package/lib/queues/filequeue.spec.d.ts +0 -2
- package/lib/queues/filequeue.spec.d.ts.map +0 -1
- package/lib/queues/filequeue.spec.js +0 -84
- package/lib/queues/filequeue.spec.js.map +0 -1
- package/lib/queues/memoryqueue.d.ts.map +0 -1
- package/lib/queues/memoryqueue.js.map +0 -1
- package/lib/queues/memoryqueue.spec.d.ts +0 -2
- package/lib/queues/memoryqueue.spec.d.ts.map +0 -1
- package/lib/queues/memoryqueue.spec.js +0 -203
- package/lib/queues/memoryqueue.spec.js.map +0 -1
- package/lib/queues/queue.spec.d.ts +0 -6
- package/lib/queues/queue.spec.d.ts.map +0 -1
- package/lib/queues/queue.spec.js +0 -55
- package/lib/queues/queue.spec.js.map +0 -1
- package/lib/rest/restdomainservice.d.ts +0 -63
- package/lib/rest/restdomainservice.d.ts.map +0 -1
- package/lib/rest/restdomainservice.js +0 -687
- package/lib/rest/restdomainservice.js.map +0 -1
- package/lib/rest/restdomainservice.spec.d.ts +0 -2
- package/lib/rest/restdomainservice.spec.d.ts.map +0 -1
- package/lib/rest/restdomainservice.spec.js +0 -124
- package/lib/rest/restdomainservice.spec.js.map +0 -1
- package/lib/rest/router.d.ts +0 -174
- package/lib/rest/router.d.ts.map +0 -1
- package/lib/rest/router.js +0 -429
- package/lib/rest/router.js.map +0 -1
- package/lib/rest/router.spec.d.ts +0 -2
- package/lib/rest/router.spec.d.ts.map +0 -1
- package/lib/rest/router.spec.js +0 -255
- package/lib/rest/router.spec.js.map +0 -1
- package/lib/services/asyncevents.d.ts +0 -152
- package/lib/services/asyncevents.d.ts.map +0 -1
- package/lib/services/asyncevents.js +0 -217
- package/lib/services/asyncevents.js.map +0 -1
- package/lib/services/asyncevents.spec.d.ts +0 -2
- package/lib/services/asyncevents.spec.d.ts.map +0 -1
- package/lib/services/asyncevents.spec.js +0 -118
- package/lib/services/asyncevents.spec.js.map +0 -1
- package/lib/services/authentication.d.ts.map +0 -1
- package/lib/services/authentication.js +0 -773
- package/lib/services/authentication.js.map +0 -1
- package/lib/services/authentication.spec.d.ts +0 -2
- package/lib/services/authentication.spec.d.ts.map +0 -1
- package/lib/services/authentication.spec.js +0 -458
- package/lib/services/authentication.spec.js.map +0 -1
- package/lib/services/binary.d.ts +0 -477
- package/lib/services/binary.d.ts.map +0 -1
- package/lib/services/binary.js +0 -617
- package/lib/services/binary.js.map +0 -1
- package/lib/services/binary.spec.d.ts +0 -41
- package/lib/services/binary.spec.d.ts.map +0 -1
- package/lib/services/binary.spec.js +0 -151
- package/lib/services/binary.spec.js.map +0 -1
- package/lib/services/cloudbinary.spec.d.ts +0 -6
- package/lib/services/cloudbinary.spec.d.ts.map +0 -1
- package/lib/services/cloudbinary.spec.js +0 -66
- package/lib/services/cloudbinary.spec.js.map +0 -1
- package/lib/services/configuration.d.ts.map +0 -1
- package/lib/services/configuration.js +0 -193
- package/lib/services/configuration.js.map +0 -1
- package/lib/services/configuration.spec.d.ts +0 -2
- package/lib/services/configuration.spec.d.ts.map +0 -1
- package/lib/services/configuration.spec.js +0 -130
- package/lib/services/configuration.spec.js.map +0 -1
- package/lib/services/cron.d.ts +0 -74
- package/lib/services/cron.d.ts.map +0 -1
- package/lib/services/cron.js +0 -141
- package/lib/services/cron.js.map +0 -1
- package/lib/services/cron.spec.d.ts +0 -2
- package/lib/services/cron.spec.d.ts.map +0 -1
- package/lib/services/cron.spec.js +0 -76
- package/lib/services/cron.spec.js.map +0 -1
- package/lib/services/cryptoservice.d.ts.map +0 -1
- package/lib/services/cryptoservice.js +0 -433
- package/lib/services/cryptoservice.js.map +0 -1
- package/lib/services/cryptoservice.spec.d.ts +0 -2
- package/lib/services/cryptoservice.spec.d.ts.map +0 -1
- package/lib/services/cryptoservice.spec.js +0 -177
- package/lib/services/cryptoservice.spec.js.map +0 -1
- package/lib/services/debugmailer.d.ts +0 -36
- package/lib/services/debugmailer.d.ts.map +0 -1
- package/lib/services/debugmailer.js.map +0 -1
- package/lib/services/debugmailer.spec.d.ts +0 -2
- package/lib/services/debugmailer.spec.d.ts.map +0 -1
- package/lib/services/debugmailer.spec.js +0 -32
- package/lib/services/debugmailer.spec.js.map +0 -1
- package/lib/services/domainservice.d.ts +0 -272
- package/lib/services/domainservice.d.ts.map +0 -1
- package/lib/services/domainservice.js +0 -651
- package/lib/services/domainservice.js.map +0 -1
- package/lib/services/domainservice.spec.d.ts +0 -2
- package/lib/services/domainservice.spec.d.ts.map +0 -1
- package/lib/services/domainservice.spec.js +0 -592
- package/lib/services/domainservice.spec.js.map +0 -1
- package/lib/services/filebinary.d.ts +0 -136
- package/lib/services/filebinary.d.ts.map +0 -1
- package/lib/services/filebinary.js +0 -373
- package/lib/services/filebinary.js.map +0 -1
- package/lib/services/filebinary.spec.d.ts +0 -25
- package/lib/services/filebinary.spec.d.ts.map +0 -1
- package/lib/services/filebinary.spec.js +0 -428
- package/lib/services/filebinary.spec.js.map +0 -1
- package/lib/services/fileconfiguration.d.ts +0 -23
- package/lib/services/fileconfiguration.d.ts.map +0 -1
- package/lib/services/fileconfiguration.js +0 -48
- package/lib/services/fileconfiguration.js.map +0 -1
- package/lib/services/fileconfiguration.spec.d.ts +0 -2
- package/lib/services/fileconfiguration.spec.d.ts.map +0 -1
- package/lib/services/fileconfiguration.spec.js +0 -215
- package/lib/services/fileconfiguration.spec.js.map +0 -1
- package/lib/services/invitationservice.d.ts +0 -223
- package/lib/services/invitationservice.d.ts.map +0 -1
- package/lib/services/invitationservice.js +0 -529
- package/lib/services/invitationservice.js.map +0 -1
- package/lib/services/invitationservice.spec.d.ts +0 -2
- package/lib/services/invitationservice.spec.d.ts.map +0 -1
- package/lib/services/invitationservice.spec.js +0 -567
- package/lib/services/invitationservice.spec.js.map +0 -1
- package/lib/services/kubernetesconfiguration.d.ts +0 -27
- package/lib/services/kubernetesconfiguration.d.ts.map +0 -1
- package/lib/services/kubernetesconfiguration.js +0 -52
- package/lib/services/kubernetesconfiguration.js.map +0 -1
- package/lib/services/kubernetesconfiguration.spec.d.ts +0 -2
- package/lib/services/kubernetesconfiguration.spec.d.ts.map +0 -1
- package/lib/services/kubernetesconfiguration.spec.js +0 -206
- package/lib/services/kubernetesconfiguration.spec.js.map +0 -1
- package/lib/services/mailer.d.ts +0 -166
- package/lib/services/mailer.d.ts.map +0 -1
- package/lib/services/mailer.js +0 -176
- package/lib/services/mailer.js.map +0 -1
- package/lib/services/mailer.spec.d.ts +0 -2
- package/lib/services/mailer.spec.d.ts.map +0 -1
- package/lib/services/mailer.spec.js +0 -158
- package/lib/services/mailer.spec.js.map +0 -1
- package/lib/services/notificationservice.d.ts.map +0 -1
- package/lib/services/notificationservice.js.map +0 -1
- package/lib/services/notificationservice.spec.d.ts +0 -2
- package/lib/services/notificationservice.spec.d.ts.map +0 -1
- package/lib/services/notificationservice.spec.js +0 -83
- package/lib/services/notificationservice.spec.js.map +0 -1
- package/lib/services/oauth.spec.d.ts +0 -2
- package/lib/services/oauth.spec.d.ts.map +0 -1
- package/lib/services/oauth.spec.js +0 -208
- package/lib/services/oauth.spec.js.map +0 -1
- package/lib/services/prometheus.d.ts.map +0 -1
- package/lib/services/prometheus.js +0 -160
- package/lib/services/prometheus.js.map +0 -1
- package/lib/services/prometheus.spec.d.ts +0 -2
- package/lib/services/prometheus.spec.d.ts.map +0 -1
- package/lib/services/prometheus.spec.js +0 -76
- package/lib/services/prometheus.spec.js.map +0 -1
- package/lib/services/resource.d.ts.map +0 -1
- package/lib/services/resource.js +0 -170
- package/lib/services/resource.js.map +0 -1
- package/lib/services/resource.spec.d.ts +0 -2
- package/lib/services/resource.spec.d.ts.map +0 -1
- package/lib/services/resource.spec.js +0 -140
- package/lib/services/resource.spec.js.map +0 -1
- package/lib/services/service.spec.d.ts +0 -2
- package/lib/services/service.spec.d.ts.map +0 -1
- package/lib/services/service.spec.js +0 -286
- package/lib/services/service.spec.js.map +0 -1
- package/lib/stores/aggregator.d.ts +0 -48
- package/lib/stores/aggregator.d.ts.map +0 -1
- package/lib/stores/aggregator.js +0 -80
- package/lib/stores/aggregator.js.map +0 -1
- package/lib/stores/file.d.ts +0 -108
- package/lib/stores/file.d.ts.map +0 -1
- package/lib/stores/file.js +0 -188
- package/lib/stores/file.js.map +0 -1
- package/lib/stores/file.spec.d.ts +0 -13
- package/lib/stores/file.spec.d.ts.map +0 -1
- package/lib/stores/file.spec.js +0 -138
- package/lib/stores/file.spec.js.map +0 -1
- package/lib/stores/mapper.d.ts +0 -150
- package/lib/stores/mapper.d.ts.map +0 -1
- package/lib/stores/mapper.js +0 -293
- package/lib/stores/mapper.js.map +0 -1
- package/lib/stores/mapper.spec.d.ts +0 -2
- package/lib/stores/mapper.spec.d.ts.map +0 -1
- package/lib/stores/mapper.spec.js +0 -167
- package/lib/stores/mapper.spec.js.map +0 -1
- package/lib/stores/memory.d.ts +0 -152
- package/lib/stores/memory.d.ts.map +0 -1
- package/lib/stores/memory.js +0 -371
- package/lib/stores/memory.js.map +0 -1
- package/lib/stores/memory.spec.d.ts +0 -14
- package/lib/stores/memory.spec.d.ts.map +0 -1
- package/lib/stores/memory.spec.js +0 -263
- package/lib/stores/memory.spec.js.map +0 -1
- package/lib/stores/modelmapper.d.ts +0 -62
- package/lib/stores/modelmapper.d.ts.map +0 -1
- package/lib/stores/modelmapper.js +0 -197
- package/lib/stores/modelmapper.js.map +0 -1
- package/lib/stores/store.spec.d.ts +0 -57
- package/lib/stores/store.spec.d.ts.map +0 -1
- package/lib/stores/store.spec.js +0 -737
- package/lib/stores/store.spec.js.map +0 -1
- package/lib/test.d.ts +0 -265
- package/lib/test.d.ts.map +0 -1
- package/lib/test.js +0 -622
- package/lib/test.js.map +0 -1
- package/lib/unpackedapplication.d.ts.map +0 -1
- package/lib/unpackedapplication.js +0 -350
- package/lib/unpackedapplication.js.map +0 -1
- package/lib/utils/abstractdeployer.spec.d.ts +0 -2
- package/lib/utils/abstractdeployer.spec.d.ts.map +0 -1
- package/lib/utils/abstractdeployer.spec.js +0 -21
- package/lib/utils/abstractdeployer.spec.js.map +0 -1
- package/lib/utils/case.d.ts +0 -8
- package/lib/utils/case.d.ts.map +0 -1
- package/lib/utils/case.js +0 -43
- package/lib/utils/case.js.map +0 -1
- package/lib/utils/case.spec.d.ts +0 -2
- package/lib/utils/case.spec.d.ts.map +0 -1
- package/lib/utils/case.spec.js +0 -50
- package/lib/utils/case.spec.js.map +0 -1
- package/lib/utils/context.d.ts +0 -482
- package/lib/utils/context.d.ts.map +0 -1
- package/lib/utils/context.js +0 -739
- package/lib/utils/context.js.map +0 -1
- package/lib/utils/context.spec.d.ts +0 -10
- package/lib/utils/context.spec.d.ts.map +0 -1
- package/lib/utils/context.spec.js +0 -383
- package/lib/utils/context.spec.js.map +0 -1
- package/lib/utils/cookie.d.ts.map +0 -1
- package/lib/utils/cookie.js.map +0 -1
- package/lib/utils/cookie.spec.d.ts +0 -2
- package/lib/utils/cookie.spec.d.ts.map +0 -1
- package/lib/utils/cookie.spec.js +0 -88
- package/lib/utils/cookie.spec.js.map +0 -1
- package/lib/utils/esm.d.ts +0 -14
- package/lib/utils/esm.d.ts.map +0 -1
- package/lib/utils/esm.js +0 -19
- package/lib/utils/esm.js.map +0 -1
- package/lib/utils/httpcontext.d.ts.map +0 -1
- package/lib/utils/httpcontext.js.map +0 -1
- package/lib/utils/httpcontext.spec.d.ts +0 -5
- package/lib/utils/httpcontext.spec.d.ts.map +0 -1
- package/lib/utils/httpcontext.spec.js +0 -77
- package/lib/utils/httpcontext.spec.js.map +0 -1
- package/lib/utils/logger.d.ts +0 -92
- package/lib/utils/logger.d.ts.map +0 -1
- package/lib/utils/logger.js +0 -121
- package/lib/utils/logger.js.map +0 -1
- package/lib/utils/logger.spec.d.ts +0 -2
- package/lib/utils/logger.spec.d.ts.map +0 -1
- package/lib/utils/logger.spec.js +0 -48
- package/lib/utils/logger.spec.js.map +0 -1
- package/lib/utils/serializers.d.ts +0 -162
- package/lib/utils/serializers.d.ts.map +0 -1
- package/lib/utils/serializers.js +0 -420
- package/lib/utils/serializers.js.map +0 -1
- package/lib/utils/serializers.spec.d.ts +0 -2
- package/lib/utils/serializers.spec.d.ts.map +0 -1
- package/lib/utils/serializers.spec.js +0 -311
- package/lib/utils/serializers.spec.js.map +0 -1
- package/lib/utils/session.d.ts +0 -123
- package/lib/utils/session.d.ts.map +0 -1
- package/lib/utils/session.js +0 -156
- package/lib/utils/session.js.map +0 -1
- package/lib/utils/session.spec.d.ts +0 -2
- package/lib/utils/session.spec.d.ts.map +0 -1
- package/lib/utils/session.spec.js +0 -81
- package/lib/utils/session.spec.js.map +0 -1
- package/lib/utils/throttler.d.ts +0 -99
- package/lib/utils/throttler.d.ts.map +0 -1
- package/lib/utils/throttler.js +0 -160
- package/lib/utils/throttler.js.map +0 -1
- package/lib/utils/throttler.spec.d.ts +0 -2
- package/lib/utils/throttler.spec.d.ts.map +0 -1
- package/lib/utils/throttler.spec.js +0 -53
- package/lib/utils/throttler.spec.js.map +0 -1
- package/lib/utils/waiter.d.ts +0 -94
- package/lib/utils/waiter.d.ts.map +0 -1
- package/lib/utils/waiter.js +0 -148
- package/lib/utils/waiter.js.map +0 -1
- package/lib/utils/waiter.spec.d.ts +0 -2
- package/lib/utils/waiter.spec.d.ts.map +0 -1
- package/lib/utils/waiter.spec.js +0 -98
- package/lib/utils/waiter.spec.js.map +0 -1
- package/test/jsonutils/mdocs.yaml +0 -56
- package/test/jsonutils/test.json +0 -3
- package/test/jsonutils/test.yml +0 -5
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
2
|
+
var useValue = arguments.length > 2;
|
|
3
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
4
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
5
|
+
}
|
|
6
|
+
return useValue ? value : void 0;
|
|
7
|
+
};
|
|
8
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
9
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
10
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
11
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
12
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
13
|
+
var _, done = false;
|
|
14
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
15
|
+
var context = {};
|
|
16
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
17
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
18
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
19
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
20
|
+
if (kind === "accessor") {
|
|
21
|
+
if (result === void 0) continue;
|
|
22
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
23
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
24
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
25
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
26
|
+
}
|
|
27
|
+
else if (_ = accept(result)) {
|
|
28
|
+
if (kind === "field") initializers.unshift(_);
|
|
29
|
+
else descriptor[key] = _;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
33
|
+
done = true;
|
|
34
|
+
};
|
|
35
|
+
import { createHash } from "crypto";
|
|
36
|
+
import { schedule } from "node-cron";
|
|
37
|
+
import { Service } from "./service.js";
|
|
38
|
+
import { CancelablePromise } from "@webda/utils";
|
|
39
|
+
import { useCore, useService } from "../core/hooks.js";
|
|
40
|
+
import { Command } from "./command.js";
|
|
41
|
+
export const CronSymbol = Symbol("WebdaCron");
|
|
42
|
+
/**
|
|
43
|
+
* Cron item
|
|
44
|
+
*/
|
|
45
|
+
export class CronDefinition {
|
|
46
|
+
/**
|
|
47
|
+
* Cron definition
|
|
48
|
+
* * * * 0 3
|
|
49
|
+
* @pattern ^(\*|([0-5]?\d)) (\*|([01]?\d|2[0-3])) (\*|([01]?\d|2[0-3])) (\*|([0-6])) (\*|([0-6]))$
|
|
50
|
+
*/
|
|
51
|
+
cron;
|
|
52
|
+
/**
|
|
53
|
+
* Description of the task
|
|
54
|
+
*/
|
|
55
|
+
description;
|
|
56
|
+
/**
|
|
57
|
+
* Argument to be passed to the function
|
|
58
|
+
*/
|
|
59
|
+
args;
|
|
60
|
+
/**
|
|
61
|
+
* Method to call
|
|
62
|
+
*/
|
|
63
|
+
method;
|
|
64
|
+
/**
|
|
65
|
+
* Webda service name
|
|
66
|
+
*/
|
|
67
|
+
serviceName;
|
|
68
|
+
/**
|
|
69
|
+
*
|
|
70
|
+
* @param cron - the cron expression
|
|
71
|
+
* @param args - additional arguments
|
|
72
|
+
* @param serviceName - the service name
|
|
73
|
+
* @param method - the HTTP method
|
|
74
|
+
* @param description - the description
|
|
75
|
+
*/
|
|
76
|
+
constructor(cron, args = [], serviceName = "", method = "", description = "") {
|
|
77
|
+
this.cron = cron;
|
|
78
|
+
this.serviceName = serviceName;
|
|
79
|
+
this.method = method;
|
|
80
|
+
this.description = description;
|
|
81
|
+
this.args = args;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Format the cron definition as a human-readable string
|
|
85
|
+
* @returns the result
|
|
86
|
+
*/
|
|
87
|
+
toString() {
|
|
88
|
+
return `${this.cron}: ${this.serviceName}.${this.method}(${this.args.map(a => a.toString()).join(",")})${this.description !== "" ? ` # ${this.description}` : ""}`;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* @WebdaModda
|
|
93
|
+
*/
|
|
94
|
+
let CronService = (() => {
|
|
95
|
+
let _classSuper = Service;
|
|
96
|
+
let _instanceExtraInitializers = [];
|
|
97
|
+
let _runCron_decorators;
|
|
98
|
+
return class CronService extends _classSuper {
|
|
99
|
+
static {
|
|
100
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
101
|
+
_runCron_decorators = [Command("cron run", { description: "Run once the declared cron matching the id" })];
|
|
102
|
+
__esDecorate(this, null, _runCron_decorators, { kind: "method", name: "runCron", static: false, private: false, access: { has: obj => "runCron" in obj, get: obj => obj.runCron }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
103
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
104
|
+
}
|
|
105
|
+
enable = __runInitializers(this, _instanceExtraInitializers);
|
|
106
|
+
crons = [];
|
|
107
|
+
crontabSchedule = schedule;
|
|
108
|
+
_scanned = false;
|
|
109
|
+
/**
|
|
110
|
+
* Legacy decorator factory for annotating a method with a cron schedule
|
|
111
|
+
* @param cron - the cron expression
|
|
112
|
+
* @param description - the description
|
|
113
|
+
* @param args - additional arguments
|
|
114
|
+
* @returns the result
|
|
115
|
+
*/
|
|
116
|
+
static Annotation(cron, description = "", ...args) {
|
|
117
|
+
return (_target, property, descriptor) => {
|
|
118
|
+
descriptor.value.cron = descriptor.value.cron || [];
|
|
119
|
+
descriptor.value.cron.push(new CronDefinition(cron, args, "", property, description));
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Generate a short hash-based identifier for a cron definition
|
|
124
|
+
* @param cron - the cron expression
|
|
125
|
+
* @param name - the name to use
|
|
126
|
+
* @returns the result
|
|
127
|
+
*/
|
|
128
|
+
static getCronId(cron, name = "") {
|
|
129
|
+
const hash = createHash("sha256");
|
|
130
|
+
return hash
|
|
131
|
+
.update(JSON.stringify(cron) + name)
|
|
132
|
+
.digest("hex")
|
|
133
|
+
.substring(0, 8);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Stable identifier of a cron for exported jobs (e.g. Kubernetes CronJob)
|
|
137
|
+
*
|
|
138
|
+
* `webda cron run --id <id>` resolves the cron back from this identifier
|
|
139
|
+
* @param cron - the cron definition
|
|
140
|
+
* @returns the 8 hex characters identifier
|
|
141
|
+
*/
|
|
142
|
+
static getExportId(cron) {
|
|
143
|
+
return CronService.getCronId(cron, "export");
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Collect all @Cron-annotated methods from the provided services
|
|
147
|
+
* @param services - the services
|
|
148
|
+
* @returns the list of results
|
|
149
|
+
*/
|
|
150
|
+
static loadAnnotations(services) {
|
|
151
|
+
const cronsResult = [];
|
|
152
|
+
for (const i in services) {
|
|
153
|
+
if (services[i]?.[CronSymbol]) {
|
|
154
|
+
services[i]?.[CronSymbol].forEach((cron) => {
|
|
155
|
+
cron.serviceName = i;
|
|
156
|
+
cronsResult.push(cron);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return cronsResult;
|
|
161
|
+
}
|
|
162
|
+
/** Scan all services for cron annotations and add them to the schedule (once) */
|
|
163
|
+
addAnnotations() {
|
|
164
|
+
if (this._scanned) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
this._scanned = true;
|
|
168
|
+
this.crons.push(...CronService.loadAnnotations(useCore().getServices()));
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Get all registered cron entries including annotations
|
|
172
|
+
* @returns the result
|
|
173
|
+
*/
|
|
174
|
+
getCrontab() {
|
|
175
|
+
// Load all annotations
|
|
176
|
+
this.addAnnotations();
|
|
177
|
+
return this.crons;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Start the cron worker, optionally including annotated crons
|
|
181
|
+
* @param annotations - the annotations
|
|
182
|
+
* @returns the result
|
|
183
|
+
*/
|
|
184
|
+
work(annotations = "true") {
|
|
185
|
+
return this.run(annotations === "true");
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Run once the @Cron-annotated method matching an exported cron id
|
|
189
|
+
*
|
|
190
|
+
* Only methods declared with `@Cron` can be run, with their declared arguments
|
|
191
|
+
* @param id - the cron id, as computed by {@link CronService.getExportId}
|
|
192
|
+
*/
|
|
193
|
+
async runCron(id) {
|
|
194
|
+
if (!id) {
|
|
195
|
+
throw new Error("A cron id is required");
|
|
196
|
+
}
|
|
197
|
+
const crons = CronService.loadAnnotations(useCore().getServices()).filter(c => CronService.getExportId(c) === id);
|
|
198
|
+
if (crons.length === 0) {
|
|
199
|
+
throw new Error(`No cron with id '${id}'`);
|
|
200
|
+
}
|
|
201
|
+
for (const cron of crons) {
|
|
202
|
+
this.log("INFO", `Running cron ${cron.toString()}`);
|
|
203
|
+
await useService(cron.serviceName)[cron.method](...cron.args);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Schedule and start all registered cron jobs
|
|
208
|
+
* @param annotations - the annotations
|
|
209
|
+
* @returns the result
|
|
210
|
+
*/
|
|
211
|
+
run(annotations = true) {
|
|
212
|
+
this.log("INFO", "Running crontab with" + (annotations ? "" : "out"), "annotations");
|
|
213
|
+
// Load all annotations
|
|
214
|
+
if (annotations) {
|
|
215
|
+
this.addAnnotations();
|
|
216
|
+
}
|
|
217
|
+
this.enable = true;
|
|
218
|
+
// Run schedule
|
|
219
|
+
this.crons.forEach(i => {
|
|
220
|
+
if (i.cb) {
|
|
221
|
+
this.schedule(i.cron, i.cb);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
this.schedule(i.cron, () => {
|
|
225
|
+
useService(i.serviceName)[i.method](...i.args);
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
const msgs = [];
|
|
230
|
+
// Display before
|
|
231
|
+
this.crons.forEach(c => {
|
|
232
|
+
if (c.cb) {
|
|
233
|
+
msgs.push(`[NativeCode:${c.context || ""}]`);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
msgs.push(`${c.serviceName}.${c.method}(${c.args.length ? "..." + c.args : ""})`);
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
const cronPad = Math.max(...this.crons.map(c => c.cron.length));
|
|
240
|
+
const servicePad = Math.max(...msgs.map(c => c.length));
|
|
241
|
+
this.crons.forEach((c, i) => {
|
|
242
|
+
this.log("INFO", `${c.cron.padEnd(cronPad)} : ${msgs[i].padEnd(servicePad)}${c.description ? " # " + c.description : ""}`);
|
|
243
|
+
});
|
|
244
|
+
// Remove from memory
|
|
245
|
+
this.crons = [];
|
|
246
|
+
return new CancelablePromise();
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Register a cron expression to execute a callback, buffering if not yet enabled
|
|
250
|
+
* @param cron - the cron expression
|
|
251
|
+
* @param cb - the callback function
|
|
252
|
+
* @param description - the description
|
|
253
|
+
*/
|
|
254
|
+
schedule(cron, cb, description = "") {
|
|
255
|
+
if (this.enable) {
|
|
256
|
+
this.crontabSchedule(cron, cb);
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
let context;
|
|
260
|
+
try {
|
|
261
|
+
throw new Error();
|
|
262
|
+
}
|
|
263
|
+
catch (err) {
|
|
264
|
+
// Based on stack trace (not super clean)
|
|
265
|
+
const info = err.stack.split("\n")[2].match(/\((.*)\)/);
|
|
266
|
+
context = info[1].replace(process.cwd() + "/", "");
|
|
267
|
+
}
|
|
268
|
+
this.crons.push({ cron, cb, description, context });
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
})();
|
|
273
|
+
/**
|
|
274
|
+
* Decorator to schedule a service method with a cron expression
|
|
275
|
+
* @param cron - the cron expression
|
|
276
|
+
* @param description - the description
|
|
277
|
+
* @param args - additional arguments
|
|
278
|
+
* @returns the result
|
|
279
|
+
*/
|
|
280
|
+
export function Cron(cron, description = "", ...args) {
|
|
281
|
+
return function cronDecorator(value, context) {
|
|
282
|
+
// Store metadata on each instance when it's constructed
|
|
283
|
+
context.addInitializer(function cronInitializer() {
|
|
284
|
+
(this[CronSymbol] ??= []).push(new CronDefinition(cron, args, this.name, context.name, description));
|
|
285
|
+
});
|
|
286
|
+
// You can return the same method, or wrap it if you need
|
|
287
|
+
return value;
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
export { CronService };
|
|
291
|
+
//# sourceMappingURL=cron.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron.service.js","sourceRoot":"","sources":["../../src/services/cron.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,43 @@
|
|
|
1
1
|
import * as util from "util";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { CryptoServiceParameters, JWTOptions, KeysDefinition } from "./icryptoservice.js";
|
|
3
|
+
import { Service } from "./service.js";
|
|
4
|
+
import { OperationContext } from "../contexts/operationcontext.js";
|
|
5
|
+
/** Wraps a secret string value, masking it in logs and inspect output */
|
|
4
6
|
export declare class SecretString {
|
|
5
7
|
protected str: string;
|
|
6
8
|
protected encrypter: string;
|
|
9
|
+
/** Create a new SecretString
|
|
10
|
+
* @param str - the secret value
|
|
11
|
+
* @param encrypter - the encrypter service name
|
|
12
|
+
*/
|
|
7
13
|
constructor(str: string, encrypter: string);
|
|
14
|
+
/**
|
|
15
|
+
* Extract the plain string value, warning if the string is not encrypted
|
|
16
|
+
* @param value - the value to set
|
|
17
|
+
* @param path - the path
|
|
18
|
+
* @returns the result string
|
|
19
|
+
*/
|
|
8
20
|
static from(value: string | SecretString, path?: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Get the underlying secret value
|
|
23
|
+
* @returns the result string
|
|
24
|
+
*/
|
|
9
25
|
getValue(): string;
|
|
26
|
+
/**
|
|
27
|
+
* Return a masked representation to prevent secret leakage
|
|
28
|
+
* @returns the result string
|
|
29
|
+
*/
|
|
10
30
|
toString(): string;
|
|
31
|
+
/**
|
|
32
|
+
* Custom inspect handler to mask the secret in Node.js util.inspect
|
|
33
|
+
* @param depth - the depth level
|
|
34
|
+
* @param options - the options
|
|
35
|
+
* @param inspect - the inspect function
|
|
36
|
+
* @returns the result
|
|
37
|
+
*/
|
|
11
38
|
[util.inspect.custom](depth: any, options: any, inspect: any): string;
|
|
12
39
|
}
|
|
13
|
-
export
|
|
40
|
+
export type KeysRegistry = {
|
|
14
41
|
/**
|
|
15
42
|
* Contains the instanceId of the last
|
|
16
43
|
* service who rotated
|
|
@@ -28,7 +55,7 @@ export interface KeysRegistry {
|
|
|
28
55
|
* Current key
|
|
29
56
|
*/
|
|
30
57
|
current: string;
|
|
31
|
-
}
|
|
58
|
+
};
|
|
32
59
|
/**
|
|
33
60
|
* Encrypt/Decrypt string
|
|
34
61
|
*/
|
|
@@ -46,125 +73,6 @@ export interface StringEncrypter {
|
|
|
46
73
|
*/
|
|
47
74
|
decrypt(data: string, options?: any): Promise<string>;
|
|
48
75
|
}
|
|
49
|
-
/**
|
|
50
|
-
* JWT Options
|
|
51
|
-
*/
|
|
52
|
-
export interface JWTOptions {
|
|
53
|
-
/**
|
|
54
|
-
* Secret to use with JWT
|
|
55
|
-
*/
|
|
56
|
-
secretOrPublicKey?: string | Buffer | {
|
|
57
|
-
key: string;
|
|
58
|
-
passphrase: string;
|
|
59
|
-
};
|
|
60
|
-
/**
|
|
61
|
-
* Algorithm for JWT token
|
|
62
|
-
*
|
|
63
|
-
* @see https://www.npmjs.com/package/jsonwebtoken
|
|
64
|
-
* @default "HS256"
|
|
65
|
-
*/
|
|
66
|
-
algorithm?: "HS256" | "HS384" | "HS512" | "RS256" | "RS384" | "RS512" | "PS256" | "PS384" | "PS512" | "ES256" | "ES384" | "ES512";
|
|
67
|
-
/**
|
|
68
|
-
* expressed in seconds or a string describing a time span zeit/ms.
|
|
69
|
-
*
|
|
70
|
-
* Eg: 60, "2 days", "10h", "7d". A numeric value is interpreted as a seconds count. If you use a string be sure you provide the time units (days, hours, etc), otherwise milliseconds unit is used by default ("120" is equal to "120ms").
|
|
71
|
-
*/
|
|
72
|
-
expiresIn?: number | string;
|
|
73
|
-
/**
|
|
74
|
-
* Audience for the jwt
|
|
75
|
-
*/
|
|
76
|
-
audience?: string;
|
|
77
|
-
/**
|
|
78
|
-
* Issuer of the token
|
|
79
|
-
*/
|
|
80
|
-
issuer?: string;
|
|
81
|
-
/**
|
|
82
|
-
* Subject for JWT
|
|
83
|
-
*/
|
|
84
|
-
subject?: string;
|
|
85
|
-
keyid?: any;
|
|
86
|
-
}
|
|
87
|
-
export declare class CryptoServiceParameters extends ServiceParameters {
|
|
88
|
-
/**
|
|
89
|
-
* Number of hours a key should be used for encryption
|
|
90
|
-
*
|
|
91
|
-
* if auto-rotate is not set this
|
|
92
|
-
*/
|
|
93
|
-
keyActiveLifespan: number;
|
|
94
|
-
/**
|
|
95
|
-
* Number of hours allowed to decrypt data encrypted with this key
|
|
96
|
-
*/
|
|
97
|
-
keyLifespan: number;
|
|
98
|
-
/**
|
|
99
|
-
* Try to rotate keys when they expire in days
|
|
100
|
-
*/
|
|
101
|
-
autoRotate?: number;
|
|
102
|
-
/**
|
|
103
|
-
* Create first set of key if does not exist
|
|
104
|
-
*/
|
|
105
|
-
autoCreate?: boolean;
|
|
106
|
-
/**
|
|
107
|
-
* To expose JWKS
|
|
108
|
-
*
|
|
109
|
-
* @see https://datatracker.ietf.org/doc/html/rfc7517
|
|
110
|
-
*/
|
|
111
|
-
url?: string;
|
|
112
|
-
/**
|
|
113
|
-
* Type of asymetric key
|
|
114
|
-
*
|
|
115
|
-
* https://nodejs.org/api/crypto.html#cryptogeneratekeypairsynctype-options
|
|
116
|
-
* https://nodejs.org/docs/latest-v14.x/api/crypto.html#crypto_crypto_generatekeypairsync_type_options
|
|
117
|
-
*/
|
|
118
|
-
asymetricType: "rsa" | "dsa" | "ec" | "ed25519" | "ed448" | "x25519" | "x448" | "dh";
|
|
119
|
-
/**
|
|
120
|
-
* Options for asymetric generation
|
|
121
|
-
*/
|
|
122
|
-
asymetricOptions?: {
|
|
123
|
-
/**
|
|
124
|
-
* @default 2048
|
|
125
|
-
*/
|
|
126
|
-
modulusLength?: number;
|
|
127
|
-
/**
|
|
128
|
-
* Only if asymetricType "ec"
|
|
129
|
-
*/
|
|
130
|
-
namedCurve?: string;
|
|
131
|
-
publicKeyEncoding?: {
|
|
132
|
-
/**
|
|
133
|
-
* @default spki
|
|
134
|
-
*/
|
|
135
|
-
type?: "spki" | "pkcs1";
|
|
136
|
-
format?: "pem";
|
|
137
|
-
};
|
|
138
|
-
privateKeyEncoding?: {
|
|
139
|
-
/**
|
|
140
|
-
* https://nodejs.org/docs/latest-v14.x/api/crypto.html#crypto_keyobject_export_options
|
|
141
|
-
* @default pkcs8
|
|
142
|
-
*/
|
|
143
|
-
type?: "pkcs1" | "pkcs8" | "sec1";
|
|
144
|
-
format?: "pem";
|
|
145
|
-
cipher?: string;
|
|
146
|
-
passphrase?: string;
|
|
147
|
-
};
|
|
148
|
-
};
|
|
149
|
-
/**
|
|
150
|
-
* @default 256
|
|
151
|
-
*/
|
|
152
|
-
symetricKeyLength?: number;
|
|
153
|
-
/**
|
|
154
|
-
* @default "aes-256-ctr"
|
|
155
|
-
*/
|
|
156
|
-
symetricCipher?: string;
|
|
157
|
-
/**
|
|
158
|
-
* Default JWT options
|
|
159
|
-
*/
|
|
160
|
-
jwt?: JWTOptions;
|
|
161
|
-
constructor(params: any);
|
|
162
|
-
}
|
|
163
|
-
interface KeysDefinition {
|
|
164
|
-
publicKey: string;
|
|
165
|
-
privateKey: string;
|
|
166
|
-
symetric: string;
|
|
167
|
-
}
|
|
168
76
|
/**
|
|
169
77
|
* @WebdaModda
|
|
170
78
|
*/
|
|
@@ -172,8 +80,10 @@ export declare class CryptoService<T extends CryptoServiceParameters = CryptoSer
|
|
|
172
80
|
private static encrypters;
|
|
173
81
|
/**
|
|
174
82
|
* Register an encrypter for configuration
|
|
175
|
-
* @param name
|
|
176
|
-
* @param encrypter
|
|
83
|
+
* @param name - the name to use
|
|
84
|
+
* @param encrypter - the encrypter implementation
|
|
85
|
+
* @param encrypter.encrypt - the encrypter.encrypt
|
|
86
|
+
* @param encrypter.decrypt - the encrypter.decrypt
|
|
177
87
|
*/
|
|
178
88
|
static registerEncrypter(name: string, encrypter: {
|
|
179
89
|
encrypt: (data: string) => Promise<string>;
|
|
@@ -198,26 +108,23 @@ export declare class CryptoService<T extends CryptoServiceParameters = CryptoSer
|
|
|
198
108
|
e: string;
|
|
199
109
|
};
|
|
200
110
|
};
|
|
201
|
-
registry: Store<RegistryEntry>;
|
|
202
|
-
/**
|
|
203
|
-
* @override
|
|
204
|
-
*/
|
|
205
|
-
loadParameters(params: DeepPartial<T>): ServiceParameters;
|
|
206
111
|
/**
|
|
207
112
|
* @override
|
|
208
113
|
*/
|
|
209
114
|
init(): Promise<this>;
|
|
210
115
|
/**
|
|
211
116
|
*
|
|
117
|
+
* @param context - the execution context
|
|
212
118
|
*/
|
|
213
119
|
serveJWKS(context: OperationContext): Promise<void>;
|
|
214
120
|
/**
|
|
215
121
|
* Load keys from registry
|
|
122
|
+
* @returns true if the condition is met
|
|
216
123
|
*/
|
|
217
124
|
load(): Promise<boolean>;
|
|
218
125
|
/**
|
|
219
126
|
* Generate asymetric key
|
|
220
|
-
* @returns
|
|
127
|
+
* @returns the result
|
|
221
128
|
*/
|
|
222
129
|
generateAsymetricKeys(): {
|
|
223
130
|
publicKey: string;
|
|
@@ -225,11 +132,12 @@ export declare class CryptoService<T extends CryptoServiceParameters = CryptoSer
|
|
|
225
132
|
};
|
|
226
133
|
/**
|
|
227
134
|
* Generate symetric key
|
|
228
|
-
* @returns
|
|
135
|
+
* @returns the result string
|
|
229
136
|
*/
|
|
230
137
|
generateSymetricKey(): string;
|
|
231
138
|
/**
|
|
232
139
|
* Return current key set
|
|
140
|
+
* @returns the result
|
|
233
141
|
*/
|
|
234
142
|
getCurrentKeys(): Promise<{
|
|
235
143
|
id: string;
|
|
@@ -237,59 +145,77 @@ export declare class CryptoService<T extends CryptoServiceParameters = CryptoSer
|
|
|
237
145
|
}>;
|
|
238
146
|
/**
|
|
239
147
|
* Retrieve a HMAC for a string
|
|
240
|
-
* @param data
|
|
148
|
+
* @param data - the data to process
|
|
241
149
|
* @param keyId to use
|
|
242
|
-
* @returns
|
|
150
|
+
* @returns the result string
|
|
243
151
|
*/
|
|
244
152
|
hmac(data: string | any, keyId?: string): Promise<string>;
|
|
245
153
|
/**
|
|
246
154
|
* Verify a HMAC for a string
|
|
247
|
-
* @param data
|
|
248
|
-
* @
|
|
155
|
+
* @param data - the data to process
|
|
156
|
+
* @param hmac - the HMAC instance
|
|
157
|
+
* @returns true if the condition is met
|
|
249
158
|
*/
|
|
250
159
|
hmacVerify(data: string | any, hmac: string): Promise<boolean>;
|
|
251
160
|
/**
|
|
252
161
|
* JWT token generation
|
|
162
|
+
* @param data - the data to process
|
|
163
|
+
* @param options - the options
|
|
164
|
+
* @returns the result string
|
|
253
165
|
*/
|
|
254
166
|
jwtSign(data: any, options?: JWTOptions): Promise<string>;
|
|
255
167
|
/**
|
|
256
168
|
*
|
|
257
|
-
* @param keyId
|
|
258
|
-
* @returns
|
|
169
|
+
* @param keyId - the key identifier
|
|
170
|
+
* @returns true if the condition is met
|
|
259
171
|
*/
|
|
260
172
|
checkKey(keyId: string): Promise<boolean>;
|
|
261
173
|
/**
|
|
262
174
|
* Get JWT key based on kid
|
|
175
|
+
* @param header - the JWT header
|
|
176
|
+
* @param callback - the callback function
|
|
263
177
|
*/
|
|
264
178
|
getJWTKey(header: any, callback: any): Promise<void>;
|
|
265
179
|
/**
|
|
266
180
|
* JWT token verification
|
|
181
|
+
* @param token - the token
|
|
182
|
+
* @param options - the options
|
|
183
|
+
* @returns the result
|
|
267
184
|
*/
|
|
268
185
|
jwtVerify(token: string, options?: JWTOptions): Promise<string | any>;
|
|
269
186
|
/**
|
|
270
187
|
* Encrypt data
|
|
188
|
+
* @param data - the data to process
|
|
189
|
+
* @returns the result string
|
|
271
190
|
*/
|
|
272
191
|
encrypt(data: any): Promise<string>;
|
|
273
192
|
/**
|
|
274
193
|
* Parse the JWT header section
|
|
194
|
+
* @param token - the token
|
|
195
|
+
* @returns the result
|
|
275
196
|
*/
|
|
276
197
|
getJWTHeader(token: string): any;
|
|
277
198
|
/**
|
|
278
199
|
* Encrypt configuration
|
|
279
|
-
* @param data
|
|
200
|
+
* @param data - the data to process
|
|
201
|
+
* @returns the result
|
|
280
202
|
*/
|
|
281
203
|
static encryptConfiguration(data: any): Promise<any>;
|
|
282
204
|
/**
|
|
283
205
|
*
|
|
284
|
-
* @param data
|
|
206
|
+
* @param data - the data to process
|
|
207
|
+
* @returns the result
|
|
285
208
|
*/
|
|
286
209
|
static decryptConfiguration(data: any): Promise<any>;
|
|
287
210
|
/**
|
|
288
211
|
* Decrypt data
|
|
212
|
+
* @param token - the token
|
|
213
|
+
* @returns the result
|
|
289
214
|
*/
|
|
290
215
|
decrypt(token: string): Promise<any>;
|
|
291
216
|
/**
|
|
292
217
|
* Get next id
|
|
218
|
+
* @returns the result
|
|
293
219
|
*/
|
|
294
220
|
getNextId(): {
|
|
295
221
|
id: string;
|
|
@@ -301,4 +227,12 @@ export declare class CryptoService<T extends CryptoServiceParameters = CryptoSer
|
|
|
301
227
|
rotate(): Promise<void>;
|
|
302
228
|
}
|
|
303
229
|
export default CryptoService;
|
|
304
|
-
|
|
230
|
+
/**
|
|
231
|
+
* Return the CryptoService
|
|
232
|
+
*
|
|
233
|
+
* As it is a service, it can be used with the useService hook
|
|
234
|
+
*
|
|
235
|
+
* @returns the result
|
|
236
|
+
*/
|
|
237
|
+
export declare function useCrypto(): CryptoService<CryptoServiceParameters>;
|
|
238
|
+
//# sourceMappingURL=cryptoservice.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cryptoservice.service.d.ts","sourceRoot":"","sources":["../../src/services/cryptoservice.service.ts"],"names":[],"mappings":"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"}
|