@webda/core 4.0.0-beta.2 → 4.0.0-beta.4
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 +468 -0
- package/lib/application/application.d.ts.map +1 -0
- package/lib/application/application.js +845 -0
- package/lib/application/application.js.map +1 -0
- package/lib/application/deployment.d.ts +93 -0
- package/lib/application/deployment.d.ts.map +1 -0
- package/lib/application/deployment.js +99 -0
- package/lib/application/deployment.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 +500 -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 +196 -0
- package/lib/bin/cli.d.ts.map +1 -0
- package/lib/bin/cli.js +934 -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 +182 -0
- package/lib/contexts/operationcontext.d.ts.map +1 -0
- package/lib/contexts/operationcontext.js +361 -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 +94 -0
- package/lib/core/hooks.d.ts.map +1 -0
- package/lib/core/hooks.js +97 -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/deployers/deployer.d.ts +157 -0
- package/lib/deployers/deployer.d.ts.map +1 -0
- package/lib/deployers/deployer.js +81 -0
- package/lib/deployers/deployer.js.map +1 -0
- package/lib/deployers/git.d.ts +27 -0
- package/lib/deployers/git.d.ts.map +1 -0
- package/lib/deployers/git.js +66 -0
- package/lib/deployers/git.js.map +1 -0
- package/lib/deployers/packager.d.ts +85 -0
- package/lib/deployers/packager.d.ts.map +1 -0
- package/lib/deployers/packager.js +259 -0
- package/lib/deployers/packager.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 +88 -54
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +88 -64
- 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 +67 -0
- package/lib/models/decorator.d.ts.map +1 -0
- package/lib/models/decorator.js +67 -0
- package/lib/models/decorator.js.map +1 -0
- package/lib/models/deployment.d.ts +2 -21
- package/lib/models/deployment.d.ts.map +1 -1
- package/lib/models/encrypted.model.d.ts +46 -0
- package/lib/models/encrypted.model.d.ts.map +1 -0
- package/lib/models/encrypted.model.js +87 -0
- package/lib/models/encrypted.model.js.map +1 -0
- package/lib/models/ident.model.d.ts +128 -0
- package/lib/models/ident.model.d.ts.map +1 -0
- package/lib/models/ident.model.js +207 -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 +113 -0
- package/lib/models/ownermodel.model.js.map +1 -0
- package/lib/models/password.model.d.ts +78 -0
- package/lib/models/password.model.d.ts.map +1 -0
- package/lib/models/password.model.js +171 -0
- package/lib/models/password.model.js.map +1 -0
- package/lib/models/refreshtoken.model.d.ts +30 -0
- package/lib/models/refreshtoken.model.d.ts.map +1 -0
- package/lib/models/refreshtoken.model.js +29 -0
- package/lib/models/refreshtoken.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 +124 -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 +164 -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 +432 -0
- package/lib/services/audit.model.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 +242 -0
- package/lib/services/domainservice.service.d.ts.map +1 -0
- package/lib/services/domainservice.service.js +676 -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 +202 -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/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 +171 -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/services/token.service.d.ts +95 -0
- package/lib/services/token.service.d.ts.map +1 -0
- package/lib/services/token.service.js +182 -0
- package/lib/services/token.service.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 +87 -0
- package/lib/session/manager.model.d.ts.map +1 -0
- package/lib/session/manager.model.js +212 -0
- package/lib/session/manager.model.js.map +1 -0
- package/lib/session/session.d.ts +100 -0
- package/lib/session/session.d.ts.map +1 -0
- package/lib/session/session.js +175 -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 +344 -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 +47 -0
- package/lib/templates/templates.d.ts.map +1 -0
- package/lib/templates/templates.js +101 -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/behavior-fixture.model.d.ts +30 -0
- package/lib/test/behavior-fixture.model.d.ts.map +1 -0
- package/lib/test/behavior-fixture.model.js +63 -0
- package/lib/test/behavior-fixture.model.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/legacyident.fixture.model.d.ts +98 -0
- package/lib/test/legacyident.fixture.model.d.ts.map +1 -0
- package/lib/test/legacyident.fixture.model.js +125 -0
- package/lib/test/legacyident.fixture.model.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 +102 -60
- package/test/cachedapp/webda.config.json +1 -5
- package/test/config-cached.json +3 -6
- package/test/config.json +3 -10
- package/test/my-cnf.json +9 -0
- package/webda.module.json +3755 -2496
- 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 +0 -361
- 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.d.ts +0 -226
- package/lib/services/oauth.d.ts.map +0 -1
- package/lib/services/oauth.js +0 -294
- package/lib/services/oauth.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,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options accepted by `@Action()` and `@Operation()`.
|
|
3
|
+
*
|
|
4
|
+
* The compiler scans for these decorators by name to populate model and
|
|
5
|
+
* Behavior metadata. The runtime decorator itself is a no-op pass-through —
|
|
6
|
+
* its only job is to make `@Action()` a valid runtime call so the source
|
|
7
|
+
* compiles. All actual action wiring is metadata-driven (see
|
|
8
|
+
* `compiler/src/metadata/actions.ts` and `metadata/behaviors.ts`).
|
|
9
|
+
*/
|
|
10
|
+
export interface ActionOptions {
|
|
11
|
+
/** Override the registered action name (defaults to the method name). */
|
|
12
|
+
name?: string;
|
|
13
|
+
/** OpenAPI overrides for the registered route. */
|
|
14
|
+
openapi?: any;
|
|
15
|
+
/** HTTP methods accepted by the action; defaults to `["PUT"]`. */
|
|
16
|
+
methods?: string[];
|
|
17
|
+
/** Mark the action as global (class-level) rather than instance-level. */
|
|
18
|
+
global?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Behavior-only override for the REST route registration.
|
|
21
|
+
*
|
|
22
|
+
* - `route: "."` ⇒ `/<plural>/{uuid}/<attribute>` (no extra segment)
|
|
23
|
+
* - `route: "url"` ⇒ `/<plural>/{uuid}/<attribute>/url`
|
|
24
|
+
* - `route: "{hash}"` ⇒ `/<plural>/{uuid}/<attribute>/{hash}`
|
|
25
|
+
*
|
|
26
|
+
* `method` overrides the HTTP verb; defaults to `"PUT"` when omitted.
|
|
27
|
+
*/
|
|
28
|
+
rest?: {
|
|
29
|
+
route?: string;
|
|
30
|
+
method?: string;
|
|
31
|
+
};
|
|
32
|
+
/** Free-form description forwarded into operation metadata. */
|
|
33
|
+
description?: string;
|
|
34
|
+
/** Free-form summary forwarded into operation metadata. */
|
|
35
|
+
summary?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Marker decorator used to expose a method as a model or Behavior action.
|
|
39
|
+
*
|
|
40
|
+
* The body is intentionally empty. The compiler discovers `@Action`-decorated
|
|
41
|
+
* methods by inspecting the AST during module generation, then writes the
|
|
42
|
+
* action metadata into `webda.module.json`. At runtime the decorator simply
|
|
43
|
+
* returns the method untouched, so applying or omitting it has no behavioural
|
|
44
|
+
* effect on the method itself.
|
|
45
|
+
*
|
|
46
|
+
* Both `@Action` (no parens) and `@Action({...})` are supported.
|
|
47
|
+
*/
|
|
48
|
+
export declare const Action: {
|
|
49
|
+
(value: any, context: any): any;
|
|
50
|
+
(_options?: ActionOptions): (value: any, context: any) => any;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Some simple annotations that can be used to add some behavior to attributes
|
|
54
|
+
*/
|
|
55
|
+
export declare const Masked: {
|
|
56
|
+
(initialValue: undefined, context: any): void;
|
|
57
|
+
(context: any, mask: string): (initialValue: undefined, context: any) => void;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Placeholder that only prefixes the value with "ENCRYPTED:": it does NOT encrypt anything
|
|
61
|
+
* @deprecated use the {@link EncryptedField} behavior (`field: EncryptedField<T>`), encrypted with the CryptoService
|
|
62
|
+
*/
|
|
63
|
+
export declare const Encrypted: {
|
|
64
|
+
(initialValue: undefined, context: any): void;
|
|
65
|
+
(context: any): (initialValue: undefined, context: any) => void;
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=decorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorator.d.ts","sourceRoot":"","sources":["../../src/models/decorator.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,MAAM;;;CAAwF,CAAC;AAE5G;;GAEG;AACH,eAAO,MAAM,MAAM;;;CA0BjB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,SAAS;;;CAqBpB,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { createMethodDecorator, createPropertyDecorator } from "@webda/tsc-esm";
|
|
2
|
+
import { truncate } from "fs/promises";
|
|
3
|
+
/**
|
|
4
|
+
* Marker decorator used to expose a method as a model or Behavior action.
|
|
5
|
+
*
|
|
6
|
+
* The body is intentionally empty. The compiler discovers `@Action`-decorated
|
|
7
|
+
* methods by inspecting the AST during module generation, then writes the
|
|
8
|
+
* action metadata into `webda.module.json`. At runtime the decorator simply
|
|
9
|
+
* returns the method untouched, so applying or omitting it has no behavioural
|
|
10
|
+
* effect on the method itself.
|
|
11
|
+
*
|
|
12
|
+
* Both `@Action` (no parens) and `@Action({...})` are supported.
|
|
13
|
+
*/
|
|
14
|
+
export const Action = createMethodDecorator((value, _context, _options) => value);
|
|
15
|
+
/**
|
|
16
|
+
* Some simple annotations that can be used to add some behavior to attributes
|
|
17
|
+
*/
|
|
18
|
+
export const Masked = createPropertyDecorator((value, context, mask) => {
|
|
19
|
+
if (context.kind === "field") {
|
|
20
|
+
context.addInitializer(function maskedInit() {
|
|
21
|
+
const descriptor = Object.getOwnPropertyDescriptor(this, context.name) || {};
|
|
22
|
+
Object.defineProperty(this, context.name, {
|
|
23
|
+
...descriptor,
|
|
24
|
+
get: function maskedGet() {
|
|
25
|
+
return this[`__${context.name}`];
|
|
26
|
+
},
|
|
27
|
+
set: function maskedSet(value) {
|
|
28
|
+
value = value.padEnd(mask.length, "?");
|
|
29
|
+
for (let i = 0; i < mask.length; i++) {
|
|
30
|
+
if (mask[i] === "X") {
|
|
31
|
+
value = value.substring(0, i) + "X" + value.substring(i + 1);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (truncate) {
|
|
35
|
+
value = value.substring(0, mask.length);
|
|
36
|
+
}
|
|
37
|
+
this[`__${context.name}`] = value;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
/**
|
|
44
|
+
* Placeholder that only prefixes the value with "ENCRYPTED:": it does NOT encrypt anything
|
|
45
|
+
* @deprecated use the {@link EncryptedField} behavior (`field: EncryptedField<T>`), encrypted with the CryptoService
|
|
46
|
+
*/
|
|
47
|
+
export const Encrypted = createPropertyDecorator((value, context) => {
|
|
48
|
+
if (context.kind === "field") {
|
|
49
|
+
context.addInitializer(function encryptedInit() {
|
|
50
|
+
const descriptor = Object.getOwnPropertyDescriptor(this, context.name) || {};
|
|
51
|
+
Object.defineProperty(this, context.name, {
|
|
52
|
+
...descriptor,
|
|
53
|
+
get: function encryptedGet() {
|
|
54
|
+
const val = this[`__${context.name}`];
|
|
55
|
+
if (val && val.startsWith("ENCRYPTED:")) {
|
|
56
|
+
return val.substring("ENCRYPTED:".length);
|
|
57
|
+
}
|
|
58
|
+
return val;
|
|
59
|
+
},
|
|
60
|
+
set: function encryptedSet(value) {
|
|
61
|
+
this[`__${context.name}`] = "ENCRYPTED:" + value;
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../src/models/decorator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Type can be a single Deployer or a chain of Deployer
|
|
2
|
+
* Deployment types moved to the application, kept here for compatibility
|
|
5
3
|
*/
|
|
6
|
-
export
|
|
7
|
-
name: string;
|
|
8
|
-
type: string;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* A Deployment is a configuration of an application along with its differents DeploymentUnit
|
|
12
|
-
*
|
|
13
|
-
* You can override the webda.config.json parameters and services parameters by specifying specific
|
|
14
|
-
*/
|
|
15
|
-
export default interface Deployment {
|
|
16
|
-
$schema?: string;
|
|
17
|
-
parameters: any;
|
|
18
|
-
resources: any;
|
|
19
|
-
services: any;
|
|
20
|
-
units: DeploymentUnit[];
|
|
21
|
-
name?: string;
|
|
22
|
-
}
|
|
23
|
-
export { Deployment };
|
|
4
|
+
export type { Deployment, DeploymentUnit } from "../application/deployment.js";
|
|
24
5
|
//# sourceMappingURL=deployment.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../src/models/deployment.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../src/models/deployment.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { WEBDA_STORAGE } from "@webda/models";
|
|
2
|
+
/**
|
|
3
|
+
* A model field encrypted at rest with the CryptoService
|
|
4
|
+
*
|
|
5
|
+
* Only the ciphertext is stored (`__ciphertext`, server-only: `__` keys never reach a public output). The value is
|
|
6
|
+
* JSON-serialised, encrypted with the current symmetric key (AES, with a random IV) and wrapped in a JWT signed with
|
|
7
|
+
* that key, so tampering is detected; values encrypted before a key rotation still decrypt while the CryptoService
|
|
8
|
+
* keeps the old key.
|
|
9
|
+
*
|
|
10
|
+
* ```typescript
|
|
11
|
+
* class MyModel extends UuidModel {
|
|
12
|
+
* secret: EncryptedField<{ apiKey: string }>;
|
|
13
|
+
* }
|
|
14
|
+
* await model.secret.set({ apiKey: "..." });
|
|
15
|
+
* await model.save();
|
|
16
|
+
* const { apiKey } = await model.secret.get();
|
|
17
|
+
* ```
|
|
18
|
+
* @WebdaBehavior Webda/Encrypted
|
|
19
|
+
*/
|
|
20
|
+
export declare class EncryptedField<T = any> {
|
|
21
|
+
[WEBDA_STORAGE]: Record<string, any>;
|
|
22
|
+
/** Encrypted value (a JWT wrapping the AES ciphertext), never output */
|
|
23
|
+
__ciphertext?: string;
|
|
24
|
+
/**
|
|
25
|
+
* @returns true when a value is stored
|
|
26
|
+
*/
|
|
27
|
+
isSet(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Encrypt and store a value (does not save the model); undefined clears it
|
|
30
|
+
* @param value - value to store, JSON-serialisable
|
|
31
|
+
*/
|
|
32
|
+
set(value: T | undefined): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Decrypt the stored value
|
|
35
|
+
* @returns the value, undefined when none is stored
|
|
36
|
+
* @throws Error when the ciphertext is invalid (tampered, or encrypted with an unknown key)
|
|
37
|
+
*/
|
|
38
|
+
get(): Promise<T | undefined>;
|
|
39
|
+
/**
|
|
40
|
+
* Remove the stored value (does not save the model)
|
|
41
|
+
*/
|
|
42
|
+
clear(): void;
|
|
43
|
+
get parent(): any;
|
|
44
|
+
toJSON(): Record<string, any>;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=encrypted.model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encrypted.model.d.ts","sourceRoot":"","sources":["../../src/models/encrypted.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAe9C;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAc,CAAC,CAAC,GAAG,GAAG;IACjC,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAC1C,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,KAAK,IAAI,OAAO,CAEf;IAED;;;OAGG;IACG,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7C;IAED;;;;OAIG;IACG,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAKlC;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAEZ;IACD,IAAI,MAAM,QAAgD;IAC1D,MAAM,wBAcL;CACF"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { WEBDA_STORAGE } from "@webda/models";
|
|
2
|
+
import { useDynamicService } from "../core/hooks.js";
|
|
3
|
+
/**
|
|
4
|
+
* @returns the CryptoService
|
|
5
|
+
* @throws Error when no CryptoService is available
|
|
6
|
+
*/
|
|
7
|
+
function crypto() {
|
|
8
|
+
const service = useDynamicService("CryptoService");
|
|
9
|
+
if (!service) {
|
|
10
|
+
throw new Error("Encrypted fields require the CryptoService");
|
|
11
|
+
}
|
|
12
|
+
return service;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A model field encrypted at rest with the CryptoService
|
|
16
|
+
*
|
|
17
|
+
* Only the ciphertext is stored (`__ciphertext`, server-only: `__` keys never reach a public output). The value is
|
|
18
|
+
* JSON-serialised, encrypted with the current symmetric key (AES, with a random IV) and wrapped in a JWT signed with
|
|
19
|
+
* that key, so tampering is detected; values encrypted before a key rotation still decrypt while the CryptoService
|
|
20
|
+
* keeps the old key.
|
|
21
|
+
*
|
|
22
|
+
* ```typescript
|
|
23
|
+
* class MyModel extends UuidModel {
|
|
24
|
+
* secret: EncryptedField<{ apiKey: string }>;
|
|
25
|
+
* }
|
|
26
|
+
* await model.secret.set({ apiKey: "..." });
|
|
27
|
+
* await model.save();
|
|
28
|
+
* const { apiKey } = await model.secret.get();
|
|
29
|
+
* ```
|
|
30
|
+
* @WebdaBehavior Webda/Encrypted
|
|
31
|
+
*/
|
|
32
|
+
export class EncryptedField {
|
|
33
|
+
[WEBDA_STORAGE] = {};
|
|
34
|
+
/** Encrypted value (a JWT wrapping the AES ciphertext), never output */
|
|
35
|
+
__ciphertext;
|
|
36
|
+
/**
|
|
37
|
+
* @returns true when a value is stored
|
|
38
|
+
*/
|
|
39
|
+
isSet() {
|
|
40
|
+
return typeof this.__ciphertext === "string" && this.__ciphertext.length > 0;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Encrypt and store a value (does not save the model); undefined clears it
|
|
44
|
+
* @param value - value to store, JSON-serialisable
|
|
45
|
+
*/
|
|
46
|
+
async set(value) {
|
|
47
|
+
if (value === undefined) {
|
|
48
|
+
this.clear();
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this.__ciphertext = await crypto().encrypt(value);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Decrypt the stored value
|
|
55
|
+
* @returns the value, undefined when none is stored
|
|
56
|
+
* @throws Error when the ciphertext is invalid (tampered, or encrypted with an unknown key)
|
|
57
|
+
*/
|
|
58
|
+
async get() {
|
|
59
|
+
if (!this.isSet()) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
return crypto().decrypt(this.__ciphertext);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Remove the stored value (does not save the model)
|
|
66
|
+
*/
|
|
67
|
+
clear() {
|
|
68
|
+
this.__ciphertext = undefined;
|
|
69
|
+
}
|
|
70
|
+
get parent() { return this[WEBDA_STORAGE]["__parent__"]; }
|
|
71
|
+
toJSON() {
|
|
72
|
+
const result = {};
|
|
73
|
+
for (const key of Object.keys(this)) {
|
|
74
|
+
result[key] = this[key];
|
|
75
|
+
}
|
|
76
|
+
const storage = this[WEBDA_STORAGE];
|
|
77
|
+
if (storage) {
|
|
78
|
+
for (const key of Object.keys(storage)) {
|
|
79
|
+
if (key !== "__parent__") {
|
|
80
|
+
result[key] = storage[key];
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=encrypted.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encrypted.model.js","sourceRoot":"","sources":["../../src/models/encrypted.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;GAGG;AACH,SAAS,MAAM;IACb,MAAM,OAAO,GAAG,iBAAiB,CAAM,eAAe,CAAC,CAAC;IACxD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,cAAc;IACzB,CAAC,aAAa,CAAC,GAAwB,EAAE,CAAC;IAC1C,wEAAwE;IACxE,YAAY,CAAU;IAEtB;;OAEG;IACH,KAAK;QACH,OAAO,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,GAAG,CAAC,KAAoB;QAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,MAAM,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAChC,CAAC;IACD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM;QACJ,MAAM,MAAM,GAAwB,EAAE,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,GAAI,IAAY,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,OAAO,GAAqC,IAAY,CAAC,aAAa,CAAC,CAAC;QAC9E,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;oBACzB,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import type { PrimaryKeyType } from "@webda/models";
|
|
2
|
+
import { Model, ModelLink, WEBDA_PRIMARY_KEY, WEBDA_PRIMARY_KEY_SEPARATOR, type Settable } from "@webda/models";
|
|
3
|
+
import * as WebdaError from "../errors/errors.js";
|
|
4
|
+
import type { IOperationContext } from "../contexts/icontext.js";
|
|
5
|
+
import { User } from "./user.model.js";
|
|
6
|
+
import { EncryptedField } from "./encrypted.model.js";
|
|
7
|
+
/** Tokens (credentials) of an identity provider, as the provider returns them */
|
|
8
|
+
export interface IdentTokens {
|
|
9
|
+
/** Access token */
|
|
10
|
+
access_token?: string;
|
|
11
|
+
/** Refresh token */
|
|
12
|
+
refresh_token?: string;
|
|
13
|
+
/** Any other provider field */
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
}
|
|
16
|
+
/** Email sending throttle state of an ident (login failures are top-level `Ident` attributes) */
|
|
17
|
+
export interface IdentThrottle {
|
|
18
|
+
/** Timestamp of the last email sent */
|
|
19
|
+
lastSentAt?: number;
|
|
20
|
+
}
|
|
21
|
+
/** Raised for malformed ident keys (400 INVALID_IDENT) */
|
|
22
|
+
export declare class InvalidIdent extends WebdaError.HttpError {
|
|
23
|
+
/** @param message - error message */
|
|
24
|
+
constructor(message?: string);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* An identity linked to a user: `<providerUid>:<provider>`
|
|
28
|
+
* @WebdaModel
|
|
29
|
+
*/
|
|
30
|
+
export declare class Ident extends Model {
|
|
31
|
+
/** Composite primary key */
|
|
32
|
+
[WEBDA_PRIMARY_KEY]: readonly ["providerUid", "provider"];
|
|
33
|
+
[WEBDA_PRIMARY_KEY_SEPARATOR]: string;
|
|
34
|
+
/** Identifier on the provider (normalised email for "email") */
|
|
35
|
+
providerUid: string;
|
|
36
|
+
/** Provider name */
|
|
37
|
+
provider: string;
|
|
38
|
+
/** Owner */
|
|
39
|
+
get _user(): ModelLink<User>;
|
|
40
|
+
set _user(value: string | User | PrimaryKeyType<User> | ModelLink<User>);
|
|
41
|
+
/** Email asserted for this ident */
|
|
42
|
+
email?: string;
|
|
43
|
+
/** When the ident was verified */
|
|
44
|
+
get verifiedAt(): Date;
|
|
45
|
+
set verifiedAt(value: string | number | Date);
|
|
46
|
+
/** Last login with this ident */
|
|
47
|
+
get lastUsedAt(): Date;
|
|
48
|
+
set lastUsedAt(value: string | number | Date);
|
|
49
|
+
/** Email sending throttle state */
|
|
50
|
+
_throttle: IdentThrottle;
|
|
51
|
+
/**
|
|
52
|
+
* Login attempts counted since the last successful login
|
|
53
|
+
*
|
|
54
|
+
* Top-level so stores can increment it atomically (nested-path atomic operations are not portable)
|
|
55
|
+
*/
|
|
56
|
+
_loginAttempts: number;
|
|
57
|
+
/** Timestamp (ms) of the last counted login attempt */
|
|
58
|
+
_lastLoginAttemptAt?: number;
|
|
59
|
+
/** Provider profile */
|
|
60
|
+
__profile?: any;
|
|
61
|
+
/** Provider tokens, encrypted at rest (`await ident.tokens.get()`) */
|
|
62
|
+
tokens: EncryptedField<IdentTokens>;
|
|
63
|
+
/** @param data - initial data */
|
|
64
|
+
constructor(data?: Settable<Ident>);
|
|
65
|
+
/**
|
|
66
|
+
* Build and validate a key
|
|
67
|
+
* @param providerUid - uid on the provider
|
|
68
|
+
* @param provider - provider name
|
|
69
|
+
* @returns the composite key
|
|
70
|
+
*/
|
|
71
|
+
static key(providerUid: string, provider: string): {
|
|
72
|
+
providerUid: string;
|
|
73
|
+
provider: string;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Parse a v3 storage key `"<providerUid>_<provider>"`, split on its LAST "_" (provider names never
|
|
77
|
+
* contain "_", provider uids such as emails may)
|
|
78
|
+
*
|
|
79
|
+
* Consulted by repositories for keys that are not `"<providerUid>:<provider>"` (see `WEBDA_LEGACY_UID`),
|
|
80
|
+
* so v3 records stay addressable and queryable until they are upgraded.
|
|
81
|
+
* @param uid - raw storage key
|
|
82
|
+
* @returns the key parts, or undefined when the key is not a v3 ident key
|
|
83
|
+
*/
|
|
84
|
+
static parseLegacyUID(uid: string): {
|
|
85
|
+
providerUid: string;
|
|
86
|
+
provider: string;
|
|
87
|
+
} | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* v3 storage key of a record stored before the composite key (v3 kept it as `uuid` in the body)
|
|
90
|
+
*
|
|
91
|
+
* Such an ident has no `providerUid`: it must be upgraded (`@webda/auth` `upgradeIdent`) before use.
|
|
92
|
+
* @returns the v3 key, or undefined for a current ident
|
|
93
|
+
*/
|
|
94
|
+
getLegacyUID(): string | undefined;
|
|
95
|
+
/**
|
|
96
|
+
* Normalise an email for use as providerUid
|
|
97
|
+
* @param email - raw email
|
|
98
|
+
* @returns trimmed lowercase email
|
|
99
|
+
*/
|
|
100
|
+
static normalizeEmail(email: string): string;
|
|
101
|
+
/**
|
|
102
|
+
* @returns the owner link
|
|
103
|
+
*/
|
|
104
|
+
getUser(): ModelLink<User>;
|
|
105
|
+
/**
|
|
106
|
+
* @param user - owner uuid or user
|
|
107
|
+
*/
|
|
108
|
+
setUser(user: string | User): void;
|
|
109
|
+
/**
|
|
110
|
+
* @returns the email of this ident
|
|
111
|
+
*/
|
|
112
|
+
getEmail(): string | undefined;
|
|
113
|
+
/**
|
|
114
|
+
* @returns true when verified
|
|
115
|
+
*/
|
|
116
|
+
isVerified(): boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Only the owner may act on an ident
|
|
119
|
+
* @param ctx - operation context
|
|
120
|
+
* @param action - action name
|
|
121
|
+
* @returns true or a refusal reason
|
|
122
|
+
*/
|
|
123
|
+
canAct(ctx: IOperationContext, action: string): Promise<string | boolean>;
|
|
124
|
+
/** Generated by @webda/content-mapper: include values held in WEBDA_STORAGE. */
|
|
125
|
+
toJSON(): any;
|
|
126
|
+
protected __hydrateBehaviors(rawData?: any): void;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=ident.model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ident.model.d.ts","sourceRoot":"","sources":["../../src/models/ident.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { WEBDA_STORAGE } from "@webda/models";
|
|
2
|
+
import { Model, ModelLink, WEBDA_PRIMARY_KEY, WEBDA_PRIMARY_KEY_SEPARATOR } from "@webda/models";
|
|
3
|
+
import * as WebdaError from "../errors/errors.js";
|
|
4
|
+
import { User } from "./user.model.js";
|
|
5
|
+
import { EncryptedField } from "./encrypted.model.js";
|
|
6
|
+
/** Raised for malformed ident keys (400 INVALID_IDENT) */
|
|
7
|
+
export class InvalidIdent extends WebdaError.HttpError {
|
|
8
|
+
/** @param message - error message */
|
|
9
|
+
constructor(message = "Invalid ident") {
|
|
10
|
+
super(message, 400);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const SEPARATOR = ":";
|
|
14
|
+
/**
|
|
15
|
+
* An identity linked to a user: `<providerUid>:<provider>`
|
|
16
|
+
* @WebdaModel
|
|
17
|
+
*/
|
|
18
|
+
export class Ident extends Model {
|
|
19
|
+
/** Composite primary key */
|
|
20
|
+
[WEBDA_PRIMARY_KEY] = ["providerUid", "provider"];
|
|
21
|
+
// Must stay a string literal: the content mapper reads it textually
|
|
22
|
+
[WEBDA_PRIMARY_KEY_SEPARATOR] = ":";
|
|
23
|
+
/** Identifier on the provider (normalised email for "email") */
|
|
24
|
+
providerUid;
|
|
25
|
+
/** Provider name */
|
|
26
|
+
provider;
|
|
27
|
+
/** Owner */
|
|
28
|
+
get _user() {
|
|
29
|
+
return this[WEBDA_STORAGE]["_user"];
|
|
30
|
+
}
|
|
31
|
+
set _user(value) {
|
|
32
|
+
if (value instanceof ModelLink) {
|
|
33
|
+
this[WEBDA_STORAGE]["_user"] = value;
|
|
34
|
+
}
|
|
35
|
+
else if (value != null) {
|
|
36
|
+
const inst = this[WEBDA_STORAGE]["_user"] || new ModelLink(User);
|
|
37
|
+
inst.set(value);
|
|
38
|
+
this[WEBDA_STORAGE]["_user"] = inst;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
this[WEBDA_STORAGE]["_user"] = value;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Email asserted for this ident */
|
|
45
|
+
email;
|
|
46
|
+
/** When the ident was verified */
|
|
47
|
+
get verifiedAt() {
|
|
48
|
+
return this[WEBDA_STORAGE]["verifiedAt"];
|
|
49
|
+
}
|
|
50
|
+
set verifiedAt(value) {
|
|
51
|
+
this[WEBDA_STORAGE]["verifiedAt"] = value !== undefined && value !== null ? new Date(value) : value;
|
|
52
|
+
}
|
|
53
|
+
/** Last login with this ident */
|
|
54
|
+
get lastUsedAt() {
|
|
55
|
+
return this[WEBDA_STORAGE]["lastUsedAt"];
|
|
56
|
+
}
|
|
57
|
+
set lastUsedAt(value) {
|
|
58
|
+
this[WEBDA_STORAGE]["lastUsedAt"] = value !== undefined && value !== null ? new Date(value) : value;
|
|
59
|
+
}
|
|
60
|
+
/** Email sending throttle state */
|
|
61
|
+
_throttle = {};
|
|
62
|
+
/**
|
|
63
|
+
* Login attempts counted since the last successful login
|
|
64
|
+
*
|
|
65
|
+
* Top-level so stores can increment it atomically (nested-path atomic operations are not portable)
|
|
66
|
+
*/
|
|
67
|
+
_loginAttempts = 0;
|
|
68
|
+
/** Timestamp (ms) of the last counted login attempt */
|
|
69
|
+
_lastLoginAttemptAt;
|
|
70
|
+
/** Provider profile */
|
|
71
|
+
__profile;
|
|
72
|
+
/** Provider tokens, encrypted at rest (`await ident.tokens.get()`) */
|
|
73
|
+
tokens;
|
|
74
|
+
/** @param data - initial data */
|
|
75
|
+
constructor(data) {
|
|
76
|
+
super();
|
|
77
|
+
Object.assign(this, data);
|
|
78
|
+
// Raw stored data (or none) must become an EncryptedField behavior
|
|
79
|
+
if (!(this.tokens instanceof EncryptedField)) {
|
|
80
|
+
this.__hydrateBehaviors?.({ tokens: data?.tokens ?? {} });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Build and validate a key
|
|
85
|
+
* @param providerUid - uid on the provider
|
|
86
|
+
* @param provider - provider name
|
|
87
|
+
* @returns the composite key
|
|
88
|
+
*/
|
|
89
|
+
static key(providerUid, provider) {
|
|
90
|
+
for (const [name, v] of [
|
|
91
|
+
["providerUid", providerUid],
|
|
92
|
+
["provider", provider]
|
|
93
|
+
]) {
|
|
94
|
+
if (typeof v !== "string" || v.length === 0 || v.includes(SEPARATOR)) {
|
|
95
|
+
throw new InvalidIdent(`${name} must be a non-empty string without '${SEPARATOR}'`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return { providerUid, provider };
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Parse a v3 storage key `"<providerUid>_<provider>"`, split on its LAST "_" (provider names never
|
|
102
|
+
* contain "_", provider uids such as emails may)
|
|
103
|
+
*
|
|
104
|
+
* Consulted by repositories for keys that are not `"<providerUid>:<provider>"` (see `WEBDA_LEGACY_UID`),
|
|
105
|
+
* so v3 records stay addressable and queryable until they are upgraded.
|
|
106
|
+
* @param uid - raw storage key
|
|
107
|
+
* @returns the key parts, or undefined when the key is not a v3 ident key
|
|
108
|
+
*/
|
|
109
|
+
static parseLegacyUID(uid) {
|
|
110
|
+
if (typeof uid !== "string" || uid.includes(SEPARATOR)) {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
const i = uid.lastIndexOf("_");
|
|
114
|
+
if (i <= 0 || i === uid.length - 1) {
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
return { providerUid: uid.substring(0, i), provider: uid.substring(i + 1) };
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* v3 storage key of a record stored before the composite key (v3 kept it as `uuid` in the body)
|
|
121
|
+
*
|
|
122
|
+
* Such an ident has no `providerUid`: it must be upgraded (`@webda/auth` `upgradeIdent`) before use.
|
|
123
|
+
* @returns the v3 key, or undefined for a current ident
|
|
124
|
+
*/
|
|
125
|
+
getLegacyUID() {
|
|
126
|
+
const uuid = this.uuid;
|
|
127
|
+
if (this.providerUid || typeof uuid !== "string" || !Ident.parseLegacyUID(uuid)) {
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
return uuid;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Normalise an email for use as providerUid
|
|
134
|
+
* @param email - raw email
|
|
135
|
+
* @returns trimmed lowercase email
|
|
136
|
+
*/
|
|
137
|
+
static normalizeEmail(email) {
|
|
138
|
+
return `${email ?? ""}`.trim().toLowerCase();
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* @returns the owner link
|
|
142
|
+
*/
|
|
143
|
+
getUser() {
|
|
144
|
+
return this._user;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* @param user - owner uuid or user
|
|
148
|
+
*/
|
|
149
|
+
setUser(user) {
|
|
150
|
+
const uuid = typeof user === "string" ? user : user.getUUID();
|
|
151
|
+
this._user ??= new ModelLink(User).set(uuid);
|
|
152
|
+
this._user.set(uuid);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* @returns the email of this ident
|
|
156
|
+
*/
|
|
157
|
+
getEmail() {
|
|
158
|
+
return this.email;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* @returns true when verified
|
|
162
|
+
*/
|
|
163
|
+
isVerified() {
|
|
164
|
+
return this.verifiedAt !== undefined && this.verifiedAt !== null;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Only the owner may act on an ident
|
|
168
|
+
* @param ctx - operation context
|
|
169
|
+
* @param action - action name
|
|
170
|
+
* @returns true or a refusal reason
|
|
171
|
+
*/
|
|
172
|
+
async canAct(ctx, action) {
|
|
173
|
+
if (!ctx.getCurrentUserId() || this._user?.toString() !== ctx.getCurrentUserId()) {
|
|
174
|
+
return "You can't act on this ident";
|
|
175
|
+
}
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
/** Generated by @webda/content-mapper: include values held in WEBDA_STORAGE. */
|
|
179
|
+
toJSON() {
|
|
180
|
+
const parent = super.toJSON ? super.toJSON() : {};
|
|
181
|
+
const result = parent === this ? {} : parent;
|
|
182
|
+
for (const key of Object.keys(this)) {
|
|
183
|
+
result[key] = this[key];
|
|
184
|
+
}
|
|
185
|
+
Object.assign(result, this[WEBDA_STORAGE]);
|
|
186
|
+
return result;
|
|
187
|
+
}
|
|
188
|
+
__hydrateBehaviors(rawData) {
|
|
189
|
+
{
|
|
190
|
+
let v = this.tokens;
|
|
191
|
+
if (rawData !== undefined && rawData !== null && rawData["tokens"] !== undefined) {
|
|
192
|
+
v = rawData["tokens"];
|
|
193
|
+
}
|
|
194
|
+
if (!(v instanceof EncryptedField)) {
|
|
195
|
+
const inst = new EncryptedField();
|
|
196
|
+
if (v !== undefined && v !== null) {
|
|
197
|
+
Object.assign(inst, v);
|
|
198
|
+
}
|
|
199
|
+
v = inst;
|
|
200
|
+
}
|
|
201
|
+
v[WEBDA_STORAGE] = v[WEBDA_STORAGE] || {};
|
|
202
|
+
v[WEBDA_STORAGE]["__parent__"] = { instance: this, attribute: "tokens" };
|
|
203
|
+
this.tokens = v;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=ident.model.js.map
|