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
@@ -21,100 +21,12 @@ const items_1 = require("./items");
21
21
  * handled correctly.
22
22
  */
23
23
  class PayloadService {
24
+ accountability;
25
+ knex;
26
+ helpers;
27
+ collection;
28
+ schema;
24
29
  constructor(collection, options) {
25
- this.transformers = {
26
- async hash({ action, value }) {
27
- if (!value)
28
- return;
29
- if (action === 'create' || action === 'update') {
30
- return await (0, generate_hash_1.generateHash)(String(value));
31
- }
32
- return value;
33
- },
34
- async uuid({ action, value }) {
35
- if (action === 'create' && !value) {
36
- return (0, uuid_1.v4)();
37
- }
38
- return value;
39
- },
40
- async 'cast-boolean'({ action, value }) {
41
- if (action === 'read') {
42
- if (value === true || value === 1 || value === '1') {
43
- return true;
44
- }
45
- else if (value === false || value === 0 || value === '0') {
46
- return false;
47
- }
48
- else if (value === null || value === '') {
49
- return null;
50
- }
51
- }
52
- return value;
53
- },
54
- async 'cast-json'({ action, value }) {
55
- if (action === 'read') {
56
- if (typeof value === 'string') {
57
- try {
58
- return (0, utils_1.parseJSON)(value);
59
- }
60
- catch {
61
- return value;
62
- }
63
- }
64
- }
65
- return value;
66
- },
67
- async conceal({ action, value }) {
68
- if (action === 'read')
69
- return value ? '**********' : null;
70
- return value;
71
- },
72
- async 'user-created'({ action, value, accountability }) {
73
- if (action === 'create')
74
- return (accountability === null || accountability === void 0 ? void 0 : accountability.user) || null;
75
- return value;
76
- },
77
- async 'user-updated'({ action, value, accountability }) {
78
- if (action === 'update')
79
- return (accountability === null || accountability === void 0 ? void 0 : accountability.user) || null;
80
- return value;
81
- },
82
- async 'role-created'({ action, value, accountability }) {
83
- if (action === 'create')
84
- return (accountability === null || accountability === void 0 ? void 0 : accountability.role) || null;
85
- return value;
86
- },
87
- async 'role-updated'({ action, value, accountability }) {
88
- if (action === 'update')
89
- return (accountability === null || accountability === void 0 ? void 0 : accountability.role) || null;
90
- return value;
91
- },
92
- async 'date-created'({ action, value, helpers }) {
93
- if (action === 'create')
94
- return new Date(helpers.date.writeTimestamp(new Date().toISOString()));
95
- return value;
96
- },
97
- async 'date-updated'({ action, value, helpers }) {
98
- if (action === 'update')
99
- return new Date(helpers.date.writeTimestamp(new Date().toISOString()));
100
- return value;
101
- },
102
- async 'cast-csv'({ action, value }) {
103
- if (Array.isArray(value) === false && typeof value !== 'string')
104
- return;
105
- if (action === 'read') {
106
- if (Array.isArray(value))
107
- return value;
108
- if (value === '')
109
- return [];
110
- return value.split(',');
111
- }
112
- if (Array.isArray(value)) {
113
- return value.join(',');
114
- }
115
- return value;
116
- },
117
- };
118
30
  this.accountability = options.accountability || null;
119
31
  this.knex = options.knex || (0, database_1.default)();
120
32
  this.helpers = (0, helpers_1.getHelpers)(this.knex);
@@ -122,6 +34,99 @@ class PayloadService {
122
34
  this.schema = options.schema;
123
35
  return this;
124
36
  }
37
+ transformers = {
38
+ async hash({ action, value }) {
39
+ if (!value)
40
+ return;
41
+ if (action === 'create' || action === 'update') {
42
+ return await (0, generate_hash_1.generateHash)(String(value));
43
+ }
44
+ return value;
45
+ },
46
+ async uuid({ action, value }) {
47
+ if (action === 'create' && !value) {
48
+ return (0, uuid_1.v4)();
49
+ }
50
+ return value;
51
+ },
52
+ async 'cast-boolean'({ action, value }) {
53
+ if (action === 'read') {
54
+ if (value === true || value === 1 || value === '1') {
55
+ return true;
56
+ }
57
+ else if (value === false || value === 0 || value === '0') {
58
+ return false;
59
+ }
60
+ else if (value === null || value === '') {
61
+ return null;
62
+ }
63
+ }
64
+ return value;
65
+ },
66
+ async 'cast-json'({ action, value }) {
67
+ if (action === 'read') {
68
+ if (typeof value === 'string') {
69
+ try {
70
+ return (0, utils_1.parseJSON)(value);
71
+ }
72
+ catch {
73
+ return value;
74
+ }
75
+ }
76
+ }
77
+ return value;
78
+ },
79
+ async conceal({ action, value }) {
80
+ if (action === 'read')
81
+ return value ? '**********' : null;
82
+ return value;
83
+ },
84
+ async 'user-created'({ action, value, accountability }) {
85
+ if (action === 'create')
86
+ return accountability?.user || null;
87
+ return value;
88
+ },
89
+ async 'user-updated'({ action, value, accountability }) {
90
+ if (action === 'update')
91
+ return accountability?.user || null;
92
+ return value;
93
+ },
94
+ async 'role-created'({ action, value, accountability }) {
95
+ if (action === 'create')
96
+ return accountability?.role || null;
97
+ return value;
98
+ },
99
+ async 'role-updated'({ action, value, accountability }) {
100
+ if (action === 'update')
101
+ return accountability?.role || null;
102
+ return value;
103
+ },
104
+ async 'date-created'({ action, value, helpers }) {
105
+ if (action === 'create')
106
+ return new Date(helpers.date.writeTimestamp(new Date().toISOString()));
107
+ return value;
108
+ },
109
+ async 'date-updated'({ action, value, helpers }) {
110
+ if (action === 'update')
111
+ return new Date(helpers.date.writeTimestamp(new Date().toISOString()));
112
+ return value;
113
+ },
114
+ async 'cast-csv'({ action, value }) {
115
+ if (Array.isArray(value) === false && typeof value !== 'string')
116
+ return;
117
+ if (action === 'read') {
118
+ if (Array.isArray(value))
119
+ return value;
120
+ if (value === '')
121
+ return [];
122
+ return value.split(',');
123
+ }
124
+ if (Array.isArray(value)) {
125
+ return value.join(',');
126
+ }
127
+ return value;
128
+ },
129
+ };
125
130
  async processValues(action, payload) {
126
131
  const processedPayload = (0, utils_1.toArray)(payload);
127
132
  if (processedPayload.length === 0)
@@ -303,7 +308,6 @@ class PayloadService {
303
308
  * Recursively save/update all nested related Any-to-One items
304
309
  */
305
310
  async processA2O(data, opts) {
306
- var _a, _b;
307
311
  const relations = this.schema.relations.filter((relation) => {
308
312
  return relation.collection === this.collection;
309
313
  });
@@ -316,7 +320,7 @@ class PayloadService {
316
320
  });
317
321
  for (const relation of relationsToProcess) {
318
322
  // If the required a2o configuration fields are missing, this is a m2o instead of an a2o
319
- if (!((_a = relation.meta) === null || _a === void 0 ? void 0 : _a.one_collection_field) || !((_b = relation.meta) === null || _b === void 0 ? void 0 : _b.one_allowed_collections))
323
+ if (!relation.meta?.one_collection_field || !relation.meta?.one_allowed_collections)
320
324
  continue;
321
325
  const relatedCollection = payload[relation.meta.one_collection_field];
322
326
  if (!relatedCollection) {
@@ -348,16 +352,16 @@ class PayloadService {
348
352
  if (Object.keys(fieldsToUpdate).length > 0) {
349
353
  await itemsService.updateOne(relatedPrimaryKey, relatedRecord, {
350
354
  onRevisionCreate: (pk) => revisions.push(pk),
351
- bypassEmitAction: (params) => (opts === null || opts === void 0 ? void 0 : opts.bypassEmitAction) ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
352
- emitEvents: opts === null || opts === void 0 ? void 0 : opts.emitEvents,
355
+ bypassEmitAction: (params) => opts?.bypassEmitAction ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
356
+ emitEvents: opts?.emitEvents,
353
357
  });
354
358
  }
355
359
  }
356
360
  else {
357
361
  relatedPrimaryKey = await itemsService.createOne(relatedRecord, {
358
362
  onRevisionCreate: (pk) => revisions.push(pk),
359
- bypassEmitAction: (params) => (opts === null || opts === void 0 ? void 0 : opts.bypassEmitAction) ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
360
- emitEvents: opts === null || opts === void 0 ? void 0 : opts.emitEvents,
363
+ bypassEmitAction: (params) => opts?.bypassEmitAction ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
364
+ emitEvents: opts?.emitEvents,
361
365
  });
362
366
  }
363
367
  // Overwrite the nested object with just the primary key, so the parent level can be saved correctly
@@ -408,16 +412,16 @@ class PayloadService {
408
412
  if (Object.keys(fieldsToUpdate).length > 0) {
409
413
  await itemsService.updateOne(relatedPrimaryKey, relatedRecord, {
410
414
  onRevisionCreate: (pk) => revisions.push(pk),
411
- bypassEmitAction: (params) => (opts === null || opts === void 0 ? void 0 : opts.bypassEmitAction) ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
412
- emitEvents: opts === null || opts === void 0 ? void 0 : opts.emitEvents,
415
+ bypassEmitAction: (params) => opts?.bypassEmitAction ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
416
+ emitEvents: opts?.emitEvents,
413
417
  });
414
418
  }
415
419
  }
416
420
  else {
417
421
  relatedPrimaryKey = await itemsService.createOne(relatedRecord, {
418
422
  onRevisionCreate: (pk) => revisions.push(pk),
419
- bypassEmitAction: (params) => (opts === null || opts === void 0 ? void 0 : opts.bypassEmitAction) ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
420
- emitEvents: opts === null || opts === void 0 ? void 0 : opts.emitEvents,
423
+ bypassEmitAction: (params) => opts?.bypassEmitAction ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
424
+ emitEvents: opts?.emitEvents,
421
425
  });
422
426
  }
423
427
  // Overwrite the nested object with just the primary key, so the parent level can be saved correctly
@@ -437,8 +441,7 @@ class PayloadService {
437
441
  const payload = (0, lodash_1.cloneDeep)(data);
438
442
  // Only process related records that are actually in the payload
439
443
  const relationsToProcess = relations.filter((relation) => {
440
- var _a;
441
- if (!((_a = relation.meta) === null || _a === void 0 ? void 0 : _a.one_field))
444
+ if (!relation.meta?.one_field)
442
445
  return false;
443
446
  return relation.meta.one_field in payload;
444
447
  });
@@ -498,8 +501,8 @@ class PayloadService {
498
501
  }
499
502
  savedPrimaryKeys.push(...(await itemsService.upsertMany(recordsToUpsert, {
500
503
  onRevisionCreate: (pk) => revisions.push(pk),
501
- bypassEmitAction: (params) => (opts === null || opts === void 0 ? void 0 : opts.bypassEmitAction) ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
502
- emitEvents: opts === null || opts === void 0 ? void 0 : opts.emitEvents,
504
+ bypassEmitAction: (params) => opts?.bypassEmitAction ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
505
+ emitEvents: opts?.emitEvents,
503
506
  })));
504
507
  const query = {
505
508
  filter: {
@@ -521,15 +524,15 @@ class PayloadService {
521
524
  if (relation.meta.one_deselect_action === 'delete') {
522
525
  // There's no revision for a deletion
523
526
  await itemsService.deleteByQuery(query, {
524
- bypassEmitAction: (params) => (opts === null || opts === void 0 ? void 0 : opts.bypassEmitAction) ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
525
- emitEvents: opts === null || opts === void 0 ? void 0 : opts.emitEvents,
527
+ bypassEmitAction: (params) => opts?.bypassEmitAction ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
528
+ emitEvents: opts?.emitEvents,
526
529
  });
527
530
  }
528
531
  else {
529
532
  await itemsService.updateByQuery(query, { [relation.field]: null }, {
530
533
  onRevisionCreate: (pk) => revisions.push(pk),
531
- bypassEmitAction: (params) => (opts === null || opts === void 0 ? void 0 : opts.bypassEmitAction) ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
532
- emitEvents: opts === null || opts === void 0 ? void 0 : opts.emitEvents,
534
+ bypassEmitAction: (params) => opts?.bypassEmitAction ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
535
+ emitEvents: opts?.emitEvents,
533
536
  });
534
537
  }
535
538
  }
@@ -553,7 +556,7 @@ class PayloadService {
553
556
  const record = (0, lodash_1.cloneDeep)(item);
554
557
  // add sort field value if it is not supplied in the item
555
558
  if (parent !== null && record[sortField] === undefined) {
556
- record[sortField] = (highestOrderNumber === null || highestOrderNumber === void 0 ? void 0 : highestOrderNumber.max) ? highestOrderNumber.max + index + 1 : index + 1;
559
+ record[sortField] = highestOrderNumber?.max ? highestOrderNumber.max + index + 1 : index + 1;
557
560
  }
558
561
  return {
559
562
  ...record,
@@ -569,8 +572,8 @@ class PayloadService {
569
572
  }
570
573
  await itemsService.createMany(createPayload, {
571
574
  onRevisionCreate: (pk) => revisions.push(pk),
572
- bypassEmitAction: (params) => (opts === null || opts === void 0 ? void 0 : opts.bypassEmitAction) ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
573
- emitEvents: opts === null || opts === void 0 ? void 0 : opts.emitEvents,
575
+ bypassEmitAction: (params) => opts?.bypassEmitAction ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
576
+ emitEvents: opts?.emitEvents,
574
577
  });
575
578
  }
576
579
  if (alterations.update) {
@@ -581,8 +584,8 @@ class PayloadService {
581
584
  [relation.field]: parent || payload[currentPrimaryKeyField],
582
585
  }, {
583
586
  onRevisionCreate: (pk) => revisions.push(pk),
584
- bypassEmitAction: (params) => (opts === null || opts === void 0 ? void 0 : opts.bypassEmitAction) ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
585
- emitEvents: opts === null || opts === void 0 ? void 0 : opts.emitEvents,
587
+ bypassEmitAction: (params) => opts?.bypassEmitAction ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
588
+ emitEvents: opts?.emitEvents,
586
589
  });
587
590
  }
588
591
  }
@@ -605,15 +608,15 @@ class PayloadService {
605
608
  };
606
609
  if (relation.meta.one_deselect_action === 'delete') {
607
610
  await itemsService.deleteByQuery(query, {
608
- bypassEmitAction: (params) => (opts === null || opts === void 0 ? void 0 : opts.bypassEmitAction) ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
609
- emitEvents: opts === null || opts === void 0 ? void 0 : opts.emitEvents,
611
+ bypassEmitAction: (params) => opts?.bypassEmitAction ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
612
+ emitEvents: opts?.emitEvents,
610
613
  });
611
614
  }
612
615
  else {
613
616
  await itemsService.updateByQuery(query, { [relation.field]: null }, {
614
617
  onRevisionCreate: (pk) => revisions.push(pk),
615
- bypassEmitAction: (params) => (opts === null || opts === void 0 ? void 0 : opts.bypassEmitAction) ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
616
- emitEvents: opts === null || opts === void 0 ? void 0 : opts.emitEvents,
618
+ bypassEmitAction: (params) => opts?.bypassEmitAction ? opts.bypassEmitAction(params) : nestedActionEvents.push(params),
619
+ emitEvents: opts?.emitEvents,
617
620
  });
618
621
  }
619
622
  }
@@ -626,10 +629,9 @@ class PayloadService {
626
629
  * between delta and data
627
630
  */
628
631
  async prepareDelta(data) {
629
- var _a;
630
632
  let payload = (0, lodash_1.cloneDeep)(data);
631
633
  for (const key in payload) {
632
- if ((_a = payload[key]) === null || _a === void 0 ? void 0 : _a.isRawInstance) {
634
+ if (payload[key]?.isRawInstance) {
633
635
  payload[key] = payload[key].bindings[0];
634
636
  }
635
637
  }
@@ -1,7 +1,7 @@
1
+ import type { PermissionsAction, Query } from '@directus/shared/types';
2
+ import type Keyv from 'keyv';
1
3
  import { ItemsService, QueryOptions } from '../services/items';
2
- import { AbstractServiceOptions, Item, PrimaryKey, MutationOptions } from '../types';
3
- import { Query, PermissionsAction } from '@directus/shared/types';
4
- import Keyv from 'keyv';
4
+ import type { AbstractServiceOptions, Item, MutationOptions, PrimaryKey } from '../types';
5
5
  export declare class PermissionsService extends ItemsService {
6
6
  systemCache: Keyv<any>;
7
7
  constructor(options: AbstractServiceOptions);
@@ -1,32 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PermissionsService = void 0;
4
+ const cache_1 = require("../cache");
4
5
  const app_access_permissions_1 = require("../database/system-data/app-access-permissions");
5
6
  const items_1 = require("../services/items");
6
7
  const filter_items_1 = require("../utils/filter-items");
7
- const cache_1 = require("../cache");
8
8
  class PermissionsService extends items_1.ItemsService {
9
+ systemCache;
9
10
  constructor(options) {
10
11
  super('directus_permissions', options);
11
12
  const { systemCache } = (0, cache_1.getCache)();
12
13
  this.systemCache = systemCache;
13
14
  }
14
15
  getAllowedFields(action, collection) {
15
- var _a, _b, _c;
16
- const results = (_c = (_b = (_a = this.accountability) === null || _a === void 0 ? void 0 : _a.permissions) === null || _b === void 0 ? void 0 : _b.filter((permission) => {
16
+ const results = this.accountability?.permissions?.filter((permission) => {
17
17
  let matchesCollection = true;
18
18
  if (collection) {
19
19
  matchesCollection = permission.collection === collection;
20
20
  }
21
21
  const matchesAction = permission.action === action;
22
22
  return collection ? matchesCollection && matchesAction : matchesAction;
23
- })) !== null && _c !== void 0 ? _c : [];
23
+ }) ?? [];
24
24
  const fieldsPerCollection = {};
25
25
  for (const result of results) {
26
26
  const { collection, fields } = result;
27
27
  if (!fieldsPerCollection[collection])
28
28
  fieldsPerCollection[collection] = [];
29
- fieldsPerCollection[collection].push(...(fields !== null && fields !== void 0 ? fields : []));
29
+ fieldsPerCollection[collection].push(...(fields ?? []));
30
30
  }
31
31
  return fieldsPerCollection;
32
32
  }
@@ -52,32 +52,32 @@ class PermissionsService extends items_1.ItemsService {
52
52
  }
53
53
  async createOne(data, opts) {
54
54
  const res = await super.createOne(data, opts);
55
- await (0, cache_1.clearSystemCache)();
55
+ await (0, cache_1.clearSystemCache)({ autoPurgeCache: opts?.autoPurgeCache });
56
56
  return res;
57
57
  }
58
58
  async createMany(data, opts) {
59
59
  const res = await super.createMany(data, opts);
60
- await (0, cache_1.clearSystemCache)();
60
+ await (0, cache_1.clearSystemCache)({ autoPurgeCache: opts?.autoPurgeCache });
61
61
  return res;
62
62
  }
63
63
  async updateBatch(data, opts) {
64
64
  const res = await super.updateBatch(data, opts);
65
- await (0, cache_1.clearSystemCache)();
65
+ await (0, cache_1.clearSystemCache)({ autoPurgeCache: opts?.autoPurgeCache });
66
66
  return res;
67
67
  }
68
68
  async updateMany(keys, data, opts) {
69
69
  const res = await super.updateMany(keys, data, opts);
70
- await (0, cache_1.clearSystemCache)();
70
+ await (0, cache_1.clearSystemCache)({ autoPurgeCache: opts?.autoPurgeCache });
71
71
  return res;
72
72
  }
73
73
  async upsertMany(payloads, opts) {
74
74
  const res = await super.upsertMany(payloads, opts);
75
- await (0, cache_1.clearSystemCache)();
75
+ await (0, cache_1.clearSystemCache)({ autoPurgeCache: opts?.autoPurgeCache });
76
76
  return res;
77
77
  }
78
78
  async deleteMany(keys, opts) {
79
79
  const res = await super.deleteMany(keys, opts);
80
- await (0, cache_1.clearSystemCache)();
80
+ await (0, cache_1.clearSystemCache)({ autoPurgeCache: opts?.autoPurgeCache });
81
81
  return res;
82
82
  }
83
83
  }
@@ -1,4 +1,4 @@
1
- import { AbstractServiceOptions } from '../types';
1
+ import type { AbstractServiceOptions } from '../types';
2
2
  import { ItemsService } from './items';
3
3
  export declare class PresetsService extends ItemsService {
4
4
  constructor(options: AbstractServiceOptions);
@@ -1,11 +1,11 @@
1
- import { Knex } from 'knex';
2
- import { SchemaOverview, Relation, RelationMeta, Accountability } from '@directus/shared/types';
3
- import { ItemsService, QueryOptions } from './items';
4
- import { PermissionsService } from './permissions';
5
1
  import SchemaInspector from '@directus/schema';
6
- import Keyv from 'keyv';
7
- import { AbstractServiceOptions, MutationOptions } from '../types';
2
+ import type { Accountability, Relation, RelationMeta, SchemaOverview } from '@directus/shared/types';
3
+ import type Keyv from 'keyv';
4
+ import type { Knex } from 'knex';
8
5
  import { Helpers } from '../database/helpers';
6
+ import type { AbstractServiceOptions, MutationOptions } from '../types';
7
+ import { ItemsService, QueryOptions } from './items';
8
+ import { PermissionsService } from './permissions';
9
9
  export declare class RelationsService {
10
10
  knex: Knex;
11
11
  permissionsService: PermissionsService;