@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,792 @@
|
|
|
1
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
2
|
+
var useValue = arguments.length > 2;
|
|
3
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
4
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
5
|
+
}
|
|
6
|
+
return useValue ? value : void 0;
|
|
7
|
+
};
|
|
8
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
9
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
10
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
11
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
12
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
13
|
+
var _, done = false;
|
|
14
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
15
|
+
var context = {};
|
|
16
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
17
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
18
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
19
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
20
|
+
if (kind === "accessor") {
|
|
21
|
+
if (result === void 0) continue;
|
|
22
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
23
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
24
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
25
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
26
|
+
}
|
|
27
|
+
else if (_ = accept(result)) {
|
|
28
|
+
if (kind === "field") initializers.unshift(_);
|
|
29
|
+
else descriptor[key] = _;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
33
|
+
done = true;
|
|
34
|
+
};
|
|
35
|
+
import { WorkerOutput } from "@webda/workout";
|
|
36
|
+
import { setLogContext } from "../loggers/hooks.js";
|
|
37
|
+
import { FileUtils, State } from "@webda/utils";
|
|
38
|
+
import { existsSync, lstatSync, readFileSync } from "node:fs";
|
|
39
|
+
import { join, resolve, dirname, isAbsolute } from "node:path";
|
|
40
|
+
import * as WebdaError from "../errors/errors.js";
|
|
41
|
+
import { ServiceParameters } from "../services/serviceparameters.js";
|
|
42
|
+
import { isModelClass } from "@webda/models";
|
|
43
|
+
import { InstanceCache } from "../cache/cache.js";
|
|
44
|
+
/**
|
|
45
|
+
* Define a static member that only belongs to `target`
|
|
46
|
+
*
|
|
47
|
+
* Static members are inherited by subclasses, so a factory installed on a modda would be used
|
|
48
|
+
* by any subclass of it. The accessor returns `value` for `target` and `fallback` for any
|
|
49
|
+
* subclass, and lets a subclass assign its own value.
|
|
50
|
+
* @param target - the class owning the member
|
|
51
|
+
* @param property - the static member name
|
|
52
|
+
* @param value - the value for `target`
|
|
53
|
+
* @param fallback - the value for subclasses of `target`
|
|
54
|
+
*/
|
|
55
|
+
function defineOwnStatic(target, property, value, fallback) {
|
|
56
|
+
Object.defineProperty(target, property, {
|
|
57
|
+
configurable: true,
|
|
58
|
+
enumerable: false,
|
|
59
|
+
get() {
|
|
60
|
+
return this === target ? value : fallback;
|
|
61
|
+
},
|
|
62
|
+
set(newValue) {
|
|
63
|
+
Object.defineProperty(this, property, { value: newValue, writable: true, configurable: true, enumerable: true });
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Install `filterParameters` and `createConfiguration` on a modda or bean class
|
|
69
|
+
*
|
|
70
|
+
* Both are bound to `target`: a subclass that is not registered itself would otherwise inherit them and
|
|
71
|
+
* have its own parameters filtered out by the parent schema. Such a subclass gets the parent configuration
|
|
72
|
+
* class without filtering.
|
|
73
|
+
* @param target - the modda or bean class
|
|
74
|
+
* @param configurationClass - the parameters class to instantiate
|
|
75
|
+
* @param schema - the parameters JSON schema, used to filter the parameters
|
|
76
|
+
*/
|
|
77
|
+
export function installConfigurationFactories(target, configurationClass = ServiceParameters, schema) {
|
|
78
|
+
const filterParameters = (params = {}) => {
|
|
79
|
+
if (!schema?.properties) {
|
|
80
|
+
return params;
|
|
81
|
+
}
|
|
82
|
+
const filteredParams = {};
|
|
83
|
+
for (const field of Object.keys(schema.properties)) {
|
|
84
|
+
if (params[field] !== undefined) {
|
|
85
|
+
filteredParams[field] = params[field];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return filteredParams;
|
|
89
|
+
};
|
|
90
|
+
defineOwnStatic(target, "filterParameters", filterParameters, (params = {}) => params);
|
|
91
|
+
defineOwnStatic(target, "createConfiguration", (params = {}) => new configurationClass().load(filterParameters(params)), (params = {}) => new configurationClass().load(params));
|
|
92
|
+
}
|
|
93
|
+
// We should not be able to set initial from outside
|
|
94
|
+
const ApplicationState = State;
|
|
95
|
+
/**
|
|
96
|
+
* Map a Webda Application
|
|
97
|
+
*
|
|
98
|
+
* It allows to:
|
|
99
|
+
* - Analyse imported modules
|
|
100
|
+
* - Scan code for Modda and generate the webda.config.json
|
|
101
|
+
* - Compile and Watch
|
|
102
|
+
* - Migrate from old configuration
|
|
103
|
+
* - List deployments
|
|
104
|
+
*
|
|
105
|
+
*
|
|
106
|
+
* @category CoreFeatures
|
|
107
|
+
*/
|
|
108
|
+
let Application = (() => {
|
|
109
|
+
let _instanceExtraInitializers = [];
|
|
110
|
+
let _load_decorators;
|
|
111
|
+
return class Application {
|
|
112
|
+
static {
|
|
113
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
114
|
+
_load_decorators = [ApplicationState({ start: "loading", end: "ready" }), InstanceCache()];
|
|
115
|
+
__esDecorate(this, null, _load_decorators, { kind: "method", name: "load", static: false, private: false, access: { has: obj => "load" in obj, get: obj => obj.load }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
116
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get Application root path
|
|
120
|
+
*/
|
|
121
|
+
applicationPath = __runInitializers(this, _instanceExtraInitializers);
|
|
122
|
+
/**
|
|
123
|
+
* Base configuration loaded from webda.config.json
|
|
124
|
+
*/
|
|
125
|
+
baseConfiguration;
|
|
126
|
+
/**
|
|
127
|
+
* Current deployment
|
|
128
|
+
*/
|
|
129
|
+
currentDeployment;
|
|
130
|
+
/**
|
|
131
|
+
* Contains definitions of current application
|
|
132
|
+
*/
|
|
133
|
+
appModule = {
|
|
134
|
+
moddas: {},
|
|
135
|
+
models: {},
|
|
136
|
+
schemas: {}
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Deployers type registry
|
|
140
|
+
*/
|
|
141
|
+
deployers = {};
|
|
142
|
+
/**
|
|
143
|
+
* Moddas registry
|
|
144
|
+
*/
|
|
145
|
+
moddas = {};
|
|
146
|
+
/**
|
|
147
|
+
* Models type registry
|
|
148
|
+
*/
|
|
149
|
+
models = {};
|
|
150
|
+
/**
|
|
151
|
+
* Beans registry
|
|
152
|
+
*/
|
|
153
|
+
beans = {};
|
|
154
|
+
/**
|
|
155
|
+
* Behaviors registry
|
|
156
|
+
*
|
|
157
|
+
* Populated by `loadModule` from the top-level `behaviors` map of every
|
|
158
|
+
* loaded `webda.module.json`. Each entry holds the metadata blob emitted by
|
|
159
|
+
* the compiler so downstream consumers (DomainService, REST transport, etc.)
|
|
160
|
+
* can introspect the Behavior's declared actions and shape.
|
|
161
|
+
*
|
|
162
|
+
* The Behavior class itself is NOT loaded at runtime: the per-model
|
|
163
|
+
* `__hydrateBehaviors` method emitted at compile time by
|
|
164
|
+
* `@webda/content-mapper` holds a static import to the class, so the runtime
|
|
165
|
+
* never needs to look it up by identifier.
|
|
166
|
+
*/
|
|
167
|
+
behaviors = {};
|
|
168
|
+
/**
|
|
169
|
+
* Class Logger
|
|
170
|
+
*/
|
|
171
|
+
logger;
|
|
172
|
+
/**
|
|
173
|
+
* Detect if running as workspace
|
|
174
|
+
*/
|
|
175
|
+
workspacesPath = "";
|
|
176
|
+
/**
|
|
177
|
+
* Configuration file
|
|
178
|
+
*/
|
|
179
|
+
configurationFile;
|
|
180
|
+
/**
|
|
181
|
+
* Current deployment file
|
|
182
|
+
*/
|
|
183
|
+
deploymentFile;
|
|
184
|
+
/**
|
|
185
|
+
* Create a new Application
|
|
186
|
+
* @param file - file path or unpacked configuration to load from
|
|
187
|
+
* @param logger - the logger instance
|
|
188
|
+
*/
|
|
189
|
+
constructor(file, logger = undefined) {
|
|
190
|
+
this.logger = logger || new WorkerOutput();
|
|
191
|
+
setLogContext(this.logger);
|
|
192
|
+
// If configuration is a programmatic object (usually for tests)
|
|
193
|
+
if (typeof file !== "string") {
|
|
194
|
+
this.baseConfiguration = { parameters: {}, ...file };
|
|
195
|
+
// Still want to ensure default configuration
|
|
196
|
+
this.applicationPath = process.cwd();
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (!existsSync(file)) {
|
|
200
|
+
throw new WebdaError.CodeError("NO_WEBDA_FOLDER", `Not a webda application folder or webda.config.(ya?ml|jsonc?) file: unexisting ${file}`);
|
|
201
|
+
}
|
|
202
|
+
// Check if file is a file or folder
|
|
203
|
+
if (lstatSync(file).isDirectory()) {
|
|
204
|
+
file = FileUtils.getConfigurationFile(join(file, "webda.config"));
|
|
205
|
+
}
|
|
206
|
+
this.configurationFile = file;
|
|
207
|
+
this.applicationPath = resolve(dirname(file));
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Run the application
|
|
211
|
+
* @returns the result
|
|
212
|
+
*/
|
|
213
|
+
async run() {
|
|
214
|
+
return Application._runner(this);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Pluggable runner — set by runner.ts to avoid circular dependency with Core.
|
|
218
|
+
* @internal
|
|
219
|
+
*/
|
|
220
|
+
static _runner;
|
|
221
|
+
/**
|
|
222
|
+
* Import all required modules
|
|
223
|
+
* @returns the result
|
|
224
|
+
*/
|
|
225
|
+
async load() {
|
|
226
|
+
await this.loadConfiguration(this.configurationFile);
|
|
227
|
+
await this.loadModule(this.baseConfiguration.cachedModules);
|
|
228
|
+
return this;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Allow subclass to implement migration
|
|
232
|
+
*
|
|
233
|
+
* @param file - the file path
|
|
234
|
+
* @returns the result
|
|
235
|
+
*/
|
|
236
|
+
async loadConfiguration(file) {
|
|
237
|
+
// Check if file is a file or folder
|
|
238
|
+
if (file && !existsSync(file)) {
|
|
239
|
+
throw new WebdaError.CodeError("NO_WEBDA_FOLDER", `Not a webda application folder or webda.config.jsonc or webda.config.json file: ${file}`);
|
|
240
|
+
}
|
|
241
|
+
try {
|
|
242
|
+
this.baseConfiguration ??= file ? FileUtils.load(file) : {};
|
|
243
|
+
if (this.baseConfiguration.version !== 4) {
|
|
244
|
+
this.log("ERROR", "Your configuration file should use version 4, see https://docs.webda.io/");
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
catch (err) {
|
|
248
|
+
throw new WebdaError.CodeError("INVALID_WEBDA_CONFIG", `Cannot parse JSON of: ${file}`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Get a schema from a type
|
|
253
|
+
*
|
|
254
|
+
* Schema should be precomputed in the default app
|
|
255
|
+
* @param type - the type to look up
|
|
256
|
+
* @returns the result
|
|
257
|
+
*/
|
|
258
|
+
getSchema(type) {
|
|
259
|
+
// "?" suffix means optional input — return the same schema without required fields
|
|
260
|
+
if (type.endsWith("?")) {
|
|
261
|
+
const base = this.getSchema(type.slice(0, -1));
|
|
262
|
+
if (!base)
|
|
263
|
+
return undefined;
|
|
264
|
+
const copy = { ...base };
|
|
265
|
+
delete copy.required;
|
|
266
|
+
return copy;
|
|
267
|
+
}
|
|
268
|
+
const cm = this.baseConfiguration.cachedModules;
|
|
269
|
+
return (cm.schemas[type] || cm.models?.[type]?.Schemas?.Input || cm.moddas?.[type]?.Schema || cm.beans?.[type]?.Schema);
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Get schemas
|
|
273
|
+
* @returns the result
|
|
274
|
+
*/
|
|
275
|
+
getSchemas() {
|
|
276
|
+
return this.baseConfiguration.cachedModules.schemas;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Check if application has cached modules
|
|
280
|
+
*
|
|
281
|
+
* When deployed the application contains cachedModules in the `webda.config.json`
|
|
282
|
+
* It allows to avoid the search for `webda.module.json` inside node_modules and
|
|
283
|
+
* take the schema from the cached modules also
|
|
284
|
+
* @returns true if the condition is met
|
|
285
|
+
*/
|
|
286
|
+
isCached() {
|
|
287
|
+
return true;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Retrieve specific webda conf from package.json
|
|
291
|
+
*
|
|
292
|
+
* In case of workspaces the object is combined
|
|
293
|
+
* @returns the result
|
|
294
|
+
*/
|
|
295
|
+
getPackageWebda() {
|
|
296
|
+
return (this.baseConfiguration.cachedModules.project?.webda || {
|
|
297
|
+
namespace: "Webda"
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Retrieve content of package.json
|
|
302
|
+
* @returns the result
|
|
303
|
+
*/
|
|
304
|
+
getPackageDescription() {
|
|
305
|
+
return this.baseConfiguration.cachedModules?.project?.package || {};
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Log information
|
|
309
|
+
*
|
|
310
|
+
* @param level to log for
|
|
311
|
+
* @param args anything to display same as console.log
|
|
312
|
+
*/
|
|
313
|
+
log(level, ...args) {
|
|
314
|
+
this.logger?.log(level, ...args);
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Get current logger
|
|
318
|
+
* @returns the result
|
|
319
|
+
*/
|
|
320
|
+
getWorkerOutput() {
|
|
321
|
+
return this.logger;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Return the current app path
|
|
325
|
+
*
|
|
326
|
+
* @param subpath to append to
|
|
327
|
+
* @returns the result string
|
|
328
|
+
*/
|
|
329
|
+
getPath(subpath = undefined) {
|
|
330
|
+
if (subpath && subpath !== "") {
|
|
331
|
+
if (isAbsolute(subpath)) {
|
|
332
|
+
return subpath;
|
|
333
|
+
}
|
|
334
|
+
return join(this.applicationPath, subpath);
|
|
335
|
+
}
|
|
336
|
+
return this.applicationPath;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Add a new service
|
|
340
|
+
*
|
|
341
|
+
* @param name - the name to use
|
|
342
|
+
* @param service - the service instance
|
|
343
|
+
* @returns this for chaining
|
|
344
|
+
*/
|
|
345
|
+
addModda(name, service) {
|
|
346
|
+
this.log("TRACE", "Registering service", name);
|
|
347
|
+
this.moddas[name] = service;
|
|
348
|
+
return this;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
*
|
|
352
|
+
* @param section - the section name
|
|
353
|
+
* @param name - the name to use
|
|
354
|
+
* @param caseSensitive - whether matching is case sensitive
|
|
355
|
+
* @returns true if the condition is met
|
|
356
|
+
*/
|
|
357
|
+
hasWebdaObject(section, name) {
|
|
358
|
+
let objectName = this.completeNamespace(name);
|
|
359
|
+
this.log("TRACE", `Search for ${section} ${objectName}`);
|
|
360
|
+
if (!this[section][objectName] && name.indexOf("/") === -1) {
|
|
361
|
+
objectName = `Webda/${name}`;
|
|
362
|
+
}
|
|
363
|
+
return this[section][objectName] !== undefined;
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Return true if `model` is the one that wins when consumers look up the
|
|
367
|
+
* short name in the current namespace. Used by transports (REST, GraphQL,
|
|
368
|
+
* gRPC) so only one model gets exposed at a given URL / type when the app
|
|
369
|
+
* overrides a framework-provided class — e.g. WebdaSample/User shadowing
|
|
370
|
+
* Webda/User at `/users`.
|
|
371
|
+
*
|
|
372
|
+
* A model is "final" when either:
|
|
373
|
+
* - it is the one resolved by `completeNamespace(shortName)`, or
|
|
374
|
+
* - no other model exists with the same short name in the current namespace.
|
|
375
|
+
* @param model - the fully-qualified model identifier (e.g. "Webda/User")
|
|
376
|
+
* @returns true when `model` should be treated as the canonical version
|
|
377
|
+
*/
|
|
378
|
+
isFinalModel(model) {
|
|
379
|
+
if (!this.models[model]) {
|
|
380
|
+
return false;
|
|
381
|
+
}
|
|
382
|
+
const name = model.split("/").pop();
|
|
383
|
+
const resolved = this.completeNamespace(name);
|
|
384
|
+
// Only a model that the current namespace resolves to is exposed. If the
|
|
385
|
+
// app defines its own version (e.g. WebdaSample/User shadowing Webda/User)
|
|
386
|
+
// just that one wins; otherwise the framework-provided model stays internal.
|
|
387
|
+
return resolved === model;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
*
|
|
391
|
+
* @param section - the section name
|
|
392
|
+
* @param name - the name to use
|
|
393
|
+
* @returns the result
|
|
394
|
+
*/
|
|
395
|
+
getWebdaObject(section, name) {
|
|
396
|
+
let objectName = this.completeNamespace(name);
|
|
397
|
+
this.log("TRACE", `Search for ${section} ${objectName}`);
|
|
398
|
+
if (!this[section][objectName] && name.indexOf("/") === -1) {
|
|
399
|
+
const namespaced = this.completeNamespace(name);
|
|
400
|
+
objectName = this[section][namespaced] ? `${namespaced}/${name}` : `Webda/${name}`;
|
|
401
|
+
}
|
|
402
|
+
if (!this[section][objectName]) {
|
|
403
|
+
if (Object.keys(this[section]).includes(objectName)) {
|
|
404
|
+
throw Error(`Null ${section.substring(0, section.length - 1)} ${objectName}`);
|
|
405
|
+
}
|
|
406
|
+
throw Error(`Undefined ${section.substring(0, section.length - 1)} ${objectName} (${Object.keys(this[section]).join(", ")})`);
|
|
407
|
+
}
|
|
408
|
+
return this[section][objectName];
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Get a service based on name
|
|
412
|
+
*
|
|
413
|
+
* @param name - the name to use
|
|
414
|
+
* @returns the result
|
|
415
|
+
*/
|
|
416
|
+
getModda(name) {
|
|
417
|
+
return this.getWebdaObject("moddas", name);
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Return all services of the application
|
|
421
|
+
* @returns the result
|
|
422
|
+
*/
|
|
423
|
+
getModdas() {
|
|
424
|
+
return this.moddas;
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Retrieve the model implementation
|
|
428
|
+
*
|
|
429
|
+
* @param name model to retrieve
|
|
430
|
+
* @returns the result
|
|
431
|
+
*/
|
|
432
|
+
getModel(name) {
|
|
433
|
+
return this.getWebdaObject("models", name);
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Get all models definitions
|
|
437
|
+
* @returns the result
|
|
438
|
+
*/
|
|
439
|
+
getModels() {
|
|
440
|
+
return this.models;
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Return the metadata blob (Identifier, Actions, etc.) for a Behavior
|
|
444
|
+
* loaded from `webda.module.json`.
|
|
445
|
+
*
|
|
446
|
+
* @param identifier - fully qualified Behavior id (e.g. `Webda/MFA`)
|
|
447
|
+
* @returns the metadata, or undefined if no Behavior with that id is registered
|
|
448
|
+
*/
|
|
449
|
+
getBehaviorMetadata(identifier) {
|
|
450
|
+
return this.behaviors[identifier]?.metadata;
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* Return all loaded Behaviors keyed by identifier.
|
|
454
|
+
*
|
|
455
|
+
* Each entry exposes the original metadata blob emitted by the compiler.
|
|
456
|
+
* @returns the result
|
|
457
|
+
*/
|
|
458
|
+
getBehaviors() {
|
|
459
|
+
return this.behaviors;
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* Return the model name for a object
|
|
463
|
+
* @param object - the target object
|
|
464
|
+
* @returns the result
|
|
465
|
+
*/
|
|
466
|
+
getModelFromInstance(object) {
|
|
467
|
+
return Object.keys(this.models).find(k => this.models[k] === object.constructor);
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Return the model name for a object
|
|
471
|
+
* @param object - the target object
|
|
472
|
+
* @param model - the model to use
|
|
473
|
+
* @returns the result
|
|
474
|
+
*/
|
|
475
|
+
getModelFromConstructor(model) {
|
|
476
|
+
// @ts-ignore
|
|
477
|
+
return Object.keys(this.models).find(k => this.models[k] === model);
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Get the model name from a model or a constructor
|
|
481
|
+
*
|
|
482
|
+
* @param model - the model to use
|
|
483
|
+
* @paramn full if true always include the namespace, default is false e.g Webda/
|
|
484
|
+
* @returns longId for a model
|
|
485
|
+
*/
|
|
486
|
+
getModelId(model) {
|
|
487
|
+
if (isModelClass(model)) {
|
|
488
|
+
return this.getModelFromConstructor(model);
|
|
489
|
+
}
|
|
490
|
+
return this.getModelFromInstance(model);
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Return all deployers
|
|
494
|
+
* @returns the result
|
|
495
|
+
*/
|
|
496
|
+
getDeployers() {
|
|
497
|
+
return this.deployers;
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* Add a new model
|
|
501
|
+
*
|
|
502
|
+
* @param name - the name to use
|
|
503
|
+
* @param model - the model to use
|
|
504
|
+
* @param dynamic class is dynamic so recompute the hierarchy
|
|
505
|
+
* @param metadata - the model metadata
|
|
506
|
+
* @returns this for chaining
|
|
507
|
+
*/
|
|
508
|
+
addModel(name, model, metadata = {
|
|
509
|
+
Identifier: name,
|
|
510
|
+
Ancestors: [],
|
|
511
|
+
Subclasses: [],
|
|
512
|
+
Relations: {},
|
|
513
|
+
PrimaryKey: ["id"],
|
|
514
|
+
Events: [],
|
|
515
|
+
Schemas: {},
|
|
516
|
+
Actions: {},
|
|
517
|
+
Import: "",
|
|
518
|
+
Plural: name + "s",
|
|
519
|
+
Reflection: {}
|
|
520
|
+
}) {
|
|
521
|
+
name = this.completeNamespace(name);
|
|
522
|
+
this.log("TRACE", "Registering model", name);
|
|
523
|
+
if (!model) {
|
|
524
|
+
this.log("ERROR", "Model is undefined", name);
|
|
525
|
+
return this;
|
|
526
|
+
}
|
|
527
|
+
this.models[name] = model;
|
|
528
|
+
if (metadata) {
|
|
529
|
+
// Get ancestor?
|
|
530
|
+
const superClass = Object.getPrototypeOf(model);
|
|
531
|
+
model.Metadata = Object.freeze(metadata);
|
|
532
|
+
}
|
|
533
|
+
return this;
|
|
534
|
+
}
|
|
535
|
+
/* SERIALIZATION */
|
|
536
|
+
/**
|
|
537
|
+
*
|
|
538
|
+
* @param this - the constructor
|
|
539
|
+
* @param json - the JSON data
|
|
540
|
+
* @returns the result
|
|
541
|
+
*/
|
|
542
|
+
static deserialize(json) {
|
|
543
|
+
const instance = new this();
|
|
544
|
+
instance.baseConfiguration = json.baseConfiguration;
|
|
545
|
+
instance.currentDeployment = json.currentDeployment;
|
|
546
|
+
instance.appModule = json.appModule;
|
|
547
|
+
return instance;
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* Serialize the application state to a plain object
|
|
551
|
+
* @returns the result
|
|
552
|
+
*/
|
|
553
|
+
toJSON() {
|
|
554
|
+
return {
|
|
555
|
+
baseConfiguration: this.baseConfiguration,
|
|
556
|
+
currentDeployment: this.currentDeployment,
|
|
557
|
+
appModule: this.appModule
|
|
558
|
+
};
|
|
559
|
+
}
|
|
560
|
+
/**
|
|
561
|
+
* Return webda current version
|
|
562
|
+
*
|
|
563
|
+
* @returns package version
|
|
564
|
+
* @since 0.4.0
|
|
565
|
+
*/
|
|
566
|
+
getWebdaVersion() {
|
|
567
|
+
return JSON.parse(readFileSync(__dirname + "/../../package.json").toString()).version;
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* Retrieve Git Repository information
|
|
571
|
+
*
|
|
572
|
+
* {@link GitInformation} for more details on how the information is gathered
|
|
573
|
+
* @return the git information
|
|
574
|
+
* @param _packageName - the package name
|
|
575
|
+
* @param _version - the version string
|
|
576
|
+
* @returns the result
|
|
577
|
+
*/
|
|
578
|
+
getGitInformation(_packageName, _version) {
|
|
579
|
+
return this.baseConfiguration.cachedModules.project?.git;
|
|
580
|
+
}
|
|
581
|
+
/**
|
|
582
|
+
* Retrieve the project information
|
|
583
|
+
* @returns the result
|
|
584
|
+
*/
|
|
585
|
+
getProjectInfo() {
|
|
586
|
+
return this.baseConfiguration.cachedModules.project;
|
|
587
|
+
}
|
|
588
|
+
/**
|
|
589
|
+
* Get current deployment name
|
|
590
|
+
* @returns the result string
|
|
591
|
+
*/
|
|
592
|
+
getCurrentDeployment() {
|
|
593
|
+
return this.baseConfiguration.cachedModules.project.deployment.name;
|
|
594
|
+
}
|
|
595
|
+
/**
|
|
596
|
+
* Return all application modules merged as one
|
|
597
|
+
*
|
|
598
|
+
* Used when deployed
|
|
599
|
+
* @returns the result
|
|
600
|
+
*/
|
|
601
|
+
getModules() {
|
|
602
|
+
return this.baseConfiguration.cachedModules;
|
|
603
|
+
}
|
|
604
|
+
/**
|
|
605
|
+
* Get application configuration
|
|
606
|
+
* @param _deployment - the deployment name
|
|
607
|
+
* @returns the result
|
|
608
|
+
*/
|
|
609
|
+
getConfiguration(_deployment = undefined) {
|
|
610
|
+
return this.baseConfiguration;
|
|
611
|
+
}
|
|
612
|
+
/**
|
|
613
|
+
* Return current Configuration of the Application
|
|
614
|
+
*
|
|
615
|
+
* Same as calling
|
|
616
|
+
*
|
|
617
|
+
* ```js
|
|
618
|
+
* getConfiguration(this.currentDeployment);
|
|
619
|
+
* ```
|
|
620
|
+
* @returns the result
|
|
621
|
+
*/
|
|
622
|
+
getCurrentConfiguration() {
|
|
623
|
+
return this.getConfiguration();
|
|
624
|
+
}
|
|
625
|
+
/**
|
|
626
|
+
* Import a file
|
|
627
|
+
*
|
|
628
|
+
* If the `default` is set take this or use old format
|
|
629
|
+
*
|
|
630
|
+
* @param info - the information object
|
|
631
|
+
* @param withExport - whether to include exports
|
|
632
|
+
* @returns the result
|
|
633
|
+
*/
|
|
634
|
+
async importFile(info, withExport = true) {
|
|
635
|
+
if (info.startsWith(".")) {
|
|
636
|
+
info = this.getPath(info);
|
|
637
|
+
}
|
|
638
|
+
try {
|
|
639
|
+
this.log("TRACE", "Load file", info);
|
|
640
|
+
// eslint-disable-next-line prefer-const
|
|
641
|
+
let [importFilename, importName = "default"] = info.split(":");
|
|
642
|
+
if (!importFilename.endsWith(".js") && !importFilename.endsWith(".ts")) {
|
|
643
|
+
importFilename += ".js";
|
|
644
|
+
}
|
|
645
|
+
const importedFile = await import(importFilename);
|
|
646
|
+
if (!withExport) {
|
|
647
|
+
return;
|
|
648
|
+
}
|
|
649
|
+
const importObject = importedFile[importName];
|
|
650
|
+
if (!importObject) {
|
|
651
|
+
this.log("WARN", `Module ${importFilename} does not have export named ${importName}`);
|
|
652
|
+
}
|
|
653
|
+
return importObject;
|
|
654
|
+
}
|
|
655
|
+
catch (err) {
|
|
656
|
+
this.log("ERROR", "Cannot resolve require", info, err.message);
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
/**
|
|
660
|
+
* Load local module
|
|
661
|
+
*/
|
|
662
|
+
async loadLocalModule() {
|
|
663
|
+
const moduleFile = join(process.cwd(), "webda.module.json");
|
|
664
|
+
if (existsSync(moduleFile)) {
|
|
665
|
+
await this.loadModule(FileUtils.load(moduleFile), process.cwd());
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
/**
|
|
669
|
+
* Get implementations of a class
|
|
670
|
+
* @param object - the target object
|
|
671
|
+
* @returns the result
|
|
672
|
+
*/
|
|
673
|
+
getImplementations(object) {
|
|
674
|
+
const res = {};
|
|
675
|
+
for (const key in this.moddas) {
|
|
676
|
+
if (this.moddas[key] && object instanceof this.moddas[key]) {
|
|
677
|
+
res[key] = this.moddas[key];
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
return res;
|
|
681
|
+
}
|
|
682
|
+
/**
|
|
683
|
+
* Load the module,
|
|
684
|
+
*
|
|
685
|
+
* @protected
|
|
686
|
+
* @ignore Useless for documentation
|
|
687
|
+
*/
|
|
688
|
+
async loadModule(module, parent = this.applicationPath) {
|
|
689
|
+
if (!module) {
|
|
690
|
+
return;
|
|
691
|
+
}
|
|
692
|
+
const info = module;
|
|
693
|
+
const sectionLoader = async (section) => {
|
|
694
|
+
for (const key in info[section]) {
|
|
695
|
+
this[section][key] ??= await this.importFile(join(parent, info[section][key].Import));
|
|
696
|
+
if (!this[section][key]) {
|
|
697
|
+
this.log("ERROR", `Cannot load ${section.substring(0, section.length - 1)} ${key} from ${join(parent, info[section][key].Import)}`);
|
|
698
|
+
continue;
|
|
699
|
+
}
|
|
700
|
+
if (section === "beans" || section === "moddas") {
|
|
701
|
+
// Load the parameters automatically
|
|
702
|
+
const configurationClass = info[section][key].Configuration
|
|
703
|
+
? await this.importFile(join(parent, info[section][key].Configuration))
|
|
704
|
+
: ServiceParameters;
|
|
705
|
+
if (!configurationClass) {
|
|
706
|
+
this.log("ERROR", `Cannot load configuration for ${section.substring(0, section.length - 1)} ${key} from ${join(parent, info[section][key].Configuration)}`);
|
|
707
|
+
continue;
|
|
708
|
+
}
|
|
709
|
+
installConfigurationFactories(this[section][key], configurationClass, info[section][key].Schema);
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
};
|
|
713
|
+
// Filter beans based on ignoreBeans configuration
|
|
714
|
+
if (info.beans) {
|
|
715
|
+
const ignoreBeans = this.baseConfiguration?.parameters?.ignoreBeans;
|
|
716
|
+
for (const f of Object.keys(info.beans)) {
|
|
717
|
+
if (ignoreBeans === true)
|
|
718
|
+
continue;
|
|
719
|
+
if (Array.isArray(ignoreBeans) && ignoreBeans.includes(f))
|
|
720
|
+
continue;
|
|
721
|
+
this.baseConfiguration.cachedModules.beans[f] = info.beans[f];
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
// Behaviors are registered by metadata only — the runtime never imports
|
|
725
|
+
// the Behavior class. The per-model `__hydrateBehaviors(rawData)` method
|
|
726
|
+
// emitted at compile time by `@webda/content-mapper` holds the static
|
|
727
|
+
// imports needed to coerce raw values into Behavior instances, so the
|
|
728
|
+
// application registry just needs to retain the metadata blob (action
|
|
729
|
+
// shapes, identifier, etc.) for `DomainService` operation registration
|
|
730
|
+
// and the REST transport routing.
|
|
731
|
+
if (info.behaviors) {
|
|
732
|
+
for (const id in info.behaviors) {
|
|
733
|
+
this.behaviors[id] ??= { metadata: info.behaviors[id] };
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
// TODO Merging tree from different modules
|
|
737
|
+
await Promise.all([sectionLoader("moddas"), sectionLoader("models"), sectionLoader("beans")]);
|
|
738
|
+
// Set metadata on models - need to be done after all models are loaded
|
|
739
|
+
this.setModelMetadata(info.models);
|
|
740
|
+
}
|
|
741
|
+
/**
|
|
742
|
+
* Set object Metadata
|
|
743
|
+
* Need to be done after all models are loaded to resolve Ancestors and Subclasses
|
|
744
|
+
* @param info - the information object
|
|
745
|
+
*/
|
|
746
|
+
setModelMetadata(info) {
|
|
747
|
+
// Might want to move this to specific methods
|
|
748
|
+
for (const m in this.models) {
|
|
749
|
+
if (!this.models[m]) {
|
|
750
|
+
continue;
|
|
751
|
+
}
|
|
752
|
+
// Register serializer under the full model identifier so app-specific
|
|
753
|
+
// classes (e.g. WebdaSample/User) don't collide with framework ones that
|
|
754
|
+
// share the same JS constructor name (Webda/User).
|
|
755
|
+
this.models[m].registerSerializer(true, m);
|
|
756
|
+
this.models[m].Metadata = Object.freeze({
|
|
757
|
+
...info[m],
|
|
758
|
+
// Runtime: resolve strings to model classes for backward compat
|
|
759
|
+
// ModelMetadata types these as string[] but core resolves them to classes
|
|
760
|
+
Ancestors: info[m].Ancestors.map(s => this.models[s]),
|
|
761
|
+
Subclasses: info[m].Subclasses.map(s => this.models[s])
|
|
762
|
+
});
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
/**
|
|
766
|
+
* Return the full name including namespace
|
|
767
|
+
*
|
|
768
|
+
* In Webda the ServiceType include namespace `Webda/Store` or `Webda/Test`
|
|
769
|
+
* This method will make sure the namespace is present, adding it if no '/'
|
|
770
|
+
* is found in the name
|
|
771
|
+
*
|
|
772
|
+
* @param name - the name to use
|
|
773
|
+
* @returns the result string
|
|
774
|
+
*/
|
|
775
|
+
completeNamespace(name = "") {
|
|
776
|
+
// Do not add a namespace if already present
|
|
777
|
+
if (name.includes("/")) {
|
|
778
|
+
return name;
|
|
779
|
+
}
|
|
780
|
+
return `${this.getNamespace()}/${name}`;
|
|
781
|
+
}
|
|
782
|
+
/**
|
|
783
|
+
* Return current namespace
|
|
784
|
+
* @returns the result string
|
|
785
|
+
*/
|
|
786
|
+
getNamespace() {
|
|
787
|
+
return this.baseConfiguration?.cachedModules?.project?.webda?.namespace || "Webda";
|
|
788
|
+
}
|
|
789
|
+
};
|
|
790
|
+
})();
|
|
791
|
+
export { Application };
|
|
792
|
+
//# sourceMappingURL=application.js.map
|