@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
package/lib/stores/store.spec.js
DELETED
|
@@ -1,906 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
import { suite, test } from "@testdeck/mocha";
|
|
8
|
-
import * as assert from "assert";
|
|
9
|
-
import { stub } from "sinon";
|
|
10
|
-
import { randomUUID } from "crypto";
|
|
11
|
-
import { Ident } from "../../test/models/ident.js";
|
|
12
|
-
import { StoreParameters, WebdaError } from "../index.js";
|
|
13
|
-
import { CoreModel } from "../models/coremodel.js";
|
|
14
|
-
import { WebdaTest } from "../test.js";
|
|
15
|
-
import { HttpContext } from "../utils/httpcontext.js";
|
|
16
|
-
import { StoreNotFoundError, UpdateConditionFailError } from "./store.js";
|
|
17
|
-
/**
|
|
18
|
-
* Fake model that refuse the half of the items
|
|
19
|
-
*/
|
|
20
|
-
export class PermissionModel extends CoreModel {
|
|
21
|
-
async canAct(ctx, _action) {
|
|
22
|
-
if (this.order % 200 < 120) {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
let StoreParametersTest = class StoreParametersTest {
|
|
29
|
-
cov() {
|
|
30
|
-
let params = new StoreParameters({ expose: "/plop", lastUpdateField: "bz", creationDateField: "c" }, undefined);
|
|
31
|
-
assert.deepStrictEqual(params.expose, {
|
|
32
|
-
queryMethod: "GET",
|
|
33
|
-
url: "/plop",
|
|
34
|
-
restrict: {}
|
|
35
|
-
});
|
|
36
|
-
assert.throws(() => new StoreParameters({ map: {} }, undefined), Error);
|
|
37
|
-
assert.throws(() => new StoreParameters({ index: [] }, undefined), Error);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
__decorate([
|
|
41
|
-
test
|
|
42
|
-
], StoreParametersTest.prototype, "cov", null);
|
|
43
|
-
StoreParametersTest = __decorate([
|
|
44
|
-
suite
|
|
45
|
-
], StoreParametersTest);
|
|
46
|
-
class StoreTest extends WebdaTest {
|
|
47
|
-
/**
|
|
48
|
-
* By default no testing index
|
|
49
|
-
* @returns
|
|
50
|
-
*/
|
|
51
|
-
async getIndex() {
|
|
52
|
-
return undefined;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Recreate index if needed
|
|
56
|
-
*/
|
|
57
|
-
async recreateIndex() { }
|
|
58
|
-
async before() {
|
|
59
|
-
await super.before();
|
|
60
|
-
await this.getUserStore()?.__clean();
|
|
61
|
-
await this.getIdentStore()?.__clean();
|
|
62
|
-
await this.recreateIndex();
|
|
63
|
-
}
|
|
64
|
-
getModelClass() {
|
|
65
|
-
return Ident;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Get the base of documents to query
|
|
69
|
-
*/
|
|
70
|
-
getQueryDocuments() {
|
|
71
|
-
let docs = [];
|
|
72
|
-
for (let i = 0; i < 1000; i++) {
|
|
73
|
-
docs.push({
|
|
74
|
-
state: ["CA", "OR", "NY", "FL"][i % 4],
|
|
75
|
-
states: [["CA", "OR", "NY", "FL"][i % 4], ["CA", "OR", "NY", "FL"][(i + 1) % 4]],
|
|
76
|
-
order: i,
|
|
77
|
-
team: {
|
|
78
|
-
id: i % 20
|
|
79
|
-
},
|
|
80
|
-
role: i % 10
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
return docs;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Fill the Store with data to be queried
|
|
87
|
-
*/
|
|
88
|
-
async fillForQuery() {
|
|
89
|
-
let userStore = this.getUserStore();
|
|
90
|
-
this.webda.getApplication().getModel("Webda/User").prototype.canAct = async () => true;
|
|
91
|
-
userStore._model.prototype.canAct = async () => true;
|
|
92
|
-
await Promise.all(this.getQueryDocuments().map(d => userStore.save(d)));
|
|
93
|
-
return userStore;
|
|
94
|
-
}
|
|
95
|
-
async query() {
|
|
96
|
-
let userStore = await this.fillForQuery();
|
|
97
|
-
const queries = {
|
|
98
|
-
'state = "CA"': 250,
|
|
99
|
-
"team.id > 15": 200,
|
|
100
|
-
"team.id >= 15": 250,
|
|
101
|
-
"team.id <= 14": 750,
|
|
102
|
-
'state IN ["CA", "NY"]': 500,
|
|
103
|
-
'state IN ["CA", "NY", "NV"]': 500,
|
|
104
|
-
'state = "CA" AND team.id > 15': 50,
|
|
105
|
-
"team.id < 5 OR team.id > 15": 450,
|
|
106
|
-
"role < 5 AND team.id > 10 OR team.id > 15": 400,
|
|
107
|
-
"role < 5 AND (team.id > 10 OR team.id > 15)": 200,
|
|
108
|
-
'state LIKE "C_"': 250,
|
|
109
|
-
'state LIKE "C__"': 0,
|
|
110
|
-
'state LIKE "C%"': 250,
|
|
111
|
-
'state != "CA"': 750,
|
|
112
|
-
'states CONTAINS "CA"': 500,
|
|
113
|
-
"role = 4": 100,
|
|
114
|
-
"": 1000
|
|
115
|
-
};
|
|
116
|
-
for (let i in queries) {
|
|
117
|
-
assert.strictEqual((await userStore.query(i)).results.length, queries[i], `Query: ${i} should return ${queries[i]}`);
|
|
118
|
-
}
|
|
119
|
-
// Verify pagination system
|
|
120
|
-
let offset;
|
|
121
|
-
let res;
|
|
122
|
-
let i = 0;
|
|
123
|
-
do {
|
|
124
|
-
res = await userStore.query(`LIMIT 100 ${offset ? 'OFFSET "' + offset + '"' : ""}`);
|
|
125
|
-
offset = res.continuationToken;
|
|
126
|
-
if (i++ > 9) {
|
|
127
|
-
assert.strictEqual(res.results.length, 0, `Query: LIMIT 100 ${offset ? 'OFFSET "' + offset + '"' : ""} should return 0`);
|
|
128
|
-
assert.strictEqual(offset, undefined);
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
assert.strictEqual(res.results.length, 100, `Query: LIMIT 100 ${offset ? 'OFFSET "' + offset + '"' : ""} should return 0`);
|
|
132
|
-
}
|
|
133
|
-
} while (offset !== undefined);
|
|
134
|
-
// Verify permission issue and half pagination
|
|
135
|
-
userStore.setModel(PermissionModel);
|
|
136
|
-
userStore.getParameters().forceModel = true;
|
|
137
|
-
if (userStore._cacheStore) {
|
|
138
|
-
userStore._cacheStore.getParameters().forceModel = true;
|
|
139
|
-
}
|
|
140
|
-
let context = await this.newContext();
|
|
141
|
-
// Verify pagination system
|
|
142
|
-
i = 0;
|
|
143
|
-
let total = 0;
|
|
144
|
-
let q;
|
|
145
|
-
// To ensure we trigger slowQuery
|
|
146
|
-
userStore.getParameters().slowQueryThreshold = 0;
|
|
147
|
-
do {
|
|
148
|
-
q = `team.id > 10 LIMIT 100 ${offset ? 'OFFSET "' + offset + '"' : ""}`;
|
|
149
|
-
context.setHttpContext(new HttpContext("test.webda.io", i++ % 2 ? "GET" : "PUT", userStore.getParameters().expose.url + "?q=" + encodeURI(q), "https", 443));
|
|
150
|
-
context.getHttpContext().setBody({ q });
|
|
151
|
-
context.getParameters().q = q;
|
|
152
|
-
// @ts-ignore
|
|
153
|
-
await userStore.httpQuery(context);
|
|
154
|
-
res = JSON.parse(context.getResponseBody());
|
|
155
|
-
offset = res.continuationToken;
|
|
156
|
-
total += res.results.length;
|
|
157
|
-
} while (offset !== undefined);
|
|
158
|
-
assert.strictEqual(total, 180);
|
|
159
|
-
q = "BAD QUERY !";
|
|
160
|
-
context.setHttpContext(new HttpContext("test.webda.io", "PUT", userStore.getParameters().expose.url, "https", 443));
|
|
161
|
-
context.getHttpContext().setBody({ q });
|
|
162
|
-
await assert.rejects(() => userStore["httpQuery"](context), (err) => err.getResponseCode() === 400);
|
|
163
|
-
let mock = stub(userStore, "query").callsFake(() => {
|
|
164
|
-
throw new Error("Plop");
|
|
165
|
-
});
|
|
166
|
-
try {
|
|
167
|
-
await assert.rejects(() => userStore["httpQuery"](context), /Plop/);
|
|
168
|
-
}
|
|
169
|
-
finally {
|
|
170
|
-
mock.restore();
|
|
171
|
-
}
|
|
172
|
-
return userStore;
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Simplify model
|
|
176
|
-
* @param model
|
|
177
|
-
* @returns
|
|
178
|
-
*/
|
|
179
|
-
mapQueryModel(model) {
|
|
180
|
-
return {
|
|
181
|
-
order: model.order,
|
|
182
|
-
teamId: model.team.id,
|
|
183
|
-
state: model.state
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
async queryOrder() {
|
|
187
|
-
let userStore = await this.fillForQuery();
|
|
188
|
-
let model = await userStore.save({
|
|
189
|
-
order: 996,
|
|
190
|
-
state: "CA",
|
|
191
|
-
team: { id: 16 }
|
|
192
|
-
});
|
|
193
|
-
try {
|
|
194
|
-
let res = await userStore.query('state = "CA" ORDER BY order DESC LIMIT 10');
|
|
195
|
-
assert.deepStrictEqual(res.results.map((c) => ({
|
|
196
|
-
state: c.state,
|
|
197
|
-
order: c.order,
|
|
198
|
-
teamId: c.team.id
|
|
199
|
-
})), [
|
|
200
|
-
{ state: "CA", order: 996, teamId: 16 },
|
|
201
|
-
{ state: "CA", order: 996, teamId: 16 },
|
|
202
|
-
{ state: "CA", order: 992, teamId: 12 },
|
|
203
|
-
{ state: "CA", order: 988, teamId: 8 },
|
|
204
|
-
{ state: "CA", order: 984, teamId: 4 },
|
|
205
|
-
{ state: "CA", order: 980, teamId: 0 },
|
|
206
|
-
{ state: "CA", order: 976, teamId: 16 },
|
|
207
|
-
{ state: "CA", order: 972, teamId: 12 },
|
|
208
|
-
{ state: "CA", order: 968, teamId: 8 },
|
|
209
|
-
{ state: "CA", order: 964, teamId: 4 }
|
|
210
|
-
]);
|
|
211
|
-
res = await userStore.query("order > 980 ORDER BY state ASC, order DESC LIMIT 10");
|
|
212
|
-
assert.deepStrictEqual(res.results.map((c) => ({
|
|
213
|
-
state: c.state,
|
|
214
|
-
order: c.order,
|
|
215
|
-
teamId: c.team.id
|
|
216
|
-
})), [
|
|
217
|
-
{ state: "CA", order: 996, teamId: 16 },
|
|
218
|
-
{ state: "CA", order: 996, teamId: 16 },
|
|
219
|
-
{ state: "CA", order: 992, teamId: 12 },
|
|
220
|
-
{ state: "CA", order: 988, teamId: 8 },
|
|
221
|
-
{ state: "CA", order: 984, teamId: 4 },
|
|
222
|
-
{ state: "FL", order: 999, teamId: 19 },
|
|
223
|
-
{ state: "FL", order: 995, teamId: 15 },
|
|
224
|
-
{ state: "FL", order: 991, teamId: 11 },
|
|
225
|
-
{ state: "FL", order: 987, teamId: 7 },
|
|
226
|
-
{ state: "FL", order: 983, teamId: 3 }
|
|
227
|
-
]);
|
|
228
|
-
}
|
|
229
|
-
finally {
|
|
230
|
-
await model.delete();
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
async mapper() {
|
|
234
|
-
let identStore = this.getIdentStore();
|
|
235
|
-
let userStore = this.getUserStore();
|
|
236
|
-
let user1, ident1, ident2, user2;
|
|
237
|
-
var eventFired = 0;
|
|
238
|
-
var events = [
|
|
239
|
-
"Store.Save",
|
|
240
|
-
"Store.Saved",
|
|
241
|
-
"Store.Get",
|
|
242
|
-
"Store.Delete",
|
|
243
|
-
"Store.Deleted",
|
|
244
|
-
"Store.Update",
|
|
245
|
-
"Store.Updated",
|
|
246
|
-
"Store.Query",
|
|
247
|
-
"Store.Queried"
|
|
248
|
-
];
|
|
249
|
-
for (let evt in events) {
|
|
250
|
-
identStore.on(events[evt], function (evt) {
|
|
251
|
-
eventFired++;
|
|
252
|
-
});
|
|
253
|
-
}
|
|
254
|
-
assert.strictEqual(await userStore.get(undefined), undefined);
|
|
255
|
-
user1 = (await userStore.save({
|
|
256
|
-
name: "test"
|
|
257
|
-
})).getUuid();
|
|
258
|
-
let user = await userStore.get(user1);
|
|
259
|
-
// Save a user and add an ident
|
|
260
|
-
assert.notStrictEqual(user, undefined);
|
|
261
|
-
user1 = user.getUuid();
|
|
262
|
-
ident1 = await identStore.save({
|
|
263
|
-
type: "facebook",
|
|
264
|
-
_user: user.getUuid()
|
|
265
|
-
});
|
|
266
|
-
user = await userStore.get(user1);
|
|
267
|
-
// Verify the ident is on the user
|
|
268
|
-
assert.notStrictEqual(user, undefined);
|
|
269
|
-
assert.notStrictEqual(user.idents, undefined);
|
|
270
|
-
assert.strictEqual(user.idents.length, 1);
|
|
271
|
-
// Retrieve index to verify it is in it too
|
|
272
|
-
let index = await this.getIndex();
|
|
273
|
-
// Do not force index test for store
|
|
274
|
-
if (index) {
|
|
275
|
-
assert.notStrictEqual(index[ident1.uuid], undefined);
|
|
276
|
-
assert.strictEqual(index[ident1.uuid].type, "facebook");
|
|
277
|
-
}
|
|
278
|
-
let lastUpdate = user.idents[0]._lastUpdate;
|
|
279
|
-
await this.sleep(10);
|
|
280
|
-
await identStore.incrementAttribute(ident1.uuid, "counter", 1);
|
|
281
|
-
await user.refresh();
|
|
282
|
-
assert.notStrictEqual(user.idents[0]._lastUpdate, 0);
|
|
283
|
-
this.assertLastUpdateNotEqual(user.idents[0]._lastUpdate, lastUpdate, "lastUpdate on a map after incrementAttribute");
|
|
284
|
-
lastUpdate = user.idents[0]._lastUpdate;
|
|
285
|
-
await this.sleep(10);
|
|
286
|
-
await identStore.upsertItemToCollection(ident1.uuid, "actions", {
|
|
287
|
-
uuid: "action_1",
|
|
288
|
-
type: "plop",
|
|
289
|
-
date: new Date()
|
|
290
|
-
});
|
|
291
|
-
await user.refresh();
|
|
292
|
-
assert.notStrictEqual(user.idents[0]._lastUpdate.length, 0);
|
|
293
|
-
this.assertLastUpdateNotEqual(user.idents[0]._lastUpdate, lastUpdate, "lastUpdate on a map after upsertItemToCollection");
|
|
294
|
-
lastUpdate = user.idents[0]._lastUpdate;
|
|
295
|
-
await this.sleep(10);
|
|
296
|
-
await identStore.deleteItemFromCollection(ident1.uuid, "actions", 0, "plop", "type");
|
|
297
|
-
await user.refresh();
|
|
298
|
-
assert.notStrictEqual(user.idents[0]._lastUpdate.length, 0);
|
|
299
|
-
this.assertLastUpdateNotEqual(user.idents[0]._lastUpdate, lastUpdate, "lastUpdate on a map after deleteItemFromCollection");
|
|
300
|
-
ident2 = await identStore.save({
|
|
301
|
-
type: "google",
|
|
302
|
-
_user: user.uuid
|
|
303
|
-
});
|
|
304
|
-
// Ensure Date is returned
|
|
305
|
-
assert.ok(ident2._creationDate instanceof Date);
|
|
306
|
-
assert.ok(ident2._lastUpdate instanceof Date);
|
|
307
|
-
// Add a second ident and check it is on the user aswell
|
|
308
|
-
user = await userStore.get(user1);
|
|
309
|
-
assert.strictEqual(user.idents.length, 2);
|
|
310
|
-
// Check index
|
|
311
|
-
if (index) {
|
|
312
|
-
await index.refresh();
|
|
313
|
-
assert.notStrictEqual(index[ident2.uuid], undefined);
|
|
314
|
-
}
|
|
315
|
-
ident2.type = "google2";
|
|
316
|
-
// Update ident2 to check mapper update
|
|
317
|
-
let res = await identStore.patch({
|
|
318
|
-
uuid: ident2.uuid,
|
|
319
|
-
type: "google2"
|
|
320
|
-
}, true, null);
|
|
321
|
-
assert.strictEqual(res.type, "google2");
|
|
322
|
-
assert.strictEqual(res._user.toString(), user1);
|
|
323
|
-
// Check index
|
|
324
|
-
if (index) {
|
|
325
|
-
await index.refresh();
|
|
326
|
-
assert.strictEqual(index[ident2.uuid].type, "google2");
|
|
327
|
-
}
|
|
328
|
-
user = await userStore.get(user1);
|
|
329
|
-
assert.strictEqual(user.idents.length, 2);
|
|
330
|
-
assert.strictEqual(user.idents[1].type, "google2");
|
|
331
|
-
await identStore.delete(ident1.uuid);
|
|
332
|
-
user = await userStore.get(user1);
|
|
333
|
-
assert.strictEqual(user.idents.length, 1);
|
|
334
|
-
assert.strictEqual(user.idents[0].type, "google2");
|
|
335
|
-
// Add a second user to play
|
|
336
|
-
user = await userStore.save({
|
|
337
|
-
name: "test2"
|
|
338
|
-
});
|
|
339
|
-
user2 = user.uuid;
|
|
340
|
-
// Move ident2 from user1 to user2
|
|
341
|
-
await identStore.patch({
|
|
342
|
-
_user: user.uuid,
|
|
343
|
-
uuid: ident2.uuid
|
|
344
|
-
});
|
|
345
|
-
// Check user1 has no more ident
|
|
346
|
-
user = await userStore.get(user1);
|
|
347
|
-
assert.strictEqual(user.idents.length, 0);
|
|
348
|
-
// Check user2 has one ident
|
|
349
|
-
user = await userStore.get(user2);
|
|
350
|
-
assert.strictEqual(user.idents.length, 1);
|
|
351
|
-
assert.strictEqual(user.idents[0].type, "google2");
|
|
352
|
-
// Verify you cannot update a collection from patch
|
|
353
|
-
await userStore.patch({
|
|
354
|
-
idents: []
|
|
355
|
-
}, user2);
|
|
356
|
-
user = await userStore.get(user2);
|
|
357
|
-
assert.strictEqual(user.idents.length, 1);
|
|
358
|
-
// Verify you cannot update a collection from update
|
|
359
|
-
await userStore.update({
|
|
360
|
-
idents: []
|
|
361
|
-
}, user2);
|
|
362
|
-
user = await userStore.get(user2);
|
|
363
|
-
assert.strictEqual(user.idents.length, 1);
|
|
364
|
-
assert.strictEqual(user.idents[0].type, "google2");
|
|
365
|
-
// Verify delete cascade with empty collection
|
|
366
|
-
await userStore.delete(user1);
|
|
367
|
-
user = await userStore.get(user2);
|
|
368
|
-
assert.strictEqual(user.idents.length, 1);
|
|
369
|
-
assert.strictEqual(user.idents[0].type, "google2");
|
|
370
|
-
// Verify delete cascade
|
|
371
|
-
await userStore.delete(user2);
|
|
372
|
-
let ident = await identStore.get(ident2.uuid);
|
|
373
|
-
assert.strictEqual(ident.__deleted, true);
|
|
374
|
-
// Check index
|
|
375
|
-
if (index) {
|
|
376
|
-
await index.refresh();
|
|
377
|
-
assert.strictEqual(index[ident2.uuid], undefined);
|
|
378
|
-
assert.strictEqual(index[ident1.uuid], undefined);
|
|
379
|
-
}
|
|
380
|
-
assert.strictEqual(eventFired, 9);
|
|
381
|
-
// Force sync delete - overriding the asyncDelete parameter
|
|
382
|
-
await identStore.forceDelete(ident2.uuid);
|
|
383
|
-
ident = await identStore.get(ident2.uuid);
|
|
384
|
-
assert.strictEqual(ident, undefined);
|
|
385
|
-
assert.strictEqual(eventFired, 11);
|
|
386
|
-
}
|
|
387
|
-
async collection() {
|
|
388
|
-
let identStore = this.getIdentStore();
|
|
389
|
-
var ident;
|
|
390
|
-
ident = await identStore.save({
|
|
391
|
-
test: "plop"
|
|
392
|
-
});
|
|
393
|
-
await identStore.upsertItemToCollection(ident.uuid, "actions", {
|
|
394
|
-
uuid: "action_1",
|
|
395
|
-
type: "plop",
|
|
396
|
-
date: new Date()
|
|
397
|
-
});
|
|
398
|
-
await ident.refresh();
|
|
399
|
-
assert.notStrictEqual(ident.actions, undefined);
|
|
400
|
-
assert.strictEqual(ident.actions.length, 1);
|
|
401
|
-
await identStore.upsertItemToCollection(ident.uuid, "actions", {
|
|
402
|
-
uuid: "action_2",
|
|
403
|
-
type: "plop",
|
|
404
|
-
date: new Date()
|
|
405
|
-
});
|
|
406
|
-
await ident.refresh();
|
|
407
|
-
assert.notStrictEqual(ident.actions, undefined);
|
|
408
|
-
assert.strictEqual(ident.actions.length, 2);
|
|
409
|
-
await identStore.upsertItemToCollection(ident.uuid, "actions", {
|
|
410
|
-
uuid: "action_1",
|
|
411
|
-
type: "plop2",
|
|
412
|
-
date: new Date()
|
|
413
|
-
}, 0);
|
|
414
|
-
await ident.refresh();
|
|
415
|
-
this.log("DEBUG", "Action", ident.actions);
|
|
416
|
-
assert.notStrictEqual(ident.actions, undefined);
|
|
417
|
-
assert.strictEqual(ident.actions.length, 2);
|
|
418
|
-
assert.strictEqual(ident.actions[0].type, "plop2");
|
|
419
|
-
assert.strictEqual(ident.actions[0].uuid, "action_1");
|
|
420
|
-
await assert.rejects(() => identStore.upsertItemToCollection(ident.uuid, "actions", {
|
|
421
|
-
uuid: "action_1",
|
|
422
|
-
type: "plop2",
|
|
423
|
-
date: new Date()
|
|
424
|
-
}, 0, "plop", "type"), err => true);
|
|
425
|
-
await assert.rejects(() => identStore.deleteItemFromCollection(ident.uuid, "actions", 0, "action_2"), err => true);
|
|
426
|
-
await ident.refresh();
|
|
427
|
-
assert.strictEqual(ident.actions.length, 2);
|
|
428
|
-
assert.strictEqual(ident.actions[0].type, "plop2");
|
|
429
|
-
let lastUpdate = ident._lastUpdate;
|
|
430
|
-
await this.sleep(10);
|
|
431
|
-
await identStore.upsertItemToCollection(ident.uuid, "actions", {
|
|
432
|
-
uuid: "action_1",
|
|
433
|
-
type: "plop",
|
|
434
|
-
date: new Date()
|
|
435
|
-
}, 0, "plop2", "type");
|
|
436
|
-
await ident.refresh();
|
|
437
|
-
this.assertLastUpdateNotEqual(ident._lastUpdate, lastUpdate, "lastUpdate after upsertItemToColletion failed");
|
|
438
|
-
lastUpdate = ident._lastUpdate;
|
|
439
|
-
await this.sleep(10);
|
|
440
|
-
await identStore.deleteItemFromCollection(ident.uuid, "actions", 0, "plop", "type");
|
|
441
|
-
ident = await identStore.get(ident.uuid);
|
|
442
|
-
this.assertLastUpdateNotEqual(ident._lastUpdate, lastUpdate, "lastUpdate after deleteItemToColletion failed");
|
|
443
|
-
assert.notStrictEqual(ident.actions, undefined);
|
|
444
|
-
assert.strictEqual(ident.actions.length, 1);
|
|
445
|
-
assert.strictEqual(ident.actions[0].type, "plop");
|
|
446
|
-
assert.strictEqual(ident.actions[0].uuid, "action_2");
|
|
447
|
-
}
|
|
448
|
-
async getAll() {
|
|
449
|
-
let userStore = this.getUserStore();
|
|
450
|
-
var user1;
|
|
451
|
-
var user3;
|
|
452
|
-
user1 = await userStore.save({
|
|
453
|
-
name: "test1"
|
|
454
|
-
});
|
|
455
|
-
await userStore.save({
|
|
456
|
-
name: "test2"
|
|
457
|
-
});
|
|
458
|
-
user3 = await userStore.save({
|
|
459
|
-
name: "test3"
|
|
460
|
-
});
|
|
461
|
-
let users = await userStore.getAll();
|
|
462
|
-
assert.strictEqual(users.length, 3);
|
|
463
|
-
assert.strictEqual(users[0] instanceof userStore._model, true);
|
|
464
|
-
assert.strictEqual(users[1] instanceof userStore._model, true);
|
|
465
|
-
assert.strictEqual(users[2] instanceof userStore._model, true);
|
|
466
|
-
users = await userStore.getAll([user1.uuid, user3.uuid, randomUUID()]);
|
|
467
|
-
assert.strictEqual(users.length, 2);
|
|
468
|
-
assert.strictEqual(users[0] instanceof userStore._model, true);
|
|
469
|
-
assert.strictEqual(users[1] instanceof userStore._model, true);
|
|
470
|
-
}
|
|
471
|
-
async crud() {
|
|
472
|
-
let identStore = this.getIdentStore();
|
|
473
|
-
var eventFired = 0;
|
|
474
|
-
var events = [
|
|
475
|
-
"Store.Save",
|
|
476
|
-
"Store.Saved",
|
|
477
|
-
"Store.Get",
|
|
478
|
-
"Store.Delete",
|
|
479
|
-
"Store.Deleted",
|
|
480
|
-
"Store.Update",
|
|
481
|
-
"Store.Updated",
|
|
482
|
-
"Store.PatchUpdate",
|
|
483
|
-
"Store.PatchUpdated",
|
|
484
|
-
"Store.PartialUpdated",
|
|
485
|
-
"Store.Query",
|
|
486
|
-
"Store.Queried"
|
|
487
|
-
];
|
|
488
|
-
for (let evt in events) {
|
|
489
|
-
identStore.on(events[evt], function (e) {
|
|
490
|
-
eventFired++;
|
|
491
|
-
});
|
|
492
|
-
}
|
|
493
|
-
this.log("DEBUG", "Save ident");
|
|
494
|
-
// Check CREATE - READ
|
|
495
|
-
let ident1 = await identStore.save({
|
|
496
|
-
test: "plop",
|
|
497
|
-
cool: "",
|
|
498
|
-
lastUsed: new Date(),
|
|
499
|
-
arr: [],
|
|
500
|
-
details: {
|
|
501
|
-
plop: "plop1",
|
|
502
|
-
clean: undefined,
|
|
503
|
-
yop: "pouf"
|
|
504
|
-
}
|
|
505
|
-
});
|
|
506
|
-
assert.strictEqual(eventFired, 2);
|
|
507
|
-
assert.notStrictEqual(ident1, undefined);
|
|
508
|
-
eventFired = 0;
|
|
509
|
-
this.log("DEBUG", "Get ident");
|
|
510
|
-
let getter = await identStore.get(ident1.uuid);
|
|
511
|
-
assert.strictEqual(eventFired, 1);
|
|
512
|
-
eventFired = 0;
|
|
513
|
-
assert.notStrictEqual(getter, undefined);
|
|
514
|
-
assert.notStrictEqual(getter.lastUsed, undefined);
|
|
515
|
-
assert.notStrictEqual(getter._lastUpdate, undefined);
|
|
516
|
-
assert.strictEqual(getter.uuid, ident1.uuid);
|
|
517
|
-
assert.strictEqual(getter.test, ident1.test);
|
|
518
|
-
// Check UPDATE
|
|
519
|
-
getter.test = "plop2";
|
|
520
|
-
getter.details.plop = "plop2";
|
|
521
|
-
getter.details.blank = "";
|
|
522
|
-
getter.details.bouzouf = undefined;
|
|
523
|
-
getter.empty = [];
|
|
524
|
-
let object;
|
|
525
|
-
this.log("DEBUG", "Update ident");
|
|
526
|
-
await identStore.update(getter);
|
|
527
|
-
assert.strictEqual(eventFired, 2);
|
|
528
|
-
eventFired = 0;
|
|
529
|
-
getter = {};
|
|
530
|
-
getter.uuid = ident1.uuid;
|
|
531
|
-
getter.bouzouf = "test";
|
|
532
|
-
this.log("DEBUG", "Patch ident");
|
|
533
|
-
await identStore.patch(getter);
|
|
534
|
-
assert.strictEqual(eventFired, 2);
|
|
535
|
-
eventFired = 0;
|
|
536
|
-
this.log("DEBUG", "Get ident to check update");
|
|
537
|
-
object = await identStore.get(ident1.uuid);
|
|
538
|
-
this.log("DEBUG", "Retrieved object", object);
|
|
539
|
-
assert.strictEqual(object.test, "plop2");
|
|
540
|
-
assert.strictEqual(object.details.plop, "plop2");
|
|
541
|
-
getter = await identStore.get(object.uuid);
|
|
542
|
-
assert.strictEqual(eventFired, 2);
|
|
543
|
-
assert.strictEqual(getter.test, "plop2");
|
|
544
|
-
await this.sleep(10);
|
|
545
|
-
this.log("DEBUG", "Increment attribute");
|
|
546
|
-
await identStore.incrementAttribute(ident1.uuid, "counter", 1);
|
|
547
|
-
let ident = await identStore.get(ident1.uuid);
|
|
548
|
-
// Verify lastUpdate is updated too
|
|
549
|
-
this.assertLastUpdateNotEqual(ident._lastUpdate, ident1._lastUpdate, "lastUpdate after incrementAttribute failed");
|
|
550
|
-
assert.strictEqual(ident.counter, 1);
|
|
551
|
-
await identStore.incrementAttribute(ident1.uuid, "counter", 3);
|
|
552
|
-
ident1 = await identStore.get(ident1.uuid);
|
|
553
|
-
assert.strictEqual(ident1.counter, 4);
|
|
554
|
-
await identStore.incrementAttributes(ident1.uuid, [
|
|
555
|
-
{ property: "counter", value: -6 },
|
|
556
|
-
{ property: "counter2", value: 10 }
|
|
557
|
-
]);
|
|
558
|
-
let res = await identStore.exists(ident1.uuid);
|
|
559
|
-
assert.strictEqual(res, true);
|
|
560
|
-
// We should be able to verify with the full model
|
|
561
|
-
await identStore.exists(ident1);
|
|
562
|
-
assert.strictEqual(res, true);
|
|
563
|
-
ident1 = await identStore.get(ident1.uuid);
|
|
564
|
-
assert.strictEqual(ident1.counter, -2);
|
|
565
|
-
// Check DELETE
|
|
566
|
-
eventFired = 0;
|
|
567
|
-
await identStore.forceDelete(ident1.uuid);
|
|
568
|
-
assert.strictEqual(eventFired, 2);
|
|
569
|
-
eventFired = 0;
|
|
570
|
-
ident = await identStore.get(ident1.uuid);
|
|
571
|
-
assert.strictEqual(ident, undefined);
|
|
572
|
-
res = await identStore.exists(ident1.uuid);
|
|
573
|
-
assert.strictEqual(res, false);
|
|
574
|
-
}
|
|
575
|
-
assertLastUpdateNotEqual(d1, d2, msg) {
|
|
576
|
-
assert.notStrictEqual(d1, d2, msg);
|
|
577
|
-
}
|
|
578
|
-
async exists() {
|
|
579
|
-
let store = this.getIdentStore();
|
|
580
|
-
let model = await store.save({});
|
|
581
|
-
assert.ok(await store.exists(model.getUuid()));
|
|
582
|
-
assert.ok(await store.exists(model));
|
|
583
|
-
assert.ok(!(await store.exists(randomUUID())));
|
|
584
|
-
}
|
|
585
|
-
async incrementAttribute() {
|
|
586
|
-
let store = this.getIdentStore();
|
|
587
|
-
let model = await store.save({ counter: 0 });
|
|
588
|
-
await store.incrementAttribute(model.getUuid(), "counter", 3);
|
|
589
|
-
await store.incrementAttribute(model.getUuid(), "counter2", 2);
|
|
590
|
-
await model.refresh();
|
|
591
|
-
assert.strictEqual(model.counter, 3);
|
|
592
|
-
assert.strictEqual(model.counter2, 2);
|
|
593
|
-
await assert.rejects(() => store.incrementAttribute(randomUUID(), "counter", 1), StoreNotFoundError);
|
|
594
|
-
}
|
|
595
|
-
async removeAttribute() {
|
|
596
|
-
let store = this.getIdentStore();
|
|
597
|
-
let model = await store.save({ counter: 0, counter2: 12, counter3: 13 });
|
|
598
|
-
await store.removeAttribute(model.getUuid(), "counter");
|
|
599
|
-
await model.refresh();
|
|
600
|
-
assert.strictEqual(model.counter, undefined);
|
|
601
|
-
await assert.rejects(() => store.removeAttribute(randomUUID(), "counter"), StoreNotFoundError);
|
|
602
|
-
await assert.rejects(() => store.removeAttribute(model.getUuid(), "counter2", 10, "counter3"), UpdateConditionFailError);
|
|
603
|
-
await model.refresh();
|
|
604
|
-
assert.strictEqual(model.counter2, 12);
|
|
605
|
-
}
|
|
606
|
-
async setAttribute() {
|
|
607
|
-
let store = this.getIdentStore();
|
|
608
|
-
let model = await store.save({ counter: 0 });
|
|
609
|
-
await store.setAttribute(model.getUuid(), "counter", 3);
|
|
610
|
-
await store.setAttribute(model.getUuid(), "status", "TESTED");
|
|
611
|
-
await model.refresh();
|
|
612
|
-
assert.strictEqual(model.counter, 3);
|
|
613
|
-
assert.strictEqual(model.status, "TESTED");
|
|
614
|
-
await assert.rejects(() => store.setAttribute(randomUUID(), "counter", 4), StoreNotFoundError);
|
|
615
|
-
store.on("Store.PatchUpdate", async () => {
|
|
616
|
-
model._lastUpdate = new Date(100);
|
|
617
|
-
// @ts-ignore
|
|
618
|
-
await store._update(model, model.getUuid());
|
|
619
|
-
});
|
|
620
|
-
await assert.rejects(() => store.setAttribute(model.getUuid(), "counter", 4), UpdateConditionFailError);
|
|
621
|
-
store.removeAllListeners("Store.PatchUpdate");
|
|
622
|
-
store.on("Store.PatchUpdate", async () => {
|
|
623
|
-
// @ts-ignore
|
|
624
|
-
await store._delete(model.getUuid());
|
|
625
|
-
await this.sleep(1);
|
|
626
|
-
});
|
|
627
|
-
await assert.rejects(() => store.setAttribute(model.getUuid(), "counter", 4), err => err instanceof StoreNotFoundError || err instanceof UpdateConditionFailError);
|
|
628
|
-
await assert.rejects(() => store.setAttribute(randomUUID(), "counter", 4), err => err instanceof StoreNotFoundError || err instanceof UpdateConditionFailError);
|
|
629
|
-
}
|
|
630
|
-
async deleteAsync() {
|
|
631
|
-
let store = this.getIdentStore();
|
|
632
|
-
let model = await store.save({ counter: 1 });
|
|
633
|
-
// Delete with condition
|
|
634
|
-
await assert.rejects(() => store.delete(model.getUuid(), 4, "counter"), UpdateConditionFailError);
|
|
635
|
-
await store.delete(model.getUuid(), 1, "counter");
|
|
636
|
-
// Test without condition
|
|
637
|
-
model = await store.save({ counter: 2 });
|
|
638
|
-
await store.delete(model);
|
|
639
|
-
// Deleting a non-existing object should be ignored
|
|
640
|
-
await store.forceDelete(randomUUID());
|
|
641
|
-
}
|
|
642
|
-
async delete() {
|
|
643
|
-
// UserStore is not supposed to be async
|
|
644
|
-
let store = this.getUserStore();
|
|
645
|
-
let model = await store.save({ counter: 1 });
|
|
646
|
-
// Delete with condition
|
|
647
|
-
await assert.rejects(() => store.delete(model.getUuid(), 4, "counter"), UpdateConditionFailError);
|
|
648
|
-
await store.delete(model.getUuid(), 1, "counter");
|
|
649
|
-
// Test without condition
|
|
650
|
-
model = await store.save({ counter: 2 });
|
|
651
|
-
await store.delete(model);
|
|
652
|
-
// Deleting a non-existing object should be ignored
|
|
653
|
-
await store.forceDelete(randomUUID());
|
|
654
|
-
}
|
|
655
|
-
async deleteConcurrent() {
|
|
656
|
-
let store = this.getUserStore();
|
|
657
|
-
let model = await store.save({ counter: 1 });
|
|
658
|
-
store.addListener("Store.Delete", async () => {
|
|
659
|
-
await store.incrementAttribute(model.getUuid(), "counter", 1);
|
|
660
|
-
});
|
|
661
|
-
await assert.rejects(() => store.delete(model.getUuid(), 1, "counter"), UpdateConditionFailError);
|
|
662
|
-
store.removeAllListeners();
|
|
663
|
-
await store.delete(model.getUuid(), 2, "counter");
|
|
664
|
-
}
|
|
665
|
-
async conditionUpdate() {
|
|
666
|
-
let store = this.getIdentStore();
|
|
667
|
-
let model = await store.save({ counter: 1 });
|
|
668
|
-
assert.ok(await store.conditionalPatch(model.getUuid(), {
|
|
669
|
-
plop: 12,
|
|
670
|
-
counter: 2
|
|
671
|
-
}, "counter", 1));
|
|
672
|
-
assert.strictEqual((await store.get(model.getUuid())).plop, 12);
|
|
673
|
-
assert.ok(!(await store.conditionalPatch(model.getUuid(), {
|
|
674
|
-
plop: 13
|
|
675
|
-
}, "counter", 1)));
|
|
676
|
-
assert.strictEqual((await store.get(model.getUuid())).plop, 12);
|
|
677
|
-
// @ts-ignore
|
|
678
|
-
stub(store, "_patch").callsFake(() => {
|
|
679
|
-
throw new Error("Fake Error");
|
|
680
|
-
});
|
|
681
|
-
await assert.rejects(() => store.conditionalPatch(model.getUuid(), {
|
|
682
|
-
plop: 12,
|
|
683
|
-
counter: 2
|
|
684
|
-
}, "counter", 1), /Fake Error/);
|
|
685
|
-
}
|
|
686
|
-
async update(delay = 1) {
|
|
687
|
-
let store = this.getIdentStore();
|
|
688
|
-
let model = await store.save({ counter: 1 });
|
|
689
|
-
model.saveUpdateCompat = true;
|
|
690
|
-
await store.save(model, await this.newContext());
|
|
691
|
-
model.saveInnerMethod = true;
|
|
692
|
-
model.setContext(await this.newContext());
|
|
693
|
-
await model.save();
|
|
694
|
-
let model2 = await store.get(model.getUuid());
|
|
695
|
-
store.on("Store.Update", async () => {
|
|
696
|
-
model2._lastUpdate = new Date(100);
|
|
697
|
-
// @ts-ignore
|
|
698
|
-
await store._update(model2, model2.getUuid());
|
|
699
|
-
});
|
|
700
|
-
model.plop = "yop";
|
|
701
|
-
// Delete with condition
|
|
702
|
-
await assert.rejects(() => store.update(model), UpdateConditionFailError);
|
|
703
|
-
store.removeAllListeners("Store.Update");
|
|
704
|
-
store.on("Store.Update", async () => {
|
|
705
|
-
// @ts-ignore
|
|
706
|
-
await store._delete(model.getUuid());
|
|
707
|
-
await this.sleep(delay);
|
|
708
|
-
});
|
|
709
|
-
await assert.rejects(() => store.update(model), err => err instanceof StoreNotFoundError || err instanceof UpdateConditionFailError);
|
|
710
|
-
await assert.rejects(() => store.update({ uuid: randomUUID(), test: true }), err => err instanceof StoreNotFoundError || err instanceof UpdateConditionFailError);
|
|
711
|
-
}
|
|
712
|
-
async upsertItem() {
|
|
713
|
-
let store = this.getIdentStore();
|
|
714
|
-
this.log("DEBUG", "Save empty logs array");
|
|
715
|
-
let model = await store.save({ logs: [] });
|
|
716
|
-
let ps = [];
|
|
717
|
-
this.log("DEBUG", "Upsert 10 lines");
|
|
718
|
-
for (let i = 0; i < 10; i++) {
|
|
719
|
-
ps.push(store.upsertItemToCollection(model.getUuid(), "logs", `line${i}`));
|
|
720
|
-
}
|
|
721
|
-
await Promise.all(ps);
|
|
722
|
-
await model.refresh();
|
|
723
|
-
assert.strictEqual(model.logs.length, 10);
|
|
724
|
-
// Depending on the implementation it can be swallowed by the backend
|
|
725
|
-
this.log("DEBUG", "Upsert on unknown doc");
|
|
726
|
-
await assert.rejects(() => store.upsertItemToCollection(randomUUID(), "logs", `line`), err => err instanceof StoreNotFoundError || err instanceof UpdateConditionFailError);
|
|
727
|
-
this.log("DEBUG", "Delete on unknown doc");
|
|
728
|
-
await assert.rejects(() => store.deleteItemFromCollection(randomUUID(), "logs", 0, undefined, undefined), err => err instanceof StoreNotFoundError || err instanceof UpdateConditionFailError);
|
|
729
|
-
}
|
|
730
|
-
async put() {
|
|
731
|
-
const store = this.getIdentStore();
|
|
732
|
-
const uuid = store.getWebda().getUuid();
|
|
733
|
-
if (await store.exists(uuid)) {
|
|
734
|
-
await store.delete(uuid);
|
|
735
|
-
}
|
|
736
|
-
await store.put(uuid, { test: true });
|
|
737
|
-
// Verify put acts like a upsert
|
|
738
|
-
await store.put(uuid, { test: false });
|
|
739
|
-
}
|
|
740
|
-
async httpCRUD(url = "/users") {
|
|
741
|
-
let eventFired;
|
|
742
|
-
let userStore = this.getUserStore();
|
|
743
|
-
let ctx, executor;
|
|
744
|
-
await userStore.__clean();
|
|
745
|
-
ctx = await this.newContext({});
|
|
746
|
-
ctx.session.login("PLOP", "fake_ident");
|
|
747
|
-
executor = this.getExecutor(ctx, "test.webda.io", "POST", url, {
|
|
748
|
-
type: "CRUD",
|
|
749
|
-
uuid: "PLOP",
|
|
750
|
-
displayName: "Coucou"
|
|
751
|
-
});
|
|
752
|
-
assert.notStrictEqual(executor, undefined);
|
|
753
|
-
await executor.execute(ctx);
|
|
754
|
-
ctx.body = undefined;
|
|
755
|
-
assert.strictEqual((await userStore.getAll()).length, 1);
|
|
756
|
-
await this.getExecutor(ctx, "test.webda.io", "GET", `${url}/PLOP`).execute(ctx);
|
|
757
|
-
assert.notStrictEqual(ctx.getResponseBody(), undefined);
|
|
758
|
-
assert.strictEqual(ctx.getResponseBody().indexOf("_lastUpdate") >= 0, true);
|
|
759
|
-
executor = this.getExecutor(ctx, "test.webda.io", "POST", url, {
|
|
760
|
-
type: "CRUD2",
|
|
761
|
-
uuid: "PLOP",
|
|
762
|
-
displayName: "Coucou 2"
|
|
763
|
-
});
|
|
764
|
-
await assert.rejects(executor.execute(ctx), (err) => err.getResponseCode() === 409);
|
|
765
|
-
// Verify the none overide of UUID
|
|
766
|
-
await this.execute(ctx, "test.webda.io", "PUT", `${url}/PLOP`, {
|
|
767
|
-
type: "CRUD2",
|
|
768
|
-
additional: "field",
|
|
769
|
-
uuid: "PLOP2",
|
|
770
|
-
user: "fake_user",
|
|
771
|
-
displayName: "Coucou 3",
|
|
772
|
-
roles: []
|
|
773
|
-
});
|
|
774
|
-
let user = await userStore.get("PLOP");
|
|
775
|
-
assert.strictEqual(user.getUuid(), "PLOP");
|
|
776
|
-
assert.strictEqual(user.type, "CRUD2");
|
|
777
|
-
assert.strictEqual(user.additional, "field");
|
|
778
|
-
assert.strictEqual(user.user, "fake_user");
|
|
779
|
-
// Add a role to the user
|
|
780
|
-
user.roles.push("plop");
|
|
781
|
-
await user.save();
|
|
782
|
-
user = await userStore.get("PLOP");
|
|
783
|
-
assert.deepStrictEqual(user.roles, ["plop"]);
|
|
784
|
-
ctx.resetResponse();
|
|
785
|
-
// Check PATH
|
|
786
|
-
await this.execute(ctx, "test.webda.io", "PATCH", `${url}/PLOP`, {
|
|
787
|
-
type: "CRUD3",
|
|
788
|
-
uuid: "PLOP2",
|
|
789
|
-
_testor: "_ should not be update by client"
|
|
790
|
-
});
|
|
791
|
-
user = await userStore.get("PLOP");
|
|
792
|
-
assert.strictEqual(user.uuid, "PLOP");
|
|
793
|
-
assert.strictEqual(user.type, "CRUD3");
|
|
794
|
-
assert.strictEqual(user.additional, "field");
|
|
795
|
-
assert.strictEqual(user._testor, undefined);
|
|
796
|
-
assert.deepStrictEqual(user.roles, ["plop"]);
|
|
797
|
-
executor = this.getExecutor(ctx, "test.webda.io", "PUT", `${url}/PLOP`, {
|
|
798
|
-
type: "CRUD3",
|
|
799
|
-
uuid: "PLOP2",
|
|
800
|
-
_testor: "_ should not be update by client",
|
|
801
|
-
displayName: "yep"
|
|
802
|
-
});
|
|
803
|
-
await executor.execute(ctx);
|
|
804
|
-
user = await userStore.get("PLOP");
|
|
805
|
-
assert.strictEqual(user.uuid, "PLOP");
|
|
806
|
-
assert.strictEqual(user.type, "CRUD3");
|
|
807
|
-
assert.strictEqual(user.additional, undefined);
|
|
808
|
-
assert.strictEqual(user._testor, undefined);
|
|
809
|
-
assert.deepStrictEqual(user.roles, undefined);
|
|
810
|
-
await this.getExecutor(ctx, "test.webda.io", "DELETE", `${url}/PLOP`).execute(ctx);
|
|
811
|
-
eventFired = 0;
|
|
812
|
-
executor = this.getExecutor(ctx, "test.webda.io", "GET", `${url}/PLOP`);
|
|
813
|
-
await assert.rejects(() => executor.execute(ctx), WebdaError.NotFound);
|
|
814
|
-
eventFired++;
|
|
815
|
-
executor = this.getExecutor(ctx, "test.webda.io", "DELETE", `${url}/PLOP`);
|
|
816
|
-
await assert.rejects(() => executor.execute(ctx), WebdaError.NotFound);
|
|
817
|
-
eventFired++;
|
|
818
|
-
executor = this.getExecutor(ctx, "test.webda.io", "PUT", `${url}/PLOP`);
|
|
819
|
-
await assert.rejects(() => executor.execute(ctx), WebdaError.NotFound);
|
|
820
|
-
eventFired++;
|
|
821
|
-
assert.strictEqual(eventFired, 3);
|
|
822
|
-
}
|
|
823
|
-
async modelActions(url = "/idents") {
|
|
824
|
-
let identStore = this.getIdentStore();
|
|
825
|
-
assert.notStrictEqual(identStore.getModel(), undefined);
|
|
826
|
-
let eventFired = 0;
|
|
827
|
-
let executor, ctx;
|
|
828
|
-
identStore.on("Store.Action", evt => {
|
|
829
|
-
eventFired++;
|
|
830
|
-
});
|
|
831
|
-
identStore.on("Store.Actioned", evt => {
|
|
832
|
-
eventFired++;
|
|
833
|
-
});
|
|
834
|
-
ctx = await this.newContext({
|
|
835
|
-
type: "CRUD",
|
|
836
|
-
uuid: "PLOP"
|
|
837
|
-
});
|
|
838
|
-
executor = this.getExecutor(ctx, "test.webda.io", "PUT", `${url}/coucou/plop`);
|
|
839
|
-
assert.notStrictEqual(executor, undefined);
|
|
840
|
-
await assert.rejects(executor.execute(ctx), WebdaError.NotFound);
|
|
841
|
-
await identStore.save({
|
|
842
|
-
uuid: "coucou"
|
|
843
|
-
});
|
|
844
|
-
await executor.execute(ctx);
|
|
845
|
-
// Our fake action is pushing true to _plop
|
|
846
|
-
assert.strictEqual(JSON.parse(ctx.getResponseBody())._plop, true);
|
|
847
|
-
assert.strictEqual(eventFired, 2);
|
|
848
|
-
assert.notStrictEqual(this.getExecutor(ctx, "test.webda.io", "POST", `${url}/coucou/yop`), null);
|
|
849
|
-
executor = this.getExecutor(ctx, "test.webda.io", "GET", `${url}/coucou/yop`);
|
|
850
|
-
assert.notStrictEqual(executor, null);
|
|
851
|
-
// Test with action returning the result instead of writing it
|
|
852
|
-
ctx.resetResponse();
|
|
853
|
-
await executor.execute(ctx);
|
|
854
|
-
assert.strictEqual(ctx.getResponseBody(), "youpi");
|
|
855
|
-
}
|
|
856
|
-
}
|
|
857
|
-
__decorate([
|
|
858
|
-
test
|
|
859
|
-
], StoreTest.prototype, "query", null);
|
|
860
|
-
__decorate([
|
|
861
|
-
test
|
|
862
|
-
], StoreTest.prototype, "queryOrder", null);
|
|
863
|
-
__decorate([
|
|
864
|
-
test
|
|
865
|
-
], StoreTest.prototype, "mapper", null);
|
|
866
|
-
__decorate([
|
|
867
|
-
test
|
|
868
|
-
], StoreTest.prototype, "collection", null);
|
|
869
|
-
__decorate([
|
|
870
|
-
test
|
|
871
|
-
], StoreTest.prototype, "getAll", null);
|
|
872
|
-
__decorate([
|
|
873
|
-
test
|
|
874
|
-
], StoreTest.prototype, "crud", null);
|
|
875
|
-
__decorate([
|
|
876
|
-
test
|
|
877
|
-
], StoreTest.prototype, "exists", null);
|
|
878
|
-
__decorate([
|
|
879
|
-
test
|
|
880
|
-
], StoreTest.prototype, "incrementAttribute", null);
|
|
881
|
-
__decorate([
|
|
882
|
-
test
|
|
883
|
-
], StoreTest.prototype, "removeAttribute", null);
|
|
884
|
-
__decorate([
|
|
885
|
-
test
|
|
886
|
-
], StoreTest.prototype, "setAttribute", null);
|
|
887
|
-
__decorate([
|
|
888
|
-
test
|
|
889
|
-
], StoreTest.prototype, "deleteAsync", null);
|
|
890
|
-
__decorate([
|
|
891
|
-
test
|
|
892
|
-
], StoreTest.prototype, "delete", null);
|
|
893
|
-
__decorate([
|
|
894
|
-
test
|
|
895
|
-
], StoreTest.prototype, "conditionUpdate", null);
|
|
896
|
-
__decorate([
|
|
897
|
-
test
|
|
898
|
-
], StoreTest.prototype, "update", null);
|
|
899
|
-
__decorate([
|
|
900
|
-
test
|
|
901
|
-
], StoreTest.prototype, "upsertItem", null);
|
|
902
|
-
__decorate([
|
|
903
|
-
test
|
|
904
|
-
], StoreTest.prototype, "put", null);
|
|
905
|
-
export { StoreTest };
|
|
906
|
-
//# sourceMappingURL=store.spec.js.map
|