directus 9.24.0 → 9.25.1

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/dist/app.d.ts +0 -2
  5. package/dist/app.js +0 -250
  6. package/dist/app.test.d.ts +0 -1
  7. package/dist/auth/auth.d.ts +0 -46
  8. package/dist/auth/auth.js +0 -40
  9. package/dist/auth/drivers/index.d.ts +0 -5
  10. package/dist/auth/drivers/index.js +0 -21
  11. package/dist/auth/drivers/ldap.d.ts +0 -20
  12. package/dist/auth/drivers/ldap.js +0 -349
  13. package/dist/auth/drivers/local.d.ts +0 -9
  14. package/dist/auth/drivers/local.js +0 -91
  15. package/dist/auth/drivers/oauth2.d.ts +0 -19
  16. package/dist/auth/drivers/oauth2.js +0 -310
  17. package/dist/auth/drivers/openid.d.ts +0 -19
  18. package/dist/auth/drivers/openid.js +0 -332
  19. package/dist/auth/drivers/saml.d.ts +0 -14
  20. package/dist/auth/drivers/saml.js +0 -169
  21. package/dist/auth.d.ts +0 -3
  22. package/dist/auth.js +0 -70
  23. package/dist/cache.d.ts +0 -20
  24. package/dist/cache.js +0 -151
  25. package/dist/cli/commands/bootstrap/index.d.ts +0 -3
  26. package/dist/cli/commands/bootstrap/index.js +0 -98
  27. package/dist/cli/commands/count/index.d.ts +0 -1
  28. package/dist/cli/commands/count/index.js +0 -27
  29. package/dist/cli/commands/database/install.d.ts +0 -1
  30. package/dist/cli/commands/database/install.js +0 -22
  31. package/dist/cli/commands/database/migrate.d.ts +0 -1
  32. package/dist/cli/commands/database/migrate.js +0 -29
  33. package/dist/cli/commands/init/index.d.ts +0 -1
  34. package/dist/cli/commands/init/index.js +0 -108
  35. package/dist/cli/commands/init/questions.d.ts +0 -20
  36. package/dist/cli/commands/init/questions.js +0 -71
  37. package/dist/cli/commands/roles/create.d.ts +0 -4
  38. package/dist/cli/commands/roles/create.js +0 -29
  39. package/dist/cli/commands/schema/apply.d.ts +0 -4
  40. package/dist/cli/commands/schema/apply.js +0 -183
  41. package/dist/cli/commands/schema/snapshot.d.ts +0 -4
  42. package/dist/cli/commands/schema/snapshot.js +0 -63
  43. package/dist/cli/commands/security/key.d.ts +0 -1
  44. package/dist/cli/commands/security/key.js +0 -8
  45. package/dist/cli/commands/security/secret.d.ts +0 -1
  46. package/dist/cli/commands/security/secret.js +0 -8
  47. package/dist/cli/commands/users/create.d.ts +0 -5
  48. package/dist/cli/commands/users/create.js +0 -29
  49. package/dist/cli/commands/users/passwd.d.ts +0 -4
  50. package/dist/cli/commands/users/passwd.js +0 -41
  51. package/dist/cli/index.d.ts +0 -2
  52. package/dist/cli/index.js +0 -96
  53. package/dist/cli/index.test.d.ts +0 -1
  54. package/dist/cli/run.d.ts +0 -1
  55. package/dist/cli/run.js +0 -10
  56. package/dist/cli/utils/create-db-connection.d.ts +0 -13
  57. package/dist/cli/utils/create-db-connection.js +0 -61
  58. package/dist/cli/utils/create-env/env-stub.liquid +0 -325
  59. package/dist/cli/utils/create-env/index.d.ts +0 -3
  60. package/dist/cli/utils/create-env/index.js +0 -44
  61. package/dist/cli/utils/defaults.d.ts +0 -11
  62. package/dist/cli/utils/defaults.js +0 -14
  63. package/dist/cli/utils/drivers.d.ts +0 -3
  64. package/dist/cli/utils/drivers.js +0 -19
  65. package/dist/constants.d.ts +0 -13
  66. package/dist/constants.js +0 -59
  67. package/dist/controllers/activity.d.ts +0 -2
  68. package/dist/controllers/activity.js +0 -135
  69. package/dist/controllers/assets.d.ts +0 -2
  70. package/dist/controllers/assets.js +0 -186
  71. package/dist/controllers/auth.d.ts +0 -2
  72. package/dist/controllers/auth.js +0 -167
  73. package/dist/controllers/collections.d.ts +0 -2
  74. package/dist/controllers/collections.js +0 -105
  75. package/dist/controllers/dashboards.d.ts +0 -2
  76. package/dist/controllers/dashboards.js +0 -144
  77. package/dist/controllers/extensions.d.ts +0 -2
  78. package/dist/controllers/extensions.js +0 -40
  79. package/dist/controllers/fields.d.ts +0 -2
  80. package/dist/controllers/fields.js +0 -160
  81. package/dist/controllers/files.d.ts +0 -4
  82. package/dist/controllers/files.js +0 -274
  83. package/dist/controllers/files.test.d.ts +0 -1
  84. package/dist/controllers/flows.d.ts +0 -2
  85. package/dist/controllers/flows.js +0 -163
  86. package/dist/controllers/folders.d.ts +0 -2
  87. package/dist/controllers/folders.js +0 -153
  88. package/dist/controllers/graphql.d.ts +0 -2
  89. package/dist/controllers/graphql.js +0 -36
  90. package/dist/controllers/items.d.ts +0 -2
  91. package/dist/controllers/items.js +0 -183
  92. package/dist/controllers/not-found.d.ts +0 -14
  93. package/dist/controllers/not-found.js +0 -36
  94. package/dist/controllers/notifications.d.ts +0 -2
  95. package/dist/controllers/notifications.js +0 -153
  96. package/dist/controllers/operations.d.ts +0 -2
  97. package/dist/controllers/operations.js +0 -144
  98. package/dist/controllers/panels.d.ts +0 -2
  99. package/dist/controllers/panels.js +0 -144
  100. package/dist/controllers/permissions.d.ts +0 -2
  101. package/dist/controllers/permissions.js +0 -155
  102. package/dist/controllers/presets.d.ts +0 -2
  103. package/dist/controllers/presets.js +0 -153
  104. package/dist/controllers/relations.d.ts +0 -2
  105. package/dist/controllers/relations.js +0 -117
  106. package/dist/controllers/revisions.d.ts +0 -2
  107. package/dist/controllers/revisions.js +0 -39
  108. package/dist/controllers/roles.d.ts +0 -2
  109. package/dist/controllers/roles.js +0 -144
  110. package/dist/controllers/schema.d.ts +0 -2
  111. package/dist/controllers/schema.js +0 -98
  112. package/dist/controllers/server.d.ts +0 -2
  113. package/dist/controllers/server.js +0 -61
  114. package/dist/controllers/settings.d.ts +0 -2
  115. package/dist/controllers/settings.js +0 -41
  116. package/dist/controllers/shares.d.ts +0 -2
  117. package/dist/controllers/shares.js +0 -218
  118. package/dist/controllers/users.d.ts +0 -2
  119. package/dist/controllers/users.js +0 -358
  120. package/dist/controllers/utils.d.ts +0 -2
  121. package/dist/controllers/utils.js +0 -121
  122. package/dist/controllers/webhooks.d.ts +0 -2
  123. package/dist/controllers/webhooks.js +0 -141
  124. package/dist/database/helpers/date/dialects/default.d.ts +0 -3
  125. package/dist/database/helpers/date/dialects/default.js +0 -7
  126. package/dist/database/helpers/date/dialects/mssql.d.ts +0 -4
  127. package/dist/database/helpers/date/dialects/mssql.js +0 -12
  128. package/dist/database/helpers/date/dialects/mysql.d.ts +0 -5
  129. package/dist/database/helpers/date/dialects/mysql.js +0 -16
  130. package/dist/database/helpers/date/dialects/oracle.d.ts +0 -4
  131. package/dist/database/helpers/date/dialects/oracle.js +0 -15
  132. package/dist/database/helpers/date/dialects/sqlite.d.ts +0 -5
  133. package/dist/database/helpers/date/dialects/sqlite.js +0 -30
  134. package/dist/database/helpers/date/index.d.ts +0 -7
  135. package/dist/database/helpers/date/index.js +0 -17
  136. package/dist/database/helpers/date/types.d.ts +0 -7
  137. package/dist/database/helpers/date/types.js +0 -24
  138. package/dist/database/helpers/fn/dialects/mssql.d.ts +0 -13
  139. package/dist/database/helpers/fn/dialects/mssql.js +0 -48
  140. package/dist/database/helpers/fn/dialects/mysql.d.ts +0 -13
  141. package/dist/database/helpers/fn/dialects/mysql.js +0 -42
  142. package/dist/database/helpers/fn/dialects/oracle.d.ts +0 -13
  143. package/dist/database/helpers/fn/dialects/oracle.js +0 -48
  144. package/dist/database/helpers/fn/dialects/postgres.d.ts +0 -13
  145. package/dist/database/helpers/fn/dialects/postgres.js +0 -52
  146. package/dist/database/helpers/fn/dialects/sqlite.d.ts +0 -13
  147. package/dist/database/helpers/fn/dialects/sqlite.js +0 -72
  148. package/dist/database/helpers/fn/index.d.ts +0 -7
  149. package/dist/database/helpers/fn/index.js +0 -17
  150. package/dist/database/helpers/fn/types.d.ts +0 -22
  151. package/dist/database/helpers/fn/types.js +0 -30
  152. package/dist/database/helpers/geometry/dialects/mssql.d.ts +0 -14
  153. package/dist/database/helpers/geometry/dialects/mssql.js +0 -36
  154. package/dist/database/helpers/geometry/dialects/mysql.d.ts +0 -7
  155. package/dist/database/helpers/geometry/dialects/mysql.js +0 -16
  156. package/dist/database/helpers/geometry/dialects/oracle.d.ts +0 -15
  157. package/dist/database/helpers/geometry/dialects/oracle.js +0 -39
  158. package/dist/database/helpers/geometry/dialects/postgres.d.ts +0 -10
  159. package/dist/database/helpers/geometry/dialects/postgres.js +0 -22
  160. package/dist/database/helpers/geometry/dialects/redshift.d.ts +0 -7
  161. package/dist/database/helpers/geometry/dialects/redshift.js +0 -16
  162. package/dist/database/helpers/geometry/dialects/sqlite.d.ts +0 -6
  163. package/dist/database/helpers/geometry/dialects/sqlite.js +0 -14
  164. package/dist/database/helpers/geometry/index.d.ts +0 -7
  165. package/dist/database/helpers/geometry/index.js +0 -17
  166. package/dist/database/helpers/geometry/types.d.ts +0 -20
  167. package/dist/database/helpers/geometry/types.js +0 -53
  168. package/dist/database/helpers/index.d.ts +0 -13
  169. package/dist/database/helpers/index.js +0 -45
  170. package/dist/database/helpers/schema/dialects/cockroachdb.d.ts +0 -6
  171. package/dist/database/helpers/schema/dialects/cockroachdb.js +0 -21
  172. package/dist/database/helpers/schema/dialects/default.d.ts +0 -3
  173. package/dist/database/helpers/schema/dialects/default.js +0 -7
  174. package/dist/database/helpers/schema/dialects/mssql.d.ts +0 -7
  175. package/dist/database/helpers/schema/dialects/mssql.js +0 -24
  176. package/dist/database/helpers/schema/dialects/mysql.d.ts +0 -5
  177. package/dist/database/helpers/schema/dialects/mysql.js +0 -18
  178. package/dist/database/helpers/schema/dialects/oracle.d.ts +0 -9
  179. package/dist/database/helpers/schema/dialects/oracle.js +0 -36
  180. package/dist/database/helpers/schema/dialects/sqlite.d.ts +0 -5
  181. package/dist/database/helpers/schema/dialects/sqlite.js +0 -17
  182. package/dist/database/helpers/schema/index.d.ts +0 -7
  183. package/dist/database/helpers/schema/index.js +0 -17
  184. package/dist/database/helpers/schema/types.d.ts +0 -26
  185. package/dist/database/helpers/schema/types.js +0 -95
  186. package/dist/database/helpers/types.d.ts +0 -5
  187. package/dist/database/helpers/types.js +0 -10
  188. package/dist/database/index.d.ts +0 -20
  189. package/dist/database/index.js +0 -279
  190. package/dist/database/migrations/20201028A-remove-collection-foreign-keys.d.ts +0 -3
  191. package/dist/database/migrations/20201028A-remove-collection-foreign-keys.js +0 -47
  192. package/dist/database/migrations/20201029A-remove-system-relations.d.ts +0 -3
  193. package/dist/database/migrations/20201029A-remove-system-relations.js +0 -127
  194. package/dist/database/migrations/20201029B-remove-system-collections.d.ts +0 -3
  195. package/dist/database/migrations/20201029B-remove-system-collections.js +0 -98
  196. package/dist/database/migrations/20201029C-remove-system-fields.d.ts +0 -3
  197. package/dist/database/migrations/20201029C-remove-system-fields.js +0 -1648
  198. package/dist/database/migrations/20201105A-add-cascade-system-relations.d.ts +0 -8
  199. package/dist/database/migrations/20201105A-add-cascade-system-relations.js +0 -136
  200. package/dist/database/migrations/20201105B-change-webhook-url-type.d.ts +0 -3
  201. package/dist/database/migrations/20201105B-change-webhook-url-type.js +0 -17
  202. package/dist/database/migrations/20210225A-add-relations-sort-field.d.ts +0 -3
  203. package/dist/database/migrations/20210225A-add-relations-sort-field.js +0 -33
  204. package/dist/database/migrations/20210304A-remove-locked-fields.d.ts +0 -3
  205. package/dist/database/migrations/20210304A-remove-locked-fields.js +0 -15
  206. package/dist/database/migrations/20210312A-webhooks-collections-text.d.ts +0 -3
  207. package/dist/database/migrations/20210312A-webhooks-collections-text.js +0 -17
  208. package/dist/database/migrations/20210331A-add-refresh-interval.d.ts +0 -3
  209. package/dist/database/migrations/20210331A-add-refresh-interval.js +0 -15
  210. package/dist/database/migrations/20210415A-make-filesize-nullable.d.ts +0 -3
  211. package/dist/database/migrations/20210415A-make-filesize-nullable.js +0 -20
  212. package/dist/database/migrations/20210416A-add-collections-accountability.d.ts +0 -3
  213. package/dist/database/migrations/20210416A-add-collections-accountability.js +0 -16
  214. package/dist/database/migrations/20210422A-remove-files-interface.d.ts +0 -3
  215. package/dist/database/migrations/20210422A-remove-files-interface.js +0 -11
  216. package/dist/database/migrations/20210506A-rename-interfaces.d.ts +0 -3
  217. package/dist/database/migrations/20210506A-rename-interfaces.js +0 -79
  218. package/dist/database/migrations/20210510A-restructure-relations.d.ts +0 -3
  219. package/dist/database/migrations/20210510A-restructure-relations.js +0 -32
  220. package/dist/database/migrations/20210518A-add-foreign-key-constraints.d.ts +0 -3
  221. package/dist/database/migrations/20210518A-add-foreign-key-constraints.js +0 -114
  222. package/dist/database/migrations/20210519A-add-system-fk-triggers.d.ts +0 -3
  223. package/dist/database/migrations/20210519A-add-system-fk-triggers.js +0 -172
  224. package/dist/database/migrations/20210521A-add-collections-icon-color.d.ts +0 -3
  225. package/dist/database/migrations/20210521A-add-collections-icon-color.js +0 -15
  226. package/dist/database/migrations/20210525A-add-insights.d.ts +0 -3
  227. package/dist/database/migrations/20210525A-add-insights.js +0 -36
  228. package/dist/database/migrations/20210608A-add-deep-clone-config.d.ts +0 -3
  229. package/dist/database/migrations/20210608A-add-deep-clone-config.js +0 -15
  230. package/dist/database/migrations/20210626A-change-filesize-bigint.d.ts +0 -3
  231. package/dist/database/migrations/20210626A-change-filesize-bigint.js +0 -24
  232. package/dist/database/migrations/20210716A-add-conditions-to-fields.d.ts +0 -3
  233. package/dist/database/migrations/20210716A-add-conditions-to-fields.js +0 -15
  234. package/dist/database/migrations/20210721A-add-default-folder.d.ts +0 -3
  235. package/dist/database/migrations/20210721A-add-default-folder.js +0 -23
  236. package/dist/database/migrations/20210802A-replace-groups.d.ts +0 -3
  237. package/dist/database/migrations/20210802A-replace-groups.js +0 -53
  238. package/dist/database/migrations/20210803A-add-required-to-fields.d.ts +0 -3
  239. package/dist/database/migrations/20210803A-add-required-to-fields.js +0 -15
  240. package/dist/database/migrations/20210805A-update-groups.d.ts +0 -3
  241. package/dist/database/migrations/20210805A-update-groups.js +0 -34
  242. package/dist/database/migrations/20210805B-change-image-metadata-structure.d.ts +0 -3
  243. package/dist/database/migrations/20210805B-change-image-metadata-structure.js +0 -89
  244. package/dist/database/migrations/20210811A-add-geometry-config.d.ts +0 -3
  245. package/dist/database/migrations/20210811A-add-geometry-config.js +0 -17
  246. package/dist/database/migrations/20210831A-remove-limit-column.d.ts +0 -3
  247. package/dist/database/migrations/20210831A-remove-limit-column.js +0 -15
  248. package/dist/database/migrations/20210903A-add-auth-provider.d.ts +0 -3
  249. package/dist/database/migrations/20210903A-add-auth-provider.js +0 -40
  250. package/dist/database/migrations/20210907A-webhooks-collections-not-null.d.ts +0 -3
  251. package/dist/database/migrations/20210907A-webhooks-collections-not-null.js +0 -18
  252. package/dist/database/migrations/20210910A-move-module-setup.d.ts +0 -3
  253. package/dist/database/migrations/20210910A-move-module-setup.js +0 -21
  254. package/dist/database/migrations/20210920A-webhooks-url-not-null.d.ts +0 -3
  255. package/dist/database/migrations/20210920A-webhooks-url-not-null.js +0 -26
  256. package/dist/database/migrations/20210924A-add-collection-organization.d.ts +0 -3
  257. package/dist/database/migrations/20210924A-add-collection-organization.js +0 -19
  258. package/dist/database/migrations/20210927A-replace-fields-group.d.ts +0 -3
  259. package/dist/database/migrations/20210927A-replace-fields-group.js +0 -53
  260. package/dist/database/migrations/20210927B-replace-m2m-interface.d.ts +0 -3
  261. package/dist/database/migrations/20210927B-replace-m2m-interface.js +0 -21
  262. package/dist/database/migrations/20210929A-rename-login-action.d.ts +0 -3
  263. package/dist/database/migrations/20210929A-rename-login-action.js +0 -19
  264. package/dist/database/migrations/20211007A-update-presets.d.ts +0 -3
  265. package/dist/database/migrations/20211007A-update-presets.js +0 -103
  266. package/dist/database/migrations/20211009A-add-auth-data.d.ts +0 -3
  267. package/dist/database/migrations/20211009A-add-auth-data.js +0 -15
  268. package/dist/database/migrations/20211016A-add-webhook-headers.d.ts +0 -3
  269. package/dist/database/migrations/20211016A-add-webhook-headers.js +0 -15
  270. package/dist/database/migrations/20211103A-set-unique-to-user-token.d.ts +0 -3
  271. package/dist/database/migrations/20211103A-set-unique-to-user-token.js +0 -15
  272. package/dist/database/migrations/20211103B-update-special-geometry.d.ts +0 -3
  273. package/dist/database/migrations/20211103B-update-special-geometry.js +0 -25
  274. package/dist/database/migrations/20211104A-remove-collections-listing.d.ts +0 -3
  275. package/dist/database/migrations/20211104A-remove-collections-listing.js +0 -15
  276. package/dist/database/migrations/20211118A-add-notifications.d.ts +0 -3
  277. package/dist/database/migrations/20211118A-add-notifications.js +0 -28
  278. package/dist/database/migrations/20211211A-add-shares.d.ts +0 -3
  279. package/dist/database/migrations/20211211A-add-shares.js +0 -38
  280. package/dist/database/migrations/20211230A-add-project-descriptor.d.ts +0 -3
  281. package/dist/database/migrations/20211230A-add-project-descriptor.js +0 -15
  282. package/dist/database/migrations/20220303A-remove-default-project-color.d.ts +0 -3
  283. package/dist/database/migrations/20220303A-remove-default-project-color.js +0 -22
  284. package/dist/database/migrations/20220308A-add-bookmark-icon-and-color.d.ts +0 -3
  285. package/dist/database/migrations/20220308A-add-bookmark-icon-and-color.js +0 -17
  286. package/dist/database/migrations/20220314A-add-translation-strings.d.ts +0 -3
  287. package/dist/database/migrations/20220314A-add-translation-strings.js +0 -15
  288. package/dist/database/migrations/20220322A-rename-field-typecast-flags.d.ts +0 -3
  289. package/dist/database/migrations/20220322A-rename-field-typecast-flags.js +0 -77
  290. package/dist/database/migrations/20220323A-add-field-validation.d.ts +0 -3
  291. package/dist/database/migrations/20220323A-add-field-validation.js +0 -17
  292. package/dist/database/migrations/20220325A-fix-typecast-flags.d.ts +0 -3
  293. package/dist/database/migrations/20220325A-fix-typecast-flags.js +0 -49
  294. package/dist/database/migrations/20220325B-add-default-language.d.ts +0 -3
  295. package/dist/database/migrations/20220325B-add-default-language.js +0 -28
  296. package/dist/database/migrations/20220402A-remove-default-value-panel-icon.d.ts +0 -3
  297. package/dist/database/migrations/20220402A-remove-default-value-panel-icon.js +0 -22
  298. package/dist/database/migrations/20220429A-add-flows.d.ts +0 -3
  299. package/dist/database/migrations/20220429A-add-flows.js +0 -82
  300. package/dist/database/migrations/20220429B-add-color-to-insights-icon.d.ts +0 -3
  301. package/dist/database/migrations/20220429B-add-color-to-insights-icon.js +0 -15
  302. package/dist/database/migrations/20220429C-drop-non-null-from-ip-of-activity.d.ts +0 -3
  303. package/dist/database/migrations/20220429C-drop-non-null-from-ip-of-activity.js +0 -15
  304. package/dist/database/migrations/20220429D-drop-non-null-from-sender-of-notifications.d.ts +0 -3
  305. package/dist/database/migrations/20220429D-drop-non-null-from-sender-of-notifications.js +0 -15
  306. package/dist/database/migrations/20220614A-rename-hook-trigger-to-event.d.ts +0 -3
  307. package/dist/database/migrations/20220614A-rename-hook-trigger-to-event.js +0 -11
  308. package/dist/database/migrations/20220801A-update-notifications-timestamp-column.d.ts +0 -3
  309. package/dist/database/migrations/20220801A-update-notifications-timestamp-column.js +0 -19
  310. package/dist/database/migrations/20220802A-add-custom-aspect-ratios.d.ts +0 -3
  311. package/dist/database/migrations/20220802A-add-custom-aspect-ratios.js +0 -15
  312. package/dist/database/migrations/20220826A-add-origin-to-accountability.d.ts +0 -3
  313. package/dist/database/migrations/20220826A-add-origin-to-accountability.js +0 -21
  314. package/dist/database/migrations/run.d.ts +0 -2
  315. package/dist/database/migrations/run.js +0 -96
  316. package/dist/database/migrations/run.test.d.ts +0 -1
  317. package/dist/database/run-ast.d.ts +0 -26
  318. package/dist/database/run-ast.js +0 -474
  319. package/dist/database/seeds/01-collections.yaml +0 -42
  320. package/dist/database/seeds/02-roles.yaml +0 -36
  321. package/dist/database/seeds/03-users.yaml +0 -63
  322. package/dist/database/seeds/04-fields.yaml +0 -58
  323. package/dist/database/seeds/05-activity.yaml +0 -35
  324. package/dist/database/seeds/06-folders.yaml +0 -16
  325. package/dist/database/seeds/07-files.yaml +0 -74
  326. package/dist/database/seeds/08-permissions.yaml +0 -32
  327. package/dist/database/seeds/09-presets.yaml +0 -37
  328. package/dist/database/seeds/10-relations.yaml +0 -40
  329. package/dist/database/seeds/11-revisions.yaml +0 -33
  330. package/dist/database/seeds/12-sessions.yaml +0 -23
  331. package/dist/database/seeds/13-settings.yaml +0 -49
  332. package/dist/database/seeds/14-webhooks.yaml +0 -35
  333. package/dist/database/seeds/15-migrations.yaml +0 -14
  334. package/dist/database/seeds/run.d.ts +0 -2
  335. package/dist/database/seeds/run.js +0 -76
  336. package/dist/database/system-data/app-access-permissions/app-access-permissions.yaml +0 -102
  337. package/dist/database/system-data/app-access-permissions/index.d.ts +0 -3
  338. package/dist/database/system-data/app-access-permissions/index.js +0 -17
  339. package/dist/database/system-data/app-access-permissions/schema-access-permissions.yaml +0 -17
  340. package/dist/database/system-data/collections/collections.yaml +0 -74
  341. package/dist/database/system-data/collections/index.d.ts +0 -2
  342. package/dist/database/system-data/collections/index.js +0 -9
  343. package/dist/database/system-data/fields/_defaults.yaml +0 -16
  344. package/dist/database/system-data/fields/activity.yaml +0 -83
  345. package/dist/database/system-data/fields/collections.yaml +0 -214
  346. package/dist/database/system-data/fields/dashboards.yaml +0 -20
  347. package/dist/database/system-data/fields/fields.yaml +0 -104
  348. package/dist/database/system-data/fields/files.yaml +0 -144
  349. package/dist/database/system-data/fields/flows.yaml +0 -26
  350. package/dist/database/system-data/fields/folders.yaml +0 -14
  351. package/dist/database/system-data/fields/index.d.ts +0 -2
  352. package/dist/database/system-data/fields/index.js +0 -37
  353. package/dist/database/system-data/fields/migrations.yaml +0 -10
  354. package/dist/database/system-data/fields/notifications.yaml +0 -15
  355. package/dist/database/system-data/fields/operations.yaml +0 -23
  356. package/dist/database/system-data/fields/panels.yaml +0 -29
  357. package/dist/database/system-data/fields/permissions.yaml +0 -37
  358. package/dist/database/system-data/fields/presets.yaml +0 -56
  359. package/dist/database/system-data/fields/relations.yaml +0 -34
  360. package/dist/database/system-data/fields/revisions.yaml +0 -27
  361. package/dist/database/system-data/fields/roles.yaml +0 -61
  362. package/dist/database/system-data/fields/sessions.yaml +0 -16
  363. package/dist/database/system-data/fields/settings.yaml +0 -413
  364. package/dist/database/system-data/fields/shares.yaml +0 -83
  365. package/dist/database/system-data/fields/users.yaml +0 -182
  366. package/dist/database/system-data/fields/webhooks.yaml +0 -141
  367. package/dist/database/system-data/relations/index.d.ts +0 -2
  368. package/dist/database/system-data/relations/index.js +0 -9
  369. package/dist/database/system-data/relations/relations.yaml +0 -125
  370. package/dist/emitter.d.ts +0 -19
  371. package/dist/emitter.js +0 -86
  372. package/dist/env.d.ts +0 -15
  373. package/dist/env.js +0 -466
  374. package/dist/env.test.d.ts +0 -1
  375. package/dist/exceptions/database/contains-null-values.d.ts +0 -9
  376. package/dist/exceptions/database/contains-null-values.js +0 -10
  377. package/dist/exceptions/database/dialects/mssql.d.ts +0 -2
  378. package/dist/exceptions/database/dialects/mssql.js +0 -159
  379. package/dist/exceptions/database/dialects/mysql.d.ts +0 -2
  380. package/dist/exceptions/database/dialects/mysql.js +0 -148
  381. package/dist/exceptions/database/dialects/oracle.d.ts +0 -2
  382. package/dist/exceptions/database/dialects/oracle.js +0 -27
  383. package/dist/exceptions/database/dialects/postgres.d.ts +0 -2
  384. package/dist/exceptions/database/dialects/postgres.js +0 -106
  385. package/dist/exceptions/database/dialects/sqlite.d.ts +0 -2
  386. package/dist/exceptions/database/dialects/sqlite.js +0 -55
  387. package/dist/exceptions/database/dialects/types.d.ts +0 -41
  388. package/dist/exceptions/database/dialects/types.js +0 -2
  389. package/dist/exceptions/database/invalid-foreign-key.d.ts +0 -10
  390. package/dist/exceptions/database/invalid-foreign-key.js +0 -15
  391. package/dist/exceptions/database/not-null-violation.d.ts +0 -9
  392. package/dist/exceptions/database/not-null-violation.js +0 -10
  393. package/dist/exceptions/database/record-not-unique.d.ts +0 -10
  394. package/dist/exceptions/database/record-not-unique.js +0 -15
  395. package/dist/exceptions/database/translate.d.ts +0 -11
  396. package/dist/exceptions/database/translate.js +0 -74
  397. package/dist/exceptions/database/value-out-of-range.d.ts +0 -10
  398. package/dist/exceptions/database/value-out-of-range.js +0 -15
  399. package/dist/exceptions/database/value-too-long.d.ts +0 -9
  400. package/dist/exceptions/database/value-too-long.js +0 -15
  401. package/dist/exceptions/forbidden.d.ts +0 -4
  402. package/dist/exceptions/forbidden.js +0 -16
  403. package/dist/exceptions/graphql-validation.d.ts +0 -4
  404. package/dist/exceptions/graphql-validation.js +0 -10
  405. package/dist/exceptions/hit-rate-limit.d.ts +0 -9
  406. package/dist/exceptions/hit-rate-limit.js +0 -10
  407. package/dist/exceptions/illegal-asset-transformation.d.ts +0 -4
  408. package/dist/exceptions/illegal-asset-transformation.js +0 -10
  409. package/dist/exceptions/index.d.ts +0 -21
  410. package/dist/exceptions/index.js +0 -37
  411. package/dist/exceptions/invalid-config.d.ts +0 -4
  412. package/dist/exceptions/invalid-config.js +0 -10
  413. package/dist/exceptions/invalid-credentials.d.ts +0 -4
  414. package/dist/exceptions/invalid-credentials.js +0 -10
  415. package/dist/exceptions/invalid-ip.d.ts +0 -4
  416. package/dist/exceptions/invalid-ip.js +0 -10
  417. package/dist/exceptions/invalid-otp.d.ts +0 -4
  418. package/dist/exceptions/invalid-otp.js +0 -10
  419. package/dist/exceptions/invalid-payload.d.ts +0 -4
  420. package/dist/exceptions/invalid-payload.js +0 -10
  421. package/dist/exceptions/invalid-provider.d.ts +0 -4
  422. package/dist/exceptions/invalid-provider.js +0 -10
  423. package/dist/exceptions/invalid-query.d.ts +0 -4
  424. package/dist/exceptions/invalid-query.js +0 -10
  425. package/dist/exceptions/invalid-token.d.ts +0 -4
  426. package/dist/exceptions/invalid-token.js +0 -10
  427. package/dist/exceptions/method-not-allowed.d.ts +0 -8
  428. package/dist/exceptions/method-not-allowed.js +0 -10
  429. package/dist/exceptions/range-not-satisfiable.d.ts +0 -5
  430. package/dist/exceptions/range-not-satisfiable.js +0 -13
  431. package/dist/exceptions/route-not-found.d.ts +0 -4
  432. package/dist/exceptions/route-not-found.js +0 -10
  433. package/dist/exceptions/service-unavailable.d.ts +0 -9
  434. package/dist/exceptions/service-unavailable.js +0 -10
  435. package/dist/exceptions/token-expired.d.ts +0 -4
  436. package/dist/exceptions/token-expired.js +0 -10
  437. package/dist/exceptions/unexpected-response.d.ts +0 -4
  438. package/dist/exceptions/unexpected-response.js +0 -10
  439. package/dist/exceptions/unprocessable-entity.d.ts +0 -4
  440. package/dist/exceptions/unprocessable-entity.js +0 -10
  441. package/dist/exceptions/unsupported-media-type.d.ts +0 -4
  442. package/dist/exceptions/unsupported-media-type.js +0 -10
  443. package/dist/exceptions/user-suspended.d.ts +0 -4
  444. package/dist/exceptions/user-suspended.js +0 -10
  445. package/dist/extensions.d.ts +0 -49
  446. package/dist/extensions.js +0 -501
  447. package/dist/flows.d.ts +0 -22
  448. package/dist/flows.js +0 -377
  449. package/dist/index.d.ts +0 -3
  450. package/dist/index.js +0 -24
  451. package/dist/logger.d.ts +0 -7
  452. package/dist/logger.js +0 -134
  453. package/dist/logger.test.d.ts +0 -1
  454. package/dist/mailer.d.ts +0 -2
  455. package/dist/mailer.js +0 -71
  456. package/dist/messenger.d.ts +0 -24
  457. package/dist/messenger.js +0 -66
  458. package/dist/middleware/authenticate.d.ts +0 -8
  459. package/dist/middleware/authenticate.js +0 -82
  460. package/dist/middleware/authenticate.test.d.ts +0 -1
  461. package/dist/middleware/cache.d.ts +0 -3
  462. package/dist/middleware/cache.js +0 -61
  463. package/dist/middleware/check-ip.d.ts +0 -2
  464. package/dist/middleware/check-ip.js +0 -24
  465. package/dist/middleware/collection-exists.d.ts +0 -6
  466. package/dist/middleware/collection-exists.js +0 -30
  467. package/dist/middleware/cors.d.ts +0 -3
  468. package/dist/middleware/cors.js +0 -19
  469. package/dist/middleware/error-handler.d.ts +0 -3
  470. package/dist/middleware/error-handler.js +0 -95
  471. package/dist/middleware/extract-token.d.ts +0 -11
  472. package/dist/middleware/extract-token.js +0 -32
  473. package/dist/middleware/extract-token.test.d.ts +0 -1
  474. package/dist/middleware/get-permissions.d.ts +0 -3
  475. package/dist/middleware/get-permissions.js +0 -15
  476. package/dist/middleware/graphql.d.ts +0 -2
  477. package/dist/middleware/graphql.js +0 -69
  478. package/dist/middleware/rate-limiter-global.d.ts +0 -5
  479. package/dist/middleware/rate-limiter-global.js +0 -48
  480. package/dist/middleware/rate-limiter-ip.d.ts +0 -5
  481. package/dist/middleware/rate-limiter-ip.js +0 -34
  482. package/dist/middleware/respond.d.ts +0 -2
  483. package/dist/middleware/respond.js +0 -88
  484. package/dist/middleware/sanitize-query.d.ts +0 -7
  485. package/dist/middleware/sanitize-query.js +0 -21
  486. package/dist/middleware/schema.d.ts +0 -3
  487. package/dist/middleware/schema.js +0 -12
  488. package/dist/middleware/use-collection.d.ts +0 -7
  489. package/dist/middleware/use-collection.js +0 -11
  490. package/dist/middleware/validate-batch.d.ts +0 -3
  491. package/dist/middleware/validate-batch.js +0 -49
  492. package/dist/middleware/validate-batch.test.d.ts +0 -1
  493. package/dist/operations/condition/index.d.ts +0 -6
  494. package/dist/operations/condition/index.js +0 -15
  495. package/dist/operations/condition/index.test.d.ts +0 -1
  496. package/dist/operations/exec/index.d.ts +0 -5
  497. package/dist/operations/exec/index.js +0 -40
  498. package/dist/operations/exec/index.test.d.ts +0 -1
  499. package/dist/operations/item-create/index.d.ts +0 -8
  500. package/dist/operations/item-create/index.js +0 -38
  501. package/dist/operations/item-create/index.test.d.ts +0 -1
  502. package/dist/operations/item-delete/index.d.ts +0 -10
  503. package/dist/operations/item-delete/index.js +0 -46
  504. package/dist/operations/item-delete/index.test.d.ts +0 -1
  505. package/dist/operations/item-read/index.d.ts +0 -10
  506. package/dist/operations/item-read/index.js +0 -46
  507. package/dist/operations/item-read/index.test.d.ts +0 -1
  508. package/dist/operations/item-update/index.d.ts +0 -11
  509. package/dist/operations/item-update/index.js +0 -50
  510. package/dist/operations/item-update/index.test.d.ts +0 -1
  511. package/dist/operations/log/index.d.ts +0 -5
  512. package/dist/operations/log/index.js +0 -13
  513. package/dist/operations/log/index.test.d.ts +0 -1
  514. package/dist/operations/mail/index.d.ts +0 -8
  515. package/dist/operations/mail/index.js +0 -19
  516. package/dist/operations/notification/index.d.ts +0 -8
  517. package/dist/operations/notification/index.js +0 -40
  518. package/dist/operations/notification/index.test.d.ts +0 -1
  519. package/dist/operations/request/index.d.ts +0 -11
  520. package/dist/operations/request/index.js +0 -38
  521. package/dist/operations/request/index.test.d.ts +0 -1
  522. package/dist/operations/sleep/index.d.ts +0 -5
  523. package/dist/operations/sleep/index.js +0 -9
  524. package/dist/operations/sleep/index.test.d.ts +0 -1
  525. package/dist/operations/transform/index.d.ts +0 -5
  526. package/dist/operations/transform/index.js +0 -9
  527. package/dist/operations/transform/index.test.d.ts +0 -1
  528. package/dist/operations/trigger/index.d.ts +0 -8
  529. package/dist/operations/trigger/index.js +0 -39
  530. package/dist/operations/trigger/index.test.d.ts +0 -1
  531. package/dist/rate-limiter.d.ts +0 -4
  532. package/dist/rate-limiter.js +0 -38
  533. package/dist/request/index.d.ts +0 -5
  534. package/dist/request/index.js +0 -18
  535. package/dist/request/index.test.d.ts +0 -1
  536. package/dist/request/request-interceptor.d.ts +0 -2
  537. package/dist/request/request-interceptor.js +0 -33
  538. package/dist/request/request-interceptor.test.d.ts +0 -1
  539. package/dist/request/response-interceptor.d.ts +0 -2
  540. package/dist/request/response-interceptor.js +0 -9
  541. package/dist/request/response-interceptor.test.d.ts +0 -1
  542. package/dist/request/validate-ip.d.ts +0 -1
  543. package/dist/request/validate-ip.js +0 -27
  544. package/dist/request/validate-ip.test.d.ts +0 -1
  545. package/dist/server.d.ts +0 -4
  546. package/dist/server.js +0 -162
  547. package/dist/services/activity.d.ts +0 -10
  548. package/dist/services/activity.js +0 -101
  549. package/dist/services/assets.d.ts +0 -18
  550. package/dist/services/assets.js +0 -179
  551. package/dist/services/authentication.d.ts +0 -21
  552. package/dist/services/authentication.js +0 -332
  553. package/dist/services/authorization.d.ts +0 -17
  554. package/dist/services/authorization.js +0 -451
  555. package/dist/services/collections.d.ts +0 -64
  556. package/dist/services/collections.js +0 -595
  557. package/dist/services/dashboards.d.ts +0 -5
  558. package/dist/services/dashboards.js +0 -10
  559. package/dist/services/fields.d.ts +0 -32
  560. package/dist/services/fields.js +0 -625
  561. package/dist/services/fields.test.d.ts +0 -1
  562. package/dist/services/files.d.ts +0 -34
  563. package/dist/services/files.js +0 -280
  564. package/dist/services/files.test.d.ts +0 -1
  565. package/dist/services/flows.d.ts +0 -11
  566. package/dist/services/flows.js +0 -43
  567. package/dist/services/flows.test.d.ts +0 -1
  568. package/dist/services/folders.d.ts +0 -5
  569. package/dist/services/folders.js +0 -10
  570. package/dist/services/graphql/index.d.ts +0 -86
  571. package/dist/services/graphql/index.js +0 -2519
  572. package/dist/services/graphql/types/bigint.d.ts +0 -2
  573. package/dist/services/graphql/types/bigint.js +0 -39
  574. package/dist/services/graphql/types/date.d.ts +0 -2
  575. package/dist/services/graphql/types/date.js +0 -9
  576. package/dist/services/graphql/types/geojson.d.ts +0 -2
  577. package/dist/services/graphql/types/geojson.js +0 -10
  578. package/dist/services/graphql/types/hash.d.ts +0 -2
  579. package/dist/services/graphql/types/hash.js +0 -9
  580. package/dist/services/graphql/types/string-or-float.d.ts +0 -5
  581. package/dist/services/graphql/types/string-or-float.js +0 -34
  582. package/dist/services/graphql/types/void.d.ts +0 -2
  583. package/dist/services/graphql/types/void.js +0 -17
  584. package/dist/services/graphql/utils/add-path-to-validation-error.d.ts +0 -2
  585. package/dist/services/graphql/utils/add-path-to-validation-error.js +0 -19
  586. package/dist/services/graphql/utils/process-error.d.ts +0 -4
  587. package/dist/services/graphql/utils/process-error.js +0 -46
  588. package/dist/services/graphql/utils/process-error.test.d.ts +0 -1
  589. package/dist/services/import-export.d.ts +0 -37
  590. package/dist/services/import-export.js +0 -300
  591. package/dist/services/import-export.test.d.ts +0 -1
  592. package/dist/services/index.d.ts +0 -33
  593. package/dist/services/index.js +0 -50
  594. package/dist/services/items.d.ts +0 -83
  595. package/dist/services/items.js +0 -719
  596. package/dist/services/items.test.d.ts +0 -1
  597. package/dist/services/mail/index.d.ts +0 -20
  598. package/dist/services/mail/index.js +0 -96
  599. package/dist/services/mail/templates/base.liquid +0 -162
  600. package/dist/services/mail/templates/password-reset.liquid +0 -24
  601. package/dist/services/mail/templates/user-invitation.liquid +0 -19
  602. package/dist/services/meta.d.ts +0 -12
  603. package/dist/services/meta.js +0 -78
  604. package/dist/services/notifications.d.ts +0 -13
  605. package/dist/services/notifications.js +0 -59
  606. package/dist/services/notifications.test.d.ts +0 -1
  607. package/dist/services/operations.d.ts +0 -11
  608. package/dist/services/operations.js +0 -41
  609. package/dist/services/operations.test.d.ts +0 -1
  610. package/dist/services/panels.d.ts +0 -5
  611. package/dist/services/panels.js +0 -10
  612. package/dist/services/payload.d.ts +0 -73
  613. package/dist/services/payload.js +0 -644
  614. package/dist/services/payload.test.d.ts +0 -1
  615. package/dist/services/permissions.d.ts +0 -17
  616. package/dist/services/permissions.js +0 -84
  617. package/dist/services/permissions.test.d.ts +0 -1
  618. package/dist/services/presets.d.ts +0 -5
  619. package/dist/services/presets.js +0 -10
  620. package/dist/services/relations.d.ts +0 -60
  621. package/dist/services/relations.js +0 -477
  622. package/dist/services/revisions.d.ts +0 -6
  623. package/dist/services/revisions.js +0 -24
  624. package/dist/services/roles.d.ts +0 -14
  625. package/dist/services/roles.js +0 -148
  626. package/dist/services/roles.test.d.ts +0 -1
  627. package/dist/services/schema.d.ts +0 -15
  628. package/dist/services/schema.js +0 -56
  629. package/dist/services/schema.test.d.ts +0 -1
  630. package/dist/services/server.d.ts +0 -13
  631. package/dist/services/server.js +0 -366
  632. package/dist/services/settings.d.ts +0 -5
  633. package/dist/services/settings.js +0 -10
  634. package/dist/services/shares.d.ts +0 -17
  635. package/dist/services/shares.js +0 -136
  636. package/dist/services/specifications.d.ts +0 -53
  637. package/dist/services/specifications.js +0 -500
  638. package/dist/services/specifications.test.d.ts +0 -1
  639. package/dist/services/tfa.d.ts +0 -12
  640. package/dist/services/tfa.js +0 -57
  641. package/dist/services/users.d.ts +0 -55
  642. package/dist/services/users.js +0 -380
  643. package/dist/services/users.test.d.ts +0 -1
  644. package/dist/services/utils.d.ts +0 -13
  645. package/dist/services/utils.js +0 -115
  646. package/dist/services/webhooks.d.ts +0 -11
  647. package/dist/services/webhooks.js +0 -33
  648. package/dist/services/webhooks.test.d.ts +0 -1
  649. package/dist/start.d.ts +0 -1
  650. package/dist/start.js +0 -4
  651. package/dist/storage/get-storage-driver.d.ts +0 -3
  652. package/dist/storage/get-storage-driver.js +0 -20
  653. package/dist/storage/get-storage-driver.test.d.ts +0 -1
  654. package/dist/storage/index.d.ts +0 -5
  655. package/dist/storage/index.js +0 -20
  656. package/dist/storage/index.test.d.ts +0 -1
  657. package/dist/storage/register-drivers.d.ts +0 -2
  658. package/dist/storage/register-drivers.js +0 -22
  659. package/dist/storage/register-drivers.test.d.ts +0 -1
  660. package/dist/storage/register-locations.d.ts +0 -2
  661. package/dist/storage/register-locations.js +0 -17
  662. package/dist/storage/register-locations.test.d.ts +0 -1
  663. package/dist/types/assets.d.ts +0 -20
  664. package/dist/types/assets.js +0 -54
  665. package/dist/types/ast.d.ts +0 -56
  666. package/dist/types/ast.js +0 -2
  667. package/dist/types/auth.d.ts +0 -54
  668. package/dist/types/auth.js +0 -2
  669. package/dist/types/collection.d.ts +0 -19
  670. package/dist/types/collection.js +0 -2
  671. package/dist/types/database.d.ts +0 -3
  672. package/dist/types/database.js +0 -4
  673. package/dist/types/events.d.ts +0 -18
  674. package/dist/types/events.js +0 -2
  675. package/dist/types/files.d.ts +0 -29
  676. package/dist/types/files.js +0 -2
  677. package/dist/types/graphql.d.ts +0 -14
  678. package/dist/types/graphql.js +0 -2
  679. package/dist/types/index.d.ts +0 -15
  680. package/dist/types/index.js +0 -31
  681. package/dist/types/items.d.ts +0 -49
  682. package/dist/types/items.js +0 -6
  683. package/dist/types/meta.d.ts +0 -4
  684. package/dist/types/meta.js +0 -8
  685. package/dist/types/migration.d.ts +0 -5
  686. package/dist/types/migration.js +0 -2
  687. package/dist/types/revision.d.ts +0 -7
  688. package/dist/types/revision.js +0 -2
  689. package/dist/types/services.d.ts +0 -21
  690. package/dist/types/services.js +0 -2
  691. package/dist/types/snapshot.d.ts +0 -55
  692. package/dist/types/snapshot.js +0 -16
  693. package/dist/types/webhooks.d.ts +0 -15
  694. package/dist/types/webhooks.js +0 -2
  695. package/dist/utils/apply-diff.d.ts +0 -9
  696. package/dist/utils/apply-diff.js +0 -256
  697. package/dist/utils/apply-diff.test.d.ts +0 -1
  698. package/dist/utils/apply-function-to-column-name.d.ts +0 -12
  699. package/dist/utils/apply-function-to-column-name.js +0 -26
  700. package/dist/utils/apply-function-to-column-name.test.d.ts +0 -1
  701. package/dist/utils/apply-query.d.ts +0 -34
  702. package/dist/utils/apply-query.js +0 -568
  703. package/dist/utils/apply-snapshot.d.ts +0 -9
  704. package/dist/utils/apply-snapshot.js +0 -22
  705. package/dist/utils/apply-snapshot.test.d.ts +0 -1
  706. package/dist/utils/async-handler.d.ts +0 -3
  707. package/dist/utils/async-handler.js +0 -4
  708. package/dist/utils/async-handler.test.d.ts +0 -1
  709. package/dist/utils/calculate-field-depth.d.ts +0 -33
  710. package/dist/utils/calculate-field-depth.js +0 -75
  711. package/dist/utils/calculate-field-depth.test.d.ts +0 -1
  712. package/dist/utils/compress.d.ts +0 -3
  713. package/dist/utils/compress.js +0 -17
  714. package/dist/utils/construct-flow-tree.d.ts +0 -2
  715. package/dist/utils/construct-flow-tree.js +0 -31
  716. package/dist/utils/dynamic-import.d.ts +0 -1
  717. package/dist/utils/dynamic-import.js +0 -7
  718. package/dist/utils/filter-items.d.ts +0 -2
  719. package/dist/utils/filter-items.js +0 -37
  720. package/dist/utils/filter-items.test.d.ts +0 -1
  721. package/dist/utils/generate-hash.d.ts +0 -1
  722. package/dist/utils/generate-hash.js +0 -16
  723. package/dist/utils/get-accountability-for-role.d.ts +0 -7
  724. package/dist/utils/get-accountability-for-role.js +0 -45
  725. package/dist/utils/get-ast-from-query.d.ts +0 -13
  726. package/dist/utils/get-ast-from-query.js +0 -300
  727. package/dist/utils/get-auth-providers.d.ts +0 -8
  728. package/dist/utils/get-auth-providers.js +0 -19
  729. package/dist/utils/get-auth-providers.test.d.ts +0 -1
  730. package/dist/utils/get-cache-headers.d.ts +0 -10
  731. package/dist/utils/get-cache-headers.js +0 -43
  732. package/dist/utils/get-cache-headers.test.d.ts +0 -1
  733. package/dist/utils/get-cache-key.d.ts +0 -2
  734. package/dist/utils/get-cache-key.js +0 -21
  735. package/dist/utils/get-cache-key.test.d.ts +0 -1
  736. package/dist/utils/get-collection-from-alias.d.ts +0 -6
  737. package/dist/utils/get-collection-from-alias.js +0 -16
  738. package/dist/utils/get-collection-from-alias.test.d.ts +0 -1
  739. package/dist/utils/get-column-path.d.ts +0 -26
  740. package/dist/utils/get-column-path.js +0 -65
  741. package/dist/utils/get-column-path.test.d.ts +0 -1
  742. package/dist/utils/get-column.d.ts +0 -20
  743. package/dist/utils/get-column.js +0 -52
  744. package/dist/utils/get-config-from-env.d.ts +0 -1
  745. package/dist/utils/get-config-from-env.js +0 -48
  746. package/dist/utils/get-config-from-env.test.d.ts +0 -1
  747. package/dist/utils/get-date-formatted.d.ts +0 -1
  748. package/dist/utils/get-date-formatted.js +0 -14
  749. package/dist/utils/get-date-formatted.test.d.ts +0 -1
  750. package/dist/utils/get-default-index-name.d.ts +0 -10
  751. package/dist/utils/get-default-index-name.js +0 -25
  752. package/dist/utils/get-default-value.d.ts +0 -3
  753. package/dist/utils/get-default-value.js +0 -62
  754. package/dist/utils/get-graphql-query-and-variables.d.ts +0 -2
  755. package/dist/utils/get-graphql-query-and-variables.js +0 -9
  756. package/dist/utils/get-graphql-query-and-variables.test.d.ts +0 -1
  757. package/dist/utils/get-graphql-type.d.ts +0 -3
  758. package/dist/utils/get-graphql-type.js +0 -40
  759. package/dist/utils/get-ip-from-req.d.ts +0 -2
  760. package/dist/utils/get-ip-from-req.js +0 -24
  761. package/dist/utils/get-local-type.d.ts +0 -9
  762. package/dist/utils/get-local-type.js +0 -131
  763. package/dist/utils/get-milliseconds.d.ts +0 -4
  764. package/dist/utils/get-milliseconds.js +0 -14
  765. package/dist/utils/get-milliseconds.test.d.ts +0 -1
  766. package/dist/utils/get-module-default.d.ts +0 -3
  767. package/dist/utils/get-module-default.js +0 -9
  768. package/dist/utils/get-os-info.d.ts +0 -9
  769. package/dist/utils/get-os-info.js +0 -47
  770. package/dist/utils/get-permissions.d.ts +0 -2
  771. package/dist/utils/get-permissions.js +0 -158
  772. package/dist/utils/get-relation-info.d.ts +0 -7
  773. package/dist/utils/get-relation-info.js +0 -49
  774. package/dist/utils/get-relation-info.test.d.ts +0 -1
  775. package/dist/utils/get-relation-type.d.ts +0 -6
  776. package/dist/utils/get-relation-type.js +0 -22
  777. package/dist/utils/get-relation-type.test.d.ts +0 -1
  778. package/dist/utils/get-schema.d.ts +0 -10
  779. package/dist/utils/get-schema.js +0 -138
  780. package/dist/utils/get-snapshot-diff.d.ts +0 -2
  781. package/dist/utils/get-snapshot-diff.js +0 -82
  782. package/dist/utils/get-snapshot.d.ts +0 -7
  783. package/dist/utils/get-snapshot.js +0 -80
  784. package/dist/utils/get-string-byte-size.d.ts +0 -4
  785. package/dist/utils/get-string-byte-size.js +0 -10
  786. package/dist/utils/get-string-byte-size.test.d.ts +0 -1
  787. package/dist/utils/get-versioned-hash.d.ts +0 -1
  788. package/dist/utils/get-versioned-hash.js +0 -12
  789. package/dist/utils/get-versioned-hash.test.d.ts +0 -1
  790. package/dist/utils/is-directus-jwt.d.ts +0 -5
  791. package/dist/utils/is-directus-jwt.js +0 -22
  792. package/dist/utils/is-directus-jwt.test.d.ts +0 -1
  793. package/dist/utils/is-url-allowed.d.ts +0 -4
  794. package/dist/utils/is-url-allowed.js +0 -36
  795. package/dist/utils/job-queue.d.ts +0 -9
  796. package/dist/utils/job-queue.js +0 -26
  797. package/dist/utils/jwt.d.ts +0 -2
  798. package/dist/utils/jwt.js +0 -53
  799. package/dist/utils/jwt.test.d.ts +0 -1
  800. package/dist/utils/map-values-deep.d.ts +0 -1
  801. package/dist/utils/map-values-deep.js +0 -29
  802. package/dist/utils/map-values-deep.test.d.ts +0 -1
  803. package/dist/utils/md.d.ts +0 -4
  804. package/dist/utils/md.js +0 -15
  805. package/dist/utils/md.test.d.ts +0 -1
  806. package/dist/utils/merge-permissions-for-share.d.ts +0 -4
  807. package/dist/utils/merge-permissions-for-share.js +0 -115
  808. package/dist/utils/merge-permissions.d.ts +0 -14
  809. package/dist/utils/merge-permissions.js +0 -100
  810. package/dist/utils/merge-permissions.test.d.ts +0 -1
  811. package/dist/utils/parse-image-metadata.d.ts +0 -3
  812. package/dist/utils/parse-image-metadata.js +0 -73
  813. package/dist/utils/reduce-schema.d.ts +0 -9
  814. package/dist/utils/reduce-schema.js +0 -82
  815. package/dist/utils/require-yaml.d.ts +0 -1
  816. package/dist/utils/require-yaml.js +0 -13
  817. package/dist/utils/sanitize-query.d.ts +0 -2
  818. package/dist/utils/sanitize-query.js +0 -179
  819. package/dist/utils/sanitize-query.test.d.ts +0 -1
  820. package/dist/utils/sanitize-schema.d.ts +0 -30
  821. package/dist/utils/sanitize-schema.js +0 -80
  822. package/dist/utils/sanitize-schema.test.d.ts +0 -1
  823. package/dist/utils/should-skip-cache.d.ts +0 -7
  824. package/dist/utils/should-skip-cache.js +0 -30
  825. package/dist/utils/should-skip-cache.test.d.ts +0 -1
  826. package/dist/utils/stall.d.ts +0 -26
  827. package/dist/utils/stall.js +0 -38
  828. package/dist/utils/stall.test.d.ts +0 -1
  829. package/dist/utils/strip-function.d.ts +0 -4
  830. package/dist/utils/strip-function.js +0 -16
  831. package/dist/utils/strip-function.test.d.ts +0 -1
  832. package/dist/utils/telemetry.d.ts +0 -1
  833. package/dist/utils/telemetry.js +0 -30
  834. package/dist/utils/transformations.d.ts +0 -6
  835. package/dist/utils/transformations.js +0 -55
  836. package/dist/utils/url.d.ts +0 -17
  837. package/dist/utils/url.js +0 -63
  838. package/dist/utils/url.test.d.ts +0 -1
  839. package/dist/utils/user-name.d.ts +0 -2
  840. package/dist/utils/user-name.js +0 -19
  841. package/dist/utils/user-name.test.d.ts +0 -1
  842. package/dist/utils/validate-diff.d.ts +0 -7
  843. package/dist/utils/validate-diff.js +0 -113
  844. package/dist/utils/validate-diff.test.d.ts +0 -1
  845. package/dist/utils/validate-env.d.ts +0 -1
  846. package/dist/utils/validate-env.js +0 -18
  847. package/dist/utils/validate-env.test.d.ts +0 -1
  848. package/dist/utils/validate-keys.d.ts +0 -6
  849. package/dist/utils/validate-keys.js +0 -28
  850. package/dist/utils/validate-keys.test.d.ts +0 -1
  851. package/dist/utils/validate-query.d.ts +0 -2
  852. package/dist/utils/validate-query.js +0 -205
  853. package/dist/utils/validate-query.test.d.ts +0 -1
  854. package/dist/utils/validate-snapshot.d.ts +0 -5
  855. package/dist/utils/validate-snapshot.js +0 -71
  856. package/dist/utils/validate-snapshot.test.d.ts +0 -1
  857. package/dist/utils/validate-storage.d.ts +0 -1
  858. package/dist/utils/validate-storage.js +0 -38
  859. package/dist/webhooks.d.ts +0 -4
  860. package/dist/webhooks.js +0 -89
  861. /package/{README.md → readme.md} +0 -0
@@ -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;