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
@@ -4,17 +4,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const express_1 = require("express");
7
+ const drivers_1 = require("../auth/drivers");
8
+ const constants_1 = require("../constants");
7
9
  const env_1 = __importDefault(require("../env"));
8
10
  const exceptions_1 = require("../exceptions");
11
+ const logger_1 = __importDefault(require("../logger"));
9
12
  const respond_1 = require("../middleware/respond");
10
13
  const services_1 = require("../services");
11
14
  const async_handler_1 = __importDefault(require("../utils/async-handler"));
12
15
  const get_auth_providers_1 = require("../utils/get-auth-providers");
13
- const logger_1 = __importDefault(require("../logger"));
14
- const drivers_1 = require("../auth/drivers");
15
- const constants_1 = require("../constants");
16
16
  const get_ip_from_req_1 = require("../utils/get-ip-from-req");
17
- const constants_2 = require("../constants");
18
17
  const router = (0, express_1.Router)();
19
18
  const authProviders = (0, get_auth_providers_1.getAuthProviders)();
20
19
  for (const authProvider of authProviders) {
@@ -48,10 +47,14 @@ if (!env_1.default.AUTH_DISABLE_DEFAULT) {
48
47
  router.post('/refresh', (0, async_handler_1.default)(async (req, res, next) => {
49
48
  const accountability = {
50
49
  ip: (0, get_ip_from_req_1.getIPFromReq)(req),
51
- userAgent: req.get('user-agent'),
52
- origin: req.get('origin'),
53
50
  role: null,
54
51
  };
52
+ const userAgent = req.get('user-agent');
53
+ if (userAgent)
54
+ accountability.userAgent = userAgent;
55
+ const origin = req.get('origin');
56
+ if (origin)
57
+ accountability.origin = origin;
55
58
  const authenticationService = new services_1.AuthenticationService({
56
59
  accountability: accountability,
57
60
  schema: req.schema,
@@ -69,19 +72,22 @@ router.post('/refresh', (0, async_handler_1.default)(async (req, res, next) => {
69
72
  payload.data.refresh_token = refreshToken;
70
73
  }
71
74
  if (mode === 'cookie') {
72
- res.cookie(env_1.default.REFRESH_TOKEN_COOKIE_NAME, refreshToken, constants_2.COOKIE_OPTIONS);
75
+ res.cookie(env_1.default.REFRESH_TOKEN_COOKIE_NAME, refreshToken, constants_1.COOKIE_OPTIONS);
73
76
  }
74
77
  res.locals.payload = payload;
75
78
  return next();
76
79
  }), respond_1.respond);
77
80
  router.post('/logout', (0, async_handler_1.default)(async (req, res, next) => {
78
- var _a;
79
81
  const accountability = {
80
82
  ip: (0, get_ip_from_req_1.getIPFromReq)(req),
81
- userAgent: req.get('user-agent'),
82
- origin: req.get('origin'),
83
83
  role: null,
84
84
  };
85
+ const userAgent = req.get('user-agent');
86
+ if (userAgent)
87
+ accountability.userAgent = userAgent;
88
+ const origin = req.get('origin');
89
+ if (origin)
90
+ accountability.origin = origin;
85
91
  const authenticationService = new services_1.AuthenticationService({
86
92
  accountability: accountability,
87
93
  schema: req.schema,
@@ -95,7 +101,7 @@ router.post('/logout', (0, async_handler_1.default)(async (req, res, next) => {
95
101
  res.clearCookie(env_1.default.REFRESH_TOKEN_COOKIE_NAME, {
96
102
  httpOnly: true,
97
103
  domain: env_1.default.REFRESH_TOKEN_COOKIE_DOMAIN,
98
- secure: (_a = env_1.default.REFRESH_TOKEN_COOKIE_SECURE) !== null && _a !== void 0 ? _a : false,
104
+ secure: env_1.default.REFRESH_TOKEN_COOKIE_SECURE ?? false,
99
105
  sameSite: env_1.default.REFRESH_TOKEN_COOKIE_SAME_SITE || 'strict',
100
106
  });
101
107
  }
@@ -107,10 +113,14 @@ router.post('/password/request', (0, async_handler_1.default)(async (req, res, n
107
113
  }
108
114
  const accountability = {
109
115
  ip: (0, get_ip_from_req_1.getIPFromReq)(req),
110
- userAgent: req.get('user-agent'),
111
- origin: req.get('origin'),
112
116
  role: null,
113
117
  };
118
+ const userAgent = req.get('user-agent');
119
+ if (userAgent)
120
+ accountability.userAgent = userAgent;
121
+ const origin = req.get('origin');
122
+ if (origin)
123
+ accountability.origin = origin;
114
124
  const service = new services_1.UsersService({ accountability, schema: req.schema });
115
125
  try {
116
126
  await service.requestPasswordReset(req.body.email, req.body.reset_url || null);
@@ -135,10 +145,14 @@ router.post('/password/reset', (0, async_handler_1.default)(async (req, res, nex
135
145
  }
136
146
  const accountability = {
137
147
  ip: (0, get_ip_from_req_1.getIPFromReq)(req),
138
- userAgent: req.get('user-agent'),
139
- origin: req.get('origin'),
140
148
  role: null,
141
149
  };
150
+ const userAgent = req.get('user-agent');
151
+ if (userAgent)
152
+ accountability.userAgent = userAgent;
153
+ const origin = req.get('origin');
154
+ if (origin)
155
+ accountability.origin = origin;
142
156
  const service = new services_1.UsersService({ accountability, schema: req.schema });
143
157
  await service.resetPassword(req.body.token, req.body.password);
144
158
  return next();
@@ -10,6 +10,7 @@ const use_collection_1 = __importDefault(require("../middleware/use-collection")
10
10
  const validate_batch_1 = require("../middleware/validate-batch");
11
11
  const services_1 = require("../services");
12
12
  const async_handler_1 = __importDefault(require("../utils/async-handler"));
13
+ const sanitize_query_1 = require("../utils/sanitize-query");
13
14
  const router = express_1.default.Router();
14
15
  router.use((0, use_collection_1.default)('directus_dashboards'));
15
16
  router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
@@ -82,7 +83,8 @@ router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handl
82
83
  keys = await service.updateMany(req.body.keys, req.body.data);
83
84
  }
84
85
  else {
85
- keys = await service.updateByQuery(req.body.query, req.body.data);
86
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
87
+ keys = await service.updateByQuery(sanitizedQuery, req.body.data);
86
88
  }
87
89
  try {
88
90
  const result = await service.readMany(keys, req.sanitizedQuery);
@@ -126,7 +128,8 @@ router.delete('/', (0, async_handler_1.default)(async (req, res, next) => {
126
128
  await service.deleteMany(req.body.keys);
127
129
  }
128
130
  else {
129
- await service.deleteByQuery(req.body.query);
131
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
132
+ await service.deleteByQuery(sanitizedQuery);
130
133
  }
131
134
  return next();
132
135
  }), respond_1.respond);
@@ -3,16 +3,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const constants_1 = require("@directus/shared/constants");
7
+ const utils_1 = require("@directus/shared/utils");
6
8
  const express_1 = require("express");
7
- const async_handler_1 = __importDefault(require("../utils/async-handler"));
9
+ const env_1 = __importDefault(require("../env"));
8
10
  const exceptions_1 = require("../exceptions");
9
11
  const extensions_1 = require("../extensions");
10
- const ms_1 = __importDefault(require("ms"));
11
- const env_1 = __importDefault(require("../env"));
12
- const get_cache_headers_1 = require("../utils/get-cache-headers");
13
12
  const respond_1 = require("../middleware/respond");
14
- const utils_1 = require("@directus/shared/utils");
15
- const constants_1 = require("@directus/shared/constants");
13
+ const async_handler_1 = __importDefault(require("../utils/async-handler"));
14
+ const get_cache_headers_1 = require("../utils/get-cache-headers");
15
+ const get_milliseconds_1 = require("../utils/get-milliseconds");
16
16
  const router = (0, express_1.Router)();
17
17
  router.get('/:type', (0, async_handler_1.default)(async (req, res, next) => {
18
18
  const type = (0, utils_1.depluralize)(req.params.type);
@@ -33,7 +33,7 @@ router.get('/sources/index.js', (0, async_handler_1.default)(async (req, res) =>
33
33
  throw new exceptions_1.RouteNotFoundException(req.path);
34
34
  }
35
35
  res.setHeader('Content-Type', 'application/javascript; charset=UTF-8');
36
- res.setHeader('Cache-Control', env_1.default.EXTENSIONS_CACHE_TTL ? (0, get_cache_headers_1.getCacheControlHeader)(req, (0, ms_1.default)(env_1.default.EXTENSIONS_CACHE_TTL)) : 'no-store');
36
+ res.setHeader('Cache-Control', (0, get_cache_headers_1.getCacheControlHeader)(req, (0, get_milliseconds_1.getMilliseconds)(env_1.default.EXTENSIONS_CACHE_TTL), false, false));
37
37
  res.setHeader('Vary', 'Origin, Cache-Control');
38
38
  res.end(extensionSource);
39
39
  }));
@@ -3,15 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const constants_1 = require("@directus/shared/constants");
6
7
  const express_1 = require("express");
7
8
  const joi_1 = __importDefault(require("joi"));
8
- const constants_1 = require("../constants");
9
+ const constants_2 = require("../constants");
9
10
  const exceptions_1 = require("../exceptions");
10
11
  const collection_exists_1 = __importDefault(require("../middleware/collection-exists"));
11
12
  const respond_1 = require("../middleware/respond");
12
13
  const use_collection_1 = __importDefault(require("../middleware/use-collection"));
13
14
  const fields_1 = require("../services/fields");
14
- const constants_2 = require("@directus/shared/constants");
15
15
  const async_handler_1 = __importDefault(require("../utils/async-handler"));
16
16
  const router = (0, express_1.Router)();
17
17
  router.use((0, use_collection_1.default)('directus_fields'));
@@ -46,7 +46,7 @@ const newFieldSchema = joi_1.default.object({
46
46
  collection: joi_1.default.string().optional(),
47
47
  field: joi_1.default.string().required(),
48
48
  type: joi_1.default.string()
49
- .valid(...constants_2.TYPES, ...constants_1.ALIAS_TYPES)
49
+ .valid(...constants_1.TYPES, ...constants_2.ALIAS_TYPES)
50
50
  .allow(null)
51
51
  .optional(),
52
52
  schema: joi_1.default.object({
@@ -110,7 +110,7 @@ router.patch('/:collection', collection_exists_1.default, (0, async_handler_1.de
110
110
  }), respond_1.respond);
111
111
  const updateSchema = joi_1.default.object({
112
112
  type: joi_1.default.string()
113
- .valid(...constants_2.TYPES, ...constants_1.ALIAS_TYPES)
113
+ .valid(...constants_1.TYPES, ...constants_2.ALIAS_TYPES)
114
114
  .allow(null),
115
115
  schema: joi_1.default.object({
116
116
  default_value: joi_1.default.any(),
@@ -18,6 +18,7 @@ const services_1 = require("../services");
18
18
  const async_handler_1 = __importDefault(require("../utils/async-handler"));
19
19
  // @ts-ignore
20
20
  const format_title_1 = __importDefault(require("@directus/format-title"));
21
+ const sanitize_query_1 = require("../utils/sanitize-query");
21
22
  const router = express_1.default.Router();
22
23
  router.use((0, use_collection_1.default)('directus_files'));
23
24
  const multipartHandler = (req, res, next) => {
@@ -63,12 +64,14 @@ const multipartHandler = (req, res, next) => {
63
64
  return busboy.emit('error', new exceptions_1.InvalidPayloadException(`File is missing filename`));
64
65
  }
65
66
  fileCount++;
66
- if (!payload.title) {
67
- payload.title = (0, format_title_1.default)(path_1.default.parse(filename).name);
67
+ if (!existingPrimaryKey) {
68
+ if (!payload.title) {
69
+ payload.title = (0, format_title_1.default)(path_1.default.parse(filename).name);
70
+ }
71
+ payload.filename_download = filename;
68
72
  }
69
73
  const payloadWithRequiredFields = {
70
74
  ...payload,
71
- filename_download: filename,
72
75
  type: mimeType,
73
76
  storage: payload.storage || disk,
74
77
  };
@@ -93,7 +96,7 @@ const multipartHandler = (req, res, next) => {
93
96
  function tryDone() {
94
97
  if (savedFiles.length === fileCount) {
95
98
  if (fileCount === 0) {
96
- return next(new exceptions_1.InvalidPayloadException(`No files where included in the body`));
99
+ return next(new exceptions_1.InvalidPayloadException(`No files were included in the body`));
97
100
  }
98
101
  res.locals.savedFiles = savedFiles;
99
102
  return next();
@@ -209,7 +212,8 @@ router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handl
209
212
  keys = await service.updateMany(req.body.keys, req.body.data);
210
213
  }
211
214
  else {
212
- keys = await service.updateByQuery(req.body.query, req.body.data);
215
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
216
+ keys = await service.updateByQuery(sanitizedQuery, req.body.data);
213
217
  }
214
218
  try {
215
219
  const result = await service.readMany(keys, req.sanitizedQuery);
@@ -253,7 +257,8 @@ router.delete('/', (0, validate_batch_1.validateBatch)('delete'), (0, async_hand
253
257
  await service.deleteMany(req.body.keys);
254
258
  }
255
259
  else {
256
- await service.deleteByQuery(req.body.query);
260
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
261
+ await service.deleteByQuery(sanitizedQuery);
257
262
  }
258
263
  return next();
259
264
  }), respond_1.respond);
@@ -12,6 +12,7 @@ const use_collection_1 = __importDefault(require("../middleware/use-collection")
12
12
  const validate_batch_1 = require("../middleware/validate-batch");
13
13
  const services_1 = require("../services");
14
14
  const async_handler_1 = __importDefault(require("../utils/async-handler"));
15
+ const sanitize_query_1 = require("../utils/sanitize-query");
15
16
  const router = express_1.default.Router();
16
17
  router.use((0, use_collection_1.default)('directus_flows'));
17
18
  const webhookFlowHandler = (0, async_handler_1.default)(async (req, res, next) => {
@@ -101,7 +102,8 @@ router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handl
101
102
  keys = await service.updateMany(req.body.keys, req.body.data);
102
103
  }
103
104
  else {
104
- keys = await service.updateByQuery(req.body.query, req.body.data);
105
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
106
+ keys = await service.updateByQuery(sanitizedQuery, req.body.data);
105
107
  }
106
108
  try {
107
109
  const result = await service.readMany(keys, req.sanitizedQuery);
@@ -145,7 +147,8 @@ router.delete('/', (0, async_handler_1.default)(async (req, res, next) => {
145
147
  await service.deleteMany(req.body.keys);
146
148
  }
147
149
  else {
148
- await service.deleteByQuery(req.body.query);
150
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
151
+ await service.deleteByQuery(sanitizedQuery);
149
152
  }
150
153
  return next();
151
154
  }), respond_1.respond);
@@ -10,6 +10,7 @@ const use_collection_1 = __importDefault(require("../middleware/use-collection")
10
10
  const validate_batch_1 = require("../middleware/validate-batch");
11
11
  const services_1 = require("../services");
12
12
  const async_handler_1 = __importDefault(require("../utils/async-handler"));
13
+ const sanitize_query_1 = require("../utils/sanitize-query");
13
14
  const router = express_1.default.Router();
14
15
  router.use((0, use_collection_1.default)('directus_folders'));
15
16
  router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
@@ -91,7 +92,8 @@ router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handl
91
92
  keys = await service.updateMany(req.body.keys, req.body.data);
92
93
  }
93
94
  else {
94
- keys = await service.updateByQuery(req.body.query, req.body.data);
95
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
96
+ keys = await service.updateByQuery(sanitizedQuery, req.body.data);
95
97
  }
96
98
  try {
97
99
  const result = await service.readMany(keys, req.sanitizedQuery);
@@ -135,7 +137,8 @@ router.delete('/', (0, validate_batch_1.validateBatch)('delete'), (0, async_hand
135
137
  await service.deleteMany(req.body.keys);
136
138
  }
137
139
  else {
138
- await service.deleteByQuery(req.body.query);
140
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
141
+ await service.deleteByQuery(sanitizedQuery);
139
142
  }
140
143
  return next();
141
144
  }), respond_1.respond);
@@ -16,6 +16,9 @@ router.use('/system', graphql_1.parseGraphQL, (0, async_handler_1.default)(async
16
16
  scope: 'system',
17
17
  });
18
18
  res.locals.payload = await service.execute(res.locals.graphqlParams);
19
+ if (res.locals.payload?.errors?.length > 0) {
20
+ res.locals.cache = false;
21
+ }
19
22
  return next();
20
23
  }), respond_1.respond);
21
24
  router.use('/', graphql_1.parseGraphQL, (0, async_handler_1.default)(async (req, res, next) => {
@@ -25,6 +28,9 @@ router.use('/', graphql_1.parseGraphQL, (0, async_handler_1.default)(async (req,
25
28
  scope: 'items',
26
29
  });
27
30
  res.locals.payload = await service.execute(res.locals.graphqlParams);
31
+ if (res.locals.payload?.errors?.length > 0) {
32
+ res.locals.cache = false;
33
+ }
28
34
  return next();
29
35
  }), respond_1.respond);
30
36
  exports.default = router;
@@ -10,6 +10,7 @@ const respond_1 = require("../middleware/respond");
10
10
  const validate_batch_1 = require("../middleware/validate-batch");
11
11
  const services_1 = require("../services");
12
12
  const async_handler_1 = __importDefault(require("../utils/async-handler"));
13
+ const sanitize_query_1 = require("../utils/sanitize-query");
13
14
  const router = express_1.default.Router();
14
15
  router.post('/:collection', collection_exists_1.default, (0, async_handler_1.default)(async (req, res, next) => {
15
16
  if (req.params.collection.startsWith('directus_'))
@@ -112,7 +113,8 @@ router.patch('/:collection', collection_exists_1.default, (0, validate_batch_1.v
112
113
  keys = await service.updateMany(req.body.keys, req.body.data);
113
114
  }
114
115
  else {
115
- keys = await service.updateByQuery(req.body.query, req.body.data);
116
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
117
+ keys = await service.updateByQuery(sanitizedQuery, req.body.data);
116
118
  }
117
119
  try {
118
120
  const result = await service.readMany(keys, req.sanitizedQuery);
@@ -163,7 +165,8 @@ router.delete('/:collection', collection_exists_1.default, (0, validate_batch_1.
163
165
  await service.deleteMany(req.body.keys);
164
166
  }
165
167
  else {
166
- await service.deleteByQuery(req.body.query);
168
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
169
+ await service.deleteByQuery(sanitizedQuery);
167
170
  }
168
171
  return next();
169
172
  }), respond_1.respond);
@@ -1,4 +1,4 @@
1
- import { RequestHandler } from 'express';
1
+ import type { RequestHandler } from 'express';
2
2
  /**
3
3
  * Handles not found routes.
4
4
  *
@@ -18,12 +18,11 @@ const exceptions_1 = require("../exceptions");
18
18
  * @param next
19
19
  */
20
20
  const notFound = async (req, res, next) => {
21
- var _a;
22
21
  try {
23
22
  const hooksResult = await emitter_1.default.emitFilter('request.not_found', false, { request: req, response: res }, {
24
23
  database: (0, database_1.default)(),
25
24
  schema: req.schema,
26
- accountability: (_a = req.accountability) !== null && _a !== void 0 ? _a : null,
25
+ accountability: req.accountability ?? null,
27
26
  });
28
27
  if (hooksResult) {
29
28
  return next();
@@ -10,6 +10,7 @@ const use_collection_1 = __importDefault(require("../middleware/use-collection")
10
10
  const validate_batch_1 = require("../middleware/validate-batch");
11
11
  const services_1 = require("../services");
12
12
  const async_handler_1 = __importDefault(require("../utils/async-handler"));
13
+ const sanitize_query_1 = require("../utils/sanitize-query");
13
14
  const router = express_1.default.Router();
14
15
  router.use((0, use_collection_1.default)('directus_notifications'));
15
16
  router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
@@ -91,7 +92,8 @@ router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handl
91
92
  keys = await service.updateMany(req.body.keys, req.body.data);
92
93
  }
93
94
  else {
94
- keys = await service.updateByQuery(req.body.query, req.body.data);
95
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
96
+ keys = await service.updateByQuery(sanitizedQuery, req.body.data);
95
97
  }
96
98
  try {
97
99
  const result = await service.readMany(keys, req.sanitizedQuery);
@@ -135,7 +137,8 @@ router.delete('/', (0, validate_batch_1.validateBatch)('delete'), (0, async_hand
135
137
  await service.deleteMany(req.body.keys);
136
138
  }
137
139
  else {
138
- await service.deleteByQuery(req.body.query);
140
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
141
+ await service.deleteByQuery(sanitizedQuery);
139
142
  }
140
143
  return next();
141
144
  }), respond_1.respond);
@@ -10,6 +10,7 @@ const use_collection_1 = __importDefault(require("../middleware/use-collection")
10
10
  const validate_batch_1 = require("../middleware/validate-batch");
11
11
  const services_1 = require("../services");
12
12
  const async_handler_1 = __importDefault(require("../utils/async-handler"));
13
+ const sanitize_query_1 = require("../utils/sanitize-query");
13
14
  const router = express_1.default.Router();
14
15
  router.use((0, use_collection_1.default)('directus_operations'));
15
16
  router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
@@ -82,7 +83,8 @@ router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handl
82
83
  keys = await service.updateMany(req.body.keys, req.body.data);
83
84
  }
84
85
  else {
85
- keys = await service.updateByQuery(req.body.query, req.body.data);
86
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
87
+ keys = await service.updateByQuery(sanitizedQuery, req.body.data);
86
88
  }
87
89
  try {
88
90
  const result = await service.readMany(keys, req.sanitizedQuery);
@@ -126,7 +128,8 @@ router.delete('/', (0, async_handler_1.default)(async (req, res, next) => {
126
128
  await service.deleteMany(req.body.keys);
127
129
  }
128
130
  else {
129
- await service.deleteByQuery(req.body.query);
131
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
132
+ await service.deleteByQuery(sanitizedQuery);
130
133
  }
131
134
  return next();
132
135
  }), respond_1.respond);
@@ -10,6 +10,7 @@ const use_collection_1 = __importDefault(require("../middleware/use-collection")
10
10
  const validate_batch_1 = require("../middleware/validate-batch");
11
11
  const services_1 = require("../services");
12
12
  const async_handler_1 = __importDefault(require("../utils/async-handler"));
13
+ const sanitize_query_1 = require("../utils/sanitize-query");
13
14
  const router = express_1.default.Router();
14
15
  router.use((0, use_collection_1.default)('directus_panels'));
15
16
  router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
@@ -82,7 +83,8 @@ router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handl
82
83
  keys = await service.updateMany(req.body.keys, req.body.data);
83
84
  }
84
85
  else {
85
- keys = await service.updateByQuery(req.body.query, req.body.data);
86
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
87
+ keys = await service.updateByQuery(sanitizedQuery, req.body.data);
86
88
  }
87
89
  try {
88
90
  const result = await service.readMany(keys, req.sanitizedQuery);
@@ -126,7 +128,8 @@ router.delete('/', (0, async_handler_1.default)(async (req, res, next) => {
126
128
  await service.deleteMany(req.body.keys);
127
129
  }
128
130
  else {
129
- await service.deleteByQuery(req.body.query);
131
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
132
+ await service.deleteByQuery(sanitizedQuery);
130
133
  }
131
134
  return next();
132
135
  }), respond_1.respond);
@@ -10,6 +10,7 @@ const use_collection_1 = __importDefault(require("../middleware/use-collection")
10
10
  const validate_batch_1 = require("../middleware/validate-batch");
11
11
  const services_1 = require("../services");
12
12
  const async_handler_1 = __importDefault(require("../utils/async-handler"));
13
+ const sanitize_query_1 = require("../utils/sanitize-query");
13
14
  const router = express_1.default.Router();
14
15
  router.use((0, use_collection_1.default)('directus_permissions'));
15
16
  router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
@@ -93,7 +94,8 @@ router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handl
93
94
  keys = await service.updateMany(req.body.keys, req.body.data);
94
95
  }
95
96
  else {
96
- keys = await service.updateByQuery(req.body.query, req.body.data);
97
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
98
+ keys = await service.updateByQuery(sanitizedQuery, req.body.data);
97
99
  }
98
100
  try {
99
101
  const result = await service.readMany(keys, req.sanitizedQuery);
@@ -137,7 +139,8 @@ router.delete('/', (0, validate_batch_1.validateBatch)('delete'), (0, async_hand
137
139
  await service.deleteMany(req.body.keys);
138
140
  }
139
141
  else {
140
- await service.deleteByQuery(req.body.query);
142
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
143
+ await service.deleteByQuery(sanitizedQuery);
141
144
  }
142
145
  return next();
143
146
  }), respond_1.respond);
@@ -10,6 +10,7 @@ const use_collection_1 = __importDefault(require("../middleware/use-collection")
10
10
  const validate_batch_1 = require("../middleware/validate-batch");
11
11
  const services_1 = require("../services");
12
12
  const async_handler_1 = __importDefault(require("../utils/async-handler"));
13
+ const sanitize_query_1 = require("../utils/sanitize-query");
13
14
  const router = express_1.default.Router();
14
15
  router.use((0, use_collection_1.default)('directus_presets'));
15
16
  router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
@@ -91,7 +92,8 @@ router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handl
91
92
  keys = await service.updateMany(req.body.keys, req.body.data);
92
93
  }
93
94
  else {
94
- keys = await service.updateByQuery(req.body.query, req.body.data);
95
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
96
+ keys = await service.updateByQuery(sanitizedQuery, req.body.data);
95
97
  }
96
98
  try {
97
99
  const result = await service.readMany(keys, req.sanitizedQuery);
@@ -135,7 +137,8 @@ router.delete('/', (0, validate_batch_1.validateBatch)('delete'), (0, async_hand
135
137
  await service.deleteMany(req.body.keys);
136
138
  }
137
139
  else {
138
- await service.deleteByQuery(req.body.query);
140
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
141
+ await service.deleteByQuery(sanitizedQuery);
139
142
  }
140
143
  return next();
141
144
  }), respond_1.respond);
@@ -10,6 +10,7 @@ const use_collection_1 = __importDefault(require("../middleware/use-collection")
10
10
  const validate_batch_1 = require("../middleware/validate-batch");
11
11
  const services_1 = require("../services");
12
12
  const async_handler_1 = __importDefault(require("../utils/async-handler"));
13
+ const sanitize_query_1 = require("../utils/sanitize-query");
13
14
  const router = express_1.default.Router();
14
15
  router.use((0, use_collection_1.default)('directus_roles'));
15
16
  router.post('/', (0, async_handler_1.default)(async (req, res, next) => {
@@ -82,7 +83,8 @@ router.patch('/', (0, validate_batch_1.validateBatch)('update'), (0, async_handl
82
83
  keys = await service.updateMany(req.body.keys, req.body.data);
83
84
  }
84
85
  else {
85
- keys = await service.updateByQuery(req.body.query, req.body.data);
86
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
87
+ keys = await service.updateByQuery(sanitizedQuery, req.body.data);
86
88
  }
87
89
  try {
88
90
  const result = await service.readMany(keys, req.sanitizedQuery);
@@ -126,7 +128,8 @@ router.delete('/', (0, validate_batch_1.validateBatch)('delete'), (0, async_hand
126
128
  await service.deleteMany(req.body.keys);
127
129
  }
128
130
  else {
129
- await service.deleteByQuery(req.body.query);
131
+ const sanitizedQuery = (0, sanitize_query_1.sanitizeQuery)(req.body.query, req.accountability);
132
+ await service.deleteByQuery(sanitizedQuery);
130
133
  }
131
134
  return next();
132
135
  }), respond_1.respond);
@@ -0,0 +1,2 @@
1
+ declare const router: import("express-serve-static-core").Router;
2
+ export default router;