directus 9.23.1 → 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 (359) hide show
  1. package/dist/app.js +14 -10
  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 +1 -1
  5. package/dist/auth/drivers/ldap.js +39 -28
  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 +20 -13
  10. package/dist/auth/drivers/openid.d.ts +1 -1
  11. package/dist/auth/drivers/openid.js +21 -14
  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 +57 -14
  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 +14 -15
  21. package/dist/cli/commands/schema/snapshot.js +2 -2
  22. package/dist/cli/utils/create-db-connection.d.ts +1 -1
  23. package/dist/cli/utils/create-db-connection.js +2 -1
  24. package/dist/cli/utils/create-env/index.d.ts +2 -2
  25. package/dist/cli/utils/drivers.d.ts +1 -1
  26. package/dist/constants.d.ts +2 -2
  27. package/dist/constants.js +2 -3
  28. package/dist/controllers/activity.js +1 -2
  29. package/dist/controllers/assets.js +14 -9
  30. package/dist/controllers/auth.js +29 -15
  31. package/dist/controllers/dashboards.js +5 -2
  32. package/dist/controllers/fields.js +4 -4
  33. package/dist/controllers/files.js +10 -5
  34. package/dist/controllers/flows.js +5 -2
  35. package/dist/controllers/folders.js +5 -2
  36. package/dist/controllers/graphql.js +2 -4
  37. package/dist/controllers/items.js +5 -2
  38. package/dist/controllers/not-found.d.ts +1 -1
  39. package/dist/controllers/not-found.js +1 -2
  40. package/dist/controllers/notifications.js +5 -2
  41. package/dist/controllers/operations.js +5 -2
  42. package/dist/controllers/panels.js +5 -2
  43. package/dist/controllers/permissions.js +5 -2
  44. package/dist/controllers/presets.js +5 -2
  45. package/dist/controllers/roles.js +5 -2
  46. package/dist/controllers/shares.js +8 -5
  47. package/dist/controllers/users.js +16 -20
  48. package/dist/controllers/utils.js +6 -11
  49. package/dist/controllers/webhooks.js +5 -2
  50. package/dist/database/helpers/fn/dialects/mssql.d.ts +1 -1
  51. package/dist/database/helpers/fn/dialects/mssql.js +10 -11
  52. package/dist/database/helpers/fn/dialects/mysql.d.ts +1 -1
  53. package/dist/database/helpers/fn/dialects/mysql.js +2 -3
  54. package/dist/database/helpers/fn/dialects/oracle.d.ts +1 -1
  55. package/dist/database/helpers/fn/dialects/oracle.js +10 -11
  56. package/dist/database/helpers/fn/dialects/postgres.d.ts +1 -1
  57. package/dist/database/helpers/fn/dialects/postgres.js +10 -11
  58. package/dist/database/helpers/fn/dialects/sqlite.d.ts +1 -1
  59. package/dist/database/helpers/fn/dialects/sqlite.js +10 -11
  60. package/dist/database/helpers/fn/types.d.ts +5 -5
  61. package/dist/database/helpers/fn/types.js +5 -4
  62. package/dist/database/helpers/geometry/dialects/mssql.d.ts +3 -3
  63. package/dist/database/helpers/geometry/dialects/mysql.d.ts +1 -1
  64. package/dist/database/helpers/geometry/dialects/oracle.d.ts +3 -3
  65. package/dist/database/helpers/geometry/dialects/postgres.d.ts +3 -3
  66. package/dist/database/helpers/geometry/dialects/postgres.js +1 -2
  67. package/dist/database/helpers/geometry/dialects/redshift.d.ts +2 -2
  68. package/dist/database/helpers/geometry/dialects/sqlite.d.ts +1 -1
  69. package/dist/database/helpers/geometry/types.d.ts +2 -2
  70. package/dist/database/helpers/geometry/types.js +1 -2
  71. package/dist/database/helpers/index.d.ts +5 -5
  72. package/dist/database/helpers/schema/dialects/cockroachdb.d.ts +1 -1
  73. package/dist/database/helpers/schema/dialects/mssql.d.ts +1 -1
  74. package/dist/database/helpers/schema/dialects/mysql.d.ts +1 -1
  75. package/dist/database/helpers/schema/dialects/mysql.js +1 -2
  76. package/dist/database/helpers/schema/dialects/oracle.d.ts +2 -2
  77. package/dist/database/helpers/schema/dialects/oracle.js +4 -6
  78. package/dist/database/helpers/schema/types.d.ts +4 -4
  79. package/dist/database/helpers/types.d.ts +1 -1
  80. package/dist/database/helpers/types.js +1 -0
  81. package/dist/database/index.d.ts +1 -1
  82. package/dist/database/index.js +8 -8
  83. package/dist/database/migrations/20201028A-remove-collection-foreign-keys.d.ts +1 -1
  84. package/dist/database/migrations/20201029A-remove-system-relations.d.ts +1 -1
  85. package/dist/database/migrations/20201029B-remove-system-collections.d.ts +1 -1
  86. package/dist/database/migrations/20201029C-remove-system-fields.d.ts +1 -1
  87. package/dist/database/migrations/20201105A-add-cascade-system-relations.d.ts +1 -1
  88. package/dist/database/migrations/20201105B-change-webhook-url-type.d.ts +1 -1
  89. package/dist/database/migrations/20210225A-add-relations-sort-field.d.ts +1 -1
  90. package/dist/database/migrations/20210225A-add-relations-sort-field.js +1 -2
  91. package/dist/database/migrations/20210304A-remove-locked-fields.d.ts +1 -1
  92. package/dist/database/migrations/20210312A-webhooks-collections-text.d.ts +1 -1
  93. package/dist/database/migrations/20210331A-add-refresh-interval.d.ts +1 -1
  94. package/dist/database/migrations/20210415A-make-filesize-nullable.d.ts +1 -1
  95. package/dist/database/migrations/20210416A-add-collections-accountability.d.ts +1 -1
  96. package/dist/database/migrations/20210422A-remove-files-interface.d.ts +1 -1
  97. package/dist/database/migrations/20210506A-rename-interfaces.d.ts +1 -1
  98. package/dist/database/migrations/20210510A-restructure-relations.d.ts +1 -1
  99. package/dist/database/migrations/20210518A-add-foreign-key-constraints.d.ts +1 -1
  100. package/dist/database/migrations/20210518A-add-foreign-key-constraints.js +1 -1
  101. package/dist/database/migrations/20210519A-add-system-fk-triggers.d.ts +1 -1
  102. package/dist/database/migrations/20210519A-add-system-fk-triggers.js +2 -2
  103. package/dist/database/migrations/20210521A-add-collections-icon-color.d.ts +1 -1
  104. package/dist/database/migrations/20210525A-add-insights.d.ts +1 -1
  105. package/dist/database/migrations/20210608A-add-deep-clone-config.d.ts +1 -1
  106. package/dist/database/migrations/20210626A-change-filesize-bigint.d.ts +1 -1
  107. package/dist/database/migrations/20210716A-add-conditions-to-fields.d.ts +1 -1
  108. package/dist/database/migrations/20210721A-add-default-folder.d.ts +1 -1
  109. package/dist/database/migrations/20210802A-replace-groups.d.ts +1 -1
  110. package/dist/database/migrations/20210803A-add-required-to-fields.d.ts +1 -1
  111. package/dist/database/migrations/20210805A-update-groups.d.ts +1 -1
  112. package/dist/database/migrations/20210805B-change-image-metadata-structure.d.ts +1 -1
  113. package/dist/database/migrations/20210811A-add-geometry-config.d.ts +1 -1
  114. package/dist/database/migrations/20210831A-remove-limit-column.d.ts +1 -1
  115. package/dist/database/migrations/20210903A-add-auth-provider.d.ts +1 -1
  116. package/dist/database/migrations/20210907A-webhooks-collections-not-null.d.ts +1 -1
  117. package/dist/database/migrations/20210910A-move-module-setup.d.ts +1 -1
  118. package/dist/database/migrations/20210920A-webhooks-url-not-null.d.ts +1 -1
  119. package/dist/database/migrations/20210924A-add-collection-organization.d.ts +1 -1
  120. package/dist/database/migrations/20210927A-replace-fields-group.d.ts +1 -1
  121. package/dist/database/migrations/20210927B-replace-m2m-interface.d.ts +1 -1
  122. package/dist/database/migrations/20210929A-rename-login-action.d.ts +1 -1
  123. package/dist/database/migrations/20211007A-update-presets.d.ts +1 -1
  124. package/dist/database/migrations/20211007A-update-presets.js +7 -9
  125. package/dist/database/migrations/20211009A-add-auth-data.d.ts +1 -1
  126. package/dist/database/migrations/20211016A-add-webhook-headers.d.ts +1 -1
  127. package/dist/database/migrations/20211103A-set-unique-to-user-token.d.ts +1 -1
  128. package/dist/database/migrations/20211103B-update-special-geometry.d.ts +1 -1
  129. package/dist/database/migrations/20211104A-remove-collections-listing.d.ts +1 -1
  130. package/dist/database/migrations/20211118A-add-notifications.d.ts +1 -1
  131. package/dist/database/migrations/20211211A-add-shares.d.ts +1 -1
  132. package/dist/database/migrations/20211230A-add-project-descriptor.d.ts +1 -1
  133. package/dist/database/migrations/20220303A-remove-default-project-color.d.ts +1 -1
  134. package/dist/database/migrations/20220308A-add-bookmark-icon-and-color.d.ts +1 -1
  135. package/dist/database/migrations/20220314A-add-translation-strings.d.ts +1 -1
  136. package/dist/database/migrations/20220322A-rename-field-typecast-flags.d.ts +1 -1
  137. package/dist/database/migrations/20220323A-add-field-validation.d.ts +1 -1
  138. package/dist/database/migrations/20220325A-fix-typecast-flags.d.ts +1 -1
  139. package/dist/database/migrations/20220325B-add-default-language.d.ts +1 -1
  140. package/dist/database/migrations/20220402A-remove-default-value-panel-icon.d.ts +1 -1
  141. package/dist/database/migrations/20220429A-add-flows.d.ts +1 -1
  142. package/dist/database/migrations/20220429B-add-color-to-insights-icon.d.ts +1 -1
  143. package/dist/database/migrations/20220429C-drop-non-null-from-ip-of-activity.d.ts +1 -1
  144. package/dist/database/migrations/20220429D-drop-non-null-from-sender-of-notifications.d.ts +1 -1
  145. package/dist/database/migrations/20220614A-rename-hook-trigger-to-event.d.ts +1 -1
  146. package/dist/database/migrations/20220801A-update-notifications-timestamp-column.d.ts +1 -1
  147. package/dist/database/migrations/20220802A-add-custom-aspect-ratios.d.ts +1 -1
  148. package/dist/database/migrations/20220826A-add-origin-to-accountability.d.ts +1 -1
  149. package/dist/database/migrations/run.d.ts +1 -1
  150. package/dist/database/run-ast.d.ts +3 -3
  151. package/dist/database/run-ast.js +17 -26
  152. package/dist/database/seeds/run.d.ts +1 -1
  153. package/dist/database/seeds/run.js +1 -2
  154. package/dist/database/system-data/app-access-permissions/index.d.ts +1 -1
  155. package/dist/database/system-data/collections/index.d.ts +1 -1
  156. package/dist/database/system-data/fields/collections.yaml +2 -0
  157. package/dist/database/system-data/fields/index.d.ts +1 -1
  158. package/dist/database/system-data/fields/index.js +1 -2
  159. package/dist/database/system-data/fields/settings.yaml +4 -0
  160. package/dist/database/system-data/relations/index.d.ts +1 -1
  161. package/dist/emitter.d.ts +1 -1
  162. package/dist/emitter.js +3 -0
  163. package/dist/env.js +10 -2
  164. package/dist/exceptions/database/dialects/mssql.d.ts +1 -1
  165. package/dist/exceptions/database/dialects/mssql.js +5 -6
  166. package/dist/exceptions/database/dialects/mysql.d.ts +1 -1
  167. package/dist/exceptions/database/dialects/mysql.js +19 -25
  168. package/dist/exceptions/database/dialects/oracle.d.ts +1 -1
  169. package/dist/exceptions/database/dialects/postgres.d.ts +1 -1
  170. package/dist/exceptions/database/dialects/sqlite.d.ts +1 -1
  171. package/dist/exceptions/database/translate.d.ts +1 -1
  172. package/dist/exceptions/database/value-out-of-range.js +1 -1
  173. package/dist/exceptions/range-not-satisfiable.js +2 -3
  174. package/dist/extensions.d.ts +1 -1
  175. package/dist/extensions.js +33 -23
  176. package/dist/flows.js +42 -25
  177. package/dist/logger.d.ts +1 -1
  178. package/dist/logger.js +19 -3
  179. package/dist/messenger.js +8 -6
  180. package/dist/middleware/authenticate.d.ts +1 -1
  181. package/dist/middleware/authenticate.js +12 -5
  182. package/dist/middleware/cache.d.ts +1 -1
  183. package/dist/middleware/cache.js +5 -5
  184. package/dist/middleware/check-ip.d.ts +1 -1
  185. package/dist/middleware/check-ip.js +1 -1
  186. package/dist/middleware/collection-exists.d.ts +1 -1
  187. package/dist/middleware/collection-exists.js +2 -2
  188. package/dist/middleware/cors.d.ts +1 -1
  189. package/dist/middleware/error-handler.d.ts +1 -1
  190. package/dist/middleware/error-handler.js +9 -10
  191. package/dist/middleware/extract-token.d.ts +1 -1
  192. package/dist/middleware/get-permissions.d.ts +1 -1
  193. package/dist/middleware/graphql.d.ts +1 -1
  194. package/dist/middleware/graphql.js +3 -3
  195. package/dist/middleware/rate-limiter-global.d.ts +5 -0
  196. package/dist/middleware/rate-limiter-global.js +48 -0
  197. package/dist/middleware/{rate-limiter.d.ts → rate-limiter-ip.d.ts} +2 -2
  198. package/dist/middleware/{rate-limiter.js → rate-limiter-ip.js} +3 -3
  199. package/dist/middleware/respond.d.ts +1 -1
  200. package/dist/middleware/respond.js +6 -7
  201. package/dist/middleware/sanitize-query.d.ts +1 -1
  202. package/dist/middleware/schema.d.ts +1 -1
  203. package/dist/middleware/use-collection.d.ts +1 -1
  204. package/dist/operations/condition/index.d.ts +1 -1
  205. package/dist/operations/exec/index.js +14 -3
  206. package/dist/operations/item-create/index.js +1 -2
  207. package/dist/operations/item-delete/index.d.ts +1 -1
  208. package/dist/operations/item-read/index.d.ts +1 -1
  209. package/dist/operations/item-update/index.d.ts +1 -1
  210. package/dist/operations/item-update/index.js +1 -2
  211. package/dist/operations/notification/index.js +1 -2
  212. package/dist/operations/request/index.js +19 -19
  213. package/dist/operations/trigger/index.js +2 -3
  214. package/dist/rate-limiter.d.ts +1 -1
  215. package/dist/rate-limiter.js +8 -8
  216. package/dist/server.js +8 -9
  217. package/dist/services/activity.d.ts +1 -1
  218. package/dist/services/activity.js +7 -6
  219. package/dist/services/assets.d.ts +3 -3
  220. package/dist/services/assets.js +33 -35
  221. package/dist/services/authentication.d.ts +2 -2
  222. package/dist/services/authentication.js +13 -10
  223. package/dist/services/authorization.d.ts +3 -3
  224. package/dist/services/authorization.js +27 -31
  225. package/dist/services/collections.d.ts +5 -5
  226. package/dist/services/collections.js +52 -48
  227. package/dist/services/dashboards.d.ts +1 -1
  228. package/dist/services/fields.d.ts +5 -5
  229. package/dist/services/fields.js +48 -48
  230. package/dist/services/files.d.ts +1 -2
  231. package/dist/services/files.js +27 -21
  232. package/dist/services/flows.d.ts +2 -2
  233. package/dist/services/folders.d.ts +1 -1
  234. package/dist/services/graphql/index.d.ts +4 -4
  235. package/dist/services/graphql/index.js +172 -167
  236. package/dist/services/graphql/utils/add-path-to-validation-error.js +1 -2
  237. package/dist/services/graphql/utils/process-error.d.ts +2 -2
  238. package/dist/services/graphql/utils/process-error.js +11 -4
  239. package/dist/services/import-export.d.ts +3 -3
  240. package/dist/services/import-export.js +25 -22
  241. package/dist/services/items.d.ts +3 -3
  242. package/dist/services/items.js +42 -36
  243. package/dist/services/mail/index.d.ts +4 -4
  244. package/dist/services/mail/index.js +9 -5
  245. package/dist/services/meta.d.ts +3 -3
  246. package/dist/services/meta.js +10 -9
  247. package/dist/services/notifications.d.ts +3 -3
  248. package/dist/services/notifications.js +7 -6
  249. package/dist/services/operations.d.ts +2 -2
  250. package/dist/services/panels.d.ts +1 -1
  251. package/dist/services/payload.d.ts +3 -3
  252. package/dist/services/payload.js +124 -122
  253. package/dist/services/permissions.d.ts +3 -3
  254. package/dist/services/permissions.js +11 -11
  255. package/dist/services/presets.d.ts +1 -1
  256. package/dist/services/relations.d.ts +6 -6
  257. package/dist/services/relations.js +45 -43
  258. package/dist/services/revisions.d.ts +1 -1
  259. package/dist/services/roles.d.ts +2 -2
  260. package/dist/services/roles.js +2 -2
  261. package/dist/services/schema.d.ts +3 -3
  262. package/dist/services/schema.js +9 -11
  263. package/dist/services/server.d.ts +3 -3
  264. package/dist/services/server.js +69 -13
  265. package/dist/services/settings.d.ts +1 -1
  266. package/dist/services/shares.d.ts +1 -1
  267. package/dist/services/shares.js +5 -6
  268. package/dist/services/specifications.d.ts +4 -4
  269. package/dist/services/specifications.js +132 -116
  270. package/dist/services/tfa.d.ts +2 -2
  271. package/dist/services/tfa.js +7 -5
  272. package/dist/services/users.d.ts +3 -3
  273. package/dist/services/users.js +17 -17
  274. package/dist/services/utils.d.ts +3 -3
  275. package/dist/services/utils.js +10 -8
  276. package/dist/services/webhooks.d.ts +2 -2
  277. package/dist/services/webhooks.js +2 -1
  278. package/dist/types/assets.d.ts +1 -1
  279. package/dist/types/ast.d.ts +1 -1
  280. package/dist/types/auth.d.ts +2 -2
  281. package/dist/types/collection.d.ts +2 -2
  282. package/dist/types/events.d.ts +2 -2
  283. package/dist/types/graphql.d.ts +2 -2
  284. package/dist/types/items.d.ts +3 -3
  285. package/dist/types/services.d.ts +5 -5
  286. package/dist/types/snapshot.d.ts +4 -4
  287. package/dist/utils/apply-diff.d.ts +3 -3
  288. package/dist/utils/apply-diff.js +25 -28
  289. package/dist/utils/apply-query.d.ts +3 -3
  290. package/dist/utils/apply-query.js +8 -11
  291. package/dist/utils/apply-snapshot.d.ts +3 -3
  292. package/dist/utils/apply-snapshot.js +5 -6
  293. package/dist/utils/construct-flow-tree.d.ts +1 -1
  294. package/dist/utils/construct-flow-tree.js +2 -2
  295. package/dist/utils/filter-items.d.ts +1 -1
  296. package/dist/utils/get-accountability-for-role.d.ts +2 -2
  297. package/dist/utils/get-accountability-for-role.js +1 -1
  298. package/dist/utils/get-ast-from-query.d.ts +3 -3
  299. package/dist/utils/get-ast-from-query.js +22 -28
  300. package/dist/utils/get-cache-headers.d.ts +1 -1
  301. package/dist/utils/get-cache-headers.js +3 -4
  302. package/dist/utils/get-cache-key.d.ts +1 -1
  303. package/dist/utils/get-cache-key.js +2 -3
  304. package/dist/utils/get-collection-from-alias.d.ts +1 -1
  305. package/dist/utils/get-column-path.d.ts +2 -2
  306. package/dist/utils/get-column-path.js +3 -4
  307. package/dist/utils/get-column.d.ts +4 -4
  308. package/dist/utils/get-column.js +4 -5
  309. package/dist/utils/get-default-value.d.ts +2 -2
  310. package/dist/utils/get-default-value.js +1 -2
  311. package/dist/utils/get-graphql-query-and-variables.d.ts +1 -1
  312. package/dist/utils/get-graphql-query-and-variables.js +1 -2
  313. package/dist/utils/get-graphql-type.d.ts +2 -2
  314. package/dist/utils/get-graphql-type.js +1 -1
  315. package/dist/utils/get-ip-from-req.d.ts +1 -1
  316. package/dist/utils/get-local-type.d.ts +1 -1
  317. package/dist/utils/get-local-type.js +3 -3
  318. package/dist/utils/get-milliseconds.js +1 -2
  319. package/dist/utils/get-permissions.d.ts +1 -1
  320. package/dist/utils/get-permissions.js +1 -1
  321. package/dist/utils/get-relation-info.d.ts +1 -1
  322. package/dist/utils/get-relation-info.js +3 -5
  323. package/dist/utils/get-relation-type.d.ts +1 -1
  324. package/dist/utils/get-relation-type.js +3 -4
  325. package/dist/utils/get-schema.d.ts +2 -2
  326. package/dist/utils/get-schema.js +19 -21
  327. package/dist/utils/get-snapshot-diff.js +2 -3
  328. package/dist/utils/get-snapshot.d.ts +3 -3
  329. package/dist/utils/get-snapshot.js +6 -8
  330. package/dist/utils/is-directus-jwt.js +1 -1
  331. package/dist/utils/job-queue.js +2 -0
  332. package/dist/utils/jwt.d.ts +1 -1
  333. package/dist/utils/merge-permissions-for-share.d.ts +1 -1
  334. package/dist/utils/merge-permissions-for-share.js +3 -4
  335. package/dist/utils/merge-permissions.d.ts +3 -3
  336. package/dist/utils/redact-header-cookies.d.ts +1 -0
  337. package/dist/utils/redact-header-cookies.js +11 -0
  338. package/dist/utils/redact-header-cookies.test.d.ts +1 -0
  339. package/dist/utils/reduce-schema.d.ts +1 -1
  340. package/dist/utils/reduce-schema.js +12 -12
  341. package/dist/utils/sanitize-query.d.ts +1 -1
  342. package/dist/utils/sanitize-query.js +1 -1
  343. package/dist/utils/sanitize-schema.d.ts +2 -2
  344. package/dist/utils/should-skip-cache.d.ts +7 -0
  345. package/dist/utils/should-skip-cache.js +21 -0
  346. package/dist/utils/should-skip-cache.test.d.ts +1 -0
  347. package/dist/utils/transformations.d.ts +1 -1
  348. package/dist/utils/transformations.js +2 -4
  349. package/dist/utils/url.js +7 -2
  350. package/dist/utils/user-name.d.ts +1 -1
  351. package/dist/utils/validate-diff.js +7 -8
  352. package/dist/utils/validate-keys.d.ts +2 -2
  353. package/dist/utils/validate-keys.js +1 -1
  354. package/dist/utils/validate-query.d.ts +1 -1
  355. package/dist/utils/validate-query.js +2 -2
  356. package/dist/webhooks.js +1 -1
  357. package/package.json +36 -37
  358. package/dist/utils/with-timeout.d.ts +0 -1
  359. package/dist/utils/with-timeout.js +0 -16
@@ -3,18 +3,17 @@
3
3
  * Generate an AST based on a given collection and query
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const constants_1 = require("@directus/shared/constants");
6
7
  const lodash_1 = require("lodash");
7
8
  const get_relation_type_1 = require("../utils/get-relation-type");
8
- const constants_1 = require("@directus/shared/constants");
9
9
  async function getASTFromQuery(collection, query, schema, options) {
10
- var _a, _b, _c, _d, _e;
11
10
  query = (0, lodash_1.cloneDeep)(query);
12
- const accountability = options === null || options === void 0 ? void 0 : options.accountability;
13
- const action = (options === null || options === void 0 ? void 0 : options.action) || 'read';
11
+ const accountability = options?.accountability;
12
+ const action = options?.action || 'read';
14
13
  const permissions = accountability && accountability.admin !== true
15
- ? (_b = (_a = accountability === null || accountability === void 0 ? void 0 : accountability.permissions) === null || _a === void 0 ? void 0 : _a.filter((permission) => {
14
+ ? accountability?.permissions?.filter((permission) => {
16
15
  return permission.action === action;
17
- })) !== null && _b !== void 0 ? _b : []
16
+ }) ?? []
18
17
  : null;
19
18
  const ast = {
20
19
  type: 'root',
@@ -49,24 +48,23 @@ async function getASTFromQuery(collection, query, schema, options) {
49
48
  // We'll default to the primary key for the standard sort output
50
49
  let sortField = schema.collections[collection].primary;
51
50
  // If a custom manual sort field is configured, use that
52
- if ((_c = schema.collections[collection]) === null || _c === void 0 ? void 0 : _c.sortField) {
51
+ if (schema.collections[collection]?.sortField) {
53
52
  sortField = schema.collections[collection].sortField;
54
53
  }
55
54
  // When group by is used, default to the first column provided in the group by clause
56
- if ((_d = query.group) === null || _d === void 0 ? void 0 : _d[0]) {
55
+ if (query.group?.[0]) {
57
56
  sortField = query.group[0];
58
57
  }
59
58
  query.sort = [sortField];
60
59
  }
61
60
  // When no group by is supplied, but an aggregate function is used, only a single row will be
62
61
  // returned. In those cases, we'll ignore the sort field altogether
63
- if (query.aggregate && Object.keys(query.aggregate).length && !((_e = query.group) === null || _e === void 0 ? void 0 : _e[0])) {
62
+ if (query.aggregate && Object.keys(query.aggregate).length && !query.group?.[0]) {
64
63
  delete query.sort;
65
64
  }
66
65
  ast.children = await parseFields(collection, fields, deep);
67
66
  return ast;
68
67
  async function parseFields(parentCollection, fields, deep) {
69
- var _a, _b;
70
68
  if (!fields)
71
69
  return [];
72
70
  fields = await convertWildcards(parentCollection, fields);
@@ -85,7 +83,7 @@ async function getASTFromQuery(collection, query, schema, options) {
85
83
  const isRelational = name.includes('.') ||
86
84
  // We'll always treat top level o2m fields as a related item. This is an alias field, otherwise it won't return
87
85
  // anything
88
- !!schema.relations.find((relation) => { var _a; return relation.related_collection === parentCollection && ((_a = relation.meta) === null || _a === void 0 ? void 0 : _a.one_field) === name; });
86
+ !!schema.relations.find((relation) => relation.related_collection === parentCollection && relation.meta?.one_field === name);
89
87
  if (isRelational) {
90
88
  // field is relational
91
89
  const parts = fieldKey.split('.');
@@ -123,7 +121,7 @@ async function getASTFromQuery(collection, query, schema, options) {
123
121
  const columnName = fieldKey.match(constants_1.REGEX_BETWEEN_PARENS)[1];
124
122
  const foundField = schema.collections[parentCollection].fields[columnName];
125
123
  if (foundField && foundField.type === 'alias') {
126
- const foundRelation = schema.relations.find((relation) => { var _a; return relation.related_collection === parentCollection && ((_a = relation.meta) === null || _a === void 0 ? void 0 : _a.one_field) === columnName; });
124
+ const foundRelation = schema.relations.find((relation) => relation.related_collection === parentCollection && relation.meta?.one_field === columnName);
127
125
  if (foundRelation) {
128
126
  children.push({
129
127
  type: 'functionField',
@@ -173,8 +171,8 @@ async function getASTFromQuery(collection, query, schema, options) {
173
171
  relation: relation,
174
172
  };
175
173
  for (const relatedCollection of allowedCollections) {
176
- child.children[relatedCollection] = await parseFields(relatedCollection, Array.isArray(nestedFields) ? nestedFields : nestedFields[relatedCollection] || ['*'], deep === null || deep === void 0 ? void 0 : deep[`${fieldKey}:${relatedCollection}`]);
177
- child.query[relatedCollection] = getDeepQuery((deep === null || deep === void 0 ? void 0 : deep[`${fieldKey}:${relatedCollection}`]) || {});
174
+ child.children[relatedCollection] = await parseFields(relatedCollection, Array.isArray(nestedFields) ? nestedFields : nestedFields[relatedCollection] || [], deep?.[`${fieldKey}:${relatedCollection}`]);
175
+ child.query[relatedCollection] = getDeepQuery(deep?.[`${fieldKey}:${relatedCollection}`] || {});
178
176
  child.relatedKey[relatedCollection] = schema.collections[relatedCollection].primary;
179
177
  }
180
178
  }
@@ -183,7 +181,7 @@ async function getASTFromQuery(collection, query, schema, options) {
183
181
  continue;
184
182
  }
185
183
  // update query alias for children parseFields
186
- const deepAlias = (_a = getDeepQuery((deep === null || deep === void 0 ? void 0 : deep[fieldKey]) || {})) === null || _a === void 0 ? void 0 : _a.alias;
184
+ const deepAlias = getDeepQuery(deep?.[fieldKey] || {})?.alias;
187
185
  if (!(0, lodash_1.isEmpty)(deepAlias))
188
186
  query.alias = deepAlias;
189
187
  child = {
@@ -193,11 +191,11 @@ async function getASTFromQuery(collection, query, schema, options) {
193
191
  parentKey: schema.collections[parentCollection].primary,
194
192
  relatedKey: schema.collections[relatedCollection].primary,
195
193
  relation: relation,
196
- query: getDeepQuery((deep === null || deep === void 0 ? void 0 : deep[fieldKey]) || {}),
197
- children: await parseFields(relatedCollection, nestedFields, (deep === null || deep === void 0 ? void 0 : deep[fieldKey]) || {}),
194
+ query: getDeepQuery(deep?.[fieldKey] || {}),
195
+ children: await parseFields(relatedCollection, nestedFields, deep?.[fieldKey] || {}),
198
196
  };
199
197
  if (relationType === 'o2m' && !child.query.sort) {
200
- child.query.sort = [((_b = relation.meta) === null || _b === void 0 ? void 0 : _b.sort_field) || schema.collections[relation.collection].primary];
198
+ child.query.sort = [relation.meta?.sort_field || schema.collections[relation.collection].primary];
201
199
  }
202
200
  }
203
201
  if (child) {
@@ -214,12 +212,11 @@ async function getASTFromQuery(collection, query, schema, options) {
214
212
  });
215
213
  }
216
214
  async function convertWildcards(parentCollection, fields) {
217
- var _a, _b, _c;
218
215
  fields = (0, lodash_1.cloneDeep)(fields);
219
216
  const fieldsInCollection = Object.entries(schema.collections[parentCollection].fields).map(([name]) => name);
220
217
  let allowedFields = fieldsInCollection;
221
218
  if (permissions) {
222
- const permittedFields = (_a = permissions.find((permission) => parentCollection === permission.collection)) === null || _a === void 0 ? void 0 : _a.fields;
219
+ const permittedFields = permissions.find((permission) => parentCollection === permission.collection)?.fields;
223
220
  if (permittedFields !== undefined)
224
221
  allowedFields = permittedFields;
225
222
  }
@@ -233,7 +230,7 @@ async function getASTFromQuery(collection, query, schema, options) {
233
230
  if (fieldKey.includes('*') === false)
234
231
  continue;
235
232
  if (fieldKey === '*') {
236
- const aliases = Object.keys((_b = query.alias) !== null && _b !== void 0 ? _b : {});
233
+ const aliases = Object.keys(query.alias ?? {});
237
234
  // Set to all fields in collection
238
235
  if (allowedFields.includes('*')) {
239
236
  fields.splice(index, 1, ...fieldsInCollection, ...aliases);
@@ -254,13 +251,12 @@ async function getASTFromQuery(collection, query, schema, options) {
254
251
  ? schema.relations
255
252
  .filter((relation) => relation.collection === parentCollection || relation.related_collection === parentCollection)
256
253
  .map((relation) => {
257
- var _a;
258
254
  const isMany = relation.collection === parentCollection;
259
- return isMany ? relation.field : (_a = relation.meta) === null || _a === void 0 ? void 0 : _a.one_field;
255
+ return isMany ? relation.field : relation.meta?.one_field;
260
256
  })
261
257
  : allowedFields.filter((fieldKey) => !!getRelation(parentCollection, fieldKey));
262
258
  const nonRelationalFields = allowedFields.filter((fieldKey) => relationalFields.includes(fieldKey) === false);
263
- const aliasFields = Object.keys((_c = query.alias) !== null && _c !== void 0 ? _c : {}).map((fieldKey) => {
259
+ const aliasFields = Object.keys(query.alias ?? {}).map((fieldKey) => {
264
260
  const name = query.alias[fieldKey];
265
261
  if (relationalFields.includes(name)) {
266
262
  return `${fieldKey}.${parts.slice(1).join('.')}`;
@@ -280,21 +276,19 @@ async function getASTFromQuery(collection, query, schema, options) {
280
276
  }
281
277
  function getRelation(collection, field) {
282
278
  const relation = schema.relations.find((relation) => {
283
- var _a;
284
279
  return ((relation.collection === collection && relation.field === field) ||
285
- (relation.related_collection === collection && ((_a = relation.meta) === null || _a === void 0 ? void 0 : _a.one_field) === field));
280
+ (relation.related_collection === collection && relation.meta?.one_field === field));
286
281
  });
287
282
  return relation;
288
283
  }
289
284
  function getRelatedCollection(collection, field) {
290
- var _a;
291
285
  const relation = getRelation(collection, field);
292
286
  if (!relation)
293
287
  return null;
294
288
  if (relation.collection === collection && relation.field === field) {
295
289
  return relation.related_collection || null;
296
290
  }
297
- if (relation.related_collection === collection && ((_a = relation.meta) === null || _a === void 0 ? void 0 : _a.one_field) === field) {
291
+ if (relation.related_collection === collection && relation.meta?.one_field === field) {
298
292
  return relation.collection || null;
299
293
  }
300
294
  return null;
@@ -1,4 +1,4 @@
1
- import { Request } from 'express';
1
+ import type { Request } from 'express';
2
2
  /**
3
3
  * Returns the Cache-Control header for the current request
4
4
  *
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getCacheControlHeader = void 0;
7
7
  const env_1 = __importDefault(require("../env"));
8
+ const should_skip_cache_1 = require("./should-skip-cache");
8
9
  /**
9
10
  * Returns the Cache-Control header for the current request
10
11
  *
@@ -14,10 +15,8 @@ const env_1 = __importDefault(require("../env"));
14
15
  * @param personalized Whether requests depend on the authentication status of users
15
16
  */
16
17
  function getCacheControlHeader(req, ttl, globalCacheSettings, personalized) {
17
- var _a, _b, _c;
18
- const noCacheRequested = ((_a = req.headers['cache-control']) === null || _a === void 0 ? void 0 : _a.includes('no-store')) || ((_b = req.headers['Cache-Control']) === null || _b === void 0 ? void 0 : _b.includes('no-store'));
19
18
  // When the user explicitly asked to skip the cache
20
- if (noCacheRequested)
19
+ if ((0, should_skip_cache_1.shouldSkipCache)(req))
21
20
  return 'no-store';
22
21
  // When the resource / current request shouldn't be cached
23
22
  if (ttl === undefined || ttl < 0)
@@ -29,7 +28,7 @@ function getCacheControlHeader(req, ttl, globalCacheSettings, personalized) {
29
28
  // When caching depends on the authentication status of the users
30
29
  if (personalized) {
31
30
  // Allow response to be stored in shared cache (public) or local cache only (private)
32
- const access = !!((_c = req.accountability) === null || _c === void 0 ? void 0 : _c.role) === false ? 'public' : 'private';
31
+ const access = !!req.accountability?.role === false ? 'public' : 'private';
33
32
  headerValues.push(access);
34
33
  }
35
34
  // Cache control header uses seconds for everything
@@ -1,2 +1,2 @@
1
- import { Request } from 'express';
1
+ import type { Request } from 'express';
2
2
  export declare function getCacheKey(req: Request): string;
@@ -8,11 +8,10 @@ const object_hash_1 = __importDefault(require("object-hash"));
8
8
  const url_1 = __importDefault(require("url"));
9
9
  const get_graphql_query_and_variables_1 = require("./get-graphql-query-and-variables");
10
10
  function getCacheKey(req) {
11
- var _a;
12
11
  const path = url_1.default.parse(req.originalUrl).pathname;
13
- const isGraphQl = path === null || path === void 0 ? void 0 : path.startsWith('/graphql');
12
+ const isGraphQl = path?.startsWith('/graphql');
14
13
  const info = {
15
- user: ((_a = req.accountability) === null || _a === void 0 ? void 0 : _a.user) || null,
14
+ user: req.accountability?.user || null,
16
15
  path,
17
16
  query: isGraphQl ? (0, get_graphql_query_and_variables_1.getGraphqlQueryAndVariables)(req) : req.sanitizedQuery,
18
17
  };
@@ -1,4 +1,4 @@
1
- import { AliasMap } from './get-column-path';
1
+ import type { AliasMap } from './get-column-path';
2
2
  /**
3
3
  * Extract the collection of an alias within an aliasMap
4
4
  * For example: 'ljnsv.name' -> 'authors'
@@ -1,4 +1,4 @@
1
- import { Relation, SchemaOverview } from '@directus/shared/types';
1
+ import type { Relation, SchemaOverview } from '@directus/shared/types';
2
2
  export type AliasMap = {
3
3
  [key: string]: {
4
4
  alias: string;
@@ -15,7 +15,7 @@ export type ColPathProps = {
15
15
  export type ColPathResult = {
16
16
  columnPath: string;
17
17
  targetCollection: string;
18
- addNestedPkField?: string;
18
+ addNestedPkField: string | undefined;
19
19
  };
20
20
  /**
21
21
  * Converts a Directus field list path to the correct SQL names based on the constructed alias map.
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getColumnPath = void 0;
4
- const get_relation_info_1 = require("./get-relation-info");
5
4
  const exceptions_1 = require("../exceptions");
5
+ const get_relation_info_1 = require("./get-relation-info");
6
6
  /**
7
7
  * Converts a Directus field list path to the correct SQL names based on the constructed alias map.
8
8
  * For example: ['author', 'role', 'name'] -> 'ljnsv.name'
@@ -12,7 +12,6 @@ const exceptions_1 = require("../exceptions");
12
12
  function getColumnPath({ path, collection, aliasMap, relations, schema }) {
13
13
  return followRelation(path);
14
14
  function followRelation(pathParts, parentCollection = collection, parentFields, addNestedPkField) {
15
- var _a, _b, _c, _d;
16
15
  /**
17
16
  * For A2M fields, the path can contain an optional collection scope <field>:<scope>
18
17
  */
@@ -21,7 +20,7 @@ function getColumnPath({ path, collection, aliasMap, relations, schema }) {
21
20
  if (!relation) {
22
21
  throw new exceptions_1.InvalidQueryException(`"${parentCollection}.${pathRoot}" is not a relational field`);
23
22
  }
24
- const alias = parentFields ? (_a = aliasMap[`${parentFields}.${pathParts[0]}`]) === null || _a === void 0 ? void 0 : _a.alias : (_b = aliasMap[pathParts[0]]) === null || _b === void 0 ? void 0 : _b.alias;
23
+ const alias = parentFields ? aliasMap[`${parentFields}.${pathParts[0]}`]?.alias : aliasMap[pathParts[0]]?.alias;
25
24
  const remainingParts = pathParts.slice(1);
26
25
  let parent;
27
26
  if (relationType === 'a2o') {
@@ -38,7 +37,7 @@ function getColumnPath({ path, collection, aliasMap, relations, schema }) {
38
37
  parent = relation.collection;
39
38
  }
40
39
  // Top level alias field
41
- if (schema && !(((_c = remainingParts[0]) !== null && _c !== void 0 ? _c : parent).includes('(') && ((_d = remainingParts[0]) !== null && _d !== void 0 ? _d : parent).includes(')'))) {
40
+ if (schema && !((remainingParts[0] ?? parent).includes('(') && (remainingParts[0] ?? parent).includes(')'))) {
42
41
  if (remainingParts.length === 0) {
43
42
  remainingParts.push(schema.collections[parent].primary);
44
43
  addNestedPkField = schema.collections[parent].primary;
@@ -1,8 +1,8 @@
1
- import { Query, SchemaOverview } from '@directus/shared/types';
2
- import { Knex } from 'knex';
1
+ import type { Query, SchemaOverview } from '@directus/shared/types';
2
+ import type { Knex } from 'knex';
3
3
  type GetColumnOptions = {
4
- query?: Query;
5
- originalCollectionName?: string;
4
+ query?: Query | undefined;
5
+ originalCollectionName?: string | undefined;
6
6
  };
7
7
  /**
8
8
  * Return column prefixed by table. If column includes functions (like `year(date_created)`), the
@@ -19,22 +19,21 @@ const apply_function_to_column_name_1 = require("./apply-function-to-column-name
19
19
  * @returns Knex raw instance
20
20
  */
21
21
  function getColumn(knex, table, column, alias = (0, apply_function_to_column_name_1.applyFunctionToColumnName)(column), schema, options) {
22
- var _a, _b, _c, _d;
23
22
  const fn = (0, helpers_1.getFunctions)(knex, schema);
24
23
  if (column.includes('(') && column.includes(')')) {
25
24
  const functionName = column.split('(')[0];
26
25
  const columnName = column.match(constants_1.REGEX_BETWEEN_PARENS)[1];
27
26
  if (functionName in fn) {
28
- const collectionName = (options === null || options === void 0 ? void 0 : options.originalCollectionName) || table;
29
- const type = (_d = (_c = (_b = (_a = schema === null || schema === void 0 ? void 0 : schema.collections[collectionName]) === null || _a === void 0 ? void 0 : _a.fields) === null || _b === void 0 ? void 0 : _b[columnName]) === null || _c === void 0 ? void 0 : _c.type) !== null && _d !== void 0 ? _d : 'unknown';
27
+ const collectionName = options?.originalCollectionName || table;
28
+ const type = schema?.collections[collectionName]?.fields?.[columnName]?.type ?? 'unknown';
30
29
  const allowedFunctions = (0, utils_1.getFunctionsForType)(type);
31
30
  if (allowedFunctions.includes(functionName) === false) {
32
31
  throw new exceptions_1.InvalidQueryException(`Invalid function specified "${functionName}"`);
33
32
  }
34
33
  const result = fn[functionName](table, columnName, {
35
34
  type,
36
- query: options === null || options === void 0 ? void 0 : options.query,
37
- originalCollectionName: options === null || options === void 0 ? void 0 : options.originalCollectionName,
35
+ query: options?.query,
36
+ originalCollectionName: options?.originalCollectionName,
38
37
  });
39
38
  if (alias) {
40
39
  return knex.raw(result + ' AS ??', [alias]);
@@ -1,3 +1,3 @@
1
- import { SchemaOverview } from '@directus/schema/types/overview';
2
- import { Column } from 'knex-schema-inspector/dist/types/column';
1
+ import type { SchemaOverview } from '@directus/schema/types/overview';
2
+ import type { Column } from 'knex-schema-inspector/dist/types/column';
3
3
  export default function getDefaultValue(column: SchemaOverview[string]['columns'][string] | Column): string | boolean | number | Record<string, any> | any[] | null;
@@ -8,9 +8,8 @@ const env_1 = __importDefault(require("../env"));
8
8
  const logger_1 = __importDefault(require("../logger"));
9
9
  const get_local_type_1 = __importDefault(require("./get-local-type"));
10
10
  function getDefaultValue(column) {
11
- var _a;
12
11
  const type = (0, get_local_type_1.default)(column);
13
- const defaultValue = (_a = column.default_value) !== null && _a !== void 0 ? _a : null;
12
+ const defaultValue = column.default_value ?? null;
14
13
  if (defaultValue === null)
15
14
  return null;
16
15
  if (defaultValue === '0000-00-00 00:00:00')
@@ -1,2 +1,2 @@
1
- import { Request } from 'express';
1
+ import type { Request } from 'express';
2
2
  export declare function getGraphqlQueryAndVariables(req: Request): Pick<any, "query" | "variables">;
@@ -3,8 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getGraphqlQueryAndVariables = void 0;
4
4
  const lodash_1 = require("lodash");
5
5
  function getGraphqlQueryAndVariables(req) {
6
- var _a;
7
- const isGet = ((_a = req.method) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'get';
6
+ const isGet = req.method?.toLowerCase() === 'get';
8
7
  return (0, lodash_1.pick)(isGet ? req.query : req.body, ['query', 'variables']);
9
8
  }
10
9
  exports.getGraphqlQueryAndVariables = getGraphqlQueryAndVariables;
@@ -1,3 +1,3 @@
1
- import { GraphQLScalarType, GraphQLList, GraphQLType } from 'graphql';
2
- import { Type } from '@directus/shared/types';
1
+ import type { Type } from '@directus/shared/types';
2
+ import { GraphQLList, GraphQLScalarType, GraphQLType } from 'graphql';
3
3
  export declare function getGraphQLType(localType: Type | 'alias' | 'unknown', special: string[]): GraphQLScalarType | GraphQLList<GraphQLType>;
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getGraphQLType = void 0;
4
4
  const graphql_1 = require("graphql");
5
5
  const graphql_compose_1 = require("graphql-compose");
6
+ const bigint_1 = require("../services/graphql/types/bigint");
6
7
  const date_1 = require("../services/graphql/types/date");
7
8
  const geojson_1 = require("../services/graphql/types/geojson");
8
9
  const hash_1 = require("../services/graphql/types/hash");
9
- const bigint_1 = require("../services/graphql/types/bigint");
10
10
  function getGraphQLType(localType, special) {
11
11
  if (special.includes('conceal')) {
12
12
  return hash_1.GraphQLHash;
@@ -1,2 +1,2 @@
1
- import { Request } from 'express';
1
+ import type { Request } from 'express';
2
2
  export declare function getIPFromReq(req: Request): string;
@@ -1,4 +1,4 @@
1
- import { FieldMeta, Type } from '@directus/shared/types';
1
+ import type { FieldMeta, Type } from '@directus/shared/types';
2
2
  export default function getLocalType(column?: {
3
3
  data_type: string;
4
4
  numeric_precision?: null | number;
@@ -100,7 +100,7 @@ function getLocalType(column, field) {
100
100
  return 'alias';
101
101
  const dataType = column.data_type.toLowerCase();
102
102
  const type = localTypeMap[dataType.split('(')[0]];
103
- const special = field === null || field === void 0 ? void 0 : field.special;
103
+ const special = field?.special;
104
104
  if (special) {
105
105
  if (special.includes('cast-json'))
106
106
  return 'json';
@@ -114,7 +114,7 @@ function getLocalType(column, field) {
114
114
  return 'timestamp';
115
115
  if (special.includes('cast-datetime'))
116
116
  return 'dateTime';
117
- if (type === null || type === void 0 ? void 0 : type.startsWith('geometry')) {
117
+ if (type?.startsWith('geometry')) {
118
118
  return special[0] || 'geometry';
119
119
  }
120
120
  }
@@ -126,6 +126,6 @@ function getLocalType(column, field) {
126
126
  if (column.data_type === 'nvarchar' && column.max_length === -1) {
127
127
  return 'text';
128
128
  }
129
- return type !== null && type !== void 0 ? type : 'unknown';
129
+ return type ?? 'unknown';
130
130
  }
131
131
  exports.default = getLocalType;
@@ -6,10 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getMilliseconds = void 0;
7
7
  const ms_1 = __importDefault(require("ms"));
8
8
  function getMilliseconds(value, fallback = undefined) {
9
- var _a;
10
9
  if ((typeof value !== 'string' && typeof value !== 'number') || value === '') {
11
10
  return fallback;
12
11
  }
13
- return (_a = (0, ms_1.default)(String(value))) !== null && _a !== void 0 ? _a : fallback;
12
+ return (0, ms_1.default)(String(value)) ?? fallback;
14
13
  }
15
14
  exports.getMilliseconds = getMilliseconds;
@@ -1,2 +1,2 @@
1
- import { Accountability, Permission, SchemaOverview } from '@directus/shared/types';
1
+ import type { Accountability, Permission, SchemaOverview } from '@directus/shared/types';
2
2
  export declare function getPermissions(accountability: Accountability, schema: SchemaOverview): Promise<Permission[]>;
@@ -11,11 +11,11 @@ const cache_1 = require("../cache");
11
11
  const database_1 = __importDefault(require("../database"));
12
12
  const app_access_permissions_1 = require("../database/system-data/app-access-permissions");
13
13
  const env_1 = __importDefault(require("../env"));
14
+ const logger_1 = __importDefault(require("../logger"));
14
15
  const roles_1 = require("../services/roles");
15
16
  const users_1 = require("../services/users");
16
17
  const merge_permissions_1 = require("../utils/merge-permissions");
17
18
  const merge_permissions_for_share_1 = require("./merge-permissions-for-share");
18
- const logger_1 = __importDefault(require("../logger"));
19
19
  async function getPermissions(accountability, schema) {
20
20
  const database = (0, database_1.default)();
21
21
  const { cache } = (0, cache_1.getCache)();
@@ -1,4 +1,4 @@
1
- import { Relation } from '@directus/shared/types';
1
+ import type { Relation } from '@directus/shared/types';
2
2
  type RelationInfo = {
3
3
  relation: Relation | null;
4
4
  relationType: string | null;
@@ -9,7 +9,6 @@ function checkImplicitRelation(field) {
9
9
  return null;
10
10
  }
11
11
  function getRelationInfo(relations, collection, field) {
12
- var _a;
13
12
  if (field.startsWith('$FOLLOW') && field.length > 500) {
14
13
  throw new Error(`Implicit $FOLLOW statement is too big to parse. Got: "${field.substring(500)}..."`);
15
14
  }
@@ -40,11 +39,10 @@ function getRelationInfo(relations, collection, field) {
40
39
  return { relation, relationType: 'o2a' };
41
40
  }
42
41
  }
43
- const relation = (_a = relations.find((relation) => {
44
- var _a;
42
+ const relation = relations.find((relation) => {
45
43
  return ((relation.collection === collection && relation.field === field) ||
46
- (relation.related_collection === collection && ((_a = relation.meta) === null || _a === void 0 ? void 0 : _a.one_field) === field));
47
- })) !== null && _a !== void 0 ? _a : null;
44
+ (relation.related_collection === collection && relation.meta?.one_field === field));
45
+ }) ?? null;
48
46
  const relationType = relation ? (0, get_relation_type_1.getRelationType)({ relation, collection, field }) : null;
49
47
  return { relation, relationType };
50
48
  }
@@ -1,4 +1,4 @@
1
- import { Relation } from '@directus/shared/types';
1
+ import type { Relation } from '@directus/shared/types';
2
2
  export declare function getRelationType(getRelationOptions: {
3
3
  relation?: Relation | null;
4
4
  collection: string | null;
@@ -2,20 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getRelationType = void 0;
4
4
  function getRelationType(getRelationOptions) {
5
- var _a, _b, _c;
6
5
  const { relation, collection, field } = getRelationOptions;
7
6
  if (!relation)
8
7
  return null;
9
8
  if (relation.collection === collection &&
10
9
  relation.field === field &&
11
- ((_a = relation.meta) === null || _a === void 0 ? void 0 : _a.one_collection_field) &&
12
- ((_b = relation.meta) === null || _b === void 0 ? void 0 : _b.one_allowed_collections)) {
10
+ relation.meta?.one_collection_field &&
11
+ relation.meta?.one_allowed_collections) {
13
12
  return 'a2o';
14
13
  }
15
14
  if (relation.collection === collection && relation.field === field) {
16
15
  return 'm2o';
17
16
  }
18
- if (relation.related_collection === collection && ((_c = relation.meta) === null || _c === void 0 ? void 0 : _c.one_field) === field) {
17
+ if (relation.related_collection === collection && relation.meta?.one_field === field) {
19
18
  return 'o2m';
20
19
  }
21
20
  return null;
@@ -1,5 +1,5 @@
1
- import { SchemaOverview } from '@directus/shared/types';
2
- import { Knex } from 'knex';
1
+ import type { SchemaOverview } from '@directus/shared/types';
2
+ import type { Knex } from 'knex';
3
3
  export declare function getSchema(options?: {
4
4
  database?: Knex;
5
5
  /**
@@ -18,13 +18,13 @@ const services_1 = require("../services");
18
18
  const get_default_value_1 = __importDefault(require("./get-default-value"));
19
19
  const get_local_type_1 = __importDefault(require("./get-local-type"));
20
20
  async function getSchema(options) {
21
- const database = (options === null || options === void 0 ? void 0 : options.database) || (0, database_1.default)();
21
+ const database = options?.database || (0, database_1.default)();
22
22
  const schemaInspector = (0, schema_1.default)(database);
23
23
  let result;
24
- if (!(options === null || options === void 0 ? void 0 : options.bypassCache) && env_1.default.CACHE_SCHEMA !== false) {
24
+ if (!options?.bypassCache && env_1.default.CACHE_SCHEMA !== false) {
25
25
  let cachedSchema;
26
26
  try {
27
- cachedSchema = (await (0, cache_1.getSystemCache)('schema'));
27
+ cachedSchema = await (0, cache_1.getSchemaCache)();
28
28
  }
29
29
  catch (err) {
30
30
  logger_1.default.warn(err, `[schema-cache] Couldn't retrieve cache. ${err}`);
@@ -35,7 +35,7 @@ async function getSchema(options) {
35
35
  else {
36
36
  result = await getDatabaseSchema(database, schemaInspector);
37
37
  try {
38
- await (0, cache_1.setSystemCache)('schema', result);
38
+ await (0, cache_1.setSchemaCache)(result);
39
39
  }
40
40
  catch (err) {
41
41
  logger_1.default.warn(err, `[schema-cache] Couldn't save cache. ${err}`);
@@ -49,7 +49,6 @@ async function getSchema(options) {
49
49
  }
50
50
  exports.getSchema = getSchema;
51
51
  async function getDatabaseSchema(database, schemaInspector) {
52
- var _a, _b, _c, _d, _e, _f;
53
52
  const result = {
54
53
  collections: {},
55
54
  relations: [],
@@ -78,17 +77,16 @@ async function getDatabaseSchema(database, schemaInspector) {
78
77
  result.collections[collection] = {
79
78
  collection,
80
79
  primary: info.primary,
81
- singleton: (collectionMeta === null || collectionMeta === void 0 ? void 0 : collectionMeta.singleton) === true || (collectionMeta === null || collectionMeta === void 0 ? void 0 : collectionMeta.singleton) === 'true' || (collectionMeta === null || collectionMeta === void 0 ? void 0 : collectionMeta.singleton) === 1,
82
- note: (collectionMeta === null || collectionMeta === void 0 ? void 0 : collectionMeta.note) || null,
83
- sortField: (collectionMeta === null || collectionMeta === void 0 ? void 0 : collectionMeta.sort_field) || null,
80
+ singleton: collectionMeta?.singleton === true || collectionMeta?.singleton === 'true' || collectionMeta?.singleton === 1,
81
+ note: collectionMeta?.note || null,
82
+ sortField: collectionMeta?.sort_field || null,
84
83
  accountability: collectionMeta ? collectionMeta.accountability : 'all',
85
84
  fields: (0, lodash_1.mapValues)(schemaOverview[collection].columns, (column) => {
86
- var _a, _b, _c;
87
85
  return {
88
86
  field: column.column_name,
89
- defaultValue: (_a = (0, get_default_value_1.default)(column)) !== null && _a !== void 0 ? _a : null,
90
- nullable: (_b = column.is_nullable) !== null && _b !== void 0 ? _b : true,
91
- generated: (_c = column.is_generated) !== null && _c !== void 0 ? _c : false,
87
+ defaultValue: (0, get_default_value_1.default)(column) ?? null,
88
+ nullable: column.is_nullable ?? true,
89
+ generated: column.is_generated ?? false,
92
90
  type: (0, get_local_type_1.default)(column),
93
91
  dbType: column.data_type,
94
92
  precision: column.numeric_precision || null,
@@ -116,22 +114,22 @@ async function getDatabaseSchema(database, schemaInspector) {
116
114
  if (constants_1.ALIAS_TYPES.some((type) => special.includes(type)) === false && !existing)
117
115
  continue;
118
116
  const type = (existing && (0, get_local_type_1.default)(column, { special })) || 'alias';
119
- let validation = (_a = field.validation) !== null && _a !== void 0 ? _a : null;
117
+ let validation = field.validation ?? null;
120
118
  if (validation && typeof validation === 'string')
121
119
  validation = (0, utils_1.parseJSON)(validation);
122
120
  result.collections[field.collection].fields[field.field] = {
123
121
  field: field.field,
124
- defaultValue: (_b = existing === null || existing === void 0 ? void 0 : existing.defaultValue) !== null && _b !== void 0 ? _b : null,
125
- nullable: (_c = existing === null || existing === void 0 ? void 0 : existing.nullable) !== null && _c !== void 0 ? _c : true,
126
- generated: (_d = existing === null || existing === void 0 ? void 0 : existing.generated) !== null && _d !== void 0 ? _d : false,
122
+ defaultValue: existing?.defaultValue ?? null,
123
+ nullable: existing?.nullable ?? true,
124
+ generated: existing?.generated ?? false,
127
125
  type: type,
128
- dbType: (existing === null || existing === void 0 ? void 0 : existing.dbType) || null,
129
- precision: (existing === null || existing === void 0 ? void 0 : existing.precision) || null,
130
- scale: (existing === null || existing === void 0 ? void 0 : existing.scale) || null,
126
+ dbType: existing?.dbType || null,
127
+ precision: existing?.precision || null,
128
+ scale: existing?.scale || null,
131
129
  special: special,
132
130
  note: field.note,
133
- alias: (_e = existing === null || existing === void 0 ? void 0 : existing.alias) !== null && _e !== void 0 ? _e : true,
134
- validation: (_f = validation) !== null && _f !== void 0 ? _f : null,
131
+ alias: existing?.alias ?? true,
132
+ validation: validation ?? null,
135
133
  };
136
134
  }
137
135
  const relationsService = new services_1.RelationsService({ knex: database, schema: result });