@budibase/backend-core 2.9.38 → 2.9.39-alpha.1
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/index.js +3027 -3025
- package/dist/index.js.map +4 -4
- package/dist/index.js.meta.json +1 -1
- package/dist/package.json +5 -5
- package/dist/plugins.js +1 -1
- package/dist/plugins.js.map +2 -2
- package/dist/plugins.js.meta.json +1 -1
- 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.d.ts +1 -1
- 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.d.ts +2 -1
- 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.d.ts +1 -1
- 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/{featureFlags → features}/index.d.ts +1 -0
- package/dist/src/features/index.js +105 -0
- package/dist/src/features/index.js.map +7 -0
- package/dist/src/features/installation.d.ts +1 -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.d.ts +2 -1
- 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.d.ts +1 -12
- 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.d.ts +9 -1
- 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.d.ts +2 -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 -8476
- package/dist/tests.js.map +0 -7
- package/dist/tests.js.meta.json +0 -1
|
@@ -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
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/configs/configs.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n Config,\n ConfigType,\n GoogleConfig,\n GoogleInnerConfig,\n OIDCConfig,\n OIDCInnerConfig,\n OIDCLogosConfig,\n SCIMConfig,\n SCIMInnerConfig,\n SettingsConfig,\n SettingsInnerConfig,\n SMTPConfig,\n SMTPInnerConfig,\n} from \"@budibase/types\"\nimport { DocumentType, SEPARATOR } from \"../constants\"\nimport { CacheKey, TTL, withCache } from \"../cache\"\nimport * as context from \"../context\"\nimport env from \"../environment\"\nimport environment from \"../environment\"\n\n// UTILS\n\n/**\n * Generates a new configuration ID.\n * @returns {string} The new configuration ID which the config doc can be stored under.\n */\nexport function generateConfigID(type: ConfigType) {\n return `${DocumentType.CONFIG}${SEPARATOR}${type}`\n}\n\nexport async function getConfig<T extends Config>(\n type: ConfigType\n): Promise<T | undefined> {\n const db = context.getGlobalDB()\n try {\n // await to catch error\n return (await db.get(generateConfigID(type))) as T\n } catch (e: any) {\n if (e.status === 404) {\n return\n }\n throw e\n }\n}\n\nexport async function save(\n config: Config\n): Promise<{ id: string; rev: string }> {\n const db = context.getGlobalDB()\n return db.put(config)\n}\n\n// SETTINGS\n\nexport async function getSettingsConfigDoc(): Promise<SettingsConfig> {\n let config = await getConfig<SettingsConfig>(ConfigType.SETTINGS)\n\n if (!config) {\n config = {\n _id: generateConfigID(ConfigType.SETTINGS),\n type: ConfigType.SETTINGS,\n config: {},\n }\n }\n\n // overridden fields\n config.config.platformUrl = await getPlatformUrl({\n tenantAware: true,\n config: config.config,\n })\n config.config.analyticsEnabled = await analyticsEnabled({\n config: config.config,\n })\n\n return config\n}\n\nexport async function getSettingsConfig(): Promise<SettingsInnerConfig> {\n return (await getSettingsConfigDoc()).config\n}\n\nexport async function getPlatformUrl(\n opts: { tenantAware: boolean; config?: SettingsInnerConfig } = {\n tenantAware: true,\n }\n) {\n let platformUrl = env.PLATFORM_URL || \"http://localhost:10000\"\n\n if (!env.SELF_HOSTED && env.MULTI_TENANCY && opts.tenantAware) {\n // cloud and multi tenant - add the tenant to the default platform url\n const tenantId = context.getTenantId()\n if (!platformUrl.includes(\"localhost:\")) {\n platformUrl = platformUrl.replace(\"://\", `://${tenantId}.`)\n }\n } else if (env.SELF_HOSTED) {\n const config = opts?.config\n ? opts.config\n : // direct to db to prevent infinite loop\n (await getConfig<SettingsConfig>(ConfigType.SETTINGS))?.config\n if (config?.platformUrl) {\n platformUrl = config.platformUrl\n }\n }\n\n return platformUrl\n}\n\nexport const analyticsEnabled = async (opts?: {\n config?: SettingsInnerConfig\n}) => {\n // cloud - always use the environment variable\n if (!env.SELF_HOSTED) {\n return !!env.ENABLE_ANALYTICS\n }\n\n // self host - prefer the settings doc\n // use cache as events have high throughput\n const enabledInDB = await withCache(\n CacheKey.ANALYTICS_ENABLED,\n TTL.ONE_DAY,\n async () => {\n const config = opts?.config\n ? opts.config\n : // direct to db to prevent infinite loop\n (await getConfig<SettingsConfig>(ConfigType.SETTINGS))?.config\n\n // need to do explicit checks in case the field is not set\n if (config?.analyticsEnabled === false) {\n return false\n } else if (config?.analyticsEnabled === true) {\n return true\n }\n }\n )\n\n if (enabledInDB !== undefined) {\n return enabledInDB\n }\n\n // fallback to the environment variable\n // explicitly check for 0 or false here, undefined or otherwise is treated as true\n const envEnabled: any = env.ENABLE_ANALYTICS\n if (envEnabled === 0 || envEnabled === false) {\n return false\n } else {\n return true\n }\n}\n\n// GOOGLE\n\nasync function getGoogleConfigDoc(): Promise<GoogleConfig | undefined> {\n return await getConfig<GoogleConfig>(ConfigType.GOOGLE)\n}\n\nexport async function getGoogleConfig(): Promise<\n GoogleInnerConfig | undefined\n> {\n const config = await getGoogleConfigDoc()\n return config?.config\n}\n\nexport async function getGoogleDatasourceConfig(): Promise<\n GoogleInnerConfig | undefined\n> {\n if (!env.SELF_HOSTED) {\n // always use the env vars in cloud\n return getDefaultGoogleConfig()\n }\n\n // prefer the config in self-host\n let config = await getGoogleConfig()\n\n // fallback to env vars\n if (!config || !config.activated) {\n config = getDefaultGoogleConfig()\n }\n\n return config\n}\n\nexport function getDefaultGoogleConfig(): GoogleInnerConfig | undefined {\n if (environment.GOOGLE_CLIENT_ID && environment.GOOGLE_CLIENT_SECRET) {\n return {\n clientID: environment.GOOGLE_CLIENT_ID!,\n clientSecret: environment.GOOGLE_CLIENT_SECRET!,\n activated: true,\n }\n }\n}\n\n// OIDC\n\nexport async function getOIDCLogosDoc(): Promise<OIDCLogosConfig | undefined> {\n return getConfig<OIDCLogosConfig>(ConfigType.OIDC_LOGOS)\n}\n\nasync function getOIDCConfigDoc(): Promise<OIDCConfig | undefined> {\n return getConfig<OIDCConfig>(ConfigType.OIDC)\n}\n\nexport async function getOIDCConfig(): Promise<OIDCInnerConfig | undefined> {\n const config = (await getOIDCConfigDoc())?.config\n // default to the 0th config\n return config?.configs && config.configs[0]\n}\n\n/**\n * @param configId The config id of the inner config to retrieve\n */\nexport async function getOIDCConfigById(\n configId: string\n): Promise<OIDCInnerConfig | undefined> {\n const config = (await getConfig<OIDCConfig>(ConfigType.OIDC))?.config\n return config && config.configs.filter((c: any) => c.uuid === configId)[0]\n}\n\n// SMTP\n\nexport async function getSMTPConfigDoc(): Promise<SMTPConfig | undefined> {\n return getConfig<SMTPConfig>(ConfigType.SMTP)\n}\n\nexport async function getSMTPConfig(\n isAutomation?: boolean\n): Promise<SMTPInnerConfig | undefined> {\n const config = await getSMTPConfigDoc()\n if (config) {\n return config.config\n }\n\n // always allow fallback in self host\n // in cloud don't allow for automations\n const allowFallback = env.SELF_HOSTED || !isAutomation\n\n // Use an SMTP fallback configuration from env variables\n if (env.SMTP_FALLBACK_ENABLED && allowFallback) {\n return {\n port: env.SMTP_PORT,\n host: env.SMTP_HOST!,\n secure: false,\n from: env.SMTP_FROM_ADDRESS!,\n auth: {\n user: env.SMTP_USER!,\n pass: env.SMTP_PASSWORD!,\n },\n }\n }\n}\n\n// SCIM\n\nexport async function getSCIMConfig(): Promise<SCIMInnerConfig | undefined> {\n const config = await getConfig<SCIMConfig>(ConfigType.SCIM)\n return config?.config\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_environment", "env", "environment"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
+
var configs_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(configs_exports);
|
|
18
|
+
__reExport(configs_exports, require("./configs"), module.exports);
|
|
19
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
20
|
+
0 && (module.exports = {
|
|
21
|
+
...require("./configs")
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=index.js.map
|