@webda/core 4.0.0-beta.1 → 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/application/unpackedapplication.d.ts +104 -0
- 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 -49
- 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 +45 -19
- package/lib/contexts/httpcontext.d.ts.map +1 -0
- package/lib/{utils → contexts}/httpcontext.js +102 -34
- 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 +84 -51
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +82 -59
- 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 +21 -77
- package/lib/models/aclmodel.d.ts.map +1 -0
- package/lib/models/aclmodel.js +27 -204
- 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 +2 -1
- package/lib/models/deployment.d.ts.map +1 -0
- 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.model.js +53 -0
- 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.service.d.ts +72 -0
- package/lib/queues/memoryqueue.service.d.ts.map +1 -0
- package/lib/queues/memoryqueue.service.js +136 -0
- package/lib/queues/memoryqueue.service.js.map +1 -0
- package/lib/queues/pubsubservice.d.ts +9 -6
- package/lib/queues/pubsubservice.d.ts.map +1 -0
- package/lib/queues/pubsubservice.js +5 -4
- package/lib/queues/pubsubservice.js.map +1 -1
- package/lib/queues/queueservice.d.ts +10 -11
- package/lib/queues/queueservice.d.ts.map +1 -0
- package/lib/queues/queueservice.js +48 -20
- 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 -58
- 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 +19 -13
- package/lib/services/cloudbinary.d.ts.map +1 -0
- package/lib/services/cloudbinary.js +24 -18
- 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} +77 -142
- 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.service.js +66 -0
- 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 -10
- 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 +58 -31
- package/lib/services/oauth.d.ts.map +1 -0
- package/lib/services/oauth.js +365 -251
- 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 -11
- 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.service.d.ts +121 -0
- 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 +88 -189
- package/lib/services/service.d.ts.map +1 -0
- package/lib/services/service.js +407 -432
- 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 -18
- 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 +127 -768
- package/lib/stores/store.d.ts.map +1 -0
- package/lib/stores/store.js +258 -1718
- 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 +5 -2
- package/lib/utils/abstractdeployer.d.ts.map +1 -0
- package/lib/utils/abstractdeployer.js +3 -0
- package/lib/utils/abstractdeployer.js.map +1 -1
- package/package.json +85 -56
- package/test/cachedapp/webda.config.json +1 -5
- package/test/config-cached.json +1 -5
- package/test/config.json +6 -99
- package/test/data/.env +1 -0
- package/test/my-cnf.json +9 -0
- package/webda.module.json +3462 -2231
- package/lib/application.d.ts +0 -876
- package/lib/application.js +0 -741
- package/lib/application.js.map +0 -1
- package/lib/application.spec.d.ts +0 -1
- package/lib/application.spec.js +0 -234
- package/lib/application.spec.js.map +0 -1
- package/lib/core.d.ts +0 -740
- package/lib/core.js +0 -1310
- package/lib/core.js.map +0 -1
- package/lib/core.spec.d.ts +0 -1
- package/lib/core.spec.js +0 -761
- package/lib/core.spec.js.map +0 -1
- package/lib/errors.d.ts +0 -65
- package/lib/errors.js +0 -113
- package/lib/errors.js.map +0 -1
- package/lib/errors.spec.d.ts +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 -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 -887
- package/lib/models/coremodel.js +0 -1208
- package/lib/models/coremodel.js.map +0 -1
- package/lib/models/coremodel.spec.d.ts +0 -1
- package/lib/models/coremodel.spec.js +0 -462
- package/lib/models/coremodel.spec.js.map +0 -1
- package/lib/models/ident.d.ts +0 -53
- package/lib/models/ident.js +0 -40
- package/lib/models/ident.js.map +0 -1
- package/lib/models/ident.spec.d.ts +0 -1
- package/lib/models/ident.spec.js +0 -43
- package/lib/models/ident.spec.js.map +0 -1
- package/lib/models/ownermodel.d.ts +0 -50
- package/lib/models/ownermodel.js +0 -65
- package/lib/models/ownermodel.js.map +0 -1
- package/lib/models/ownermodel.spec.d.ts +0 -1
- package/lib/models/ownermodel.spec.js +0 -191
- package/lib/models/ownermodel.spec.js.map +0 -1
- package/lib/models/relations.d.ts +0 -181
- package/lib/models/relations.js +0 -157
- package/lib/models/relations.js.map +0 -1
- package/lib/models/relations.spec.d.ts +0 -12
- package/lib/models/relations.spec.js +0 -224
- package/lib/models/relations.spec.js.map +0 -1
- package/lib/models/rolemodel.d.ts +0 -10
- package/lib/models/rolemodel.js +0 -35
- package/lib/models/rolemodel.js.map +0 -1
- package/lib/models/rolemodel.spec.d.ts +0 -1
- package/lib/models/rolemodel.spec.js +0 -86
- package/lib/models/rolemodel.spec.js.map +0 -1
- package/lib/models/user.d.ts +0 -100
- package/lib/models/user.js +0 -157
- package/lib/models/user.js.map +0 -1
- package/lib/models/user.spec.d.ts +0 -1
- package/lib/models/user.spec.js +0 -88
- package/lib/models/user.spec.js.map +0 -1
- package/lib/queues/filequeue.d.ts +0 -58
- package/lib/queues/filequeue.js +0 -131
- package/lib/queues/filequeue.js.map +0 -1
- package/lib/queues/filequeue.spec.d.ts +0 -1
- package/lib/queues/filequeue.spec.js +0 -78
- package/lib/queues/filequeue.spec.js.map +0 -1
- package/lib/queues/memoryqueue.d.ts +0 -45
- package/lib/queues/memoryqueue.js +0 -81
- package/lib/queues/memoryqueue.js.map +0 -1
- package/lib/queues/memoryqueue.spec.d.ts +0 -1
- package/lib/queues/memoryqueue.spec.js +0 -192
- package/lib/queues/memoryqueue.spec.js.map +0 -1
- package/lib/queues/queue.spec.d.ts +0 -5
- package/lib/queues/queue.spec.js +0 -55
- package/lib/queues/queue.spec.js.map +0 -1
- package/lib/router.d.ts +0 -172
- package/lib/router.js +0 -419
- package/lib/router.js.map +0 -1
- package/lib/router.spec.d.ts +0 -1
- package/lib/router.spec.js +0 -229
- package/lib/router.spec.js.map +0 -1
- package/lib/services/asyncevents.d.ts +0 -151
- package/lib/services/asyncevents.js +0 -217
- package/lib/services/asyncevents.js.map +0 -1
- package/lib/services/asyncevents.spec.d.ts +0 -1
- package/lib/services/asyncevents.spec.js +0 -118
- package/lib/services/asyncevents.spec.js.map +0 -1
- package/lib/services/authentication.js +0 -772
- package/lib/services/authentication.js.map +0 -1
- package/lib/services/authentication.spec.d.ts +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 -549
- package/lib/services/binary.js +0 -986
- package/lib/services/binary.js.map +0 -1
- package/lib/services/binary.spec.d.ts +0 -44
- package/lib/services/binary.spec.js +0 -438
- package/lib/services/binary.spec.js.map +0 -1
- package/lib/services/cloudbinary.spec.d.ts +0 -13
- package/lib/services/cloudbinary.spec.js +0 -192
- package/lib/services/cloudbinary.spec.js.map +0 -1
- package/lib/services/configuration.js +0 -178
- package/lib/services/configuration.js.map +0 -1
- package/lib/services/configuration.spec.d.ts +0 -1
- package/lib/services/configuration.spec.js +0 -87
- package/lib/services/configuration.spec.js.map +0 -1
- package/lib/services/cron.d.ts +0 -73
- package/lib/services/cron.js +0 -141
- package/lib/services/cron.js.map +0 -1
- package/lib/services/cron.spec.d.ts +0 -1
- package/lib/services/cron.spec.js +0 -76
- package/lib/services/cron.spec.js.map +0 -1
- package/lib/services/cryptoservice.js +0 -434
- package/lib/services/cryptoservice.js.map +0 -1
- package/lib/services/cryptoservice.spec.d.ts +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.js +0 -52
- package/lib/services/debugmailer.js.map +0 -1
- package/lib/services/debugmailer.spec.d.ts +0 -1
- package/lib/services/debugmailer.spec.js +0 -29
- package/lib/services/debugmailer.spec.js.map +0 -1
- package/lib/services/domainservice.d.ts +0 -152
- package/lib/services/domainservice.js +0 -881
- package/lib/services/domainservice.js.map +0 -1
- package/lib/services/domainservice.spec.d.ts +0 -1
- package/lib/services/domainservice.spec.js +0 -401
- package/lib/services/domainservice.spec.js.map +0 -1
- package/lib/services/filebinary.d.ts +0 -133
- package/lib/services/filebinary.js +0 -371
- package/lib/services/filebinary.js.map +0 -1
- package/lib/services/filebinary.spec.d.ts +0 -21
- package/lib/services/filebinary.spec.js +0 -415
- package/lib/services/filebinary.spec.js.map +0 -1
- package/lib/services/fileconfiguration.d.ts +0 -22
- package/lib/services/fileconfiguration.js +0 -48
- package/lib/services/fileconfiguration.js.map +0 -1
- package/lib/services/fileconfiguration.spec.d.ts +0 -1
- package/lib/services/fileconfiguration.spec.js +0 -177
- package/lib/services/fileconfiguration.spec.js.map +0 -1
- package/lib/services/invitationservice.d.ts +0 -222
- package/lib/services/invitationservice.js +0 -526
- package/lib/services/invitationservice.js.map +0 -1
- package/lib/services/invitationservice.spec.d.ts +0 -1
- package/lib/services/invitationservice.spec.js +0 -516
- package/lib/services/invitationservice.spec.js.map +0 -1
- package/lib/services/kubernetesconfiguration.d.ts +0 -26
- package/lib/services/kubernetesconfiguration.js +0 -54
- package/lib/services/kubernetesconfiguration.js.map +0 -1
- package/lib/services/kubernetesconfiguration.spec.d.ts +0 -1
- package/lib/services/kubernetesconfiguration.spec.js +0 -147
- package/lib/services/kubernetesconfiguration.spec.js.map +0 -1
- package/lib/services/mailer.d.ts +0 -165
- package/lib/services/mailer.js +0 -176
- package/lib/services/mailer.js.map +0 -1
- package/lib/services/mailer.spec.d.ts +0 -1
- package/lib/services/mailer.spec.js +0 -144
- package/lib/services/mailer.spec.js.map +0 -1
- package/lib/services/notificationservice.js.map +0 -1
- package/lib/services/notificationservice.spec.d.ts +0 -1
- package/lib/services/notificationservice.spec.js +0 -78
- package/lib/services/notificationservice.spec.js.map +0 -1
- package/lib/services/oauth.spec.d.ts +0 -1
- package/lib/services/oauth.spec.js +0 -184
- package/lib/services/oauth.spec.js.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 -1
- package/lib/services/prometheus.spec.js +0 -57
- package/lib/services/prometheus.spec.js.map +0 -1
- package/lib/services/resource.d.ts +0 -87
- package/lib/services/resource.js +0 -156
- package/lib/services/resource.js.map +0 -1
- package/lib/services/resource.spec.d.ts +0 -1
- package/lib/services/resource.spec.js +0 -122
- package/lib/services/resource.spec.js.map +0 -1
- package/lib/services/service.spec.d.ts +0 -1
- package/lib/services/service.spec.js +0 -268
- package/lib/services/service.spec.js.map +0 -1
- package/lib/stores/aggregator.d.ts +0 -41
- package/lib/stores/aggregator.js +0 -80
- package/lib/stores/aggregator.js.map +0 -1
- package/lib/stores/aliasstore.d.ts +0 -108
- package/lib/stores/aliasstore.js +0 -168
- package/lib/stores/aliasstore.js.map +0 -1
- package/lib/stores/aliasstore.spec.d.ts +0 -11
- package/lib/stores/aliasstore.spec.js +0 -89
- package/lib/stores/aliasstore.spec.js.map +0 -1
- package/lib/stores/file.d.ts +0 -107
- package/lib/stores/file.js +0 -188
- package/lib/stores/file.js.map +0 -1
- package/lib/stores/file.spec.d.ts +0 -19
- package/lib/stores/file.spec.js +0 -232
- package/lib/stores/file.spec.js.map +0 -1
- package/lib/stores/mapper.d.ts +0 -149
- package/lib/stores/mapper.js +0 -293
- package/lib/stores/mapper.js.map +0 -1
- package/lib/stores/mapper.spec.d.ts +0 -1
- package/lib/stores/mapper.spec.js +0 -160
- package/lib/stores/mapper.spec.js.map +0 -1
- package/lib/stores/memory.d.ts +0 -151
- package/lib/stores/memory.js +0 -371
- package/lib/stores/memory.js.map +0 -1
- package/lib/stores/memory.spec.d.ts +0 -20
- package/lib/stores/memory.spec.js +0 -328
- package/lib/stores/memory.spec.js.map +0 -1
- package/lib/stores/modelmapper.d.ts +0 -61
- package/lib/stores/modelmapper.js +0 -199
- package/lib/stores/modelmapper.js.map +0 -1
- package/lib/stores/store.spec.d.ts +0 -65
- package/lib/stores/store.spec.js +0 -906
- package/lib/stores/store.spec.js.map +0 -1
- package/lib/test.d.ts +0 -162
- package/lib/test.js +0 -399
- package/lib/test.js.map +0 -1
- package/lib/unpackedapplication.d.ts +0 -76
- package/lib/unpackedapplication.js +0 -299
- package/lib/unpackedapplication.js.map +0 -1
- package/lib/utils/abstractdeployer.spec.d.ts +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 -7
- package/lib/utils/case.js +0 -43
- package/lib/utils/case.js.map +0 -1
- package/lib/utils/case.spec.d.ts +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 -462
- package/lib/utils/context.js +0 -732
- package/lib/utils/context.js.map +0 -1
- package/lib/utils/context.spec.d.ts +0 -9
- package/lib/utils/context.spec.js +0 -372
- package/lib/utils/context.spec.js.map +0 -1
- package/lib/utils/cookie.js.map +0 -1
- package/lib/utils/cookie.spec.d.ts +0 -1
- package/lib/utils/cookie.spec.js +0 -78
- package/lib/utils/cookie.spec.js.map +0 -1
- package/lib/utils/esm.d.ts +0 -13
- package/lib/utils/esm.js +0 -19
- package/lib/utils/esm.js.map +0 -1
- package/lib/utils/httpcontext.js.map +0 -1
- package/lib/utils/httpcontext.spec.d.ts +0 -4
- package/lib/utils/httpcontext.spec.js +0 -77
- package/lib/utils/httpcontext.spec.js.map +0 -1
- package/lib/utils/logger.d.ts +0 -91
- package/lib/utils/logger.js +0 -121
- package/lib/utils/logger.js.map +0 -1
- package/lib/utils/logger.spec.d.ts +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 -161
- package/lib/utils/serializers.js +0 -420
- package/lib/utils/serializers.js.map +0 -1
- package/lib/utils/serializers.spec.d.ts +0 -1
- package/lib/utils/serializers.spec.js +0 -313
- package/lib/utils/serializers.spec.js.map +0 -1
- package/lib/utils/session.d.ts +0 -126
- package/lib/utils/session.js +0 -166
- package/lib/utils/session.js.map +0 -1
- package/lib/utils/session.spec.d.ts +0 -1
- package/lib/utils/session.spec.js +0 -71
- package/lib/utils/session.spec.js.map +0 -1
- package/lib/utils/throttler.d.ts +0 -102
- package/lib/utils/throttler.js +0 -168
- package/lib/utils/throttler.js.map +0 -1
- package/lib/utils/throttler.spec.d.ts +0 -1
- package/lib/utils/throttler.spec.js +0 -55
- package/lib/utils/throttler.spec.js.map +0 -1
- package/lib/utils/waiter.d.ts +0 -93
- package/lib/utils/waiter.js +0 -148
- package/lib/utils/waiter.js.map +0 -1
- package/lib/utils/waiter.spec.d.ts +0 -1
- package/lib/utils/waiter.spec.js +0 -98
- package/lib/utils/waiter.spec.js.map +0 -1
- package/test/config-file-missing-file-no-default.json +0 -44
- package/test/config-file-missing-file.json +0 -55
- package/test/config-file-no-reload.json +0 -69
- package/test/config-file-reload.json +0 -68
- package/test/config-invitation.json +0 -63
- package/test/config-kube-reload.json +0 -68
- package/test/config-reload.json +0 -66
- package/test/config.old.json +0 -152
- package/test/jsonutils/mdocs.yaml +0 -56
- package/test/jsonutils/test.json +0 -3
- package/test/jsonutils/test.yml +0 -5
- package/test/moddas/annotatedservice.js +0 -23
- package/test/moddas/debugmailer.js +0 -13
- package/test/moddas/fakeservice.js +0 -4
- package/test/moddas/voidstore.js +0 -66
- package/test/models/ident.js +0 -36
- package/test/models/task.js +0 -42
|
@@ -0,0 +1,600 @@
|
|
|
1
|
+
import { TransformCase } from "@webda/utils";
|
|
2
|
+
import { Service } from "./service.js";
|
|
3
|
+
import { OperationContext } from "../contexts/operationcontext.js";
|
|
4
|
+
import { runWithContext, useContext } from "../contexts/execution.js";
|
|
5
|
+
import * as WebdaError from "../errors/errors.js";
|
|
6
|
+
import { ServiceParameters } from "../services/serviceparameters.js";
|
|
7
|
+
import { useApplication } from "../application/hooks.js";
|
|
8
|
+
import { useModelMetadata } from "../core/hooks.js";
|
|
9
|
+
import { useInstanceStorage } from "../core/instancestorage.js";
|
|
10
|
+
import { registerOperation } from "../core/operations.js";
|
|
11
|
+
import { hasSchema, registerSchema } from "../schemas/hooks.js";
|
|
12
|
+
/** Parameters for DomainService, controlling model exposure, URL naming, and query methods */
|
|
13
|
+
export class DomainServiceParameters extends ServiceParameters {
|
|
14
|
+
/**
|
|
15
|
+
* Expose objects as operations too
|
|
16
|
+
*
|
|
17
|
+
* @default true
|
|
18
|
+
*/
|
|
19
|
+
operations;
|
|
20
|
+
/**
|
|
21
|
+
* Transform the name of the model to be used in the URL
|
|
22
|
+
*
|
|
23
|
+
* @see https://blog.boot.dev/clean-code/casings-in-coding/#:~:text=%F0%9F%94%97%20Camel%20Case,Go
|
|
24
|
+
* @default camelCase
|
|
25
|
+
*/
|
|
26
|
+
nameTransfomer;
|
|
27
|
+
/**
|
|
28
|
+
* Method used for query objects
|
|
29
|
+
*
|
|
30
|
+
* @default "PUT"
|
|
31
|
+
*/
|
|
32
|
+
queryMethod;
|
|
33
|
+
/**
|
|
34
|
+
* List of models to include
|
|
35
|
+
*
|
|
36
|
+
* If model is prefixed with a ! it will be excluded
|
|
37
|
+
*
|
|
38
|
+
* @default ["*"]
|
|
39
|
+
*/
|
|
40
|
+
models;
|
|
41
|
+
/**
|
|
42
|
+
* Used to store the excluded models
|
|
43
|
+
* @SchemaIgnore
|
|
44
|
+
*/
|
|
45
|
+
excludedModels;
|
|
46
|
+
/**
|
|
47
|
+
* Load parameters with defaults for operations, naming, and query method
|
|
48
|
+
* @param params - the service parameters
|
|
49
|
+
* @returns this for chaining
|
|
50
|
+
*/
|
|
51
|
+
load(params = {}) {
|
|
52
|
+
super.load(params);
|
|
53
|
+
// Init default here
|
|
54
|
+
this.operations ??= true;
|
|
55
|
+
this.nameTransfomer ??= "camelCase";
|
|
56
|
+
this.queryMethod ??= "PUT";
|
|
57
|
+
this.models ??= ["*"];
|
|
58
|
+
this.excludedModels = this.models.filter(i => i.startsWith("!")).map(i => i.substring(1));
|
|
59
|
+
// Only contains excluded models so a wildcard is implied
|
|
60
|
+
if (this.models.length === this.excludedModels.length) {
|
|
61
|
+
this.models = ["*"];
|
|
62
|
+
}
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Is a model is included in the service
|
|
67
|
+
* @param model - the model to use
|
|
68
|
+
* @returns the result
|
|
69
|
+
*/
|
|
70
|
+
isIncluded(model) {
|
|
71
|
+
return !this.isExcluded(model) && (this.models.includes("*") || this.models.includes(model));
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Is a model excluded from the service
|
|
75
|
+
* @param model - the model to use
|
|
76
|
+
* @returns the result
|
|
77
|
+
*/
|
|
78
|
+
isExcluded(model) {
|
|
79
|
+
return this.excludedModels.includes(model);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Domain Service expose all the models as Operations
|
|
84
|
+
*
|
|
85
|
+
* Model are exposed if they have a Expose decorator
|
|
86
|
+
*
|
|
87
|
+
* Children models Exposed should be under the first ModelRelated targetting them or the segment endpoint of Expose
|
|
88
|
+
*
|
|
89
|
+
* Other relations (ModelLinks, ModelParent) should only display their information but not be exposed
|
|
90
|
+
* ModelRelated should be ignored
|
|
91
|
+
*
|
|
92
|
+
* @WebdaModda
|
|
93
|
+
*/
|
|
94
|
+
export class DomainService extends Service {
|
|
95
|
+
app;
|
|
96
|
+
static schemas = {
|
|
97
|
+
uuidRequest: {
|
|
98
|
+
type: "object",
|
|
99
|
+
properties: {
|
|
100
|
+
uuid: {
|
|
101
|
+
type: "string"
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
required: ["uuid"]
|
|
105
|
+
},
|
|
106
|
+
searchRequest: {
|
|
107
|
+
type: "object",
|
|
108
|
+
properties: {
|
|
109
|
+
query: {
|
|
110
|
+
type: "string"
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Return the model name for this service
|
|
117
|
+
* @param name - the name to use
|
|
118
|
+
* @returns the result string
|
|
119
|
+
*
|
|
120
|
+
* @see https://blog.boot.dev/clean-code/casings-in-coding/#:~:text=%F0%9F%94%97%20Camel%20Case,Go
|
|
121
|
+
*/
|
|
122
|
+
transformName(name) {
|
|
123
|
+
return TransformCase(name, this.parameters.nameTransfomer);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Retrieve a model instance by uuid, throwing NotFound if missing or deleted
|
|
127
|
+
* @param model - the model class to query
|
|
128
|
+
* @param uuid - the primary key
|
|
129
|
+
* @returns the model instance
|
|
130
|
+
*/
|
|
131
|
+
async loadModel(model, uuid) {
|
|
132
|
+
let object;
|
|
133
|
+
try {
|
|
134
|
+
object = await model.ref(uuid).get();
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
// Repository may throw when the object does not exist
|
|
138
|
+
}
|
|
139
|
+
if (object === undefined || object.isDeleted()) {
|
|
140
|
+
const context = useContext();
|
|
141
|
+
await this.emit("Store.WebNotFound", {
|
|
142
|
+
context,
|
|
143
|
+
uuid: typeof uuid === "string" ? uuid : JSON.stringify(uuid)
|
|
144
|
+
});
|
|
145
|
+
throw new WebdaError.NotFound("Object not found");
|
|
146
|
+
}
|
|
147
|
+
return object;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Create a model operation implementation
|
|
151
|
+
* @param input - the model data to create
|
|
152
|
+
* @returns the created model instance
|
|
153
|
+
*/
|
|
154
|
+
async modelCreate(input) {
|
|
155
|
+
const context = useContext();
|
|
156
|
+
const { model } = context.getExtension("operationContext");
|
|
157
|
+
// resolveArguments spreads the model schema's properties into positional args,
|
|
158
|
+
// so what lands here as `input` may be a single property value (e.g. slug string)
|
|
159
|
+
// rather than the full body. Also handles the no-schema fallback where the
|
|
160
|
+
// OperationContext itself is passed. In all non-object cases, read the raw input.
|
|
161
|
+
if (typeof input !== "object" || input === null || input instanceof OperationContext) {
|
|
162
|
+
input = await context.getInput();
|
|
163
|
+
}
|
|
164
|
+
return runWithContext(context, async () => {
|
|
165
|
+
// Instantiate the model from raw input, load data, then save
|
|
166
|
+
const object = new model();
|
|
167
|
+
object.load(input);
|
|
168
|
+
await object.save();
|
|
169
|
+
return object;
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Update a model operation implementation
|
|
174
|
+
* @param uuid - the model primary key
|
|
175
|
+
* @param input - the update data (may be undefined if schema was not resolvable)
|
|
176
|
+
* @returns the updated model instance
|
|
177
|
+
*/
|
|
178
|
+
async modelUpdate(input) {
|
|
179
|
+
const context = useContext();
|
|
180
|
+
const { model, pkFields } = context.getExtension("operationContext");
|
|
181
|
+
// resolveArguments spreads all model schema properties as positional args.
|
|
182
|
+
// The first arg becomes the first property value (often the PK value).
|
|
183
|
+
// Fall back to context for both PK and input when needed.
|
|
184
|
+
if (typeof input !== "object" || input === null) {
|
|
185
|
+
input = await context.getInput();
|
|
186
|
+
}
|
|
187
|
+
// Resolve the PK from body or URL params using the model's actual PK fields;
|
|
188
|
+
// fall back to "uuid" for legacy operations without pkFields in the context.
|
|
189
|
+
const params = context.getParameters() ?? {};
|
|
190
|
+
const fields = pkFields?.length ? pkFields : ["uuid"];
|
|
191
|
+
const pk = fields.length === 1
|
|
192
|
+
? input?.[fields[0]] ?? params[fields[0]]
|
|
193
|
+
: fields.reduce((acc, f) => {
|
|
194
|
+
acc[f] = input?.[f] ?? params[f];
|
|
195
|
+
return acc;
|
|
196
|
+
}, {});
|
|
197
|
+
const object = await this.loadModel(model, pk);
|
|
198
|
+
object["load"](input);
|
|
199
|
+
return object;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Get a model operation implementation
|
|
203
|
+
* @param uuid - the model primary key
|
|
204
|
+
* @returns the model instance
|
|
205
|
+
*/
|
|
206
|
+
async modelGet(uuid) {
|
|
207
|
+
const context = useContext();
|
|
208
|
+
const { model } = context.getExtension("operationContext");
|
|
209
|
+
const object = await this.loadModel(model, uuid);
|
|
210
|
+
//await object.checkAct(context, "get");
|
|
211
|
+
return object;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Delete a model operation implementation
|
|
215
|
+
* @param uuid - the model primary key
|
|
216
|
+
*/
|
|
217
|
+
async modelDelete(uuid) {
|
|
218
|
+
const context = useContext();
|
|
219
|
+
const { model } = context.getExtension("operationContext");
|
|
220
|
+
const object = await this.loadModel(model, uuid);
|
|
221
|
+
//await object.checkAct(context, "delete");
|
|
222
|
+
// Object can decide to not delete but mark as deleted
|
|
223
|
+
await object.delete();
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Query models
|
|
227
|
+
* @param query - the query string
|
|
228
|
+
* @returns the query results
|
|
229
|
+
*/
|
|
230
|
+
async modelQuery(query) {
|
|
231
|
+
const context = useContext();
|
|
232
|
+
const { model } = context.getExtension("operationContext");
|
|
233
|
+
return runWithContext(context, async () => {
|
|
234
|
+
try {
|
|
235
|
+
return await model.query(query);
|
|
236
|
+
}
|
|
237
|
+
catch (err) {
|
|
238
|
+
if (err instanceof SyntaxError) {
|
|
239
|
+
this.log("INFO", "Query syntax error");
|
|
240
|
+
throw new WebdaError.BadRequest("Query syntax error");
|
|
241
|
+
}
|
|
242
|
+
throw err;
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Patch a model
|
|
248
|
+
* @param uuid - the model primary key
|
|
249
|
+
* @param input - the partial update data (may be undefined if schema was not resolvable)
|
|
250
|
+
* @returns the patched model instance
|
|
251
|
+
*/
|
|
252
|
+
async modelPatch(input) {
|
|
253
|
+
const context = useContext();
|
|
254
|
+
const { model, pkFields } = context.getExtension("operationContext");
|
|
255
|
+
if (typeof input !== "object" || input === null) {
|
|
256
|
+
input = await context.getInput();
|
|
257
|
+
}
|
|
258
|
+
// Build the PK from the model's real primary-key fields (same logic as modelUpdate).
|
|
259
|
+
const params = context.getParameters() ?? {};
|
|
260
|
+
const fields = pkFields?.length ? pkFields : ["uuid"];
|
|
261
|
+
const pk = fields.length === 1
|
|
262
|
+
? input?.[fields[0]] ?? params[fields[0]]
|
|
263
|
+
: fields.reduce((acc, f) => {
|
|
264
|
+
acc[f] = input?.[f] ?? params[f];
|
|
265
|
+
return acc;
|
|
266
|
+
}, {});
|
|
267
|
+
const object = await this.loadModel(model, pk);
|
|
268
|
+
await object.patch(input);
|
|
269
|
+
return object;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Action on a model
|
|
273
|
+
* @param args - arguments forwarded to the action method
|
|
274
|
+
* @returns the action result
|
|
275
|
+
*/
|
|
276
|
+
async modelAction(...args) {
|
|
277
|
+
const context = useContext();
|
|
278
|
+
const { model, action } = context.getExtension("operationContext");
|
|
279
|
+
// The action can be exposed under another name than its method
|
|
280
|
+
const handler = action.handler || action.name;
|
|
281
|
+
if (!action.global) {
|
|
282
|
+
// First arg is uuid when the action is instance-level
|
|
283
|
+
const uuid = args[0];
|
|
284
|
+
const object = await model.ref(uuid).get();
|
|
285
|
+
if (!object || object.isDeleted()) {
|
|
286
|
+
throw new WebdaError.NotFound("Object not found");
|
|
287
|
+
}
|
|
288
|
+
//await object.checkAct(context, action.name as ActionsEnum<Model>);
|
|
289
|
+
return object[handler](context);
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
return model[handler](context);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Add operations for all exposed models
|
|
297
|
+
* @returns the result
|
|
298
|
+
*/
|
|
299
|
+
initOperations() {
|
|
300
|
+
super.initOperations();
|
|
301
|
+
if (!this.parameters.operations) {
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
const app = (this.app = useApplication());
|
|
305
|
+
// Add default schemas - used for operation parameters validation
|
|
306
|
+
const appSchemas = app.getSchemas();
|
|
307
|
+
for (const i in DomainService.schemas) {
|
|
308
|
+
if (hasSchema(i)) {
|
|
309
|
+
continue;
|
|
310
|
+
}
|
|
311
|
+
registerSchema(i, DomainService.schemas[i]);
|
|
312
|
+
}
|
|
313
|
+
// Register schemas in application schema registry so that
|
|
314
|
+
// resolveArguments can find them for typed parameter extraction.
|
|
315
|
+
for (const name of Object.keys(DomainService.schemas)) {
|
|
316
|
+
appSchemas[name] ??= DomainService.schemas[name];
|
|
317
|
+
}
|
|
318
|
+
const models = app.getModels();
|
|
319
|
+
for (const modelKey in models) {
|
|
320
|
+
const model = models[modelKey];
|
|
321
|
+
if (!model) {
|
|
322
|
+
continue;
|
|
323
|
+
}
|
|
324
|
+
const Metadata = useModelMetadata(model);
|
|
325
|
+
if (!Metadata) {
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
328
|
+
// Skip if not exposed or not included
|
|
329
|
+
if (!this.parameters.isIncluded(Metadata.Identifier)) {
|
|
330
|
+
continue;
|
|
331
|
+
}
|
|
332
|
+
// Overlap object are hidden by design
|
|
333
|
+
if (!this.app.isFinalModel(Metadata.Identifier)) {
|
|
334
|
+
continue;
|
|
335
|
+
}
|
|
336
|
+
const shortId = Metadata.Identifier.split("/").pop();
|
|
337
|
+
const plural = Metadata.Plural;
|
|
338
|
+
const modelSchema = modelKey;
|
|
339
|
+
const actionsName = Object.keys(Metadata.Actions);
|
|
340
|
+
// Build primary key schema for this model
|
|
341
|
+
const pkSchemaName = `${modelKey}.primaryKey`;
|
|
342
|
+
const pkFields = Metadata.PrimaryKey || ["uuid"];
|
|
343
|
+
const pkSchema = { type: "object", properties: {}, required: pkFields };
|
|
344
|
+
for (const field of pkFields) {
|
|
345
|
+
pkSchema.properties[field] = { type: "string" };
|
|
346
|
+
}
|
|
347
|
+
if (!hasSchema(pkSchemaName)) {
|
|
348
|
+
registerSchema(pkSchemaName, pkSchema);
|
|
349
|
+
}
|
|
350
|
+
// Always register in the app schema map (the global registry is process-wide) so getSchema() finds it
|
|
351
|
+
appSchemas[pkSchemaName] ??= pkSchema;
|
|
352
|
+
// Build query result schema for this model
|
|
353
|
+
const queryResultSchemaName = `${modelKey}.queryResult`;
|
|
354
|
+
const queryResultSchema = {
|
|
355
|
+
type: "object",
|
|
356
|
+
properties: {
|
|
357
|
+
continuationToken: { type: "string" },
|
|
358
|
+
results: { type: "array", items: { $ref: `#/definitions/${modelKey}` } }
|
|
359
|
+
}
|
|
360
|
+
};
|
|
361
|
+
if (!hasSchema(queryResultSchemaName)) {
|
|
362
|
+
registerSchema(queryResultSchemaName, queryResultSchema);
|
|
363
|
+
}
|
|
364
|
+
appSchemas[queryResultSchemaName] ??= queryResultSchema;
|
|
365
|
+
// URL path segments for the model's primary key (e.g. "{slug}" or
|
|
366
|
+
// "{follower}/{following}"). Named after the real PK fields so the router
|
|
367
|
+
// exposes them in context.getParameters() under matching names, which is
|
|
368
|
+
// what the pkSchema validation and modelGet/Update/Delete expect.
|
|
369
|
+
const pkPath = pkFields.map(f => `{${String(f)}}`).join("/");
|
|
370
|
+
// CRUD operations
|
|
371
|
+
["create", "update"]
|
|
372
|
+
.filter(k => !actionsName.includes(k))
|
|
373
|
+
.forEach(k => {
|
|
374
|
+
k = k.substring(0, 1).toUpperCase() + k.substring(1);
|
|
375
|
+
const id = `${shortId}.${k}`;
|
|
376
|
+
registerOperation(id, {
|
|
377
|
+
service: this.getName(),
|
|
378
|
+
method: k === "Create" ? "modelCreate" : "modelUpdate",
|
|
379
|
+
input: modelSchema + "?",
|
|
380
|
+
output: modelSchema,
|
|
381
|
+
summary: k === "Create" ? `Create a new ${shortId}` : `Update a ${shortId}`,
|
|
382
|
+
tags: [shortId],
|
|
383
|
+
rest: { method: k === "Create" ? "post" : "put", path: k === "Create" ? "" : pkPath },
|
|
384
|
+
context: {
|
|
385
|
+
model,
|
|
386
|
+
pkFields
|
|
387
|
+
}
|
|
388
|
+
});
|
|
389
|
+
});
|
|
390
|
+
["delete", "get"]
|
|
391
|
+
.filter(k => !actionsName.includes(k))
|
|
392
|
+
.forEach(k => {
|
|
393
|
+
k = k.substring(0, 1).toUpperCase() + k.substring(1);
|
|
394
|
+
const id = `${shortId}.${k}`;
|
|
395
|
+
registerOperation(id, {
|
|
396
|
+
service: this.getName(),
|
|
397
|
+
method: `model${k}`,
|
|
398
|
+
input: pkSchemaName,
|
|
399
|
+
output: k === "Get" ? modelSchema : "void",
|
|
400
|
+
summary: `${k === "Delete" ? "Delete" : "Retrieve"} a ${shortId}`,
|
|
401
|
+
tags: [shortId],
|
|
402
|
+
rest: { method: k === "Delete" ? "delete" : "get", path: pkPath },
|
|
403
|
+
context: {
|
|
404
|
+
model,
|
|
405
|
+
pkFields
|
|
406
|
+
}
|
|
407
|
+
});
|
|
408
|
+
});
|
|
409
|
+
if (!actionsName.includes("query")) {
|
|
410
|
+
const id = `${plural}.Query`;
|
|
411
|
+
registerOperation(id, {
|
|
412
|
+
service: this.getName(),
|
|
413
|
+
method: "modelQuery",
|
|
414
|
+
input: "searchRequest",
|
|
415
|
+
output: queryResultSchemaName,
|
|
416
|
+
summary: `Query ${plural}`,
|
|
417
|
+
tags: [shortId],
|
|
418
|
+
rest: { method: this.parameters.queryMethod.toLowerCase(), path: "" },
|
|
419
|
+
context: {
|
|
420
|
+
model
|
|
421
|
+
}
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
// Add patch
|
|
425
|
+
if (!actionsName.includes("update")) {
|
|
426
|
+
const id = `${shortId}.Patch`;
|
|
427
|
+
registerOperation(id, {
|
|
428
|
+
service: this.getName(),
|
|
429
|
+
method: "modelPatch",
|
|
430
|
+
input: modelSchema + "?",
|
|
431
|
+
output: modelSchema,
|
|
432
|
+
summary: `Patch a ${shortId}`,
|
|
433
|
+
tags: [shortId],
|
|
434
|
+
rest: { method: "patch", path: pkPath },
|
|
435
|
+
context: {
|
|
436
|
+
model,
|
|
437
|
+
pkFields
|
|
438
|
+
}
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
// Add all operations for Actions
|
|
442
|
+
const actions = Metadata.Actions;
|
|
443
|
+
Object.keys(actions)
|
|
444
|
+
.filter(k => !["create", "update", "delete", "get", "query"].includes(k))
|
|
445
|
+
.forEach(name => {
|
|
446
|
+
const id = `${shortId}.${name.substring(0, 1).toUpperCase() + name.substring(1)}`;
|
|
447
|
+
const info = {
|
|
448
|
+
service: this.getName(),
|
|
449
|
+
method: `modelAction`,
|
|
450
|
+
id
|
|
451
|
+
};
|
|
452
|
+
info.input = actions[name].global ? `${modelKey}.${name}.input` : "uuidRequest";
|
|
453
|
+
info.output = `${modelKey}.${name}.output`;
|
|
454
|
+
info.context = {
|
|
455
|
+
model,
|
|
456
|
+
action: { ...actions[name], name }
|
|
457
|
+
};
|
|
458
|
+
info.summary = `${name.substring(0, 1).toUpperCase() + name.substring(1)} on ${shortId}`;
|
|
459
|
+
info.tags = [shortId];
|
|
460
|
+
info.rest = {
|
|
461
|
+
method: (actions[name].method || "PUT").toLowerCase(),
|
|
462
|
+
path: actions[name].global ? name : `{uuid}/${name}`
|
|
463
|
+
};
|
|
464
|
+
registerOperation(id, info);
|
|
465
|
+
});
|
|
466
|
+
this.addBehaviorOperations(model, Metadata, shortId);
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Register one operation per declared action on every Behavior attribute of
|
|
471
|
+
* the model. Operation ids follow the `<Model>.<Attribute>.<Action>` shape
|
|
472
|
+
* so transports can discover them with the same lookup logic used for
|
|
473
|
+
* model-level operations.
|
|
474
|
+
*
|
|
475
|
+
* The actual dispatch is deferred to `modelBehaviorAction`. This method
|
|
476
|
+
* only wires the registry entries — it does not invoke behaviors.
|
|
477
|
+
*
|
|
478
|
+
* @param model - the model class owning the behavior attribute
|
|
479
|
+
* @param Metadata - the model metadata blob (with Relations.behaviors)
|
|
480
|
+
* @param name - the model's short identifier (e.g. "User")
|
|
481
|
+
*/
|
|
482
|
+
addBehaviorOperations(model, Metadata, name) {
|
|
483
|
+
const app = useApplication();
|
|
484
|
+
(Metadata.Relations?.behaviors || []).forEach((behaviorRel) => {
|
|
485
|
+
const behaviorMeta = app.getBehaviorMetadata(behaviorRel.behavior);
|
|
486
|
+
if (!behaviorMeta) {
|
|
487
|
+
return;
|
|
488
|
+
}
|
|
489
|
+
const attributeCap = behaviorRel.attribute.substring(0, 1).toUpperCase() + behaviorRel.attribute.substring(1);
|
|
490
|
+
Object.keys(behaviorMeta.Actions || {}).forEach(actionName => {
|
|
491
|
+
const actionCap = actionName.substring(0, 1).toUpperCase() + actionName.substring(1);
|
|
492
|
+
const id = `${name}.${attributeCap}.${actionCap}`;
|
|
493
|
+
const inputSchema = `${behaviorRel.behavior}.${actionName}.input`;
|
|
494
|
+
const outputSchema = `${behaviorRel.behavior}.${actionName}.output`;
|
|
495
|
+
const actionMeta = (behaviorMeta.Actions || {})[actionName] || {};
|
|
496
|
+
const restHint = actionMeta.rest ?? {};
|
|
497
|
+
const route = restHint.route;
|
|
498
|
+
const method = (restHint.method ?? "PUT").toLowerCase();
|
|
499
|
+
let path;
|
|
500
|
+
if (route === ".") {
|
|
501
|
+
path = `{uuid}/${behaviorRel.attribute}`;
|
|
502
|
+
}
|
|
503
|
+
else if (route !== undefined && route !== "") {
|
|
504
|
+
path = `{uuid}/${behaviorRel.attribute}/${route}`;
|
|
505
|
+
}
|
|
506
|
+
else {
|
|
507
|
+
path = `{uuid}/${behaviorRel.attribute}.${actionName}`;
|
|
508
|
+
}
|
|
509
|
+
registerOperation(id, {
|
|
510
|
+
service: this.getName(),
|
|
511
|
+
method: "modelBehaviorAction",
|
|
512
|
+
input: hasSchema(inputSchema) ? inputSchema : "uuidRequest",
|
|
513
|
+
output: hasSchema(outputSchema) ? outputSchema : "void",
|
|
514
|
+
summary: `${actionCap} on ${name}.${behaviorRel.attribute}`,
|
|
515
|
+
tags: [name],
|
|
516
|
+
rest: {
|
|
517
|
+
method,
|
|
518
|
+
path
|
|
519
|
+
},
|
|
520
|
+
context: {
|
|
521
|
+
model,
|
|
522
|
+
attribute: behaviorRel.attribute,
|
|
523
|
+
behavior: behaviorRel.behavior,
|
|
524
|
+
action: actionName
|
|
525
|
+
}
|
|
526
|
+
});
|
|
527
|
+
});
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
/**
|
|
531
|
+
* Dispatcher for a behavior-attribute action registered by
|
|
532
|
+
* `addBehaviorOperations`. Mirrors the shape of `modelAction`:
|
|
533
|
+
*
|
|
534
|
+
* 1. read the parent model class + attribute/action names off
|
|
535
|
+
* `operationContext` (set up by `callOperation`),
|
|
536
|
+
* 2. take `args[0]` as the parent UUID (Behavior actions are always
|
|
537
|
+
* instance-scoped per the spec),
|
|
538
|
+
* 3. load the parent via `model.ref(uuid).get()` — `NotFound` if missing
|
|
539
|
+
* or soft-deleted,
|
|
540
|
+
* 4. ask the model whether the action is allowed via
|
|
541
|
+
* `canAct(ctx, "<attribute>.<action>")` — anything but `true` (or the
|
|
542
|
+
* instance itself, the convention some models use to say "yes, on this
|
|
543
|
+
* object") is treated as a denial,
|
|
544
|
+
* 5. read `instance[attribute]` — already a hydrated Behavior instance
|
|
545
|
+
* thanks to `CoreModel.deserialize` (Task 7),
|
|
546
|
+
* 6. call `behaviorInstance[action](...args.slice(1))` and let
|
|
547
|
+
* `callOperation` write the result onto the context.
|
|
548
|
+
*
|
|
549
|
+
* @param args - resolved arguments from `resolveArguments`; the first is
|
|
550
|
+
* always the parent UUID, the rest come from the request body / query
|
|
551
|
+
* params depending on the registered input schema.
|
|
552
|
+
* @returns the Behavior method's return value (callOperation writes it to
|
|
553
|
+
* the context output if non-undefined).
|
|
554
|
+
*/
|
|
555
|
+
async modelBehaviorAction(...args) {
|
|
556
|
+
const context = useContext();
|
|
557
|
+
const { model, attribute, action, behavior } = context.getExtension("operationContext");
|
|
558
|
+
// Parent uuid comes from the URL (`/posts/{uuid}/mainImage/...`); read it
|
|
559
|
+
// straight off the context so we don't depend on its position in `args`.
|
|
560
|
+
const uuid = (context.getParameters() || {}).uuid;
|
|
561
|
+
let instance;
|
|
562
|
+
try {
|
|
563
|
+
instance = await model.ref(uuid).get();
|
|
564
|
+
}
|
|
565
|
+
catch {
|
|
566
|
+
// Repositories (e.g. MemoryRepository) throw a plain Error when the
|
|
567
|
+
// primary key isn't in storage. Treat that the same as a "soft" miss.
|
|
568
|
+
}
|
|
569
|
+
if (!instance || instance.isDeleted?.()) {
|
|
570
|
+
throw new WebdaError.NotFound("Object not found");
|
|
571
|
+
}
|
|
572
|
+
const allowed = await instance.canAct(context, `${attribute}.${action}`);
|
|
573
|
+
if (allowed !== true && allowed !== instance) {
|
|
574
|
+
throw new WebdaError.Forbidden(`Action ${attribute}.${action} not allowed`);
|
|
575
|
+
}
|
|
576
|
+
const behaviorInstance = instance[attribute];
|
|
577
|
+
if (!behaviorInstance || typeof behaviorInstance[action] !== "function") {
|
|
578
|
+
throw new WebdaError.NotFound(`Behavior method ${attribute}.${action} not found`);
|
|
579
|
+
}
|
|
580
|
+
// `args` was built by `resolveArguments` from the operation's input
|
|
581
|
+
// schema. Two schema shapes coexist:
|
|
582
|
+
// 1. Auto-generated from the method signature (`exploreBehaviorsAction`
|
|
583
|
+
// in the compiler) — e.g. `setMetadata(hash, metadata)` produces
|
|
584
|
+
// `{ hash, metadata }`. No `uuid` property.
|
|
585
|
+
// 2. Legacy `uuidRequest` fallback (and hand-crafted test schemas) —
|
|
586
|
+
// starts with `{ uuid, ... }`. The `uuid` slot exists only so the
|
|
587
|
+
// validator accepts the URL param.
|
|
588
|
+
// When the schema starts with `uuid`, drop it before forwarding to the
|
|
589
|
+
// behavior method (whose signature never includes uuid). When it
|
|
590
|
+
// doesn't, forward as-is.
|
|
591
|
+
const operationId = context.getExtension("operation");
|
|
592
|
+
const opInput = operationId ? useInstanceStorage().operations?.[operationId]?.input : undefined;
|
|
593
|
+
const inputSchema = typeof opInput === "string" ? useApplication().getSchema(opInput) : undefined;
|
|
594
|
+
const propNames = inputSchema?.properties ? Object.keys(inputSchema.properties) : [];
|
|
595
|
+
const passArgs = propNames[0] === "uuid" ? args.slice(1) : args;
|
|
596
|
+
void behavior; // tagged in operationContext for future use
|
|
597
|
+
return behaviorInstance[action](...passArgs);
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
//# sourceMappingURL=domainservice.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domainservice.service.js","sourceRoot":"","sources":["../../src/services/domainservice.service.ts"],"names":[],"mappings":"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"}
|