@budibase/backend-core 2.9.39-alpha.0 → 2.9.39-alpha.2
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/dist/package.json +5 -5
- package/dist/src/accounts/accounts.js +100 -0
- package/dist/src/accounts/accounts.js.map +7 -0
- package/dist/src/accounts/api.js +78 -0
- package/dist/src/accounts/api.js.map +7 -0
- package/dist/src/accounts/index.js +23 -0
- package/dist/src/accounts/index.js.map +7 -0
- package/dist/src/auth/auth.js +208 -0
- package/dist/src/auth/auth.js.map +7 -0
- package/dist/src/auth/index.js +23 -0
- package/dist/src/auth/index.js.map +7 -0
- package/dist/src/auth/tests/auth.spec.js +37 -0
- package/dist/src/auth/tests/auth.spec.js.map +7 -0
- package/dist/src/blacklist/blacklist.js +88 -0
- package/dist/src/blacklist/blacklist.js.map +7 -0
- package/dist/src/blacklist/index.js +23 -0
- package/dist/src/blacklist/index.js.map +7 -0
- package/dist/src/blacklist/tests/blacklist.spec.js +61 -0
- package/dist/src/blacklist/tests/blacklist.spec.js.map +7 -0
- package/dist/src/cache/appMetadata.js +86 -0
- package/dist/src/cache/appMetadata.js.map +7 -0
- package/dist/src/cache/base/index.js +102 -0
- package/dist/src/cache/base/index.js.map +7 -0
- package/dist/src/cache/generic.js +69 -0
- package/dist/src/cache/generic.js.map +7 -0
- package/dist/src/cache/index.js +51 -0
- package/dist/src/cache/index.js.map +7 -0
- package/dist/src/cache/tests/writethrough.spec.js +132 -0
- package/dist/src/cache/tests/writethrough.spec.js.map +7 -0
- package/dist/src/cache/user.js +99 -0
- package/dist/src/cache/user.js.map +7 -0
- package/dist/src/cache/writethrough.js +144 -0
- package/dist/src/cache/writethrough.js.map +7 -0
- package/dist/src/configs/configs.js +228 -0
- package/dist/src/configs/configs.js.map +7 -0
- package/dist/src/configs/index.js +23 -0
- package/dist/src/configs/index.js.map +7 -0
- package/dist/src/configs/tests/configs.spec.js +182 -0
- package/dist/src/configs/tests/configs.spec.js.map +7 -0
- package/dist/src/constants/db.js +107 -0
- package/dist/src/constants/db.js.map +7 -0
- package/dist/src/constants/index.js +25 -0
- package/dist/src/constants/index.js.map +7 -0
- package/dist/src/constants/misc.js +92 -0
- package/dist/src/constants/misc.js.map +7 -0
- package/dist/src/context/Context.js +36 -0
- package/dist/src/context/Context.js.map +7 -0
- package/dist/src/context/identity.js +87 -0
- package/dist/src/context/identity.js.map +7 -0
- package/dist/src/context/index.js +45 -0
- package/dist/src/context/index.js.map +7 -0
- package/dist/src/context/mainContext.js +320 -0
- package/dist/src/context/mainContext.js.map +7 -0
- package/dist/src/context/tests/index.spec.js +147 -0
- package/dist/src/context/tests/index.spec.js.map +7 -0
- package/dist/src/context/types.js +17 -0
- package/dist/src/context/types.js.map +7 -0
- package/dist/src/db/Replication.js +89 -0
- package/dist/src/db/Replication.js.map +7 -0
- package/dist/src/db/constants.js +39 -0
- package/dist/src/db/constants.js.map +7 -0
- package/dist/src/db/couch/DatabaseImpl.js +224 -0
- package/dist/src/db/couch/DatabaseImpl.js.map +7 -0
- package/dist/src/db/couch/connections.js +103 -0
- package/dist/src/db/couch/connections.js.map +7 -0
- package/dist/src/db/couch/index.js +44 -0
- package/dist/src/db/couch/index.js.map +7 -0
- package/dist/src/db/couch/pouchDB.js +118 -0
- package/dist/src/db/couch/pouchDB.js.map +7 -0
- package/dist/src/db/couch/pouchDump.js +2 -0
- package/dist/src/db/couch/pouchDump.js.map +7 -0
- package/dist/src/db/couch/utils.js +76 -0
- package/dist/src/db/couch/utils.js.map +7 -0
- package/dist/src/db/db.js +73 -0
- package/dist/src/db/db.js.map +7 -0
- package/dist/src/db/errors.js +43 -0
- package/dist/src/db/errors.js.map +7 -0
- package/dist/src/db/index.js +64 -0
- package/dist/src/db/index.js.map +7 -0
- package/dist/src/db/lucene.js +595 -0
- package/dist/src/db/lucene.js.map +7 -0
- package/dist/src/db/searchIndexes/index.js +23 -0
- package/dist/src/db/searchIndexes/index.js.map +7 -0
- package/dist/src/db/searchIndexes/searchIndexes.js +82 -0
- package/dist/src/db/searchIndexes/searchIndexes.js.map +7 -0
- package/dist/src/db/tests/index.spec.js +24 -0
- package/dist/src/db/tests/index.spec.js.map +7 -0
- package/dist/src/db/tests/lucene.spec.js +312 -0
- package/dist/src/db/tests/lucene.spec.js.map +7 -0
- package/dist/src/db/tests/pouch.spec.js +63 -0
- package/dist/src/db/tests/pouch.spec.js.map +7 -0
- package/dist/src/db/tests/utils.spec.js +50 -0
- package/dist/src/db/tests/utils.spec.js.map +7 -0
- package/dist/src/db/utils.js +198 -0
- package/dist/src/db/utils.js.map +7 -0
- package/dist/src/db/views.js +223 -0
- package/dist/src/db/views.js.map +7 -0
- package/dist/src/docIds/conversions.js +83 -0
- package/dist/src/docIds/conversions.js.map +7 -0
- package/dist/src/docIds/ids.js +101 -0
- package/dist/src/docIds/ids.js.map +7 -0
- package/dist/src/docIds/index.js +25 -0
- package/dist/src/docIds/index.js.map +7 -0
- package/dist/src/docIds/newid.js +32 -0
- package/dist/src/docIds/newid.js.map +7 -0
- package/dist/src/docIds/params.js +136 -0
- package/dist/src/docIds/params.js.map +7 -0
- package/dist/src/docUpdates/index.js +61 -0
- package/dist/src/docUpdates/index.js.map +7 -0
- package/dist/src/environment.js +181 -0
- package/dist/src/environment.js.map +7 -0
- package/dist/src/errors/errors.js +126 -0
- package/dist/src/errors/errors.js.map +7 -0
- package/dist/src/errors/index.js +23 -0
- package/dist/src/errors/index.js.map +7 -0
- package/dist/src/events/analytics.js +42 -0
- package/dist/src/events/analytics.js.map +7 -0
- package/dist/src/events/asyncEvents/index.js +25 -0
- package/dist/src/events/asyncEvents/index.js.map +7 -0
- package/dist/src/events/asyncEvents/publisher.js +39 -0
- package/dist/src/events/asyncEvents/publisher.js.map +7 -0
- package/dist/src/events/asyncEvents/queue.js +42 -0
- package/dist/src/events/asyncEvents/queue.js.map +7 -0
- package/dist/src/events/backfill.js +172 -0
- package/dist/src/events/backfill.js.map +7 -0
- package/dist/src/events/documentId.js +51 -0
- package/dist/src/events/documentId.js.map +7 -0
- package/dist/src/events/events.js +63 -0
- package/dist/src/events/events.js.map +7 -0
- package/dist/src/events/identification.js +275 -0
- package/dist/src/events/identification.js.map +7 -0
- package/dist/src/events/index.js +62 -0
- package/dist/src/events/index.js.map +7 -0
- package/dist/src/events/processors/AnalyticsProcessor.js +76 -0
- package/dist/src/events/processors/AnalyticsProcessor.js.map +7 -0
- package/dist/src/events/processors/AuditLogsProcessor.js +97 -0
- package/dist/src/events/processors/AuditLogsProcessor.js.map +7 -0
- package/dist/src/events/processors/LoggingProcessor.js +58 -0
- package/dist/src/events/processors/LoggingProcessor.js.map +7 -0
- package/dist/src/events/processors/Processors.js +57 -0
- package/dist/src/events/processors/Processors.js.map +7 -0
- package/dist/src/events/processors/async/DocumentUpdateProcessor.js +53 -0
- package/dist/src/events/processors/async/DocumentUpdateProcessor.js.map +7 -0
- package/dist/src/events/processors/index.js +57 -0
- package/dist/src/events/processors/index.js.map +7 -0
- package/dist/src/events/processors/posthog/PosthogProcessor.js +126 -0
- package/dist/src/events/processors/posthog/PosthogProcessor.js.map +7 -0
- package/dist/src/events/processors/posthog/index.js +36 -0
- package/dist/src/events/processors/posthog/index.js.map +7 -0
- package/dist/src/events/processors/posthog/rateLimiting.js +105 -0
- package/dist/src/events/processors/posthog/rateLimiting.js.map +7 -0
- package/dist/src/events/processors/posthog/tests/PosthogProcessor.spec.js +154 -0
- package/dist/src/events/processors/posthog/tests/PosthogProcessor.spec.js.map +7 -0
- package/dist/src/events/processors/types.js +29 -0
- package/dist/src/events/processors/types.js.map +7 -0
- package/dist/src/events/publishers/account.js +49 -0
- package/dist/src/events/publishers/account.js.map +7 -0
- package/dist/src/events/publishers/app.js +145 -0
- package/dist/src/events/publishers/app.js.map +7 -0
- package/dist/src/events/publishers/auditLog.js +42 -0
- package/dist/src/events/publishers/auditLog.js.map +7 -0
- package/dist/src/events/publishers/auth.js +80 -0
- package/dist/src/events/publishers/auth.js.map +7 -0
- package/dist/src/events/publishers/automation.js +111 -0
- package/dist/src/events/publishers/automation.js.map +7 -0
- package/dist/src/events/publishers/backfill.js +92 -0
- package/dist/src/events/publishers/backfill.js.map +7 -0
- package/dist/src/events/publishers/backup.js +49 -0
- package/dist/src/events/publishers/backup.js.map +7 -0
- package/dist/src/events/publishers/datasource.js +59 -0
- package/dist/src/events/publishers/datasource.js.map +7 -0
- package/dist/src/events/publishers/email.js +38 -0
- package/dist/src/events/publishers/email.js.map +7 -0
- package/dist/src/events/publishers/environmentVariable.js +53 -0
- package/dist/src/events/publishers/environmentVariable.js.map +7 -0
- package/dist/src/events/publishers/group.js +105 -0
- package/dist/src/events/publishers/group.js.map +7 -0
- package/dist/src/events/publishers/index.js +108 -0
- package/dist/src/events/publishers/index.js.map +7 -0
- package/dist/src/events/publishers/installation.js +56 -0
- package/dist/src/events/publishers/installation.js.map +7 -0
- package/dist/src/events/publishers/layout.js +42 -0
- package/dist/src/events/publishers/layout.js.map +7 -0
- package/dist/src/events/publishers/license.js +78 -0
- package/dist/src/events/publishers/license.js.map +7 -0
- package/dist/src/events/publishers/org.js +53 -0
- package/dist/src/events/publishers/org.js.map +7 -0
- package/dist/src/events/publishers/plugin.js +61 -0
- package/dist/src/events/publishers/plugin.js.map +7 -0
- package/dist/src/events/publishers/query.js +85 -0
- package/dist/src/events/publishers/query.js.map +7 -0
- package/dist/src/events/publishers/role.js +71 -0
- package/dist/src/events/publishers/role.js.map +7 -0
- package/dist/src/events/publishers/rows.js +43 -0
- package/dist/src/events/publishers/rows.js.map +7 -0
- package/dist/src/events/publishers/screen.js +52 -0
- package/dist/src/events/publishers/screen.js.map +7 -0
- package/dist/src/events/publishers/serve.js +53 -0
- package/dist/src/events/publishers/serve.js.map +7 -0
- package/dist/src/events/publishers/table.js +79 -0
- package/dist/src/events/publishers/table.js.map +7 -0
- package/dist/src/events/publishers/user.js +191 -0
- package/dist/src/events/publishers/user.js.map +7 -0
- package/dist/src/events/publishers/view.js +102 -0
- package/dist/src/events/publishers/view.js.map +7 -0
- package/dist/src/features/index.js +105 -0
- package/dist/src/features/index.js.map +7 -0
- package/dist/src/features/installation.js +42 -0
- package/dist/src/features/installation.js.map +7 -0
- package/dist/src/features/tests/featureFlags.spec.js +86 -0
- package/dist/src/features/tests/featureFlags.spec.js.map +7 -0
- package/dist/src/helpers.js +31 -0
- package/dist/src/helpers.js.map +7 -0
- package/dist/src/index.js +154 -0
- package/dist/src/index.js.map +7 -0
- package/dist/src/installation.js +139 -0
- package/dist/src/installation.js.map +7 -0
- package/dist/src/logging/alerts.js +49 -0
- package/dist/src/logging/alerts.js.map +7 -0
- package/dist/src/logging/correlation/correlation.js +41 -0
- package/dist/src/logging/correlation/correlation.js.map +7 -0
- package/dist/src/logging/correlation/index.js +23 -0
- package/dist/src/logging/correlation/index.js.map +7 -0
- package/dist/src/logging/correlation/middleware.js +37 -0
- package/dist/src/logging/correlation/middleware.js.map +7 -0
- package/dist/src/logging/index.js +48 -0
- package/dist/src/logging/index.js.map +7 -0
- package/dist/src/logging/pino/logger.js +197 -0
- package/dist/src/logging/pino/logger.js.map +7 -0
- package/dist/src/logging/pino/middleware.js +77 -0
- package/dist/src/logging/pino/middleware.js.map +7 -0
- package/dist/src/logging/system.js +110 -0
- package/dist/src/logging/system.js.map +7 -0
- package/dist/src/logging/tests/system.spec.js +59 -0
- package/dist/src/logging/tests/system.spec.js.map +7 -0
- package/dist/src/middleware/adminOnly.js +31 -0
- package/dist/src/middleware/adminOnly.js.map +7 -0
- package/dist/src/middleware/auditLog.js +27 -0
- package/dist/src/middleware/auditLog.js.map +7 -0
- package/dist/src/middleware/authenticated.js +178 -0
- package/dist/src/middleware/authenticated.js.map +7 -0
- package/dist/src/middleware/builderOnly.js +48 -0
- package/dist/src/middleware/builderOnly.js.map +7 -0
- package/dist/src/middleware/builderOrAdmin.js +48 -0
- package/dist/src/middleware/builderOrAdmin.js.map +7 -0
- package/dist/src/middleware/csrf.js +60 -0
- package/dist/src/middleware/csrf.js.map +7 -0
- package/dist/src/middleware/errorHandling.js +62 -0
- package/dist/src/middleware/errorHandling.js.map +7 -0
- package/dist/src/middleware/index.js +95 -0
- package/dist/src/middleware/index.js.map +7 -0
- package/dist/src/middleware/internalApi.js +39 -0
- package/dist/src/middleware/internalApi.js.map +7 -0
- package/dist/src/middleware/joi-validator.js +73 -0
- package/dist/src/middleware/joi-validator.js.map +7 -0
- package/dist/src/middleware/matchers.js +62 -0
- package/dist/src/middleware/matchers.js.map +7 -0
- package/dist/src/middleware/passport/datasource/google.js +103 -0
- package/dist/src/middleware/passport/datasource/google.js.map +7 -0
- package/dist/src/middleware/passport/local.js +73 -0
- package/dist/src/middleware/passport/local.js.map +7 -0
- package/dist/src/middleware/passport/sso/google.js +93 -0
- package/dist/src/middleware/passport/sso/google.js.map +7 -0
- package/dist/src/middleware/passport/sso/oidc.js +135 -0
- package/dist/src/middleware/passport/sso/oidc.js.map +7 -0
- package/dist/src/middleware/passport/sso/sso.js +149 -0
- package/dist/src/middleware/passport/sso/sso.js.map +7 -0
- package/dist/src/middleware/passport/sso/tests/google.spec.js +77 -0
- package/dist/src/middleware/passport/sso/tests/google.spec.js.map +7 -0
- package/dist/src/middleware/passport/sso/tests/oidc.spec.js +143 -0
- package/dist/src/middleware/passport/sso/tests/oidc.spec.js.map +7 -0
- package/dist/src/middleware/passport/sso/tests/sso.spec.js +167 -0
- package/dist/src/middleware/passport/sso/tests/sso.spec.js.map +7 -0
- package/dist/src/middleware/passport/utils.js +62 -0
- package/dist/src/middleware/passport/utils.js.map +7 -0
- package/dist/src/middleware/querystringToBody.js +45 -0
- package/dist/src/middleware/querystringToBody.js.map +7 -0
- package/dist/src/middleware/tenancy.js +46 -0
- package/dist/src/middleware/tenancy.js.map +7 -0
- package/dist/src/middleware/tests/builder.spec.js +169 -0
- package/dist/src/middleware/tests/builder.spec.js.map +7 -0
- package/dist/src/middleware/tests/matchers.spec.js +120 -0
- package/dist/src/middleware/tests/matchers.spec.js.map +7 -0
- package/dist/src/migrations/definitions.js +63 -0
- package/dist/src/migrations/definitions.js.map +7 -0
- package/dist/src/migrations/index.js +25 -0
- package/dist/src/migrations/index.js.map +7 -0
- package/dist/src/migrations/migrations.js +178 -0
- package/dist/src/migrations/migrations.js.map +7 -0
- package/dist/src/migrations/tests/migrations.spec.js +78 -0
- package/dist/src/migrations/tests/migrations.spec.js.map +7 -0
- package/dist/src/objectStore/buckets/app.js +65 -0
- package/dist/src/objectStore/buckets/app.js.map +7 -0
- package/dist/src/objectStore/buckets/global.js +63 -0
- package/dist/src/objectStore/buckets/global.js.map +7 -0
- package/dist/src/objectStore/buckets/index.js +27 -0
- package/dist/src/objectStore/buckets/index.js.map +7 -0
- package/dist/src/objectStore/buckets/plugins.js +101 -0
- package/dist/src/objectStore/buckets/plugins.js.map +7 -0
- package/dist/src/objectStore/buckets/tests/app.spec.js +171 -0
- package/dist/src/objectStore/buckets/tests/app.spec.js.map +7 -0
- package/dist/src/objectStore/buckets/tests/global.spec.js +87 -0
- package/dist/src/objectStore/buckets/tests/global.spec.js.map +7 -0
- package/dist/src/objectStore/buckets/tests/plugins.spec.js +123 -0
- package/dist/src/objectStore/buckets/tests/plugins.spec.js.map +7 -0
- package/dist/src/objectStore/cloudfront.js +74 -0
- package/dist/src/objectStore/cloudfront.js.map +7 -0
- package/dist/src/objectStore/index.js +27 -0
- package/dist/src/objectStore/index.js.map +7 -0
- package/dist/src/objectStore/objectStore.js +372 -0
- package/dist/src/objectStore/objectStore.js.map +7 -0
- package/dist/src/objectStore/utils.js +58 -0
- package/dist/src/objectStore/utils.js.map +7 -0
- package/dist/src/platform/index.js +45 -0
- package/dist/src/platform/index.js.map +7 -0
- package/dist/src/platform/platformDb.js +33 -0
- package/dist/src/platform/platformDb.js.map +7 -0
- package/dist/src/platform/tenants.js +123 -0
- package/dist/src/platform/tenants.js.map +7 -0
- package/dist/src/platform/tests/tenants.spec.js +46 -0
- package/dist/src/platform/tests/tenants.spec.js.map +7 -0
- package/dist/src/platform/users.js +104 -0
- package/dist/src/platform/users.js.map +7 -0
- package/dist/src/plugin/index.js +23 -0
- package/dist/src/plugin/index.js.map +7 -0
- package/dist/src/plugin/tests/validation.spec.js +97 -0
- package/dist/src/plugin/tests/validation.spec.js.map +7 -0
- package/dist/src/plugin/utils.js +153 -0
- package/dist/src/plugin/utils.js.map +7 -0
- package/dist/src/queue/constants.js +35 -0
- package/dist/src/queue/constants.js.map +7 -0
- package/dist/src/queue/inMemoryQueue.js +139 -0
- package/dist/src/queue/inMemoryQueue.js.map +7 -0
- package/dist/src/queue/index.js +25 -0
- package/dist/src/queue/index.js.map +7 -0
- package/dist/src/queue/listeners.js +177 -0
- package/dist/src/queue/listeners.js.map +7 -0
- package/dist/src/queue/queue.js +85 -0
- package/dist/src/queue/queue.js.map +7 -0
- package/dist/src/redis/index.js +48 -0
- package/dist/src/redis/index.js.map +7 -0
- package/dist/src/redis/init.js +128 -0
- package/dist/src/redis/init.js.map +7 -0
- package/dist/src/redis/redis.js +277 -0
- package/dist/src/redis/redis.js.map +7 -0
- package/dist/src/redis/redlockImpl.js +145 -0
- package/dist/src/redis/redlockImpl.js.map +7 -0
- package/dist/src/redis/utils.js +136 -0
- package/dist/src/redis/utils.js.map +7 -0
- package/dist/src/security/encryption.js +184 -0
- package/dist/src/security/encryption.js.map +7 -0
- package/dist/src/security/permissions.js +188 -0
- package/dist/src/security/permissions.js.map +7 -0
- package/dist/src/security/roles.js +337 -0
- package/dist/src/security/roles.js.map +7 -0
- package/dist/src/security/sessions.js +135 -0
- package/dist/src/security/sessions.js.map +7 -0
- package/dist/src/security/tests/encryption.spec.js +51 -0
- package/dist/src/security/tests/encryption.spec.js.map +7 -0
- package/dist/src/security/tests/permissions.spec.js +154 -0
- package/dist/src/security/tests/permissions.spec.js.map +7 -0
- package/dist/src/security/tests/sessions.spec.js +33 -0
- package/dist/src/security/tests/sessions.spec.js.map +7 -0
- package/dist/src/tenancy/db.js +33 -0
- package/dist/src/tenancy/db.js.map +7 -0
- package/dist/src/tenancy/index.js +25 -0
- package/dist/src/tenancy/index.js.map +7 -0
- package/dist/src/tenancy/tenancy.js +129 -0
- package/dist/src/tenancy/tenancy.js.map +7 -0
- package/dist/src/tenancy/tests/tenancy.spec.js +154 -0
- package/dist/src/tenancy/tests/tenancy.spec.js.map +7 -0
- package/dist/src/timers/index.js +23 -0
- package/dist/src/timers/index.js.map +7 -0
- package/dist/src/timers/timers.js +51 -0
- package/dist/src/timers/timers.js.map +7 -0
- package/dist/src/users/db.js +381 -0
- package/dist/src/users/db.js.map +7 -0
- package/dist/src/users/events.js +152 -0
- package/dist/src/users/events.js.map +7 -0
- package/dist/src/users/index.js +36 -0
- package/dist/src/users/index.js.map +7 -0
- package/dist/src/users/lookup.js +110 -0
- package/dist/src/users/lookup.js.map +7 -0
- package/dist/src/users/users.js +257 -0
- package/dist/src/users/users.js.map +7 -0
- package/dist/src/users/utils.js +95 -0
- package/dist/src/users/utils.js.map +7 -0
- package/dist/src/utils/hashing.js +53 -0
- package/dist/src/utils/hashing.js.map +7 -0
- package/dist/src/utils/index.js +27 -0
- package/dist/src/utils/index.js.map +7 -0
- package/dist/src/utils/stringUtils.js +33 -0
- package/dist/src/utils/stringUtils.js.map +7 -0
- package/dist/src/utils/tests/utils.spec.js +165 -0
- package/dist/src/utils/tests/utils.spec.js.map +7 -0
- package/dist/src/utils/utils.js +207 -0
- package/dist/src/utils/utils.js.map +7 -0
- package/dist/tests/core/logging.js +57 -0
- package/dist/tests/core/logging.js.map +7 -0
- package/dist/tests/core/utilities/index.js +54 -0
- package/dist/tests/core/utilities/index.js.map +7 -0
- package/dist/tests/core/utilities/jestUtils.js +50 -0
- package/dist/tests/core/utilities/jestUtils.js.map +7 -0
- package/dist/tests/core/utilities/mocks/alerts.js +41 -0
- package/dist/tests/core/utilities/mocks/alerts.js.map +7 -0
- package/dist/tests/core/utilities/mocks/date.js +32 -0
- package/dist/tests/core/utilities/mocks/date.js.map +7 -0
- package/dist/tests/core/utilities/mocks/events.js +133 -0
- package/dist/tests/core/utilities/mocks/events.js.map +7 -0
- package/dist/tests/core/utilities/mocks/fetch.js +39 -0
- package/dist/tests/core/utilities/mocks/fetch.js.map +7 -0
- package/dist/tests/core/utilities/mocks/index.js +55 -0
- package/dist/tests/core/utilities/mocks/index.js.map +7 -0
- package/dist/tests/core/utilities/mocks/licenses.js +145 -0
- package/dist/tests/core/utilities/mocks/licenses.js.map +7 -0
- package/dist/tests/core/utilities/mocks/posthog.js +9 -0
- package/dist/tests/core/utilities/mocks/posthog.js.map +7 -0
- package/dist/tests/core/utilities/structures/Chance.js +48 -0
- package/dist/tests/core/utilities/structures/Chance.js.map +7 -0
- package/dist/tests/core/utilities/structures/accounts.js +148 -0
- package/dist/tests/core/utilities/structures/accounts.js.map +7 -0
- package/dist/tests/core/utilities/structures/apps.js +47 -0
- package/dist/tests/core/utilities/structures/apps.js.map +7 -0
- package/dist/tests/core/utilities/structures/common.js +35 -0
- package/dist/tests/core/utilities/structures/common.js.map +7 -0
- package/dist/tests/core/utilities/structures/db.js +40 -0
- package/dist/tests/core/utilities/structures/db.js.map +7 -0
- package/dist/tests/core/utilities/structures/documents/index.js +23 -0
- package/dist/tests/core/utilities/structures/documents/index.js.map +7 -0
- package/dist/tests/core/utilities/structures/documents/platform/index.js +39 -0
- package/dist/tests/core/utilities/structures/documents/platform/index.js.map +7 -0
- package/dist/tests/core/utilities/structures/documents/platform/installation.js +48 -0
- package/dist/tests/core/utilities/structures/documents/platform/installation.js.map +7 -0
- package/dist/tests/core/utilities/structures/generator.js +40 -0
- package/dist/tests/core/utilities/structures/generator.js.map +7 -0
- package/dist/tests/core/utilities/structures/index.js +81 -0
- package/dist/tests/core/utilities/structures/index.js.map +7 -0
- package/dist/tests/core/utilities/structures/koa.js +42 -0
- package/dist/tests/core/utilities/structures/koa.js.map +7 -0
- package/dist/tests/core/utilities/structures/licenses.js +175 -0
- package/dist/tests/core/utilities/structures/licenses.js.map +7 -0
- package/dist/tests/core/utilities/structures/plugins.js +46 -0
- package/dist/tests/core/utilities/structures/plugins.js.map +7 -0
- package/dist/tests/core/utilities/structures/quotas.js +94 -0
- package/dist/tests/core/utilities/structures/quotas.js.map +7 -0
- package/dist/tests/core/utilities/structures/scim.js +90 -0
- package/dist/tests/core/utilities/structures/scim.js.map +7 -0
- package/dist/tests/core/utilities/structures/shared.js +46 -0
- package/dist/tests/core/utilities/structures/shared.js.map +7 -0
- package/dist/tests/core/utilities/structures/sso.js +144 -0
- package/dist/tests/core/utilities/structures/sso.js.map +7 -0
- package/dist/tests/core/utilities/structures/tenants.js +32 -0
- package/dist/tests/core/utilities/structures/tenants.js.map +7 -0
- package/dist/tests/core/utilities/structures/userGroups.js +36 -0
- package/dist/tests/core/utilities/structures/userGroups.js.map +7 -0
- package/dist/tests/core/utilities/structures/users.js +96 -0
- package/dist/tests/core/utilities/structures/users.js.map +7 -0
- package/dist/tests/core/utilities/testContainerUtils.js +100 -0
- package/dist/tests/core/utilities/testContainerUtils.js.map +7 -0
- package/dist/tests/core/utilities/utils/index.js +39 -0
- package/dist/tests/core/utilities/utils/index.js.map +7 -0
- package/dist/tests/core/utilities/utils/time.js +31 -0
- package/dist/tests/core/utilities/utils/time.js.map +7 -0
- package/dist/tests/extra/DBTestConfiguration.js +61 -0
- package/dist/tests/extra/DBTestConfiguration.js.map +7 -0
- package/dist/tests/extra/index.js +42 -0
- package/dist/tests/extra/index.js.map +7 -0
- package/dist/tests/extra/testEnv.js +106 -0
- package/dist/tests/extra/testEnv.js.map +7 -0
- package/dist/tests/index.js +23 -0
- package/dist/tests/index.js.map +7 -0
- package/dist/tests/jestEnv.js +8 -0
- package/dist/tests/jestEnv.js.map +7 -0
- package/dist/tests/jestSetup.js +41 -0
- package/dist/tests/jestSetup.js.map +7 -0
- package/package.json +5 -5
- package/dist/tests.js +0 -8467
- package/dist/tests.js.map +0 -7
- package/dist/tests.js.meta.json +0 -1
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
|
+
for (let key of __getOwnPropNames(from))
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
12
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
|
+
}
|
|
14
|
+
return to;
|
|
15
|
+
};
|
|
16
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
17
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
18
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
19
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
20
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var import_extra = require("../../../tests/extra");
|
|
25
|
+
var import_tests = require("../../../tests");
|
|
26
|
+
var import_writethrough = require("../writethrough");
|
|
27
|
+
var import_db = require("../../db");
|
|
28
|
+
var import_timekeeper = __toESM(require("timekeeper"));
|
|
29
|
+
import_timekeeper.default.freeze(Date.now());
|
|
30
|
+
const DELAY = 5e3;
|
|
31
|
+
describe("writethrough", () => {
|
|
32
|
+
const config = new import_extra.DBTestConfiguration();
|
|
33
|
+
const db = (0, import_db.getDB)(import_tests.structures.db.id());
|
|
34
|
+
const db2 = (0, import_db.getDB)(import_tests.structures.db.id());
|
|
35
|
+
const writethrough = new import_writethrough.Writethrough(db, DELAY);
|
|
36
|
+
const writethrough2 = new import_writethrough.Writethrough(db2, DELAY);
|
|
37
|
+
const docId = import_tests.structures.uuid();
|
|
38
|
+
beforeEach(() => {
|
|
39
|
+
jest.clearAllMocks();
|
|
40
|
+
});
|
|
41
|
+
describe("put", () => {
|
|
42
|
+
let current;
|
|
43
|
+
it("should be able to store, will go to DB", async () => {
|
|
44
|
+
await config.doInTenant(async () => {
|
|
45
|
+
const response = await writethrough.put({
|
|
46
|
+
_id: docId,
|
|
47
|
+
value: 1
|
|
48
|
+
});
|
|
49
|
+
const output = await db.get(response.id);
|
|
50
|
+
current = output;
|
|
51
|
+
expect(output.value).toBe(1);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
it("second put shouldn't update DB", async () => {
|
|
55
|
+
await config.doInTenant(async () => {
|
|
56
|
+
const response = await writethrough.put({ ...current, value: 2 });
|
|
57
|
+
const output = await db.get(response.id);
|
|
58
|
+
expect(current._rev).toBe(output._rev);
|
|
59
|
+
expect(output.value).toBe(1);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
it("should put it again after delay period", async () => {
|
|
63
|
+
await config.doInTenant(async () => {
|
|
64
|
+
import_timekeeper.default.freeze(Date.now() + DELAY + 1);
|
|
65
|
+
const response = await writethrough.put({ ...current, value: 3 });
|
|
66
|
+
const output = await db.get(response.id);
|
|
67
|
+
expect(response.rev).not.toBe(current._rev);
|
|
68
|
+
expect(output.value).toBe(3);
|
|
69
|
+
current = output;
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
it("should handle parallel DB updates ignoring conflicts", async () => {
|
|
73
|
+
await config.doInTenant(async () => {
|
|
74
|
+
import_timekeeper.default.freeze(Date.now() + DELAY + 1);
|
|
75
|
+
const responses = await Promise.all([
|
|
76
|
+
writethrough.put({ ...current, value: 4 }),
|
|
77
|
+
writethrough.put({ ...current, value: 4 }),
|
|
78
|
+
writethrough.put({ ...current, value: 4 })
|
|
79
|
+
]);
|
|
80
|
+
const newRev = responses.map((x) => x.rev).find((x) => x !== current._rev);
|
|
81
|
+
expect(newRev).toBeDefined();
|
|
82
|
+
expect(responses.map((x) => x.rev)).toEqual(
|
|
83
|
+
expect.arrayContaining([current._rev, current._rev, newRev])
|
|
84
|
+
);
|
|
85
|
+
const output = await db.get(current._id);
|
|
86
|
+
expect(output.value).toBe(4);
|
|
87
|
+
expect(output._rev).toBe(newRev);
|
|
88
|
+
current = output;
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
it("should handle updates with documents falling behind", async () => {
|
|
92
|
+
await config.doInTenant(async () => {
|
|
93
|
+
import_timekeeper.default.freeze(Date.now() + DELAY + 1);
|
|
94
|
+
const id = import_tests.structures.uuid();
|
|
95
|
+
await writethrough.put({ _id: id, value: 1 });
|
|
96
|
+
const doc = await writethrough.get(id);
|
|
97
|
+
import_timekeeper.default.freeze(Date.now() + DELAY + 1);
|
|
98
|
+
await writethrough.put({ ...doc, value: 2 });
|
|
99
|
+
import_timekeeper.default.freeze(Date.now() + DELAY + 1);
|
|
100
|
+
const res = await writethrough.put({
|
|
101
|
+
...doc,
|
|
102
|
+
value: 3
|
|
103
|
+
});
|
|
104
|
+
expect(res.ok).toBe(true);
|
|
105
|
+
const output = await db.get(id);
|
|
106
|
+
expect(output.value).toBe(3);
|
|
107
|
+
expect(output._rev).toBe(res.rev);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
describe("get", () => {
|
|
112
|
+
it("should be able to retrieve", async () => {
|
|
113
|
+
await config.doInTenant(async () => {
|
|
114
|
+
const response = await writethrough.get(docId);
|
|
115
|
+
expect(response.value).toBe(4);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe("same doc, different databases (tenancy)", () => {
|
|
120
|
+
it("should be able to two different databases", async () => {
|
|
121
|
+
await config.doInTenant(async () => {
|
|
122
|
+
const resp1 = await writethrough.put({ _id: "db1", value: "first" });
|
|
123
|
+
const resp2 = await writethrough2.put({ _id: "db1", value: "second" });
|
|
124
|
+
expect(resp1.rev).toBeDefined();
|
|
125
|
+
expect(resp2.rev).toBeDefined();
|
|
126
|
+
expect((await db.get("db1")).value).toBe("first");
|
|
127
|
+
expect((await db2.get("db1")).value).toBe("second");
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
//# sourceMappingURL=writethrough.spec.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/cache/tests/writethrough.spec.ts"],
|
|
4
|
+
"sourcesContent": ["import { DBTestConfiguration } from \"../../../tests/extra\"\nimport {\n structures,\n expectFunctionWasCalledTimesWith,\n mocks,\n} from \"../../../tests\"\nimport { Writethrough } from \"../writethrough\"\nimport { getDB } from \"../../db\"\nimport tk from \"timekeeper\"\n\ntk.freeze(Date.now())\n\nconst DELAY = 5000\n\ndescribe(\"writethrough\", () => {\n const config = new DBTestConfiguration()\n\n const db = getDB(structures.db.id())\n const db2 = getDB(structures.db.id())\n\n const writethrough = new Writethrough(db, DELAY)\n const writethrough2 = new Writethrough(db2, DELAY)\n\n const docId = structures.uuid()\n\n beforeEach(() => {\n jest.clearAllMocks()\n })\n\n describe(\"put\", () => {\n let current: any\n\n it(\"should be able to store, will go to DB\", async () => {\n await config.doInTenant(async () => {\n const response = await writethrough.put({\n _id: docId,\n value: 1,\n })\n const output = await db.get<any>(response.id)\n current = output\n expect(output.value).toBe(1)\n })\n })\n\n it(\"second put shouldn't update DB\", async () => {\n await config.doInTenant(async () => {\n const response = await writethrough.put({ ...current, value: 2 })\n const output = await db.get<any>(response.id)\n expect(current._rev).toBe(output._rev)\n expect(output.value).toBe(1)\n })\n })\n\n it(\"should put it again after delay period\", async () => {\n await config.doInTenant(async () => {\n tk.freeze(Date.now() + DELAY + 1)\n const response = await writethrough.put({ ...current, value: 3 })\n const output = await db.get<any>(response.id)\n expect(response.rev).not.toBe(current._rev)\n expect(output.value).toBe(3)\n\n current = output\n })\n })\n\n it(\"should handle parallel DB updates ignoring conflicts\", async () => {\n await config.doInTenant(async () => {\n tk.freeze(Date.now() + DELAY + 1)\n const responses = await Promise.all([\n writethrough.put({ ...current, value: 4 }),\n writethrough.put({ ...current, value: 4 }),\n writethrough.put({ ...current, value: 4 }),\n ])\n\n // with a lock, this will work\n const newRev = responses.map(x => x.rev).find(x => x !== current._rev)\n expect(newRev).toBeDefined()\n expect(responses.map(x => x.rev)).toEqual(\n expect.arrayContaining([current._rev, current._rev, newRev])\n )\n\n const output = await db.get<any>(current._id)\n expect(output.value).toBe(4)\n expect(output._rev).toBe(newRev)\n\n current = output\n })\n })\n\n it(\"should handle updates with documents falling behind\", async () => {\n await config.doInTenant(async () => {\n tk.freeze(Date.now() + DELAY + 1)\n\n const id = structures.uuid()\n await writethrough.put({ _id: id, value: 1 })\n const doc = await writethrough.get(id)\n\n // Updating document\n tk.freeze(Date.now() + DELAY + 1)\n await writethrough.put({ ...doc, value: 2 })\n\n // Update with the old rev value\n tk.freeze(Date.now() + DELAY + 1)\n const res = await writethrough.put({\n ...doc,\n value: 3,\n })\n expect(res.ok).toBe(true)\n\n const output = await db.get<any>(id)\n expect(output.value).toBe(3)\n expect(output._rev).toBe(res.rev)\n })\n })\n })\n\n describe(\"get\", () => {\n it(\"should be able to retrieve\", async () => {\n await config.doInTenant(async () => {\n const response = await writethrough.get(docId)\n expect(response.value).toBe(4)\n })\n })\n })\n\n describe(\"same doc, different databases (tenancy)\", () => {\n it(\"should be able to two different databases\", async () => {\n await config.doInTenant(async () => {\n const resp1 = await writethrough.put({ _id: \"db1\", value: \"first\" })\n const resp2 = await writethrough2.put({ _id: \"db1\", value: \"second\" })\n expect(resp1.rev).toBeDefined()\n expect(resp2.rev).toBeDefined()\n expect((await db.get<any>(\"db1\")).value).toBe(\"first\")\n expect((await db2.get<any>(\"db1\")).value).toBe(\"second\")\n })\n })\n })\n})\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA,mBAAoC;AACpC,mBAIO;AACP,0BAA6B;AAC7B,gBAAsB;AACtB,wBAAe;AAEf,kBAAAA,QAAG,OAAO,KAAK,IAAI,CAAC;AAEpB,MAAM,QAAQ;AAEd,SAAS,gBAAgB,MAAM;AAC7B,QAAM,SAAS,IAAI,iCAAoB;AAEvC,QAAM,SAAK,iBAAM,wBAAW,GAAG,GAAG,CAAC;AACnC,QAAM,UAAM,iBAAM,wBAAW,GAAG,GAAG,CAAC;AAEpC,QAAM,eAAe,IAAI,iCAAa,IAAI,KAAK;AAC/C,QAAM,gBAAgB,IAAI,iCAAa,KAAK,KAAK;AAEjD,QAAM,QAAQ,wBAAW,KAAK;AAE9B,aAAW,MAAM;AACf,SAAK,cAAc;AAAA,EACrB,CAAC;AAED,WAAS,OAAO,MAAM;AACpB,QAAI;AAEJ,OAAG,0CAA0C,YAAY;AACvD,YAAM,OAAO,WAAW,YAAY;AAClC,cAAM,WAAW,MAAM,aAAa,IAAI;AAAA,UACtC,KAAK;AAAA,UACL,OAAO;AAAA,QACT,CAAC;AACD,cAAM,SAAS,MAAM,GAAG,IAAS,SAAS,EAAE;AAC5C,kBAAU;AACV,eAAO,OAAO,KAAK,EAAE,KAAK,CAAC;AAAA,MAC7B,CAAC;AAAA,IACH,CAAC;AAED,OAAG,kCAAkC,YAAY;AAC/C,YAAM,OAAO,WAAW,YAAY;AAClC,cAAM,WAAW,MAAM,aAAa,IAAI,EAAE,GAAG,SAAS,OAAO,EAAE,CAAC;AAChE,cAAM,SAAS,MAAM,GAAG,IAAS,SAAS,EAAE;AAC5C,eAAO,QAAQ,IAAI,EAAE,KAAK,OAAO,IAAI;AACrC,eAAO,OAAO,KAAK,EAAE,KAAK,CAAC;AAAA,MAC7B,CAAC;AAAA,IACH,CAAC;AAED,OAAG,0CAA0C,YAAY;AACvD,YAAM,OAAO,WAAW,YAAY;AAClC,0BAAAA,QAAG,OAAO,KAAK,IAAI,IAAI,QAAQ,CAAC;AAChC,cAAM,WAAW,MAAM,aAAa,IAAI,EAAE,GAAG,SAAS,OAAO,EAAE,CAAC;AAChE,cAAM,SAAS,MAAM,GAAG,IAAS,SAAS,EAAE;AAC5C,eAAO,SAAS,GAAG,EAAE,IAAI,KAAK,QAAQ,IAAI;AAC1C,eAAO,OAAO,KAAK,EAAE,KAAK,CAAC;AAE3B,kBAAU;AAAA,MACZ,CAAC;AAAA,IACH,CAAC;AAED,OAAG,wDAAwD,YAAY;AACrE,YAAM,OAAO,WAAW,YAAY;AAClC,0BAAAA,QAAG,OAAO,KAAK,IAAI,IAAI,QAAQ,CAAC;AAChC,cAAM,YAAY,MAAM,QAAQ,IAAI;AAAA,UAClC,aAAa,IAAI,EAAE,GAAG,SAAS,OAAO,EAAE,CAAC;AAAA,UACzC,aAAa,IAAI,EAAE,GAAG,SAAS,OAAO,EAAE,CAAC;AAAA,UACzC,aAAa,IAAI,EAAE,GAAG,SAAS,OAAO,EAAE,CAAC;AAAA,QAC3C,CAAC;AAGD,cAAM,SAAS,UAAU,IAAI,OAAK,EAAE,GAAG,EAAE,KAAK,OAAK,MAAM,QAAQ,IAAI;AACrE,eAAO,MAAM,EAAE,YAAY;AAC3B,eAAO,UAAU,IAAI,OAAK,EAAE,GAAG,CAAC,EAAE;AAAA,UAChC,OAAO,gBAAgB,CAAC,QAAQ,MAAM,QAAQ,MAAM,MAAM,CAAC;AAAA,QAC7D;AAEA,cAAM,SAAS,MAAM,GAAG,IAAS,QAAQ,GAAG;AAC5C,eAAO,OAAO,KAAK,EAAE,KAAK,CAAC;AAC3B,eAAO,OAAO,IAAI,EAAE,KAAK,MAAM;AAE/B,kBAAU;AAAA,MACZ,CAAC;AAAA,IACH,CAAC;AAED,OAAG,uDAAuD,YAAY;AACpE,YAAM,OAAO,WAAW,YAAY;AAClC,0BAAAA,QAAG,OAAO,KAAK,IAAI,IAAI,QAAQ,CAAC;AAEhC,cAAM,KAAK,wBAAW,KAAK;AAC3B,cAAM,aAAa,IAAI,EAAE,KAAK,IAAI,OAAO,EAAE,CAAC;AAC5C,cAAM,MAAM,MAAM,aAAa,IAAI,EAAE;AAGrC,0BAAAA,QAAG,OAAO,KAAK,IAAI,IAAI,QAAQ,CAAC;AAChC,cAAM,aAAa,IAAI,EAAE,GAAG,KAAK,OAAO,EAAE,CAAC;AAG3C,0BAAAA,QAAG,OAAO,KAAK,IAAI,IAAI,QAAQ,CAAC;AAChC,cAAM,MAAM,MAAM,aAAa,IAAI;AAAA,UACjC,GAAG;AAAA,UACH,OAAO;AAAA,QACT,CAAC;AACD,eAAO,IAAI,EAAE,EAAE,KAAK,IAAI;AAExB,cAAM,SAAS,MAAM,GAAG,IAAS,EAAE;AACnC,eAAO,OAAO,KAAK,EAAE,KAAK,CAAC;AAC3B,eAAO,OAAO,IAAI,EAAE,KAAK,IAAI,GAAG;AAAA,MAClC,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AAED,WAAS,OAAO,MAAM;AACpB,OAAG,8BAA8B,YAAY;AAC3C,YAAM,OAAO,WAAW,YAAY;AAClC,cAAM,WAAW,MAAM,aAAa,IAAI,KAAK;AAC7C,eAAO,SAAS,KAAK,EAAE,KAAK,CAAC;AAAA,MAC/B,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AAED,WAAS,2CAA2C,MAAM;AACxD,OAAG,6CAA6C,YAAY;AAC1D,YAAM,OAAO,WAAW,YAAY;AAClC,cAAM,QAAQ,MAAM,aAAa,IAAI,EAAE,KAAK,OAAO,OAAO,QAAQ,CAAC;AACnE,cAAM,QAAQ,MAAM,cAAc,IAAI,EAAE,KAAK,OAAO,OAAO,SAAS,CAAC;AACrE,eAAO,MAAM,GAAG,EAAE,YAAY;AAC9B,eAAO,MAAM,GAAG,EAAE,YAAY;AAC9B,gBAAQ,MAAM,GAAG,IAAS,KAAK,GAAG,KAAK,EAAE,KAAK,OAAO;AACrD,gBAAQ,MAAM,IAAI,IAAS,KAAK,GAAG,KAAK,EAAE,KAAK,QAAQ;AAAA,MACzD,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACH,CAAC;",
|
|
6
|
+
"names": ["tk"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var user_exports = {};
|
|
30
|
+
__export(user_exports, {
|
|
31
|
+
getUser: () => getUser,
|
|
32
|
+
invalidateUser: () => invalidateUser
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(user_exports);
|
|
35
|
+
var redis = __toESM(require("../redis/init"));
|
|
36
|
+
var tenancy = __toESM(require("../tenancy"));
|
|
37
|
+
var context = __toESM(require("../context"));
|
|
38
|
+
var platform = __toESM(require("../platform"));
|
|
39
|
+
var import_environment = __toESM(require("../environment"));
|
|
40
|
+
var accounts = __toESM(require("../accounts"));
|
|
41
|
+
var import_users = require("../users");
|
|
42
|
+
var import_shared_core = require("@budibase/shared-core");
|
|
43
|
+
const EXPIRY_SECONDS = 3600;
|
|
44
|
+
async function populateFromDB(userId, tenantId) {
|
|
45
|
+
const db = tenancy.getTenantDB(tenantId);
|
|
46
|
+
const user = await db.get(userId);
|
|
47
|
+
user.budibaseAccess = true;
|
|
48
|
+
if (!import_environment.default.SELF_HOSTED && !import_environment.default.DISABLE_ACCOUNT_PORTAL) {
|
|
49
|
+
const account = await accounts.getAccount(user.email);
|
|
50
|
+
if (account) {
|
|
51
|
+
user.account = account;
|
|
52
|
+
user.accountPortalAccess = true;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return user;
|
|
56
|
+
}
|
|
57
|
+
async function getUser(userId, tenantId, populateUser) {
|
|
58
|
+
if (!populateUser) {
|
|
59
|
+
populateUser = populateFromDB;
|
|
60
|
+
}
|
|
61
|
+
if (!tenantId) {
|
|
62
|
+
try {
|
|
63
|
+
tenantId = context.getTenantId();
|
|
64
|
+
} catch (err) {
|
|
65
|
+
tenantId = await platform.users.lookupTenantId(userId);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const client = await redis.getUserClient();
|
|
69
|
+
let user = await client.get(userId);
|
|
70
|
+
if (!user) {
|
|
71
|
+
user = await populateUser(userId, tenantId);
|
|
72
|
+
await client.store(userId, user, EXPIRY_SECONDS);
|
|
73
|
+
}
|
|
74
|
+
if (user && !user.tenantId && tenantId) {
|
|
75
|
+
user.tenantId = tenantId;
|
|
76
|
+
}
|
|
77
|
+
if (user.userGroups && !import_shared_core.sdk.users.isGlobalBuilder(user)) {
|
|
78
|
+
await context.doInTenant(tenantId, async () => {
|
|
79
|
+
const appIds = await import_users.UserDB.getGroupBuilderAppIds(user);
|
|
80
|
+
if (appIds.length) {
|
|
81
|
+
const existing = user.builder?.apps || [];
|
|
82
|
+
user.builder = {
|
|
83
|
+
apps: [...new Set(existing.concat(appIds))]
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return user;
|
|
89
|
+
}
|
|
90
|
+
async function invalidateUser(userId) {
|
|
91
|
+
const client = await redis.getUserClient();
|
|
92
|
+
await client.delete(userId);
|
|
93
|
+
}
|
|
94
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
95
|
+
0 && (module.exports = {
|
|
96
|
+
getUser,
|
|
97
|
+
invalidateUser
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=user.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/cache/user.ts"],
|
|
4
|
+
"sourcesContent": ["import * as redis from \"../redis/init\"\nimport * as tenancy from \"../tenancy\"\nimport * as context from \"../context\"\nimport * as platform from \"../platform\"\nimport env from \"../environment\"\nimport * as accounts from \"../accounts\"\nimport { UserDB } from \"../users\"\nimport { sdk } from \"@budibase/shared-core\"\n\nconst EXPIRY_SECONDS = 3600\n\n/**\n * The default populate user function\n */\nasync function populateFromDB(userId: string, tenantId: string) {\n const db = tenancy.getTenantDB(tenantId)\n const user = await db.get<any>(userId)\n user.budibaseAccess = true\n if (!env.SELF_HOSTED && !env.DISABLE_ACCOUNT_PORTAL) {\n const account = await accounts.getAccount(user.email)\n if (account) {\n user.account = account\n user.accountPortalAccess = true\n }\n }\n\n return user\n}\n\n/**\n * Get the requested user by id.\n * Use redis cache to first read the user.\n * If not present fallback to loading the user directly and re-caching.\n * @param {*} userId the id of the user to get\n * @param {*} tenantId the tenant of the user to get\n * @param {*} populateUser function to provide the user for re-caching. default to couch db\n * @returns\n */\nexport async function getUser(\n userId: string,\n tenantId?: string,\n populateUser?: any\n) {\n if (!populateUser) {\n populateUser = populateFromDB\n }\n if (!tenantId) {\n try {\n tenantId = context.getTenantId()\n } catch (err) {\n tenantId = await platform.users.lookupTenantId(userId)\n }\n }\n const client = await redis.getUserClient()\n // try cache\n let user = await client.get(userId)\n if (!user) {\n user = await populateUser(userId, tenantId)\n await client.store(userId, user, EXPIRY_SECONDS)\n }\n if (user && !user.tenantId && tenantId) {\n // make sure the tenant ID is always correct/set\n user.tenantId = tenantId\n }\n // if has groups, could have builder permissions granted by a group\n if (user.userGroups && !sdk.users.isGlobalBuilder(user)) {\n await context.doInTenant(tenantId, async () => {\n const appIds = await UserDB.getGroupBuilderAppIds(user)\n if (appIds.length) {\n const existing = user.builder?.apps || []\n user.builder = {\n apps: [...new Set(existing.concat(appIds))],\n }\n }\n })\n }\n return user\n}\n\nexport async function invalidateUser(userId: string) {\n const client = await redis.getUserClient()\n await client.delete(userId)\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAuB;AACvB,cAAyB;AACzB,cAAyB;AACzB,eAA0B;AAC1B,yBAAgB;AAChB,eAA0B;AAC1B,mBAAuB;AACvB,yBAAoB;AAEpB,MAAM,iBAAiB;AAKvB,eAAe,eAAe,QAAgB,UAAkB;AAC9D,QAAM,KAAK,QAAQ,YAAY,QAAQ;AACvC,QAAM,OAAO,MAAM,GAAG,IAAS,MAAM;AACrC,OAAK,iBAAiB;AACtB,MAAI,CAAC,mBAAAA,QAAI,eAAe,CAAC,mBAAAA,QAAI,wBAAwB;AACnD,UAAM,UAAU,MAAM,SAAS,WAAW,KAAK,KAAK;AACpD,QAAI,SAAS;AACX,WAAK,UAAU;AACf,WAAK,sBAAsB;AAAA,IAC7B;AAAA,EACF;AAEA,SAAO;AACT;AAWA,eAAsB,QACpB,QACA,UACA,cACA;AACA,MAAI,CAAC,cAAc;AACjB,mBAAe;AAAA,EACjB;AACA,MAAI,CAAC,UAAU;AACb,QAAI;AACF,iBAAW,QAAQ,YAAY;AAAA,IACjC,SAAS,KAAK;AACZ,iBAAW,MAAM,SAAS,MAAM,eAAe,MAAM;AAAA,IACvD;AAAA,EACF;AACA,QAAM,SAAS,MAAM,MAAM,cAAc;AAEzC,MAAI,OAAO,MAAM,OAAO,IAAI,MAAM;AAClC,MAAI,CAAC,MAAM;AACT,WAAO,MAAM,aAAa,QAAQ,QAAQ;AAC1C,UAAM,OAAO,MAAM,QAAQ,MAAM,cAAc;AAAA,EACjD;AACA,MAAI,QAAQ,CAAC,KAAK,YAAY,UAAU;AAEtC,SAAK,WAAW;AAAA,EAClB;AAEA,MAAI,KAAK,cAAc,CAAC,uBAAI,MAAM,gBAAgB,IAAI,GAAG;AACvD,UAAM,QAAQ,WAAW,UAAU,YAAY;AAC7C,YAAM,SAAS,MAAM,oBAAO,sBAAsB,IAAI;AACtD,UAAI,OAAO,QAAQ;AACjB,cAAM,WAAW,KAAK,SAAS,QAAQ,CAAC;AACxC,aAAK,UAAU;AAAA,UACb,MAAM,CAAC,GAAG,IAAI,IAAI,SAAS,OAAO,MAAM,CAAC,CAAC;AAAA,QAC5C;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEA,eAAsB,eAAe,QAAgB;AACnD,QAAM,SAAS,MAAM,MAAM,cAAc;AACzC,QAAM,OAAO,OAAO,MAAM;AAC5B;",
|
|
6
|
+
"names": ["env"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var writethrough_exports = {};
|
|
30
|
+
__export(writethrough_exports, {
|
|
31
|
+
Writethrough: () => Writethrough
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(writethrough_exports);
|
|
34
|
+
var import_base = __toESM(require("./base"));
|
|
35
|
+
var import_init = require("../redis/init");
|
|
36
|
+
var import_logging = require("../logging");
|
|
37
|
+
var import_types = require("@budibase/types");
|
|
38
|
+
var locks = __toESM(require("../redis/redlockImpl"));
|
|
39
|
+
const DEFAULT_WRITE_RATE_MS = 1e4;
|
|
40
|
+
let CACHE = null;
|
|
41
|
+
async function getCache() {
|
|
42
|
+
if (!CACHE) {
|
|
43
|
+
const client = await (0, import_init.getWritethroughClient)();
|
|
44
|
+
CACHE = new import_base.default(client);
|
|
45
|
+
}
|
|
46
|
+
return CACHE;
|
|
47
|
+
}
|
|
48
|
+
function makeCacheKey(db, key) {
|
|
49
|
+
return db.name + key;
|
|
50
|
+
}
|
|
51
|
+
function makeCacheItem(doc, lastWrite = null) {
|
|
52
|
+
return { doc, lastWrite: lastWrite || Date.now() };
|
|
53
|
+
}
|
|
54
|
+
async function put(db, doc, writeRateMs = DEFAULT_WRITE_RATE_MS) {
|
|
55
|
+
const cache = await getCache();
|
|
56
|
+
const key = doc._id;
|
|
57
|
+
let cacheItem;
|
|
58
|
+
if (key) {
|
|
59
|
+
cacheItem = await cache.get(makeCacheKey(db, key));
|
|
60
|
+
}
|
|
61
|
+
const updateDb = !cacheItem || cacheItem.lastWrite < Date.now() - writeRateMs;
|
|
62
|
+
let output = doc;
|
|
63
|
+
if (updateDb) {
|
|
64
|
+
const lockResponse = await locks.doWithLock(
|
|
65
|
+
{
|
|
66
|
+
type: import_types.LockType.TRY_ONCE,
|
|
67
|
+
name: import_types.LockName.PERSIST_WRITETHROUGH,
|
|
68
|
+
resource: key,
|
|
69
|
+
ttl: 15e3
|
|
70
|
+
},
|
|
71
|
+
async () => {
|
|
72
|
+
const writeDb = async (toWrite) => {
|
|
73
|
+
const response = await db.put(toWrite, { force: true });
|
|
74
|
+
output = {
|
|
75
|
+
...doc,
|
|
76
|
+
_id: response.id,
|
|
77
|
+
_rev: response.rev
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
try {
|
|
81
|
+
await writeDb(doc);
|
|
82
|
+
} catch (err) {
|
|
83
|
+
if (err.status !== 409) {
|
|
84
|
+
throw err;
|
|
85
|
+
} else {
|
|
86
|
+
(0, import_logging.logWarn)(`Ignoring conflict in write-through cache`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
);
|
|
91
|
+
if (!lockResponse.executed) {
|
|
92
|
+
(0, import_logging.logWarn)(`Ignoring redlock conflict in write-through cache`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
cacheItem = makeCacheItem(output, updateDb ? null : cacheItem?.lastWrite);
|
|
96
|
+
if (output._id) {
|
|
97
|
+
await cache.store(makeCacheKey(db, output._id), cacheItem);
|
|
98
|
+
}
|
|
99
|
+
return { ok: true, id: output._id, rev: output._rev };
|
|
100
|
+
}
|
|
101
|
+
async function get(db, id) {
|
|
102
|
+
const cache = await getCache();
|
|
103
|
+
const cacheKey = makeCacheKey(db, id);
|
|
104
|
+
let cacheItem = await cache.get(cacheKey);
|
|
105
|
+
if (!cacheItem) {
|
|
106
|
+
const doc = await db.get(id);
|
|
107
|
+
cacheItem = makeCacheItem(doc);
|
|
108
|
+
await cache.store(cacheKey, cacheItem);
|
|
109
|
+
}
|
|
110
|
+
return cacheItem.doc;
|
|
111
|
+
}
|
|
112
|
+
async function remove(db, docOrId, rev) {
|
|
113
|
+
const cache = await getCache();
|
|
114
|
+
if (!docOrId) {
|
|
115
|
+
throw new Error("No ID/Rev provided.");
|
|
116
|
+
}
|
|
117
|
+
const id = typeof docOrId === "string" ? docOrId : docOrId._id;
|
|
118
|
+
rev = typeof docOrId === "string" ? rev : docOrId._rev;
|
|
119
|
+
try {
|
|
120
|
+
await cache.delete(makeCacheKey(db, id));
|
|
121
|
+
} finally {
|
|
122
|
+
await db.remove(id, rev);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
class Writethrough {
|
|
126
|
+
constructor(db, writeRateMs = DEFAULT_WRITE_RATE_MS) {
|
|
127
|
+
this.db = db;
|
|
128
|
+
this.writeRateMs = writeRateMs;
|
|
129
|
+
}
|
|
130
|
+
async put(doc) {
|
|
131
|
+
return put(this.db, doc, this.writeRateMs);
|
|
132
|
+
}
|
|
133
|
+
async get(id) {
|
|
134
|
+
return get(this.db, id);
|
|
135
|
+
}
|
|
136
|
+
async remove(docOrId, rev) {
|
|
137
|
+
return remove(this.db, docOrId, rev);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
141
|
+
0 && (module.exports = {
|
|
142
|
+
Writethrough
|
|
143
|
+
});
|
|
144
|
+
//# sourceMappingURL=writethrough.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/cache/writethrough.ts"],
|
|
4
|
+
"sourcesContent": ["import BaseCache from \"./base\"\nimport { getWritethroughClient } from \"../redis/init\"\nimport { logWarn } from \"../logging\"\nimport { Database, Document, LockName, LockType } from \"@budibase/types\"\nimport * as locks from \"../redis/redlockImpl\"\n\nconst DEFAULT_WRITE_RATE_MS = 10000\nlet CACHE: BaseCache | null = null\n\ninterface CacheItem {\n doc: any\n lastWrite: number\n}\n\nasync function getCache() {\n if (!CACHE) {\n const client = await getWritethroughClient()\n CACHE = new BaseCache(client)\n }\n return CACHE\n}\n\nfunction makeCacheKey(db: Database, key: string) {\n return db.name + key\n}\n\nfunction makeCacheItem(doc: any, lastWrite: number | null = null): CacheItem {\n return { doc, lastWrite: lastWrite || Date.now() }\n}\n\nasync function put(\n db: Database,\n doc: Document,\n writeRateMs: number = DEFAULT_WRITE_RATE_MS\n) {\n const cache = await getCache()\n const key = doc._id\n let cacheItem: CacheItem | undefined\n if (key) {\n cacheItem = await cache.get(makeCacheKey(db, key))\n }\n const updateDb = !cacheItem || cacheItem.lastWrite < Date.now() - writeRateMs\n let output = doc\n if (updateDb) {\n const lockResponse = await locks.doWithLock(\n {\n type: LockType.TRY_ONCE,\n name: LockName.PERSIST_WRITETHROUGH,\n resource: key,\n ttl: 15000,\n },\n async () => {\n const writeDb = async (toWrite: any) => {\n // doc should contain the _id and _rev\n const response = await db.put(toWrite, { force: true })\n output = {\n ...doc,\n _id: response.id,\n _rev: response.rev,\n }\n }\n try {\n await writeDb(doc)\n } catch (err: any) {\n if (err.status !== 409) {\n throw err\n } else {\n // Swallow 409s but log them\n logWarn(`Ignoring conflict in write-through cache`)\n }\n }\n }\n )\n\n if (!lockResponse.executed) {\n logWarn(`Ignoring redlock conflict in write-through cache`)\n }\n }\n // if we are updating the DB then need to set the lastWrite to now\n cacheItem = makeCacheItem(output, updateDb ? null : cacheItem?.lastWrite)\n if (output._id) {\n await cache.store(makeCacheKey(db, output._id), cacheItem)\n }\n return { ok: true, id: output._id, rev: output._rev }\n}\n\nasync function get(db: Database, id: string): Promise<any> {\n const cache = await getCache()\n const cacheKey = makeCacheKey(db, id)\n let cacheItem: CacheItem = await cache.get(cacheKey)\n if (!cacheItem) {\n const doc = await db.get(id)\n cacheItem = makeCacheItem(doc)\n await cache.store(cacheKey, cacheItem)\n }\n return cacheItem.doc\n}\n\nasync function remove(db: Database, docOrId: any, rev?: any): Promise<void> {\n const cache = await getCache()\n if (!docOrId) {\n throw new Error(\"No ID/Rev provided.\")\n }\n const id = typeof docOrId === \"string\" ? docOrId : docOrId._id\n rev = typeof docOrId === \"string\" ? rev : docOrId._rev\n try {\n await cache.delete(makeCacheKey(db, id))\n } finally {\n await db.remove(id, rev)\n }\n}\n\nexport class Writethrough {\n db: Database\n writeRateMs: number\n\n constructor(db: Database, writeRateMs: number = DEFAULT_WRITE_RATE_MS) {\n this.db = db\n this.writeRateMs = writeRateMs\n }\n\n async put(doc: any) {\n return put(this.db, doc, this.writeRateMs)\n }\n\n async get(id: string) {\n return get(this.db, id)\n }\n\n async remove(docOrId: any, rev?: any) {\n return remove(this.db, docOrId, rev)\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["BaseCache"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var configs_exports = {};
|
|
30
|
+
__export(configs_exports, {
|
|
31
|
+
analyticsEnabled: () => analyticsEnabled,
|
|
32
|
+
generateConfigID: () => generateConfigID,
|
|
33
|
+
getConfig: () => getConfig,
|
|
34
|
+
getDefaultGoogleConfig: () => getDefaultGoogleConfig,
|
|
35
|
+
getGoogleConfig: () => getGoogleConfig,
|
|
36
|
+
getGoogleDatasourceConfig: () => getGoogleDatasourceConfig,
|
|
37
|
+
getOIDCConfig: () => getOIDCConfig,
|
|
38
|
+
getOIDCConfigById: () => getOIDCConfigById,
|
|
39
|
+
getOIDCLogosDoc: () => getOIDCLogosDoc,
|
|
40
|
+
getPlatformUrl: () => getPlatformUrl,
|
|
41
|
+
getSCIMConfig: () => getSCIMConfig,
|
|
42
|
+
getSMTPConfig: () => getSMTPConfig,
|
|
43
|
+
getSMTPConfigDoc: () => getSMTPConfigDoc,
|
|
44
|
+
getSettingsConfig: () => getSettingsConfig,
|
|
45
|
+
getSettingsConfigDoc: () => getSettingsConfigDoc,
|
|
46
|
+
save: () => save
|
|
47
|
+
});
|
|
48
|
+
module.exports = __toCommonJS(configs_exports);
|
|
49
|
+
var import_types = require("@budibase/types");
|
|
50
|
+
var import_constants = require("../constants");
|
|
51
|
+
var import_cache = require("../cache");
|
|
52
|
+
var context = __toESM(require("../context"));
|
|
53
|
+
var import_environment = __toESM(require("../environment"));
|
|
54
|
+
var import_environment2 = __toESM(require("../environment"));
|
|
55
|
+
function generateConfigID(type) {
|
|
56
|
+
return `${import_constants.DocumentType.CONFIG}${import_constants.SEPARATOR}${type}`;
|
|
57
|
+
}
|
|
58
|
+
async function getConfig(type) {
|
|
59
|
+
const db = context.getGlobalDB();
|
|
60
|
+
try {
|
|
61
|
+
return await db.get(generateConfigID(type));
|
|
62
|
+
} catch (e) {
|
|
63
|
+
if (e.status === 404) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
throw e;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async function save(config) {
|
|
70
|
+
const db = context.getGlobalDB();
|
|
71
|
+
return db.put(config);
|
|
72
|
+
}
|
|
73
|
+
async function getSettingsConfigDoc() {
|
|
74
|
+
let config = await getConfig(import_types.ConfigType.SETTINGS);
|
|
75
|
+
if (!config) {
|
|
76
|
+
config = {
|
|
77
|
+
_id: generateConfigID(import_types.ConfigType.SETTINGS),
|
|
78
|
+
type: import_types.ConfigType.SETTINGS,
|
|
79
|
+
config: {}
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
config.config.platformUrl = await getPlatformUrl({
|
|
83
|
+
tenantAware: true,
|
|
84
|
+
config: config.config
|
|
85
|
+
});
|
|
86
|
+
config.config.analyticsEnabled = await analyticsEnabled({
|
|
87
|
+
config: config.config
|
|
88
|
+
});
|
|
89
|
+
return config;
|
|
90
|
+
}
|
|
91
|
+
async function getSettingsConfig() {
|
|
92
|
+
return (await getSettingsConfigDoc()).config;
|
|
93
|
+
}
|
|
94
|
+
async function getPlatformUrl(opts = {
|
|
95
|
+
tenantAware: true
|
|
96
|
+
}) {
|
|
97
|
+
let platformUrl = import_environment.default.PLATFORM_URL || "http://localhost:10000";
|
|
98
|
+
if (!import_environment.default.SELF_HOSTED && import_environment.default.MULTI_TENANCY && opts.tenantAware) {
|
|
99
|
+
const tenantId = context.getTenantId();
|
|
100
|
+
if (!platformUrl.includes("localhost:")) {
|
|
101
|
+
platformUrl = platformUrl.replace("://", `://${tenantId}.`);
|
|
102
|
+
}
|
|
103
|
+
} else if (import_environment.default.SELF_HOSTED) {
|
|
104
|
+
const config = opts?.config ? opts.config : (
|
|
105
|
+
// direct to db to prevent infinite loop
|
|
106
|
+
(await getConfig(import_types.ConfigType.SETTINGS))?.config
|
|
107
|
+
);
|
|
108
|
+
if (config?.platformUrl) {
|
|
109
|
+
platformUrl = config.platformUrl;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return platformUrl;
|
|
113
|
+
}
|
|
114
|
+
const analyticsEnabled = async (opts) => {
|
|
115
|
+
if (!import_environment.default.SELF_HOSTED) {
|
|
116
|
+
return !!import_environment.default.ENABLE_ANALYTICS;
|
|
117
|
+
}
|
|
118
|
+
const enabledInDB = await (0, import_cache.withCache)(
|
|
119
|
+
import_cache.CacheKey.ANALYTICS_ENABLED,
|
|
120
|
+
import_cache.TTL.ONE_DAY,
|
|
121
|
+
async () => {
|
|
122
|
+
const config = opts?.config ? opts.config : (
|
|
123
|
+
// direct to db to prevent infinite loop
|
|
124
|
+
(await getConfig(import_types.ConfigType.SETTINGS))?.config
|
|
125
|
+
);
|
|
126
|
+
if (config?.analyticsEnabled === false) {
|
|
127
|
+
return false;
|
|
128
|
+
} else if (config?.analyticsEnabled === true) {
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
);
|
|
133
|
+
if (enabledInDB !== void 0) {
|
|
134
|
+
return enabledInDB;
|
|
135
|
+
}
|
|
136
|
+
const envEnabled = import_environment.default.ENABLE_ANALYTICS;
|
|
137
|
+
if (envEnabled === 0 || envEnabled === false) {
|
|
138
|
+
return false;
|
|
139
|
+
} else {
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
async function getGoogleConfigDoc() {
|
|
144
|
+
return await getConfig(import_types.ConfigType.GOOGLE);
|
|
145
|
+
}
|
|
146
|
+
async function getGoogleConfig() {
|
|
147
|
+
const config = await getGoogleConfigDoc();
|
|
148
|
+
return config?.config;
|
|
149
|
+
}
|
|
150
|
+
async function getGoogleDatasourceConfig() {
|
|
151
|
+
if (!import_environment.default.SELF_HOSTED) {
|
|
152
|
+
return getDefaultGoogleConfig();
|
|
153
|
+
}
|
|
154
|
+
let config = await getGoogleConfig();
|
|
155
|
+
if (!config || !config.activated) {
|
|
156
|
+
config = getDefaultGoogleConfig();
|
|
157
|
+
}
|
|
158
|
+
return config;
|
|
159
|
+
}
|
|
160
|
+
function getDefaultGoogleConfig() {
|
|
161
|
+
if (import_environment2.default.GOOGLE_CLIENT_ID && import_environment2.default.GOOGLE_CLIENT_SECRET) {
|
|
162
|
+
return {
|
|
163
|
+
clientID: import_environment2.default.GOOGLE_CLIENT_ID,
|
|
164
|
+
clientSecret: import_environment2.default.GOOGLE_CLIENT_SECRET,
|
|
165
|
+
activated: true
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
async function getOIDCLogosDoc() {
|
|
170
|
+
return getConfig(import_types.ConfigType.OIDC_LOGOS);
|
|
171
|
+
}
|
|
172
|
+
async function getOIDCConfigDoc() {
|
|
173
|
+
return getConfig(import_types.ConfigType.OIDC);
|
|
174
|
+
}
|
|
175
|
+
async function getOIDCConfig() {
|
|
176
|
+
const config = (await getOIDCConfigDoc())?.config;
|
|
177
|
+
return config?.configs && config.configs[0];
|
|
178
|
+
}
|
|
179
|
+
async function getOIDCConfigById(configId) {
|
|
180
|
+
const config = (await getConfig(import_types.ConfigType.OIDC))?.config;
|
|
181
|
+
return config && config.configs.filter((c) => c.uuid === configId)[0];
|
|
182
|
+
}
|
|
183
|
+
async function getSMTPConfigDoc() {
|
|
184
|
+
return getConfig(import_types.ConfigType.SMTP);
|
|
185
|
+
}
|
|
186
|
+
async function getSMTPConfig(isAutomation) {
|
|
187
|
+
const config = await getSMTPConfigDoc();
|
|
188
|
+
if (config) {
|
|
189
|
+
return config.config;
|
|
190
|
+
}
|
|
191
|
+
const allowFallback = import_environment.default.SELF_HOSTED || !isAutomation;
|
|
192
|
+
if (import_environment.default.SMTP_FALLBACK_ENABLED && allowFallback) {
|
|
193
|
+
return {
|
|
194
|
+
port: import_environment.default.SMTP_PORT,
|
|
195
|
+
host: import_environment.default.SMTP_HOST,
|
|
196
|
+
secure: false,
|
|
197
|
+
from: import_environment.default.SMTP_FROM_ADDRESS,
|
|
198
|
+
auth: {
|
|
199
|
+
user: import_environment.default.SMTP_USER,
|
|
200
|
+
pass: import_environment.default.SMTP_PASSWORD
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
async function getSCIMConfig() {
|
|
206
|
+
const config = await getConfig(import_types.ConfigType.SCIM);
|
|
207
|
+
return config?.config;
|
|
208
|
+
}
|
|
209
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
210
|
+
0 && (module.exports = {
|
|
211
|
+
analyticsEnabled,
|
|
212
|
+
generateConfigID,
|
|
213
|
+
getConfig,
|
|
214
|
+
getDefaultGoogleConfig,
|
|
215
|
+
getGoogleConfig,
|
|
216
|
+
getGoogleDatasourceConfig,
|
|
217
|
+
getOIDCConfig,
|
|
218
|
+
getOIDCConfigById,
|
|
219
|
+
getOIDCLogosDoc,
|
|
220
|
+
getPlatformUrl,
|
|
221
|
+
getSCIMConfig,
|
|
222
|
+
getSMTPConfig,
|
|
223
|
+
getSMTPConfigDoc,
|
|
224
|
+
getSettingsConfig,
|
|
225
|
+
getSettingsConfigDoc,
|
|
226
|
+
save
|
|
227
|
+
});
|
|
228
|
+
//# sourceMappingURL=configs.js.map
|