@directus/api 35.0.2 → 35.1.0
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/_virtual/rolldown_runtime.js +1 -24
- package/dist/ai/chat/controllers/chat.post.js +9 -22
- package/dist/ai/chat/controllers/object.post.js +58 -0
- package/dist/ai/chat/lib/create-ui-stream.js +10 -18
- package/dist/ai/chat/lib/transform-file-parts.js +1 -3
- package/dist/ai/chat/middleware/load-settings.js +1 -2
- package/dist/ai/chat/models/chat-request.js +2 -9
- package/dist/ai/chat/models/object-request.js +19 -0
- package/dist/ai/chat/router.js +3 -2
- package/dist/ai/chat/utils/add-additional-properties-to-json-schema.js +37 -0
- package/dist/ai/chat/utils/chat-request-tool-to-ai-sdk-tool.js +3 -8
- package/dist/ai/chat/utils/fix-error-tool-calls.js +4 -6
- package/dist/ai/chat/utils/format-context.js +17 -27
- package/dist/ai/chat/utils/parse-json-schema-7.js +3 -6
- package/dist/ai/chat/utils/zod-jsonschema7-parser.js +16 -0
- package/dist/ai/devtools/index.js +1 -2
- package/dist/ai/files/adapters/anthropic.js +1 -3
- package/dist/ai/files/adapters/google.js +5 -12
- package/dist/ai/files/adapters/openai.js +1 -3
- package/dist/ai/files/controllers/upload.js +8 -24
- package/dist/ai/files/lib/fetch-provider.js +1 -3
- package/dist/ai/files/lib/upload-to-provider.js +6 -16
- package/dist/ai/mcp/server.js +58 -102
- package/dist/ai/mcp/transport.js +2 -6
- package/dist/ai/providers/anthropic-file-support.js +28 -41
- package/dist/ai/providers/anthropic-tool-search.js +10 -14
- package/dist/ai/providers/index.js +0 -1
- package/dist/ai/providers/options.js +2 -7
- package/dist/ai/providers/registry.js +38 -48
- package/dist/ai/telemetry/braintrust.js +3 -9
- package/dist/ai/telemetry/index.js +14 -13
- package/dist/ai/telemetry/langfuse.js +8 -22
- package/dist/ai/tools/assets/index.js +15 -23
- package/dist/ai/tools/collections/index.js +9 -19
- package/dist/ai/tools/fields/index.js +13 -27
- package/dist/ai/tools/files/index.js +11 -24
- package/dist/ai/tools/flows/index.js +8 -16
- package/dist/ai/tools/folders/index.js +11 -23
- package/dist/ai/tools/items/index.js +19 -44
- package/dist/ai/tools/operations/index.js +7 -13
- package/dist/ai/tools/relations/index.js +5 -11
- package/dist/ai/tools/schema/index.js +39 -91
- package/dist/ai/tools/trigger-flow/index.js +9 -16
- package/dist/ai/tools/utils.js +4 -8
- package/dist/app.js +19 -51
- package/dist/auth/auth.js +3 -9
- package/dist/auth/drivers/ldap.js +39 -82
- package/dist/auth/drivers/local.js +4 -12
- package/dist/auth/drivers/oauth2.js +32 -63
- package/dist/auth/drivers/openid.js +49 -89
- package/dist/auth/drivers/saml.js +16 -31
- package/dist/auth/utils/generate-callback-url.js +2 -7
- package/dist/auth/utils/resolve-login-redirect.js +11 -21
- package/dist/auth.js +2 -5
- package/dist/bus/lib/use-bus.js +3 -7
- package/dist/cache.js +11 -24
- package/dist/cli/commands/bootstrap/index.js +10 -19
- package/dist/cli/commands/cache/clear.js +1 -3
- package/dist/cli/commands/database/migrate.js +2 -5
- package/dist/cli/commands/init/index.js +3 -5
- package/dist/cli/commands/init/questions.js +2 -3
- package/dist/cli/commands/schema/apply.js +39 -81
- package/dist/cli/commands/schema/snapshot.js +3 -8
- package/dist/cli/commands/users/create.js +3 -5
- package/dist/cli/commands/users/passwd.js +2 -5
- package/dist/cli/index.js +1 -2
- package/dist/cli/load-extensions.js +3 -6
- package/dist/cli/utils/create-db-connection.js +7 -12
- package/dist/cli/utils/create-env/index.js +2 -6
- package/dist/cli/utils/drivers.js +1 -3
- package/dist/controllers/access.js +15 -30
- package/dist/controllers/activity.js +5 -10
- package/dist/controllers/assets.js +24 -61
- package/dist/controllers/auth.js +19 -52
- package/dist/controllers/collections.js +8 -17
- package/dist/controllers/comments.js +15 -30
- package/dist/controllers/dashboards.js +13 -25
- package/dist/controllers/deployment-webhooks.js +6 -12
- package/dist/controllers/deployment.js +39 -90
- package/dist/controllers/extensions.js +53 -98
- package/dist/controllers/fields.js +17 -38
- package/dist/controllers/files.js +31 -68
- package/dist/controllers/flows.js +15 -30
- package/dist/controllers/folders.js +16 -32
- package/dist/controllers/graphql.js +2 -6
- package/dist/controllers/items.js +18 -38
- package/dist/controllers/mcp.js +4 -8
- package/dist/controllers/metrics.js +4 -12
- package/dist/controllers/not-found.js +2 -5
- package/dist/controllers/notifications.js +16 -32
- package/dist/controllers/operations.js +13 -25
- package/dist/controllers/panels.js +13 -25
- package/dist/controllers/permissions.js +18 -35
- package/dist/controllers/policies.js +15 -30
- package/dist/controllers/presets.js +16 -32
- package/dist/controllers/relations.js +12 -24
- package/dist/controllers/revisions.js +2 -3
- package/dist/controllers/roles.js +13 -25
- package/dist/controllers/schema.js +19 -30
- package/dist/controllers/server.js +32 -44
- package/dist/controllers/settings.js +5 -9
- package/dist/controllers/shares.js +20 -40
- package/dist/controllers/translations.js +16 -32
- package/dist/controllers/tus.js +4 -11
- package/dist/controllers/users.js +46 -100
- package/dist/controllers/utils/handle-registry-error.js +26 -0
- package/dist/controllers/utils.js +20 -41
- package/dist/controllers/versions.js +20 -41
- package/dist/database/errors/dialects/mssql.js +8 -21
- package/dist/database/errors/dialects/mysql.js +7 -14
- package/dist/database/errors/dialects/oracle.js +3 -6
- package/dist/database/errors/dialects/postgres.js +8 -18
- package/dist/database/errors/dialects/sqlite.js +16 -21
- package/dist/database/errors/translate.js +1 -2
- package/dist/database/get-ast-from-query/get-ast-from-query.js +4 -12
- package/dist/database/get-ast-from-query/lib/convert-wildcards.js +15 -29
- package/dist/database/get-ast-from-query/lib/parse-fields.js +17 -41
- package/dist/database/get-ast-from-query/utils/get-allowed-sort.js +5 -14
- package/dist/database/get-ast-from-query/utils/get-related-collection.js +2 -6
- package/dist/database/helpers/date/dialects/mysql.js +1 -1
- package/dist/database/helpers/date/dialects/oracle.js +3 -9
- package/dist/database/helpers/date/dialects/sqlite.js +3 -9
- package/dist/database/helpers/date/types.js +1 -3
- package/dist/database/helpers/fn/dialects/mssql.js +4 -12
- package/dist/database/helpers/fn/dialects/mysql.js +5 -14
- package/dist/database/helpers/fn/dialects/oracle.js +4 -12
- package/dist/database/helpers/fn/dialects/postgres.js +5 -14
- package/dist/database/helpers/fn/dialects/sqlite.js +4 -12
- package/dist/database/helpers/fn/json/parse-function.js +9 -27
- package/dist/database/helpers/fn/types.js +1 -3
- package/dist/database/helpers/geometry/dialects/mssql.js +1 -3
- package/dist/database/helpers/geometry/dialects/oracle.js +1 -3
- package/dist/database/helpers/geometry/dialects/postgres.js +1 -2
- package/dist/database/helpers/geometry/dialects/redshift.js +1 -3
- package/dist/database/helpers/geometry/dialects/sqlite.js +1 -2
- package/dist/database/helpers/index.js +1 -2
- package/dist/database/helpers/number/dialects/postgres.js +1 -3
- package/dist/database/helpers/number/utils/decimal-limit.js +2 -4
- package/dist/database/helpers/number/utils/maybe-stringify-big-int.js +1 -3
- package/dist/database/helpers/schema/dialects/cockroachdb.js +8 -15
- package/dist/database/helpers/schema/dialects/mssql.js +8 -15
- package/dist/database/helpers/schema/dialects/mysql.js +8 -14
- package/dist/database/helpers/schema/dialects/oracle.js +13 -28
- package/dist/database/helpers/schema/dialects/postgres.js +6 -10
- package/dist/database/helpers/schema/dialects/sqlite.js +1 -3
- package/dist/database/helpers/schema/types.js +12 -35
- package/dist/database/helpers/schema/utils/prep-query-params.js +4 -7
- package/dist/database/helpers/sequence/types.js +1 -3
- package/dist/database/index.js +41 -79
- package/dist/database/migrations/20201029A-remove-system-relations.js +1 -5
- package/dist/database/migrations/20201029B-remove-system-collections.js +1 -5
- package/dist/database/migrations/20201029C-remove-system-fields.js +1 -5
- package/dist/database/migrations/20201105A-add-cascade-system-relations.js +9 -15
- package/dist/database/migrations/20210225A-add-relations-sort-field.js +4 -6
- package/dist/database/migrations/20210415A-make-filesize-nullable.js +2 -4
- package/dist/database/migrations/20210506A-rename-interfaces.js +13 -20
- package/dist/database/migrations/20210518A-add-foreign-key-constraints.js +7 -18
- package/dist/database/migrations/20210519A-add-system-fk-triggers.js +58 -67
- package/dist/database/migrations/20210626A-change-filesize-bigint.js +2 -8
- package/dist/database/migrations/20210802A-replace-groups.js +7 -9
- package/dist/database/migrations/20210805A-update-groups.js +4 -14
- package/dist/database/migrations/20210805B-change-image-metadata-structure.js +2 -6
- package/dist/database/migrations/20210920A-webhooks-url-not-null.js +2 -6
- package/dist/database/migrations/20210927A-replace-fields-group.js +5 -11
- package/dist/database/migrations/20211007A-update-presets.js +4 -12
- package/dist/database/migrations/20220303A-remove-default-project-color.js +2 -4
- package/dist/database/migrations/20220322A-rename-field-typecast-flags.js +2 -6
- package/dist/database/migrations/20220325A-fix-typecast-flags.js +3 -8
- package/dist/database/migrations/20220402A-remove-default-value-panel-icon.js +2 -4
- package/dist/database/migrations/20220429A-add-flows.js +2 -4
- package/dist/database/migrations/20220801A-update-notifications-timestamp-column.js +2 -4
- package/dist/database/migrations/20230401A-update-material-icons.js +2 -4
- package/dist/database/migrations/20230526A-migrate-translation-strings.js +9 -16
- package/dist/database/migrations/20230721A-require-shares-fields.js +9 -20
- package/dist/database/migrations/20231009A-update-csv-fields-to-text.js +15 -22
- package/dist/database/migrations/20231009B-update-panel-options.js +4 -12
- package/dist/database/migrations/20240204A-marketplace.js +20 -26
- package/dist/database/migrations/20240311A-deprecate-webhooks.js +1 -1
- package/dist/database/migrations/20240716A-update-files-date-fields.js +8 -14
- package/dist/database/migrations/20240806A-permissions-policies.js +17 -39
- package/dist/database/migrations/20240909A-separate-comments.js +14 -17
- package/dist/database/migrations/20240924A-migrate-legacy-comments.js +6 -11
- package/dist/database/migrations/20240924B-populate-versioning-deltas.js +1 -3
- package/dist/database/migrations/20250224A-visual-editor.js +1 -2
- package/dist/database/migrations/20250609A-license-banner.js +1 -2
- package/dist/database/migrations/20250613A-add-project-id.js +2 -5
- package/dist/database/migrations/20251014A-add-project-owner.js +7 -10
- package/dist/database/migrations/20251028A-add-retention-indexes.js +7 -15
- package/dist/database/migrations/20260113A-add-revisions-index.js +7 -15
- package/dist/database/migrations/run.js +23 -50
- package/dist/database/run-ast/lib/apply-query/add-join.js +8 -20
- package/dist/database/run-ast/lib/apply-query/aggregate.js +1 -3
- package/dist/database/run-ast/lib/apply-query/filter/get-filter-type.js +3 -9
- package/dist/database/run-ast/lib/apply-query/filter/index.js +9 -27
- package/dist/database/run-ast/lib/apply-query/filter/operator.js +42 -107
- package/dist/database/run-ast/lib/apply-query/filter/validate-operator.js +3 -9
- package/dist/database/run-ast/lib/apply-query/get-filter-path.js +2 -6
- package/dist/database/run-ast/lib/apply-query/get-operation.js +9 -14
- package/dist/database/run-ast/lib/apply-query/index.js +20 -39
- package/dist/database/run-ast/lib/apply-query/join-filter-with-cases.js +3 -7
- package/dist/database/run-ast/lib/apply-query/pagination.js +2 -6
- package/dist/database/run-ast/lib/apply-query/search.js +17 -41
- package/dist/database/run-ast/lib/apply-query/sort.js +16 -30
- package/dist/database/run-ast/lib/get-db-query.js +7 -15
- package/dist/database/run-ast/lib/parse-current-level.js +10 -23
- package/dist/database/run-ast/modules/fetch-permitted-ast-root-fields.js +10 -14
- package/dist/database/run-ast/run-ast.js +30 -52
- package/dist/database/run-ast/utils/apply-case-when.js +1 -3
- package/dist/database/run-ast/utils/apply-function-to-column-name.js +2 -6
- package/dist/database/run-ast/utils/apply-parent-filters.js +14 -19
- package/dist/database/run-ast/utils/generate-alias.js +9 -14
- package/dist/database/run-ast/utils/get-column-pre-processor.js +14 -26
- package/dist/database/run-ast/utils/get-column.js +5 -14
- package/dist/database/run-ast/utils/get-inner-query-column-pre-processor.js +1 -3
- package/dist/database/run-ast/utils/merge-with-parent-items.js +31 -63
- package/dist/database/run-ast/utils/remove-temporary-fields.js +15 -29
- package/dist/database/run-ast/utils/with-preprocess-bindings.js +2 -6
- package/dist/database/seeds/run.js +19 -45
- package/dist/deployment/deployment.js +2 -8
- package/dist/deployment/drivers/netlify.js +43 -88
- package/dist/deployment/drivers/vercel.js +34 -72
- package/dist/deployment.js +8 -14
- package/dist/emitter.js +14 -21
- package/dist/extensions/index.js +1 -3
- package/dist/extensions/lib/get-extensions-path.js +1 -3
- package/dist/extensions/lib/get-extensions-settings.js +26 -42
- package/dist/extensions/lib/get-extensions.js +3 -7
- package/dist/extensions/lib/get-shared-deps-mapping.js +3 -7
- package/dist/extensions/lib/installation/index.js +1 -3
- package/dist/extensions/lib/installation/manager.js +9 -23
- package/dist/extensions/lib/sandbox/generate-host-function-reference.js +2 -5
- package/dist/extensions/lib/sandbox/register/call-reference.js +1 -1
- package/dist/extensions/lib/sandbox/register/filter.js +1 -2
- package/dist/extensions/lib/sandbox/register/operation.js +1 -2
- package/dist/extensions/lib/sandbox/register/route.js +2 -4
- package/dist/extensions/lib/sandbox/sdk/generators/log.js +1 -1
- package/dist/extensions/lib/sandbox/sdk/generators/request.js +13 -28
- package/dist/extensions/lib/sandbox/sdk/generators/sleep.js +2 -3
- package/dist/extensions/lib/sandbox/sdk/utils/wrap.js +4 -9
- package/dist/extensions/lib/sync/status.js +4 -11
- package/dist/extensions/lib/sync/sync.js +6 -12
- package/dist/extensions/lib/sync/tracker.js +7 -10
- package/dist/extensions/lib/sync/utils.js +5 -9
- package/dist/extensions/manager.js +59 -107
- package/dist/flows.js +233 -275
- package/dist/lock/lib/use-lock.js +3 -7
- package/dist/logger/index.js +37 -57
- package/dist/logger/redact-query.js +1 -3
- package/dist/mailer.js +12 -18
- package/dist/metrics/lib/create-metrics.js +69 -117
- package/dist/metrics/lib/use-metrics.js +3 -8
- package/dist/middleware/authenticate.js +1 -3
- package/dist/middleware/cache.js +5 -8
- package/dist/middleware/collection-exists.js +3 -8
- package/dist/middleware/cors.js +8 -10
- package/dist/middleware/error-handler.js +10 -21
- package/dist/middleware/extract-token.js +3 -9
- package/dist/middleware/graphql.js +16 -27
- package/dist/middleware/rate-limiter-global.js +1 -3
- package/dist/middleware/rate-limiter-ip.js +9 -11
- package/dist/middleware/rate-limiter-registration.js +9 -11
- package/dist/middleware/request-counter.js +8 -15
- package/dist/middleware/respond.js +8 -16
- package/dist/middleware/validate-batch.js +5 -15
- package/dist/operations/condition/index.js +4 -10
- package/dist/operations/exec/index.js +1 -2
- package/dist/operations/item-create/index.js +18 -26
- package/dist/operations/item-delete/index.js +21 -31
- package/dist/operations/item-read/index.js +21 -31
- package/dist/operations/item-update/index.js +23 -36
- package/dist/operations/log/index.js +1 -2
- package/dist/operations/mail/index.js +5 -8
- package/dist/operations/mail/rate-limiter.js +6 -10
- package/dist/operations/notification/index.js +13 -19
- package/dist/operations/request/index.js +8 -13
- package/dist/operations/throw-error/index.js +1 -2
- package/dist/operations/trigger/index.js +4 -8
- package/dist/packages/types/dist/index.js +219 -231
- package/dist/permissions/cache.js +2 -3
- package/dist/permissions/lib/fetch-permissions.js +1 -3
- package/dist/permissions/lib/fetch-policies.js +5 -10
- package/dist/permissions/modules/fetch-accountability-collection-access/fetch-accountability-collection-access.js +19 -32
- package/dist/permissions/modules/fetch-allowed-collections/fetch-allowed-collections.js +7 -12
- package/dist/permissions/modules/fetch-allowed-field-map/fetch-allowed-field-map.js +8 -17
- package/dist/permissions/modules/fetch-global-access/fetch-global-access.js +1 -1
- package/dist/permissions/modules/fetch-inconsistent-field-map/fetch-inconsistent-field-map.js +6 -10
- package/dist/permissions/modules/fetch-policies-ip-access/fetch-policies-ip-access.js +9 -15
- package/dist/permissions/modules/process-ast/lib/extract-fields-from-children.js +2 -8
- package/dist/permissions/modules/process-ast/lib/extract-fields-from-query.js +32 -34
- package/dist/permissions/modules/process-ast/lib/field-map-from-ast.js +2 -2
- package/dist/permissions/modules/process-ast/lib/get-cases.js +3 -8
- package/dist/permissions/modules/process-ast/lib/inject-cases.js +6 -19
- package/dist/permissions/modules/process-ast/process-ast.js +4 -12
- package/dist/permissions/modules/process-ast/utils/collections-in-field-map.js +2 -4
- package/dist/permissions/modules/process-ast/utils/dedupe-access.js +6 -10
- package/dist/permissions/modules/process-ast/utils/extract-paths-from-query.js +9 -25
- package/dist/permissions/modules/process-ast/utils/find-related-collection.js +1 -3
- package/dist/permissions/modules/process-ast/utils/flatten-filter.js +7 -10
- package/dist/permissions/modules/process-ast/utils/get-info-for-path.js +4 -6
- package/dist/permissions/modules/process-ast/utils/validate-path/create-error.js +1 -2
- package/dist/permissions/modules/process-ast/utils/validate-path/validate-path-existence.js +3 -8
- package/dist/permissions/modules/process-ast/utils/validate-path/validate-path-permissions.js +5 -13
- package/dist/permissions/modules/process-payload/lib/is-field-nullable.js +1 -2
- package/dist/permissions/modules/process-payload/process-payload.js +6 -15
- package/dist/permissions/modules/validate-access/lib/validate-collection-access.js +2 -3
- package/dist/permissions/modules/validate-access/lib/validate-item-access.js +14 -28
- package/dist/permissions/modules/validate-access/validate-access.js +5 -15
- package/dist/permissions/modules/validate-remaining-admin/validate-remaining-admin-count.js +1 -3
- package/dist/permissions/utils/extract-required-dynamic-variable-context.js +10 -15
- package/dist/permissions/utils/fetch-dynamic-variable-data.js +17 -35
- package/dist/permissions/utils/fetch-raw-permissions.js +3 -9
- package/dist/permissions/utils/fetch-share-info.js +1 -2
- package/dist/permissions/utils/filter-policies-by-ip.js +2 -6
- package/dist/permissions/utils/get-permissions-for-share.js +22 -47
- package/dist/permissions/utils/get-unaliased-field-key.js +2 -5
- package/dist/permissions/utils/merge-permissions.js +13 -36
- package/dist/permissions/utils/with-cache.js +1 -3
- package/dist/rate-limiter.js +2 -7
- package/dist/redis/lib/create-redis.js +1 -2
- package/dist/redis/lib/use-redis.js +1 -1
- package/dist/redis/utils/redis-config-available.js +1 -3
- package/dist/request/agent-with-ip-validation.js +3 -7
- package/dist/request/is-denied-ip.js +1 -3
- package/dist/schedules/metrics.js +4 -11
- package/dist/schedules/retention.js +17 -33
- package/dist/schedules/telemetry.js +1 -2
- package/dist/schedules/tus.js +5 -7
- package/dist/server.js +12 -24
- package/dist/services/access.js +1 -3
- package/dist/services/assets/name-deduper.js +2 -6
- package/dist/services/assets.js +43 -79
- package/dist/services/authentication.js +63 -96
- package/dist/services/collections.js +107 -218
- package/dist/services/comments.js +18 -32
- package/dist/services/deployment-projects.js +17 -31
- package/dist/services/deployment.js +63 -106
- package/dist/services/extensions.js +25 -63
- package/dist/services/fields/build-collection-and-field-relations.js +8 -14
- package/dist/services/fields/get-collection-meta-updates.js +4 -12
- package/dist/services/fields/get-collection-relation-list.js +2 -4
- package/dist/services/fields.js +162 -314
- package/dist/services/files/lib/extract-metadata.js +7 -20
- package/dist/services/files/utils/get-metadata.js +31 -64
- package/dist/services/files/utils/parse-image-metadata.js +7 -19
- package/dist/services/files.js +102 -173
- package/dist/services/flows.js +3 -6
- package/dist/services/folders.js +13 -17
- package/dist/services/graphql/errors/format.js +2 -2
- package/dist/services/graphql/index.js +4 -13
- package/dist/services/graphql/resolvers/get-collection-type.js +1 -3
- package/dist/services/graphql/resolvers/get-field-type.js +1 -3
- package/dist/services/graphql/resolvers/get-relation-type.js +1 -3
- package/dist/services/graphql/resolvers/mutation.js +6 -14
- package/dist/services/graphql/resolvers/query.js +3 -10
- package/dist/services/graphql/resolvers/system-admin.js +13 -27
- package/dist/services/graphql/resolvers/system-global.js +31 -71
- package/dist/services/graphql/resolvers/system.js +209 -245
- package/dist/services/graphql/schema/get-types.js +69 -101
- package/dist/services/graphql/schema/index.js +74 -92
- package/dist/services/graphql/schema/parse-args.js +1 -2
- package/dist/services/graphql/schema/parse-query.js +8 -21
- package/dist/services/graphql/schema/read.js +83 -106
- package/dist/services/graphql/schema/write.js +36 -41
- package/dist/services/graphql/subscription.js +30 -51
- package/dist/services/graphql/types/bigint.js +5 -15
- package/dist/services/graphql/types/string-or-float.js +2 -6
- package/dist/services/graphql/utils/add-path-to-validation-error.js +1 -3
- package/dist/services/graphql/utils/aggregate-query.js +2 -6
- package/dist/services/graphql/utils/dedupe-resolvers.js +8 -13
- package/dist/services/graphql/utils/filter-replace-m2a.js +9 -18
- package/dist/services/graphql/utils/process-error.js +21 -31
- package/dist/services/graphql/utils/replace-fragments.js +2 -5
- package/dist/services/graphql/utils/replace-funcs.js +2 -5
- package/dist/services/graphql/utils/sanitize-gql-schema.js +10 -21
- package/dist/services/import-export.js +68 -143
- package/dist/services/items.js +126 -271
- package/dist/services/mail/index.js +13 -26
- package/dist/services/mail/rate-limiter.js +6 -10
- package/dist/services/meta.js +4 -9
- package/dist/services/notifications.js +2 -3
- package/dist/services/operations.js +3 -6
- package/dist/services/payload.js +188 -316
- package/dist/services/permissions.js +14 -26
- package/dist/services/policies.js +7 -18
- package/dist/services/relations.js +82 -181
- package/dist/services/revisions.js +8 -15
- package/dist/services/roles.js +4 -12
- package/dist/services/schema.js +4 -9
- package/dist/services/server.js +31 -66
- package/dist/services/shares.js +25 -35
- package/dist/services/specifications.js +87 -139
- package/dist/services/tfa.js +8 -24
- package/dist/services/translations.js +6 -12
- package/dist/services/tus/data-store.js +23 -55
- package/dist/services/tus/lockers.js +4 -10
- package/dist/services/tus/server.js +2 -5
- package/dist/services/users.js +79 -153
- package/dist/services/utils.js +12 -31
- package/dist/services/versions.js +52 -96
- package/dist/services/websocket.js +8 -12
- package/dist/storage/get-storage-driver.js +2 -5
- package/dist/storage/register-drivers.js +1 -3
- package/dist/storage/register-locations.js +2 -4
- package/dist/synchronization.js +6 -17
- package/dist/telemetry/counter/use-buffered-counter.js +6 -22
- package/dist/telemetry/counter/use-counters.js +2 -6
- package/dist/telemetry/lib/send-report.js +2 -6
- package/dist/telemetry/lib/track.js +3 -8
- package/dist/telemetry/utils/check-user-limits.js +3 -9
- package/dist/telemetry/utils/format-api-request-counts.js +1 -3
- package/dist/telemetry/utils/get-extension-count.js +3 -8
- package/dist/telemetry/utils/get-item-count.js +2 -5
- package/dist/telemetry/utils/get-settings.js +2 -3
- package/dist/telemetry/utils/get-user-item-count.js +2 -4
- package/dist/telemetry/utils/should-check-user-limits.js +1 -3
- package/dist/types/index.js +0 -6
- package/dist/utils/apply-diff.js +111 -143
- package/dist/utils/apply-snapshot.js +1 -2
- package/dist/utils/calculate-field-depth.js +6 -19
- package/dist/utils/construct-flow-tree.js +5 -12
- package/dist/utils/create-admin.js +1 -2
- package/dist/utils/deep-map-response.js +31 -35
- package/dist/utils/encrypt.js +2 -3
- package/dist/utils/fetch-user-count/fetch-access-lookup.js +5 -15
- package/dist/utils/fetch-user-count/get-user-count-query.js +4 -12
- package/dist/utils/filter-items.js +9 -14
- package/dist/utils/freeze-schema.js +3 -8
- package/dist/utils/generate-translations.js +87 -137
- package/dist/utils/get-accountability-for-role.js +12 -17
- package/dist/utils/get-accountability-for-token.js +25 -31
- package/dist/utils/get-address.js +2 -7
- package/dist/utils/get-allowed-log-levels.js +1 -3
- package/dist/utils/get-auth-providers.js +12 -14
- package/dist/utils/get-cache-headers.js +2 -4
- package/dist/utils/get-cache-key.js +16 -4
- package/dist/utils/get-collection-from-alias.js +1 -6
- package/dist/utils/get-column-path.js +10 -21
- package/dist/utils/get-config-from-env.js +6 -15
- package/dist/utils/get-default-index-name.js +2 -4
- package/dist/utils/get-default-value.js +5 -9
- package/dist/utils/get-field-relational-depth.js +2 -5
- package/dist/utils/get-graphql-query-and-variables.js +1 -2
- package/dist/utils/get-graphql-type.js +1 -3
- package/dist/utils/get-ip-from-req.js +6 -15
- package/dist/utils/get-local-type.js +5 -13
- package/dist/utils/get-milliseconds.js +1 -3
- package/dist/utils/get-module-default.js +1 -3
- package/dist/utils/get-schema.js +9 -21
- package/dist/utils/get-secret.js +2 -6
- package/dist/utils/get-snapshot-diff.js +15 -23
- package/dist/utils/get-snapshot.js +6 -17
- package/dist/utils/is-directus-jwt.js +1 -2
- package/dist/utils/is-field-allowed.js +1 -3
- package/dist/utils/job-queue.js +2 -7
- package/dist/utils/jwt.js +7 -13
- package/dist/utils/md.js +1 -2
- package/dist/utils/parse-filter-key.js +2 -4
- package/dist/utils/parse-numeric-string.js +5 -11
- package/dist/utils/permissions-cacheable.js +9 -22
- package/dist/utils/redact-object.js +27 -57
- package/dist/utils/reduce-schema.js +8 -25
- package/dist/utils/sanitize-query.js +46 -98
- package/dist/utils/sanitize-schema.js +2 -3
- package/dist/utils/schedule.js +2 -6
- package/dist/utils/should-clear-cache.js +2 -6
- package/dist/utils/should-skip-cache.js +3 -8
- package/dist/utils/split-fields.js +4 -12
- package/dist/utils/stall.js +1 -3
- package/dist/utils/store.js +2 -5
- package/dist/utils/transaction.js +29 -58
- package/dist/utils/transformations.js +28 -43
- package/dist/utils/translations-shared.js +4 -12
- package/dist/utils/url.js +3 -10
- package/dist/utils/user-name.js +4 -12
- package/dist/utils/validate-diff.js +10 -35
- package/dist/utils/validate-env.js +3 -5
- package/dist/utils/validate-keys.js +4 -10
- package/dist/utils/validate-query.js +67 -118
- package/dist/utils/validate-snapshot.js +3 -9
- package/dist/utils/validate-storage.js +12 -19
- package/dist/utils/validate-user-count-integrity.js +3 -9
- package/dist/utils/verify-session-jwt.js +2 -6
- package/dist/utils/versioning/handle-version.js +10 -29
- package/dist/utils/versioning/merge-version-data.js +1 -5
- package/dist/utils/versioning/split-recursive.js +6 -3
- package/dist/websocket/authenticate.js +7 -18
- package/dist/websocket/collab/calculate-cache-metadata.js +33 -51
- package/dist/websocket/collab/collab.js +49 -113
- package/dist/websocket/collab/filter-to-fields.js +2 -5
- package/dist/websocket/collab/messenger.js +48 -73
- package/dist/websocket/collab/payload-permissions.js +20 -51
- package/dist/websocket/collab/permissions-cache.js +17 -46
- package/dist/websocket/collab/room.js +57 -124
- package/dist/websocket/collab/verify-permissions.js +37 -48
- package/dist/websocket/controllers/base.js +34 -61
- package/dist/websocket/controllers/graphql.js +11 -18
- package/dist/websocket/controllers/index.js +3 -12
- package/dist/websocket/controllers/logs.js +3 -7
- package/dist/websocket/errors.js +2 -5
- package/dist/websocket/handlers/heartbeat.js +11 -19
- package/dist/websocket/handlers/index.js +5 -15
- package/dist/websocket/handlers/items.js +15 -26
- package/dist/websocket/handlers/logs.js +24 -41
- package/dist/websocket/handlers/subscribe.js +37 -66
- package/dist/websocket/utils/get-expires-at-for-token.js +1 -3
- package/dist/websocket/utils/items.js +10 -27
- package/dist/websocket/utils/message.js +6 -10
- package/package.json +23 -23
- package/dist/__utils__/items-utils.js +0 -32
- package/dist/__utils__/schemas.js +0 -297
- package/dist/__utils__/snapshots.js +0 -899
- package/dist/database/run-ast/lib/apply-query/mock.js +0 -9
- package/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +0 -445
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/index.js +0 -176
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/system/policy.js +0 -54
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/any/any.js +0 -13
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/any/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/argument/argument.js +0 -15
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/argument/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/array/array.js +0 -16
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/array/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/async-iterator/async-iterator.js +0 -16
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/async-iterator/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/awaited/awaited.js +0 -37
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/awaited/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/bigint/bigint.js +0 -16
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/bigint/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/boolean/boolean.js +0 -16
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/boolean/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/clone/index.js +0 -4
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/clone/type.js +0 -17
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/clone/value.js +0 -35
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/composite/composite.js +0 -42
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/composite/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/computed/computed.js +0 -16
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/computed/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/const/const.js +0 -52
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/const/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/constructor/constructor.js +0 -17
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/constructor/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/constructor-parameters/constructor-parameters.js +0 -14
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/constructor-parameters/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/create/immutable.js +0 -32
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/create/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/create/type.js +0 -20
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/date/date.js +0 -15
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/date/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/discard/discard.js +0 -12
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/discard/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/enum/enum.js +0 -23
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/enum/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/error/error.js +0 -10
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/error/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-mapped-result.js +0 -20
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-template-literal.js +0 -11
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude.js +0 -25
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/exclude/index.js +0 -5
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extends/extends-check.js +0 -267
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-key.js +0 -29
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-result.js +0 -21
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extends/extends-undefined.js +0 -21
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extends/extends.js +0 -20
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extends/index.js +0 -7
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-mapped-result.js +0 -20
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-template-literal.js +0 -11
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extract/extract.js +0 -25
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extract/index.js +0 -5
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/function/function.js +0 -17
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/function/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/guard/index.js +0 -5
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/guard/kind.js +0 -204
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/guard/type.js +0 -293
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/guard/value.js +0 -68
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/helpers/helpers.js +0 -8
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/helpers/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/indexed/index.js +0 -6
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-key.js +0 -27
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-result.js +0 -24
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-property-keys.js +0 -24
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed.js +0 -67
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/instance-type/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/instance-type/instance-type.js +0 -13
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/instantiate/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/instantiate/instantiate.js +0 -102
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/integer/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/integer/integer.js +0 -15
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intersect/index.js +0 -5
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-create.js +0 -23
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-evaluated.js +0 -35
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-type.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect.js +0 -17
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intrinsic/capitalize.js +0 -10
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intrinsic/index.js +0 -8
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic-from-mapped-key.js +0 -30
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic.js +0 -54
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intrinsic/lowercase.js +0 -10
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intrinsic/uncapitalize.js +0 -10
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intrinsic/uppercase.js +0 -10
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/iterator/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/iterator/iterator.js +0 -16
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/keyof/index.js +0 -6
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-from-mapped-result.js +0 -21
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-entries.js +0 -17
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-keys.js +0 -52
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof.js +0 -38
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/literal/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/literal/literal.js +0 -16
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/mapped/index.js +0 -5
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/mapped/mapped-key.js +0 -14
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/mapped/mapped-result.js +0 -14
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/mapped/mapped.js +0 -86
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/module/compute.js +0 -144
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/module/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/module/module.js +0 -44
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/never/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/never/never.js +0 -15
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/not/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/not/not.js +0 -15
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/null/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/null/null.js +0 -15
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/number/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/number/number.js +0 -15
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/object/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/object/object.js +0 -33
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/omit/index.js +0 -5
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-key.js +0 -27
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-result.js +0 -21
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/omit/omit.js +0 -65
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/optional/index.js +0 -4
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/optional/optional-from-mapped-result.js +0 -20
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/optional/optional.js +0 -29
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/parameters/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/parameters/parameters.js +0 -14
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/partial/index.js +0 -4
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/partial/partial-from-mapped-result.js +0 -21
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/partial/partial.js +0 -62
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/patterns/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/patterns/patterns.js +0 -12
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/pick/index.js +0 -5
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-key.js +0 -27
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-result.js +0 -21
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/pick/pick.js +0 -63
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/promise/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/promise/promise.js +0 -16
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/readonly/index.js +0 -4
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/readonly/readonly-from-mapped-result.js +0 -20
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/readonly/readonly.js +0 -29
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/readonly-optional/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/readonly-optional/readonly-optional.js +0 -13
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/record/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/record/record.js +0 -92
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/recursive/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/recursive/recursive.js +0 -24
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/ref/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/ref/ref.js +0 -19
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/regexp/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/regexp/regexp.js +0 -19
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/registry/format.js +0 -30
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/registry/index.js +0 -4
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/registry/type.js +0 -30
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/required/index.js +0 -4
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/required/required-from-mapped-result.js +0 -20
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/required/required.js +0 -60
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/rest/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/rest/rest.js +0 -13
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/return-type/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/return-type/return-type.js +0 -13
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/schema/anyschema.js +0 -1
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/schema/index.js +0 -4
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/schema/schema.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/sets/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/sets/set.js +0 -42
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/static/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/static/static.js +0 -1
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/string/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/string/string.js +0 -15
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/symbol/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/symbol/symbol.js +0 -15
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/symbols/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.js +0 -14
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/template-literal/finite.js +0 -28
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/template-literal/generate.js +0 -37
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/template-literal/index.js +0 -9
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/template-literal/parse.js +0 -125
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/template-literal/pattern.js +0 -24
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/template-literal/syntax.js +0 -55
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/template-literal/template-literal.js +0 -20
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/template-literal/union.js +0 -16
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/transform/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/transform/transform.js +0 -51
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/tuple/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/tuple/tuple.js +0 -24
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/type/index.js +0 -10
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/type/javascript.js +0 -123
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/type/json.js +0 -263
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/type/type.js +0 -191
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/uint8array/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/uint8array/uint8array.js +0 -15
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/undefined/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/undefined/undefined.js +0 -15
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/union/index.js +0 -5
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/union/union-create.js +0 -14
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/union/union-evaluated.js +0 -33
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/union/union-type.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/union/union.js +0 -13
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/unknown/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/unknown/unknown.js +0 -12
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/unsafe/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/unsafe/unsafe.js +0 -12
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/void/index.js +0 -3
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/void/void.js +0 -15
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/value/guard/guard.js +0 -140
- package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/value/guard/index.js +0 -3
- package/dist/node_modules/.pnpm/@vitest_expect@3.2.4/node_modules/@vitest/expect/dist/index.js +0 -1714
- package/dist/node_modules/.pnpm/@vitest_pretty-format@3.2.4/node_modules/@vitest/pretty-format/dist/index.js +0 -1287
- package/dist/node_modules/.pnpm/@vitest_runner@3.2.4/node_modules/@vitest/runner/dist/chunk-hooks.js +0 -2151
- package/dist/node_modules/.pnpm/@vitest_runner@3.2.4/node_modules/@vitest/runner/dist/index.js +0 -8
- package/dist/node_modules/.pnpm/@vitest_runner@3.2.4/node_modules/@vitest/runner/dist/utils.js +0 -8
- package/dist/node_modules/.pnpm/@vitest_snapshot@3.2.4/node_modules/@vitest/snapshot/dist/index.js +0 -2082
- package/dist/node_modules/.pnpm/@vitest_spy@3.2.4/node_modules/@vitest/spy/dist/index.js +0 -192
- package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.js +0 -158
- package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/diff.js +0 -1535
- package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/error.js +0 -155
- package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/helpers.js +0 -244
- package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/index.js +0 -621
- package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/source-map.js +0 -890
- package/dist/node_modules/.pnpm/chai@5.3.3/node_modules/chai/index.js +0 -3558
- package/dist/node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/branding.js +0 -13
- package/dist/node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/index.js +0 -115
- package/dist/node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/messages.js +0 -77
- package/dist/node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/overloads.js +0 -13
- package/dist/node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/utils.js +0 -30
- package/dist/node_modules/.pnpm/js-tokens@9.0.1/node_modules/js-tokens/index.js +0 -398
- package/dist/node_modules/.pnpm/knex-mock-client@3.0.2_knex@3.1.0_mysql2@3.15.3_pg@8.16.3_sqlite3@5.1.7_tedious@18.6.1_/node_modules/knex-mock-client/dist/MockClient.js +0 -79
- package/dist/node_modules/.pnpm/knex-mock-client@3.0.2_knex@3.1.0_mysql2@3.15.3_pg@8.16.3_sqlite3@5.1.7_tedious@18.6.1_/node_modules/knex-mock-client/dist/MockConnection.js +0 -64
- package/dist/node_modules/.pnpm/knex-mock-client@3.0.2_knex@3.1.0_mysql2@3.15.3_pg@8.16.3_sqlite3@5.1.7_tedious@18.6.1_/node_modules/knex-mock-client/dist/Tracker.js +0 -185
- package/dist/node_modules/.pnpm/knex-mock-client@3.0.2_knex@3.1.0_mysql2@3.15.3_pg@8.16.3_sqlite3@5.1.7_tedious@18.6.1_/node_modules/knex-mock-client/dist/constants.js +0 -30
- package/dist/node_modules/.pnpm/knex-mock-client@3.0.2_knex@3.1.0_mysql2@3.15.3_pg@8.16.3_sqlite3@5.1.7_tedious@18.6.1_/node_modules/knex-mock-client/dist/index.js +0 -37
- package/dist/node_modules/.pnpm/knex-mock-client@3.0.2_knex@3.1.0_mysql2@3.15.3_pg@8.16.3_sqlite3@5.1.7_tedious@18.6.1_/node_modules/knex-mock-client/dist/utils.js +0 -17
- package/dist/node_modules/.pnpm/lodash.clonedeep@4.5.0/node_modules/lodash.clonedeep/index.js +0 -1486
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/arguments.js +0 -11
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/array.js +0 -18
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/bigint.js +0 -11
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/class.js +0 -19
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/date.js +0 -15
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/error.js +0 -39
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/function.js +0 -14
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/helpers.js +0 -141
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/html.js +0 -43
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/index.js +0 -138
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/map.js +0 -25
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/number.js +0 -22
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/object.js +0 -27
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/promise.js +0 -6
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/regexp.js +0 -12
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/set.js +0 -18
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/string.js +0 -27
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/symbol.js +0 -10
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/typedarray.js +0 -36
- package/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +0 -1258
- package/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +0 -21
- package/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +0 -478
- package/dist/node_modules/.pnpm/strip-literal@3.1.0/node_modules/strip-literal/dist/index.js +0 -84
- package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/chunk-BVHSVHOK.js +0 -85
- package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/node.js +0 -15
- package/dist/node_modules/.pnpm/tinyspy@4.0.4/node_modules/tinyspy/dist/index.js +0 -158
- package/dist/node_modules/.pnpm/vitest@3.2.4_@types_node@22.13.14_@vitest_ui@3.2.4_happy-dom@20.8.9_jiti@2.6.1_jsdom@20_c24d183060b6f93f55300b66d0779768/node_modules/vitest/dist/chunks/_commonjsHelpers.BFTU3MAI.js +0 -8
- package/dist/node_modules/.pnpm/vitest@3.2.4_@types_node@22.13.14_@vitest_ui@3.2.4_happy-dom@20.8.9_jiti@2.6.1_jsdom@20_c24d183060b6f93f55300b66d0779768/node_modules/vitest/dist/chunks/benchmark.CYdenmiT.js +0 -41
- package/dist/node_modules/.pnpm/vitest@3.2.4_@types_node@22.13.14_@vitest_ui@3.2.4_happy-dom@20.8.9_jiti@2.6.1_jsdom@20_c24d183060b6f93f55300b66d0779768/node_modules/vitest/dist/chunks/date.Bq6ZW5rf.js +0 -50
- package/dist/node_modules/.pnpm/vitest@3.2.4_@types_node@22.13.14_@vitest_ui@3.2.4_happy-dom@20.8.9_jiti@2.6.1_jsdom@20_c24d183060b6f93f55300b66d0779768/node_modules/vitest/dist/chunks/index.CdQS2e2Q.js +0 -38
- package/dist/node_modules/.pnpm/vitest@3.2.4_@types_node@22.13.14_@vitest_ui@3.2.4_happy-dom@20.8.9_jiti@2.6.1_jsdom@20_c24d183060b6f93f55300b66d0779768/node_modules/vitest/dist/chunks/utils.XdZDrNZV.js +0 -66
- package/dist/node_modules/.pnpm/vitest@3.2.4_@types_node@22.13.14_@vitest_ui@3.2.4_happy-dom@20.8.9_jiti@2.6.1_jsdom@20_c24d183060b6f93f55300b66d0779768/node_modules/vitest/dist/chunks/vi.bdSIJ99Y.js +0 -2986
- package/dist/node_modules/.pnpm/vitest@3.2.4_@types_node@22.13.14_@vitest_ui@3.2.4_happy-dom@20.8.9_jiti@2.6.1_jsdom@20_c24d183060b6f93f55300b66d0779768/node_modules/vitest/dist/index.js +0 -24
- package/dist/test-utils/cache.js +0 -64
- package/dist/test-utils/controllers.js +0 -101
- package/dist/test-utils/database.js +0 -54
- package/dist/test-utils/emitter.js +0 -38
- package/dist/test-utils/env.js +0 -77
- package/dist/test-utils/knex.js +0 -222
- package/dist/test-utils/schema.js +0 -35
- package/dist/test-utils/services/fields-service.js +0 -38
- package/dist/test-utils/services/files-service.js +0 -35
- package/dist/test-utils/services/folders-service.js +0 -34
- package/dist/test-utils/services/items-service.js +0 -52
- package/dist/test-utils/storage.js +0 -150
|
@@ -14,11 +14,10 @@ var DeploymentProjectsService = class DeploymentProjectsService extends ItemsSer
|
|
|
14
14
|
* Find a project by its provider-side external ID. Returns null if not tracked.
|
|
15
15
|
*/
|
|
16
16
|
async readByExternalId(externalId) {
|
|
17
|
-
|
|
17
|
+
return (await this.readByQuery({
|
|
18
18
|
filter: { external_id: { _eq: externalId } },
|
|
19
19
|
limit: 1
|
|
20
|
-
});
|
|
21
|
-
return results?.[0] ?? null;
|
|
20
|
+
}))?.[0] ?? null;
|
|
22
21
|
}
|
|
23
22
|
/**
|
|
24
23
|
* List provider projects merged with DB selection, syncing metadata.
|
|
@@ -38,9 +37,7 @@ var DeploymentProjectsService = class DeploymentProjectsService extends ItemsSer
|
|
|
38
37
|
deployable: providerProject.deployable
|
|
39
38
|
};
|
|
40
39
|
}).filter((update) => update !== null);
|
|
41
|
-
if (toUpdate.length > 0)
|
|
42
|
-
await this.updateBatch(toUpdate);
|
|
43
|
-
}
|
|
40
|
+
if (toUpdate.length > 0) await this.updateBatch(toUpdate);
|
|
44
41
|
return providerProjects.map((project) => ({
|
|
45
42
|
id: selectedMap.get(project.id)?.id ?? null,
|
|
46
43
|
external_id: project.id,
|
|
@@ -55,14 +52,10 @@ var DeploymentProjectsService = class DeploymentProjectsService extends ItemsSer
|
|
|
55
52
|
async validateDeployable(provider, projectsToCreate) {
|
|
56
53
|
if (projectsToCreate.length === 0) return;
|
|
57
54
|
const config = await this.readConfig(provider);
|
|
58
|
-
const
|
|
59
|
-
const providerProjects = await driver.listProjects();
|
|
55
|
+
const providerProjects = await this.createDriver(config).listProjects();
|
|
60
56
|
const projectsMap = new Map(providerProjects.map((p) => [p.id, p]));
|
|
61
57
|
const nonDeployable = projectsToCreate.filter((p) => !projectsMap.get(p.external_id)?.deployable);
|
|
62
|
-
if (nonDeployable.length > 0) {
|
|
63
|
-
const names = nonDeployable.map((p) => projectsMap.get(p.external_id)?.name || p.external_id).join(", ");
|
|
64
|
-
throw new InvalidPayloadError({ reason: `Cannot add non-deployable projects: ${names}` });
|
|
65
|
-
}
|
|
58
|
+
if (nonDeployable.length > 0) throw new InvalidPayloadError({ reason: `Cannot add non-deployable projects: ${nonDeployable.map((p) => projectsMap.get(p.external_id)?.name || p.external_id).join(", ")}` });
|
|
66
59
|
}
|
|
67
60
|
/**
|
|
68
61
|
* Update project selection (create/delete)
|
|
@@ -87,19 +80,15 @@ var DeploymentProjectsService = class DeploymentProjectsService extends ItemsSer
|
|
|
87
80
|
schema: this.schema,
|
|
88
81
|
knex: trx
|
|
89
82
|
});
|
|
90
|
-
if (deleteIds.length > 0)
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
framework: p.framework,
|
|
100
|
-
deployable: p.deployable
|
|
101
|
-
})));
|
|
102
|
-
}
|
|
83
|
+
if (deleteIds.length > 0) await trxService.deleteMany(deleteIds);
|
|
84
|
+
if (enrichedCreate.length > 0) await trxService.createMany(enrichedCreate.map((p) => ({
|
|
85
|
+
deployment: config.id,
|
|
86
|
+
external_id: p.external_id,
|
|
87
|
+
name: p.name,
|
|
88
|
+
url: p.url,
|
|
89
|
+
framework: p.framework,
|
|
90
|
+
deployable: p.deployable
|
|
91
|
+
})));
|
|
103
92
|
return trxService.readByQuery({
|
|
104
93
|
filter: { deployment: { _eq: config.id } },
|
|
105
94
|
limit: -1
|
|
@@ -110,18 +99,15 @@ var DeploymentProjectsService = class DeploymentProjectsService extends ItemsSer
|
|
|
110
99
|
* Read deployment config by provider (null accountability for internal use).
|
|
111
100
|
*/
|
|
112
101
|
async readConfig(provider) {
|
|
113
|
-
const
|
|
102
|
+
const results = await new ItemsService("directus_deployments", {
|
|
114
103
|
knex: this.knex,
|
|
115
104
|
schema: this.schema,
|
|
116
105
|
accountability: null
|
|
117
|
-
})
|
|
118
|
-
const results = await internalService.readByQuery({
|
|
106
|
+
}).readByQuery({
|
|
119
107
|
filter: { provider: { _eq: provider } },
|
|
120
108
|
limit: 1
|
|
121
109
|
});
|
|
122
|
-
if (!results || results.length === 0) {
|
|
123
|
-
throw new Error(`Deployment config for "${provider}" not found`);
|
|
124
|
-
}
|
|
110
|
+
if (!results || results.length === 0) throw new Error(`Deployment config for "${provider}" not found`);
|
|
125
111
|
return results[0];
|
|
126
112
|
}
|
|
127
113
|
createDriver(config) {
|
|
@@ -14,19 +14,15 @@ import { has, isEmpty } from "lodash-es";
|
|
|
14
14
|
//#region src/services/deployment.ts
|
|
15
15
|
const env = useEnv();
|
|
16
16
|
const DEPLOYMENT_CACHE_TTL = getMilliseconds(env["CACHE_DEPLOYMENT_TTL"]) || 5e3;
|
|
17
|
-
const SYNC_THRESHOLD_MS =
|
|
17
|
+
const SYNC_THRESHOLD_MS = 3600 * 1e3;
|
|
18
18
|
var DeploymentService = class DeploymentService extends ItemsService {
|
|
19
19
|
constructor(options) {
|
|
20
20
|
super("directus_deployments", options);
|
|
21
21
|
}
|
|
22
22
|
async createOne(data, opts) {
|
|
23
23
|
const provider = data.provider;
|
|
24
|
-
if (!provider) {
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
if (isEmpty(data.credentials)) {
|
|
28
|
-
throw new InvalidPayloadError({ reason: "Credentials are required" });
|
|
29
|
-
}
|
|
24
|
+
if (!provider) throw new InvalidPayloadError({ reason: "Provider is required" });
|
|
25
|
+
if (isEmpty(data.credentials)) throw new InvalidPayloadError({ reason: "Credentials are required" });
|
|
30
26
|
let credentials;
|
|
31
27
|
try {
|
|
32
28
|
credentials = parseValue(data.credentials, {});
|
|
@@ -35,7 +31,7 @@ var DeploymentService = class DeploymentService extends ItemsService {
|
|
|
35
31
|
}
|
|
36
32
|
let options;
|
|
37
33
|
try {
|
|
38
|
-
options = parseValue(data.options,
|
|
34
|
+
options = parseValue(data.options, void 0);
|
|
39
35
|
} catch {
|
|
40
36
|
throw new InvalidPayloadError({ reason: "Options must be valid JSON" });
|
|
41
37
|
}
|
|
@@ -52,42 +48,33 @@ var DeploymentService = class DeploymentService extends ItemsService {
|
|
|
52
48
|
...data,
|
|
53
49
|
credentials: JSON.stringify(credentials)
|
|
54
50
|
};
|
|
55
|
-
if (!isEmpty(options))
|
|
56
|
-
payload.options = JSON.stringify(options);
|
|
57
|
-
}
|
|
51
|
+
if (!isEmpty(options)) payload.options = JSON.stringify(options);
|
|
58
52
|
return super.createOne(payload, opts);
|
|
59
53
|
}
|
|
60
54
|
async updateOne(key, data, opts) {
|
|
61
55
|
const hasCredentials = has(data, "credentials");
|
|
62
56
|
const hasOptions = has(data, "options");
|
|
63
|
-
if (!hasCredentials && !hasOptions)
|
|
64
|
-
return super.updateOne(key, data, opts);
|
|
65
|
-
}
|
|
57
|
+
if (!hasCredentials && !hasOptions) return super.updateOne(key, data, opts);
|
|
66
58
|
const existing = await this.readOne(key);
|
|
67
59
|
const provider = existing.provider;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
} catch {
|
|
78
|
-
throw new InvalidPayloadError({ reason: "Credentials must be valid JSON or object" });
|
|
79
|
-
}
|
|
60
|
+
let credentials = parseValue((await this.readConfig(provider)).credentials, {});
|
|
61
|
+
if (hasCredentials) try {
|
|
62
|
+
const parsed = parseValue(data.credentials, {});
|
|
63
|
+
credentials = {
|
|
64
|
+
...credentials,
|
|
65
|
+
...parsed
|
|
66
|
+
};
|
|
67
|
+
} catch {
|
|
68
|
+
throw new InvalidPayloadError({ reason: "Credentials must be valid JSON or object" });
|
|
80
69
|
}
|
|
81
|
-
let options = existing.options ??
|
|
70
|
+
let options = existing.options ?? void 0;
|
|
82
71
|
if (hasOptions) {
|
|
83
72
|
try {
|
|
84
|
-
options = parseValue(data.options,
|
|
73
|
+
options = parseValue(data.options, void 0);
|
|
85
74
|
} catch {
|
|
86
75
|
throw new InvalidPayloadError({ reason: "Options must be valid JSON" });
|
|
87
76
|
}
|
|
88
|
-
if (isEmpty(options)) {
|
|
89
|
-
throw new InvalidPayloadError({ reason: "Options must not be empty" });
|
|
90
|
-
}
|
|
77
|
+
if (isEmpty(options)) throw new InvalidPayloadError({ reason: "Options must not be empty" });
|
|
91
78
|
}
|
|
92
79
|
const driver = getDeploymentDriver(provider, credentials, options);
|
|
93
80
|
try {
|
|
@@ -112,9 +99,7 @@ var DeploymentService = class DeploymentService extends ItemsService {
|
|
|
112
99
|
filter: mergeFilters({ provider: { _eq: provider } }, query?.filter ?? null),
|
|
113
100
|
limit: 1
|
|
114
101
|
});
|
|
115
|
-
if (!results || results.length === 0) {
|
|
116
|
-
throw new Error(`Deployment config for "${provider}" not found`);
|
|
117
|
-
}
|
|
102
|
+
if (!results || results.length === 0) throw new Error(`Deployment config for "${provider}" not found`);
|
|
118
103
|
return results[0];
|
|
119
104
|
}
|
|
120
105
|
/**
|
|
@@ -129,14 +114,10 @@ var DeploymentService = class DeploymentService extends ItemsService {
|
|
|
129
114
|
*/
|
|
130
115
|
async deleteByProvider(provider) {
|
|
131
116
|
const deployment = await this.readByProvider(provider);
|
|
132
|
-
if (deployment.webhook_ids && deployment.webhook_ids.length > 0) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
} catch (err) {
|
|
137
|
-
const logger = useLogger();
|
|
138
|
-
logger.error(`Failed to unregister webhook for ${provider}: ${err}`);
|
|
139
|
-
}
|
|
117
|
+
if (deployment.webhook_ids && deployment.webhook_ids.length > 0) try {
|
|
118
|
+
await (await this.getDriver(provider)).unregisterWebhook(deployment.webhook_ids);
|
|
119
|
+
} catch (err) {
|
|
120
|
+
useLogger().error(`Failed to unregister webhook for ${provider}: ${err}`);
|
|
140
121
|
}
|
|
141
122
|
return this.deleteOne(deployment.id);
|
|
142
123
|
}
|
|
@@ -144,18 +125,15 @@ var DeploymentService = class DeploymentService extends ItemsService {
|
|
|
144
125
|
* Read deployment config with decrypted credentials (internal use)
|
|
145
126
|
*/
|
|
146
127
|
async readConfig(provider) {
|
|
147
|
-
const
|
|
128
|
+
const results = await new ItemsService("directus_deployments", {
|
|
148
129
|
knex: this.knex,
|
|
149
130
|
schema: this.schema,
|
|
150
131
|
accountability: null
|
|
151
|
-
})
|
|
152
|
-
const results = await internalService.readByQuery({
|
|
132
|
+
}).readByQuery({
|
|
153
133
|
filter: { provider: { _eq: provider } },
|
|
154
134
|
limit: 1
|
|
155
135
|
});
|
|
156
|
-
if (!results || results.length === 0) {
|
|
157
|
-
throw new Error(`Deployment config for "${provider}" not found`);
|
|
158
|
-
}
|
|
136
|
+
if (!results || results.length === 0) throw new Error(`Deployment config for "${provider}" not found`);
|
|
159
137
|
return results[0];
|
|
160
138
|
}
|
|
161
139
|
/**
|
|
@@ -185,16 +163,14 @@ var DeploymentService = class DeploymentService extends ItemsService {
|
|
|
185
163
|
const logger = useLogger();
|
|
186
164
|
logger.debug(`[webhook:${provider}] Starting webhook sync`);
|
|
187
165
|
const config = await this.readConfig(provider);
|
|
188
|
-
const
|
|
166
|
+
const projectExternalIds = (await new ItemsService("directus_deployment_projects", {
|
|
189
167
|
knex: this.knex,
|
|
190
168
|
schema: this.schema,
|
|
191
169
|
accountability: null
|
|
192
|
-
})
|
|
193
|
-
const projects = await projectsService.readByQuery({
|
|
170
|
+
}).readByQuery({
|
|
194
171
|
filter: { deployment: { _eq: config.id } },
|
|
195
172
|
limit: -1
|
|
196
|
-
});
|
|
197
|
-
const projectExternalIds = projects.map((p) => p.external_id);
|
|
173
|
+
})).map((p) => p.external_id);
|
|
198
174
|
const driver = await this.getDriver(provider);
|
|
199
175
|
if (projectExternalIds.length === 0) {
|
|
200
176
|
if (config.webhook_ids && config.webhook_ids.length > 0) {
|
|
@@ -219,8 +195,7 @@ var DeploymentService = class DeploymentService extends ItemsService {
|
|
|
219
195
|
logger.warn(`[webhook:${provider}] Failed to unregister: ${err}`);
|
|
220
196
|
}
|
|
221
197
|
}
|
|
222
|
-
const
|
|
223
|
-
const webhookUrl = `${publicUrl}/deployments/webhooks/${provider}`;
|
|
198
|
+
const webhookUrl = `${env["PUBLIC_URL"]}/deployments/webhooks/${provider}`;
|
|
224
199
|
logger.debug(`[webhook:${provider}] Registering webhook → ${webhookUrl} for ${projectExternalIds.length} project(s)`);
|
|
225
200
|
const result = await driver.registerWebhook(webhookUrl, projectExternalIds);
|
|
226
201
|
await super.updateOne(config.id, {
|
|
@@ -236,14 +211,11 @@ var DeploymentService = class DeploymentService extends ItemsService {
|
|
|
236
211
|
const cacheKey = `${provider}:projects`;
|
|
237
212
|
const { deploymentCache } = getCache();
|
|
238
213
|
const cached = await getCacheValueWithTTL(deploymentCache, cacheKey);
|
|
239
|
-
if (cached) {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
}
|
|
245
|
-
const driver = await this.getDriver(provider);
|
|
246
|
-
const projects = await driver.listProjects();
|
|
214
|
+
if (cached) return {
|
|
215
|
+
data: cached.data,
|
|
216
|
+
remainingTTL: cached.remainingTTL
|
|
217
|
+
};
|
|
218
|
+
const projects = await (await this.getDriver(provider)).listProjects();
|
|
247
219
|
await setCacheValueWithExpiry(deploymentCache, cacheKey, projects, DEPLOYMENT_CACHE_TTL);
|
|
248
220
|
return {
|
|
249
221
|
data: projects,
|
|
@@ -257,14 +229,11 @@ var DeploymentService = class DeploymentService extends ItemsService {
|
|
|
257
229
|
const cacheKey = `${provider}:project:${projectId}`;
|
|
258
230
|
const { deploymentCache } = getCache();
|
|
259
231
|
const cached = await getCacheValueWithTTL(deploymentCache, cacheKey);
|
|
260
|
-
if (cached) {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
}
|
|
266
|
-
const driver = await this.getDriver(provider);
|
|
267
|
-
const project = await driver.getProject(projectId);
|
|
232
|
+
if (cached) return {
|
|
233
|
+
data: cached.data,
|
|
234
|
+
remainingTTL: cached.remainingTTL
|
|
235
|
+
};
|
|
236
|
+
const project = await (await this.getDriver(provider)).getProject(projectId);
|
|
268
237
|
await setCacheValueWithExpiry(deploymentCache, cacheKey, project, DEPLOYMENT_CACHE_TTL);
|
|
269
238
|
return {
|
|
270
239
|
data: project,
|
|
@@ -288,27 +257,24 @@ var DeploymentService = class DeploymentService extends ItemsService {
|
|
|
288
257
|
filter: { deployment: { _eq: deployment.id } },
|
|
289
258
|
limit: -1
|
|
290
259
|
});
|
|
291
|
-
if (selectedProjects.length === 0) {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
};
|
|
300
|
-
}
|
|
260
|
+
if (selectedProjects.length === 0) return {
|
|
261
|
+
projects: [],
|
|
262
|
+
stats: {
|
|
263
|
+
active_deployments: 0,
|
|
264
|
+
successful_builds: 0,
|
|
265
|
+
failed_builds: 0
|
|
266
|
+
}
|
|
267
|
+
};
|
|
301
268
|
const projectIds = selectedProjects.map((p) => p.id);
|
|
302
269
|
const [latestRuns, activeResult, statusCounts] = await Promise.all([
|
|
303
270
|
Promise.all(projectIds.map(async (projectId) => {
|
|
304
|
-
const runs = await runsService.readByQuery({
|
|
305
|
-
filter: { project: { _eq: projectId } },
|
|
306
|
-
sort: ["-date_created"],
|
|
307
|
-
limit: 1
|
|
308
|
-
});
|
|
309
271
|
return {
|
|
310
272
|
projectId,
|
|
311
|
-
run:
|
|
273
|
+
run: (await runsService.readByQuery({
|
|
274
|
+
filter: { project: { _eq: projectId } },
|
|
275
|
+
sort: ["-date_created"],
|
|
276
|
+
limit: 1
|
|
277
|
+
}))?.[0] ?? null
|
|
312
278
|
};
|
|
313
279
|
})),
|
|
314
280
|
runsService.readByQuery({
|
|
@@ -331,8 +297,7 @@ var DeploymentService = class DeploymentService extends ItemsService {
|
|
|
331
297
|
const latestRunMap = new Map(latestRuns.map((r) => [r.projectId, r.run]));
|
|
332
298
|
const countByStatus = (status) => Number(statusCounts.find((r) => r["status"] === status)?.["count"] ?? 0);
|
|
333
299
|
this.syncProjectMetadataIfStale(provider, deployment).catch((err) => {
|
|
334
|
-
|
|
335
|
-
logger.error(`Failed to sync project metadata for ${provider}: ${err}`);
|
|
300
|
+
useLogger().error(`Failed to sync project metadata for ${provider}: ${err}`);
|
|
336
301
|
});
|
|
337
302
|
return {
|
|
338
303
|
projects: selectedProjects.map((p) => {
|
|
@@ -366,8 +331,7 @@ var DeploymentService = class DeploymentService extends ItemsService {
|
|
|
366
331
|
const lastSync = new Date(deployment.last_synced_at).getTime();
|
|
367
332
|
if (Date.now() - lastSync < SYNC_THRESHOLD_MS) return;
|
|
368
333
|
}
|
|
369
|
-
|
|
370
|
-
logger.debug(`[metadata:${provider}] Syncing project metadata`);
|
|
334
|
+
useLogger().debug(`[metadata:${provider}] Syncing project metadata`);
|
|
371
335
|
const projectsService = new DeploymentProjectsService({
|
|
372
336
|
accountability: null,
|
|
373
337
|
schema: this.schema
|
|
@@ -387,14 +351,11 @@ var DeploymentService = class DeploymentService extends ItemsService {
|
|
|
387
351
|
deployable: details.deployable
|
|
388
352
|
};
|
|
389
353
|
}));
|
|
390
|
-
if (updates.length > 0)
|
|
391
|
-
|
|
392
|
-
}
|
|
393
|
-
const internalService = new DeploymentService({
|
|
354
|
+
if (updates.length > 0) await projectsService.updateBatch(updates);
|
|
355
|
+
await new DeploymentService({
|
|
394
356
|
accountability: null,
|
|
395
357
|
schema: this.schema
|
|
396
|
-
});
|
|
397
|
-
await internalService.updateOne(deployment.id, { last_synced_at: new Date().toISOString() });
|
|
358
|
+
}).updateOne(deployment.id, { last_synced_at: (/* @__PURE__ */ new Date()).toISOString() });
|
|
398
359
|
}
|
|
399
360
|
/**
|
|
400
361
|
* Trigger a deployment for a project
|
|
@@ -409,8 +370,7 @@ var DeploymentService = class DeploymentService extends ItemsService {
|
|
|
409
370
|
schema: this.schema
|
|
410
371
|
});
|
|
411
372
|
const project = await projectsService.readOne(projectId);
|
|
412
|
-
const
|
|
413
|
-
const result = await driver.triggerDeployment(project.external_id, {
|
|
373
|
+
const result = await (await this.getDriver(provider)).triggerDeployment(project.external_id, {
|
|
414
374
|
preview: options.preview,
|
|
415
375
|
clearCache: options.clearCache
|
|
416
376
|
});
|
|
@@ -433,8 +393,7 @@ var DeploymentService = class DeploymentService extends ItemsService {
|
|
|
433
393
|
schema: this.schema
|
|
434
394
|
});
|
|
435
395
|
const run = await runsService.readOne(runId);
|
|
436
|
-
const
|
|
437
|
-
const status = await driver.cancelDeployment(run.external_id);
|
|
396
|
+
const status = await (await this.getDriver(provider)).cancelDeployment(run.external_id);
|
|
438
397
|
await runsService.updateOne(runId, { status });
|
|
439
398
|
return runsService.readOne(runId);
|
|
440
399
|
}
|
|
@@ -442,13 +401,11 @@ var DeploymentService = class DeploymentService extends ItemsService {
|
|
|
442
401
|
* Get a run with its logs from the provider
|
|
443
402
|
*/
|
|
444
403
|
async getRunWithLogs(provider, runId, since) {
|
|
445
|
-
const
|
|
404
|
+
const run = await new DeploymentRunsService({
|
|
446
405
|
accountability: this.accountability,
|
|
447
406
|
schema: this.schema
|
|
448
|
-
});
|
|
449
|
-
const
|
|
450
|
-
const driver = await this.getDriver(provider);
|
|
451
|
-
const logs = await driver.getDeploymentLogs(run.external_id, since ? { since } : undefined);
|
|
407
|
+
}).readOne(runId);
|
|
408
|
+
const logs = await (await this.getDriver(provider)).getDeploymentLogs(run.external_id, since ? { since } : void 0);
|
|
452
409
|
return {
|
|
453
410
|
...run,
|
|
454
411
|
logs
|
|
@@ -35,27 +35,13 @@ var ExtensionsService = class ExtensionsService {
|
|
|
35
35
|
async preInstall(extensionId, versionId) {
|
|
36
36
|
const env = useEnv();
|
|
37
37
|
const describeOptions = {};
|
|
38
|
-
if (typeof env["MARKETPLACE_REGISTRY"] === "string")
|
|
39
|
-
describeOptions.registry = env["MARKETPLACE_REGISTRY"];
|
|
40
|
-
}
|
|
38
|
+
if (typeof env["MARKETPLACE_REGISTRY"] === "string") describeOptions.registry = env["MARKETPLACE_REGISTRY"];
|
|
41
39
|
const extension = await describe(extensionId, describeOptions);
|
|
42
40
|
const version = extension.data.versions.find((version$1) => version$1.id === versionId);
|
|
43
|
-
if (!version)
|
|
44
|
-
throw new ForbiddenError();
|
|
45
|
-
}
|
|
41
|
+
if (!version) throw new ForbiddenError();
|
|
46
42
|
const limit = env["EXTENSIONS_LIMIT"] ? Number(env["EXTENSIONS_LIMIT"]) : null;
|
|
47
43
|
if (limit !== null) {
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Bundle extensions should be counted as the number of nested entries rather than a single
|
|
51
|
-
* extension to avoid a vulnerability where you can get around the technical limit by bundling
|
|
52
|
-
* all extensions you want
|
|
53
|
-
*/
|
|
54
|
-
const points = version.bundled.length ?? 1;
|
|
55
|
-
const afterInstallCount = currentlyInstalledCount + points;
|
|
56
|
-
if (afterInstallCount >= limit) {
|
|
57
|
-
throw new LimitExceededError({ category: "Extensions" });
|
|
58
|
-
}
|
|
44
|
+
if (this.extensionsManager.extensions.length + (version.bundled.length ?? 1) >= limit) throw new LimitExceededError({ category: "Extensions" });
|
|
59
45
|
}
|
|
60
46
|
return {
|
|
61
47
|
extension,
|
|
@@ -71,35 +57,25 @@ var ExtensionsService = class ExtensionsService {
|
|
|
71
57
|
source: "registry",
|
|
72
58
|
bundle: null
|
|
73
59
|
});
|
|
74
|
-
if (extension.data.type === "bundle" && version.bundled.length > 0) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
})));
|
|
81
|
-
}
|
|
60
|
+
if (extension.data.type === "bundle" && version.bundled.length > 0) await this.extensionsItemService.createMany(version.bundled.map((entry) => ({
|
|
61
|
+
enabled: true,
|
|
62
|
+
folder: entry.name,
|
|
63
|
+
source: "registry",
|
|
64
|
+
bundle: extensionId
|
|
65
|
+
})));
|
|
82
66
|
await this.extensionsManager.install(versionId);
|
|
83
67
|
}
|
|
84
68
|
async uninstall(id) {
|
|
85
69
|
const settings = await this.extensionsItemService.readOne(id);
|
|
86
|
-
if (settings.source !== "registry") {
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
if (settings.bundle !== null) {
|
|
90
|
-
throw new InvalidPayloadError({ reason: "Cannot uninstall sub extensions of bundles separately" });
|
|
91
|
-
}
|
|
70
|
+
if (settings.source !== "registry") throw new InvalidPayloadError({ reason: "Cannot uninstall extensions that were not installed via marketplace" });
|
|
71
|
+
if (settings.bundle !== null) throw new InvalidPayloadError({ reason: "Cannot uninstall sub extensions of bundles separately" });
|
|
92
72
|
await this.deleteOne(id);
|
|
93
73
|
await this.extensionsManager.uninstall(settings.folder);
|
|
94
74
|
}
|
|
95
75
|
async reinstall(id) {
|
|
96
76
|
const settings = await this.extensionsItemService.readOne(id);
|
|
97
|
-
if (settings.source !== "registry") {
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
if (settings.bundle !== null) {
|
|
101
|
-
throw new InvalidPayloadError({ reason: "Cannot reinstall sub extensions of bundles separately" });
|
|
102
|
-
}
|
|
77
|
+
if (settings.source !== "registry") throw new InvalidPayloadError({ reason: "Cannot reinstall extensions that were not installed via marketplace" });
|
|
78
|
+
if (settings.bundle !== null) throw new InvalidPayloadError({ reason: "Cannot reinstall sub extensions of bundles separately" });
|
|
103
79
|
const extensionId = settings.id;
|
|
104
80
|
const versionId = settings.folder;
|
|
105
81
|
await this.preInstall(extensionId, versionId);
|
|
@@ -111,14 +87,12 @@ var ExtensionsService = class ExtensionsService {
|
|
|
111
87
|
const regular = settings.filter(({ bundle }) => bundle === null);
|
|
112
88
|
const bundled = settings.filter(({ bundle }) => bundle !== null);
|
|
113
89
|
const output = [];
|
|
114
|
-
for (const meta of regular) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
});
|
|
121
|
-
}
|
|
90
|
+
for (const meta of regular) output.push({
|
|
91
|
+
id: meta.id,
|
|
92
|
+
bundle: meta.bundle,
|
|
93
|
+
meta,
|
|
94
|
+
schema: this.extensionsManager.getExtension(meta.source, meta.folder) ?? null
|
|
95
|
+
});
|
|
122
96
|
for (const meta of bundled) {
|
|
123
97
|
const parentBundle = output.find((ext) => ext.id === meta.bundle);
|
|
124
98
|
if (!parentBundle) continue;
|
|
@@ -146,9 +120,7 @@ var ExtensionsService = class ExtensionsService {
|
|
|
146
120
|
}
|
|
147
121
|
async updateOne(id, data) {
|
|
148
122
|
const result = await transaction(this.knex, async (trx) => {
|
|
149
|
-
if (!isObject(data.meta)) {
|
|
150
|
-
throw new InvalidPayloadError({ reason: `"meta" is required` });
|
|
151
|
-
}
|
|
123
|
+
if (!isObject(data.meta)) throw new InvalidPayloadError({ reason: `"meta" is required` });
|
|
152
124
|
const service = new ExtensionsService({
|
|
153
125
|
knex: trx,
|
|
154
126
|
accountability: this.accountability,
|
|
@@ -161,9 +133,7 @@ var ExtensionsService = class ExtensionsService {
|
|
|
161
133
|
} catch (error) {
|
|
162
134
|
throw new ExtensionReadError(error);
|
|
163
135
|
}
|
|
164
|
-
if ("enabled" in data.meta)
|
|
165
|
-
await service.checkBundleAndSyncStatus(trx, id, extension);
|
|
166
|
-
}
|
|
136
|
+
if ("enabled" in data.meta) await service.checkBundleAndSyncStatus(trx, id, extension);
|
|
167
137
|
return extension;
|
|
168
138
|
});
|
|
169
139
|
this.extensionsManager.reload().then(() => {
|
|
@@ -192,18 +162,10 @@ var ExtensionsService = class ExtensionsService {
|
|
|
192
162
|
const parentId = extension.bundle ?? extension.meta.bundle;
|
|
193
163
|
if (!parentId) return;
|
|
194
164
|
const parent = await this.readOne(parentId);
|
|
195
|
-
if (parent.schema?.type !== "bundle")
|
|
196
|
-
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
throw new UnprocessableContentError({ reason: "Unable to toggle status of an entry for a bundle marked as non partial" });
|
|
200
|
-
}
|
|
201
|
-
const hasEnabledChildren = !!await trx("directus_extensions").where({ bundle: parentId }).where({ enabled: true }).first();
|
|
202
|
-
if (hasEnabledChildren) {
|
|
203
|
-
await trx("directus_extensions").update({ enabled: true }).where({ id: parentId });
|
|
204
|
-
} else {
|
|
205
|
-
await trx("directus_extensions").update({ enabled: false }).where({ id: parentId });
|
|
206
|
-
}
|
|
165
|
+
if (parent.schema?.type !== "bundle") return;
|
|
166
|
+
if (parent.schema.partial === false) throw new UnprocessableContentError({ reason: "Unable to toggle status of an entry for a bundle marked as non partial" });
|
|
167
|
+
if (!!await trx("directus_extensions").where({ bundle: parentId }).where({ enabled: true }).first()) await trx("directus_extensions").update({ enabled: true }).where({ id: parentId });
|
|
168
|
+
else await trx("directus_extensions").update({ enabled: false }).where({ id: parentId });
|
|
207
169
|
}
|
|
208
170
|
};
|
|
209
171
|
|
|
@@ -16,31 +16,25 @@
|
|
|
16
16
|
* }
|
|
17
17
|
*/
|
|
18
18
|
function buildCollectionAndFieldRelations(relations) {
|
|
19
|
-
const collectionRelationTree = new Map();
|
|
20
|
-
const fieldToCollectionList = new Map();
|
|
19
|
+
const collectionRelationTree = /* @__PURE__ */ new Map();
|
|
20
|
+
const fieldToCollectionList = /* @__PURE__ */ new Map();
|
|
21
21
|
for (const relation of relations) {
|
|
22
22
|
let relatedCollections = [];
|
|
23
|
-
if (relation.related_collection)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
relatedCollections = relation.meta?.one_allowed_collections;
|
|
27
|
-
} else {
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
23
|
+
if (relation.related_collection) relatedCollections.push(relation.related_collection);
|
|
24
|
+
else if (relation.meta?.one_collection_field && relation.meta?.one_allowed_collections) relatedCollections = relation.meta?.one_allowed_collections;
|
|
25
|
+
else continue;
|
|
30
26
|
for (const relatedCollection of relatedCollections) {
|
|
31
27
|
let fieldToCollectionListKey = relation.collection + ":" + relation.field;
|
|
32
|
-
const collectionList = collectionRelationTree.get(relatedCollection) ?? new Set();
|
|
28
|
+
const collectionList = collectionRelationTree.get(relatedCollection) ?? /* @__PURE__ */ new Set();
|
|
33
29
|
collectionList.add(relation.collection);
|
|
34
30
|
if (relation.meta?.one_field) {
|
|
35
31
|
const relatedfieldToCollectionListKey = relatedCollection + ":" + relation.meta.one_field;
|
|
36
|
-
const realatedCollectionList = collectionRelationTree.get(relation.collection) ?? new Set();
|
|
32
|
+
const realatedCollectionList = collectionRelationTree.get(relation.collection) ?? /* @__PURE__ */ new Set();
|
|
37
33
|
realatedCollectionList.add(relatedCollection);
|
|
38
34
|
fieldToCollectionList.set(relatedfieldToCollectionListKey, relation.collection);
|
|
39
35
|
collectionRelationTree.set(relation.collection, realatedCollectionList);
|
|
40
36
|
}
|
|
41
|
-
if (relation.meta?.one_allowed_collections)
|
|
42
|
-
fieldToCollectionListKey += ":" + relatedCollection;
|
|
43
|
-
}
|
|
37
|
+
if (relation.meta?.one_allowed_collections) fieldToCollectionListKey += ":" + relatedCollection;
|
|
44
38
|
fieldToCollectionList.set(fieldToCollectionListKey, relatedCollection);
|
|
45
39
|
collectionRelationTree.set(relatedCollection, collectionList);
|
|
46
40
|
}
|
|
@@ -24,18 +24,14 @@ function getCollectionMetaUpdates(collection, field, collectionMetas, collection
|
|
|
24
24
|
const updatedPaths = [];
|
|
25
25
|
for (const path of itemDuplicationPaths) {
|
|
26
26
|
const updatedPath = updateItemDuplicationPath(path, collectionMeta.collection, field, collection, collections, fieldToCollectionList);
|
|
27
|
-
if (updatedPath && updatedPath.length !== 0)
|
|
28
|
-
updatedPaths.push(updatedPath.join("."));
|
|
29
|
-
}
|
|
27
|
+
if (updatedPath && updatedPath.length !== 0) updatedPaths.push(updatedPath.join("."));
|
|
30
28
|
}
|
|
31
29
|
if (updatedPaths.length !== itemDuplicationPaths.length) {
|
|
32
30
|
meta.updates["item_duplication_fields"] = updatedPaths.length !== 0 ? JSON.stringify(updatedPaths) : null;
|
|
33
31
|
hasUpdates = true;
|
|
34
32
|
}
|
|
35
33
|
}
|
|
36
|
-
if (hasUpdates)
|
|
37
|
-
collectionMetaUpdates.push(meta);
|
|
38
|
-
}
|
|
34
|
+
if (hasUpdates) collectionMetaUpdates.push(meta);
|
|
39
35
|
}
|
|
40
36
|
return collectionMetaUpdates;
|
|
41
37
|
}
|
|
@@ -47,9 +43,7 @@ function updateItemDuplicationPath(path, root, field, collection, collections, f
|
|
|
47
43
|
`.${field}`,
|
|
48
44
|
`.${field}.`,
|
|
49
45
|
`${field}.`
|
|
50
|
-
].some((fieldPart) => path.includes(fieldPart)) === false)
|
|
51
|
-
return parts;
|
|
52
|
-
}
|
|
46
|
+
].some((fieldPart) => path.includes(fieldPart)) === false) return parts;
|
|
53
47
|
const updatedParts = [];
|
|
54
48
|
for (let index = 0; index < parts.length; index++) {
|
|
55
49
|
const part = parts[index];
|
|
@@ -59,9 +53,7 @@ function updateItemDuplicationPath(path, root, field, collection, collections, f
|
|
|
59
53
|
const nextCollectionNode = fieldToCollectionList.get(`${currentCollection}:${part}`);
|
|
60
54
|
if (!nextCollectionNode && !isLastPart) return;
|
|
61
55
|
if (!nextCollectionNode && isLastPart && !isLocalField) return;
|
|
62
|
-
if (nextCollectionNode)
|
|
63
|
-
currentCollection = nextCollectionNode;
|
|
64
|
-
}
|
|
56
|
+
if (nextCollectionNode) currentCollection = nextCollectionNode;
|
|
65
57
|
updatedParts.push(part);
|
|
66
58
|
}
|
|
67
59
|
return updatedParts;
|
|
@@ -6,15 +6,13 @@ import { isSystemCollection } from "@directus/system-data";
|
|
|
6
6
|
* Or in math terms, returns the [strongly connected component](https://en.wikipedia.org/wiki/Strongly_connected_component) that a given node belongs to.
|
|
7
7
|
*/
|
|
8
8
|
function getCollectionRelationList(collection, collectionRelationTree) {
|
|
9
|
-
const collectionRelationList = new Set();
|
|
9
|
+
const collectionRelationList = /* @__PURE__ */ new Set();
|
|
10
10
|
traverseCollectionRelationTree(collection);
|
|
11
11
|
return collectionRelationList;
|
|
12
12
|
function traverseCollectionRelationTree(root) {
|
|
13
13
|
const relationTree = collectionRelationTree.get(root);
|
|
14
14
|
if (!relationTree) return;
|
|
15
|
-
for (const relationNode of relationTree)
|
|
16
|
-
addRelationNode(relationNode);
|
|
17
|
-
}
|
|
15
|
+
for (const relationNode of relationTree) addRelationNode(relationNode);
|
|
18
16
|
}
|
|
19
17
|
function addRelationNode(node) {
|
|
20
18
|
if (isSystemCollection(node)) return;
|