directus 9.24.0 → 9.25.0

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 (861) hide show
  1. package/cli.js +1 -1
  2. package/package.json +5 -170
  3. package/LICENSE +0 -674
  4. package/README.md +0 -89
  5. package/dist/app.d.ts +0 -2
  6. package/dist/app.js +0 -250
  7. package/dist/app.test.d.ts +0 -1
  8. package/dist/auth/auth.d.ts +0 -46
  9. package/dist/auth/auth.js +0 -40
  10. package/dist/auth/drivers/index.d.ts +0 -5
  11. package/dist/auth/drivers/index.js +0 -21
  12. package/dist/auth/drivers/ldap.d.ts +0 -20
  13. package/dist/auth/drivers/ldap.js +0 -349
  14. package/dist/auth/drivers/local.d.ts +0 -9
  15. package/dist/auth/drivers/local.js +0 -91
  16. package/dist/auth/drivers/oauth2.d.ts +0 -19
  17. package/dist/auth/drivers/oauth2.js +0 -310
  18. package/dist/auth/drivers/openid.d.ts +0 -19
  19. package/dist/auth/drivers/openid.js +0 -332
  20. package/dist/auth/drivers/saml.d.ts +0 -14
  21. package/dist/auth/drivers/saml.js +0 -169
  22. package/dist/auth.d.ts +0 -3
  23. package/dist/auth.js +0 -70
  24. package/dist/cache.d.ts +0 -20
  25. package/dist/cache.js +0 -151
  26. package/dist/cli/commands/bootstrap/index.d.ts +0 -3
  27. package/dist/cli/commands/bootstrap/index.js +0 -98
  28. package/dist/cli/commands/count/index.d.ts +0 -1
  29. package/dist/cli/commands/count/index.js +0 -27
  30. package/dist/cli/commands/database/install.d.ts +0 -1
  31. package/dist/cli/commands/database/install.js +0 -22
  32. package/dist/cli/commands/database/migrate.d.ts +0 -1
  33. package/dist/cli/commands/database/migrate.js +0 -29
  34. package/dist/cli/commands/init/index.d.ts +0 -1
  35. package/dist/cli/commands/init/index.js +0 -108
  36. package/dist/cli/commands/init/questions.d.ts +0 -20
  37. package/dist/cli/commands/init/questions.js +0 -71
  38. package/dist/cli/commands/roles/create.d.ts +0 -4
  39. package/dist/cli/commands/roles/create.js +0 -29
  40. package/dist/cli/commands/schema/apply.d.ts +0 -4
  41. package/dist/cli/commands/schema/apply.js +0 -183
  42. package/dist/cli/commands/schema/snapshot.d.ts +0 -4
  43. package/dist/cli/commands/schema/snapshot.js +0 -63
  44. package/dist/cli/commands/security/key.d.ts +0 -1
  45. package/dist/cli/commands/security/key.js +0 -8
  46. package/dist/cli/commands/security/secret.d.ts +0 -1
  47. package/dist/cli/commands/security/secret.js +0 -8
  48. package/dist/cli/commands/users/create.d.ts +0 -5
  49. package/dist/cli/commands/users/create.js +0 -29
  50. package/dist/cli/commands/users/passwd.d.ts +0 -4
  51. package/dist/cli/commands/users/passwd.js +0 -41
  52. package/dist/cli/index.d.ts +0 -2
  53. package/dist/cli/index.js +0 -96
  54. package/dist/cli/index.test.d.ts +0 -1
  55. package/dist/cli/run.d.ts +0 -1
  56. package/dist/cli/run.js +0 -10
  57. package/dist/cli/utils/create-db-connection.d.ts +0 -13
  58. package/dist/cli/utils/create-db-connection.js +0 -61
  59. package/dist/cli/utils/create-env/env-stub.liquid +0 -325
  60. package/dist/cli/utils/create-env/index.d.ts +0 -3
  61. package/dist/cli/utils/create-env/index.js +0 -44
  62. package/dist/cli/utils/defaults.d.ts +0 -11
  63. package/dist/cli/utils/defaults.js +0 -14
  64. package/dist/cli/utils/drivers.d.ts +0 -3
  65. package/dist/cli/utils/drivers.js +0 -19
  66. package/dist/constants.d.ts +0 -13
  67. package/dist/constants.js +0 -59
  68. package/dist/controllers/activity.d.ts +0 -2
  69. package/dist/controllers/activity.js +0 -135
  70. package/dist/controllers/assets.d.ts +0 -2
  71. package/dist/controllers/assets.js +0 -186
  72. package/dist/controllers/auth.d.ts +0 -2
  73. package/dist/controllers/auth.js +0 -167
  74. package/dist/controllers/collections.d.ts +0 -2
  75. package/dist/controllers/collections.js +0 -105
  76. package/dist/controllers/dashboards.d.ts +0 -2
  77. package/dist/controllers/dashboards.js +0 -144
  78. package/dist/controllers/extensions.d.ts +0 -2
  79. package/dist/controllers/extensions.js +0 -40
  80. package/dist/controllers/fields.d.ts +0 -2
  81. package/dist/controllers/fields.js +0 -160
  82. package/dist/controllers/files.d.ts +0 -4
  83. package/dist/controllers/files.js +0 -274
  84. package/dist/controllers/files.test.d.ts +0 -1
  85. package/dist/controllers/flows.d.ts +0 -2
  86. package/dist/controllers/flows.js +0 -163
  87. package/dist/controllers/folders.d.ts +0 -2
  88. package/dist/controllers/folders.js +0 -153
  89. package/dist/controllers/graphql.d.ts +0 -2
  90. package/dist/controllers/graphql.js +0 -36
  91. package/dist/controllers/items.d.ts +0 -2
  92. package/dist/controllers/items.js +0 -183
  93. package/dist/controllers/not-found.d.ts +0 -14
  94. package/dist/controllers/not-found.js +0 -36
  95. package/dist/controllers/notifications.d.ts +0 -2
  96. package/dist/controllers/notifications.js +0 -153
  97. package/dist/controllers/operations.d.ts +0 -2
  98. package/dist/controllers/operations.js +0 -144
  99. package/dist/controllers/panels.d.ts +0 -2
  100. package/dist/controllers/panels.js +0 -144
  101. package/dist/controllers/permissions.d.ts +0 -2
  102. package/dist/controllers/permissions.js +0 -155
  103. package/dist/controllers/presets.d.ts +0 -2
  104. package/dist/controllers/presets.js +0 -153
  105. package/dist/controllers/relations.d.ts +0 -2
  106. package/dist/controllers/relations.js +0 -117
  107. package/dist/controllers/revisions.d.ts +0 -2
  108. package/dist/controllers/revisions.js +0 -39
  109. package/dist/controllers/roles.d.ts +0 -2
  110. package/dist/controllers/roles.js +0 -144
  111. package/dist/controllers/schema.d.ts +0 -2
  112. package/dist/controllers/schema.js +0 -98
  113. package/dist/controllers/server.d.ts +0 -2
  114. package/dist/controllers/server.js +0 -61
  115. package/dist/controllers/settings.d.ts +0 -2
  116. package/dist/controllers/settings.js +0 -41
  117. package/dist/controllers/shares.d.ts +0 -2
  118. package/dist/controllers/shares.js +0 -218
  119. package/dist/controllers/users.d.ts +0 -2
  120. package/dist/controllers/users.js +0 -358
  121. package/dist/controllers/utils.d.ts +0 -2
  122. package/dist/controllers/utils.js +0 -121
  123. package/dist/controllers/webhooks.d.ts +0 -2
  124. package/dist/controllers/webhooks.js +0 -141
  125. package/dist/database/helpers/date/dialects/default.d.ts +0 -3
  126. package/dist/database/helpers/date/dialects/default.js +0 -7
  127. package/dist/database/helpers/date/dialects/mssql.d.ts +0 -4
  128. package/dist/database/helpers/date/dialects/mssql.js +0 -12
  129. package/dist/database/helpers/date/dialects/mysql.d.ts +0 -5
  130. package/dist/database/helpers/date/dialects/mysql.js +0 -16
  131. package/dist/database/helpers/date/dialects/oracle.d.ts +0 -4
  132. package/dist/database/helpers/date/dialects/oracle.js +0 -15
  133. package/dist/database/helpers/date/dialects/sqlite.d.ts +0 -5
  134. package/dist/database/helpers/date/dialects/sqlite.js +0 -30
  135. package/dist/database/helpers/date/index.d.ts +0 -7
  136. package/dist/database/helpers/date/index.js +0 -17
  137. package/dist/database/helpers/date/types.d.ts +0 -7
  138. package/dist/database/helpers/date/types.js +0 -24
  139. package/dist/database/helpers/fn/dialects/mssql.d.ts +0 -13
  140. package/dist/database/helpers/fn/dialects/mssql.js +0 -48
  141. package/dist/database/helpers/fn/dialects/mysql.d.ts +0 -13
  142. package/dist/database/helpers/fn/dialects/mysql.js +0 -42
  143. package/dist/database/helpers/fn/dialects/oracle.d.ts +0 -13
  144. package/dist/database/helpers/fn/dialects/oracle.js +0 -48
  145. package/dist/database/helpers/fn/dialects/postgres.d.ts +0 -13
  146. package/dist/database/helpers/fn/dialects/postgres.js +0 -52
  147. package/dist/database/helpers/fn/dialects/sqlite.d.ts +0 -13
  148. package/dist/database/helpers/fn/dialects/sqlite.js +0 -72
  149. package/dist/database/helpers/fn/index.d.ts +0 -7
  150. package/dist/database/helpers/fn/index.js +0 -17
  151. package/dist/database/helpers/fn/types.d.ts +0 -22
  152. package/dist/database/helpers/fn/types.js +0 -30
  153. package/dist/database/helpers/geometry/dialects/mssql.d.ts +0 -14
  154. package/dist/database/helpers/geometry/dialects/mssql.js +0 -36
  155. package/dist/database/helpers/geometry/dialects/mysql.d.ts +0 -7
  156. package/dist/database/helpers/geometry/dialects/mysql.js +0 -16
  157. package/dist/database/helpers/geometry/dialects/oracle.d.ts +0 -15
  158. package/dist/database/helpers/geometry/dialects/oracle.js +0 -39
  159. package/dist/database/helpers/geometry/dialects/postgres.d.ts +0 -10
  160. package/dist/database/helpers/geometry/dialects/postgres.js +0 -22
  161. package/dist/database/helpers/geometry/dialects/redshift.d.ts +0 -7
  162. package/dist/database/helpers/geometry/dialects/redshift.js +0 -16
  163. package/dist/database/helpers/geometry/dialects/sqlite.d.ts +0 -6
  164. package/dist/database/helpers/geometry/dialects/sqlite.js +0 -14
  165. package/dist/database/helpers/geometry/index.d.ts +0 -7
  166. package/dist/database/helpers/geometry/index.js +0 -17
  167. package/dist/database/helpers/geometry/types.d.ts +0 -20
  168. package/dist/database/helpers/geometry/types.js +0 -53
  169. package/dist/database/helpers/index.d.ts +0 -13
  170. package/dist/database/helpers/index.js +0 -45
  171. package/dist/database/helpers/schema/dialects/cockroachdb.d.ts +0 -6
  172. package/dist/database/helpers/schema/dialects/cockroachdb.js +0 -21
  173. package/dist/database/helpers/schema/dialects/default.d.ts +0 -3
  174. package/dist/database/helpers/schema/dialects/default.js +0 -7
  175. package/dist/database/helpers/schema/dialects/mssql.d.ts +0 -7
  176. package/dist/database/helpers/schema/dialects/mssql.js +0 -24
  177. package/dist/database/helpers/schema/dialects/mysql.d.ts +0 -5
  178. package/dist/database/helpers/schema/dialects/mysql.js +0 -18
  179. package/dist/database/helpers/schema/dialects/oracle.d.ts +0 -9
  180. package/dist/database/helpers/schema/dialects/oracle.js +0 -36
  181. package/dist/database/helpers/schema/dialects/sqlite.d.ts +0 -5
  182. package/dist/database/helpers/schema/dialects/sqlite.js +0 -17
  183. package/dist/database/helpers/schema/index.d.ts +0 -7
  184. package/dist/database/helpers/schema/index.js +0 -17
  185. package/dist/database/helpers/schema/types.d.ts +0 -26
  186. package/dist/database/helpers/schema/types.js +0 -95
  187. package/dist/database/helpers/types.d.ts +0 -5
  188. package/dist/database/helpers/types.js +0 -10
  189. package/dist/database/index.d.ts +0 -20
  190. package/dist/database/index.js +0 -279
  191. package/dist/database/migrations/20201028A-remove-collection-foreign-keys.d.ts +0 -3
  192. package/dist/database/migrations/20201028A-remove-collection-foreign-keys.js +0 -47
  193. package/dist/database/migrations/20201029A-remove-system-relations.d.ts +0 -3
  194. package/dist/database/migrations/20201029A-remove-system-relations.js +0 -127
  195. package/dist/database/migrations/20201029B-remove-system-collections.d.ts +0 -3
  196. package/dist/database/migrations/20201029B-remove-system-collections.js +0 -98
  197. package/dist/database/migrations/20201029C-remove-system-fields.d.ts +0 -3
  198. package/dist/database/migrations/20201029C-remove-system-fields.js +0 -1648
  199. package/dist/database/migrations/20201105A-add-cascade-system-relations.d.ts +0 -8
  200. package/dist/database/migrations/20201105A-add-cascade-system-relations.js +0 -136
  201. package/dist/database/migrations/20201105B-change-webhook-url-type.d.ts +0 -3
  202. package/dist/database/migrations/20201105B-change-webhook-url-type.js +0 -17
  203. package/dist/database/migrations/20210225A-add-relations-sort-field.d.ts +0 -3
  204. package/dist/database/migrations/20210225A-add-relations-sort-field.js +0 -33
  205. package/dist/database/migrations/20210304A-remove-locked-fields.d.ts +0 -3
  206. package/dist/database/migrations/20210304A-remove-locked-fields.js +0 -15
  207. package/dist/database/migrations/20210312A-webhooks-collections-text.d.ts +0 -3
  208. package/dist/database/migrations/20210312A-webhooks-collections-text.js +0 -17
  209. package/dist/database/migrations/20210331A-add-refresh-interval.d.ts +0 -3
  210. package/dist/database/migrations/20210331A-add-refresh-interval.js +0 -15
  211. package/dist/database/migrations/20210415A-make-filesize-nullable.d.ts +0 -3
  212. package/dist/database/migrations/20210415A-make-filesize-nullable.js +0 -20
  213. package/dist/database/migrations/20210416A-add-collections-accountability.d.ts +0 -3
  214. package/dist/database/migrations/20210416A-add-collections-accountability.js +0 -16
  215. package/dist/database/migrations/20210422A-remove-files-interface.d.ts +0 -3
  216. package/dist/database/migrations/20210422A-remove-files-interface.js +0 -11
  217. package/dist/database/migrations/20210506A-rename-interfaces.d.ts +0 -3
  218. package/dist/database/migrations/20210506A-rename-interfaces.js +0 -79
  219. package/dist/database/migrations/20210510A-restructure-relations.d.ts +0 -3
  220. package/dist/database/migrations/20210510A-restructure-relations.js +0 -32
  221. package/dist/database/migrations/20210518A-add-foreign-key-constraints.d.ts +0 -3
  222. package/dist/database/migrations/20210518A-add-foreign-key-constraints.js +0 -114
  223. package/dist/database/migrations/20210519A-add-system-fk-triggers.d.ts +0 -3
  224. package/dist/database/migrations/20210519A-add-system-fk-triggers.js +0 -172
  225. package/dist/database/migrations/20210521A-add-collections-icon-color.d.ts +0 -3
  226. package/dist/database/migrations/20210521A-add-collections-icon-color.js +0 -15
  227. package/dist/database/migrations/20210525A-add-insights.d.ts +0 -3
  228. package/dist/database/migrations/20210525A-add-insights.js +0 -36
  229. package/dist/database/migrations/20210608A-add-deep-clone-config.d.ts +0 -3
  230. package/dist/database/migrations/20210608A-add-deep-clone-config.js +0 -15
  231. package/dist/database/migrations/20210626A-change-filesize-bigint.d.ts +0 -3
  232. package/dist/database/migrations/20210626A-change-filesize-bigint.js +0 -24
  233. package/dist/database/migrations/20210716A-add-conditions-to-fields.d.ts +0 -3
  234. package/dist/database/migrations/20210716A-add-conditions-to-fields.js +0 -15
  235. package/dist/database/migrations/20210721A-add-default-folder.d.ts +0 -3
  236. package/dist/database/migrations/20210721A-add-default-folder.js +0 -23
  237. package/dist/database/migrations/20210802A-replace-groups.d.ts +0 -3
  238. package/dist/database/migrations/20210802A-replace-groups.js +0 -53
  239. package/dist/database/migrations/20210803A-add-required-to-fields.d.ts +0 -3
  240. package/dist/database/migrations/20210803A-add-required-to-fields.js +0 -15
  241. package/dist/database/migrations/20210805A-update-groups.d.ts +0 -3
  242. package/dist/database/migrations/20210805A-update-groups.js +0 -34
  243. package/dist/database/migrations/20210805B-change-image-metadata-structure.d.ts +0 -3
  244. package/dist/database/migrations/20210805B-change-image-metadata-structure.js +0 -89
  245. package/dist/database/migrations/20210811A-add-geometry-config.d.ts +0 -3
  246. package/dist/database/migrations/20210811A-add-geometry-config.js +0 -17
  247. package/dist/database/migrations/20210831A-remove-limit-column.d.ts +0 -3
  248. package/dist/database/migrations/20210831A-remove-limit-column.js +0 -15
  249. package/dist/database/migrations/20210903A-add-auth-provider.d.ts +0 -3
  250. package/dist/database/migrations/20210903A-add-auth-provider.js +0 -40
  251. package/dist/database/migrations/20210907A-webhooks-collections-not-null.d.ts +0 -3
  252. package/dist/database/migrations/20210907A-webhooks-collections-not-null.js +0 -18
  253. package/dist/database/migrations/20210910A-move-module-setup.d.ts +0 -3
  254. package/dist/database/migrations/20210910A-move-module-setup.js +0 -21
  255. package/dist/database/migrations/20210920A-webhooks-url-not-null.d.ts +0 -3
  256. package/dist/database/migrations/20210920A-webhooks-url-not-null.js +0 -26
  257. package/dist/database/migrations/20210924A-add-collection-organization.d.ts +0 -3
  258. package/dist/database/migrations/20210924A-add-collection-organization.js +0 -19
  259. package/dist/database/migrations/20210927A-replace-fields-group.d.ts +0 -3
  260. package/dist/database/migrations/20210927A-replace-fields-group.js +0 -53
  261. package/dist/database/migrations/20210927B-replace-m2m-interface.d.ts +0 -3
  262. package/dist/database/migrations/20210927B-replace-m2m-interface.js +0 -21
  263. package/dist/database/migrations/20210929A-rename-login-action.d.ts +0 -3
  264. package/dist/database/migrations/20210929A-rename-login-action.js +0 -19
  265. package/dist/database/migrations/20211007A-update-presets.d.ts +0 -3
  266. package/dist/database/migrations/20211007A-update-presets.js +0 -103
  267. package/dist/database/migrations/20211009A-add-auth-data.d.ts +0 -3
  268. package/dist/database/migrations/20211009A-add-auth-data.js +0 -15
  269. package/dist/database/migrations/20211016A-add-webhook-headers.d.ts +0 -3
  270. package/dist/database/migrations/20211016A-add-webhook-headers.js +0 -15
  271. package/dist/database/migrations/20211103A-set-unique-to-user-token.d.ts +0 -3
  272. package/dist/database/migrations/20211103A-set-unique-to-user-token.js +0 -15
  273. package/dist/database/migrations/20211103B-update-special-geometry.d.ts +0 -3
  274. package/dist/database/migrations/20211103B-update-special-geometry.js +0 -25
  275. package/dist/database/migrations/20211104A-remove-collections-listing.d.ts +0 -3
  276. package/dist/database/migrations/20211104A-remove-collections-listing.js +0 -15
  277. package/dist/database/migrations/20211118A-add-notifications.d.ts +0 -3
  278. package/dist/database/migrations/20211118A-add-notifications.js +0 -28
  279. package/dist/database/migrations/20211211A-add-shares.d.ts +0 -3
  280. package/dist/database/migrations/20211211A-add-shares.js +0 -38
  281. package/dist/database/migrations/20211230A-add-project-descriptor.d.ts +0 -3
  282. package/dist/database/migrations/20211230A-add-project-descriptor.js +0 -15
  283. package/dist/database/migrations/20220303A-remove-default-project-color.d.ts +0 -3
  284. package/dist/database/migrations/20220303A-remove-default-project-color.js +0 -22
  285. package/dist/database/migrations/20220308A-add-bookmark-icon-and-color.d.ts +0 -3
  286. package/dist/database/migrations/20220308A-add-bookmark-icon-and-color.js +0 -17
  287. package/dist/database/migrations/20220314A-add-translation-strings.d.ts +0 -3
  288. package/dist/database/migrations/20220314A-add-translation-strings.js +0 -15
  289. package/dist/database/migrations/20220322A-rename-field-typecast-flags.d.ts +0 -3
  290. package/dist/database/migrations/20220322A-rename-field-typecast-flags.js +0 -77
  291. package/dist/database/migrations/20220323A-add-field-validation.d.ts +0 -3
  292. package/dist/database/migrations/20220323A-add-field-validation.js +0 -17
  293. package/dist/database/migrations/20220325A-fix-typecast-flags.d.ts +0 -3
  294. package/dist/database/migrations/20220325A-fix-typecast-flags.js +0 -49
  295. package/dist/database/migrations/20220325B-add-default-language.d.ts +0 -3
  296. package/dist/database/migrations/20220325B-add-default-language.js +0 -28
  297. package/dist/database/migrations/20220402A-remove-default-value-panel-icon.d.ts +0 -3
  298. package/dist/database/migrations/20220402A-remove-default-value-panel-icon.js +0 -22
  299. package/dist/database/migrations/20220429A-add-flows.d.ts +0 -3
  300. package/dist/database/migrations/20220429A-add-flows.js +0 -82
  301. package/dist/database/migrations/20220429B-add-color-to-insights-icon.d.ts +0 -3
  302. package/dist/database/migrations/20220429B-add-color-to-insights-icon.js +0 -15
  303. package/dist/database/migrations/20220429C-drop-non-null-from-ip-of-activity.d.ts +0 -3
  304. package/dist/database/migrations/20220429C-drop-non-null-from-ip-of-activity.js +0 -15
  305. package/dist/database/migrations/20220429D-drop-non-null-from-sender-of-notifications.d.ts +0 -3
  306. package/dist/database/migrations/20220429D-drop-non-null-from-sender-of-notifications.js +0 -15
  307. package/dist/database/migrations/20220614A-rename-hook-trigger-to-event.d.ts +0 -3
  308. package/dist/database/migrations/20220614A-rename-hook-trigger-to-event.js +0 -11
  309. package/dist/database/migrations/20220801A-update-notifications-timestamp-column.d.ts +0 -3
  310. package/dist/database/migrations/20220801A-update-notifications-timestamp-column.js +0 -19
  311. package/dist/database/migrations/20220802A-add-custom-aspect-ratios.d.ts +0 -3
  312. package/dist/database/migrations/20220802A-add-custom-aspect-ratios.js +0 -15
  313. package/dist/database/migrations/20220826A-add-origin-to-accountability.d.ts +0 -3
  314. package/dist/database/migrations/20220826A-add-origin-to-accountability.js +0 -21
  315. package/dist/database/migrations/run.d.ts +0 -2
  316. package/dist/database/migrations/run.js +0 -96
  317. package/dist/database/migrations/run.test.d.ts +0 -1
  318. package/dist/database/run-ast.d.ts +0 -26
  319. package/dist/database/run-ast.js +0 -474
  320. package/dist/database/seeds/01-collections.yaml +0 -42
  321. package/dist/database/seeds/02-roles.yaml +0 -36
  322. package/dist/database/seeds/03-users.yaml +0 -63
  323. package/dist/database/seeds/04-fields.yaml +0 -58
  324. package/dist/database/seeds/05-activity.yaml +0 -35
  325. package/dist/database/seeds/06-folders.yaml +0 -16
  326. package/dist/database/seeds/07-files.yaml +0 -74
  327. package/dist/database/seeds/08-permissions.yaml +0 -32
  328. package/dist/database/seeds/09-presets.yaml +0 -37
  329. package/dist/database/seeds/10-relations.yaml +0 -40
  330. package/dist/database/seeds/11-revisions.yaml +0 -33
  331. package/dist/database/seeds/12-sessions.yaml +0 -23
  332. package/dist/database/seeds/13-settings.yaml +0 -49
  333. package/dist/database/seeds/14-webhooks.yaml +0 -35
  334. package/dist/database/seeds/15-migrations.yaml +0 -14
  335. package/dist/database/seeds/run.d.ts +0 -2
  336. package/dist/database/seeds/run.js +0 -76
  337. package/dist/database/system-data/app-access-permissions/app-access-permissions.yaml +0 -102
  338. package/dist/database/system-data/app-access-permissions/index.d.ts +0 -3
  339. package/dist/database/system-data/app-access-permissions/index.js +0 -17
  340. package/dist/database/system-data/app-access-permissions/schema-access-permissions.yaml +0 -17
  341. package/dist/database/system-data/collections/collections.yaml +0 -74
  342. package/dist/database/system-data/collections/index.d.ts +0 -2
  343. package/dist/database/system-data/collections/index.js +0 -9
  344. package/dist/database/system-data/fields/_defaults.yaml +0 -16
  345. package/dist/database/system-data/fields/activity.yaml +0 -83
  346. package/dist/database/system-data/fields/collections.yaml +0 -214
  347. package/dist/database/system-data/fields/dashboards.yaml +0 -20
  348. package/dist/database/system-data/fields/fields.yaml +0 -104
  349. package/dist/database/system-data/fields/files.yaml +0 -144
  350. package/dist/database/system-data/fields/flows.yaml +0 -26
  351. package/dist/database/system-data/fields/folders.yaml +0 -14
  352. package/dist/database/system-data/fields/index.d.ts +0 -2
  353. package/dist/database/system-data/fields/index.js +0 -37
  354. package/dist/database/system-data/fields/migrations.yaml +0 -10
  355. package/dist/database/system-data/fields/notifications.yaml +0 -15
  356. package/dist/database/system-data/fields/operations.yaml +0 -23
  357. package/dist/database/system-data/fields/panels.yaml +0 -29
  358. package/dist/database/system-data/fields/permissions.yaml +0 -37
  359. package/dist/database/system-data/fields/presets.yaml +0 -56
  360. package/dist/database/system-data/fields/relations.yaml +0 -34
  361. package/dist/database/system-data/fields/revisions.yaml +0 -27
  362. package/dist/database/system-data/fields/roles.yaml +0 -61
  363. package/dist/database/system-data/fields/sessions.yaml +0 -16
  364. package/dist/database/system-data/fields/settings.yaml +0 -413
  365. package/dist/database/system-data/fields/shares.yaml +0 -83
  366. package/dist/database/system-data/fields/users.yaml +0 -182
  367. package/dist/database/system-data/fields/webhooks.yaml +0 -141
  368. package/dist/database/system-data/relations/index.d.ts +0 -2
  369. package/dist/database/system-data/relations/index.js +0 -9
  370. package/dist/database/system-data/relations/relations.yaml +0 -125
  371. package/dist/emitter.d.ts +0 -19
  372. package/dist/emitter.js +0 -86
  373. package/dist/env.d.ts +0 -15
  374. package/dist/env.js +0 -466
  375. package/dist/env.test.d.ts +0 -1
  376. package/dist/exceptions/database/contains-null-values.d.ts +0 -9
  377. package/dist/exceptions/database/contains-null-values.js +0 -10
  378. package/dist/exceptions/database/dialects/mssql.d.ts +0 -2
  379. package/dist/exceptions/database/dialects/mssql.js +0 -159
  380. package/dist/exceptions/database/dialects/mysql.d.ts +0 -2
  381. package/dist/exceptions/database/dialects/mysql.js +0 -148
  382. package/dist/exceptions/database/dialects/oracle.d.ts +0 -2
  383. package/dist/exceptions/database/dialects/oracle.js +0 -27
  384. package/dist/exceptions/database/dialects/postgres.d.ts +0 -2
  385. package/dist/exceptions/database/dialects/postgres.js +0 -106
  386. package/dist/exceptions/database/dialects/sqlite.d.ts +0 -2
  387. package/dist/exceptions/database/dialects/sqlite.js +0 -55
  388. package/dist/exceptions/database/dialects/types.d.ts +0 -41
  389. package/dist/exceptions/database/dialects/types.js +0 -2
  390. package/dist/exceptions/database/invalid-foreign-key.d.ts +0 -10
  391. package/dist/exceptions/database/invalid-foreign-key.js +0 -15
  392. package/dist/exceptions/database/not-null-violation.d.ts +0 -9
  393. package/dist/exceptions/database/not-null-violation.js +0 -10
  394. package/dist/exceptions/database/record-not-unique.d.ts +0 -10
  395. package/dist/exceptions/database/record-not-unique.js +0 -15
  396. package/dist/exceptions/database/translate.d.ts +0 -11
  397. package/dist/exceptions/database/translate.js +0 -74
  398. package/dist/exceptions/database/value-out-of-range.d.ts +0 -10
  399. package/dist/exceptions/database/value-out-of-range.js +0 -15
  400. package/dist/exceptions/database/value-too-long.d.ts +0 -9
  401. package/dist/exceptions/database/value-too-long.js +0 -15
  402. package/dist/exceptions/forbidden.d.ts +0 -4
  403. package/dist/exceptions/forbidden.js +0 -16
  404. package/dist/exceptions/graphql-validation.d.ts +0 -4
  405. package/dist/exceptions/graphql-validation.js +0 -10
  406. package/dist/exceptions/hit-rate-limit.d.ts +0 -9
  407. package/dist/exceptions/hit-rate-limit.js +0 -10
  408. package/dist/exceptions/illegal-asset-transformation.d.ts +0 -4
  409. package/dist/exceptions/illegal-asset-transformation.js +0 -10
  410. package/dist/exceptions/index.d.ts +0 -21
  411. package/dist/exceptions/index.js +0 -37
  412. package/dist/exceptions/invalid-config.d.ts +0 -4
  413. package/dist/exceptions/invalid-config.js +0 -10
  414. package/dist/exceptions/invalid-credentials.d.ts +0 -4
  415. package/dist/exceptions/invalid-credentials.js +0 -10
  416. package/dist/exceptions/invalid-ip.d.ts +0 -4
  417. package/dist/exceptions/invalid-ip.js +0 -10
  418. package/dist/exceptions/invalid-otp.d.ts +0 -4
  419. package/dist/exceptions/invalid-otp.js +0 -10
  420. package/dist/exceptions/invalid-payload.d.ts +0 -4
  421. package/dist/exceptions/invalid-payload.js +0 -10
  422. package/dist/exceptions/invalid-provider.d.ts +0 -4
  423. package/dist/exceptions/invalid-provider.js +0 -10
  424. package/dist/exceptions/invalid-query.d.ts +0 -4
  425. package/dist/exceptions/invalid-query.js +0 -10
  426. package/dist/exceptions/invalid-token.d.ts +0 -4
  427. package/dist/exceptions/invalid-token.js +0 -10
  428. package/dist/exceptions/method-not-allowed.d.ts +0 -8
  429. package/dist/exceptions/method-not-allowed.js +0 -10
  430. package/dist/exceptions/range-not-satisfiable.d.ts +0 -5
  431. package/dist/exceptions/range-not-satisfiable.js +0 -13
  432. package/dist/exceptions/route-not-found.d.ts +0 -4
  433. package/dist/exceptions/route-not-found.js +0 -10
  434. package/dist/exceptions/service-unavailable.d.ts +0 -9
  435. package/dist/exceptions/service-unavailable.js +0 -10
  436. package/dist/exceptions/token-expired.d.ts +0 -4
  437. package/dist/exceptions/token-expired.js +0 -10
  438. package/dist/exceptions/unexpected-response.d.ts +0 -4
  439. package/dist/exceptions/unexpected-response.js +0 -10
  440. package/dist/exceptions/unprocessable-entity.d.ts +0 -4
  441. package/dist/exceptions/unprocessable-entity.js +0 -10
  442. package/dist/exceptions/unsupported-media-type.d.ts +0 -4
  443. package/dist/exceptions/unsupported-media-type.js +0 -10
  444. package/dist/exceptions/user-suspended.d.ts +0 -4
  445. package/dist/exceptions/user-suspended.js +0 -10
  446. package/dist/extensions.d.ts +0 -49
  447. package/dist/extensions.js +0 -501
  448. package/dist/flows.d.ts +0 -22
  449. package/dist/flows.js +0 -377
  450. package/dist/index.d.ts +0 -3
  451. package/dist/index.js +0 -24
  452. package/dist/logger.d.ts +0 -7
  453. package/dist/logger.js +0 -134
  454. package/dist/logger.test.d.ts +0 -1
  455. package/dist/mailer.d.ts +0 -2
  456. package/dist/mailer.js +0 -71
  457. package/dist/messenger.d.ts +0 -24
  458. package/dist/messenger.js +0 -66
  459. package/dist/middleware/authenticate.d.ts +0 -8
  460. package/dist/middleware/authenticate.js +0 -82
  461. package/dist/middleware/authenticate.test.d.ts +0 -1
  462. package/dist/middleware/cache.d.ts +0 -3
  463. package/dist/middleware/cache.js +0 -61
  464. package/dist/middleware/check-ip.d.ts +0 -2
  465. package/dist/middleware/check-ip.js +0 -24
  466. package/dist/middleware/collection-exists.d.ts +0 -6
  467. package/dist/middleware/collection-exists.js +0 -30
  468. package/dist/middleware/cors.d.ts +0 -3
  469. package/dist/middleware/cors.js +0 -19
  470. package/dist/middleware/error-handler.d.ts +0 -3
  471. package/dist/middleware/error-handler.js +0 -95
  472. package/dist/middleware/extract-token.d.ts +0 -11
  473. package/dist/middleware/extract-token.js +0 -32
  474. package/dist/middleware/extract-token.test.d.ts +0 -1
  475. package/dist/middleware/get-permissions.d.ts +0 -3
  476. package/dist/middleware/get-permissions.js +0 -15
  477. package/dist/middleware/graphql.d.ts +0 -2
  478. package/dist/middleware/graphql.js +0 -69
  479. package/dist/middleware/rate-limiter-global.d.ts +0 -5
  480. package/dist/middleware/rate-limiter-global.js +0 -48
  481. package/dist/middleware/rate-limiter-ip.d.ts +0 -5
  482. package/dist/middleware/rate-limiter-ip.js +0 -34
  483. package/dist/middleware/respond.d.ts +0 -2
  484. package/dist/middleware/respond.js +0 -88
  485. package/dist/middleware/sanitize-query.d.ts +0 -7
  486. package/dist/middleware/sanitize-query.js +0 -21
  487. package/dist/middleware/schema.d.ts +0 -3
  488. package/dist/middleware/schema.js +0 -12
  489. package/dist/middleware/use-collection.d.ts +0 -7
  490. package/dist/middleware/use-collection.js +0 -11
  491. package/dist/middleware/validate-batch.d.ts +0 -3
  492. package/dist/middleware/validate-batch.js +0 -49
  493. package/dist/middleware/validate-batch.test.d.ts +0 -1
  494. package/dist/operations/condition/index.d.ts +0 -6
  495. package/dist/operations/condition/index.js +0 -15
  496. package/dist/operations/condition/index.test.d.ts +0 -1
  497. package/dist/operations/exec/index.d.ts +0 -5
  498. package/dist/operations/exec/index.js +0 -40
  499. package/dist/operations/exec/index.test.d.ts +0 -1
  500. package/dist/operations/item-create/index.d.ts +0 -8
  501. package/dist/operations/item-create/index.js +0 -38
  502. package/dist/operations/item-create/index.test.d.ts +0 -1
  503. package/dist/operations/item-delete/index.d.ts +0 -10
  504. package/dist/operations/item-delete/index.js +0 -46
  505. package/dist/operations/item-delete/index.test.d.ts +0 -1
  506. package/dist/operations/item-read/index.d.ts +0 -10
  507. package/dist/operations/item-read/index.js +0 -46
  508. package/dist/operations/item-read/index.test.d.ts +0 -1
  509. package/dist/operations/item-update/index.d.ts +0 -11
  510. package/dist/operations/item-update/index.js +0 -50
  511. package/dist/operations/item-update/index.test.d.ts +0 -1
  512. package/dist/operations/log/index.d.ts +0 -5
  513. package/dist/operations/log/index.js +0 -13
  514. package/dist/operations/log/index.test.d.ts +0 -1
  515. package/dist/operations/mail/index.d.ts +0 -8
  516. package/dist/operations/mail/index.js +0 -19
  517. package/dist/operations/notification/index.d.ts +0 -8
  518. package/dist/operations/notification/index.js +0 -40
  519. package/dist/operations/notification/index.test.d.ts +0 -1
  520. package/dist/operations/request/index.d.ts +0 -11
  521. package/dist/operations/request/index.js +0 -38
  522. package/dist/operations/request/index.test.d.ts +0 -1
  523. package/dist/operations/sleep/index.d.ts +0 -5
  524. package/dist/operations/sleep/index.js +0 -9
  525. package/dist/operations/sleep/index.test.d.ts +0 -1
  526. package/dist/operations/transform/index.d.ts +0 -5
  527. package/dist/operations/transform/index.js +0 -9
  528. package/dist/operations/transform/index.test.d.ts +0 -1
  529. package/dist/operations/trigger/index.d.ts +0 -8
  530. package/dist/operations/trigger/index.js +0 -39
  531. package/dist/operations/trigger/index.test.d.ts +0 -1
  532. package/dist/rate-limiter.d.ts +0 -4
  533. package/dist/rate-limiter.js +0 -38
  534. package/dist/request/index.d.ts +0 -5
  535. package/dist/request/index.js +0 -18
  536. package/dist/request/index.test.d.ts +0 -1
  537. package/dist/request/request-interceptor.d.ts +0 -2
  538. package/dist/request/request-interceptor.js +0 -33
  539. package/dist/request/request-interceptor.test.d.ts +0 -1
  540. package/dist/request/response-interceptor.d.ts +0 -2
  541. package/dist/request/response-interceptor.js +0 -9
  542. package/dist/request/response-interceptor.test.d.ts +0 -1
  543. package/dist/request/validate-ip.d.ts +0 -1
  544. package/dist/request/validate-ip.js +0 -27
  545. package/dist/request/validate-ip.test.d.ts +0 -1
  546. package/dist/server.d.ts +0 -4
  547. package/dist/server.js +0 -162
  548. package/dist/services/activity.d.ts +0 -10
  549. package/dist/services/activity.js +0 -101
  550. package/dist/services/assets.d.ts +0 -18
  551. package/dist/services/assets.js +0 -179
  552. package/dist/services/authentication.d.ts +0 -21
  553. package/dist/services/authentication.js +0 -332
  554. package/dist/services/authorization.d.ts +0 -17
  555. package/dist/services/authorization.js +0 -451
  556. package/dist/services/collections.d.ts +0 -64
  557. package/dist/services/collections.js +0 -595
  558. package/dist/services/dashboards.d.ts +0 -5
  559. package/dist/services/dashboards.js +0 -10
  560. package/dist/services/fields.d.ts +0 -32
  561. package/dist/services/fields.js +0 -625
  562. package/dist/services/fields.test.d.ts +0 -1
  563. package/dist/services/files.d.ts +0 -34
  564. package/dist/services/files.js +0 -280
  565. package/dist/services/files.test.d.ts +0 -1
  566. package/dist/services/flows.d.ts +0 -11
  567. package/dist/services/flows.js +0 -43
  568. package/dist/services/flows.test.d.ts +0 -1
  569. package/dist/services/folders.d.ts +0 -5
  570. package/dist/services/folders.js +0 -10
  571. package/dist/services/graphql/index.d.ts +0 -86
  572. package/dist/services/graphql/index.js +0 -2519
  573. package/dist/services/graphql/types/bigint.d.ts +0 -2
  574. package/dist/services/graphql/types/bigint.js +0 -39
  575. package/dist/services/graphql/types/date.d.ts +0 -2
  576. package/dist/services/graphql/types/date.js +0 -9
  577. package/dist/services/graphql/types/geojson.d.ts +0 -2
  578. package/dist/services/graphql/types/geojson.js +0 -10
  579. package/dist/services/graphql/types/hash.d.ts +0 -2
  580. package/dist/services/graphql/types/hash.js +0 -9
  581. package/dist/services/graphql/types/string-or-float.d.ts +0 -5
  582. package/dist/services/graphql/types/string-or-float.js +0 -34
  583. package/dist/services/graphql/types/void.d.ts +0 -2
  584. package/dist/services/graphql/types/void.js +0 -17
  585. package/dist/services/graphql/utils/add-path-to-validation-error.d.ts +0 -2
  586. package/dist/services/graphql/utils/add-path-to-validation-error.js +0 -19
  587. package/dist/services/graphql/utils/process-error.d.ts +0 -4
  588. package/dist/services/graphql/utils/process-error.js +0 -46
  589. package/dist/services/graphql/utils/process-error.test.d.ts +0 -1
  590. package/dist/services/import-export.d.ts +0 -37
  591. package/dist/services/import-export.js +0 -300
  592. package/dist/services/import-export.test.d.ts +0 -1
  593. package/dist/services/index.d.ts +0 -33
  594. package/dist/services/index.js +0 -50
  595. package/dist/services/items.d.ts +0 -83
  596. package/dist/services/items.js +0 -719
  597. package/dist/services/items.test.d.ts +0 -1
  598. package/dist/services/mail/index.d.ts +0 -20
  599. package/dist/services/mail/index.js +0 -96
  600. package/dist/services/mail/templates/base.liquid +0 -162
  601. package/dist/services/mail/templates/password-reset.liquid +0 -24
  602. package/dist/services/mail/templates/user-invitation.liquid +0 -19
  603. package/dist/services/meta.d.ts +0 -12
  604. package/dist/services/meta.js +0 -78
  605. package/dist/services/notifications.d.ts +0 -13
  606. package/dist/services/notifications.js +0 -59
  607. package/dist/services/notifications.test.d.ts +0 -1
  608. package/dist/services/operations.d.ts +0 -11
  609. package/dist/services/operations.js +0 -41
  610. package/dist/services/operations.test.d.ts +0 -1
  611. package/dist/services/panels.d.ts +0 -5
  612. package/dist/services/panels.js +0 -10
  613. package/dist/services/payload.d.ts +0 -73
  614. package/dist/services/payload.js +0 -644
  615. package/dist/services/payload.test.d.ts +0 -1
  616. package/dist/services/permissions.d.ts +0 -17
  617. package/dist/services/permissions.js +0 -84
  618. package/dist/services/permissions.test.d.ts +0 -1
  619. package/dist/services/presets.d.ts +0 -5
  620. package/dist/services/presets.js +0 -10
  621. package/dist/services/relations.d.ts +0 -60
  622. package/dist/services/relations.js +0 -477
  623. package/dist/services/revisions.d.ts +0 -6
  624. package/dist/services/revisions.js +0 -24
  625. package/dist/services/roles.d.ts +0 -14
  626. package/dist/services/roles.js +0 -148
  627. package/dist/services/roles.test.d.ts +0 -1
  628. package/dist/services/schema.d.ts +0 -15
  629. package/dist/services/schema.js +0 -56
  630. package/dist/services/schema.test.d.ts +0 -1
  631. package/dist/services/server.d.ts +0 -13
  632. package/dist/services/server.js +0 -366
  633. package/dist/services/settings.d.ts +0 -5
  634. package/dist/services/settings.js +0 -10
  635. package/dist/services/shares.d.ts +0 -17
  636. package/dist/services/shares.js +0 -136
  637. package/dist/services/specifications.d.ts +0 -53
  638. package/dist/services/specifications.js +0 -500
  639. package/dist/services/specifications.test.d.ts +0 -1
  640. package/dist/services/tfa.d.ts +0 -12
  641. package/dist/services/tfa.js +0 -57
  642. package/dist/services/users.d.ts +0 -55
  643. package/dist/services/users.js +0 -380
  644. package/dist/services/users.test.d.ts +0 -1
  645. package/dist/services/utils.d.ts +0 -13
  646. package/dist/services/utils.js +0 -115
  647. package/dist/services/webhooks.d.ts +0 -11
  648. package/dist/services/webhooks.js +0 -33
  649. package/dist/services/webhooks.test.d.ts +0 -1
  650. package/dist/start.d.ts +0 -1
  651. package/dist/start.js +0 -4
  652. package/dist/storage/get-storage-driver.d.ts +0 -3
  653. package/dist/storage/get-storage-driver.js +0 -20
  654. package/dist/storage/get-storage-driver.test.d.ts +0 -1
  655. package/dist/storage/index.d.ts +0 -5
  656. package/dist/storage/index.js +0 -20
  657. package/dist/storage/index.test.d.ts +0 -1
  658. package/dist/storage/register-drivers.d.ts +0 -2
  659. package/dist/storage/register-drivers.js +0 -22
  660. package/dist/storage/register-drivers.test.d.ts +0 -1
  661. package/dist/storage/register-locations.d.ts +0 -2
  662. package/dist/storage/register-locations.js +0 -17
  663. package/dist/storage/register-locations.test.d.ts +0 -1
  664. package/dist/types/assets.d.ts +0 -20
  665. package/dist/types/assets.js +0 -54
  666. package/dist/types/ast.d.ts +0 -56
  667. package/dist/types/ast.js +0 -2
  668. package/dist/types/auth.d.ts +0 -54
  669. package/dist/types/auth.js +0 -2
  670. package/dist/types/collection.d.ts +0 -19
  671. package/dist/types/collection.js +0 -2
  672. package/dist/types/database.d.ts +0 -3
  673. package/dist/types/database.js +0 -4
  674. package/dist/types/events.d.ts +0 -18
  675. package/dist/types/events.js +0 -2
  676. package/dist/types/files.d.ts +0 -29
  677. package/dist/types/files.js +0 -2
  678. package/dist/types/graphql.d.ts +0 -14
  679. package/dist/types/graphql.js +0 -2
  680. package/dist/types/index.d.ts +0 -15
  681. package/dist/types/index.js +0 -31
  682. package/dist/types/items.d.ts +0 -49
  683. package/dist/types/items.js +0 -6
  684. package/dist/types/meta.d.ts +0 -4
  685. package/dist/types/meta.js +0 -8
  686. package/dist/types/migration.d.ts +0 -5
  687. package/dist/types/migration.js +0 -2
  688. package/dist/types/revision.d.ts +0 -7
  689. package/dist/types/revision.js +0 -2
  690. package/dist/types/services.d.ts +0 -21
  691. package/dist/types/services.js +0 -2
  692. package/dist/types/snapshot.d.ts +0 -55
  693. package/dist/types/snapshot.js +0 -16
  694. package/dist/types/webhooks.d.ts +0 -15
  695. package/dist/types/webhooks.js +0 -2
  696. package/dist/utils/apply-diff.d.ts +0 -9
  697. package/dist/utils/apply-diff.js +0 -256
  698. package/dist/utils/apply-diff.test.d.ts +0 -1
  699. package/dist/utils/apply-function-to-column-name.d.ts +0 -12
  700. package/dist/utils/apply-function-to-column-name.js +0 -26
  701. package/dist/utils/apply-function-to-column-name.test.d.ts +0 -1
  702. package/dist/utils/apply-query.d.ts +0 -34
  703. package/dist/utils/apply-query.js +0 -568
  704. package/dist/utils/apply-snapshot.d.ts +0 -9
  705. package/dist/utils/apply-snapshot.js +0 -22
  706. package/dist/utils/apply-snapshot.test.d.ts +0 -1
  707. package/dist/utils/async-handler.d.ts +0 -3
  708. package/dist/utils/async-handler.js +0 -4
  709. package/dist/utils/async-handler.test.d.ts +0 -1
  710. package/dist/utils/calculate-field-depth.d.ts +0 -33
  711. package/dist/utils/calculate-field-depth.js +0 -75
  712. package/dist/utils/calculate-field-depth.test.d.ts +0 -1
  713. package/dist/utils/compress.d.ts +0 -3
  714. package/dist/utils/compress.js +0 -17
  715. package/dist/utils/construct-flow-tree.d.ts +0 -2
  716. package/dist/utils/construct-flow-tree.js +0 -31
  717. package/dist/utils/dynamic-import.d.ts +0 -1
  718. package/dist/utils/dynamic-import.js +0 -7
  719. package/dist/utils/filter-items.d.ts +0 -2
  720. package/dist/utils/filter-items.js +0 -37
  721. package/dist/utils/filter-items.test.d.ts +0 -1
  722. package/dist/utils/generate-hash.d.ts +0 -1
  723. package/dist/utils/generate-hash.js +0 -16
  724. package/dist/utils/get-accountability-for-role.d.ts +0 -7
  725. package/dist/utils/get-accountability-for-role.js +0 -45
  726. package/dist/utils/get-ast-from-query.d.ts +0 -13
  727. package/dist/utils/get-ast-from-query.js +0 -300
  728. package/dist/utils/get-auth-providers.d.ts +0 -8
  729. package/dist/utils/get-auth-providers.js +0 -19
  730. package/dist/utils/get-auth-providers.test.d.ts +0 -1
  731. package/dist/utils/get-cache-headers.d.ts +0 -10
  732. package/dist/utils/get-cache-headers.js +0 -43
  733. package/dist/utils/get-cache-headers.test.d.ts +0 -1
  734. package/dist/utils/get-cache-key.d.ts +0 -2
  735. package/dist/utils/get-cache-key.js +0 -21
  736. package/dist/utils/get-cache-key.test.d.ts +0 -1
  737. package/dist/utils/get-collection-from-alias.d.ts +0 -6
  738. package/dist/utils/get-collection-from-alias.js +0 -16
  739. package/dist/utils/get-collection-from-alias.test.d.ts +0 -1
  740. package/dist/utils/get-column-path.d.ts +0 -26
  741. package/dist/utils/get-column-path.js +0 -65
  742. package/dist/utils/get-column-path.test.d.ts +0 -1
  743. package/dist/utils/get-column.d.ts +0 -20
  744. package/dist/utils/get-column.js +0 -52
  745. package/dist/utils/get-config-from-env.d.ts +0 -1
  746. package/dist/utils/get-config-from-env.js +0 -48
  747. package/dist/utils/get-config-from-env.test.d.ts +0 -1
  748. package/dist/utils/get-date-formatted.d.ts +0 -1
  749. package/dist/utils/get-date-formatted.js +0 -14
  750. package/dist/utils/get-date-formatted.test.d.ts +0 -1
  751. package/dist/utils/get-default-index-name.d.ts +0 -10
  752. package/dist/utils/get-default-index-name.js +0 -25
  753. package/dist/utils/get-default-value.d.ts +0 -3
  754. package/dist/utils/get-default-value.js +0 -62
  755. package/dist/utils/get-graphql-query-and-variables.d.ts +0 -2
  756. package/dist/utils/get-graphql-query-and-variables.js +0 -9
  757. package/dist/utils/get-graphql-query-and-variables.test.d.ts +0 -1
  758. package/dist/utils/get-graphql-type.d.ts +0 -3
  759. package/dist/utils/get-graphql-type.js +0 -40
  760. package/dist/utils/get-ip-from-req.d.ts +0 -2
  761. package/dist/utils/get-ip-from-req.js +0 -24
  762. package/dist/utils/get-local-type.d.ts +0 -9
  763. package/dist/utils/get-local-type.js +0 -131
  764. package/dist/utils/get-milliseconds.d.ts +0 -4
  765. package/dist/utils/get-milliseconds.js +0 -14
  766. package/dist/utils/get-milliseconds.test.d.ts +0 -1
  767. package/dist/utils/get-module-default.d.ts +0 -3
  768. package/dist/utils/get-module-default.js +0 -9
  769. package/dist/utils/get-os-info.d.ts +0 -9
  770. package/dist/utils/get-os-info.js +0 -47
  771. package/dist/utils/get-permissions.d.ts +0 -2
  772. package/dist/utils/get-permissions.js +0 -158
  773. package/dist/utils/get-relation-info.d.ts +0 -7
  774. package/dist/utils/get-relation-info.js +0 -49
  775. package/dist/utils/get-relation-info.test.d.ts +0 -1
  776. package/dist/utils/get-relation-type.d.ts +0 -6
  777. package/dist/utils/get-relation-type.js +0 -22
  778. package/dist/utils/get-relation-type.test.d.ts +0 -1
  779. package/dist/utils/get-schema.d.ts +0 -10
  780. package/dist/utils/get-schema.js +0 -138
  781. package/dist/utils/get-snapshot-diff.d.ts +0 -2
  782. package/dist/utils/get-snapshot-diff.js +0 -82
  783. package/dist/utils/get-snapshot.d.ts +0 -7
  784. package/dist/utils/get-snapshot.js +0 -80
  785. package/dist/utils/get-string-byte-size.d.ts +0 -4
  786. package/dist/utils/get-string-byte-size.js +0 -10
  787. package/dist/utils/get-string-byte-size.test.d.ts +0 -1
  788. package/dist/utils/get-versioned-hash.d.ts +0 -1
  789. package/dist/utils/get-versioned-hash.js +0 -12
  790. package/dist/utils/get-versioned-hash.test.d.ts +0 -1
  791. package/dist/utils/is-directus-jwt.d.ts +0 -5
  792. package/dist/utils/is-directus-jwt.js +0 -22
  793. package/dist/utils/is-directus-jwt.test.d.ts +0 -1
  794. package/dist/utils/is-url-allowed.d.ts +0 -4
  795. package/dist/utils/is-url-allowed.js +0 -36
  796. package/dist/utils/job-queue.d.ts +0 -9
  797. package/dist/utils/job-queue.js +0 -26
  798. package/dist/utils/jwt.d.ts +0 -2
  799. package/dist/utils/jwt.js +0 -53
  800. package/dist/utils/jwt.test.d.ts +0 -1
  801. package/dist/utils/map-values-deep.d.ts +0 -1
  802. package/dist/utils/map-values-deep.js +0 -29
  803. package/dist/utils/map-values-deep.test.d.ts +0 -1
  804. package/dist/utils/md.d.ts +0 -4
  805. package/dist/utils/md.js +0 -15
  806. package/dist/utils/md.test.d.ts +0 -1
  807. package/dist/utils/merge-permissions-for-share.d.ts +0 -4
  808. package/dist/utils/merge-permissions-for-share.js +0 -115
  809. package/dist/utils/merge-permissions.d.ts +0 -14
  810. package/dist/utils/merge-permissions.js +0 -100
  811. package/dist/utils/merge-permissions.test.d.ts +0 -1
  812. package/dist/utils/parse-image-metadata.d.ts +0 -3
  813. package/dist/utils/parse-image-metadata.js +0 -73
  814. package/dist/utils/reduce-schema.d.ts +0 -9
  815. package/dist/utils/reduce-schema.js +0 -82
  816. package/dist/utils/require-yaml.d.ts +0 -1
  817. package/dist/utils/require-yaml.js +0 -13
  818. package/dist/utils/sanitize-query.d.ts +0 -2
  819. package/dist/utils/sanitize-query.js +0 -179
  820. package/dist/utils/sanitize-query.test.d.ts +0 -1
  821. package/dist/utils/sanitize-schema.d.ts +0 -30
  822. package/dist/utils/sanitize-schema.js +0 -80
  823. package/dist/utils/sanitize-schema.test.d.ts +0 -1
  824. package/dist/utils/should-skip-cache.d.ts +0 -7
  825. package/dist/utils/should-skip-cache.js +0 -30
  826. package/dist/utils/should-skip-cache.test.d.ts +0 -1
  827. package/dist/utils/stall.d.ts +0 -26
  828. package/dist/utils/stall.js +0 -38
  829. package/dist/utils/stall.test.d.ts +0 -1
  830. package/dist/utils/strip-function.d.ts +0 -4
  831. package/dist/utils/strip-function.js +0 -16
  832. package/dist/utils/strip-function.test.d.ts +0 -1
  833. package/dist/utils/telemetry.d.ts +0 -1
  834. package/dist/utils/telemetry.js +0 -30
  835. package/dist/utils/transformations.d.ts +0 -6
  836. package/dist/utils/transformations.js +0 -55
  837. package/dist/utils/url.d.ts +0 -17
  838. package/dist/utils/url.js +0 -63
  839. package/dist/utils/url.test.d.ts +0 -1
  840. package/dist/utils/user-name.d.ts +0 -2
  841. package/dist/utils/user-name.js +0 -19
  842. package/dist/utils/user-name.test.d.ts +0 -1
  843. package/dist/utils/validate-diff.d.ts +0 -7
  844. package/dist/utils/validate-diff.js +0 -113
  845. package/dist/utils/validate-diff.test.d.ts +0 -1
  846. package/dist/utils/validate-env.d.ts +0 -1
  847. package/dist/utils/validate-env.js +0 -18
  848. package/dist/utils/validate-env.test.d.ts +0 -1
  849. package/dist/utils/validate-keys.d.ts +0 -6
  850. package/dist/utils/validate-keys.js +0 -28
  851. package/dist/utils/validate-keys.test.d.ts +0 -1
  852. package/dist/utils/validate-query.d.ts +0 -2
  853. package/dist/utils/validate-query.js +0 -205
  854. package/dist/utils/validate-query.test.d.ts +0 -1
  855. package/dist/utils/validate-snapshot.d.ts +0 -5
  856. package/dist/utils/validate-snapshot.js +0 -71
  857. package/dist/utils/validate-snapshot.test.d.ts +0 -1
  858. package/dist/utils/validate-storage.d.ts +0 -1
  859. package/dist/utils/validate-storage.js +0 -38
  860. package/dist/webhooks.d.ts +0 -4
  861. package/dist/webhooks.js +0 -89
@@ -1,719 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ItemsService = void 0;
7
- const types_1 = require("@directus/shared/types");
8
- const lodash_1 = require("lodash");
9
- const cache_1 = require("../cache");
10
- const database_1 = __importDefault(require("../database"));
11
- const helpers_1 = require("../database/helpers");
12
- const run_ast_1 = __importDefault(require("../database/run-ast"));
13
- const emitter_1 = __importDefault(require("../emitter"));
14
- const env_1 = __importDefault(require("../env"));
15
- const exceptions_1 = require("../exceptions");
16
- const translate_1 = require("../exceptions/database/translate");
17
- const get_ast_from_query_1 = __importDefault(require("../utils/get-ast-from-query"));
18
- const validate_keys_1 = require("../utils/validate-keys");
19
- const authorization_1 = require("./authorization");
20
- const index_1 = require("./index");
21
- const payload_1 = require("./payload");
22
- class ItemsService {
23
- collection;
24
- knex;
25
- accountability;
26
- eventScope;
27
- schema;
28
- cache;
29
- constructor(collection, options) {
30
- this.collection = collection;
31
- this.knex = options.knex || (0, database_1.default)();
32
- this.accountability = options.accountability || null;
33
- this.eventScope = this.collection.startsWith('directus_') ? this.collection.substring(9) : 'items';
34
- this.schema = options.schema;
35
- this.cache = (0, cache_1.getCache)().cache;
36
- return this;
37
- }
38
- async getKeysByQuery(query) {
39
- const primaryKeyField = this.schema.collections[this.collection].primary;
40
- const readQuery = (0, lodash_1.cloneDeep)(query);
41
- readQuery.fields = [primaryKeyField];
42
- // Allow unauthenticated access
43
- const itemsService = new ItemsService(this.collection, {
44
- knex: this.knex,
45
- schema: this.schema,
46
- });
47
- // We read the IDs of the items based on the query, and then run `updateMany`. `updateMany` does it's own
48
- // permissions check for the keys, so we don't have to make this an authenticated read
49
- const items = await itemsService.readByQuery(readQuery);
50
- return items.map((item) => item[primaryKeyField]).filter((pk) => pk);
51
- }
52
- /**
53
- * Create a single new item.
54
- */
55
- async createOne(data, opts) {
56
- const primaryKeyField = this.schema.collections[this.collection].primary;
57
- const fields = Object.keys(this.schema.collections[this.collection].fields);
58
- const aliases = Object.values(this.schema.collections[this.collection].fields)
59
- .filter((field) => field.alias === true)
60
- .map((field) => field.field);
61
- const payload = (0, lodash_1.cloneDeep)(data);
62
- const nestedActionEvents = [];
63
- // By wrapping the logic in a transaction, we make sure we automatically roll back all the
64
- // changes in the DB if any of the parts contained within throws an error. This also means
65
- // that any errors thrown in any nested relational changes will bubble up and cancel the whole
66
- // update tree
67
- const primaryKey = await this.knex.transaction(async (trx) => {
68
- // We're creating new services instances so they can use the transaction as their Knex interface
69
- const payloadService = new payload_1.PayloadService(this.collection, {
70
- accountability: this.accountability,
71
- knex: trx,
72
- schema: this.schema,
73
- });
74
- const authorizationService = new authorization_1.AuthorizationService({
75
- accountability: this.accountability,
76
- knex: trx,
77
- schema: this.schema,
78
- });
79
- // Run all hooks that are attached to this event so the end user has the chance to augment the
80
- // item that is about to be saved
81
- const payloadAfterHooks = opts?.emitEvents !== false
82
- ? await emitter_1.default.emitFilter(this.eventScope === 'items'
83
- ? ['items.create', `${this.collection}.items.create`]
84
- : `${this.eventScope}.create`, payload, {
85
- collection: this.collection,
86
- }, {
87
- database: trx,
88
- schema: this.schema,
89
- accountability: this.accountability,
90
- })
91
- : payload;
92
- const payloadWithPresets = this.accountability
93
- ? await authorizationService.validatePayload('create', this.collection, payloadAfterHooks)
94
- : payloadAfterHooks;
95
- if (opts?.preMutationException) {
96
- throw opts.preMutationException;
97
- }
98
- const { payload: payloadWithM2O, revisions: revisionsM2O, nestedActionEvents: nestedActionEventsM2O, } = await payloadService.processM2O(payloadWithPresets, opts);
99
- const { payload: payloadWithA2O, revisions: revisionsA2O, nestedActionEvents: nestedActionEventsA2O, } = await payloadService.processA2O(payloadWithM2O, opts);
100
- const payloadWithoutAliases = (0, lodash_1.pick)(payloadWithA2O, (0, lodash_1.without)(fields, ...aliases));
101
- const payloadWithTypeCasting = await payloadService.processValues('create', payloadWithoutAliases);
102
- // In case of manual string / UUID primary keys, the PK already exists in the object we're saving.
103
- let primaryKey = payloadWithTypeCasting[primaryKeyField];
104
- try {
105
- const result = await trx
106
- .insert(payloadWithoutAliases)
107
- .into(this.collection)
108
- .returning(primaryKeyField)
109
- .then((result) => result[0]);
110
- const returnedKey = typeof result === 'object' ? result[primaryKeyField] : result;
111
- if (this.schema.collections[this.collection].fields[primaryKeyField].type === 'uuid') {
112
- primaryKey = (0, helpers_1.getHelpers)(trx).schema.formatUUID(primaryKey ?? returnedKey);
113
- }
114
- else {
115
- primaryKey = primaryKey ?? returnedKey;
116
- }
117
- }
118
- catch (err) {
119
- throw await (0, translate_1.translateDatabaseError)(err);
120
- }
121
- // Most database support returning, those who don't tend to return the PK anyways
122
- // (MySQL/SQLite). In case the primary key isn't know yet, we'll do a best-attempt at
123
- // fetching it based on the last inserted row
124
- if (!primaryKey) {
125
- // Fetching it with max should be safe, as we're in the context of the current transaction
126
- const result = await trx.max(primaryKeyField, { as: 'id' }).from(this.collection).first();
127
- primaryKey = result.id;
128
- // Set the primary key on the input item, in order for the "after" event hook to be able
129
- // to read from it
130
- payload[primaryKeyField] = primaryKey;
131
- }
132
- const { revisions: revisionsO2M, nestedActionEvents: nestedActionEventsO2M } = await payloadService.processO2M(payload, primaryKey, opts);
133
- nestedActionEvents.push(...nestedActionEventsM2O);
134
- nestedActionEvents.push(...nestedActionEventsA2O);
135
- nestedActionEvents.push(...nestedActionEventsO2M);
136
- // If this is an authenticated action, and accountability tracking is enabled, save activity row
137
- if (this.accountability && this.schema.collections[this.collection].accountability !== null) {
138
- const activityService = new index_1.ActivityService({
139
- knex: trx,
140
- schema: this.schema,
141
- });
142
- const activity = await activityService.createOne({
143
- action: types_1.Action.CREATE,
144
- user: this.accountability.user,
145
- collection: this.collection,
146
- ip: this.accountability.ip,
147
- user_agent: this.accountability.userAgent,
148
- origin: this.accountability.origin,
149
- item: primaryKey,
150
- });
151
- // If revisions are tracked, create revisions record
152
- if (this.schema.collections[this.collection].accountability === 'all') {
153
- const revisionsService = new index_1.RevisionsService({
154
- knex: trx,
155
- schema: this.schema,
156
- });
157
- const revisionDelta = await payloadService.prepareDelta(payloadAfterHooks);
158
- const revision = await revisionsService.createOne({
159
- activity: activity,
160
- collection: this.collection,
161
- item: primaryKey,
162
- data: revisionDelta,
163
- delta: revisionDelta,
164
- });
165
- // Make sure to set the parent field of the child-revision rows
166
- const childrenRevisions = [...revisionsM2O, ...revisionsA2O, ...revisionsO2M];
167
- if (childrenRevisions.length > 0) {
168
- await revisionsService.updateMany(childrenRevisions, { parent: revision });
169
- }
170
- if (opts?.onRevisionCreate) {
171
- opts.onRevisionCreate(revision);
172
- }
173
- }
174
- }
175
- return primaryKey;
176
- });
177
- if (opts?.emitEvents !== false) {
178
- const actionEvent = {
179
- event: this.eventScope === 'items'
180
- ? ['items.create', `${this.collection}.items.create`]
181
- : `${this.eventScope}.create`,
182
- meta: {
183
- payload,
184
- key: primaryKey,
185
- collection: this.collection,
186
- },
187
- context: {
188
- database: (0, database_1.default)(),
189
- schema: this.schema,
190
- accountability: this.accountability,
191
- },
192
- };
193
- if (opts?.bypassEmitAction) {
194
- opts.bypassEmitAction(actionEvent);
195
- }
196
- else {
197
- emitter_1.default.emitAction(actionEvent.event, actionEvent.meta, actionEvent.context);
198
- }
199
- for (const nestedActionEvent of nestedActionEvents) {
200
- if (opts?.bypassEmitAction) {
201
- opts.bypassEmitAction(nestedActionEvent);
202
- }
203
- else {
204
- emitter_1.default.emitAction(nestedActionEvent.event, nestedActionEvent.meta, nestedActionEvent.context);
205
- }
206
- }
207
- }
208
- if (this.cache && env_1.default['CACHE_AUTO_PURGE'] && opts?.autoPurgeCache !== false) {
209
- await this.cache.clear();
210
- }
211
- return primaryKey;
212
- }
213
- /**
214
- * Create multiple new items at once. Inserts all provided records sequentially wrapped in a transaction.
215
- */
216
- async createMany(data, opts) {
217
- const { primaryKeys, nestedActionEvents } = await this.knex.transaction(async (trx) => {
218
- const service = new ItemsService(this.collection, {
219
- accountability: this.accountability,
220
- schema: this.schema,
221
- knex: trx,
222
- });
223
- const primaryKeys = [];
224
- const nestedActionEvents = [];
225
- for (const payload of data) {
226
- const primaryKey = await service.createOne(payload, {
227
- ...(opts || {}),
228
- autoPurgeCache: false,
229
- bypassEmitAction: (params) => nestedActionEvents.push(params),
230
- });
231
- primaryKeys.push(primaryKey);
232
- }
233
- return { primaryKeys, nestedActionEvents };
234
- });
235
- if (opts?.emitEvents !== false) {
236
- for (const nestedActionEvent of nestedActionEvents) {
237
- if (opts?.bypassEmitAction) {
238
- opts.bypassEmitAction(nestedActionEvent);
239
- }
240
- else {
241
- emitter_1.default.emitAction(nestedActionEvent.event, nestedActionEvent.meta, nestedActionEvent.context);
242
- }
243
- }
244
- }
245
- if (this.cache && env_1.default['CACHE_AUTO_PURGE'] && opts?.autoPurgeCache !== false) {
246
- await this.cache.clear();
247
- }
248
- return primaryKeys;
249
- }
250
- /**
251
- * Get items by query
252
- */
253
- async readByQuery(query, opts) {
254
- const updatedQuery = opts?.emitEvents !== false
255
- ? await emitter_1.default.emitFilter(this.eventScope === 'items'
256
- ? ['items.query', `${this.collection}.items.query`]
257
- : `${this.eventScope}.query`, query, {
258
- collection: this.collection,
259
- }, {
260
- database: this.knex,
261
- schema: this.schema,
262
- accountability: this.accountability,
263
- })
264
- : query;
265
- let ast = await (0, get_ast_from_query_1.default)(this.collection, updatedQuery, this.schema, {
266
- accountability: this.accountability,
267
- // By setting the permissions action, you can read items using the permissions for another
268
- // operation's permissions. This is used to dynamically check if you have update/delete
269
- // access to (a) certain item(s)
270
- action: opts?.permissionsAction || 'read',
271
- knex: this.knex,
272
- });
273
- if (this.accountability && this.accountability.admin !== true) {
274
- const authorizationService = new authorization_1.AuthorizationService({
275
- accountability: this.accountability,
276
- knex: this.knex,
277
- schema: this.schema,
278
- });
279
- ast = await authorizationService.processAST(ast, opts?.permissionsAction);
280
- }
281
- const records = await (0, run_ast_1.default)(ast, this.schema, {
282
- knex: this.knex,
283
- // GraphQL requires relational keys to be returned regardless
284
- stripNonRequested: opts?.stripNonRequested !== undefined ? opts.stripNonRequested : true,
285
- });
286
- if (records === null) {
287
- throw new exceptions_1.ForbiddenException();
288
- }
289
- const filteredRecords = opts?.emitEvents !== false
290
- ? await emitter_1.default.emitFilter(this.eventScope === 'items' ? ['items.read', `${this.collection}.items.read`] : `${this.eventScope}.read`, records, {
291
- query: updatedQuery,
292
- collection: this.collection,
293
- }, {
294
- database: this.knex,
295
- schema: this.schema,
296
- accountability: this.accountability,
297
- })
298
- : records;
299
- if (opts?.emitEvents !== false) {
300
- emitter_1.default.emitAction(this.eventScope === 'items' ? ['items.read', `${this.collection}.items.read`] : `${this.eventScope}.read`, {
301
- payload: filteredRecords,
302
- query: updatedQuery,
303
- collection: this.collection,
304
- }, {
305
- database: this.knex || (0, database_1.default)(),
306
- schema: this.schema,
307
- accountability: this.accountability,
308
- });
309
- }
310
- return filteredRecords;
311
- }
312
- /**
313
- * Get single item by primary key
314
- */
315
- async readOne(key, query = {}, opts) {
316
- const primaryKeyField = this.schema.collections[this.collection].primary;
317
- (0, validate_keys_1.validateKeys)(this.schema, this.collection, primaryKeyField, key);
318
- const filterWithKey = (0, lodash_1.assign)({}, query.filter, { [primaryKeyField]: { _eq: key } });
319
- const queryWithKey = (0, lodash_1.assign)({}, query, { filter: filterWithKey });
320
- const results = await this.readByQuery(queryWithKey, opts);
321
- if (results.length === 0) {
322
- throw new exceptions_1.ForbiddenException();
323
- }
324
- return results[0];
325
- }
326
- /**
327
- * Get multiple items by primary keys
328
- */
329
- async readMany(keys, query = {}, opts) {
330
- const primaryKeyField = this.schema.collections[this.collection].primary;
331
- (0, validate_keys_1.validateKeys)(this.schema, this.collection, primaryKeyField, keys);
332
- const filterWithKey = { _and: [{ [primaryKeyField]: { _in: keys } }, query.filter ?? {}] };
333
- const queryWithKey = (0, lodash_1.assign)({}, query, { filter: filterWithKey });
334
- // Set query limit as the number of keys
335
- if (Array.isArray(keys) && keys.length > 0 && !queryWithKey.limit) {
336
- queryWithKey.limit = keys.length;
337
- }
338
- const results = await this.readByQuery(queryWithKey, opts);
339
- return results;
340
- }
341
- /**
342
- * Update multiple items by query
343
- */
344
- async updateByQuery(query, data, opts) {
345
- const keys = await this.getKeysByQuery(query);
346
- const primaryKeyField = this.schema.collections[this.collection].primary;
347
- (0, validate_keys_1.validateKeys)(this.schema, this.collection, primaryKeyField, keys);
348
- return keys.length ? await this.updateMany(keys, data, opts) : [];
349
- }
350
- /**
351
- * Update a single item by primary key
352
- */
353
- async updateOne(key, data, opts) {
354
- const primaryKeyField = this.schema.collections[this.collection].primary;
355
- (0, validate_keys_1.validateKeys)(this.schema, this.collection, primaryKeyField, key);
356
- await this.updateMany([key], data, opts);
357
- return key;
358
- }
359
- /**
360
- * Update multiple items in a single transaction
361
- */
362
- async updateBatch(data, opts) {
363
- if (!Array.isArray(data)) {
364
- throw new exceptions_1.InvalidPayloadException('Input should be an array of items.');
365
- }
366
- const primaryKeyField = this.schema.collections[this.collection].primary;
367
- const keys = [];
368
- try {
369
- await this.knex.transaction(async (trx) => {
370
- const service = new ItemsService(this.collection, {
371
- accountability: this.accountability,
372
- knex: trx,
373
- schema: this.schema,
374
- });
375
- for (const item of data) {
376
- if (!item[primaryKeyField])
377
- throw new exceptions_1.InvalidPayloadException(`Item in update misses primary key.`);
378
- const combinedOpts = Object.assign({ autoPurgeCache: false }, opts);
379
- keys.push(await service.updateOne(item[primaryKeyField], (0, lodash_1.omit)(item, primaryKeyField), combinedOpts));
380
- }
381
- });
382
- }
383
- finally {
384
- if (this.cache && env_1.default['CACHE_AUTO_PURGE'] && opts?.autoPurgeCache !== false) {
385
- await this.cache.clear();
386
- }
387
- }
388
- return keys;
389
- }
390
- /**
391
- * Update many items by primary key, setting all items to the same change
392
- */
393
- async updateMany(keys, data, opts) {
394
- const primaryKeyField = this.schema.collections[this.collection].primary;
395
- (0, validate_keys_1.validateKeys)(this.schema, this.collection, primaryKeyField, keys);
396
- const fields = Object.keys(this.schema.collections[this.collection].fields);
397
- const aliases = Object.values(this.schema.collections[this.collection].fields)
398
- .filter((field) => field.alias === true)
399
- .map((field) => field.field);
400
- const payload = (0, lodash_1.cloneDeep)(data);
401
- const nestedActionEvents = [];
402
- const authorizationService = new authorization_1.AuthorizationService({
403
- accountability: this.accountability,
404
- knex: this.knex,
405
- schema: this.schema,
406
- });
407
- // Run all hooks that are attached to this event so the end user has the chance to augment the
408
- // item that is about to be saved
409
- const payloadAfterHooks = opts?.emitEvents !== false
410
- ? await emitter_1.default.emitFilter(this.eventScope === 'items'
411
- ? ['items.update', `${this.collection}.items.update`]
412
- : `${this.eventScope}.update`, payload, {
413
- keys,
414
- collection: this.collection,
415
- }, {
416
- database: this.knex,
417
- schema: this.schema,
418
- accountability: this.accountability,
419
- })
420
- : payload;
421
- // Sort keys to ensure that the order is maintained
422
- keys.sort();
423
- if (this.accountability) {
424
- await authorizationService.checkAccess('update', this.collection, keys);
425
- }
426
- const payloadWithPresets = this.accountability
427
- ? await authorizationService.validatePayload('update', this.collection, payloadAfterHooks)
428
- : payloadAfterHooks;
429
- if (opts?.preMutationException) {
430
- throw opts.preMutationException;
431
- }
432
- await this.knex.transaction(async (trx) => {
433
- const payloadService = new payload_1.PayloadService(this.collection, {
434
- accountability: this.accountability,
435
- knex: trx,
436
- schema: this.schema,
437
- });
438
- const { payload: payloadWithM2O, revisions: revisionsM2O, nestedActionEvents: nestedActionEventsM2O, } = await payloadService.processM2O(payloadWithPresets, opts);
439
- const { payload: payloadWithA2O, revisions: revisionsA2O, nestedActionEvents: nestedActionEventsA2O, } = await payloadService.processA2O(payloadWithM2O, opts);
440
- const payloadWithoutAliasAndPK = (0, lodash_1.pick)(payloadWithA2O, (0, lodash_1.without)(fields, primaryKeyField, ...aliases));
441
- const payloadWithTypeCasting = await payloadService.processValues('update', payloadWithoutAliasAndPK);
442
- if (Object.keys(payloadWithTypeCasting).length > 0) {
443
- try {
444
- await trx(this.collection).update(payloadWithTypeCasting).whereIn(primaryKeyField, keys);
445
- }
446
- catch (err) {
447
- throw await (0, translate_1.translateDatabaseError)(err);
448
- }
449
- }
450
- const childrenRevisions = [...revisionsM2O, ...revisionsA2O];
451
- nestedActionEvents.push(...nestedActionEventsM2O);
452
- nestedActionEvents.push(...nestedActionEventsA2O);
453
- for (const key of keys) {
454
- const { revisions, nestedActionEvents: nestedActionEventsO2M } = await payloadService.processO2M(payload, key, opts);
455
- childrenRevisions.push(...revisions);
456
- nestedActionEvents.push(...nestedActionEventsO2M);
457
- }
458
- // If this is an authenticated action, and accountability tracking is enabled, save activity row
459
- if (this.accountability && this.schema.collections[this.collection].accountability !== null) {
460
- const activityService = new index_1.ActivityService({
461
- knex: trx,
462
- schema: this.schema,
463
- });
464
- const activity = await activityService.createMany(keys.map((key) => ({
465
- action: types_1.Action.UPDATE,
466
- user: this.accountability.user,
467
- collection: this.collection,
468
- ip: this.accountability.ip,
469
- user_agent: this.accountability.userAgent,
470
- origin: this.accountability.origin,
471
- item: key,
472
- })));
473
- if (this.schema.collections[this.collection].accountability === 'all') {
474
- const itemsService = new ItemsService(this.collection, {
475
- knex: trx,
476
- schema: this.schema,
477
- });
478
- const snapshots = await itemsService.readMany(keys);
479
- const revisionsService = new index_1.RevisionsService({
480
- knex: trx,
481
- schema: this.schema,
482
- });
483
- const revisions = (await Promise.all(activity.map(async (activity, index) => ({
484
- activity: activity,
485
- collection: this.collection,
486
- item: keys[index],
487
- data: snapshots && Array.isArray(snapshots) ? JSON.stringify(snapshots[index]) : JSON.stringify(snapshots),
488
- delta: await payloadService.prepareDelta(payloadWithTypeCasting),
489
- })))).filter((revision) => revision.delta);
490
- const revisionIDs = await revisionsService.createMany(revisions);
491
- for (let i = 0; i < revisionIDs.length; i++) {
492
- const revisionID = revisionIDs[i];
493
- if (opts?.onRevisionCreate) {
494
- opts.onRevisionCreate(revisionID);
495
- }
496
- if (i === 0) {
497
- // In case of a nested relational creation/update in a updateMany, the nested m2o/a2o
498
- // creation is only done once. We treat the first updated item as the "main" update,
499
- // with all other revisions on the current level as regular "flat" updates, and
500
- // nested revisions as children of this first "root" item.
501
- if (childrenRevisions.length > 0) {
502
- await revisionsService.updateMany(childrenRevisions, { parent: revisionID });
503
- }
504
- }
505
- }
506
- }
507
- }
508
- });
509
- if (this.cache && env_1.default['CACHE_AUTO_PURGE'] && opts?.autoPurgeCache !== false) {
510
- await this.cache.clear();
511
- }
512
- if (opts?.emitEvents !== false) {
513
- const actionEvent = {
514
- event: this.eventScope === 'items'
515
- ? ['items.update', `${this.collection}.items.update`]
516
- : `${this.eventScope}.update`,
517
- meta: {
518
- payload,
519
- keys,
520
- collection: this.collection,
521
- },
522
- context: {
523
- database: (0, database_1.default)(),
524
- schema: this.schema,
525
- accountability: this.accountability,
526
- },
527
- };
528
- if (opts?.bypassEmitAction) {
529
- opts.bypassEmitAction(actionEvent);
530
- }
531
- else {
532
- emitter_1.default.emitAction(actionEvent.event, actionEvent.meta, actionEvent.context);
533
- }
534
- for (const nestedActionEvent of nestedActionEvents) {
535
- if (opts?.bypassEmitAction) {
536
- opts.bypassEmitAction(nestedActionEvent);
537
- }
538
- else {
539
- emitter_1.default.emitAction(nestedActionEvent.event, nestedActionEvent.meta, nestedActionEvent.context);
540
- }
541
- }
542
- }
543
- return keys;
544
- }
545
- /**
546
- * Upsert a single item
547
- */
548
- async upsertOne(payload, opts) {
549
- const primaryKeyField = this.schema.collections[this.collection].primary;
550
- const primaryKey = payload[primaryKeyField];
551
- if (primaryKey) {
552
- (0, validate_keys_1.validateKeys)(this.schema, this.collection, primaryKeyField, primaryKey);
553
- }
554
- const exists = primaryKey &&
555
- !!(await this.knex
556
- .select(primaryKeyField)
557
- .from(this.collection)
558
- .where({ [primaryKeyField]: primaryKey })
559
- .first());
560
- if (exists) {
561
- return await this.updateOne(primaryKey, payload, opts);
562
- }
563
- else {
564
- return await this.createOne(payload, opts);
565
- }
566
- }
567
- /**
568
- * Upsert many items
569
- */
570
- async upsertMany(payloads, opts) {
571
- const primaryKeys = await this.knex.transaction(async (trx) => {
572
- const service = new ItemsService(this.collection, {
573
- accountability: this.accountability,
574
- schema: this.schema,
575
- knex: trx,
576
- });
577
- const primaryKeys = [];
578
- for (const payload of payloads) {
579
- const primaryKey = await service.upsertOne(payload, { ...(opts || {}), autoPurgeCache: false });
580
- primaryKeys.push(primaryKey);
581
- }
582
- return primaryKeys;
583
- });
584
- if (this.cache && env_1.default['CACHE_AUTO_PURGE'] && opts?.autoPurgeCache !== false) {
585
- await this.cache.clear();
586
- }
587
- return primaryKeys;
588
- }
589
- /**
590
- * Delete multiple items by query
591
- */
592
- async deleteByQuery(query, opts) {
593
- const keys = await this.getKeysByQuery(query);
594
- const primaryKeyField = this.schema.collections[this.collection].primary;
595
- (0, validate_keys_1.validateKeys)(this.schema, this.collection, primaryKeyField, keys);
596
- return keys.length ? await this.deleteMany(keys, opts) : [];
597
- }
598
- /**
599
- * Delete a single item by primary key
600
- */
601
- async deleteOne(key, opts) {
602
- const primaryKeyField = this.schema.collections[this.collection].primary;
603
- (0, validate_keys_1.validateKeys)(this.schema, this.collection, primaryKeyField, key);
604
- await this.deleteMany([key], opts);
605
- return key;
606
- }
607
- /**
608
- * Delete multiple items by primary key
609
- */
610
- async deleteMany(keys, opts) {
611
- const primaryKeyField = this.schema.collections[this.collection].primary;
612
- (0, validate_keys_1.validateKeys)(this.schema, this.collection, primaryKeyField, keys);
613
- if (this.accountability && this.accountability.admin !== true) {
614
- const authorizationService = new authorization_1.AuthorizationService({
615
- accountability: this.accountability,
616
- schema: this.schema,
617
- knex: this.knex,
618
- });
619
- await authorizationService.checkAccess('delete', this.collection, keys);
620
- }
621
- if (opts?.preMutationException) {
622
- throw opts.preMutationException;
623
- }
624
- if (opts?.emitEvents !== false) {
625
- await emitter_1.default.emitFilter(this.eventScope === 'items' ? ['items.delete', `${this.collection}.items.delete`] : `${this.eventScope}.delete`, keys, {
626
- collection: this.collection,
627
- }, {
628
- database: this.knex,
629
- schema: this.schema,
630
- accountability: this.accountability,
631
- });
632
- }
633
- await this.knex.transaction(async (trx) => {
634
- await trx(this.collection).whereIn(primaryKeyField, keys).delete();
635
- if (this.accountability && this.schema.collections[this.collection].accountability !== null) {
636
- const activityService = new index_1.ActivityService({
637
- knex: trx,
638
- schema: this.schema,
639
- });
640
- await activityService.createMany(keys.map((key) => ({
641
- action: types_1.Action.DELETE,
642
- user: this.accountability.user,
643
- collection: this.collection,
644
- ip: this.accountability.ip,
645
- user_agent: this.accountability.userAgent,
646
- origin: this.accountability.origin,
647
- item: key,
648
- })));
649
- }
650
- });
651
- if (this.cache && env_1.default['CACHE_AUTO_PURGE'] && opts?.autoPurgeCache !== false) {
652
- await this.cache.clear();
653
- }
654
- if (opts?.emitEvents !== false) {
655
- const actionEvent = {
656
- event: this.eventScope === 'items'
657
- ? ['items.delete', `${this.collection}.items.delete`]
658
- : `${this.eventScope}.delete`,
659
- meta: {
660
- payload: keys,
661
- keys: keys,
662
- collection: this.collection,
663
- },
664
- context: {
665
- database: (0, database_1.default)(),
666
- schema: this.schema,
667
- accountability: this.accountability,
668
- },
669
- };
670
- if (opts?.bypassEmitAction) {
671
- opts.bypassEmitAction(actionEvent);
672
- }
673
- else {
674
- emitter_1.default.emitAction(actionEvent.event, actionEvent.meta, actionEvent.context);
675
- }
676
- }
677
- return keys;
678
- }
679
- /**
680
- * Read/treat collection as singleton
681
- */
682
- async readSingleton(query, opts) {
683
- query = (0, lodash_1.clone)(query);
684
- query.limit = 1;
685
- const records = await this.readByQuery(query, opts);
686
- const record = records[0];
687
- if (!record) {
688
- let fields = Object.entries(this.schema.collections[this.collection].fields);
689
- const defaults = {};
690
- if (query.fields && query.fields.includes('*') === false) {
691
- fields = fields.filter(([name]) => {
692
- return query.fields.includes(name);
693
- });
694
- }
695
- for (const [name, field] of fields) {
696
- if (this.schema.collections[this.collection].primary === name) {
697
- defaults[name] = null;
698
- continue;
699
- }
700
- if (field.defaultValue)
701
- defaults[name] = field.defaultValue;
702
- }
703
- return defaults;
704
- }
705
- return record;
706
- }
707
- /**
708
- * Upsert/treat collection as singleton
709
- */
710
- async upsertSingleton(data, opts) {
711
- const primaryKeyField = this.schema.collections[this.collection].primary;
712
- const record = await this.knex.select(primaryKeyField).from(this.collection).limit(1).first();
713
- if (record) {
714
- return await this.updateOne(record[primaryKeyField], data, opts);
715
- }
716
- return await this.createOne(data, opts);
717
- }
718
- }
719
- exports.ItemsService = ItemsService;