directus 9.22.4 → 9.23.3

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.
Files changed (404) hide show
  1. package/dist/app.js +19 -14
  2. package/dist/auth/auth.d.ts +3 -3
  3. package/dist/auth/auth.js +2 -0
  4. package/dist/auth/drivers/ldap.d.ts +2 -2
  5. package/dist/auth/drivers/ldap.js +47 -36
  6. package/dist/auth/drivers/local.d.ts +1 -1
  7. package/dist/auth/drivers/local.js +13 -10
  8. package/dist/auth/drivers/oauth2.d.ts +1 -1
  9. package/dist/auth/drivers/oauth2.js +22 -15
  10. package/dist/auth/drivers/openid.d.ts +1 -1
  11. package/dist/auth/drivers/openid.js +23 -16
  12. package/dist/auth/drivers/saml.d.ts +1 -1
  13. package/dist/auth/drivers/saml.js +10 -7
  14. package/dist/auth.d.ts +1 -1
  15. package/dist/auth.js +4 -4
  16. package/dist/cache.d.ts +9 -1
  17. package/dist/cache.js +59 -16
  18. package/dist/cli/commands/bootstrap/index.js +2 -2
  19. package/dist/cli/commands/init/index.js +3 -3
  20. package/dist/cli/commands/schema/apply.js +21 -20
  21. package/dist/cli/commands/schema/snapshot.js +2 -2
  22. package/dist/cli/utils/create-db-connection.d.ts +2 -1
  23. package/dist/cli/utils/create-db-connection.js +2 -1
  24. package/dist/cli/utils/create-env/env-stub.liquid +1 -1
  25. package/dist/cli/utils/create-env/index.d.ts +2 -2
  26. package/dist/cli/utils/drivers.d.ts +3 -9
  27. package/dist/constants.d.ts +3 -9
  28. package/dist/constants.js +5 -10
  29. package/dist/controllers/activity.js +1 -2
  30. package/dist/controllers/assets.js +17 -12
  31. package/dist/controllers/auth.js +29 -15
  32. package/dist/controllers/dashboards.js +5 -2
  33. package/dist/controllers/extensions.js +7 -7
  34. package/dist/controllers/fields.js +4 -4
  35. package/dist/controllers/files.js +11 -6
  36. package/dist/controllers/flows.js +5 -2
  37. package/dist/controllers/folders.js +5 -2
  38. package/dist/controllers/graphql.js +6 -0
  39. package/dist/controllers/items.js +5 -2
  40. package/dist/controllers/not-found.d.ts +1 -1
  41. package/dist/controllers/not-found.js +1 -2
  42. package/dist/controllers/notifications.js +5 -2
  43. package/dist/controllers/operations.js +5 -2
  44. package/dist/controllers/panels.js +5 -2
  45. package/dist/controllers/permissions.js +5 -2
  46. package/dist/controllers/presets.js +5 -2
  47. package/dist/controllers/roles.js +5 -2
  48. package/dist/controllers/schema.d.ts +2 -0
  49. package/dist/controllers/schema.js +98 -0
  50. package/dist/controllers/shares.js +8 -5
  51. package/dist/controllers/users.js +16 -20
  52. package/dist/controllers/utils.js +6 -11
  53. package/dist/controllers/webhooks.js +5 -2
  54. package/dist/database/helpers/fn/dialects/mssql.d.ts +1 -1
  55. package/dist/database/helpers/fn/dialects/mssql.js +10 -11
  56. package/dist/database/helpers/fn/dialects/mysql.d.ts +1 -1
  57. package/dist/database/helpers/fn/dialects/mysql.js +2 -3
  58. package/dist/database/helpers/fn/dialects/oracle.d.ts +1 -1
  59. package/dist/database/helpers/fn/dialects/oracle.js +10 -11
  60. package/dist/database/helpers/fn/dialects/postgres.d.ts +1 -1
  61. package/dist/database/helpers/fn/dialects/postgres.js +10 -11
  62. package/dist/database/helpers/fn/dialects/sqlite.d.ts +1 -1
  63. package/dist/database/helpers/fn/dialects/sqlite.js +10 -11
  64. package/dist/database/helpers/fn/types.d.ts +5 -5
  65. package/dist/database/helpers/fn/types.js +5 -4
  66. package/dist/database/helpers/geometry/dialects/mssql.d.ts +3 -3
  67. package/dist/database/helpers/geometry/dialects/mysql.d.ts +1 -1
  68. package/dist/database/helpers/geometry/dialects/oracle.d.ts +3 -3
  69. package/dist/database/helpers/geometry/dialects/postgres.d.ts +3 -3
  70. package/dist/database/helpers/geometry/dialects/postgres.js +1 -2
  71. package/dist/database/helpers/geometry/dialects/redshift.d.ts +2 -2
  72. package/dist/database/helpers/geometry/dialects/sqlite.d.ts +1 -1
  73. package/dist/database/helpers/geometry/types.d.ts +2 -2
  74. package/dist/database/helpers/geometry/types.js +1 -2
  75. package/dist/database/helpers/index.d.ts +5 -5
  76. package/dist/database/helpers/schema/dialects/cockroachdb.d.ts +2 -2
  77. package/dist/database/helpers/schema/dialects/mssql.d.ts +1 -1
  78. package/dist/database/helpers/schema/dialects/mysql.d.ts +1 -1
  79. package/dist/database/helpers/schema/dialects/mysql.js +1 -2
  80. package/dist/database/helpers/schema/dialects/oracle.d.ts +5 -2
  81. package/dist/database/helpers/schema/dialects/oracle.js +23 -0
  82. package/dist/database/helpers/schema/types.d.ts +9 -7
  83. package/dist/database/helpers/schema/types.js +7 -1
  84. package/dist/database/helpers/types.d.ts +1 -1
  85. package/dist/database/helpers/types.js +1 -0
  86. package/dist/database/index.d.ts +2 -1
  87. package/dist/database/index.js +8 -8
  88. package/dist/database/migrations/20201028A-remove-collection-foreign-keys.d.ts +1 -1
  89. package/dist/database/migrations/20201029A-remove-system-relations.d.ts +1 -1
  90. package/dist/database/migrations/20201029B-remove-system-collections.d.ts +1 -1
  91. package/dist/database/migrations/20201029C-remove-system-fields.d.ts +1 -1
  92. package/dist/database/migrations/20201105A-add-cascade-system-relations.d.ts +1 -1
  93. package/dist/database/migrations/20201105B-change-webhook-url-type.d.ts +1 -1
  94. package/dist/database/migrations/20210225A-add-relations-sort-field.d.ts +1 -1
  95. package/dist/database/migrations/20210225A-add-relations-sort-field.js +1 -2
  96. package/dist/database/migrations/20210304A-remove-locked-fields.d.ts +1 -1
  97. package/dist/database/migrations/20210312A-webhooks-collections-text.d.ts +1 -1
  98. package/dist/database/migrations/20210331A-add-refresh-interval.d.ts +1 -1
  99. package/dist/database/migrations/20210415A-make-filesize-nullable.d.ts +1 -1
  100. package/dist/database/migrations/20210416A-add-collections-accountability.d.ts +1 -1
  101. package/dist/database/migrations/20210422A-remove-files-interface.d.ts +1 -1
  102. package/dist/database/migrations/20210506A-rename-interfaces.d.ts +1 -1
  103. package/dist/database/migrations/20210510A-restructure-relations.d.ts +1 -1
  104. package/dist/database/migrations/20210518A-add-foreign-key-constraints.d.ts +1 -1
  105. package/dist/database/migrations/20210518A-add-foreign-key-constraints.js +1 -1
  106. package/dist/database/migrations/20210519A-add-system-fk-triggers.d.ts +1 -1
  107. package/dist/database/migrations/20210519A-add-system-fk-triggers.js +2 -2
  108. package/dist/database/migrations/20210521A-add-collections-icon-color.d.ts +1 -1
  109. package/dist/database/migrations/20210525A-add-insights.d.ts +1 -1
  110. package/dist/database/migrations/20210608A-add-deep-clone-config.d.ts +1 -1
  111. package/dist/database/migrations/20210626A-change-filesize-bigint.d.ts +1 -1
  112. package/dist/database/migrations/20210716A-add-conditions-to-fields.d.ts +1 -1
  113. package/dist/database/migrations/20210721A-add-default-folder.d.ts +1 -1
  114. package/dist/database/migrations/20210802A-replace-groups.d.ts +1 -1
  115. package/dist/database/migrations/20210803A-add-required-to-fields.d.ts +1 -1
  116. package/dist/database/migrations/20210805A-update-groups.d.ts +1 -1
  117. package/dist/database/migrations/20210805B-change-image-metadata-structure.d.ts +1 -1
  118. package/dist/database/migrations/20210811A-add-geometry-config.d.ts +1 -1
  119. package/dist/database/migrations/20210831A-remove-limit-column.d.ts +1 -1
  120. package/dist/database/migrations/20210903A-add-auth-provider.d.ts +1 -1
  121. package/dist/database/migrations/20210907A-webhooks-collections-not-null.d.ts +1 -1
  122. package/dist/database/migrations/20210910A-move-module-setup.d.ts +1 -1
  123. package/dist/database/migrations/20210920A-webhooks-url-not-null.d.ts +1 -1
  124. package/dist/database/migrations/20210924A-add-collection-organization.d.ts +1 -1
  125. package/dist/database/migrations/20210927A-replace-fields-group.d.ts +1 -1
  126. package/dist/database/migrations/20210927B-replace-m2m-interface.d.ts +1 -1
  127. package/dist/database/migrations/20210929A-rename-login-action.d.ts +1 -1
  128. package/dist/database/migrations/20211007A-update-presets.d.ts +1 -1
  129. package/dist/database/migrations/20211007A-update-presets.js +7 -9
  130. package/dist/database/migrations/20211009A-add-auth-data.d.ts +1 -1
  131. package/dist/database/migrations/20211016A-add-webhook-headers.d.ts +1 -1
  132. package/dist/database/migrations/20211103A-set-unique-to-user-token.d.ts +1 -1
  133. package/dist/database/migrations/20211103B-update-special-geometry.d.ts +1 -1
  134. package/dist/database/migrations/20211104A-remove-collections-listing.d.ts +1 -1
  135. package/dist/database/migrations/20211118A-add-notifications.d.ts +1 -1
  136. package/dist/database/migrations/20211211A-add-shares.d.ts +1 -1
  137. package/dist/database/migrations/20211230A-add-project-descriptor.d.ts +1 -1
  138. package/dist/database/migrations/20220303A-remove-default-project-color.d.ts +1 -1
  139. package/dist/database/migrations/20220308A-add-bookmark-icon-and-color.d.ts +1 -1
  140. package/dist/database/migrations/20220314A-add-translation-strings.d.ts +1 -1
  141. package/dist/database/migrations/20220322A-rename-field-typecast-flags.d.ts +1 -1
  142. package/dist/database/migrations/20220323A-add-field-validation.d.ts +1 -1
  143. package/dist/database/migrations/20220325A-fix-typecast-flags.d.ts +1 -1
  144. package/dist/database/migrations/20220325B-add-default-language.d.ts +1 -1
  145. package/dist/database/migrations/20220402A-remove-default-value-panel-icon.d.ts +1 -1
  146. package/dist/database/migrations/20220429A-add-flows.d.ts +1 -1
  147. package/dist/database/migrations/20220429B-add-color-to-insights-icon.d.ts +1 -1
  148. package/dist/database/migrations/20220429C-drop-non-null-from-ip-of-activity.d.ts +1 -1
  149. package/dist/database/migrations/20220429D-drop-non-null-from-sender-of-notifications.d.ts +1 -1
  150. package/dist/database/migrations/20220614A-rename-hook-trigger-to-event.d.ts +1 -1
  151. package/dist/database/migrations/20220801A-update-notifications-timestamp-column.d.ts +1 -1
  152. package/dist/database/migrations/20220802A-add-custom-aspect-ratios.d.ts +1 -1
  153. package/dist/database/migrations/20220826A-add-origin-to-accountability.d.ts +1 -1
  154. package/dist/database/migrations/run.d.ts +1 -1
  155. package/dist/database/run-ast.d.ts +3 -3
  156. package/dist/database/run-ast.js +19 -28
  157. package/dist/database/seeds/run.d.ts +1 -1
  158. package/dist/database/seeds/run.js +1 -2
  159. package/dist/database/system-data/app-access-permissions/index.d.ts +1 -1
  160. package/dist/database/system-data/collections/index.d.ts +1 -1
  161. package/dist/database/system-data/fields/collections.yaml +2 -0
  162. package/dist/database/system-data/fields/index.d.ts +1 -1
  163. package/dist/database/system-data/fields/index.js +1 -2
  164. package/dist/database/system-data/fields/settings.yaml +4 -0
  165. package/dist/database/system-data/relations/index.d.ts +1 -1
  166. package/dist/emitter.d.ts +1 -1
  167. package/dist/emitter.js +3 -0
  168. package/dist/env.js +19 -4
  169. package/dist/exceptions/database/dialects/mssql.d.ts +1 -1
  170. package/dist/exceptions/database/dialects/mssql.js +5 -6
  171. package/dist/exceptions/database/dialects/mysql.d.ts +1 -1
  172. package/dist/exceptions/database/dialects/mysql.js +19 -25
  173. package/dist/exceptions/database/dialects/oracle.d.ts +1 -1
  174. package/dist/exceptions/database/dialects/postgres.d.ts +1 -1
  175. package/dist/exceptions/database/dialects/sqlite.d.ts +1 -1
  176. package/dist/exceptions/database/translate.d.ts +1 -1
  177. package/dist/exceptions/database/value-out-of-range.js +1 -1
  178. package/dist/exceptions/range-not-satisfiable.js +2 -3
  179. package/dist/extensions.d.ts +1 -1
  180. package/dist/extensions.js +34 -24
  181. package/dist/flows.js +56 -30
  182. package/dist/logger.d.ts +1 -1
  183. package/dist/logger.js +19 -3
  184. package/dist/messenger.js +8 -6
  185. package/dist/middleware/authenticate.d.ts +1 -1
  186. package/dist/middleware/authenticate.js +12 -5
  187. package/dist/middleware/cache.d.ts +1 -1
  188. package/dist/middleware/cache.js +7 -7
  189. package/dist/middleware/check-ip.d.ts +1 -1
  190. package/dist/middleware/check-ip.js +1 -1
  191. package/dist/middleware/collection-exists.d.ts +1 -1
  192. package/dist/middleware/collection-exists.js +2 -2
  193. package/dist/middleware/cors.d.ts +1 -1
  194. package/dist/middleware/error-handler.d.ts +1 -1
  195. package/dist/middleware/error-handler.js +9 -10
  196. package/dist/middleware/extract-token.d.ts +1 -1
  197. package/dist/middleware/get-permissions.d.ts +1 -1
  198. package/dist/middleware/graphql.d.ts +1 -1
  199. package/dist/middleware/graphql.js +3 -3
  200. package/dist/middleware/rate-limiter-global.d.ts +5 -0
  201. package/dist/middleware/rate-limiter-global.js +48 -0
  202. package/dist/middleware/{rate-limiter.d.ts → rate-limiter-ip.d.ts} +2 -2
  203. package/dist/middleware/{rate-limiter.js → rate-limiter-ip.js} +3 -3
  204. package/dist/middleware/respond.d.ts +1 -1
  205. package/dist/middleware/respond.js +18 -14
  206. package/dist/middleware/sanitize-query.d.ts +1 -1
  207. package/dist/middleware/schema.d.ts +1 -1
  208. package/dist/middleware/use-collection.d.ts +1 -1
  209. package/dist/operations/condition/index.d.ts +1 -1
  210. package/dist/operations/exec/index.js +14 -3
  211. package/dist/operations/item-create/index.js +1 -2
  212. package/dist/operations/item-delete/index.d.ts +1 -1
  213. package/dist/operations/item-read/index.d.ts +1 -1
  214. package/dist/operations/item-update/index.d.ts +1 -1
  215. package/dist/operations/item-update/index.js +1 -2
  216. package/dist/operations/notification/index.js +1 -2
  217. package/dist/operations/request/index.js +21 -20
  218. package/dist/operations/trigger/index.d.ts +2 -0
  219. package/dist/operations/trigger/index.js +27 -11
  220. package/dist/rate-limiter.d.ts +1 -1
  221. package/dist/rate-limiter.js +8 -8
  222. package/dist/request/index.d.ts +5 -0
  223. package/dist/request/index.js +18 -0
  224. package/dist/request/index.test.d.ts +1 -0
  225. package/dist/request/request-interceptor.d.ts +2 -0
  226. package/dist/request/request-interceptor.js +33 -0
  227. package/dist/request/request-interceptor.test.d.ts +1 -0
  228. package/dist/request/response-interceptor.d.ts +2 -0
  229. package/dist/request/response-interceptor.js +9 -0
  230. package/dist/request/response-interceptor.test.d.ts +1 -0
  231. package/dist/request/validate-ip.d.ts +1 -0
  232. package/dist/request/validate-ip.js +27 -0
  233. package/dist/request/validate-ip.test.d.ts +1 -0
  234. package/dist/server.js +8 -9
  235. package/dist/services/activity.d.ts +1 -1
  236. package/dist/services/activity.js +7 -6
  237. package/dist/services/assets.d.ts +3 -3
  238. package/dist/services/assets.js +33 -26
  239. package/dist/services/authentication.d.ts +2 -2
  240. package/dist/services/authentication.js +18 -15
  241. package/dist/services/authorization.d.ts +3 -3
  242. package/dist/services/authorization.js +27 -31
  243. package/dist/services/collections.d.ts +5 -5
  244. package/dist/services/collections.js +52 -48
  245. package/dist/services/dashboards.d.ts +1 -1
  246. package/dist/services/fields.d.ts +5 -5
  247. package/dist/services/fields.js +49 -48
  248. package/dist/services/files.d.ts +1 -2
  249. package/dist/services/files.js +70 -108
  250. package/dist/services/flows.d.ts +2 -2
  251. package/dist/services/folders.d.ts +1 -1
  252. package/dist/services/graphql/index.d.ts +4 -4
  253. package/dist/services/graphql/index.js +181 -170
  254. package/dist/services/graphql/utils/add-path-to-validation-error.js +1 -2
  255. package/dist/services/graphql/utils/process-error.d.ts +2 -2
  256. package/dist/services/graphql/utils/process-error.js +29 -9
  257. package/dist/services/import-export.d.ts +7 -5
  258. package/dist/services/import-export.js +41 -24
  259. package/dist/services/import-export.test.d.ts +1 -0
  260. package/dist/services/index.d.ts +1 -0
  261. package/dist/services/index.js +1 -0
  262. package/dist/services/items.d.ts +3 -3
  263. package/dist/services/items.js +67 -42
  264. package/dist/services/mail/index.d.ts +4 -4
  265. package/dist/services/mail/index.js +9 -5
  266. package/dist/services/meta.d.ts +3 -3
  267. package/dist/services/meta.js +10 -9
  268. package/dist/services/notifications.d.ts +3 -3
  269. package/dist/services/notifications.js +7 -6
  270. package/dist/services/operations.d.ts +2 -2
  271. package/dist/services/panels.d.ts +1 -1
  272. package/dist/services/payload.d.ts +3 -3
  273. package/dist/services/payload.js +124 -122
  274. package/dist/services/permissions.d.ts +3 -3
  275. package/dist/services/permissions.js +11 -11
  276. package/dist/services/presets.d.ts +1 -1
  277. package/dist/services/relations.d.ts +6 -6
  278. package/dist/services/relations.js +47 -43
  279. package/dist/services/revisions.d.ts +1 -1
  280. package/dist/services/roles.d.ts +2 -2
  281. package/dist/services/roles.js +34 -13
  282. package/dist/services/schema.d.ts +15 -0
  283. package/dist/services/schema.js +56 -0
  284. package/dist/services/schema.test.d.ts +1 -0
  285. package/dist/services/server.d.ts +3 -3
  286. package/dist/services/server.js +69 -13
  287. package/dist/services/settings.d.ts +1 -1
  288. package/dist/services/shares.d.ts +2 -2
  289. package/dist/services/shares.js +14 -15
  290. package/dist/services/specifications.d.ts +4 -4
  291. package/dist/services/specifications.js +132 -116
  292. package/dist/services/tfa.d.ts +2 -2
  293. package/dist/services/tfa.js +7 -5
  294. package/dist/services/users.d.ts +3 -3
  295. package/dist/services/users.js +89 -62
  296. package/dist/services/utils.d.ts +3 -3
  297. package/dist/services/utils.js +10 -8
  298. package/dist/services/webhooks.d.ts +2 -2
  299. package/dist/services/webhooks.js +2 -1
  300. package/dist/types/assets.d.ts +2 -2
  301. package/dist/types/ast.d.ts +1 -1
  302. package/dist/types/auth.d.ts +2 -2
  303. package/dist/types/collection.d.ts +2 -2
  304. package/dist/types/database.d.ts +3 -0
  305. package/dist/types/database.js +4 -0
  306. package/dist/types/events.d.ts +2 -2
  307. package/dist/types/graphql.d.ts +2 -2
  308. package/dist/types/index.d.ts +1 -0
  309. package/dist/types/index.js +1 -0
  310. package/dist/types/items.d.ts +7 -2
  311. package/dist/types/services.d.ts +5 -5
  312. package/dist/types/snapshot.d.ts +25 -3
  313. package/dist/types/snapshot.js +14 -0
  314. package/dist/utils/apply-diff.d.ts +9 -0
  315. package/dist/utils/apply-diff.js +256 -0
  316. package/dist/utils/apply-diff.test.d.ts +1 -0
  317. package/dist/utils/apply-query.d.ts +3 -3
  318. package/dist/utils/apply-query.js +15 -16
  319. package/dist/utils/apply-snapshot.d.ts +3 -5
  320. package/dist/utils/apply-snapshot.js +9 -240
  321. package/dist/utils/construct-flow-tree.d.ts +1 -1
  322. package/dist/utils/construct-flow-tree.js +2 -2
  323. package/dist/utils/filter-items.d.ts +1 -1
  324. package/dist/utils/get-accountability-for-role.d.ts +2 -2
  325. package/dist/utils/get-accountability-for-role.js +1 -1
  326. package/dist/utils/get-ast-from-query.d.ts +3 -3
  327. package/dist/utils/get-ast-from-query.js +22 -28
  328. package/dist/utils/get-cache-headers.d.ts +4 -2
  329. package/dist/utils/get-cache-headers.js +21 -21
  330. package/dist/utils/get-cache-headers.test.d.ts +1 -0
  331. package/dist/utils/get-cache-key.d.ts +1 -1
  332. package/dist/utils/get-cache-key.js +2 -3
  333. package/dist/utils/get-collection-from-alias.d.ts +1 -1
  334. package/dist/utils/get-column-path.d.ts +2 -2
  335. package/dist/utils/get-column-path.js +3 -4
  336. package/dist/utils/get-column.d.ts +4 -4
  337. package/dist/utils/get-column.js +4 -5
  338. package/dist/utils/get-default-value.d.ts +2 -2
  339. package/dist/utils/get-default-value.js +1 -2
  340. package/dist/utils/get-graphql-query-and-variables.d.ts +1 -1
  341. package/dist/utils/get-graphql-query-and-variables.js +1 -2
  342. package/dist/utils/get-graphql-type.d.ts +2 -2
  343. package/dist/utils/get-graphql-type.js +1 -1
  344. package/dist/utils/get-ip-from-req.d.ts +1 -1
  345. package/dist/utils/get-local-type.d.ts +1 -1
  346. package/dist/utils/get-local-type.js +3 -3
  347. package/dist/utils/get-milliseconds.d.ts +4 -0
  348. package/dist/utils/get-milliseconds.js +14 -0
  349. package/dist/utils/get-milliseconds.test.d.ts +1 -0
  350. package/dist/utils/get-permissions.d.ts +1 -1
  351. package/dist/utils/get-permissions.js +1 -1
  352. package/dist/utils/get-relation-info.d.ts +1 -1
  353. package/dist/utils/get-relation-info.js +3 -5
  354. package/dist/utils/get-relation-type.d.ts +1 -1
  355. package/dist/utils/get-relation-type.js +3 -4
  356. package/dist/utils/get-schema.d.ts +2 -2
  357. package/dist/utils/get-schema.js +19 -21
  358. package/dist/utils/get-snapshot-diff.js +10 -7
  359. package/dist/utils/get-snapshot.d.ts +3 -3
  360. package/dist/utils/get-snapshot.js +35 -14
  361. package/dist/utils/get-versioned-hash.d.ts +1 -0
  362. package/dist/utils/get-versioned-hash.js +12 -0
  363. package/dist/utils/get-versioned-hash.test.d.ts +1 -0
  364. package/dist/utils/is-directus-jwt.js +1 -1
  365. package/dist/utils/job-queue.js +2 -0
  366. package/dist/utils/jwt.d.ts +1 -1
  367. package/dist/utils/map-values-deep.d.ts +1 -0
  368. package/dist/utils/map-values-deep.js +29 -0
  369. package/dist/utils/map-values-deep.test.d.ts +1 -0
  370. package/dist/utils/merge-permissions-for-share.d.ts +1 -1
  371. package/dist/utils/merge-permissions-for-share.js +3 -4
  372. package/dist/utils/merge-permissions.d.ts +3 -3
  373. package/dist/utils/redact-header-cookies.d.ts +1 -0
  374. package/dist/utils/redact-header-cookies.js +11 -0
  375. package/dist/utils/redact-header-cookies.test.d.ts +1 -0
  376. package/dist/utils/reduce-schema.d.ts +1 -1
  377. package/dist/utils/reduce-schema.js +12 -12
  378. package/dist/utils/sanitize-query.d.ts +1 -1
  379. package/dist/utils/sanitize-query.js +1 -1
  380. package/dist/utils/sanitize-schema.d.ts +30 -0
  381. package/dist/utils/sanitize-schema.js +80 -0
  382. package/dist/utils/sanitize-schema.test.d.ts +1 -0
  383. package/dist/utils/should-skip-cache.d.ts +7 -0
  384. package/dist/utils/should-skip-cache.js +21 -0
  385. package/dist/utils/should-skip-cache.test.d.ts +1 -0
  386. package/dist/utils/track.js +3 -3
  387. package/dist/utils/transformations.d.ts +1 -1
  388. package/dist/utils/transformations.js +2 -4
  389. package/dist/utils/url.js +9 -8
  390. package/dist/utils/url.test.d.ts +1 -0
  391. package/dist/utils/user-name.d.ts +1 -1
  392. package/dist/utils/validate-diff.d.ts +7 -0
  393. package/dist/utils/validate-diff.js +113 -0
  394. package/dist/utils/validate-diff.test.d.ts +1 -0
  395. package/dist/utils/validate-keys.d.ts +2 -2
  396. package/dist/utils/validate-keys.js +1 -1
  397. package/dist/utils/validate-query.d.ts +1 -1
  398. package/dist/utils/validate-query.js +3 -3
  399. package/dist/utils/validate-query.test.d.ts +1 -0
  400. package/dist/utils/validate-snapshot.d.ts +5 -0
  401. package/dist/utils/validate-snapshot.js +71 -0
  402. package/dist/utils/validate-snapshot.test.d.ts +1 -0
  403. package/dist/webhooks.js +4 -3
  404. package/package.json +62 -62
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.down = exports.up = void 0;
4
4
  const utils_1 = require("@directus/shared/utils");
5
5
  async function up(knex) {
6
- var _a;
7
6
  await knex.schema.alterTable('directus_presets', (table) => {
8
7
  table.json('filter');
9
8
  });
@@ -12,7 +11,7 @@ async function up(knex) {
12
11
  .from('directus_presets');
13
12
  for (const preset of presets) {
14
13
  if (preset.filters) {
15
- const oldFilters = (_a = (typeof preset.filters === 'string' ? (0, utils_1.parseJSON)(preset.filters) : preset.filters)) !== null && _a !== void 0 ? _a : [];
14
+ const oldFilters = (typeof preset.filters === 'string' ? (0, utils_1.parseJSON)(preset.filters) : preset.filters) ?? [];
16
15
  if (oldFilters.length === 0)
17
16
  continue;
18
17
  const newFilter = {
@@ -52,7 +51,6 @@ async function up(knex) {
52
51
  }
53
52
  exports.up = up;
54
53
  async function down(knex) {
55
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
56
54
  const { nanoid } = await import('nanoid');
57
55
  await knex.schema.alterTable('directus_presets', (table) => {
58
56
  table.json('filters');
@@ -62,14 +60,14 @@ async function down(knex) {
62
60
  .from('directus_presets');
63
61
  for (const preset of presets) {
64
62
  if (preset.filter) {
65
- const newFilter = (_a = (typeof preset.filter === 'string' ? (0, utils_1.parseJSON)(preset.filter) : preset.filter)) !== null && _a !== void 0 ? _a : {};
63
+ const newFilter = (typeof preset.filter === 'string' ? (0, utils_1.parseJSON)(preset.filter) : preset.filter) ?? {};
66
64
  if (Object.keys(newFilter).length === 0)
67
65
  continue;
68
66
  const oldFilters = [];
69
- for (const filter of (_b = newFilter._and) !== null && _b !== void 0 ? _b : []) {
70
- const field = (_c = Object.keys(filter)) === null || _c === void 0 ? void 0 : _c[0];
71
- const operator = (_f = Object.keys((_e = (_d = Object.values(filter)) === null || _d === void 0 ? void 0 : _d[0]) !== null && _e !== void 0 ? _e : {})) === null || _f === void 0 ? void 0 : _f[0];
72
- const value = (_j = Object.values((_h = (_g = Object.values(filter)) === null || _g === void 0 ? void 0 : _g[0]) !== null && _h !== void 0 ? _h : {})) === null || _j === void 0 ? void 0 : _j[0];
67
+ for (const filter of newFilter._and ?? []) {
68
+ const field = Object.keys(filter)?.[0];
69
+ const operator = Object.keys(Object.values(filter)?.[0] ?? {})?.[0];
70
+ const value = Object.values(Object.values(filter)?.[0] ?? {})?.[0];
73
71
  if (!field || !operator || !value)
74
72
  continue;
75
73
  oldFilters.push({
@@ -89,7 +87,7 @@ async function down(knex) {
89
87
  const layoutQuery = typeof preset.layout_query === 'string' ? (0, utils_1.parseJSON)(preset.layout_query) : preset.layout_query;
90
88
  for (const [layout, query] of Object.entries(layoutQuery)) {
91
89
  if (query.sort && Array.isArray(query.sort)) {
92
- query.sort = (_l = (_k = query.sort) === null || _k === void 0 ? void 0 : _k[0]) !== null && _l !== void 0 ? _l : null;
90
+ query.sort = query.sort?.[0] ?? null;
93
91
  }
94
92
  layoutQuery[layout] = query;
95
93
  }
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(_knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,2 +1,2 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export default function run(database: Knex, direction: 'up' | 'down' | 'latest', log?: boolean): Promise<void>;
@@ -1,6 +1,6 @@
1
- import { Item, SchemaOverview } from '@directus/shared/types';
2
- import { Knex } from 'knex';
3
- import { AST, NestedCollectionNode } from '../types/ast';
1
+ import type { Item, SchemaOverview } from '@directus/shared/types';
2
+ import type { Knex } from 'knex';
3
+ import type { AST, NestedCollectionNode } from '../types/ast';
4
4
  type RunASTOptions = {
5
5
  /**
6
6
  * Query override for the current level
@@ -42,7 +42,7 @@ const strip_function_1 = require("../utils/strip-function");
42
42
  */
43
43
  async function runAST(originalAST, schema, options) {
44
44
  const ast = (0, lodash_1.cloneDeep)(originalAST);
45
- const knex = (options === null || options === void 0 ? void 0 : options.knex) || (0, _1.default)();
45
+ const knex = options?.knex || (0, _1.default)();
46
46
  if (ast.type === 'a2o') {
47
47
  const results = {};
48
48
  for (const collection of ast.names) {
@@ -51,7 +51,7 @@ async function runAST(originalAST, schema, options) {
51
51
  return results;
52
52
  }
53
53
  else {
54
- return await run(ast.name, ast.children, (options === null || options === void 0 ? void 0 : options.query) || ast.query);
54
+ return await run(ast.name, ast.children, options?.query || ast.query);
55
55
  }
56
56
  async function run(collection, children, query) {
57
57
  // Retrieve the database columns to select in the current AST
@@ -106,7 +106,7 @@ async function runAST(originalAST, schema, options) {
106
106
  // to work (primary / foreign keys) even if they're not explicitly requested. After all fetching
107
107
  // and nesting is done, we parse through the output structure, and filter out all non-requested
108
108
  // fields
109
- if ((options === null || options === void 0 ? void 0 : options.nested) !== true && (options === null || options === void 0 ? void 0 : options.stripNonRequested) !== false) {
109
+ if (options?.nested !== true && options?.stripNonRequested !== false) {
110
110
  items = removeTemporaryFields(schema, items, originalAST, primaryKeyField);
111
111
  }
112
112
  return items;
@@ -114,7 +114,6 @@ async function runAST(originalAST, schema, options) {
114
114
  }
115
115
  exports.default = runAST;
116
116
  async function parseCurrentLevel(schema, collection, children, query) {
117
- var _a;
118
117
  const primaryKeyField = schema.collections[collection].primary;
119
118
  const columnsInCollection = Object.keys(schema.collections[collection].fields);
120
119
  const columnsToSelectInternal = [];
@@ -138,7 +137,7 @@ async function parseCurrentLevel(schema, collection, children, query) {
138
137
  }
139
138
  nestedCollectionNodes.push(child);
140
139
  }
141
- const isAggregate = (_a = (query.group || (query.aggregate && Object.keys(query.aggregate).length > 0))) !== null && _a !== void 0 ? _a : false;
140
+ const isAggregate = (query.group || (query.aggregate && Object.keys(query.aggregate).length > 0)) ?? false;
142
141
  /** Always fetch primary key in case there's a nested relation that needs it. Aggregate payloads
143
142
  * can't have nested relational fields
144
143
  */
@@ -147,20 +146,16 @@ async function parseCurrentLevel(schema, collection, children, query) {
147
146
  }
148
147
  /** Make sure select list has unique values */
149
148
  const columnsToSelect = [...new Set(columnsToSelectInternal)];
150
- const fieldNodes = columnsToSelect.map((column) => {
151
- var _a;
152
- return (_a = children.find((childNode) => (childNode.type === 'field' || childNode.type === 'functionField') && childNode.fieldKey === column)) !== null && _a !== void 0 ? _a : {
153
- type: 'field',
154
- name: column,
155
- fieldKey: column,
156
- };
149
+ const fieldNodes = columnsToSelect.map((column) => children.find((childNode) => (childNode.type === 'field' || childNode.type === 'functionField') && childNode.fieldKey === column) ?? {
150
+ type: 'field',
151
+ name: column,
152
+ fieldKey: column,
157
153
  });
158
154
  return { fieldNodes, nestedCollectionNodes, primaryKeyField };
159
155
  }
160
156
  function getColumnPreprocessor(knex, schema, table) {
161
157
  const helpers = (0, helpers_1.getHelpers)(knex);
162
158
  return function (fieldNode) {
163
- var _a;
164
159
  let alias = undefined;
165
160
  if (fieldNode.name !== fieldNode.fieldKey) {
166
161
  alias = fieldNode.fieldKey;
@@ -172,7 +167,7 @@ function getColumnPreprocessor(knex, schema, table) {
172
167
  else {
173
168
  field = schema.collections[fieldNode.relation.collection].fields[fieldNode.relation.field];
174
169
  }
175
- if ((_a = field === null || field === void 0 ? void 0 : field.type) === null || _a === void 0 ? void 0 : _a.startsWith('geometry')) {
170
+ if (field?.type?.startsWith('geometry')) {
176
171
  return helpers.st.asText(table, field.field);
177
172
  }
178
173
  if (fieldNode.type === 'functionField') {
@@ -204,7 +199,7 @@ async function getDBQuery(schema, knex, table, fieldNodes, query) {
204
199
  hasMultiRelationalSort = sortResult.hasMultiRelationalSort;
205
200
  }
206
201
  }
207
- const { hasMultiRelationalFilter } = await (0, apply_query_1.default)(knex, table, dbQuery, queryCopy, schema, {
202
+ const { hasMultiRelationalFilter } = (0, apply_query_1.default)(knex, table, dbQuery, queryCopy, schema, {
208
203
  aliasMap,
209
204
  isInnerQuery: true,
210
205
  hasMultiRelationalSort,
@@ -217,6 +212,8 @@ async function getDBQuery(schema, knex, table, fieldNodes, query) {
217
212
  dbQuery.select(fieldNodes.map(preProcess));
218
213
  }
219
214
  if (sortRecords) {
215
+ // Clears the order if any, eg: from MSSQL offset
216
+ dbQuery.clear('order');
220
217
  if (needsInnerQuery) {
221
218
  let orderByString = '';
222
219
  const orderByFields = [];
@@ -245,8 +242,6 @@ async function getDBQuery(schema, knex, table, fieldNodes, query) {
245
242
  }
246
243
  }
247
244
  else {
248
- // Clears the order if any, eg: from MSSQL offset
249
- dbQuery.clear('order');
250
245
  sortRecords.map((sortRecord) => {
251
246
  if (sortRecord.column.includes('.')) {
252
247
  const [alias, field] = sortRecord.column.split('.');
@@ -279,7 +274,6 @@ async function getDBQuery(schema, knex, table, fieldNodes, query) {
279
274
  return wrapperQuery;
280
275
  }
281
276
  function applyParentFilters(schema, nestedCollectionNodes, parentItem) {
282
- var _a;
283
277
  const parentItems = (0, utils_1.toArray)(parentItem);
284
278
  for (const nestedNode of nestedCollectionNodes) {
285
279
  if (!nestedNode.relation)
@@ -300,7 +294,7 @@ function applyParentFilters(schema, nestedCollectionNodes, parentItem) {
300
294
  fieldKey: nestedNode.relation.field,
301
295
  });
302
296
  }
303
- if ((_a = nestedNode.relation.meta) === null || _a === void 0 ? void 0 : _a.sort_field) {
297
+ if (nestedNode.relation.meta?.sort_field) {
304
298
  nestedNode.children.push({
305
299
  type: 'field',
306
300
  name: nestedNode.relation.meta.sort_field,
@@ -331,7 +325,6 @@ function applyParentFilters(schema, nestedCollectionNodes, parentItem) {
331
325
  return nestedCollectionNodes;
332
326
  }
333
327
  function mergeWithParentItems(schema, nestedItem, parentItem, nestedNode) {
334
- var _a, _b, _c;
335
328
  const nestedItems = (0, utils_1.toArray)(nestedItem);
336
329
  const parentItems = (0, lodash_1.clone)((0, utils_1.toArray)(parentItem));
337
330
  if (nestedNode.type === 'm2o') {
@@ -348,24 +341,23 @@ function mergeWithParentItems(schema, nestedItem, parentItem, nestedNode) {
348
341
  if (!parentItem[nestedNode.fieldKey])
349
342
  parentItem[nestedNode.fieldKey] = [];
350
343
  const itemChildren = nestedItems.filter((nestedItem) => {
351
- var _a;
352
344
  if (nestedItem === null)
353
345
  return false;
354
346
  if (Array.isArray(nestedItem[nestedNode.relation.field]))
355
347
  return true;
356
348
  return (nestedItem[nestedNode.relation.field] ==
357
349
  parentItem[schema.collections[nestedNode.relation.related_collection].primary] ||
358
- ((_a = nestedItem[nestedNode.relation.field]) === null || _a === void 0 ? void 0 : _a[schema.collections[nestedNode.relation.related_collection].primary]) == parentItem[schema.collections[nestedNode.relation.related_collection].primary]);
350
+ nestedItem[nestedNode.relation.field]?.[schema.collections[nestedNode.relation.related_collection].primary] == parentItem[schema.collections[nestedNode.relation.related_collection].primary]);
359
351
  });
360
352
  parentItem[nestedNode.fieldKey].push(...itemChildren);
361
353
  if (nestedNode.query.page && nestedNode.query.page > 1) {
362
- parentItem[nestedNode.fieldKey] = parentItem[nestedNode.fieldKey].slice(((_a = nestedNode.query.limit) !== null && _a !== void 0 ? _a : 100) * (nestedNode.query.page - 1));
354
+ parentItem[nestedNode.fieldKey] = parentItem[nestedNode.fieldKey].slice((nestedNode.query.limit ?? 100) * (nestedNode.query.page - 1));
363
355
  }
364
356
  if (nestedNode.query.offset && nestedNode.query.offset >= 0) {
365
357
  parentItem[nestedNode.fieldKey] = parentItem[nestedNode.fieldKey].slice(nestedNode.query.offset);
366
358
  }
367
359
  if (nestedNode.query.limit !== -1) {
368
- parentItem[nestedNode.fieldKey] = parentItem[nestedNode.fieldKey].slice(0, (_b = nestedNode.query.limit) !== null && _b !== void 0 ? _b : 100);
360
+ parentItem[nestedNode.fieldKey] = parentItem[nestedNode.fieldKey].slice(0, nestedNode.query.limit ?? 100);
369
361
  }
370
362
  parentItem[nestedNode.fieldKey] = parentItem[nestedNode.fieldKey].sort((a, b) => {
371
363
  // This is pre-filled in get-ast-from-query
@@ -393,7 +385,7 @@ function mergeWithParentItems(schema, nestedItem, parentItem, nestedNode) {
393
385
  }
394
386
  else if (nestedNode.type === 'a2o') {
395
387
  for (const parentItem of parentItems) {
396
- if (!((_c = nestedNode.relation.meta) === null || _c === void 0 ? void 0 : _c.one_collection_field)) {
388
+ if (!nestedNode.relation.meta?.one_collection_field) {
397
389
  parentItem[nestedNode.fieldKey] = null;
398
390
  continue;
399
391
  }
@@ -411,7 +403,6 @@ function mergeWithParentItems(schema, nestedItem, parentItem, nestedNode) {
411
403
  return Array.isArray(parentItem) ? parentItems : parentItems[0];
412
404
  }
413
405
  function removeTemporaryFields(schema, rawItem, ast, primaryKeyField, parentItem) {
414
- var _a;
415
406
  const rawItems = (0, lodash_1.cloneDeep)((0, utils_1.toArray)(rawItem));
416
407
  const items = [];
417
408
  if (ast.type === 'a2o') {
@@ -433,7 +424,7 @@ function removeTemporaryFields(schema, rawItem, ast, primaryKeyField, parentItem
433
424
  }
434
425
  }
435
426
  for (const rawItem of rawItems) {
436
- const relatedCollection = parentItem === null || parentItem === void 0 ? void 0 : parentItem[ast.relation.meta.one_collection_field];
427
+ const relatedCollection = parentItem?.[ast.relation.meta.one_collection_field];
437
428
  if (rawItem === null || rawItem === undefined)
438
429
  return rawItem;
439
430
  let item = rawItem;
@@ -456,7 +447,7 @@ function removeTemporaryFields(schema, rawItem, ast, primaryKeyField, parentItem
456
447
  }
457
448
  }
458
449
  // Make sure any requested aggregate fields are included
459
- if ((_a = ast.query) === null || _a === void 0 ? void 0 : _a.aggregate) {
450
+ if (ast.query?.aggregate) {
460
451
  for (const [operation, aggregateFields] of Object.entries(ast.query.aggregate)) {
461
452
  if (!fields)
462
453
  continue;
@@ -1,2 +1,2 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export default function runSeed(database: Knex): Promise<void>;
@@ -21,7 +21,6 @@ async function runSeed(database) {
21
21
  const yamlRaw = await fs_extra_1.default.readFile(path_1.default.resolve(__dirname, tableSeedFile), 'utf8');
22
22
  const seedData = js_yaml_1.default.load(yamlRaw);
23
23
  await database.schema.createTable(seedData.table, (tableBuilder) => {
24
- var _a;
25
24
  for (const [columnName, columnInfo] of Object.entries(seedData.columns)) {
26
25
  let column;
27
26
  if (columnInfo.type === 'alias' || columnInfo.type === 'unknown')
@@ -38,7 +37,7 @@ async function runSeed(database) {
38
37
  else if (columnInfo.type === 'hash') {
39
38
  column = tableBuilder.string(columnName, 255);
40
39
  }
41
- else if ((_a = columnInfo.type) === null || _a === void 0 ? void 0 : _a.startsWith('geometry')) {
40
+ else if (columnInfo.type?.startsWith('geometry')) {
42
41
  column = helpers.st.createColumn(tableBuilder, { field: columnName, type: columnInfo.type });
43
42
  }
44
43
  else {
@@ -1,3 +1,3 @@
1
- import { Permission } from '@directus/shared/types';
1
+ import type { Permission } from '@directus/shared/types';
2
2
  export declare const schemaPermissions: Permission[];
3
3
  export declare const appAccessMinimalPermissions: Permission[];
@@ -1,2 +1,2 @@
1
- import { CollectionMeta } from '../../../types';
1
+ import type { CollectionMeta } from '../../../types';
2
2
  export declare const systemCollectionRows: CollectionMeta[];
@@ -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[];
@@ -26,8 +26,7 @@ for (const filepath of fieldData) {
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
- var _a, _b;
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,