directus 9.23.1 → 9.23.4
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/app.js +25 -21
- package/dist/auth/auth.d.ts +3 -3
- package/dist/auth/auth.js +2 -0
- package/dist/auth/drivers/ldap.d.ts +1 -1
- package/dist/auth/drivers/ldap.js +57 -46
- package/dist/auth/drivers/local.d.ts +1 -1
- package/dist/auth/drivers/local.js +20 -17
- package/dist/auth/drivers/oauth2.d.ts +1 -1
- package/dist/auth/drivers/oauth2.js +44 -35
- package/dist/auth/drivers/openid.d.ts +1 -1
- package/dist/auth/drivers/openid.js +50 -41
- package/dist/auth/drivers/saml.d.ts +1 -1
- package/dist/auth/drivers/saml.js +20 -17
- package/dist/auth.d.ts +1 -1
- package/dist/auth.js +8 -7
- package/dist/cache.d.ts +9 -1
- package/dist/cache.js +66 -18
- package/dist/cli/commands/bootstrap/index.js +7 -6
- package/dist/cli/commands/init/index.js +3 -3
- package/dist/cli/commands/schema/apply.js +14 -15
- package/dist/cli/commands/schema/snapshot.js +2 -2
- package/dist/cli/utils/create-db-connection.d.ts +1 -1
- package/dist/cli/utils/create-db-connection.js +3 -2
- package/dist/cli/utils/create-env/index.d.ts +2 -2
- package/dist/cli/utils/create-env/index.js +1 -1
- package/dist/cli/utils/drivers.d.ts +1 -1
- package/dist/constants.d.ts +3 -2
- package/dist/constants.js +7 -7
- package/dist/controllers/activity.js +10 -11
- package/dist/controllers/assets.js +31 -25
- package/dist/controllers/auth.js +40 -26
- package/dist/controllers/collections.js +10 -10
- package/dist/controllers/dashboards.js +14 -11
- package/dist/controllers/extensions.js +3 -3
- package/dist/controllers/fields.js +20 -20
- package/dist/controllers/files.js +26 -20
- package/dist/controllers/flows.js +16 -13
- package/dist/controllers/folders.js +14 -11
- package/dist/controllers/graphql.js +6 -8
- package/dist/controllers/items.js +22 -19
- package/dist/controllers/not-found.d.ts +1 -1
- package/dist/controllers/not-found.js +1 -2
- package/dist/controllers/notifications.js +14 -11
- package/dist/controllers/operations.js +14 -11
- package/dist/controllers/panels.js +14 -11
- package/dist/controllers/permissions.js +14 -11
- package/dist/controllers/presets.js +14 -11
- package/dist/controllers/relations.js +10 -10
- package/dist/controllers/revisions.js +3 -3
- package/dist/controllers/roles.js +14 -11
- package/dist/controllers/schema.js +5 -5
- package/dist/controllers/server.js +7 -7
- package/dist/controllers/settings.js +2 -2
- package/dist/controllers/shares.js +21 -18
- package/dist/controllers/users.js +32 -36
- package/dist/controllers/utils.js +10 -15
- package/dist/controllers/webhooks.js +14 -11
- package/dist/database/helpers/fn/dialects/mssql.d.ts +1 -1
- package/dist/database/helpers/fn/dialects/mssql.js +10 -11
- package/dist/database/helpers/fn/dialects/mysql.d.ts +1 -1
- package/dist/database/helpers/fn/dialects/mysql.js +2 -3
- package/dist/database/helpers/fn/dialects/oracle.d.ts +1 -1
- package/dist/database/helpers/fn/dialects/oracle.js +10 -11
- package/dist/database/helpers/fn/dialects/postgres.d.ts +1 -1
- package/dist/database/helpers/fn/dialects/postgres.js +10 -11
- package/dist/database/helpers/fn/dialects/sqlite.d.ts +1 -1
- package/dist/database/helpers/fn/dialects/sqlite.js +10 -11
- package/dist/database/helpers/fn/types.d.ts +5 -6
- package/dist/database/helpers/fn/types.js +4 -5
- package/dist/database/helpers/geometry/dialects/mssql.d.ts +3 -3
- package/dist/database/helpers/geometry/dialects/mysql.d.ts +1 -1
- package/dist/database/helpers/geometry/dialects/oracle.d.ts +3 -3
- package/dist/database/helpers/geometry/dialects/postgres.d.ts +3 -3
- package/dist/database/helpers/geometry/dialects/postgres.js +1 -2
- package/dist/database/helpers/geometry/dialects/redshift.d.ts +2 -2
- package/dist/database/helpers/geometry/dialects/sqlite.d.ts +1 -1
- package/dist/database/helpers/geometry/types.d.ts +2 -2
- package/dist/database/helpers/geometry/types.js +1 -2
- package/dist/database/helpers/index.d.ts +5 -5
- package/dist/database/helpers/schema/dialects/cockroachdb.d.ts +1 -1
- package/dist/database/helpers/schema/dialects/mssql.d.ts +1 -1
- package/dist/database/helpers/schema/dialects/mysql.d.ts +1 -1
- package/dist/database/helpers/schema/dialects/mysql.js +1 -2
- package/dist/database/helpers/schema/dialects/oracle.d.ts +2 -2
- package/dist/database/helpers/schema/dialects/oracle.js +4 -6
- package/dist/database/helpers/schema/types.d.ts +4 -4
- package/dist/database/helpers/types.d.ts +1 -1
- package/dist/database/helpers/types.js +1 -0
- package/dist/database/index.d.ts +1 -1
- package/dist/database/index.js +13 -13
- package/dist/database/migrations/20201028A-remove-collection-foreign-keys.d.ts +1 -1
- package/dist/database/migrations/20201029A-remove-system-relations.d.ts +1 -1
- package/dist/database/migrations/20201029B-remove-system-collections.d.ts +1 -1
- package/dist/database/migrations/20201029C-remove-system-fields.d.ts +1 -1
- package/dist/database/migrations/20201105A-add-cascade-system-relations.d.ts +1 -1
- package/dist/database/migrations/20201105B-change-webhook-url-type.d.ts +1 -1
- package/dist/database/migrations/20210225A-add-relations-sort-field.d.ts +1 -1
- package/dist/database/migrations/20210225A-add-relations-sort-field.js +1 -2
- package/dist/database/migrations/20210304A-remove-locked-fields.d.ts +1 -1
- package/dist/database/migrations/20210312A-webhooks-collections-text.d.ts +1 -1
- package/dist/database/migrations/20210331A-add-refresh-interval.d.ts +1 -1
- package/dist/database/migrations/20210415A-make-filesize-nullable.d.ts +1 -1
- package/dist/database/migrations/20210416A-add-collections-accountability.d.ts +1 -1
- package/dist/database/migrations/20210422A-remove-files-interface.d.ts +1 -1
- package/dist/database/migrations/20210506A-rename-interfaces.d.ts +1 -1
- package/dist/database/migrations/20210510A-restructure-relations.d.ts +1 -1
- package/dist/database/migrations/20210518A-add-foreign-key-constraints.d.ts +1 -1
- package/dist/database/migrations/20210518A-add-foreign-key-constraints.js +1 -1
- package/dist/database/migrations/20210519A-add-system-fk-triggers.d.ts +1 -1
- package/dist/database/migrations/20210519A-add-system-fk-triggers.js +2 -2
- package/dist/database/migrations/20210521A-add-collections-icon-color.d.ts +1 -1
- package/dist/database/migrations/20210525A-add-insights.d.ts +1 -1
- package/dist/database/migrations/20210608A-add-deep-clone-config.d.ts +1 -1
- package/dist/database/migrations/20210626A-change-filesize-bigint.d.ts +1 -1
- package/dist/database/migrations/20210716A-add-conditions-to-fields.d.ts +1 -1
- package/dist/database/migrations/20210721A-add-default-folder.d.ts +1 -1
- package/dist/database/migrations/20210802A-replace-groups.d.ts +1 -1
- package/dist/database/migrations/20210803A-add-required-to-fields.d.ts +1 -1
- package/dist/database/migrations/20210805A-update-groups.d.ts +1 -1
- package/dist/database/migrations/20210805B-change-image-metadata-structure.d.ts +1 -1
- package/dist/database/migrations/20210805B-change-image-metadata-structure.js +15 -15
- package/dist/database/migrations/20210811A-add-geometry-config.d.ts +1 -1
- package/dist/database/migrations/20210831A-remove-limit-column.d.ts +1 -1
- package/dist/database/migrations/20210903A-add-auth-provider.d.ts +1 -1
- package/dist/database/migrations/20210907A-webhooks-collections-not-null.d.ts +1 -1
- package/dist/database/migrations/20210910A-move-module-setup.d.ts +1 -1
- package/dist/database/migrations/20210920A-webhooks-url-not-null.d.ts +1 -1
- package/dist/database/migrations/20210924A-add-collection-organization.d.ts +1 -1
- package/dist/database/migrations/20210927A-replace-fields-group.d.ts +1 -1
- package/dist/database/migrations/20210927B-replace-m2m-interface.d.ts +1 -1
- package/dist/database/migrations/20210929A-rename-login-action.d.ts +1 -1
- package/dist/database/migrations/20211007A-update-presets.d.ts +1 -1
- package/dist/database/migrations/20211007A-update-presets.js +7 -9
- package/dist/database/migrations/20211009A-add-auth-data.d.ts +1 -1
- package/dist/database/migrations/20211016A-add-webhook-headers.d.ts +1 -1
- package/dist/database/migrations/20211103A-set-unique-to-user-token.d.ts +1 -1
- package/dist/database/migrations/20211103B-update-special-geometry.d.ts +1 -1
- package/dist/database/migrations/20211104A-remove-collections-listing.d.ts +1 -1
- package/dist/database/migrations/20211118A-add-notifications.d.ts +1 -1
- package/dist/database/migrations/20211211A-add-shares.d.ts +1 -1
- package/dist/database/migrations/20211230A-add-project-descriptor.d.ts +1 -1
- package/dist/database/migrations/20220303A-remove-default-project-color.d.ts +1 -1
- package/dist/database/migrations/20220308A-add-bookmark-icon-and-color.d.ts +1 -1
- package/dist/database/migrations/20220314A-add-translation-strings.d.ts +1 -1
- package/dist/database/migrations/20220322A-rename-field-typecast-flags.d.ts +1 -1
- package/dist/database/migrations/20220323A-add-field-validation.d.ts +1 -1
- package/dist/database/migrations/20220325A-fix-typecast-flags.d.ts +1 -1
- package/dist/database/migrations/20220325B-add-default-language.d.ts +1 -1
- package/dist/database/migrations/20220402A-remove-default-value-panel-icon.d.ts +1 -1
- package/dist/database/migrations/20220429A-add-flows.d.ts +1 -1
- package/dist/database/migrations/20220429B-add-color-to-insights-icon.d.ts +1 -1
- package/dist/database/migrations/20220429C-drop-non-null-from-ip-of-activity.d.ts +1 -1
- package/dist/database/migrations/20220429D-drop-non-null-from-sender-of-notifications.d.ts +1 -1
- package/dist/database/migrations/20220614A-rename-hook-trigger-to-event.d.ts +1 -1
- package/dist/database/migrations/20220801A-update-notifications-timestamp-column.d.ts +1 -1
- package/dist/database/migrations/20220802A-add-custom-aspect-ratios.d.ts +1 -1
- package/dist/database/migrations/20220826A-add-origin-to-accountability.d.ts +1 -1
- package/dist/database/migrations/run.d.ts +1 -1
- package/dist/database/migrations/run.js +1 -1
- package/dist/database/run-ast.d.ts +3 -3
- package/dist/database/run-ast.js +21 -30
- package/dist/database/seeds/run.d.ts +1 -1
- package/dist/database/seeds/run.js +1 -2
- package/dist/database/system-data/app-access-permissions/index.d.ts +1 -1
- package/dist/database/system-data/collections/index.d.ts +1 -1
- package/dist/database/system-data/collections/index.js +2 -2
- package/dist/database/system-data/fields/collections.yaml +2 -0
- package/dist/database/system-data/fields/index.d.ts +1 -1
- package/dist/database/system-data/fields/index.js +3 -4
- package/dist/database/system-data/fields/settings.yaml +4 -0
- package/dist/database/system-data/relations/index.d.ts +1 -1
- package/dist/emitter.d.ts +1 -1
- package/dist/emitter.js +3 -0
- package/dist/env.js +11 -3
- package/dist/exceptions/database/dialects/mssql.d.ts +1 -1
- package/dist/exceptions/database/dialects/mssql.js +5 -6
- package/dist/exceptions/database/dialects/mysql.d.ts +1 -1
- package/dist/exceptions/database/dialects/mysql.js +19 -25
- package/dist/exceptions/database/dialects/oracle.d.ts +1 -1
- package/dist/exceptions/database/dialects/postgres.d.ts +1 -1
- package/dist/exceptions/database/dialects/sqlite.d.ts +1 -1
- package/dist/exceptions/database/translate.d.ts +1 -1
- package/dist/exceptions/database/value-out-of-range.js +1 -1
- package/dist/exceptions/range-not-satisfiable.js +2 -3
- package/dist/extensions.d.ts +1 -1
- package/dist/extensions.js +43 -33
- package/dist/flows.js +65 -46
- package/dist/logger.d.ts +2 -1
- package/dist/logger.js +35 -19
- package/dist/logger.test.d.ts +1 -0
- package/dist/mailer.js +16 -16
- package/dist/messenger.js +9 -7
- package/dist/middleware/authenticate.d.ts +1 -1
- package/dist/middleware/authenticate.js +13 -6
- package/dist/middleware/cache.d.ts +1 -1
- package/dist/middleware/cache.js +16 -16
- package/dist/middleware/check-ip.d.ts +1 -1
- package/dist/middleware/check-ip.js +1 -1
- package/dist/middleware/collection-exists.d.ts +1 -1
- package/dist/middleware/collection-exists.js +5 -5
- package/dist/middleware/cors.d.ts +1 -1
- package/dist/middleware/cors.js +7 -7
- package/dist/middleware/error-handler.d.ts +1 -1
- package/dist/middleware/error-handler.js +11 -12
- package/dist/middleware/extract-token.d.ts +1 -1
- package/dist/middleware/extract-token.js +2 -2
- package/dist/middleware/get-permissions.d.ts +1 -1
- package/dist/middleware/graphql.d.ts +1 -1
- package/dist/middleware/graphql.js +15 -9
- package/dist/middleware/rate-limiter-global.d.ts +5 -0
- package/dist/middleware/rate-limiter-global.js +48 -0
- package/dist/middleware/{rate-limiter.d.ts → rate-limiter-ip.d.ts} +2 -2
- package/dist/middleware/{rate-limiter.js → rate-limiter-ip.js} +5 -5
- package/dist/middleware/respond.d.ts +1 -1
- package/dist/middleware/respond.js +18 -19
- package/dist/middleware/sanitize-query.d.ts +1 -1
- package/dist/middleware/sanitize-query.js +1 -1
- package/dist/middleware/schema.d.ts +1 -1
- package/dist/middleware/use-collection.d.ts +1 -1
- package/dist/operations/condition/index.d.ts +1 -1
- package/dist/operations/exec/index.js +15 -4
- package/dist/operations/item-create/index.js +1 -2
- package/dist/operations/item-delete/index.d.ts +1 -1
- package/dist/operations/item-read/index.d.ts +1 -1
- package/dist/operations/item-update/index.d.ts +1 -1
- package/dist/operations/item-update/index.js +1 -2
- package/dist/operations/notification/index.js +1 -2
- package/dist/operations/request/index.js +19 -19
- package/dist/operations/trigger/index.js +2 -3
- package/dist/rate-limiter.d.ts +1 -1
- package/dist/rate-limiter.js +9 -9
- package/dist/request/validate-ip.js +2 -2
- package/dist/server.js +12 -13
- package/dist/services/activity.d.ts +1 -1
- package/dist/services/activity.js +17 -16
- package/dist/services/assets.d.ts +3 -3
- package/dist/services/assets.js +35 -37
- package/dist/services/authentication.d.ts +2 -2
- package/dist/services/authentication.js +22 -19
- package/dist/services/authorization.d.ts +3 -3
- package/dist/services/authorization.js +27 -31
- package/dist/services/collections.d.ts +5 -5
- package/dist/services/collections.js +54 -50
- package/dist/services/dashboards.d.ts +1 -1
- package/dist/services/fields.d.ts +5 -5
- package/dist/services/fields.js +50 -50
- package/dist/services/files.d.ts +1 -2
- package/dist/services/files.js +33 -27
- package/dist/services/flows.d.ts +2 -2
- package/dist/services/folders.d.ts +1 -1
- package/dist/services/graphql/index.d.ts +4 -4
- package/dist/services/graphql/index.js +259 -252
- package/dist/services/graphql/utils/add-path-to-validation-error.js +1 -2
- package/dist/services/graphql/utils/process-error.d.ts +2 -2
- package/dist/services/graphql/utils/process-error.js +11 -4
- package/dist/services/import-export.d.ts +3 -3
- package/dist/services/import-export.js +30 -27
- package/dist/services/items.d.ts +3 -3
- package/dist/services/items.js +42 -36
- package/dist/services/mail/index.d.ts +4 -4
- package/dist/services/mail/index.js +14 -10
- package/dist/services/meta.d.ts +3 -3
- package/dist/services/meta.js +11 -9
- package/dist/services/notifications.d.ts +3 -3
- package/dist/services/notifications.js +10 -9
- package/dist/services/operations.d.ts +2 -2
- package/dist/services/panels.d.ts +1 -1
- package/dist/services/payload.d.ts +3 -3
- package/dist/services/payload.js +124 -122
- package/dist/services/permissions.d.ts +3 -3
- package/dist/services/permissions.js +11 -11
- package/dist/services/presets.d.ts +1 -1
- package/dist/services/relations.d.ts +6 -6
- package/dist/services/relations.js +45 -43
- package/dist/services/revisions.d.ts +1 -1
- package/dist/services/revisions.js +3 -3
- package/dist/services/roles.d.ts +2 -2
- package/dist/services/roles.js +7 -7
- package/dist/services/schema.d.ts +3 -3
- package/dist/services/schema.js +9 -11
- package/dist/services/server.d.ts +3 -3
- package/dist/services/server.js +88 -32
- package/dist/services/settings.d.ts +1 -1
- package/dist/services/shares.d.ts +1 -1
- package/dist/services/shares.js +14 -15
- package/dist/services/specifications.d.ts +4 -4
- package/dist/services/specifications.js +137 -119
- package/dist/services/tfa.d.ts +2 -2
- package/dist/services/tfa.js +7 -5
- package/dist/services/users.d.ts +2 -6
- package/dist/services/users.js +37 -40
- package/dist/services/utils.d.ts +3 -3
- package/dist/services/utils.js +10 -8
- package/dist/services/webhooks.d.ts +2 -2
- package/dist/services/webhooks.js +2 -1
- package/dist/storage/register-locations.js +1 -1
- package/dist/types/assets.d.ts +1 -1
- package/dist/types/ast.d.ts +1 -1
- package/dist/types/auth.d.ts +2 -2
- package/dist/types/collection.d.ts +2 -2
- package/dist/types/events.d.ts +2 -2
- package/dist/types/graphql.d.ts +2 -2
- package/dist/types/items.d.ts +3 -3
- package/dist/types/services.d.ts +5 -5
- package/dist/types/snapshot.d.ts +4 -4
- package/dist/utils/apply-diff.d.ts +3 -3
- package/dist/utils/apply-diff.js +25 -28
- package/dist/utils/apply-query.d.ts +3 -3
- package/dist/utils/apply-query.js +10 -12
- package/dist/utils/apply-snapshot.d.ts +3 -3
- package/dist/utils/apply-snapshot.js +5 -6
- package/dist/utils/construct-flow-tree.d.ts +1 -1
- package/dist/utils/construct-flow-tree.js +2 -2
- package/dist/utils/dynamic-import.js +1 -1
- package/dist/utils/filter-items.d.ts +1 -1
- package/dist/utils/generate-hash.js +1 -1
- package/dist/utils/get-accountability-for-role.d.ts +2 -2
- package/dist/utils/get-accountability-for-role.js +1 -1
- package/dist/utils/get-ast-from-query.d.ts +3 -3
- package/dist/utils/get-ast-from-query.js +22 -28
- package/dist/utils/get-auth-providers.js +1 -1
- package/dist/utils/get-cache-headers.d.ts +1 -1
- package/dist/utils/get-cache-headers.js +6 -7
- package/dist/utils/get-cache-key.d.ts +1 -1
- package/dist/utils/get-cache-key.js +2 -3
- package/dist/utils/get-collection-from-alias.d.ts +1 -1
- package/dist/utils/get-collection-from-alias.js +1 -0
- package/dist/utils/get-column-path.d.ts +2 -2
- package/dist/utils/get-column-path.js +3 -4
- package/dist/utils/get-column.d.ts +4 -4
- package/dist/utils/get-column.js +4 -5
- package/dist/utils/get-default-value.d.ts +2 -2
- package/dist/utils/get-default-value.js +2 -3
- package/dist/utils/get-graphql-query-and-variables.d.ts +1 -1
- package/dist/utils/get-graphql-query-and-variables.js +1 -2
- package/dist/utils/get-graphql-type.d.ts +2 -2
- package/dist/utils/get-graphql-type.js +1 -1
- package/dist/utils/get-ip-from-req.d.ts +1 -1
- package/dist/utils/get-ip-from-req.js +2 -2
- package/dist/utils/get-local-type.d.ts +1 -1
- package/dist/utils/get-local-type.js +3 -3
- package/dist/utils/get-milliseconds.js +1 -2
- package/dist/utils/get-permissions.d.ts +1 -1
- package/dist/utils/get-permissions.js +12 -12
- package/dist/utils/get-relation-info.d.ts +1 -1
- package/dist/utils/get-relation-info.js +3 -5
- package/dist/utils/get-relation-type.d.ts +1 -1
- package/dist/utils/get-relation-type.js +3 -4
- package/dist/utils/get-schema.d.ts +2 -2
- package/dist/utils/get-schema.js +20 -22
- package/dist/utils/get-snapshot-diff.js +2 -3
- package/dist/utils/get-snapshot.d.ts +3 -3
- package/dist/utils/get-snapshot.js +6 -8
- package/dist/utils/is-directus-jwt.js +1 -1
- package/dist/utils/is-url-allowed.js +5 -2
- package/dist/utils/job-queue.js +2 -0
- package/dist/utils/jwt.d.ts +1 -1
- package/dist/utils/merge-permissions-for-share.d.ts +1 -1
- package/dist/utils/merge-permissions-for-share.js +3 -4
- package/dist/utils/merge-permissions.d.ts +3 -3
- package/dist/utils/reduce-schema.d.ts +1 -1
- package/dist/utils/reduce-schema.js +12 -12
- package/dist/utils/sanitize-query.d.ts +1 -1
- package/dist/utils/sanitize-query.js +27 -27
- package/dist/utils/sanitize-schema.d.ts +2 -2
- package/dist/utils/should-skip-cache.d.ts +7 -0
- package/dist/utils/should-skip-cache.js +21 -0
- package/dist/utils/should-skip-cache.test.d.ts +1 -0
- package/dist/utils/track.js +16 -16
- package/dist/utils/transformations.d.ts +1 -1
- package/dist/utils/transformations.js +2 -4
- package/dist/utils/url.js +7 -2
- package/dist/utils/user-name.d.ts +1 -1
- package/dist/utils/validate-diff.js +7 -8
- package/dist/utils/validate-keys.d.ts +2 -2
- package/dist/utils/validate-keys.js +1 -1
- package/dist/utils/validate-query.d.ts +1 -1
- package/dist/utils/validate-query.js +3 -3
- package/dist/utils/validate-storage.js +8 -8
- package/dist/webhooks.js +3 -3
- package/package.json +36 -37
- package/dist/utils/with-timeout.d.ts +0 -1
- package/dist/utils/with-timeout.js +0 -16
|
@@ -10,56 +10,56 @@ const logger_1 = __importDefault(require("../logger"));
|
|
|
10
10
|
const types_1 = require("../types");
|
|
11
11
|
function sanitizeQuery(rawQuery, accountability) {
|
|
12
12
|
const query = {};
|
|
13
|
-
if (rawQuery
|
|
14
|
-
const limit = sanitizeLimit(rawQuery
|
|
13
|
+
if (rawQuery['limit'] !== undefined) {
|
|
14
|
+
const limit = sanitizeLimit(rawQuery['limit']);
|
|
15
15
|
if (typeof limit === 'number') {
|
|
16
16
|
query.limit = limit;
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
if (rawQuery
|
|
20
|
-
query.fields = sanitizeFields(rawQuery
|
|
19
|
+
if (rawQuery['fields']) {
|
|
20
|
+
query.fields = sanitizeFields(rawQuery['fields']);
|
|
21
21
|
}
|
|
22
|
-
if (rawQuery
|
|
23
|
-
query.group = sanitizeFields(rawQuery
|
|
22
|
+
if (rawQuery['groupBy']) {
|
|
23
|
+
query.group = sanitizeFields(rawQuery['groupBy']);
|
|
24
24
|
}
|
|
25
|
-
if (rawQuery
|
|
26
|
-
query.aggregate = sanitizeAggregate(rawQuery
|
|
25
|
+
if (rawQuery['aggregate']) {
|
|
26
|
+
query.aggregate = sanitizeAggregate(rawQuery['aggregate']);
|
|
27
27
|
}
|
|
28
|
-
if (rawQuery
|
|
29
|
-
query.sort = sanitizeSort(rawQuery
|
|
28
|
+
if (rawQuery['sort']) {
|
|
29
|
+
query.sort = sanitizeSort(rawQuery['sort']);
|
|
30
30
|
}
|
|
31
|
-
if (rawQuery
|
|
32
|
-
query.filter = sanitizeFilter(rawQuery
|
|
31
|
+
if (rawQuery['filter']) {
|
|
32
|
+
query.filter = sanitizeFilter(rawQuery['filter'], accountability || null);
|
|
33
33
|
}
|
|
34
|
-
if (rawQuery
|
|
35
|
-
query.offset = sanitizeOffset(rawQuery
|
|
34
|
+
if (rawQuery['offset']) {
|
|
35
|
+
query.offset = sanitizeOffset(rawQuery['offset']);
|
|
36
36
|
}
|
|
37
|
-
if (rawQuery
|
|
38
|
-
query.page = sanitizePage(rawQuery
|
|
37
|
+
if (rawQuery['page']) {
|
|
38
|
+
query.page = sanitizePage(rawQuery['page']);
|
|
39
39
|
}
|
|
40
|
-
if (rawQuery
|
|
41
|
-
query.meta = sanitizeMeta(rawQuery
|
|
40
|
+
if (rawQuery['meta']) {
|
|
41
|
+
query.meta = sanitizeMeta(rawQuery['meta']);
|
|
42
42
|
}
|
|
43
|
-
if (rawQuery
|
|
44
|
-
query.search = rawQuery
|
|
43
|
+
if (rawQuery['search'] && typeof rawQuery['search'] === 'string') {
|
|
44
|
+
query.search = rawQuery['search'];
|
|
45
45
|
}
|
|
46
|
-
if (rawQuery
|
|
47
|
-
query.export = rawQuery
|
|
46
|
+
if (rawQuery['export']) {
|
|
47
|
+
query.export = rawQuery['export'];
|
|
48
48
|
}
|
|
49
|
-
if (rawQuery
|
|
49
|
+
if (rawQuery['deep']) {
|
|
50
50
|
if (!query.deep)
|
|
51
51
|
query.deep = {};
|
|
52
|
-
query.deep = sanitizeDeep(rawQuery
|
|
52
|
+
query.deep = sanitizeDeep(rawQuery['deep'], accountability);
|
|
53
53
|
}
|
|
54
|
-
if (rawQuery
|
|
55
|
-
query.alias = sanitizeAlias(rawQuery
|
|
54
|
+
if (rawQuery['alias']) {
|
|
55
|
+
query.alias = sanitizeAlias(rawQuery['alias']);
|
|
56
56
|
}
|
|
57
57
|
return query;
|
|
58
58
|
}
|
|
59
59
|
exports.sanitizeQuery = sanitizeQuery;
|
|
60
60
|
function sanitizeFields(rawFields) {
|
|
61
61
|
if (!rawFields)
|
|
62
|
-
return;
|
|
62
|
+
return null;
|
|
63
63
|
let fields = [];
|
|
64
64
|
if (typeof rawFields === 'string')
|
|
65
65
|
fields = rawFields.split(',');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Field, Relation } from '@directus/shared/types';
|
|
2
|
-
import { Collection } from '../types';
|
|
1
|
+
import type { Field, Relation } from '@directus/shared/types';
|
|
2
|
+
import type { Collection } from '../types';
|
|
3
3
|
/**
|
|
4
4
|
* Pick certain database vendor specific collection properties that should be compared when performing diff
|
|
5
5
|
*
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shouldSkipCache = void 0;
|
|
4
|
+
const env_1 = require("../env");
|
|
5
|
+
const url_1 = require("./url");
|
|
6
|
+
/**
|
|
7
|
+
* Whether to skip caching for the current request
|
|
8
|
+
*
|
|
9
|
+
* @param req Express request object
|
|
10
|
+
*/
|
|
11
|
+
function shouldSkipCache(req) {
|
|
12
|
+
const env = (0, env_1.getEnv)();
|
|
13
|
+
// Always skip cache for requests coming from the data studio based on Referer header
|
|
14
|
+
const adminUrl = new url_1.Url(env['PUBLIC_URL']).addPath('admin').toString();
|
|
15
|
+
if (req.get('Referer')?.startsWith(adminUrl))
|
|
16
|
+
return true;
|
|
17
|
+
if (env['CACHE_SKIP_ALLOWED'] && req.get('cache-control')?.includes('no-store'))
|
|
18
|
+
return true;
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
exports.shouldSkipCache = shouldSkipCache;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/utils/track.js
CHANGED
|
@@ -14,13 +14,13 @@ const logger_1 = __importDefault(require("../logger"));
|
|
|
14
14
|
const get_milliseconds_1 = require("./get-milliseconds");
|
|
15
15
|
async function track(event) {
|
|
16
16
|
const axios = (await import('axios')).default;
|
|
17
|
-
if (env_1.default
|
|
17
|
+
if (env_1.default['TELEMETRY'] !== false) {
|
|
18
18
|
const info = await getEnvInfo(event);
|
|
19
19
|
try {
|
|
20
20
|
await axios.post('https://telemetry.directus.io/', info);
|
|
21
21
|
}
|
|
22
22
|
catch (err) {
|
|
23
|
-
if (env_1.default
|
|
23
|
+
if (env_1.default['NODE_ENV'] === 'development') {
|
|
24
24
|
logger_1.default.error(err);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -31,9 +31,9 @@ async function getEnvInfo(event) {
|
|
|
31
31
|
return {
|
|
32
32
|
version: package_json_1.version,
|
|
33
33
|
event: event,
|
|
34
|
-
project_id: env_1.default
|
|
34
|
+
project_id: env_1.default['KEY'],
|
|
35
35
|
machine_id: await (0, node_machine_id_1.machineId)(),
|
|
36
|
-
environment: env_1.default
|
|
36
|
+
environment: env_1.default['NODE_ENV'],
|
|
37
37
|
stack: 'node',
|
|
38
38
|
os: {
|
|
39
39
|
arch: os_1.default.arch(),
|
|
@@ -41,36 +41,36 @@ async function getEnvInfo(event) {
|
|
|
41
41
|
release: os_1.default.release(),
|
|
42
42
|
},
|
|
43
43
|
rate_limiter: {
|
|
44
|
-
enabled: env_1.default
|
|
45
|
-
points: +env_1.default
|
|
46
|
-
duration: +env_1.default
|
|
47
|
-
store: env_1.default
|
|
44
|
+
enabled: env_1.default['RATE_LIMITER_ENABLED'],
|
|
45
|
+
points: +env_1.default['RATE_LIMITER_POINTS'],
|
|
46
|
+
duration: +env_1.default['RATE_LIMITER_DURATION'],
|
|
47
|
+
store: env_1.default['RATE_LIMITER_STORE'],
|
|
48
48
|
},
|
|
49
49
|
cache: {
|
|
50
|
-
enabled: env_1.default
|
|
51
|
-
ttl: (0, get_milliseconds_1.getMilliseconds)(env_1.default
|
|
52
|
-
store: env_1.default
|
|
50
|
+
enabled: env_1.default['CACHE_ENABLED'],
|
|
51
|
+
ttl: (0, get_milliseconds_1.getMilliseconds)(env_1.default['CACHE_TTL']),
|
|
52
|
+
store: env_1.default['CACHE_STORE'],
|
|
53
53
|
},
|
|
54
54
|
storage: {
|
|
55
55
|
drivers: getStorageDrivers(),
|
|
56
56
|
},
|
|
57
57
|
cors: {
|
|
58
|
-
enabled: env_1.default
|
|
58
|
+
enabled: env_1.default['CORS_ENABLED'],
|
|
59
59
|
},
|
|
60
60
|
email: {
|
|
61
|
-
transport: env_1.default
|
|
61
|
+
transport: env_1.default['EMAIL_TRANSPORT'],
|
|
62
62
|
},
|
|
63
63
|
auth: {
|
|
64
|
-
providers: (0, utils_1.toArray)(env_1.default
|
|
64
|
+
providers: (0, utils_1.toArray)(env_1.default['AUTH_PROVIDERS'])
|
|
65
65
|
.map((v) => v.trim())
|
|
66
66
|
.filter((v) => v),
|
|
67
67
|
},
|
|
68
|
-
db_client: env_1.default
|
|
68
|
+
db_client: env_1.default['DB_CLIENT'],
|
|
69
69
|
};
|
|
70
70
|
}
|
|
71
71
|
function getStorageDrivers() {
|
|
72
72
|
const drivers = [];
|
|
73
|
-
const locations = (0, utils_1.toArray)(env_1.default
|
|
73
|
+
const locations = (0, utils_1.toArray)(env_1.default['STORAGE_LOCATIONS'])
|
|
74
74
|
.map((v) => v.trim())
|
|
75
75
|
.filter((v) => v);
|
|
76
76
|
for (const location of locations) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { File, Transformation, TransformationParams, TransformationPreset } from '../types';
|
|
1
|
+
import type { File, Transformation, TransformationParams, TransformationPreset } from '../types';
|
|
2
2
|
export declare function resolvePreset(input: TransformationParams | TransformationPreset, file: File): Transformation[];
|
|
3
3
|
/**
|
|
4
4
|
* Try to extract a file format from an array of `Transformation`'s.
|
|
@@ -4,9 +4,8 @@ exports.maybeExtractFormat = exports.resolvePreset = void 0;
|
|
|
4
4
|
const lodash_1 = require("lodash");
|
|
5
5
|
// Extract transforms from a preset
|
|
6
6
|
function resolvePreset(input, file) {
|
|
7
|
-
var _a;
|
|
8
7
|
// Do the format conversion last
|
|
9
|
-
return [extractResize(input), ...(
|
|
8
|
+
return [extractResize(input), ...(input.transforms ?? []), extractToFormat(input, file)].filter((transform) => transform !== undefined);
|
|
10
9
|
}
|
|
11
10
|
exports.resolvePreset = resolvePreset;
|
|
12
11
|
function extractOptions(keys, numberKeys = [], booleanKeys = []) {
|
|
@@ -49,9 +48,8 @@ function extractResize(input) {
|
|
|
49
48
|
* Try to extract a file format from an array of `Transformation`'s.
|
|
50
49
|
*/
|
|
51
50
|
function maybeExtractFormat(transforms) {
|
|
52
|
-
var _a;
|
|
53
51
|
const toFormats = transforms.filter((t) => t[0] === 'toFormat');
|
|
54
52
|
const lastToFormat = toFormats[toFormats.length - 1];
|
|
55
|
-
return lastToFormat ?
|
|
53
|
+
return lastToFormat ? lastToFormat[1]?.toString() : undefined;
|
|
56
54
|
}
|
|
57
55
|
exports.maybeExtractFormat = maybeExtractFormat;
|
package/dist/utils/url.js
CHANGED
|
@@ -3,6 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Url = void 0;
|
|
4
4
|
const url_1 = require("url");
|
|
5
5
|
class Url {
|
|
6
|
+
protocol;
|
|
7
|
+
host;
|
|
8
|
+
port;
|
|
9
|
+
path;
|
|
10
|
+
query;
|
|
11
|
+
hash;
|
|
6
12
|
constructor(url) {
|
|
7
13
|
const parsedUrl = new url_1.URL(url, 'http://localhost');
|
|
8
14
|
const isProtocolRelative = /^\/\//.test(url);
|
|
@@ -44,9 +50,8 @@ class Url {
|
|
|
44
50
|
return this;
|
|
45
51
|
}
|
|
46
52
|
toString({ rootRelative } = { rootRelative: false }) {
|
|
47
|
-
var _a;
|
|
48
53
|
const protocol = this.protocol !== null ? `${this.protocol}:` : '';
|
|
49
|
-
const host =
|
|
54
|
+
const host = this.host ?? '';
|
|
50
55
|
const port = this.port !== null ? `:${this.port}` : '';
|
|
51
56
|
const origin = `${this.host !== null ? `${protocol}//` : ''}${host}${port}`;
|
|
52
57
|
const path = this.path.length ? `/${this.path.join('/')}` : '';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { User } from '@directus/shared/types';
|
|
1
|
+
import type { User } from '@directus/shared/types';
|
|
2
2
|
export declare function userName(user: Partial<User>): string;
|
|
@@ -37,7 +37,7 @@ const applyJoiSchema = joi_1.default.object({
|
|
|
37
37
|
.items(joi_1.default.object({
|
|
38
38
|
collection: joi_1.default.string().required(),
|
|
39
39
|
field: joi_1.default.string().required(),
|
|
40
|
-
related_collection: joi_1.default.string(),
|
|
40
|
+
related_collection: joi_1.default.string().allow(null),
|
|
41
41
|
diff: joi_1.default.array().items(deepDiffSchema).required(),
|
|
42
42
|
}))
|
|
43
43
|
.required(),
|
|
@@ -49,7 +49,6 @@ const applyJoiSchema = joi_1.default.object({
|
|
|
49
49
|
* @returns True if the diff can be applied (valid & not empty).
|
|
50
50
|
*/
|
|
51
51
|
function validateApplyDiff(applyDiff, currentSnapshotWithHash) {
|
|
52
|
-
var _a, _b, _c, _d, _e, _f;
|
|
53
52
|
const { error } = applyJoiSchema.validate(applyDiff);
|
|
54
53
|
if (error)
|
|
55
54
|
throw new index_1.InvalidPayloadException(error.message);
|
|
@@ -64,13 +63,13 @@ function validateApplyDiff(applyDiff, currentSnapshotWithHash) {
|
|
|
64
63
|
return true;
|
|
65
64
|
for (const diffCollection of applyDiff.diff.collections) {
|
|
66
65
|
const collection = diffCollection.collection;
|
|
67
|
-
if (
|
|
66
|
+
if (diffCollection.diff[0]?.kind === snapshot_1.DiffKind.NEW) {
|
|
68
67
|
const existingCollection = currentSnapshotWithHash.collections.find((c) => c.collection === diffCollection.collection);
|
|
69
68
|
if (existingCollection) {
|
|
70
69
|
throw new index_1.InvalidPayloadException(`Provided diff is trying to create collection "${collection}" but it already exists. Please generate a new diff and try again.`);
|
|
71
70
|
}
|
|
72
71
|
}
|
|
73
|
-
else if (
|
|
72
|
+
else if (diffCollection.diff[0]?.kind === snapshot_1.DiffKind.DELETE) {
|
|
74
73
|
const existingCollection = currentSnapshotWithHash.collections.find((c) => c.collection === diffCollection.collection);
|
|
75
74
|
if (!existingCollection) {
|
|
76
75
|
throw new index_1.InvalidPayloadException(`Provided diff is trying to delete collection "${collection}" but it does not exist. Please generate a new diff and try again.`);
|
|
@@ -79,13 +78,13 @@ function validateApplyDiff(applyDiff, currentSnapshotWithHash) {
|
|
|
79
78
|
}
|
|
80
79
|
for (const diffField of applyDiff.diff.fields) {
|
|
81
80
|
const field = `${diffField.collection}.${diffField.field}`;
|
|
82
|
-
if (
|
|
81
|
+
if (diffField.diff[0]?.kind === snapshot_1.DiffKind.NEW) {
|
|
83
82
|
const existingField = currentSnapshotWithHash.fields.find((f) => f.collection === diffField.collection && f.field === diffField.field);
|
|
84
83
|
if (existingField) {
|
|
85
84
|
throw new index_1.InvalidPayloadException(`Provided diff is trying to create field "${field}" but it already exists. Please generate a new diff and try again.`);
|
|
86
85
|
}
|
|
87
86
|
}
|
|
88
|
-
else if (
|
|
87
|
+
else if (diffField.diff[0]?.kind === snapshot_1.DiffKind.DELETE) {
|
|
89
88
|
const existingField = currentSnapshotWithHash.fields.find((f) => f.collection === diffField.collection && f.field === diffField.field);
|
|
90
89
|
if (!existingField) {
|
|
91
90
|
throw new index_1.InvalidPayloadException(`Provided diff is trying to delete field "${field}" but it does not exist. Please generate a new diff and try again.`);
|
|
@@ -96,13 +95,13 @@ function validateApplyDiff(applyDiff, currentSnapshotWithHash) {
|
|
|
96
95
|
let relation = `${diffRelation.collection}.${diffRelation.field}`;
|
|
97
96
|
if (diffRelation.related_collection)
|
|
98
97
|
relation += `-> ${diffRelation.related_collection}`;
|
|
99
|
-
if (
|
|
98
|
+
if (diffRelation.diff[0]?.kind === snapshot_1.DiffKind.NEW) {
|
|
100
99
|
const existingRelation = currentSnapshotWithHash.relations.find((r) => r.collection === diffRelation.collection && r.field === diffRelation.field);
|
|
101
100
|
if (existingRelation) {
|
|
102
101
|
throw new index_1.InvalidPayloadException(`Provided diff is trying to create relation "${relation}" but it already exists. Please generate a new diff and try again.`);
|
|
103
102
|
}
|
|
104
103
|
}
|
|
105
|
-
else if (
|
|
104
|
+
else if (diffRelation.diff[0]?.kind === snapshot_1.DiffKind.DELETE) {
|
|
106
105
|
const existingRelation = currentSnapshotWithHash.relations.find((r) => r.collection === diffRelation.collection && r.field === diffRelation.field);
|
|
107
106
|
if (!existingRelation) {
|
|
108
107
|
throw new index_1.InvalidPayloadException(`Provided diff is trying to delete relation "${relation}" but it does not exist. Please generate a new diff and try again.`);
|
|
@@ -4,8 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.validateKeys = void 0;
|
|
7
|
-
const exceptions_1 = require("../exceptions");
|
|
8
7
|
const uuid_validate_1 = __importDefault(require("uuid-validate"));
|
|
8
|
+
const exceptions_1 = require("../exceptions");
|
|
9
9
|
/**
|
|
10
10
|
* Validate keys based on its type
|
|
11
11
|
*/
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Query } from '@directus/shared/types';
|
|
1
|
+
import type { Query } from '@directus/shared/types';
|
|
2
2
|
export declare function validateQuery(query: Query): Query;
|
|
@@ -6,10 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.validateQuery = void 0;
|
|
7
7
|
const joi_1 = __importDefault(require("joi"));
|
|
8
8
|
const lodash_1 = require("lodash");
|
|
9
|
-
const exceptions_1 = require("../exceptions");
|
|
10
9
|
const wellknown_1 = require("wellknown");
|
|
11
|
-
const calculate_field_depth_1 = require("./calculate-field-depth");
|
|
12
10
|
const env_1 = __importDefault(require("../env"));
|
|
11
|
+
const exceptions_1 = require("../exceptions");
|
|
12
|
+
const calculate_field_depth_1 = require("./calculate-field-depth");
|
|
13
13
|
const querySchema = joi_1.default.object({
|
|
14
14
|
fields: joi_1.default.array().items(joi_1.default.string()),
|
|
15
15
|
group: joi_1.default.array().items(joi_1.default.string()),
|
|
@@ -157,7 +157,7 @@ function validateAlias(alias) {
|
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
159
|
function validateRelationalDepth(query) {
|
|
160
|
-
const maxRelationalDepth = Number(env_1.default
|
|
160
|
+
const maxRelationalDepth = Number(env_1.default['MAX_RELATIONAL_DEPTH']) > 2 ? Number(env_1.default['MAX_RELATIONAL_DEPTH']) : 2;
|
|
161
161
|
// Process the fields in the same way as api/src/utils/get-ast-from-query.ts
|
|
162
162
|
let fields = ['*'];
|
|
163
163
|
if (query.fields) {
|
|
@@ -11,28 +11,28 @@ const fs_1 = require("fs");
|
|
|
11
11
|
const path_1 = __importDefault(require("path"));
|
|
12
12
|
const utils_1 = require("@directus/shared/utils");
|
|
13
13
|
async function validateStorage() {
|
|
14
|
-
if (env_1.default
|
|
14
|
+
if (env_1.default['DB_CLIENT'] === 'sqlite3') {
|
|
15
15
|
try {
|
|
16
|
-
await (0, fs_extra_1.access)(path_1.default.dirname(env_1.default
|
|
16
|
+
await (0, fs_extra_1.access)(path_1.default.dirname(env_1.default['DB_FILENAME']), fs_1.constants.R_OK | fs_1.constants.W_OK);
|
|
17
17
|
}
|
|
18
18
|
catch {
|
|
19
|
-
logger_1.default.warn(`Directory for SQLite database file (${path_1.default.resolve(path_1.default.dirname(env_1.default
|
|
19
|
+
logger_1.default.warn(`Directory for SQLite database file (${path_1.default.resolve(path_1.default.dirname(env_1.default['DB_FILENAME']))}) is not read/writeable!`);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
const usedStorageDrivers = (0, utils_1.toArray)(env_1.default
|
|
22
|
+
const usedStorageDrivers = (0, utils_1.toArray)(env_1.default['STORAGE_LOCATIONS']).map((location) => env_1.default[`STORAGE_${location.toUpperCase()}_DRIVER`]);
|
|
23
23
|
if (usedStorageDrivers.includes('local')) {
|
|
24
24
|
try {
|
|
25
|
-
await (0, fs_extra_1.access)(env_1.default
|
|
25
|
+
await (0, fs_extra_1.access)(env_1.default['STORAGE_LOCAL_ROOT'], fs_1.constants.R_OK | fs_1.constants.W_OK);
|
|
26
26
|
}
|
|
27
27
|
catch {
|
|
28
|
-
logger_1.default.warn(`Upload directory (${path_1.default.resolve(env_1.default
|
|
28
|
+
logger_1.default.warn(`Upload directory (${path_1.default.resolve(env_1.default['STORAGE_LOCAL_ROOT'])}) is not read/writeable!`);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
try {
|
|
32
|
-
await (0, fs_extra_1.access)(env_1.default
|
|
32
|
+
await (0, fs_extra_1.access)(env_1.default['EXTENSIONS_PATH'], fs_1.constants.R_OK);
|
|
33
33
|
}
|
|
34
34
|
catch {
|
|
35
|
-
logger_1.default.warn(`Extensions directory (${path_1.default.resolve(env_1.default
|
|
35
|
+
logger_1.default.warn(`Extensions directory (${path_1.default.resolve(env_1.default['EXTENSIONS_PATH'])}) is not readable!`);
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
exports.validateStorage = validateStorage;
|
package/dist/webhooks.js
CHANGED
|
@@ -18,7 +18,7 @@ async function init() {
|
|
|
18
18
|
await register();
|
|
19
19
|
const messenger = (0, messenger_1.getMessenger)();
|
|
20
20
|
messenger.subscribe('webhooks', (event) => {
|
|
21
|
-
if (event
|
|
21
|
+
if (event['type'] === 'reload') {
|
|
22
22
|
reloadQueue.enqueue(async () => {
|
|
23
23
|
await reload();
|
|
24
24
|
});
|
|
@@ -53,7 +53,7 @@ function unregister() {
|
|
|
53
53
|
exports.unregister = unregister;
|
|
54
54
|
function createHandler(webhook, event) {
|
|
55
55
|
return async (meta, context) => {
|
|
56
|
-
if (webhook.collections.includes(meta
|
|
56
|
+
if (webhook.collections.includes(meta['collection']) === false)
|
|
57
57
|
return;
|
|
58
58
|
const axios = await (0, index_1.getAxios)();
|
|
59
59
|
const webhookPayload = {
|
|
@@ -82,7 +82,7 @@ function createHandler(webhook, event) {
|
|
|
82
82
|
}
|
|
83
83
|
function mergeHeaders(headerArray) {
|
|
84
84
|
const headers = {};
|
|
85
|
-
for (const { header, value } of headerArray
|
|
85
|
+
for (const { header, value } of headerArray ?? []) {
|
|
86
86
|
headers[header] = value;
|
|
87
87
|
}
|
|
88
88
|
return headers;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "directus",
|
|
3
|
-
"version": "9.23.
|
|
3
|
+
"version": "9.23.4",
|
|
4
4
|
"description": "Directus is a real-time API and App dashboard for managing SQL database content",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"directus",
|
|
@@ -65,15 +65,14 @@
|
|
|
65
65
|
],
|
|
66
66
|
"dependencies": {
|
|
67
67
|
"@authenio/samlify-node-xmllint": "2.0.0",
|
|
68
|
-
"@aws-sdk/client-ses": "3.
|
|
68
|
+
"@aws-sdk/client-ses": "3.292.0",
|
|
69
69
|
"@directus/format-title": "9.15.0",
|
|
70
70
|
"@godaddy/terminus": "4.11.2",
|
|
71
71
|
"@rollup/plugin-alias": "4.0.3",
|
|
72
72
|
"@rollup/plugin-virtual": "3.0.1",
|
|
73
73
|
"argon2": "0.30.3",
|
|
74
74
|
"async": "3.2.4",
|
|
75
|
-
"
|
|
76
|
-
"axios": "1.3.3",
|
|
75
|
+
"axios": "1.3.4",
|
|
77
76
|
"busboy": "1.6.0",
|
|
78
77
|
"bytes": "3.1.2",
|
|
79
78
|
"camelcase": "6.3.0",
|
|
@@ -90,7 +89,7 @@
|
|
|
90
89
|
"encodeurl": "1.0.2",
|
|
91
90
|
"eventemitter2": "6.4.9",
|
|
92
91
|
"execa": "5.1.1",
|
|
93
|
-
"exif-reader": "1.
|
|
92
|
+
"exif-reader": "1.2.0",
|
|
94
93
|
"express": "4.18.2",
|
|
95
94
|
"fast-redact": "3.1.2",
|
|
96
95
|
"flat": "5.0.2",
|
|
@@ -102,7 +101,7 @@
|
|
|
102
101
|
"icc": "2.0.0",
|
|
103
102
|
"inquirer": "8.2.5",
|
|
104
103
|
"ioredis": "5.3.1",
|
|
105
|
-
"joi": "17.
|
|
104
|
+
"joi": "17.8.4",
|
|
106
105
|
"js-yaml": "4.1.0",
|
|
107
106
|
"js2xmlparser": "5.0.0",
|
|
108
107
|
"json2csv": "5.0.7",
|
|
@@ -111,7 +110,7 @@
|
|
|
111
110
|
"knex": "2.4.2",
|
|
112
111
|
"knex-schema-inspector": "3.0.1",
|
|
113
112
|
"ldapjs": "2.3.3",
|
|
114
|
-
"liquidjs": "10.
|
|
113
|
+
"liquidjs": "10.6.1",
|
|
115
114
|
"lodash": "4.17.21",
|
|
116
115
|
"marked": "4.2.12",
|
|
117
116
|
"micromustache": "8.0.3",
|
|
@@ -122,19 +121,19 @@
|
|
|
122
121
|
"node-machine-id": "1.1.12",
|
|
123
122
|
"nodemailer": "6.9.1",
|
|
124
123
|
"object-hash": "3.0.0",
|
|
125
|
-
"openapi3-ts": "3.
|
|
124
|
+
"openapi3-ts": "3.2.0",
|
|
126
125
|
"openid-client": "5.4.0",
|
|
127
126
|
"ora": "5.4.1",
|
|
128
127
|
"otplib": "12.0.1",
|
|
129
|
-
"pino": "8.
|
|
128
|
+
"pino": "8.11.0",
|
|
130
129
|
"pino-http": "8.3.3",
|
|
131
130
|
"pino-http-print": "3.1.0",
|
|
132
|
-
"pino-pretty": "
|
|
133
|
-
"qs": "6.11.
|
|
131
|
+
"pino-pretty": "10.0.0",
|
|
132
|
+
"qs": "6.11.1",
|
|
134
133
|
"rate-limiter-flexible": "2.4.1",
|
|
135
|
-
"rollup": "3.
|
|
136
|
-
"samlify": "2.8.
|
|
137
|
-
"sanitize-html": "2.
|
|
134
|
+
"rollup": "3.19.1",
|
|
135
|
+
"samlify": "2.8.10",
|
|
136
|
+
"sanitize-html": "2.10.0",
|
|
138
137
|
"sharp": "0.31.3",
|
|
139
138
|
"snappy": "7.2.2",
|
|
140
139
|
"stream-json": "1.7.5",
|
|
@@ -145,22 +144,22 @@
|
|
|
145
144
|
"uuid-validate": "0.0.3",
|
|
146
145
|
"vm2": "3.9.14",
|
|
147
146
|
"wellknown": "0.5.0",
|
|
148
|
-
"@directus/app": "9.23.
|
|
149
|
-
"@directus/
|
|
150
|
-
"@directus/
|
|
151
|
-
"@directus/shared": "9.23.
|
|
152
|
-
"@directus/
|
|
153
|
-
"@directus/
|
|
154
|
-
"@directus/storage-driver-azure": "9.23.
|
|
155
|
-
"@directus/storage-driver-cloudinary": "9.23.
|
|
156
|
-
"@directus/storage-driver-gcs": "9.23.
|
|
157
|
-
"@directus/storage-driver-local": "9.23.
|
|
158
|
-
"@directus/storage-driver-s3": "9.23.
|
|
159
|
-
"@directus/utils": "9.23.
|
|
147
|
+
"@directus/app": "9.23.4",
|
|
148
|
+
"@directus/schema": "9.23.4",
|
|
149
|
+
"@directus/extensions-sdk": "9.23.4",
|
|
150
|
+
"@directus/shared": "9.23.4",
|
|
151
|
+
"@directus/storage": "9.23.4",
|
|
152
|
+
"@directus/specs": "9.23.4",
|
|
153
|
+
"@directus/storage-driver-azure": "9.23.4",
|
|
154
|
+
"@directus/storage-driver-cloudinary": "9.23.4",
|
|
155
|
+
"@directus/storage-driver-gcs": "9.23.4",
|
|
156
|
+
"@directus/storage-driver-local": "9.23.4",
|
|
157
|
+
"@directus/storage-driver-s3": "9.23.4",
|
|
158
|
+
"@directus/utils": "9.23.4"
|
|
160
159
|
},
|
|
161
160
|
"devDependencies": {
|
|
162
161
|
"@ngneat/falso": "6.4.0",
|
|
163
|
-
"@types/async": "3.2.
|
|
162
|
+
"@types/async": "3.2.18",
|
|
164
163
|
"@types/busboy": "1.5.0",
|
|
165
164
|
"@types/bytes": "3.1.1",
|
|
166
165
|
"@types/cookie-parser": "1.4.3",
|
|
@@ -184,35 +183,35 @@
|
|
|
184
183
|
"@types/marked": "4.0.8",
|
|
185
184
|
"@types/mime-types": "2.1.1",
|
|
186
185
|
"@types/ms": "0.7.31",
|
|
187
|
-
"@types/node": "18.
|
|
186
|
+
"@types/node": "18.15.3",
|
|
188
187
|
"@types/node-cron": "3.0.7",
|
|
189
188
|
"@types/nodemailer": "6.4.7",
|
|
190
189
|
"@types/object-hash": "3.0.2",
|
|
191
190
|
"@types/qs": "6.9.7",
|
|
192
|
-
"@types/sanitize-html": "2.
|
|
191
|
+
"@types/sanitize-html": "2.9.0",
|
|
193
192
|
"@types/sharp": "0.31.1",
|
|
194
193
|
"@types/stream-json": "1.7.3",
|
|
195
|
-
"@types/uuid": "9.0.
|
|
194
|
+
"@types/uuid": "9.0.1",
|
|
196
195
|
"@types/uuid-validate": "0.0.1",
|
|
197
196
|
"@types/wellknown": "0.5.4",
|
|
198
|
-
"@vitest/coverage-c8": "0.
|
|
197
|
+
"@vitest/coverage-c8": "0.29.3",
|
|
199
198
|
"copyfiles": "2.4.1",
|
|
200
199
|
"form-data": "4.0.0",
|
|
201
|
-
"knex-mock-client": "
|
|
200
|
+
"knex-mock-client": "2.0.0",
|
|
202
201
|
"ts-node": "10.9.1",
|
|
203
202
|
"ts-node-dev": "2.0.0",
|
|
204
203
|
"typescript": "4.9.5",
|
|
205
|
-
"vitest": "0.
|
|
204
|
+
"vitest": "0.29.3"
|
|
206
205
|
},
|
|
207
206
|
"optionalDependencies": {
|
|
208
|
-
"@keyv/redis": "2.5.
|
|
207
|
+
"@keyv/redis": "2.5.6",
|
|
209
208
|
"keyv-memcache": "1.3.3",
|
|
210
209
|
"memcached": "2.2.2",
|
|
211
210
|
"mysql": "2.18.1",
|
|
212
211
|
"nodemailer-mailgun-transport": "2.1.5",
|
|
213
212
|
"nodemailer-sendgrid": "1.0.3",
|
|
214
|
-
"pg": "8.
|
|
215
|
-
"sqlite3": "5.1.
|
|
213
|
+
"pg": "8.10.0",
|
|
214
|
+
"sqlite3": "5.1.6",
|
|
216
215
|
"tedious": "15.1.3"
|
|
217
216
|
},
|
|
218
217
|
"engines": {
|
|
@@ -222,7 +221,7 @@
|
|
|
222
221
|
"build": "tsc --build && copyfiles \"src/**/*.{yaml,liquid}\" -u 1 dist",
|
|
223
222
|
"cli": "NODE_ENV=development SERVE_APP=false ts-node --script-mode --transpile-only src/cli/run.ts",
|
|
224
223
|
"dev": "NODE_ENV=development SERVE_APP=false ts-node-dev --files --transpile-only --respawn --watch \".env\" --inspect=0 --exit-child -- src/start.ts",
|
|
225
|
-
"start": "
|
|
224
|
+
"start": "node cli.js start",
|
|
226
225
|
"test": "vitest run",
|
|
227
226
|
"test:coverage": "vitest run --coverage",
|
|
228
227
|
"test:watch": "vitest"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const withTimeout: <T extends (...args: any[]) => Promise<unknown>>(prom: T, ms: number, err?: Error) => T;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.withTimeout = void 0;
|
|
4
|
-
const withTimeout = (prom, ms, err = new Error('Promise execution timed out')) => {
|
|
5
|
-
return ((...args) => {
|
|
6
|
-
return new Promise((resolve, reject) => {
|
|
7
|
-
setTimeout(() => {
|
|
8
|
-
reject(err);
|
|
9
|
-
}, ms);
|
|
10
|
-
prom(...args)
|
|
11
|
-
.then(resolve)
|
|
12
|
-
.catch(reject);
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
};
|
|
16
|
-
exports.withTimeout = withTimeout;
|