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
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { CollectionMeta } from '../../../types';
|
|
1
|
+
import type { CollectionMeta } from '../../../types';
|
|
2
2
|
export declare const systemCollectionRows: CollectionMeta[];
|
|
@@ -4,6 +4,6 @@ exports.systemCollectionRows = void 0;
|
|
|
4
4
|
const lodash_1 = require("lodash");
|
|
5
5
|
const require_yaml_1 = require("../../../utils/require-yaml");
|
|
6
6
|
const systemData = (0, require_yaml_1.requireYAML)(require.resolve('./collections.yaml'));
|
|
7
|
-
exports.systemCollectionRows = systemData
|
|
8
|
-
return (0, lodash_1.merge)({ system: true }, systemData
|
|
7
|
+
exports.systemCollectionRows = systemData['data'].map((row) => {
|
|
8
|
+
return (0, lodash_1.merge)({ system: true }, systemData['defaults'], row);
|
|
9
9
|
});
|
|
@@ -72,12 +72,14 @@ fields:
|
|
|
72
72
|
meta:
|
|
73
73
|
interface: system-language
|
|
74
74
|
width: half
|
|
75
|
+
required: true
|
|
75
76
|
- field: translation
|
|
76
77
|
name: $t:field_options.directus_collections.collection_name
|
|
77
78
|
type: string
|
|
78
79
|
meta:
|
|
79
80
|
interface: input
|
|
80
81
|
width: half
|
|
82
|
+
required: true
|
|
81
83
|
options:
|
|
82
84
|
placeholder: $t:field_options.directus_collections.translation_placeholder
|
|
83
85
|
- field: singular
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { FieldMeta } from '@directus/shared/types';
|
|
1
|
+
import type { FieldMeta } from '@directus/shared/types';
|
|
2
2
|
export declare const systemFieldRows: FieldMeta[];
|
|
@@ -18,16 +18,15 @@ for (const filepath of fieldData) {
|
|
|
18
18
|
if (filepath.includes('_defaults') || filepath.includes('index'))
|
|
19
19
|
continue;
|
|
20
20
|
const systemFields = (0, require_yaml_1.requireYAML)(path_1.default.resolve(__dirname, filepath));
|
|
21
|
-
systemFields
|
|
21
|
+
systemFields['fields'].forEach((field, index) => {
|
|
22
22
|
const systemField = (0, lodash_1.merge)({ system: true }, defaults, field, {
|
|
23
|
-
collection: systemFields
|
|
23
|
+
collection: systemFields['table'],
|
|
24
24
|
sort: index + 1,
|
|
25
25
|
});
|
|
26
26
|
// Dynamically populate auth providers field
|
|
27
27
|
if (systemField.collection === 'directus_users' && systemField.field === 'provider') {
|
|
28
28
|
(0, get_auth_providers_1.getAuthProviders)().forEach(({ name }) => {
|
|
29
|
-
|
|
30
|
-
(_b = (_a = systemField.options) === null || _a === void 0 ? void 0 : _a.choices) === null || _b === void 0 ? void 0 : _b.push({
|
|
29
|
+
systemField.options?.['choices']?.push({
|
|
31
30
|
text: (0, format_title_1.default)(name),
|
|
32
31
|
value: name,
|
|
33
32
|
});
|
|
@@ -183,6 +183,7 @@ fields:
|
|
|
183
183
|
slug: true
|
|
184
184
|
onlyOnCreate: false
|
|
185
185
|
width: full
|
|
186
|
+
required: true
|
|
186
187
|
- field: fit
|
|
187
188
|
name: $t:field_options.directus_settings.storage_asset_presets.fit_label
|
|
188
189
|
type: string
|
|
@@ -322,6 +323,7 @@ fields:
|
|
|
322
323
|
is_nullable: false
|
|
323
324
|
meta:
|
|
324
325
|
interface: text-input
|
|
326
|
+
required: true
|
|
325
327
|
options:
|
|
326
328
|
placeholder: $t:field_options.directus_settings.basemaps_name_placeholder
|
|
327
329
|
- field: type
|
|
@@ -397,6 +399,7 @@ fields:
|
|
|
397
399
|
meta:
|
|
398
400
|
interface: text-input
|
|
399
401
|
width: half
|
|
402
|
+
required: true
|
|
400
403
|
options:
|
|
401
404
|
placeholder: $t:text
|
|
402
405
|
- field: value
|
|
@@ -405,5 +408,6 @@ fields:
|
|
|
405
408
|
meta:
|
|
406
409
|
interface: input
|
|
407
410
|
width: half
|
|
411
|
+
required: true
|
|
408
412
|
options:
|
|
409
413
|
placeholder: $t:value
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { RelationMeta } from '@directus/shared/types';
|
|
1
|
+
import type { RelationMeta } from '@directus/shared/types';
|
|
2
2
|
export declare const systemRelationRows: RelationMeta[];
|
package/dist/emitter.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ActionHandler, EventContext, FilterHandler, InitHandler } from '@directus/shared/types';
|
|
1
|
+
import type { ActionHandler, EventContext, FilterHandler, InitHandler } from '@directus/shared/types';
|
|
2
2
|
export declare class Emitter {
|
|
3
3
|
private filterEmitter;
|
|
4
4
|
private actionEmitter;
|
package/dist/emitter.js
CHANGED
|
@@ -7,6 +7,9 @@ exports.Emitter = void 0;
|
|
|
7
7
|
const eventemitter2_1 = require("eventemitter2");
|
|
8
8
|
const logger_1 = __importDefault(require("./logger"));
|
|
9
9
|
class Emitter {
|
|
10
|
+
filterEmitter;
|
|
11
|
+
actionEmitter;
|
|
12
|
+
initEmitter;
|
|
10
13
|
constructor() {
|
|
11
14
|
const emitterOptions = {
|
|
12
15
|
wildcard: true,
|
package/dist/env.js
CHANGED
|
@@ -62,6 +62,7 @@ const allowedEnvironmentVars = [
|
|
|
62
62
|
'CORS_CREDENTIALS',
|
|
63
63
|
'CORS_MAX_AGE',
|
|
64
64
|
// rate limiting
|
|
65
|
+
'RATE_LIMITER_GLOBAL_.+',
|
|
65
66
|
'RATE_LIMITER_.+',
|
|
66
67
|
// cache
|
|
67
68
|
'CACHE_ENABLED',
|
|
@@ -80,6 +81,7 @@ const allowedEnvironmentVars = [
|
|
|
80
81
|
'CACHE_REDIS_PASSWORD',
|
|
81
82
|
'CACHE_MEMCACHE',
|
|
82
83
|
'CACHE_VALUE_MAX_SIZE',
|
|
84
|
+
'CACHE_SKIP_ALLOWED',
|
|
83
85
|
'CACHE_HEALTHCHECK_THRESHOLD',
|
|
84
86
|
// storage
|
|
85
87
|
'STORAGE_LOCATIONS',
|
|
@@ -203,9 +205,13 @@ const defaults = {
|
|
|
203
205
|
STORAGE_LOCAL_DRIVER: 'local',
|
|
204
206
|
STORAGE_LOCAL_ROOT: './uploads',
|
|
205
207
|
RATE_LIMITER_ENABLED: false,
|
|
206
|
-
RATE_LIMITER_POINTS:
|
|
208
|
+
RATE_LIMITER_POINTS: 50,
|
|
207
209
|
RATE_LIMITER_DURATION: 1,
|
|
208
210
|
RATE_LIMITER_STORE: 'memory',
|
|
211
|
+
RATE_LIMITER_GLOBAL_ENABLED: false,
|
|
212
|
+
RATE_LIMITER_GLOBAL_POINTS: 1000,
|
|
213
|
+
RATE_LIMITER_GLOBAL_DURATION: 1,
|
|
214
|
+
RATE_LIMITER_GLOBAL_STORE: 'memory',
|
|
209
215
|
ACCESS_TOKEN_TTL: '15m',
|
|
210
216
|
REFRESH_TOKEN_TTL: '7d',
|
|
211
217
|
REFRESH_TOKEN_COOKIE_SECURE: false,
|
|
@@ -229,6 +235,7 @@ const defaults = {
|
|
|
229
235
|
CACHE_SCHEMA: true,
|
|
230
236
|
CACHE_PERMISSIONS: true,
|
|
231
237
|
CACHE_VALUE_MAX_SIZE: false,
|
|
238
|
+
CACHE_SKIP_ALLOWED: false,
|
|
232
239
|
AUTH_PROVIDERS: '',
|
|
233
240
|
AUTH_DISABLE_DEFAULT: false,
|
|
234
241
|
PACKAGE_FILE_LOCATION: '.',
|
|
@@ -241,7 +248,7 @@ const defaults = {
|
|
|
241
248
|
EMAIL_SENDMAIL_PATH: '/usr/sbin/sendmail',
|
|
242
249
|
TELEMETRY: true,
|
|
243
250
|
ASSETS_CACHE_TTL: '30d',
|
|
244
|
-
ASSETS_TRANSFORM_MAX_CONCURRENT:
|
|
251
|
+
ASSETS_TRANSFORM_MAX_CONCURRENT: 25,
|
|
245
252
|
ASSETS_TRANSFORM_IMAGE_MAX_DIMENSION: 6000,
|
|
246
253
|
ASSETS_TRANSFORM_MAX_OPERATIONS: 5,
|
|
247
254
|
ASSETS_TRANSFORM_TIMEOUT: '7500ms',
|
|
@@ -268,6 +275,7 @@ const typeMap = {
|
|
|
268
275
|
DB_DATABASE: 'string',
|
|
269
276
|
DB_PORT: 'number',
|
|
270
277
|
DB_EXCLUDE_TABLES: 'array',
|
|
278
|
+
CACHE_SKIP_ALLOWED: 'boolean',
|
|
271
279
|
IMPORT_IP_DENY_LIST: 'array',
|
|
272
280
|
FILE_METADATA_ALLOW_LIST: 'array',
|
|
273
281
|
GRAPHQL_INTROSPECTION: 'boolean',
|
|
@@ -300,7 +308,7 @@ function refreshEnv() {
|
|
|
300
308
|
}
|
|
301
309
|
exports.refreshEnv = refreshEnv;
|
|
302
310
|
function processConfiguration() {
|
|
303
|
-
const configPath = path_1.default.resolve(process.env
|
|
311
|
+
const configPath = path_1.default.resolve(process.env['CONFIG_PATH'] || defaults['CONFIG_PATH']);
|
|
304
312
|
if (fs_1.default.existsSync(configPath) === false)
|
|
305
313
|
return {};
|
|
306
314
|
const fileExt = path_1.default.extname(configPath).toLowerCase();
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { MSSQLError } from './types';
|
|
1
|
+
import type { MSSQLError } from './types';
|
|
2
2
|
export declare function extractError(error: MSSQLError): Promise<MSSQLError | Error>;
|
|
@@ -48,15 +48,14 @@ async function uniqueViolation(error) {
|
|
|
48
48
|
* While it's not ideal, the best next thing we can do is extract the column name from
|
|
49
49
|
* information_schema when this happens
|
|
50
50
|
*/
|
|
51
|
-
var _a, _b, _c;
|
|
52
51
|
const betweenQuotes = /'([^']+)'/g;
|
|
53
52
|
const betweenParens = /\(([^)]+)\)/g;
|
|
54
53
|
const quoteMatches = error.message.match(betweenQuotes);
|
|
55
54
|
const parenMatches = error.message.match(betweenParens);
|
|
56
55
|
if (!quoteMatches || !parenMatches)
|
|
57
56
|
return error;
|
|
58
|
-
const keyName =
|
|
59
|
-
let collection =
|
|
57
|
+
const keyName = quoteMatches[1]?.slice(1, -1);
|
|
58
|
+
let collection = quoteMatches[0]?.slice(1, -1);
|
|
60
59
|
let field = null;
|
|
61
60
|
if (keyName) {
|
|
62
61
|
const database = (0, database_1.default)();
|
|
@@ -75,10 +74,10 @@ async function uniqueViolation(error) {
|
|
|
75
74
|
})
|
|
76
75
|
.where('sys.indexes.name', '=', keyName)
|
|
77
76
|
.first();
|
|
78
|
-
collection = constraintUsage
|
|
79
|
-
field = constraintUsage
|
|
77
|
+
collection = constraintUsage?.collection;
|
|
78
|
+
field = constraintUsage?.field;
|
|
80
79
|
}
|
|
81
|
-
const invalid =
|
|
80
|
+
const invalid = parenMatches[parenMatches.length - 1]?.slice(1, -1);
|
|
82
81
|
return new record_not_unique_1.RecordNotUniqueException(field, {
|
|
83
82
|
collection,
|
|
84
83
|
field,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { MySQLError } from './types';
|
|
1
|
+
import type { MySQLError } from './types';
|
|
2
2
|
export declare function extractError(error: MySQLError): MySQLError | Error;
|
|
@@ -38,7 +38,6 @@ function extractError(error) {
|
|
|
38
38
|
}
|
|
39
39
|
exports.extractError = extractError;
|
|
40
40
|
function uniqueViolation(error) {
|
|
41
|
-
var _a, _b, _c, _d, _e;
|
|
42
41
|
const betweenQuotes = /'([^']+)'/g;
|
|
43
42
|
const matches = error.sqlMessage.match(betweenQuotes);
|
|
44
43
|
if (!matches)
|
|
@@ -50,13 +49,13 @@ function uniqueViolation(error) {
|
|
|
50
49
|
*/
|
|
51
50
|
/** MySQL 8+ style error message */
|
|
52
51
|
if (matches[1].includes('.')) {
|
|
53
|
-
const collection =
|
|
52
|
+
const collection = matches[1]?.slice(1, -1).split('.')[0];
|
|
54
53
|
let field = null;
|
|
55
|
-
const indexName =
|
|
56
|
-
if (
|
|
57
|
-
field = indexName
|
|
54
|
+
const indexName = matches[1]?.slice(1, -1).split('.')[1];
|
|
55
|
+
if (indexName?.startsWith(`${collection}_`) && indexName.endsWith('_unique')) {
|
|
56
|
+
field = indexName?.slice(collection.length + 1, -7);
|
|
58
57
|
}
|
|
59
|
-
const invalid =
|
|
58
|
+
const invalid = matches[0]?.slice(1, -1);
|
|
60
59
|
return new record_not_unique_1.RecordNotUniqueException(field, {
|
|
61
60
|
collection,
|
|
62
61
|
field,
|
|
@@ -65,13 +64,13 @@ function uniqueViolation(error) {
|
|
|
65
64
|
}
|
|
66
65
|
else {
|
|
67
66
|
/** MySQL 5.7 style error message */
|
|
68
|
-
const indexName =
|
|
67
|
+
const indexName = matches[1]?.slice(1, -1);
|
|
69
68
|
const collection = indexName.split('_')[0];
|
|
70
69
|
let field = null;
|
|
71
|
-
if (
|
|
72
|
-
field = indexName
|
|
70
|
+
if (indexName?.startsWith(`${collection}_`) && indexName.endsWith('_unique')) {
|
|
71
|
+
field = indexName?.slice(collection.length + 1, -7);
|
|
73
72
|
}
|
|
74
|
-
const invalid =
|
|
73
|
+
const invalid = matches[0]?.slice(1, -1);
|
|
75
74
|
return new record_not_unique_1.RecordNotUniqueException(field, {
|
|
76
75
|
collection,
|
|
77
76
|
field,
|
|
@@ -80,61 +79,57 @@ function uniqueViolation(error) {
|
|
|
80
79
|
}
|
|
81
80
|
}
|
|
82
81
|
function numericValueOutOfRange(error) {
|
|
83
|
-
var _a, _b;
|
|
84
82
|
const betweenTicks = /`([^`]+)`/g;
|
|
85
83
|
const betweenQuotes = /'([^']+)'/g;
|
|
86
84
|
const tickMatches = error.sql.match(betweenTicks);
|
|
87
85
|
const quoteMatches = error.sqlMessage.match(betweenQuotes);
|
|
88
86
|
if (!tickMatches || !quoteMatches)
|
|
89
87
|
return error;
|
|
90
|
-
const collection =
|
|
91
|
-
const field =
|
|
88
|
+
const collection = tickMatches[0]?.slice(1, -1);
|
|
89
|
+
const field = quoteMatches[0]?.slice(1, -1);
|
|
92
90
|
return new value_out_of_range_1.ValueOutOfRangeException(field, {
|
|
93
91
|
collection,
|
|
94
92
|
field,
|
|
95
93
|
});
|
|
96
94
|
}
|
|
97
95
|
function valueLimitViolation(error) {
|
|
98
|
-
var _a, _b;
|
|
99
96
|
const betweenTicks = /`([^`]+)`/g;
|
|
100
97
|
const betweenQuotes = /'([^']+)'/g;
|
|
101
98
|
const tickMatches = error.sql.match(betweenTicks);
|
|
102
99
|
const quoteMatches = error.sqlMessage.match(betweenQuotes);
|
|
103
100
|
if (!tickMatches || !quoteMatches)
|
|
104
101
|
return error;
|
|
105
|
-
const collection =
|
|
106
|
-
const field =
|
|
102
|
+
const collection = tickMatches[0]?.slice(1, -1);
|
|
103
|
+
const field = quoteMatches[0]?.slice(1, -1);
|
|
107
104
|
return new value_too_long_1.ValueTooLongException(field, {
|
|
108
105
|
collection,
|
|
109
106
|
field,
|
|
110
107
|
});
|
|
111
108
|
}
|
|
112
109
|
function notNullViolation(error) {
|
|
113
|
-
var _a, _b;
|
|
114
110
|
const betweenTicks = /`([^`]+)`/g;
|
|
115
111
|
const betweenQuotes = /'([^']+)'/g;
|
|
116
112
|
const tickMatches = error.sql.match(betweenTicks);
|
|
117
113
|
const quoteMatches = error.sqlMessage.match(betweenQuotes);
|
|
118
114
|
if (!tickMatches || !quoteMatches)
|
|
119
115
|
return error;
|
|
120
|
-
const collection =
|
|
121
|
-
const field =
|
|
116
|
+
const collection = tickMatches[0]?.slice(1, -1);
|
|
117
|
+
const field = quoteMatches[0]?.slice(1, -1);
|
|
122
118
|
return new not_null_violation_1.NotNullViolationException(field, {
|
|
123
119
|
collection,
|
|
124
120
|
field,
|
|
125
121
|
});
|
|
126
122
|
}
|
|
127
123
|
function foreignKeyViolation(error) {
|
|
128
|
-
var _a, _b, _c;
|
|
129
124
|
const betweenTicks = /`([^`]+)`/g;
|
|
130
125
|
const betweenParens = /\(([^)]+)\)/g;
|
|
131
126
|
const tickMatches = error.sqlMessage.match(betweenTicks);
|
|
132
127
|
const parenMatches = error.sql.match(betweenParens);
|
|
133
128
|
if (!tickMatches || !parenMatches)
|
|
134
129
|
return error;
|
|
135
|
-
const collection =
|
|
136
|
-
const field =
|
|
137
|
-
const invalid =
|
|
130
|
+
const collection = tickMatches[1]?.slice(1, -1);
|
|
131
|
+
const field = tickMatches[3]?.slice(1, -1);
|
|
132
|
+
const invalid = parenMatches[1]?.slice(1, -1);
|
|
138
133
|
return new invalid_foreign_key_1.InvalidForeignKeyException(field, {
|
|
139
134
|
collection,
|
|
140
135
|
field,
|
|
@@ -142,13 +137,12 @@ function foreignKeyViolation(error) {
|
|
|
142
137
|
});
|
|
143
138
|
}
|
|
144
139
|
function containsNullValues(error) {
|
|
145
|
-
var _a;
|
|
146
140
|
const betweenTicks = /`([^`]+)`/g;
|
|
147
141
|
// Normally, we shouldn't read from the executed SQL. In this case, we're altering a single
|
|
148
142
|
// column, so we shouldn't have the problem where multiple columns are altered at the same time
|
|
149
143
|
const tickMatches = error.sql.match(betweenTicks);
|
|
150
144
|
if (!tickMatches)
|
|
151
145
|
return error;
|
|
152
|
-
const field =
|
|
146
|
+
const field = tickMatches[1]?.slice(1, -1);
|
|
153
147
|
return new contains_null_values_1.ContainsNullValuesException(field);
|
|
154
148
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { OracleError } from './types';
|
|
1
|
+
import type { OracleError } from './types';
|
|
2
2
|
export declare function extractError(error: OracleError): OracleError | Error;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { PostgresError } from './types';
|
|
1
|
+
import type { PostgresError } from './types';
|
|
2
2
|
export declare function extractError(error: PostgresError): PostgresError | Error;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { SQLiteError } from './types';
|
|
1
|
+
import type { SQLiteError } from './types';
|
|
2
2
|
export declare function extractError(error: SQLiteError): SQLiteError | Error;
|
|
@@ -5,7 +5,7 @@ const exceptions_1 = require("@directus/shared/exceptions");
|
|
|
5
5
|
class ValueOutOfRangeException extends exceptions_1.BaseException {
|
|
6
6
|
constructor(field, exceptions) {
|
|
7
7
|
if (field) {
|
|
8
|
-
super(`Numeric value in field "${field
|
|
8
|
+
super(`Numeric value in field "${field ?? ''}" is out of range.`, 400, 'VALUE_OUT_OF_RANGE', exceptions);
|
|
9
9
|
}
|
|
10
10
|
else {
|
|
11
11
|
super(`Numeric value is out of range.`, 400, 'VALUE_OUT_OF_RANGE', exceptions);
|
|
@@ -4,9 +4,8 @@ exports.RangeNotSatisfiableException = void 0;
|
|
|
4
4
|
const exceptions_1 = require("@directus/shared/exceptions");
|
|
5
5
|
class RangeNotSatisfiableException extends exceptions_1.BaseException {
|
|
6
6
|
constructor(range) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
? `"${(_a = range.start) !== null && _a !== void 0 ? _a : ''}-${(_b = range.end) !== null && _b !== void 0 ? _b : ''}" `
|
|
7
|
+
const rangeString = range && (range?.start !== undefined || range?.end !== undefined)
|
|
8
|
+
? `"${range.start ?? ''}-${range.end ?? ''}" `
|
|
10
9
|
: '';
|
|
11
10
|
super(`Range ${rangeString}is invalid or the file's size doesn't match the requested range.`, 416, 'RANGE_NOT_SATISFIABLE');
|
|
12
11
|
}
|
package/dist/extensions.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Extension, ExtensionInfo, ExtensionType } from '@directus/shared/types';
|
|
1
|
+
import type { Extension, ExtensionInfo, ExtensionType } from '@directus/shared/types';
|
|
2
2
|
import { Router } from 'express';
|
|
3
3
|
export declare function getExtensionManager(): ExtensionManager;
|
|
4
4
|
type Options = {
|
package/dist/extensions.js
CHANGED
|
@@ -29,28 +29,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
exports.getExtensionManager = void 0;
|
|
30
30
|
const constants_1 = require("@directus/shared/constants");
|
|
31
31
|
const sharedExceptions = __importStar(require("@directus/shared/exceptions"));
|
|
32
|
-
const node_1 = require("@directus/shared/utils/node");
|
|
33
|
-
const express_1 = __importStar(require("express"));
|
|
34
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
35
|
-
const path_1 = __importDefault(require("path"));
|
|
36
|
-
const database_1 = __importDefault(require("./database"));
|
|
37
|
-
const emitter_1 = __importStar(require("./emitter"));
|
|
38
|
-
const env_1 = __importDefault(require("./env"));
|
|
39
|
-
const exceptions = __importStar(require("./exceptions"));
|
|
40
|
-
const logger_1 = __importDefault(require("./logger"));
|
|
41
|
-
const dynamic_import_1 = require("./utils/dynamic-import");
|
|
42
|
-
const get_schema_1 = require("./utils/get-schema");
|
|
43
32
|
const utils_1 = require("@directus/shared/utils");
|
|
33
|
+
const node_1 = require("@directus/shared/utils/node");
|
|
44
34
|
const plugin_alias_1 = __importDefault(require("@rollup/plugin-alias"));
|
|
45
35
|
const plugin_virtual_1 = __importDefault(require("@rollup/plugin-virtual"));
|
|
46
36
|
const chokidar_1 = __importDefault(require("chokidar"));
|
|
37
|
+
const express_1 = __importStar(require("express"));
|
|
38
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
47
39
|
const globby_1 = __importDefault(require("globby"));
|
|
48
40
|
const lodash_1 = require("lodash");
|
|
49
41
|
const node_cron_1 = require("node-cron");
|
|
42
|
+
const path_1 = __importDefault(require("path"));
|
|
50
43
|
const rollup_1 = require("rollup");
|
|
44
|
+
const database_1 = __importDefault(require("./database"));
|
|
45
|
+
const emitter_1 = __importStar(require("./emitter"));
|
|
46
|
+
const env_1 = __importDefault(require("./env"));
|
|
47
|
+
const exceptions = __importStar(require("./exceptions"));
|
|
51
48
|
const flows_1 = require("./flows");
|
|
49
|
+
const logger_1 = __importDefault(require("./logger"));
|
|
52
50
|
const services = __importStar(require("./services"));
|
|
51
|
+
const dynamic_import_1 = require("./utils/dynamic-import");
|
|
53
52
|
const get_module_default_1 = __importDefault(require("./utils/get-module-default"));
|
|
53
|
+
const get_schema_1 = require("./utils/get-schema");
|
|
54
54
|
const job_queue_1 = require("./utils/job-queue");
|
|
55
55
|
const url_1 = require("./utils/url");
|
|
56
56
|
let extensionManager;
|
|
@@ -64,18 +64,22 @@ function getExtensionManager() {
|
|
|
64
64
|
exports.getExtensionManager = getExtensionManager;
|
|
65
65
|
const defaultOptions = {
|
|
66
66
|
schedule: true,
|
|
67
|
-
watch: env_1.default
|
|
67
|
+
watch: env_1.default['EXTENSIONS_AUTO_RELOAD'] && env_1.default['NODE_ENV'] !== 'development',
|
|
68
68
|
};
|
|
69
69
|
class ExtensionManager {
|
|
70
|
+
isLoaded = false;
|
|
71
|
+
options;
|
|
72
|
+
extensions = [];
|
|
73
|
+
appExtensions = null;
|
|
74
|
+
apiExtensions = [];
|
|
75
|
+
apiEmitter;
|
|
76
|
+
hookEvents = [];
|
|
77
|
+
endpointRouter;
|
|
78
|
+
hookEmbedsHead = [];
|
|
79
|
+
hookEmbedsBody = [];
|
|
80
|
+
reloadQueue;
|
|
81
|
+
watcher = null;
|
|
70
82
|
constructor() {
|
|
71
|
-
this.isLoaded = false;
|
|
72
|
-
this.extensions = [];
|
|
73
|
-
this.appExtensions = null;
|
|
74
|
-
this.apiExtensions = [];
|
|
75
|
-
this.hookEvents = [];
|
|
76
|
-
this.hookEmbedsHead = [];
|
|
77
|
-
this.hookEmbedsBody = [];
|
|
78
|
-
this.watcher = null;
|
|
79
83
|
this.options = defaultOptions;
|
|
80
84
|
this.apiEmitter = new emitter_1.Emitter();
|
|
81
85
|
this.endpointRouter = (0, express_1.Router)();
|
|
@@ -140,17 +144,23 @@ class ExtensionManager {
|
|
|
140
144
|
name: extension.name,
|
|
141
145
|
type: extension.type,
|
|
142
146
|
local: extension.local,
|
|
143
|
-
|
|
144
|
-
version: extension.version,
|
|
147
|
+
entries: [],
|
|
145
148
|
};
|
|
149
|
+
if (extension.host)
|
|
150
|
+
extensionInfo.host = extension.host;
|
|
151
|
+
if (extension.version)
|
|
152
|
+
extensionInfo.version = extension.version;
|
|
146
153
|
if (extension.type === 'bundle') {
|
|
147
|
-
|
|
148
|
-
|
|
154
|
+
const bundleExtensionInfo = {
|
|
155
|
+
name: extensionInfo.name,
|
|
156
|
+
type: 'bundle',
|
|
157
|
+
local: extensionInfo.local,
|
|
149
158
|
entries: extension.entries.map((entry) => ({
|
|
150
159
|
name: entry.name,
|
|
151
160
|
type: entry.type,
|
|
152
161
|
})),
|
|
153
162
|
};
|
|
163
|
+
return bundleExtensionInfo;
|
|
154
164
|
}
|
|
155
165
|
else {
|
|
156
166
|
return extensionInfo;
|
|
@@ -179,7 +189,7 @@ class ExtensionManager {
|
|
|
179
189
|
}
|
|
180
190
|
async load() {
|
|
181
191
|
try {
|
|
182
|
-
await (0, node_1.ensureExtensionDirs)(env_1.default
|
|
192
|
+
await (0, node_1.ensureExtensionDirs)(env_1.default['EXTENSIONS_PATH'], constants_1.NESTED_EXTENSION_TYPES);
|
|
183
193
|
this.extensions = await this.getExtensions();
|
|
184
194
|
}
|
|
185
195
|
catch (err) {
|
|
@@ -190,7 +200,7 @@ class ExtensionManager {
|
|
|
190
200
|
await this.registerEndpoints();
|
|
191
201
|
await this.registerOperations();
|
|
192
202
|
await this.registerBundles();
|
|
193
|
-
if (env_1.default
|
|
203
|
+
if (env_1.default['SERVE_APP']) {
|
|
194
204
|
this.appExtensions = await this.generateExtensionBundle();
|
|
195
205
|
}
|
|
196
206
|
this.isLoaded = true;
|
|
@@ -198,7 +208,7 @@ class ExtensionManager {
|
|
|
198
208
|
async unload() {
|
|
199
209
|
this.unregisterApiExtensions();
|
|
200
210
|
this.apiEmitter.offAll();
|
|
201
|
-
if (env_1.default
|
|
211
|
+
if (env_1.default['SERVE_APP']) {
|
|
202
212
|
this.appExtensions = null;
|
|
203
213
|
}
|
|
204
214
|
this.isLoaded = false;
|
|
@@ -207,7 +217,7 @@ class ExtensionManager {
|
|
|
207
217
|
if (!this.watcher) {
|
|
208
218
|
logger_1.default.info('Watching extensions for changes...');
|
|
209
219
|
const localExtensionPaths = constants_1.NESTED_EXTENSION_TYPES.flatMap((type) => {
|
|
210
|
-
const typeDir = path_1.default.posix.join((0, node_1.pathToRelativeUrl)(env_1.default
|
|
220
|
+
const typeDir = path_1.default.posix.join((0, node_1.pathToRelativeUrl)(env_1.default['EXTENSIONS_PATH']), (0, utils_1.pluralize)(type));
|
|
211
221
|
if ((0, utils_1.isIn)(type, constants_1.HYBRID_EXTENSION_TYPES)) {
|
|
212
222
|
return [path_1.default.posix.join(typeDir, '*', 'app.js'), path_1.default.posix.join(typeDir, '*', 'api.js')];
|
|
213
223
|
}
|
|
@@ -246,10 +256,10 @@ class ExtensionManager {
|
|
|
246
256
|
}
|
|
247
257
|
}
|
|
248
258
|
async getExtensions() {
|
|
249
|
-
const packageExtensions = await (0, node_1.getPackageExtensions)(env_1.default
|
|
250
|
-
const localPackageExtensions = await (0, node_1.resolvePackageExtensions)(env_1.default
|
|
251
|
-
const localExtensions = await (0, node_1.getLocalExtensions)(env_1.default
|
|
252
|
-
return [...packageExtensions, ...localPackageExtensions, ...localExtensions].filter((extension) => env_1.default
|
|
259
|
+
const packageExtensions = await (0, node_1.getPackageExtensions)(env_1.default['PACKAGE_FILE_LOCATION']);
|
|
260
|
+
const localPackageExtensions = await (0, node_1.resolvePackageExtensions)(env_1.default['EXTENSIONS_PATH']);
|
|
261
|
+
const localExtensions = await (0, node_1.getLocalExtensions)(env_1.default['EXTENSIONS_PATH']);
|
|
262
|
+
return [...packageExtensions, ...localPackageExtensions, ...localExtensions].filter((extension) => env_1.default['SERVE_APP'] || constants_1.APP_EXTENSION_TYPES.includes(extension.type) === false);
|
|
253
263
|
}
|
|
254
264
|
async generateExtensionBundle() {
|
|
255
265
|
const sharedDepsMapping = await this.getSharedDepsMapping(constants_1.APP_SHARED_DEPS);
|
|
@@ -282,7 +292,7 @@ class ExtensionManager {
|
|
|
282
292
|
const depRegex = new RegExp(`${(0, lodash_1.escapeRegExp)(dep.replace(/\//g, '_'))}\\.[0-9a-f]{8}\\.entry\\.js`);
|
|
283
293
|
const depName = appDir.find((file) => depRegex.test(file));
|
|
284
294
|
if (depName) {
|
|
285
|
-
const depUrl = new url_1.Url(env_1.default
|
|
295
|
+
const depUrl = new url_1.Url(env_1.default['PUBLIC_URL']).addPath('admin', 'assets', depName);
|
|
286
296
|
depsMapping[dep] = depUrl.toString({ rootRelative: true });
|
|
287
297
|
}
|
|
288
298
|
else {
|