@directus/api 34.0.1 → 35.0.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 (1702) hide show
  1. package/dist/__utils__/items-utils.js +32 -0
  2. package/dist/__utils__/schemas.js +297 -0
  3. package/dist/__utils__/snapshots.js +899 -0
  4. package/dist/_virtual/rolldown_runtime.js +38 -0
  5. package/dist/ai/chat/constants/system-prompt.js +5 -1
  6. package/dist/ai/chat/controllers/chat.post.js +69 -61
  7. package/dist/ai/chat/lib/create-ui-stream.js +71 -45
  8. package/dist/ai/chat/lib/transform-file-parts.js +43 -32
  9. package/dist/ai/chat/middleware/load-settings.js +42 -41
  10. package/dist/ai/chat/models/chat-request.js +77 -69
  11. package/dist/ai/chat/models/providers.js +23 -18
  12. package/dist/ai/chat/router.js +10 -5
  13. package/dist/ai/chat/utils/chat-request-tool-to-ai-sdk-tool.js +40 -36
  14. package/dist/ai/chat/utils/fix-error-tool-calls.js +30 -28
  15. package/dist/ai/chat/utils/format-context.js +87 -89
  16. package/dist/ai/chat/utils/parse-json-schema-7.js +84 -73
  17. package/dist/ai/devtools/index.js +38 -0
  18. package/dist/ai/files/adapters/anthropic.js +29 -24
  19. package/dist/ai/files/adapters/google.js +60 -57
  20. package/dist/ai/files/adapters/index.js +5 -3
  21. package/dist/ai/files/adapters/openai.js +26 -21
  22. package/dist/ai/files/controllers/upload.js +101 -95
  23. package/dist/ai/files/lib/fetch-provider.js +27 -22
  24. package/dist/ai/files/lib/upload-to-provider.js +32 -25
  25. package/dist/ai/files/router.js +10 -5
  26. package/dist/ai/files/types.js +1 -1
  27. package/dist/ai/mcp/index.js +3 -1
  28. package/dist/ai/mcp/server.js +293 -301
  29. package/dist/ai/mcp/transport.js +22 -18
  30. package/dist/ai/mcp/types.js +1 -1
  31. package/dist/ai/providers/anthropic-file-support.js +91 -89
  32. package/dist/ai/providers/anthropic-tool-search.js +33 -0
  33. package/dist/ai/providers/index.js +5 -3
  34. package/dist/ai/providers/options.js +27 -24
  35. package/dist/ai/providers/registry.js +65 -60
  36. package/dist/ai/providers/types.js +1 -1
  37. package/dist/ai/telemetry/braintrust.js +27 -0
  38. package/dist/ai/telemetry/index.js +79 -0
  39. package/dist/ai/telemetry/langfuse.js +67 -0
  40. package/dist/ai/tools/assets/index.js +56 -55
  41. package/dist/ai/tools/collections/index.js +96 -89
  42. package/dist/ai/tools/define-tool.js +6 -2
  43. package/dist/ai/tools/fields/index.js +157 -162
  44. package/dist/ai/tools/files/index.js +109 -104
  45. package/dist/ai/tools/flows/index.js +99 -87
  46. package/dist/ai/tools/folders/index.js +103 -98
  47. package/dist/ai/tools/index.js +32 -28
  48. package/dist/ai/tools/items/index.js +149 -146
  49. package/dist/ai/tools/operations/index.js +88 -80
  50. package/dist/ai/tools/relations/index.js +100 -91
  51. package/dist/ai/tools/schema/index.js +240 -302
  52. package/dist/ai/tools/schema.js +198 -205
  53. package/dist/ai/tools/system/index.js +23 -22
  54. package/dist/ai/tools/trigger-flow/index.js +62 -49
  55. package/dist/ai/tools/types.js +1 -1
  56. package/dist/ai/tools/utils.js +20 -15
  57. package/dist/app.js +296 -288
  58. package/dist/auth/auth.js +46 -41
  59. package/dist/auth/drivers/index.js +7 -5
  60. package/dist/auth/drivers/ldap.js +314 -342
  61. package/dist/auth/drivers/local.js +86 -89
  62. package/dist/auth/drivers/oauth2.js +369 -385
  63. package/dist/auth/drivers/openid.js +429 -447
  64. package/dist/auth/drivers/saml.js +172 -172
  65. package/dist/auth/utils/generate-callback-url.js +38 -35
  66. package/dist/auth/utils/resolve-login-redirect.js +54 -60
  67. package/dist/auth.js +66 -60
  68. package/dist/bus/index.js +3 -1
  69. package/dist/bus/lib/use-bus.js +29 -19
  70. package/dist/cache.js +136 -124
  71. package/dist/cli/commands/bootstrap/index.js +61 -59
  72. package/dist/cli/commands/cache/clear.js +33 -0
  73. package/dist/cli/commands/count/index.js +25 -21
  74. package/dist/cli/commands/database/install.js +20 -16
  75. package/dist/cli/commands/database/migrate.js +26 -23
  76. package/dist/cli/commands/init/index.js +116 -100
  77. package/dist/cli/commands/init/questions.js +86 -48
  78. package/dist/cli/commands/roles/create.js +51 -37
  79. package/dist/cli/commands/schema/apply.js +188 -203
  80. package/dist/cli/commands/schema/snapshot.js +55 -56
  81. package/dist/cli/commands/security/key.js +9 -4
  82. package/dist/cli/commands/security/secret.js +8 -4
  83. package/dist/cli/commands/users/create.js +35 -23
  84. package/dist/cli/commands/users/passwd.js +37 -35
  85. package/dist/cli/index.js +53 -90
  86. package/dist/cli/load-extensions.js +25 -19
  87. package/dist/cli/run.js +9 -7
  88. package/dist/cli/utils/create-db-connection.js +56 -54
  89. package/dist/cli/utils/create-env/index.js +33 -35
  90. package/dist/cli/utils/drivers.js +16 -13
  91. package/dist/constants.js +132 -89
  92. package/dist/controllers/access.js +137 -140
  93. package/dist/controllers/activity.js +47 -46
  94. package/dist/controllers/assets.js +200 -241
  95. package/dist/controllers/auth.js +175 -175
  96. package/dist/controllers/collections.js +99 -99
  97. package/dist/controllers/comments.js +136 -138
  98. package/dist/controllers/dashboards.js +131 -132
  99. package/dist/controllers/deployment-webhooks.js +92 -93
  100. package/dist/controllers/deployment.js +330 -350
  101. package/dist/controllers/extensions.js +205 -199
  102. package/dist/controllers/fields.js +155 -164
  103. package/dist/controllers/files.js +250 -269
  104. package/dist/controllers/flows.js +150 -151
  105. package/dist/controllers/folders.js +138 -141
  106. package/dist/controllers/graphql.js +33 -28
  107. package/dist/controllers/items.js +157 -172
  108. package/dist/controllers/mcp.js +33 -31
  109. package/dist/controllers/metrics.js +33 -29
  110. package/dist/controllers/not-found.js +35 -28
  111. package/dist/controllers/notifications.js +138 -141
  112. package/dist/controllers/operations.js +131 -132
  113. package/dist/controllers/panels.js +131 -132
  114. package/dist/controllers/permissions.js +162 -166
  115. package/dist/controllers/policies.js +155 -160
  116. package/dist/controllers/presets.js +138 -141
  117. package/dist/controllers/relations.js +96 -102
  118. package/dist/controllers/revisions.js +40 -32
  119. package/dist/controllers/roles.js +152 -152
  120. package/dist/controllers/schema.js +97 -92
  121. package/dist/controllers/server.js +84 -81
  122. package/dist/controllers/settings.js +44 -40
  123. package/dist/controllers/shares.js +180 -213
  124. package/dist/controllers/translations.js +138 -141
  125. package/dist/controllers/tus.js +70 -72
  126. package/dist/controllers/users.js +303 -308
  127. package/dist/controllers/utils.js +149 -134
  128. package/dist/controllers/versions.js +178 -176
  129. package/dist/database/errors/dialects/mssql.js +137 -153
  130. package/dist/database/errors/dialects/mysql.js +123 -137
  131. package/dist/database/errors/dialects/oracle.js +24 -20
  132. package/dist/database/errors/dialects/postgres.js +91 -94
  133. package/dist/database/errors/dialects/sqlite.js +48 -46
  134. package/dist/database/errors/dialects/types.js +1 -1
  135. package/dist/database/errors/translate.js +47 -42
  136. package/dist/database/get-ast-from-query/get-ast-from-query.js +51 -52
  137. package/dist/database/get-ast-from-query/lib/convert-wildcards.js +74 -78
  138. package/dist/database/get-ast-from-query/lib/parse-fields.js +231 -246
  139. package/dist/database/get-ast-from-query/utils/get-allowed-sort.js +31 -34
  140. package/dist/database/get-ast-from-query/utils/get-deep-query.js +20 -15
  141. package/dist/database/get-ast-from-query/utils/get-related-collection.js +16 -12
  142. package/dist/database/helpers/capabilities/dialects/default.js +7 -3
  143. package/dist/database/helpers/capabilities/dialects/mysql.js +11 -9
  144. package/dist/database/helpers/capabilities/dialects/postgres.js +14 -14
  145. package/dist/database/helpers/capabilities/index.js +18 -7
  146. package/dist/database/helpers/capabilities/types.js +20 -15
  147. package/dist/database/helpers/date/dialects/default.js +7 -3
  148. package/dist/database/helpers/date/dialects/mssql.js +13 -8
  149. package/dist/database/helpers/date/dialects/mysql.js +17 -12
  150. package/dist/database/helpers/date/dialects/oracle.js +27 -27
  151. package/dist/database/helpers/date/dialects/sqlite.js +27 -28
  152. package/dist/database/helpers/date/index.js +20 -7
  153. package/dist/database/helpers/date/types.js +25 -22
  154. package/dist/database/helpers/fn/dialects/mssql.js +64 -63
  155. package/dist/database/helpers/fn/dialects/mysql.js +70 -67
  156. package/dist/database/helpers/fn/dialects/oracle.js +64 -63
  157. package/dist/database/helpers/fn/dialects/postgres.js +87 -84
  158. package/dist/database/helpers/fn/dialects/sqlite.js +61 -78
  159. package/dist/database/helpers/fn/index.js +20 -7
  160. package/dist/database/helpers/fn/json/parse-function.js +60 -61
  161. package/dist/database/helpers/fn/types.js +48 -56
  162. package/dist/database/helpers/geometry/dialects/mssql.js +42 -34
  163. package/dist/database/helpers/geometry/dialects/mysql.js +21 -12
  164. package/dist/database/helpers/geometry/dialects/oracle.js +49 -37
  165. package/dist/database/helpers/geometry/dialects/postgres.js +27 -18
  166. package/dist/database/helpers/geometry/dialects/redshift.js +21 -12
  167. package/dist/database/helpers/geometry/dialects/sqlite.js +19 -10
  168. package/dist/database/helpers/geometry/index.js +21 -7
  169. package/dist/database/helpers/geometry/types.js +59 -51
  170. package/dist/database/helpers/index.js +26 -21
  171. package/dist/database/helpers/number/dialects/default.js +7 -3
  172. package/dist/database/helpers/number/dialects/mssql.js +16 -11
  173. package/dist/database/helpers/number/dialects/oracle.js +12 -7
  174. package/dist/database/helpers/number/dialects/postgres.js +18 -15
  175. package/dist/database/helpers/number/dialects/sqlite.js +12 -7
  176. package/dist/database/helpers/number/index.js +20 -7
  177. package/dist/database/helpers/number/types.js +14 -9
  178. package/dist/database/helpers/number/utils/decimal-limit.js +17 -9
  179. package/dist/database/helpers/number/utils/maybe-stringify-big-int.js +9 -5
  180. package/dist/database/helpers/number/utils/number-in-range.js +18 -19
  181. package/dist/database/helpers/schema/dialects/cockroachdb.js +63 -81
  182. package/dist/database/helpers/schema/dialects/default.js +7 -3
  183. package/dist/database/helpers/schema/dialects/mssql.js +64 -84
  184. package/dist/database/helpers/schema/dialects/mysql.js +61 -103
  185. package/dist/database/helpers/schema/dialects/oracle.js +96 -116
  186. package/dist/database/helpers/schema/dialects/postgres.js +41 -52
  187. package/dist/database/helpers/schema/dialects/sqlite.js +31 -29
  188. package/dist/database/helpers/schema/index.js +22 -7
  189. package/dist/database/helpers/schema/types.js +151 -154
  190. package/dist/database/helpers/schema/utils/prep-query-params.js +38 -34
  191. package/dist/database/helpers/sequence/dialects/default.js +7 -3
  192. package/dist/database/helpers/sequence/dialects/postgres.js +23 -13
  193. package/dist/database/helpers/sequence/index.js +17 -7
  194. package/dist/database/helpers/sequence/types.js +11 -6
  195. package/dist/database/helpers/types.js +9 -6
  196. package/dist/database/index.js +255 -287
  197. package/dist/database/migrations/20201028A-remove-collection-foreign-keys.js +44 -40
  198. package/dist/database/migrations/20201029A-remove-system-relations.js +122 -120
  199. package/dist/database/migrations/20201029B-remove-system-collections.js +96 -91
  200. package/dist/database/migrations/20201029C-remove-system-fields.js +1527 -1636
  201. package/dist/database/migrations/20201105A-add-cascade-system-relations.js +114 -126
  202. package/dist/database/migrations/20201105B-change-webhook-url-type.js +15 -10
  203. package/dist/database/migrations/20210225A-add-relations-sort-field.js +30 -28
  204. package/dist/database/migrations/20210304A-remove-locked-fields.js +12 -8
  205. package/dist/database/migrations/20210312A-webhooks-collections-text.js +15 -10
  206. package/dist/database/migrations/20210331A-add-refresh-interval.js +12 -8
  207. package/dist/database/migrations/20210415A-make-filesize-nullable.js +18 -13
  208. package/dist/database/migrations/20210416A-add-collections-accountability.js +13 -9
  209. package/dist/database/migrations/20210422A-remove-files-interface.js +7 -5
  210. package/dist/database/migrations/20210506A-rename-interfaces.js +77 -70
  211. package/dist/database/migrations/20210510A-restructure-relations.js +26 -25
  212. package/dist/database/migrations/20210518A-add-foreign-key-constraints.js +83 -106
  213. package/dist/database/migrations/20210519A-add-system-fk-triggers.js +143 -162
  214. package/dist/database/migrations/20210521A-add-collections-icon-color.js +12 -8
  215. package/dist/database/migrations/20210525A-add-insights.js +33 -29
  216. package/dist/database/migrations/20210608A-add-deep-clone-config.js +12 -8
  217. package/dist/database/migrations/20210626A-change-filesize-bigint.js +22 -17
  218. package/dist/database/migrations/20210716A-add-conditions-to-fields.js +12 -8
  219. package/dist/database/migrations/20210721A-add-default-folder.js +16 -16
  220. package/dist/database/migrations/20210802A-replace-groups.js +35 -44
  221. package/dist/database/migrations/20210803A-add-required-to-fields.js +12 -8
  222. package/dist/database/migrations/20210805A-update-groups.js +26 -27
  223. package/dist/database/migrations/20210805B-change-image-metadata-structure.js +67 -82
  224. package/dist/database/migrations/20210811A-add-geometry-config.js +14 -10
  225. package/dist/database/migrations/20210831A-remove-limit-column.js +12 -8
  226. package/dist/database/migrations/20210903A-add-auth-provider.js +38 -33
  227. package/dist/database/migrations/20210907A-webhooks-collections-not-null.js +14 -11
  228. package/dist/database/migrations/20210910A-move-module-setup.js +18 -14
  229. package/dist/database/migrations/20210920A-webhooks-url-not-null.js +18 -19
  230. package/dist/database/migrations/20210924A-add-collection-organization.js +19 -17
  231. package/dist/database/migrations/20210927A-replace-fields-group.js +48 -48
  232. package/dist/database/migrations/20210927B-replace-m2m-interface.js +8 -14
  233. package/dist/database/migrations/20210929A-rename-login-action.js +8 -12
  234. package/dist/database/migrations/20211007A-update-presets.js +79 -96
  235. package/dist/database/migrations/20211009A-add-auth-data.js +12 -8
  236. package/dist/database/migrations/20211016A-add-webhook-headers.js +12 -8
  237. package/dist/database/migrations/20211103A-set-unique-to-user-token.js +12 -8
  238. package/dist/database/migrations/20211103B-update-special-geometry.js +8 -18
  239. package/dist/database/migrations/20211104A-remove-collections-listing.js +12 -8
  240. package/dist/database/migrations/20211118A-add-notifications.js +28 -23
  241. package/dist/database/migrations/20211211A-add-shares.js +37 -37
  242. package/dist/database/migrations/20211230A-add-project-descriptor.js +12 -8
  243. package/dist/database/migrations/20220303A-remove-default-project-color.js +20 -15
  244. package/dist/database/migrations/20220308A-add-bookmark-icon-and-color.js +14 -10
  245. package/dist/database/migrations/20220314A-add-translation-strings.js +12 -8
  246. package/dist/database/migrations/20220322A-rename-field-typecast-flags.js +59 -70
  247. package/dist/database/migrations/20220323A-add-field-validation.js +14 -10
  248. package/dist/database/migrations/20220325A-fix-typecast-flags.js +36 -43
  249. package/dist/database/migrations/20220325B-add-default-language.js +26 -21
  250. package/dist/database/migrations/20220402A-remove-default-value-panel-icon.js +20 -15
  251. package/dist/database/migrations/20220429A-add-flows.js +80 -75
  252. package/dist/database/migrations/20220429B-add-color-to-insights-icon.js +12 -8
  253. package/dist/database/migrations/20220429C-drop-non-null-from-ip-of-activity.js +12 -8
  254. package/dist/database/migrations/20220429D-drop-non-null-from-sender-of-notifications.js +12 -8
  255. package/dist/database/migrations/20220614A-rename-hook-trigger-to-event.js +8 -4
  256. package/dist/database/migrations/20220801A-update-notifications-timestamp-column.js +15 -12
  257. package/dist/database/migrations/20220802A-add-custom-aspect-ratios.js +12 -8
  258. package/dist/database/migrations/20220826A-add-origin-to-accountability.js +18 -14
  259. package/dist/database/migrations/20230401A-update-material-icons.js +22 -17
  260. package/dist/database/migrations/20230525A-add-preview-settings.js +12 -8
  261. package/dist/database/migrations/20230526A-migrate-translation-strings.js +56 -48
  262. package/dist/database/migrations/20230721A-require-shares-fields.js +52 -48
  263. package/dist/database/migrations/20230823A-add-content-versioning.js +34 -36
  264. package/dist/database/migrations/20230927A-themes.js +51 -47
  265. package/dist/database/migrations/20231009A-update-csv-fields-to-text.js +42 -38
  266. package/dist/database/migrations/20231009B-update-panel-options.js +64 -75
  267. package/dist/database/migrations/20231010A-add-extensions.js +11 -7
  268. package/dist/database/migrations/20231215A-add-focalpoints.js +14 -10
  269. package/dist/database/migrations/20240122A-add-report-url-fields.js +16 -12
  270. package/dist/database/migrations/20240204A-marketplace.js +98 -99
  271. package/dist/database/migrations/20240305A-change-useragent-type.js +16 -17
  272. package/dist/database/migrations/20240311A-deprecate-webhooks.js +97 -121
  273. package/dist/database/migrations/20240422A-public-registration.js +16 -12
  274. package/dist/database/migrations/20240515A-add-session-window.js +12 -8
  275. package/dist/database/migrations/20240701A-add-tus-data.js +14 -10
  276. package/dist/database/migrations/20240716A-update-files-date-fields.js +29 -27
  277. package/dist/database/migrations/20240806A-permissions-policies.js +202 -262
  278. package/dist/database/migrations/20240817A-update-icon-fields-length.js +50 -53
  279. package/dist/database/migrations/20240909A-separate-comments.js +53 -60
  280. package/dist/database/migrations/20240909B-consolidate-content-versioning.js +12 -8
  281. package/dist/database/migrations/20240924A-migrate-legacy-comments.js +67 -79
  282. package/dist/database/migrations/20240924B-populate-versioning-deltas.js +26 -31
  283. package/dist/database/migrations/20250224A-visual-editor.js +31 -31
  284. package/dist/database/migrations/20250609A-license-banner.js +17 -12
  285. package/dist/database/migrations/20250613A-add-project-id.js +22 -24
  286. package/dist/database/migrations/20250718A-add-direction.js +12 -8
  287. package/dist/database/migrations/20250813A-add-mcp.js +20 -16
  288. package/dist/database/migrations/20251012A-add-field-searchable.js +12 -8
  289. package/dist/database/migrations/20251014A-add-project-owner.js +40 -35
  290. package/dist/database/migrations/20251028A-add-retention-indexes.js +53 -40
  291. package/dist/database/migrations/20251103A-add-ai-settings.js +16 -12
  292. package/dist/database/migrations/20251224A-remove-webhooks.js +21 -17
  293. package/dist/database/migrations/20260110A-add-ai-provider-settings.js +45 -33
  294. package/dist/database/migrations/20260113A-add-revisions-index.js +49 -39
  295. package/dist/database/migrations/20260128A-add-collaborative-editing.js +12 -8
  296. package/dist/database/migrations/20260204A-add-deployment.js +34 -30
  297. package/dist/database/migrations/20260211A-add-deployment-webhooks.js +39 -35
  298. package/dist/database/migrations/run.js +113 -109
  299. package/dist/database/run-ast/lib/apply-query/add-join.js +81 -85
  300. package/dist/database/run-ast/lib/apply-query/aggregate.js +34 -23
  301. package/dist/database/run-ast/lib/apply-query/filter/get-filter-type.js +27 -19
  302. package/dist/database/run-ast/lib/apply-query/filter/index.js +136 -150
  303. package/dist/database/run-ast/lib/apply-query/filter/operator.js +174 -182
  304. package/dist/database/run-ast/lib/apply-query/filter/validate-operator.js +17 -17
  305. package/dist/database/run-ast/lib/apply-query/get-filter-path.js +17 -12
  306. package/dist/database/run-ast/lib/apply-query/get-operation.js +26 -17
  307. package/dist/database/run-ast/lib/apply-query/index.js +88 -88
  308. package/dist/database/run-ast/lib/apply-query/join-filter-with-cases.js +13 -11
  309. package/dist/database/run-ast/lib/apply-query/mock.js +9 -4
  310. package/dist/database/run-ast/lib/apply-query/pagination.js +14 -9
  311. package/dist/database/run-ast/lib/apply-query/search.js +75 -77
  312. package/dist/database/run-ast/lib/apply-query/sort.js +90 -86
  313. package/dist/database/run-ast/lib/get-db-query.js +181 -241
  314. package/dist/database/run-ast/lib/parse-current-level.js +54 -47
  315. package/dist/database/run-ast/modules/fetch-permitted-ast-root-fields.js +44 -27
  316. package/dist/database/run-ast/run-ast.js +131 -129
  317. package/dist/database/run-ast/types.js +1 -1
  318. package/dist/database/run-ast/utils/apply-case-when.js +29 -26
  319. package/dist/database/run-ast/utils/apply-function-to-column-name.js +29 -26
  320. package/dist/database/run-ast/utils/apply-parent-filters.js +58 -56
  321. package/dist/database/run-ast/utils/generate-alias.js +48 -52
  322. package/dist/database/run-ast/utils/get-column-pre-processor.js +66 -66
  323. package/dist/database/run-ast/utils/get-column.js +64 -64
  324. package/dist/database/run-ast/utils/get-field-alias.js +9 -5
  325. package/dist/database/run-ast/utils/get-inner-query-column-pre-processor.js +30 -23
  326. package/dist/database/run-ast/utils/merge-with-parent-items.js +127 -137
  327. package/dist/database/run-ast/utils/remove-temporary-fields.js +70 -78
  328. package/dist/database/run-ast/utils/with-preprocess-bindings.js +17 -14
  329. package/dist/database/seeds/run.js +77 -78
  330. package/dist/deployment/deployment.js +34 -29
  331. package/dist/deployment/drivers/index.js +4 -2
  332. package/dist/deployment/drivers/netlify.js +372 -358
  333. package/dist/deployment/drivers/vercel.js +276 -285
  334. package/dist/deployment/index.js +6 -2
  335. package/dist/deployment.js +66 -62
  336. package/dist/emitter.js +101 -89
  337. package/dist/extensions/index.js +12 -7
  338. package/dist/extensions/lib/get-extensions-path.js +13 -8
  339. package/dist/extensions/lib/get-extensions-settings.js +117 -128
  340. package/dist/extensions/lib/get-extensions.js +20 -11
  341. package/dist/extensions/lib/get-shared-deps-mapping.js +30 -26
  342. package/dist/extensions/lib/installation/index.js +12 -7
  343. package/dist/extensions/lib/installation/manager.js +100 -95
  344. package/dist/extensions/lib/sandbox/generate-api-extensions-sandbox-entrypoint.js +66 -43
  345. package/dist/extensions/lib/sandbox/generate-host-function-reference.js +19 -16
  346. package/dist/extensions/lib/sandbox/register/action.js +23 -17
  347. package/dist/extensions/lib/sandbox/register/call-reference.js +28 -21
  348. package/dist/extensions/lib/sandbox/register/filter.js +26 -20
  349. package/dist/extensions/lib/sandbox/register/index.js +7 -5
  350. package/dist/extensions/lib/sandbox/register/operation.js +27 -21
  351. package/dist/extensions/lib/sandbox/register/route.js +52 -43
  352. package/dist/extensions/lib/sandbox/sdk/generators/index.js +5 -3
  353. package/dist/extensions/lib/sandbox/sdk/generators/log.js +14 -11
  354. package/dist/extensions/lib/sandbox/sdk/generators/request.js +56 -48
  355. package/dist/extensions/lib/sandbox/sdk/generators/sleep.js +13 -10
  356. package/dist/extensions/lib/sandbox/sdk/index.js +4 -2
  357. package/dist/extensions/lib/sandbox/sdk/instantiate.js +32 -26
  358. package/dist/extensions/lib/sandbox/sdk/sdk.js +32 -9
  359. package/dist/extensions/lib/sandbox/sdk/utils/index.js +3 -1
  360. package/dist/extensions/lib/sandbox/sdk/utils/wrap.js +50 -47
  361. package/dist/extensions/lib/sync/status.js +30 -29
  362. package/dist/extensions/lib/sync/sync.js +83 -89
  363. package/dist/extensions/lib/sync/tracker.js +68 -71
  364. package/dist/extensions/lib/sync/utils.js +53 -54
  365. package/dist/extensions/lib/wrap-embeds.js +9 -6
  366. package/dist/extensions/manager.js +718 -746
  367. package/dist/flows.js +574 -427
  368. package/dist/index.js +3 -1
  369. package/dist/lock/index.js +3 -1
  370. package/dist/lock/lib/use-lock.js +28 -18
  371. package/dist/logger/index.js +186 -179
  372. package/dist/logger/logs-stream.js +45 -40
  373. package/dist/logger/redact-query.js +16 -12
  374. package/dist/mailer.js +61 -60
  375. package/dist/metrics/index.js +3 -1
  376. package/dist/metrics/lib/create-metrics.js +250 -233
  377. package/dist/metrics/lib/use-metrics.js +19 -14
  378. package/dist/metrics/types/metric.js +1 -1
  379. package/dist/middleware/authenticate.js +46 -47
  380. package/dist/middleware/cache.js +61 -57
  381. package/dist/middleware/collection-exists.js +24 -24
  382. package/dist/middleware/cors.js +17 -12
  383. package/dist/middleware/error-handler.js +77 -86
  384. package/dist/middleware/extract-token.js +37 -43
  385. package/dist/middleware/graphql.js +70 -68
  386. package/dist/middleware/rate-limiter-global.js +41 -38
  387. package/dist/middleware/rate-limiter-ip.js +36 -29
  388. package/dist/middleware/rate-limiter-registration.js +32 -29
  389. package/dist/middleware/request-counter.js +28 -0
  390. package/dist/middleware/respond.js +97 -109
  391. package/dist/middleware/sanitize-query.js +25 -27
  392. package/dist/middleware/schema.js +11 -6
  393. package/dist/middleware/use-collection.js +10 -5
  394. package/dist/middleware/validate-batch.js +41 -42
  395. package/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +445 -0
  396. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/index.js +176 -0
  397. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/system/policy.js +54 -0
  398. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/any/any.js +13 -0
  399. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/any/index.js +3 -0
  400. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/argument/argument.js +15 -0
  401. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/argument/index.js +3 -0
  402. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/array/array.js +16 -0
  403. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/array/index.js +3 -0
  404. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/async-iterator/async-iterator.js +16 -0
  405. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/async-iterator/index.js +3 -0
  406. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/awaited/awaited.js +37 -0
  407. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/awaited/index.js +3 -0
  408. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/bigint/bigint.js +16 -0
  409. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/bigint/index.js +3 -0
  410. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/boolean/boolean.js +16 -0
  411. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/boolean/index.js +3 -0
  412. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/clone/index.js +4 -0
  413. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/clone/type.js +17 -0
  414. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/clone/value.js +35 -0
  415. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/composite/composite.js +42 -0
  416. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/composite/index.js +3 -0
  417. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/computed/computed.js +16 -0
  418. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/computed/index.js +3 -0
  419. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/const/const.js +52 -0
  420. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/const/index.js +3 -0
  421. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/constructor/constructor.js +17 -0
  422. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/constructor/index.js +3 -0
  423. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/constructor-parameters/constructor-parameters.js +14 -0
  424. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/constructor-parameters/index.js +3 -0
  425. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/create/immutable.js +32 -0
  426. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/create/index.js +3 -0
  427. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/create/type.js +20 -0
  428. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/date/date.js +15 -0
  429. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/date/index.js +3 -0
  430. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/discard/discard.js +12 -0
  431. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/discard/index.js +3 -0
  432. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/enum/enum.js +23 -0
  433. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/enum/index.js +3 -0
  434. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/error/error.js +10 -0
  435. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/error/index.js +3 -0
  436. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-mapped-result.js +20 -0
  437. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-template-literal.js +11 -0
  438. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude.js +25 -0
  439. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/exclude/index.js +5 -0
  440. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extends/extends-check.js +267 -0
  441. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-key.js +29 -0
  442. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-result.js +21 -0
  443. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extends/extends-undefined.js +21 -0
  444. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extends/extends.js +20 -0
  445. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extends/index.js +7 -0
  446. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-mapped-result.js +20 -0
  447. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-template-literal.js +11 -0
  448. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extract/extract.js +25 -0
  449. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/extract/index.js +5 -0
  450. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/function/function.js +17 -0
  451. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/function/index.js +3 -0
  452. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/guard/index.js +5 -0
  453. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/guard/kind.js +204 -0
  454. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/guard/type.js +293 -0
  455. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/guard/value.js +68 -0
  456. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/helpers/helpers.js +8 -0
  457. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/helpers/index.js +3 -0
  458. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/indexed/index.js +6 -0
  459. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-key.js +27 -0
  460. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-result.js +24 -0
  461. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-property-keys.js +24 -0
  462. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed.js +67 -0
  463. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/instance-type/index.js +3 -0
  464. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/instance-type/instance-type.js +13 -0
  465. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/instantiate/index.js +3 -0
  466. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/instantiate/instantiate.js +102 -0
  467. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/integer/index.js +3 -0
  468. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/integer/integer.js +15 -0
  469. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intersect/index.js +5 -0
  470. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-create.js +23 -0
  471. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-evaluated.js +35 -0
  472. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-type.js +3 -0
  473. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect.js +17 -0
  474. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intrinsic/capitalize.js +10 -0
  475. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intrinsic/index.js +8 -0
  476. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic-from-mapped-key.js +30 -0
  477. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic.js +54 -0
  478. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intrinsic/lowercase.js +10 -0
  479. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intrinsic/uncapitalize.js +10 -0
  480. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/intrinsic/uppercase.js +10 -0
  481. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/iterator/index.js +3 -0
  482. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/iterator/iterator.js +16 -0
  483. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/keyof/index.js +6 -0
  484. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-from-mapped-result.js +21 -0
  485. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-entries.js +17 -0
  486. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-keys.js +52 -0
  487. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof.js +38 -0
  488. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/literal/index.js +3 -0
  489. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/literal/literal.js +16 -0
  490. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/mapped/index.js +5 -0
  491. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/mapped/mapped-key.js +14 -0
  492. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/mapped/mapped-result.js +14 -0
  493. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/mapped/mapped.js +86 -0
  494. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/module/compute.js +144 -0
  495. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/module/index.js +3 -0
  496. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/module/module.js +44 -0
  497. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/never/index.js +3 -0
  498. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/never/never.js +15 -0
  499. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/not/index.js +3 -0
  500. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/not/not.js +15 -0
  501. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/null/index.js +3 -0
  502. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/null/null.js +15 -0
  503. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/number/index.js +3 -0
  504. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/number/number.js +15 -0
  505. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/object/index.js +3 -0
  506. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/object/object.js +33 -0
  507. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/omit/index.js +5 -0
  508. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-key.js +27 -0
  509. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-result.js +21 -0
  510. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/omit/omit.js +65 -0
  511. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/optional/index.js +4 -0
  512. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/optional/optional-from-mapped-result.js +20 -0
  513. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/optional/optional.js +29 -0
  514. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/parameters/index.js +3 -0
  515. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/parameters/parameters.js +14 -0
  516. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/partial/index.js +4 -0
  517. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/partial/partial-from-mapped-result.js +21 -0
  518. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/partial/partial.js +62 -0
  519. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/patterns/index.js +3 -0
  520. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/patterns/patterns.js +12 -0
  521. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/pick/index.js +5 -0
  522. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-key.js +27 -0
  523. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-result.js +21 -0
  524. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/pick/pick.js +63 -0
  525. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/promise/index.js +3 -0
  526. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/promise/promise.js +16 -0
  527. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/readonly/index.js +4 -0
  528. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/readonly/readonly-from-mapped-result.js +20 -0
  529. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/readonly/readonly.js +29 -0
  530. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/readonly-optional/index.js +3 -0
  531. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/readonly-optional/readonly-optional.js +13 -0
  532. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/record/index.js +3 -0
  533. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/record/record.js +92 -0
  534. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/recursive/index.js +3 -0
  535. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/recursive/recursive.js +24 -0
  536. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/ref/index.js +3 -0
  537. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/ref/ref.js +19 -0
  538. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/regexp/index.js +3 -0
  539. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/regexp/regexp.js +19 -0
  540. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/registry/format.js +30 -0
  541. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/registry/index.js +4 -0
  542. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/registry/type.js +30 -0
  543. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/required/index.js +4 -0
  544. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/required/required-from-mapped-result.js +20 -0
  545. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/required/required.js +60 -0
  546. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/rest/index.js +3 -0
  547. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/rest/rest.js +13 -0
  548. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/return-type/index.js +3 -0
  549. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/return-type/return-type.js +13 -0
  550. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/schema/anyschema.js +1 -0
  551. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/schema/index.js +4 -0
  552. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/schema/schema.js +3 -0
  553. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/sets/index.js +3 -0
  554. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/sets/set.js +42 -0
  555. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/static/index.js +3 -0
  556. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/static/static.js +1 -0
  557. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/string/index.js +3 -0
  558. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/string/string.js +15 -0
  559. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/symbol/index.js +3 -0
  560. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/symbol/symbol.js +15 -0
  561. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/symbols/index.js +3 -0
  562. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.js +14 -0
  563. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/template-literal/finite.js +28 -0
  564. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/template-literal/generate.js +37 -0
  565. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/template-literal/index.js +9 -0
  566. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/template-literal/parse.js +125 -0
  567. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/template-literal/pattern.js +24 -0
  568. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/template-literal/syntax.js +55 -0
  569. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/template-literal/template-literal.js +20 -0
  570. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/template-literal/union.js +16 -0
  571. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/transform/index.js +3 -0
  572. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/transform/transform.js +51 -0
  573. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/tuple/index.js +3 -0
  574. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/tuple/tuple.js +24 -0
  575. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/type/index.js +10 -0
  576. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/type/javascript.js +123 -0
  577. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/type/json.js +263 -0
  578. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/type/type.js +191 -0
  579. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/uint8array/index.js +3 -0
  580. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/uint8array/uint8array.js +15 -0
  581. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/undefined/index.js +3 -0
  582. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/undefined/undefined.js +15 -0
  583. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/union/index.js +5 -0
  584. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/union/union-create.js +14 -0
  585. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/union/union-evaluated.js +33 -0
  586. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/union/union-type.js +3 -0
  587. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/union/union.js +13 -0
  588. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/unknown/index.js +3 -0
  589. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/unknown/unknown.js +12 -0
  590. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/unsafe/index.js +3 -0
  591. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/unsafe/unsafe.js +12 -0
  592. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/void/index.js +3 -0
  593. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/type/void/void.js +15 -0
  594. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/value/guard/guard.js +140 -0
  595. package/dist/node_modules/.pnpm/@sinclair_typebox@0.34.41/node_modules/@sinclair/typebox/build/esm/value/guard/index.js +3 -0
  596. package/dist/node_modules/.pnpm/@vitest_expect@3.2.4/node_modules/@vitest/expect/dist/index.js +1714 -0
  597. package/dist/node_modules/.pnpm/@vitest_pretty-format@3.2.4/node_modules/@vitest/pretty-format/dist/index.js +1287 -0
  598. package/dist/node_modules/.pnpm/@vitest_runner@3.2.4/node_modules/@vitest/runner/dist/chunk-hooks.js +2151 -0
  599. package/dist/node_modules/.pnpm/@vitest_runner@3.2.4/node_modules/@vitest/runner/dist/index.js +8 -0
  600. package/dist/node_modules/.pnpm/@vitest_runner@3.2.4/node_modules/@vitest/runner/dist/utils.js +8 -0
  601. package/dist/node_modules/.pnpm/@vitest_snapshot@3.2.4/node_modules/@vitest/snapshot/dist/index.js +2082 -0
  602. package/dist/node_modules/.pnpm/@vitest_spy@3.2.4/node_modules/@vitest/spy/dist/index.js +192 -0
  603. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.js +158 -0
  604. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/diff.js +1535 -0
  605. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/error.js +155 -0
  606. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/helpers.js +244 -0
  607. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/index.js +621 -0
  608. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/source-map.js +890 -0
  609. package/dist/node_modules/.pnpm/chai@5.3.3/node_modules/chai/index.js +3558 -0
  610. package/dist/node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/branding.js +13 -0
  611. package/dist/node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/index.js +115 -0
  612. package/dist/node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/messages.js +77 -0
  613. package/dist/node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/overloads.js +13 -0
  614. package/dist/node_modules/.pnpm/expect-type@1.2.2/node_modules/expect-type/dist/utils.js +30 -0
  615. package/dist/node_modules/.pnpm/js-tokens@9.0.1/node_modules/js-tokens/index.js +398 -0
  616. package/dist/node_modules/.pnpm/knex-mock-client@3.0.2_knex@3.1.0_mysql2@3.15.3_pg@8.16.3_sqlite3@5.1.7_tedious@18.6.1_/node_modules/knex-mock-client/dist/MockClient.js +79 -0
  617. package/dist/node_modules/.pnpm/knex-mock-client@3.0.2_knex@3.1.0_mysql2@3.15.3_pg@8.16.3_sqlite3@5.1.7_tedious@18.6.1_/node_modules/knex-mock-client/dist/MockConnection.js +64 -0
  618. package/dist/node_modules/.pnpm/knex-mock-client@3.0.2_knex@3.1.0_mysql2@3.15.3_pg@8.16.3_sqlite3@5.1.7_tedious@18.6.1_/node_modules/knex-mock-client/dist/Tracker.js +185 -0
  619. package/dist/node_modules/.pnpm/knex-mock-client@3.0.2_knex@3.1.0_mysql2@3.15.3_pg@8.16.3_sqlite3@5.1.7_tedious@18.6.1_/node_modules/knex-mock-client/dist/constants.js +30 -0
  620. package/dist/node_modules/.pnpm/knex-mock-client@3.0.2_knex@3.1.0_mysql2@3.15.3_pg@8.16.3_sqlite3@5.1.7_tedious@18.6.1_/node_modules/knex-mock-client/dist/index.js +37 -0
  621. package/dist/node_modules/.pnpm/knex-mock-client@3.0.2_knex@3.1.0_mysql2@3.15.3_pg@8.16.3_sqlite3@5.1.7_tedious@18.6.1_/node_modules/knex-mock-client/dist/utils.js +17 -0
  622. package/dist/node_modules/.pnpm/lodash.clonedeep@4.5.0/node_modules/lodash.clonedeep/index.js +1486 -0
  623. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/arguments.js +11 -0
  624. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/array.js +18 -0
  625. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/bigint.js +11 -0
  626. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/class.js +19 -0
  627. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/date.js +15 -0
  628. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/error.js +39 -0
  629. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/function.js +14 -0
  630. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/helpers.js +141 -0
  631. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/html.js +43 -0
  632. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/index.js +138 -0
  633. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/map.js +25 -0
  634. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/number.js +22 -0
  635. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/object.js +27 -0
  636. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/promise.js +6 -0
  637. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/regexp.js +12 -0
  638. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/set.js +18 -0
  639. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/string.js +27 -0
  640. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/symbol.js +10 -0
  641. package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/typedarray.js +36 -0
  642. package/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +1258 -0
  643. package/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +21 -0
  644. package/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +478 -0
  645. package/dist/node_modules/.pnpm/strip-literal@3.1.0/node_modules/strip-literal/dist/index.js +84 -0
  646. package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/chunk-BVHSVHOK.js +85 -0
  647. package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/node.js +15 -0
  648. package/dist/node_modules/.pnpm/tinyspy@4.0.4/node_modules/tinyspy/dist/index.js +158 -0
  649. package/dist/node_modules/.pnpm/vitest@3.2.4_@types_node@22.13.14_@vitest_ui@3.2.4_happy-dom@20.0.10_jiti@2.6.1_jsdom@2_4abc0aa80426c2cc5a9175f21e1d4ebb/node_modules/vitest/dist/chunks/_commonjsHelpers.BFTU3MAI.js +8 -0
  650. package/dist/node_modules/.pnpm/vitest@3.2.4_@types_node@22.13.14_@vitest_ui@3.2.4_happy-dom@20.0.10_jiti@2.6.1_jsdom@2_4abc0aa80426c2cc5a9175f21e1d4ebb/node_modules/vitest/dist/chunks/benchmark.CYdenmiT.js +41 -0
  651. package/dist/node_modules/.pnpm/vitest@3.2.4_@types_node@22.13.14_@vitest_ui@3.2.4_happy-dom@20.0.10_jiti@2.6.1_jsdom@2_4abc0aa80426c2cc5a9175f21e1d4ebb/node_modules/vitest/dist/chunks/date.Bq6ZW5rf.js +50 -0
  652. package/dist/node_modules/.pnpm/vitest@3.2.4_@types_node@22.13.14_@vitest_ui@3.2.4_happy-dom@20.0.10_jiti@2.6.1_jsdom@2_4abc0aa80426c2cc5a9175f21e1d4ebb/node_modules/vitest/dist/chunks/index.CdQS2e2Q.js +38 -0
  653. package/dist/node_modules/.pnpm/vitest@3.2.4_@types_node@22.13.14_@vitest_ui@3.2.4_happy-dom@20.0.10_jiti@2.6.1_jsdom@2_4abc0aa80426c2cc5a9175f21e1d4ebb/node_modules/vitest/dist/chunks/utils.XdZDrNZV.js +66 -0
  654. package/dist/node_modules/.pnpm/vitest@3.2.4_@types_node@22.13.14_@vitest_ui@3.2.4_happy-dom@20.0.10_jiti@2.6.1_jsdom@2_4abc0aa80426c2cc5a9175f21e1d4ebb/node_modules/vitest/dist/chunks/vi.bdSIJ99Y.js +2986 -0
  655. package/dist/node_modules/.pnpm/vitest@3.2.4_@types_node@22.13.14_@vitest_ui@3.2.4_happy-dom@20.0.10_jiti@2.6.1_jsdom@2_4abc0aa80426c2cc5a9175f21e1d4ebb/node_modules/vitest/dist/index.js +24 -0
  656. package/dist/operations/condition/index.js +23 -21
  657. package/dist/operations/exec/index.js +49 -44
  658. package/dist/operations/item-create/index.js +49 -36
  659. package/dist/operations/item-delete/index.js +56 -44
  660. package/dist/operations/item-read/index.js +56 -44
  661. package/dist/operations/item-update/index.js +62 -51
  662. package/dist/operations/json-web-token/index.js +33 -35
  663. package/dist/operations/log/index.js +14 -9
  664. package/dist/operations/mail/index.js +39 -25
  665. package/dist/operations/mail/rate-limiter.js +26 -25
  666. package/dist/operations/notification/index.js +52 -42
  667. package/dist/operations/request/index.js +47 -39
  668. package/dist/operations/sleep/index.js +11 -6
  669. package/dist/operations/throw-error/index.js +14 -9
  670. package/dist/operations/transform/index.js +12 -7
  671. package/dist/operations/trigger/index.js +42 -37
  672. package/dist/packages/types/dist/index.js +403 -0
  673. package/dist/permissions/cache.js +28 -25
  674. package/dist/permissions/lib/fetch-permissions.js +33 -26
  675. package/dist/permissions/lib/fetch-policies.js +42 -41
  676. package/dist/permissions/lib/fetch-roles-tree.js +10 -5
  677. package/dist/permissions/lib/with-app-minimal-permissions.js +14 -9
  678. package/dist/permissions/modules/fetch-accountability-collection-access/fetch-accountability-collection-access.js +56 -54
  679. package/dist/permissions/modules/fetch-accountability-policy-globals/fetch-accountability-policy-globals.js +14 -15
  680. package/dist/permissions/modules/fetch-allowed-collections/fetch-allowed-collections.js +26 -11
  681. package/dist/permissions/modules/fetch-allowed-field-map/fetch-allowed-field-map.js +40 -25
  682. package/dist/permissions/modules/fetch-allowed-fields/fetch-allowed-fields.js +34 -19
  683. package/dist/permissions/modules/fetch-global-access/fetch-global-access.js +33 -26
  684. package/dist/permissions/modules/fetch-inconsistent-field-map/fetch-inconsistent-field-map.js +38 -25
  685. package/dist/permissions/modules/fetch-policies-ip-access/fetch-policies-ip-access.js +27 -27
  686. package/dist/permissions/modules/process-ast/lib/extract-fields-from-children.js +33 -48
  687. package/dist/permissions/modules/process-ast/lib/extract-fields-from-query.js +55 -55
  688. package/dist/permissions/modules/process-ast/lib/field-map-from-ast.js +15 -7
  689. package/dist/permissions/modules/process-ast/lib/get-cases.js +30 -39
  690. package/dist/permissions/modules/process-ast/lib/inject-cases.js +44 -50
  691. package/dist/permissions/modules/process-ast/process-ast.js +45 -38
  692. package/dist/permissions/modules/process-ast/types.js +1 -1
  693. package/dist/permissions/modules/process-ast/utils/collections-in-field-map.js +10 -6
  694. package/dist/permissions/modules/process-ast/utils/context-has-dynamic-variables.js +6 -2
  695. package/dist/permissions/modules/process-ast/utils/dedupe-access.js +32 -28
  696. package/dist/permissions/modules/process-ast/utils/extract-paths-from-query.js +54 -58
  697. package/dist/permissions/modules/process-ast/utils/find-related-collection.js +12 -8
  698. package/dist/permissions/modules/process-ast/utils/flatten-filter.js +30 -33
  699. package/dist/permissions/modules/process-ast/utils/format-a2o-key.js +6 -2
  700. package/dist/permissions/modules/process-ast/utils/get-info-for-path.js +13 -6
  701. package/dist/permissions/modules/process-ast/utils/has-item-permissions.js +6 -2
  702. package/dist/permissions/modules/process-ast/utils/stringify-query-path.js +6 -2
  703. package/dist/permissions/modules/process-ast/utils/validate-path/create-error.js +13 -14
  704. package/dist/permissions/modules/process-ast/utils/validate-path/validate-path-existence.js +16 -11
  705. package/dist/permissions/modules/process-ast/utils/validate-path/validate-path-permissions.js +28 -27
  706. package/dist/permissions/modules/process-payload/lib/is-field-nullable.js +13 -10
  707. package/dist/permissions/modules/process-payload/process-payload.js +77 -82
  708. package/dist/permissions/modules/validate-access/lib/validate-collection-access.js +19 -9
  709. package/dist/permissions/modules/validate-access/lib/validate-item-access.js +108 -99
  710. package/dist/permissions/modules/validate-access/validate-access.js +33 -39
  711. package/dist/permissions/modules/validate-remaining-admin/validate-remaining-admin-count.js +10 -7
  712. package/dist/permissions/modules/validate-remaining-admin/validate-remaining-admin-users.js +14 -9
  713. package/dist/permissions/types.js +1 -1
  714. package/dist/permissions/utils/create-default-accountability.js +14 -10
  715. package/dist/permissions/utils/default-permission.js +10 -6
  716. package/dist/permissions/utils/extract-required-dynamic-variable-context.js +47 -42
  717. package/dist/permissions/utils/fetch-dynamic-variable-data.js +62 -69
  718. package/dist/permissions/utils/fetch-raw-permissions.js +33 -37
  719. package/dist/permissions/utils/fetch-share-info.js +17 -8
  720. package/dist/permissions/utils/filter-policies-by-ip.js +16 -14
  721. package/dist/permissions/utils/get-permissions-for-share.js +163 -176
  722. package/dist/permissions/utils/get-unaliased-field-key.js +21 -23
  723. package/dist/permissions/utils/merge-fields.js +23 -28
  724. package/dist/permissions/utils/merge-permissions.js +78 -104
  725. package/dist/permissions/utils/process-permissions.js +15 -10
  726. package/dist/permissions/utils/with-cache.js +30 -25
  727. package/dist/rate-limiter.js +28 -26
  728. package/dist/redis/index.js +5 -3
  729. package/dist/redis/lib/create-redis.js +15 -10
  730. package/dist/redis/lib/use-redis.js +21 -19
  731. package/dist/redis/utils/redis-config-available.js +14 -9
  732. package/dist/request/agent-with-ip-validation.js +27 -35
  733. package/dist/request/index.js +19 -14
  734. package/dist/request/is-denied-ip.js +41 -39
  735. package/dist/schedules/metrics.js +45 -42
  736. package/dist/schedules/project.js +26 -25
  737. package/dist/schedules/retention.js +105 -106
  738. package/dist/schedules/telemetry.js +30 -26
  739. package/dist/schedules/tus.js +24 -21
  740. package/dist/server.js +155 -151
  741. package/dist/services/access.js +43 -43
  742. package/dist/services/activity.js +11 -6
  743. package/dist/services/assets/name-deduper.js +28 -23
  744. package/dist/services/assets.js +292 -300
  745. package/dist/services/authentication.js +410 -444
  746. package/dist/services/collections.js +592 -646
  747. package/dist/services/comments.js +143 -132
  748. package/dist/services/dashboards.js +11 -6
  749. package/dist/services/deployment-projects.js +135 -138
  750. package/dist/services/deployment-runs.js +87 -92
  751. package/dist/services/deployment.js +459 -449
  752. package/dist/services/extensions.js +211 -227
  753. package/dist/services/fields/build-collection-and-field-relations.js +53 -53
  754. package/dist/services/fields/get-collection-meta-updates.js +68 -69
  755. package/dist/services/fields/get-collection-relation-list.js +26 -26
  756. package/dist/services/fields.js +732 -810
  757. package/dist/services/files/lib/extract-metadata.js +34 -31
  758. package/dist/services/files/lib/get-sharp-instance.js +14 -9
  759. package/dist/services/files/utils/get-metadata.js +101 -105
  760. package/dist/services/files/utils/parse-image-metadata.js +70 -64
  761. package/dist/services/files.js +409 -328
  762. package/dist/services/flows.js +34 -27
  763. package/dist/services/folders.js +83 -81
  764. package/dist/services/graphql/errors/execution.js +7 -2
  765. package/dist/services/graphql/errors/format.js +16 -11
  766. package/dist/services/graphql/errors/index.js +4 -2
  767. package/dist/services/graphql/errors/validation.js +7 -2
  768. package/dist/services/graphql/index.js +95 -94
  769. package/dist/services/graphql/resolvers/get-collection-type.js +34 -33
  770. package/dist/services/graphql/resolvers/get-field-type.js +51 -50
  771. package/dist/services/graphql/resolvers/get-relation-type.js +41 -38
  772. package/dist/services/graphql/resolvers/mutation.js +68 -73
  773. package/dist/services/graphql/resolvers/query.js +68 -68
  774. package/dist/services/graphql/resolvers/system-admin.js +279 -286
  775. package/dist/services/graphql/resolvers/system-global.js +414 -432
  776. package/dist/services/graphql/resolvers/system.js +406 -459
  777. package/dist/services/graphql/schema/get-types.js +182 -220
  778. package/dist/services/graphql/schema/index.js +189 -185
  779. package/dist/services/graphql/schema/parse-args.js +28 -33
  780. package/dist/services/graphql/schema/parse-query.js +106 -103
  781. package/dist/services/graphql/schema/read.js +451 -735
  782. package/dist/services/graphql/schema/write.js +119 -141
  783. package/dist/services/graphql/schema-cache.js +13 -7
  784. package/dist/services/graphql/subscription.js +91 -94
  785. package/dist/services/graphql/types/bigint.js +41 -42
  786. package/dist/services/graphql/types/date.js +10 -5
  787. package/dist/services/graphql/types/geojson.js +11 -6
  788. package/dist/services/graphql/types/hash.js +10 -5
  789. package/dist/services/graphql/types/string-or-float.js +31 -29
  790. package/dist/services/graphql/types/void.js +18 -13
  791. package/dist/services/graphql/utils/add-path-to-validation-error.js +18 -14
  792. package/dist/services/graphql/utils/aggregate-query.js +33 -37
  793. package/dist/services/graphql/utils/dedupe-resolvers.js +62 -0
  794. package/dist/services/graphql/utils/filter-replace-m2a.js +66 -63
  795. package/dist/services/graphql/utils/process-error.js +40 -41
  796. package/dist/services/graphql/utils/replace-fragments.js +30 -19
  797. package/dist/services/graphql/utils/replace-funcs.js +23 -19
  798. package/dist/services/graphql/utils/sanitize-gql-schema.js +79 -73
  799. package/dist/services/import-export.js +671 -633
  800. package/dist/services/index.js +95 -41
  801. package/dist/services/items.js +854 -945
  802. package/dist/services/mail/index.js +106 -104
  803. package/dist/services/mail/rate-limiter.js +26 -25
  804. package/dist/services/meta.js +71 -63
  805. package/dist/services/notifications.js +66 -58
  806. package/dist/services/operations.js +30 -25
  807. package/dist/services/panels.js +11 -6
  808. package/dist/services/payload.js +745 -832
  809. package/dist/services/permissions.js +143 -132
  810. package/dist/services/policies.js +74 -87
  811. package/dist/services/presets.js +11 -6
  812. package/dist/services/relations.js +438 -494
  813. package/dist/services/revisions.js +50 -44
  814. package/dist/services/roles.js +81 -87
  815. package/dist/services/schema.js +50 -52
  816. package/dist/services/server.js +320 -384
  817. package/dist/services/settings.js +31 -21
  818. package/dist/services/shares.js +138 -141
  819. package/dist/services/specifications.js +396 -526
  820. package/dist/services/tfa.js +64 -65
  821. package/dist/services/translations.js +46 -36
  822. package/dist/services/tus/data-store.js +186 -214
  823. package/dist/services/tus/index.js +4 -2
  824. package/dist/services/tus/lockers.js +77 -81
  825. package/dist/services/tus/server.js +109 -113
  826. package/dist/services/tus/utils/wait-timeout.js +16 -12
  827. package/dist/services/users.js +490 -525
  828. package/dist/services/utils.js +102 -129
  829. package/dist/services/versions.js +303 -314
  830. package/dist/services/websocket.js +45 -36
  831. package/dist/start.js +6 -1
  832. package/dist/storage/get-storage-driver.js +18 -15
  833. package/dist/storage/index.js +18 -16
  834. package/dist/storage/register-drivers.js +20 -17
  835. package/dist/storage/register-locations.js +28 -17
  836. package/dist/synchronization.js +106 -103
  837. package/dist/telemetry/counter/use-buffered-counter.js +138 -0
  838. package/dist/telemetry/counter/use-counters.js +32 -0
  839. package/dist/telemetry/index.js +5 -3
  840. package/dist/telemetry/lib/get-report.js +72 -58
  841. package/dist/telemetry/lib/send-report.js +24 -23
  842. package/dist/telemetry/lib/track.js +32 -28
  843. package/dist/telemetry/types/report.js +1 -1
  844. package/dist/telemetry/utils/check-user-limits.js +20 -16
  845. package/dist/telemetry/utils/format-api-request-counts.js +26 -0
  846. package/dist/telemetry/utils/get-extension-count.js +21 -18
  847. package/dist/telemetry/utils/get-field-count.js +12 -11
  848. package/dist/telemetry/utils/get-filesize-sum.js +9 -6
  849. package/dist/telemetry/utils/get-item-count.js +40 -34
  850. package/dist/telemetry/utils/get-random-wait-time.js +8 -4
  851. package/dist/telemetry/utils/get-settings.js +37 -34
  852. package/dist/telemetry/utils/get-user-item-count.js +24 -18
  853. package/dist/telemetry/utils/should-check-user-limits.js +14 -11
  854. package/dist/test-utils/README.md +316 -5
  855. package/dist/test-utils/cache.js +62 -57
  856. package/dist/test-utils/controllers.js +94 -93
  857. package/dist/test-utils/database.js +50 -50
  858. package/dist/test-utils/emitter.js +36 -36
  859. package/dist/test-utils/env.js +77 -0
  860. package/dist/test-utils/knex.js +208 -254
  861. package/dist/test-utils/schema.js +33 -33
  862. package/dist/test-utils/services/fields-service.js +36 -35
  863. package/dist/test-utils/services/files-service.js +33 -32
  864. package/dist/test-utils/services/folders-service.js +32 -31
  865. package/dist/test-utils/services/items-service.js +50 -35
  866. package/dist/test-utils/storage.js +150 -0
  867. package/dist/types/ast.js +1 -1
  868. package/dist/types/auth.js +1 -1
  869. package/dist/types/collection.js +1 -1
  870. package/dist/types/events.js +1 -1
  871. package/dist/types/index.js +9 -7
  872. package/dist/types/meta.js +9 -5
  873. package/dist/types/migration.js +1 -1
  874. package/dist/types/revision.js +1 -1
  875. package/dist/types/rolemap.js +1 -1
  876. package/dist/utils/apply-diff.js +276 -291
  877. package/dist/utils/apply-snapshot.js +27 -13
  878. package/dist/utils/async-handler.js +5 -1
  879. package/dist/utils/calculate-field-depth.js +70 -69
  880. package/dist/utils/compress.js +13 -10
  881. package/dist/utils/construct-flow-tree.js +29 -24
  882. package/dist/utils/create-admin.js +54 -46
  883. package/dist/utils/deep-map-response.js +64 -59
  884. package/dist/utils/delete-from-require-cache.js +15 -11
  885. package/dist/utils/destroy-piped-stream.js +13 -0
  886. package/dist/utils/encrypt.js +59 -59
  887. package/dist/utils/fetch-user-count/fetch-access-lookup.js +22 -22
  888. package/dist/utils/fetch-user-count/fetch-access-roles.js +31 -35
  889. package/dist/utils/fetch-user-count/fetch-active-users.js +6 -2
  890. package/dist/utils/fetch-user-count/fetch-user-count.js +56 -62
  891. package/dist/utils/fetch-user-count/get-user-count-query.js +19 -16
  892. package/dist/utils/filter-items.js +27 -30
  893. package/dist/utils/freeze-schema.js +28 -29
  894. package/dist/utils/generate-hash.js +11 -8
  895. package/dist/utils/generate-translations.js +436 -0
  896. package/dist/utils/get-accountability-for-role.js +35 -30
  897. package/dist/utils/get-accountability-for-token.js +50 -53
  898. package/dist/utils/get-address.js +20 -17
  899. package/dist/utils/get-allowed-log-levels.js +12 -9
  900. package/dist/utils/get-auth-providers.js +30 -23
  901. package/dist/utils/get-cache-headers.js +30 -37
  902. package/dist/utils/get-cache-key.js +29 -26
  903. package/dist/utils/get-collection-from-alias.js +14 -10
  904. package/dist/utils/get-column-path.js +62 -61
  905. package/dist/utils/get-config-from-env.js +43 -45
  906. package/dist/utils/get-default-index-name.js +23 -20
  907. package/dist/utils/get-default-value.js +43 -52
  908. package/dist/utils/get-field-relational-depth.js +24 -20
  909. package/dist/utils/get-field-system-rows.js +19 -16
  910. package/dist/utils/get-graphql-query-and-variables.js +9 -4
  911. package/dist/utils/get-graphql-type.js +32 -38
  912. package/dist/utils/get-ip-from-req.js +38 -42
  913. package/dist/utils/get-local-type.js +119 -129
  914. package/dist/utils/get-milliseconds.js +13 -8
  915. package/dist/utils/get-module-default.js +9 -5
  916. package/dist/utils/get-schema.js +160 -165
  917. package/dist/utils/get-secret.js +18 -13
  918. package/dist/utils/get-service.js +63 -59
  919. package/dist/utils/get-snapshot-diff.js +106 -134
  920. package/dist/utils/get-snapshot.js +70 -55
  921. package/dist/utils/get-string-byte-size.js +8 -4
  922. package/dist/utils/get-versioned-hash.js +12 -4
  923. package/dist/utils/import-file-url.js +10 -5
  924. package/dist/utils/is-directus-jwt.js +17 -14
  925. package/dist/utils/is-field-allowed.js +11 -7
  926. package/dist/utils/is-url-allowed.js +29 -29
  927. package/dist/utils/is-valid-uuid.js +22 -18
  928. package/dist/utils/job-queue.js +29 -25
  929. package/dist/utils/jwt.js +30 -27
  930. package/dist/utils/md.js +12 -7
  931. package/dist/utils/parse-filter-key.js +21 -14
  932. package/dist/utils/parse-numeric-string.js +20 -20
  933. package/dist/utils/parse-value.js +12 -9
  934. package/dist/utils/permissions-cacheable.js +45 -37
  935. package/dist/utils/redact-object.js +120 -125
  936. package/dist/utils/reduce-schema.js +53 -60
  937. package/dist/utils/require-text.js +8 -3
  938. package/dist/utils/require-yaml.js +10 -5
  939. package/dist/utils/sanitize-query.js +195 -213
  940. package/dist/utils/sanitize-schema.js +102 -83
  941. package/dist/utils/schedule.js +28 -24
  942. package/dist/utils/should-clear-cache.js +23 -18
  943. package/dist/utils/should-skip-cache.js +39 -40
  944. package/dist/utils/split-fields.js +33 -30
  945. package/dist/utils/stall.js +36 -32
  946. package/dist/utils/store.js +40 -0
  947. package/dist/utils/transaction.js +82 -81
  948. package/dist/utils/transformations.js +125 -129
  949. package/dist/utils/translations-shared.js +56 -0
  950. package/dist/utils/translations-validation.js +9 -0
  951. package/dist/utils/url.js +67 -66
  952. package/dist/utils/user-name.js +18 -14
  953. package/dist/utils/validate-diff.js +124 -150
  954. package/dist/utils/validate-env.js +16 -11
  955. package/dist/utils/validate-keys.js +22 -19
  956. package/dist/utils/validate-query.js +185 -198
  957. package/dist/utils/validate-snapshot.js +63 -73
  958. package/dist/utils/validate-storage.js +37 -35
  959. package/dist/utils/validate-user-count-integrity.js +28 -20
  960. package/dist/utils/verify-session-jwt.js +21 -21
  961. package/dist/utils/versioning/handle-version.js +96 -95
  962. package/dist/utils/versioning/merge-version-data.js +14 -9
  963. package/dist/utils/versioning/split-recursive.js +40 -26
  964. package/dist/websocket/authenticate.js +67 -66
  965. package/dist/websocket/collab/calculate-cache-metadata.js +99 -118
  966. package/dist/websocket/collab/collab.js +420 -479
  967. package/dist/websocket/collab/constants.js +16 -12
  968. package/dist/websocket/collab/filter-to-fields.js +18 -10
  969. package/dist/websocket/collab/messenger.js +252 -224
  970. package/dist/websocket/collab/payload-permissions.js +140 -149
  971. package/dist/websocket/collab/permissions-cache.js +188 -202
  972. package/dist/websocket/collab/room.js +569 -588
  973. package/dist/websocket/collab/store.js +9 -31
  974. package/dist/websocket/collab/types.js +1 -1
  975. package/dist/websocket/collab/verify-permissions.js +116 -98
  976. package/dist/websocket/controllers/base.js +331 -352
  977. package/dist/websocket/controllers/graphql.js +98 -104
  978. package/dist/websocket/controllers/hooks.js +117 -118
  979. package/dist/websocket/controllers/index.js +31 -29
  980. package/dist/websocket/controllers/logs.js +65 -53
  981. package/dist/websocket/controllers/rest.js +59 -47
  982. package/dist/websocket/errors.js +62 -55
  983. package/dist/websocket/handlers/heartbeat.js +77 -77
  984. package/dist/websocket/handlers/index.js +36 -35
  985. package/dist/websocket/handlers/items.js +111 -109
  986. package/dist/websocket/handlers/logs.js +122 -120
  987. package/dist/websocket/handlers/subscribe.js +165 -182
  988. package/dist/websocket/messages.js +90 -93
  989. package/dist/websocket/types.js +1 -1
  990. package/dist/websocket/utils/get-expires-at-for-token.js +12 -7
  991. package/dist/websocket/utils/items.js +123 -123
  992. package/dist/websocket/utils/message.js +26 -24
  993. package/dist/websocket/utils/wait-for-message.js +46 -43
  994. package/package.json +35 -32
  995. package/dist/ai/chat/constants/system-prompt.d.ts +0 -1
  996. package/dist/ai/chat/controllers/chat.post.d.ts +0 -2
  997. package/dist/ai/chat/lib/create-ui-stream.d.ts +0 -16
  998. package/dist/ai/chat/lib/transform-file-parts.d.ts +0 -12
  999. package/dist/ai/chat/middleware/load-settings.d.ts +0 -2
  1000. package/dist/ai/chat/models/chat-request.d.ts +0 -167
  1001. package/dist/ai/chat/models/providers.d.ts +0 -23
  1002. package/dist/ai/chat/router.d.ts +0 -1
  1003. package/dist/ai/chat/utils/chat-request-tool-to-ai-sdk-tool.d.ts +0 -9
  1004. package/dist/ai/chat/utils/fix-error-tool-calls.d.ts +0 -12
  1005. package/dist/ai/chat/utils/format-context.d.ts +0 -5
  1006. package/dist/ai/chat/utils/parse-json-schema-7.d.ts +0 -13
  1007. package/dist/ai/files/adapters/anthropic.d.ts +0 -3
  1008. package/dist/ai/files/adapters/google.d.ts +0 -3
  1009. package/dist/ai/files/adapters/index.d.ts +0 -3
  1010. package/dist/ai/files/adapters/openai.d.ts +0 -3
  1011. package/dist/ai/files/controllers/upload.d.ts +0 -2
  1012. package/dist/ai/files/lib/fetch-provider.d.ts +0 -1
  1013. package/dist/ai/files/lib/upload-to-provider.d.ts +0 -4
  1014. package/dist/ai/files/router.d.ts +0 -1
  1015. package/dist/ai/files/types.d.ts +0 -5
  1016. package/dist/ai/mcp/index.d.ts +0 -1
  1017. package/dist/ai/mcp/server.d.ts +0 -126
  1018. package/dist/ai/mcp/transport.d.ts +0 -13
  1019. package/dist/ai/mcp/types.d.ts +0 -15
  1020. package/dist/ai/providers/anthropic-file-support.d.ts +0 -12
  1021. package/dist/ai/providers/index.d.ts +0 -3
  1022. package/dist/ai/providers/options.d.ts +0 -14
  1023. package/dist/ai/providers/registry.d.ts +0 -6
  1024. package/dist/ai/providers/types.d.ts +0 -34
  1025. package/dist/ai/tools/assets/index.d.ts +0 -3
  1026. package/dist/ai/tools/collections/index.d.ts +0 -84
  1027. package/dist/ai/tools/define-tool.d.ts +0 -2
  1028. package/dist/ai/tools/fields/index.d.ts +0 -101
  1029. package/dist/ai/tools/files/index.d.ts +0 -235
  1030. package/dist/ai/tools/flows/index.d.ts +0 -323
  1031. package/dist/ai/tools/folders/index.d.ts +0 -95
  1032. package/dist/ai/tools/index.d.ts +0 -15
  1033. package/dist/ai/tools/items/index.d.ts +0 -87
  1034. package/dist/ai/tools/operations/index.d.ts +0 -217
  1035. package/dist/ai/tools/relations/index.d.ts +0 -73
  1036. package/dist/ai/tools/schema/index.d.ts +0 -54
  1037. package/dist/ai/tools/schema.d.ts +0 -485
  1038. package/dist/ai/tools/system/index.d.ts +0 -3
  1039. package/dist/ai/tools/trigger-flow/index.d.ts +0 -8
  1040. package/dist/ai/tools/types.d.ts +0 -40
  1041. package/dist/ai/tools/utils.d.ts +0 -9
  1042. package/dist/app.d.ts +0 -2
  1043. package/dist/auth/auth.d.ts +0 -47
  1044. package/dist/auth/drivers/index.d.ts +0 -5
  1045. package/dist/auth/drivers/ldap.d.ts +0 -18
  1046. package/dist/auth/drivers/local.d.ts +0 -9
  1047. package/dist/auth/drivers/oauth2.d.ts +0 -18
  1048. package/dist/auth/drivers/openid.d.ts +0 -19
  1049. package/dist/auth/drivers/saml.d.ts +0 -13
  1050. package/dist/auth/utils/generate-callback-url.d.ts +0 -11
  1051. package/dist/auth/utils/resolve-login-redirect.d.ts +0 -11
  1052. package/dist/auth.d.ts +0 -3
  1053. package/dist/bus/index.d.ts +0 -1
  1054. package/dist/bus/lib/use-bus.d.ts +0 -9
  1055. package/dist/cache.d.ts +0 -31
  1056. package/dist/cli/commands/bootstrap/index.d.ts +0 -3
  1057. package/dist/cli/commands/count/index.d.ts +0 -1
  1058. package/dist/cli/commands/database/install.d.ts +0 -1
  1059. package/dist/cli/commands/database/migrate.d.ts +0 -1
  1060. package/dist/cli/commands/init/index.d.ts +0 -1
  1061. package/dist/cli/commands/init/questions.d.ts +0 -21
  1062. package/dist/cli/commands/roles/create.d.ts +0 -5
  1063. package/dist/cli/commands/schema/apply.d.ts +0 -9
  1064. package/dist/cli/commands/schema/snapshot.d.ts +0 -4
  1065. package/dist/cli/commands/security/key.d.ts +0 -1
  1066. package/dist/cli/commands/security/secret.d.ts +0 -1
  1067. package/dist/cli/commands/users/create.d.ts +0 -5
  1068. package/dist/cli/commands/users/passwd.d.ts +0 -4
  1069. package/dist/cli/index.d.ts +0 -2
  1070. package/dist/cli/load-extensions.d.ts +0 -1
  1071. package/dist/cli/run.d.ts +0 -1
  1072. package/dist/cli/utils/create-db-connection.d.ts +0 -13
  1073. package/dist/cli/utils/create-env/index.d.ts +0 -3
  1074. package/dist/cli/utils/drivers.d.ts +0 -3
  1075. package/dist/constants.d.ts +0 -30
  1076. package/dist/controllers/access.d.ts +0 -2
  1077. package/dist/controllers/activity.d.ts +0 -2
  1078. package/dist/controllers/assets.d.ts +0 -2
  1079. package/dist/controllers/auth.d.ts +0 -2
  1080. package/dist/controllers/collections.d.ts +0 -2
  1081. package/dist/controllers/comments.d.ts +0 -2
  1082. package/dist/controllers/dashboards.d.ts +0 -2
  1083. package/dist/controllers/deployment-webhooks.d.ts +0 -2
  1084. package/dist/controllers/deployment.d.ts +0 -2
  1085. package/dist/controllers/extensions.d.ts +0 -2
  1086. package/dist/controllers/fields.d.ts +0 -2
  1087. package/dist/controllers/files.d.ts +0 -4
  1088. package/dist/controllers/flows.d.ts +0 -2
  1089. package/dist/controllers/folders.d.ts +0 -2
  1090. package/dist/controllers/graphql.d.ts +0 -2
  1091. package/dist/controllers/items.d.ts +0 -2
  1092. package/dist/controllers/mcp.d.ts +0 -2
  1093. package/dist/controllers/metrics.d.ts +0 -2
  1094. package/dist/controllers/not-found.d.ts +0 -14
  1095. package/dist/controllers/notifications.d.ts +0 -2
  1096. package/dist/controllers/operations.d.ts +0 -2
  1097. package/dist/controllers/panels.d.ts +0 -2
  1098. package/dist/controllers/permissions.d.ts +0 -2
  1099. package/dist/controllers/policies.d.ts +0 -2
  1100. package/dist/controllers/presets.d.ts +0 -2
  1101. package/dist/controllers/relations.d.ts +0 -2
  1102. package/dist/controllers/revisions.d.ts +0 -2
  1103. package/dist/controllers/roles.d.ts +0 -2
  1104. package/dist/controllers/schema.d.ts +0 -2
  1105. package/dist/controllers/server.d.ts +0 -2
  1106. package/dist/controllers/settings.d.ts +0 -2
  1107. package/dist/controllers/shares.d.ts +0 -2
  1108. package/dist/controllers/translations.d.ts +0 -2
  1109. package/dist/controllers/tus.d.ts +0 -2
  1110. package/dist/controllers/users.d.ts +0 -2
  1111. package/dist/controllers/utils.d.ts +0 -2
  1112. package/dist/controllers/versions.d.ts +0 -2
  1113. package/dist/database/errors/dialects/mssql.d.ts +0 -3
  1114. package/dist/database/errors/dialects/mysql.d.ts +0 -3
  1115. package/dist/database/errors/dialects/oracle.d.ts +0 -2
  1116. package/dist/database/errors/dialects/postgres.d.ts +0 -3
  1117. package/dist/database/errors/dialects/sqlite.d.ts +0 -3
  1118. package/dist/database/errors/dialects/types.d.ts +0 -41
  1119. package/dist/database/errors/translate.d.ts +0 -12
  1120. package/dist/database/get-ast-from-query/get-ast-from-query.d.ts +0 -16
  1121. package/dist/database/get-ast-from-query/lib/convert-wildcards.d.ts +0 -15
  1122. package/dist/database/get-ast-from-query/lib/parse-fields.d.ts +0 -17
  1123. package/dist/database/get-ast-from-query/utils/get-allowed-sort.d.ts +0 -9
  1124. package/dist/database/get-ast-from-query/utils/get-deep-query.d.ts +0 -14
  1125. package/dist/database/get-ast-from-query/utils/get-related-collection.d.ts +0 -2
  1126. package/dist/database/helpers/capabilities/dialects/default.d.ts +0 -3
  1127. package/dist/database/helpers/capabilities/dialects/mysql.d.ts +0 -4
  1128. package/dist/database/helpers/capabilities/dialects/postgres.d.ts +0 -5
  1129. package/dist/database/helpers/capabilities/index.d.ts +0 -7
  1130. package/dist/database/helpers/capabilities/types.d.ts +0 -11
  1131. package/dist/database/helpers/date/dialects/default.d.ts +0 -3
  1132. package/dist/database/helpers/date/dialects/mssql.d.ts +0 -4
  1133. package/dist/database/helpers/date/dialects/mysql.d.ts +0 -5
  1134. package/dist/database/helpers/date/dialects/oracle.d.ts +0 -5
  1135. package/dist/database/helpers/date/dialects/sqlite.d.ts +0 -5
  1136. package/dist/database/helpers/date/index.d.ts +0 -7
  1137. package/dist/database/helpers/date/types.d.ts +0 -7
  1138. package/dist/database/helpers/fn/dialects/mssql.d.ts +0 -15
  1139. package/dist/database/helpers/fn/dialects/mysql.d.ts +0 -16
  1140. package/dist/database/helpers/fn/dialects/oracle.d.ts +0 -15
  1141. package/dist/database/helpers/fn/dialects/postgres.d.ts +0 -28
  1142. package/dist/database/helpers/fn/dialects/sqlite.d.ts +0 -15
  1143. package/dist/database/helpers/fn/index.d.ts +0 -7
  1144. package/dist/database/helpers/fn/json/parse-function.d.ts +0 -19
  1145. package/dist/database/helpers/fn/types.d.ts +0 -34
  1146. package/dist/database/helpers/geometry/dialects/mssql.d.ts +0 -14
  1147. package/dist/database/helpers/geometry/dialects/mysql.d.ts +0 -7
  1148. package/dist/database/helpers/geometry/dialects/oracle.d.ts +0 -15
  1149. package/dist/database/helpers/geometry/dialects/postgres.d.ts +0 -10
  1150. package/dist/database/helpers/geometry/dialects/redshift.d.ts +0 -7
  1151. package/dist/database/helpers/geometry/dialects/sqlite.d.ts +0 -6
  1152. package/dist/database/helpers/geometry/index.d.ts +0 -7
  1153. package/dist/database/helpers/geometry/types.d.ts +0 -20
  1154. package/dist/database/helpers/index.d.ts +0 -19
  1155. package/dist/database/helpers/number/dialects/default.d.ts +0 -3
  1156. package/dist/database/helpers/number/dialects/mssql.d.ts +0 -7
  1157. package/dist/database/helpers/number/dialects/oracle.d.ts +0 -6
  1158. package/dist/database/helpers/number/dialects/postgres.d.ts +0 -5
  1159. package/dist/database/helpers/number/dialects/sqlite.d.ts +0 -6
  1160. package/dist/database/helpers/number/index.d.ts +0 -7
  1161. package/dist/database/helpers/number/types.d.ts +0 -12
  1162. package/dist/database/helpers/number/utils/decimal-limit.d.ts +0 -4
  1163. package/dist/database/helpers/number/utils/maybe-stringify-big-int.d.ts +0 -1
  1164. package/dist/database/helpers/number/utils/number-in-range.d.ts +0 -3
  1165. package/dist/database/helpers/schema/dialects/cockroachdb.d.ts +0 -12
  1166. package/dist/database/helpers/schema/dialects/default.d.ts +0 -3
  1167. package/dist/database/helpers/schema/dialects/mssql.d.ts +0 -14
  1168. package/dist/database/helpers/schema/dialects/mysql.d.ts +0 -10
  1169. package/dist/database/helpers/schema/dialects/oracle.d.ts +0 -24
  1170. package/dist/database/helpers/schema/dialects/postgres.d.ts +0 -8
  1171. package/dist/database/helpers/schema/dialects/sqlite.d.ts +0 -8
  1172. package/dist/database/helpers/schema/index.d.ts +0 -7
  1173. package/dist/database/helpers/schema/types.d.ts +0 -63
  1174. package/dist/database/helpers/schema/utils/prep-query-params.d.ts +0 -12
  1175. package/dist/database/helpers/sequence/dialects/default.d.ts +0 -3
  1176. package/dist/database/helpers/sequence/dialects/postgres.d.ts +0 -12
  1177. package/dist/database/helpers/sequence/index.d.ts +0 -7
  1178. package/dist/database/helpers/sequence/types.d.ts +0 -5
  1179. package/dist/database/helpers/types.d.ts +0 -5
  1180. package/dist/database/index.d.ts +0 -15
  1181. package/dist/database/migrations/20201028A-remove-collection-foreign-keys.d.ts +0 -3
  1182. package/dist/database/migrations/20201029A-remove-system-relations.d.ts +0 -3
  1183. package/dist/database/migrations/20201029B-remove-system-collections.d.ts +0 -3
  1184. package/dist/database/migrations/20201029C-remove-system-fields.d.ts +0 -3
  1185. package/dist/database/migrations/20201105A-add-cascade-system-relations.d.ts +0 -8
  1186. package/dist/database/migrations/20201105B-change-webhook-url-type.d.ts +0 -3
  1187. package/dist/database/migrations/20210225A-add-relations-sort-field.d.ts +0 -3
  1188. package/dist/database/migrations/20210304A-remove-locked-fields.d.ts +0 -3
  1189. package/dist/database/migrations/20210312A-webhooks-collections-text.d.ts +0 -3
  1190. package/dist/database/migrations/20210331A-add-refresh-interval.d.ts +0 -3
  1191. package/dist/database/migrations/20210415A-make-filesize-nullable.d.ts +0 -3
  1192. package/dist/database/migrations/20210416A-add-collections-accountability.d.ts +0 -3
  1193. package/dist/database/migrations/20210422A-remove-files-interface.d.ts +0 -3
  1194. package/dist/database/migrations/20210506A-rename-interfaces.d.ts +0 -3
  1195. package/dist/database/migrations/20210510A-restructure-relations.d.ts +0 -3
  1196. package/dist/database/migrations/20210518A-add-foreign-key-constraints.d.ts +0 -3
  1197. package/dist/database/migrations/20210519A-add-system-fk-triggers.d.ts +0 -3
  1198. package/dist/database/migrations/20210521A-add-collections-icon-color.d.ts +0 -3
  1199. package/dist/database/migrations/20210525A-add-insights.d.ts +0 -3
  1200. package/dist/database/migrations/20210608A-add-deep-clone-config.d.ts +0 -3
  1201. package/dist/database/migrations/20210626A-change-filesize-bigint.d.ts +0 -3
  1202. package/dist/database/migrations/20210716A-add-conditions-to-fields.d.ts +0 -3
  1203. package/dist/database/migrations/20210721A-add-default-folder.d.ts +0 -3
  1204. package/dist/database/migrations/20210802A-replace-groups.d.ts +0 -3
  1205. package/dist/database/migrations/20210803A-add-required-to-fields.d.ts +0 -3
  1206. package/dist/database/migrations/20210805A-update-groups.d.ts +0 -3
  1207. package/dist/database/migrations/20210805B-change-image-metadata-structure.d.ts +0 -3
  1208. package/dist/database/migrations/20210811A-add-geometry-config.d.ts +0 -3
  1209. package/dist/database/migrations/20210831A-remove-limit-column.d.ts +0 -3
  1210. package/dist/database/migrations/20210903A-add-auth-provider.d.ts +0 -3
  1211. package/dist/database/migrations/20210907A-webhooks-collections-not-null.d.ts +0 -3
  1212. package/dist/database/migrations/20210910A-move-module-setup.d.ts +0 -3
  1213. package/dist/database/migrations/20210920A-webhooks-url-not-null.d.ts +0 -3
  1214. package/dist/database/migrations/20210924A-add-collection-organization.d.ts +0 -3
  1215. package/dist/database/migrations/20210927A-replace-fields-group.d.ts +0 -3
  1216. package/dist/database/migrations/20210927B-replace-m2m-interface.d.ts +0 -3
  1217. package/dist/database/migrations/20210929A-rename-login-action.d.ts +0 -3
  1218. package/dist/database/migrations/20211007A-update-presets.d.ts +0 -3
  1219. package/dist/database/migrations/20211009A-add-auth-data.d.ts +0 -3
  1220. package/dist/database/migrations/20211016A-add-webhook-headers.d.ts +0 -3
  1221. package/dist/database/migrations/20211103A-set-unique-to-user-token.d.ts +0 -3
  1222. package/dist/database/migrations/20211103B-update-special-geometry.d.ts +0 -3
  1223. package/dist/database/migrations/20211104A-remove-collections-listing.d.ts +0 -3
  1224. package/dist/database/migrations/20211118A-add-notifications.d.ts +0 -3
  1225. package/dist/database/migrations/20211211A-add-shares.d.ts +0 -3
  1226. package/dist/database/migrations/20211230A-add-project-descriptor.d.ts +0 -3
  1227. package/dist/database/migrations/20220303A-remove-default-project-color.d.ts +0 -3
  1228. package/dist/database/migrations/20220308A-add-bookmark-icon-and-color.d.ts +0 -3
  1229. package/dist/database/migrations/20220314A-add-translation-strings.d.ts +0 -3
  1230. package/dist/database/migrations/20220322A-rename-field-typecast-flags.d.ts +0 -3
  1231. package/dist/database/migrations/20220323A-add-field-validation.d.ts +0 -3
  1232. package/dist/database/migrations/20220325A-fix-typecast-flags.d.ts +0 -3
  1233. package/dist/database/migrations/20220325B-add-default-language.d.ts +0 -3
  1234. package/dist/database/migrations/20220402A-remove-default-value-panel-icon.d.ts +0 -3
  1235. package/dist/database/migrations/20220429A-add-flows.d.ts +0 -3
  1236. package/dist/database/migrations/20220429B-add-color-to-insights-icon.d.ts +0 -3
  1237. package/dist/database/migrations/20220429C-drop-non-null-from-ip-of-activity.d.ts +0 -3
  1238. package/dist/database/migrations/20220429D-drop-non-null-from-sender-of-notifications.d.ts +0 -3
  1239. package/dist/database/migrations/20220614A-rename-hook-trigger-to-event.d.ts +0 -3
  1240. package/dist/database/migrations/20220801A-update-notifications-timestamp-column.d.ts +0 -3
  1241. package/dist/database/migrations/20220802A-add-custom-aspect-ratios.d.ts +0 -3
  1242. package/dist/database/migrations/20220826A-add-origin-to-accountability.d.ts +0 -3
  1243. package/dist/database/migrations/20230401A-update-material-icons.d.ts +0 -3
  1244. package/dist/database/migrations/20230525A-add-preview-settings.d.ts +0 -3
  1245. package/dist/database/migrations/20230526A-migrate-translation-strings.d.ts +0 -3
  1246. package/dist/database/migrations/20230721A-require-shares-fields.d.ts +0 -3
  1247. package/dist/database/migrations/20230823A-add-content-versioning.d.ts +0 -3
  1248. package/dist/database/migrations/20230927A-themes.d.ts +0 -3
  1249. package/dist/database/migrations/20231009A-update-csv-fields-to-text.d.ts +0 -3
  1250. package/dist/database/migrations/20231009B-update-panel-options.d.ts +0 -3
  1251. package/dist/database/migrations/20231010A-add-extensions.d.ts +0 -3
  1252. package/dist/database/migrations/20231215A-add-focalpoints.d.ts +0 -3
  1253. package/dist/database/migrations/20240122A-add-report-url-fields.d.ts +0 -3
  1254. package/dist/database/migrations/20240204A-marketplace.d.ts +0 -3
  1255. package/dist/database/migrations/20240305A-change-useragent-type.d.ts +0 -3
  1256. package/dist/database/migrations/20240311A-deprecate-webhooks.d.ts +0 -28
  1257. package/dist/database/migrations/20240422A-public-registration.d.ts +0 -3
  1258. package/dist/database/migrations/20240515A-add-session-window.d.ts +0 -3
  1259. package/dist/database/migrations/20240701A-add-tus-data.d.ts +0 -3
  1260. package/dist/database/migrations/20240716A-update-files-date-fields.d.ts +0 -3
  1261. package/dist/database/migrations/20240806A-permissions-policies.d.ts +0 -3
  1262. package/dist/database/migrations/20240817A-update-icon-fields-length.d.ts +0 -3
  1263. package/dist/database/migrations/20240909A-separate-comments.d.ts +0 -3
  1264. package/dist/database/migrations/20240909B-consolidate-content-versioning.d.ts +0 -3
  1265. package/dist/database/migrations/20240924A-migrate-legacy-comments.d.ts +0 -3
  1266. package/dist/database/migrations/20240924B-populate-versioning-deltas.d.ts +0 -3
  1267. package/dist/database/migrations/20250224A-visual-editor.d.ts +0 -3
  1268. package/dist/database/migrations/20250609A-license-banner.d.ts +0 -3
  1269. package/dist/database/migrations/20250613A-add-project-id.d.ts +0 -3
  1270. package/dist/database/migrations/20250718A-add-direction.d.ts +0 -3
  1271. package/dist/database/migrations/20250813A-add-mcp.d.ts +0 -3
  1272. package/dist/database/migrations/20251012A-add-field-searchable.d.ts +0 -3
  1273. package/dist/database/migrations/20251014A-add-project-owner.d.ts +0 -3
  1274. package/dist/database/migrations/20251028A-add-retention-indexes.d.ts +0 -3
  1275. package/dist/database/migrations/20251103A-add-ai-settings.d.ts +0 -3
  1276. package/dist/database/migrations/20251224A-remove-webhooks.d.ts +0 -3
  1277. package/dist/database/migrations/20260110A-add-ai-provider-settings.d.ts +0 -3
  1278. package/dist/database/migrations/20260113A-add-revisions-index.d.ts +0 -3
  1279. package/dist/database/migrations/20260128A-add-collaborative-editing.d.ts +0 -3
  1280. package/dist/database/migrations/20260204A-add-deployment.d.ts +0 -3
  1281. package/dist/database/migrations/20260211A-add-deployment-webhooks.d.ts +0 -3
  1282. package/dist/database/migrations/run.d.ts +0 -2
  1283. package/dist/database/run-ast/lib/apply-query/add-join.d.ts +0 -54
  1284. package/dist/database/run-ast/lib/apply-query/aggregate.d.ts +0 -3
  1285. package/dist/database/run-ast/lib/apply-query/filter/get-filter-type.d.ts +0 -8
  1286. package/dist/database/run-ast/lib/apply-query/filter/index.d.ts +0 -8
  1287. package/dist/database/run-ast/lib/apply-query/filter/operator.d.ts +0 -3
  1288. package/dist/database/run-ast/lib/apply-query/filter/validate-operator.d.ts +0 -2
  1289. package/dist/database/run-ast/lib/apply-query/get-filter-path.d.ts +0 -1
  1290. package/dist/database/run-ast/lib/apply-query/get-operation.d.ts +0 -7
  1291. package/dist/database/run-ast/lib/apply-query/index.d.ts +0 -19
  1292. package/dist/database/run-ast/lib/apply-query/join-filter-with-cases.d.ts +0 -2
  1293. package/dist/database/run-ast/lib/apply-query/mock.d.ts +0 -3
  1294. package/dist/database/run-ast/lib/apply-query/pagination.d.ts +0 -3
  1295. package/dist/database/run-ast/lib/apply-query/search.d.ts +0 -4
  1296. package/dist/database/run-ast/lib/apply-query/sort.d.ts +0 -19
  1297. package/dist/database/run-ast/lib/get-db-query.d.ts +0 -14
  1298. package/dist/database/run-ast/lib/parse-current-level.d.ts +0 -7
  1299. package/dist/database/run-ast/modules/fetch-permitted-ast-root-fields.d.ts +0 -15
  1300. package/dist/database/run-ast/run-ast.d.ts +0 -7
  1301. package/dist/database/run-ast/types.d.ts +0 -20
  1302. package/dist/database/run-ast/utils/apply-case-when.d.ts +0 -17
  1303. package/dist/database/run-ast/utils/apply-function-to-column-name.d.ts +0 -12
  1304. package/dist/database/run-ast/utils/apply-parent-filters.d.ts +0 -3
  1305. package/dist/database/run-ast/utils/generate-alias.d.ts +0 -6
  1306. package/dist/database/run-ast/utils/get-column-pre-processor.d.ts +0 -10
  1307. package/dist/database/run-ast/utils/get-column.d.ts +0 -25
  1308. package/dist/database/run-ast/utils/get-field-alias.d.ts +0 -2
  1309. package/dist/database/run-ast/utils/get-inner-query-column-pre-processor.d.ts +0 -5
  1310. package/dist/database/run-ast/utils/merge-with-parent-items.d.ts +0 -3
  1311. package/dist/database/run-ast/utils/remove-temporary-fields.d.ts +0 -3
  1312. package/dist/database/run-ast/utils/with-preprocess-bindings.d.ts +0 -2
  1313. package/dist/database/seeds/run.d.ts +0 -2
  1314. package/dist/deployment/deployment.d.ts +0 -117
  1315. package/dist/deployment/drivers/index.d.ts +0 -2
  1316. package/dist/deployment/drivers/netlify.d.ts +0 -37
  1317. package/dist/deployment/drivers/vercel.d.ts +0 -35
  1318. package/dist/deployment/index.d.ts +0 -2
  1319. package/dist/deployment.d.ts +0 -29
  1320. package/dist/emitter.d.ts +0 -21
  1321. package/dist/extensions/index.d.ts +0 -2
  1322. package/dist/extensions/lib/get-extensions-path.d.ts +0 -1
  1323. package/dist/extensions/lib/get-extensions-settings.d.ts +0 -11
  1324. package/dist/extensions/lib/get-extensions.d.ts +0 -5
  1325. package/dist/extensions/lib/get-shared-deps-mapping.d.ts +0 -1
  1326. package/dist/extensions/lib/installation/index.d.ts +0 -2
  1327. package/dist/extensions/lib/installation/manager.d.ts +0 -5
  1328. package/dist/extensions/lib/sandbox/generate-api-extensions-sandbox-entrypoint.d.ts +0 -28
  1329. package/dist/extensions/lib/sandbox/generate-host-function-reference.d.ts +0 -11
  1330. package/dist/extensions/lib/sandbox/register/action.d.ts +0 -6
  1331. package/dist/extensions/lib/sandbox/register/call-reference.d.ts +0 -5
  1332. package/dist/extensions/lib/sandbox/register/filter.d.ts +0 -6
  1333. package/dist/extensions/lib/sandbox/register/index.d.ts +0 -5
  1334. package/dist/extensions/lib/sandbox/register/operation.d.ts +0 -6
  1335. package/dist/extensions/lib/sandbox/register/route.d.ts +0 -17
  1336. package/dist/extensions/lib/sandbox/sdk/generators/index.d.ts +0 -3
  1337. package/dist/extensions/lib/sandbox/sdk/generators/log.d.ts +0 -3
  1338. package/dist/extensions/lib/sandbox/sdk/generators/request.d.ts +0 -12
  1339. package/dist/extensions/lib/sandbox/sdk/generators/sleep.d.ts +0 -3
  1340. package/dist/extensions/lib/sandbox/sdk/index.d.ts +0 -2
  1341. package/dist/extensions/lib/sandbox/sdk/instantiate.d.ts +0 -11
  1342. package/dist/extensions/lib/sandbox/sdk/sdk.d.ts +0 -20
  1343. package/dist/extensions/lib/sandbox/sdk/utils/index.d.ts +0 -1
  1344. package/dist/extensions/lib/sandbox/sdk/utils/wrap.d.ts +0 -13
  1345. package/dist/extensions/lib/sync/status.d.ts +0 -11
  1346. package/dist/extensions/lib/sync/sync.d.ts +0 -6
  1347. package/dist/extensions/lib/sync/tracker.d.ts +0 -18
  1348. package/dist/extensions/lib/sync/utils.d.ts +0 -24
  1349. package/dist/extensions/lib/wrap-embeds.d.ts +0 -4
  1350. package/dist/extensions/manager.d.ts +0 -164
  1351. package/dist/flows.d.ts +0 -29
  1352. package/dist/index.d.ts +0 -1
  1353. package/dist/lock/index.d.ts +0 -1
  1354. package/dist/lock/lib/use-lock.d.ts +0 -8
  1355. package/dist/logger/index.d.ts +0 -14
  1356. package/dist/logger/logs-stream.d.ts +0 -10
  1357. package/dist/logger/redact-query.d.ts +0 -1
  1358. package/dist/mailer.d.ts +0 -2
  1359. package/dist/metrics/index.d.ts +0 -1
  1360. package/dist/metrics/lib/create-metrics.d.ts +0 -15
  1361. package/dist/metrics/lib/use-metrics.d.ts +0 -17
  1362. package/dist/metrics/types/metric.d.ts +0 -1
  1363. package/dist/middleware/authenticate.d.ts +0 -7
  1364. package/dist/middleware/cache.d.ts +0 -3
  1365. package/dist/middleware/collection-exists.d.ts +0 -6
  1366. package/dist/middleware/cors.d.ts +0 -3
  1367. package/dist/middleware/error-handler.d.ts +0 -2
  1368. package/dist/middleware/extract-token.d.ts +0 -12
  1369. package/dist/middleware/graphql.d.ts +0 -2
  1370. package/dist/middleware/rate-limiter-global.d.ts +0 -5
  1371. package/dist/middleware/rate-limiter-ip.d.ts +0 -5
  1372. package/dist/middleware/rate-limiter-registration.d.ts +0 -5
  1373. package/dist/middleware/respond.d.ts +0 -2
  1374. package/dist/middleware/sanitize-query.d.ts +0 -7
  1375. package/dist/middleware/schema.d.ts +0 -3
  1376. package/dist/middleware/use-collection.d.ts +0 -7
  1377. package/dist/middleware/validate-batch.d.ts +0 -1
  1378. package/dist/operations/condition/index.d.ts +0 -6
  1379. package/dist/operations/exec/index.d.ts +0 -5
  1380. package/dist/operations/item-create/index.d.ts +0 -8
  1381. package/dist/operations/item-delete/index.d.ts +0 -10
  1382. package/dist/operations/item-read/index.d.ts +0 -10
  1383. package/dist/operations/item-update/index.d.ts +0 -11
  1384. package/dist/operations/json-web-token/index.d.ts +0 -10
  1385. package/dist/operations/log/index.d.ts +0 -5
  1386. package/dist/operations/mail/index.d.ts +0 -13
  1387. package/dist/operations/mail/rate-limiter.d.ts +0 -1
  1388. package/dist/operations/notification/index.d.ts +0 -10
  1389. package/dist/operations/request/index.d.ts +0 -11
  1390. package/dist/operations/sleep/index.d.ts +0 -5
  1391. package/dist/operations/throw-error/index.d.ts +0 -7
  1392. package/dist/operations/transform/index.d.ts +0 -5
  1393. package/dist/operations/trigger/index.d.ts +0 -8
  1394. package/dist/permissions/cache.d.ts +0 -2
  1395. package/dist/permissions/lib/fetch-permissions.d.ts +0 -20
  1396. package/dist/permissions/lib/fetch-policies.d.ts +0 -14
  1397. package/dist/permissions/lib/fetch-roles-tree.d.ts +0 -6
  1398. package/dist/permissions/lib/with-app-minimal-permissions.d.ts +0 -2
  1399. package/dist/permissions/modules/fetch-accountability-collection-access/fetch-accountability-collection-access.d.ts +0 -7
  1400. package/dist/permissions/modules/fetch-accountability-policy-globals/fetch-accountability-policy-globals.d.ts +0 -3
  1401. package/dist/permissions/modules/fetch-allowed-collections/fetch-allowed-collections.d.ts +0 -7
  1402. package/dist/permissions/modules/fetch-allowed-field-map/fetch-allowed-field-map.d.ts +0 -8
  1403. package/dist/permissions/modules/fetch-allowed-fields/fetch-allowed-fields.d.ts +0 -15
  1404. package/dist/permissions/modules/fetch-global-access/fetch-global-access.d.ts +0 -12
  1405. package/dist/permissions/modules/fetch-inconsistent-field-map/fetch-inconsistent-field-map.d.ts +0 -11
  1406. package/dist/permissions/modules/fetch-policies-ip-access/fetch-policies-ip-access.d.ts +0 -4
  1407. package/dist/permissions/modules/process-ast/lib/extract-fields-from-children.d.ts +0 -4
  1408. package/dist/permissions/modules/process-ast/lib/extract-fields-from-query.d.ts +0 -3
  1409. package/dist/permissions/modules/process-ast/lib/field-map-from-ast.d.ts +0 -4
  1410. package/dist/permissions/modules/process-ast/lib/get-cases.d.ts +0 -6
  1411. package/dist/permissions/modules/process-ast/lib/inject-cases.d.ts +0 -9
  1412. package/dist/permissions/modules/process-ast/process-ast.d.ts +0 -9
  1413. package/dist/permissions/modules/process-ast/types.d.ts +0 -18
  1414. package/dist/permissions/modules/process-ast/utils/collections-in-field-map.d.ts +0 -2
  1415. package/dist/permissions/modules/process-ast/utils/context-has-dynamic-variables.d.ts +0 -2
  1416. package/dist/permissions/modules/process-ast/utils/dedupe-access.d.ts +0 -12
  1417. package/dist/permissions/modules/process-ast/utils/extract-paths-from-query.d.ts +0 -15
  1418. package/dist/permissions/modules/process-ast/utils/find-related-collection.d.ts +0 -3
  1419. package/dist/permissions/modules/process-ast/utils/flatten-filter.d.ts +0 -3
  1420. package/dist/permissions/modules/process-ast/utils/format-a2o-key.d.ts +0 -1
  1421. package/dist/permissions/modules/process-ast/utils/get-info-for-path.d.ts +0 -5
  1422. package/dist/permissions/modules/process-ast/utils/has-item-permissions.d.ts +0 -2
  1423. package/dist/permissions/modules/process-ast/utils/stringify-query-path.d.ts +0 -2
  1424. package/dist/permissions/modules/process-ast/utils/validate-path/create-error.d.ts +0 -3
  1425. package/dist/permissions/modules/process-ast/utils/validate-path/validate-path-existence.d.ts +0 -2
  1426. package/dist/permissions/modules/process-ast/utils/validate-path/validate-path-permissions.d.ts +0 -2
  1427. package/dist/permissions/modules/process-payload/lib/is-field-nullable.d.ts +0 -5
  1428. package/dist/permissions/modules/process-payload/process-payload.d.ts +0 -14
  1429. package/dist/permissions/modules/validate-access/lib/validate-collection-access.d.ts +0 -12
  1430. package/dist/permissions/modules/validate-access/lib/validate-item-access.d.ts +0 -22
  1431. package/dist/permissions/modules/validate-access/validate-access.d.ts +0 -16
  1432. package/dist/permissions/modules/validate-remaining-admin/validate-remaining-admin-count.d.ts +0 -1
  1433. package/dist/permissions/modules/validate-remaining-admin/validate-remaining-admin-users.d.ts +0 -4
  1434. package/dist/permissions/types.d.ts +0 -7
  1435. package/dist/permissions/utils/create-default-accountability.d.ts +0 -2
  1436. package/dist/permissions/utils/default-permission.d.ts +0 -7
  1437. package/dist/permissions/utils/extract-required-dynamic-variable-context.d.ts +0 -9
  1438. package/dist/permissions/utils/fetch-dynamic-variable-data.d.ts +0 -9
  1439. package/dist/permissions/utils/fetch-raw-permissions.d.ts +0 -11
  1440. package/dist/permissions/utils/fetch-share-info.d.ts +0 -12
  1441. package/dist/permissions/utils/filter-policies-by-ip.d.ts +0 -2
  1442. package/dist/permissions/utils/get-permissions-for-share.d.ts +0 -4
  1443. package/dist/permissions/utils/get-unaliased-field-key.d.ts +0 -5
  1444. package/dist/permissions/utils/merge-fields.d.ts +0 -1
  1445. package/dist/permissions/utils/merge-permissions.d.ts +0 -9
  1446. package/dist/permissions/utils/process-permissions.d.ts +0 -17
  1447. package/dist/permissions/utils/with-cache.d.ts +0 -12
  1448. package/dist/rate-limiter.d.ts +0 -5
  1449. package/dist/redis/index.d.ts +0 -3
  1450. package/dist/redis/lib/create-redis.d.ts +0 -7
  1451. package/dist/redis/lib/use-redis.d.ts +0 -16
  1452. package/dist/redis/utils/redis-config-available.d.ts +0 -4
  1453. package/dist/request/agent-with-ip-validation.d.ts +0 -10
  1454. package/dist/request/index.d.ts +0 -5
  1455. package/dist/request/is-denied-ip.d.ts +0 -1
  1456. package/dist/schedules/metrics.d.ts +0 -7
  1457. package/dist/schedules/project.d.ts +0 -4
  1458. package/dist/schedules/retention.d.ts +0 -14
  1459. package/dist/schedules/telemetry.d.ts +0 -11
  1460. package/dist/schedules/tus.d.ts +0 -6
  1461. package/dist/server.d.ts +0 -4
  1462. package/dist/services/access.d.ts +0 -9
  1463. package/dist/services/activity.d.ts +0 -5
  1464. package/dist/services/assets/name-deduper.d.ts +0 -7
  1465. package/dist/services/assets.d.ts +0 -35
  1466. package/dist/services/authentication.d.ts +0 -26
  1467. package/dist/services/collections.d.ts +0 -57
  1468. package/dist/services/comments.d.ts +0 -12
  1469. package/dist/services/dashboards.d.ts +0 -5
  1470. package/dist/services/deployment-projects.d.ts +0 -49
  1471. package/dist/services/deployment-runs.d.ts +0 -31
  1472. package/dist/services/deployment.d.ts +0 -81
  1473. package/dist/services/extensions.d.ts +0 -34
  1474. package/dist/services/fields/build-collection-and-field-relations.d.ts +0 -21
  1475. package/dist/services/fields/get-collection-meta-updates.d.ts +0 -11
  1476. package/dist/services/fields/get-collection-relation-list.d.ts +0 -5
  1477. package/dist/services/fields.d.ts +0 -49
  1478. package/dist/services/files/lib/extract-metadata.d.ts +0 -3
  1479. package/dist/services/files/lib/get-sharp-instance.d.ts +0 -2
  1480. package/dist/services/files/utils/get-metadata.d.ts +0 -4
  1481. package/dist/services/files/utils/parse-image-metadata.d.ts +0 -2
  1482. package/dist/services/files.d.ts +0 -31
  1483. package/dist/services/flows.d.ts +0 -8
  1484. package/dist/services/folders.d.ts +0 -30
  1485. package/dist/services/graphql/errors/execution.d.ts +0 -6
  1486. package/dist/services/graphql/errors/format.d.ts +0 -6
  1487. package/dist/services/graphql/errors/index.d.ts +0 -2
  1488. package/dist/services/graphql/errors/validation.d.ts +0 -6
  1489. package/dist/services/graphql/index.d.ts +0 -30
  1490. package/dist/services/graphql/resolvers/get-collection-type.d.ts +0 -3
  1491. package/dist/services/graphql/resolvers/get-field-type.d.ts +0 -3
  1492. package/dist/services/graphql/resolvers/get-relation-type.d.ts +0 -3
  1493. package/dist/services/graphql/resolvers/mutation.d.ts +0 -4
  1494. package/dist/services/graphql/resolvers/query.d.ts +0 -8
  1495. package/dist/services/graphql/resolvers/system-admin.d.ts +0 -5
  1496. package/dist/services/graphql/resolvers/system-global.d.ts +0 -7
  1497. package/dist/services/graphql/resolvers/system.d.ts +0 -5
  1498. package/dist/services/graphql/schema/get-types.d.ts +0 -12
  1499. package/dist/services/graphql/schema/index.d.ts +0 -32
  1500. package/dist/services/graphql/schema/parse-args.d.ts +0 -9
  1501. package/dist/services/graphql/schema/parse-query.d.ts +0 -7
  1502. package/dist/services/graphql/schema/read.d.ts +0 -12
  1503. package/dist/services/graphql/schema/write.d.ts +0 -9
  1504. package/dist/services/graphql/schema-cache.d.ts +0 -3
  1505. package/dist/services/graphql/subscription.d.ts +0 -22
  1506. package/dist/services/graphql/types/bigint.d.ts +0 -2
  1507. package/dist/services/graphql/types/date.d.ts +0 -2
  1508. package/dist/services/graphql/types/geojson.d.ts +0 -2
  1509. package/dist/services/graphql/types/hash.d.ts +0 -2
  1510. package/dist/services/graphql/types/string-or-float.d.ts +0 -5
  1511. package/dist/services/graphql/types/void.d.ts +0 -2
  1512. package/dist/services/graphql/utils/add-path-to-validation-error.d.ts +0 -2
  1513. package/dist/services/graphql/utils/aggregate-query.d.ts +0 -6
  1514. package/dist/services/graphql/utils/filter-replace-m2a.d.ts +0 -7
  1515. package/dist/services/graphql/utils/process-error.d.ts +0 -7
  1516. package/dist/services/graphql/utils/replace-fragments.d.ts +0 -6
  1517. package/dist/services/graphql/utils/replace-funcs.d.ts +0 -5
  1518. package/dist/services/graphql/utils/sanitize-gql-schema.d.ts +0 -8
  1519. package/dist/services/import-export.d.ts +0 -44
  1520. package/dist/services/index.d.ts +0 -41
  1521. package/dist/services/items.d.ts +0 -105
  1522. package/dist/services/mail/index.d.ts +0 -32
  1523. package/dist/services/mail/rate-limiter.d.ts +0 -1
  1524. package/dist/services/meta.d.ts +0 -11
  1525. package/dist/services/notifications.d.ts +0 -7
  1526. package/dist/services/operations.d.ts +0 -8
  1527. package/dist/services/panels.d.ts +0 -5
  1528. package/dist/services/payload.d.ts +0 -77
  1529. package/dist/services/permissions.d.ts +0 -14
  1530. package/dist/services/policies.d.ts +0 -11
  1531. package/dist/services/presets.d.ts +0 -5
  1532. package/dist/services/relations.d.ts +0 -55
  1533. package/dist/services/revisions.d.ts +0 -11
  1534. package/dist/services/roles.d.ts +0 -9
  1535. package/dist/services/schema.d.ts +0 -14
  1536. package/dist/services/server.d.ts +0 -13
  1537. package/dist/services/settings.d.ts +0 -6
  1538. package/dist/services/shares.d.ts +0 -19
  1539. package/dist/services/specifications.d.ts +0 -39
  1540. package/dist/services/tfa.d.ts +0 -12
  1541. package/dist/services/translations.d.ts +0 -8
  1542. package/dist/services/tus/data-store.d.ts +0 -33
  1543. package/dist/services/tus/index.d.ts +0 -2
  1544. package/dist/services/tus/lockers.d.ts +0 -36
  1545. package/dist/services/tus/server.d.ts +0 -8
  1546. package/dist/services/tus/utils/wait-timeout.d.ts +0 -1
  1547. package/dist/services/users.d.ts +0 -54
  1548. package/dist/services/utils.d.ts +0 -15
  1549. package/dist/services/versions.d.ts +0 -19
  1550. package/dist/services/websocket.d.ts +0 -12
  1551. package/dist/start.d.ts +0 -1
  1552. package/dist/storage/get-storage-driver.d.ts +0 -3
  1553. package/dist/storage/index.d.ts +0 -5
  1554. package/dist/storage/register-drivers.d.ts +0 -2
  1555. package/dist/storage/register-locations.d.ts +0 -2
  1556. package/dist/synchronization.d.ts +0 -7
  1557. package/dist/telemetry/index.d.ts +0 -3
  1558. package/dist/telemetry/lib/get-report.d.ts +0 -5
  1559. package/dist/telemetry/lib/send-report.d.ts +0 -10
  1560. package/dist/telemetry/lib/track.d.ts +0 -10
  1561. package/dist/telemetry/types/report.d.ts +0 -102
  1562. package/dist/telemetry/utils/check-user-limits.d.ts +0 -5
  1563. package/dist/telemetry/utils/get-extension-count.d.ts +0 -9
  1564. package/dist/telemetry/utils/get-field-count.d.ts +0 -6
  1565. package/dist/telemetry/utils/get-filesize-sum.d.ts +0 -5
  1566. package/dist/telemetry/utils/get-item-count.d.ts +0 -30
  1567. package/dist/telemetry/utils/get-random-wait-time.d.ts +0 -5
  1568. package/dist/telemetry/utils/get-settings.d.ts +0 -26
  1569. package/dist/telemetry/utils/get-user-item-count.d.ts +0 -13
  1570. package/dist/telemetry/utils/should-check-user-limits.d.ts +0 -4
  1571. package/dist/test-utils/cache.d.ts +0 -51
  1572. package/dist/test-utils/controllers.d.ts +0 -65
  1573. package/dist/test-utils/database.d.ts +0 -48
  1574. package/dist/test-utils/emitter.d.ts +0 -35
  1575. package/dist/test-utils/knex.d.ts +0 -164
  1576. package/dist/test-utils/schema.d.ts +0 -26
  1577. package/dist/test-utils/services/fields-service.d.ts +0 -28
  1578. package/dist/test-utils/services/files-service.d.ts +0 -28
  1579. package/dist/test-utils/services/folders-service.d.ts +0 -28
  1580. package/dist/test-utils/services/items-service.d.ts +0 -23
  1581. package/dist/types/ast.d.ts +0 -100
  1582. package/dist/types/auth.d.ts +0 -42
  1583. package/dist/types/collection.d.ts +0 -9
  1584. package/dist/types/events.d.ts +0 -18
  1585. package/dist/types/index.d.ts +0 -7
  1586. package/dist/types/meta.d.ts +0 -4
  1587. package/dist/types/migration.d.ts +0 -5
  1588. package/dist/types/revision.d.ts +0 -7
  1589. package/dist/types/rolemap.d.ts +0 -3
  1590. package/dist/utils/apply-diff.d.ts +0 -8
  1591. package/dist/utils/apply-snapshot.d.ts +0 -8
  1592. package/dist/utils/async-handler.d.ts +0 -3
  1593. package/dist/utils/calculate-field-depth.d.ts +0 -33
  1594. package/dist/utils/compress.d.ts +0 -2
  1595. package/dist/utils/construct-flow-tree.d.ts +0 -2
  1596. package/dist/utils/create-admin.d.ts +0 -11
  1597. package/dist/utils/deep-map-response.d.ts +0 -17
  1598. package/dist/utils/delete-from-require-cache.d.ts +0 -1
  1599. package/dist/utils/encrypt.d.ts +0 -2
  1600. package/dist/utils/fetch-user-count/fetch-access-lookup.d.ts +0 -19
  1601. package/dist/utils/fetch-user-count/fetch-access-roles.d.ts +0 -16
  1602. package/dist/utils/fetch-user-count/fetch-active-users.d.ts +0 -6
  1603. package/dist/utils/fetch-user-count/fetch-user-count.d.ts +0 -11
  1604. package/dist/utils/fetch-user-count/get-user-count-query.d.ts +0 -20
  1605. package/dist/utils/filter-items.d.ts +0 -2
  1606. package/dist/utils/freeze-schema.d.ts +0 -3
  1607. package/dist/utils/generate-hash.d.ts +0 -1
  1608. package/dist/utils/get-accountability-for-role.d.ts +0 -7
  1609. package/dist/utils/get-accountability-for-token.d.ts +0 -2
  1610. package/dist/utils/get-address.d.ts +0 -2
  1611. package/dist/utils/get-allowed-log-levels.d.ts +0 -3
  1612. package/dist/utils/get-auth-providers.d.ts +0 -10
  1613. package/dist/utils/get-cache-headers.d.ts +0 -10
  1614. package/dist/utils/get-cache-key.d.ts +0 -2
  1615. package/dist/utils/get-collection-from-alias.d.ts +0 -6
  1616. package/dist/utils/get-column-path.d.ts +0 -26
  1617. package/dist/utils/get-config-from-env.d.ts +0 -6
  1618. package/dist/utils/get-default-index-name.d.ts +0 -13
  1619. package/dist/utils/get-default-value.d.ts +0 -5
  1620. package/dist/utils/get-field-relational-depth.d.ts +0 -13
  1621. package/dist/utils/get-field-system-rows.d.ts +0 -2
  1622. package/dist/utils/get-graphql-query-and-variables.d.ts +0 -2
  1623. package/dist/utils/get-graphql-type.d.ts +0 -4
  1624. package/dist/utils/get-ip-from-req.d.ts +0 -3
  1625. package/dist/utils/get-local-type.d.ts +0 -9
  1626. package/dist/utils/get-milliseconds.d.ts +0 -4
  1627. package/dist/utils/get-module-default.d.ts +0 -3
  1628. package/dist/utils/get-schema.d.ts +0 -10
  1629. package/dist/utils/get-secret.d.ts +0 -4
  1630. package/dist/utils/get-service.d.ts +0 -7
  1631. package/dist/utils/get-snapshot-diff.d.ts +0 -2
  1632. package/dist/utils/get-snapshot.d.ts +0 -6
  1633. package/dist/utils/get-string-byte-size.d.ts +0 -4
  1634. package/dist/utils/get-versioned-hash.d.ts +0 -1
  1635. package/dist/utils/import-file-url.d.ts +0 -5
  1636. package/dist/utils/is-directus-jwt.d.ts +0 -5
  1637. package/dist/utils/is-field-allowed.d.ts +0 -4
  1638. package/dist/utils/is-url-allowed.d.ts +0 -4
  1639. package/dist/utils/is-valid-uuid.d.ts +0 -3
  1640. package/dist/utils/job-queue.d.ts +0 -9
  1641. package/dist/utils/jwt.d.ts +0 -3
  1642. package/dist/utils/md.d.ts +0 -4
  1643. package/dist/utils/parse-filter-key.d.ts +0 -7
  1644. package/dist/utils/parse-numeric-string.d.ts +0 -2
  1645. package/dist/utils/parse-value.d.ts +0 -4
  1646. package/dist/utils/permissions-cacheable.d.ts +0 -8
  1647. package/dist/utils/redact-object.d.ts +0 -23
  1648. package/dist/utils/reduce-schema.d.ts +0 -7
  1649. package/dist/utils/require-text.d.ts +0 -1
  1650. package/dist/utils/require-yaml.d.ts +0 -1
  1651. package/dist/utils/sanitize-query.d.ts +0 -5
  1652. package/dist/utils/sanitize-schema.d.ts +0 -33
  1653. package/dist/utils/schedule.d.ts +0 -5
  1654. package/dist/utils/should-clear-cache.d.ts +0 -10
  1655. package/dist/utils/should-skip-cache.d.ts +0 -7
  1656. package/dist/utils/split-fields.d.ts +0 -4
  1657. package/dist/utils/stall.d.ts +0 -26
  1658. package/dist/utils/transaction.d.ts +0 -9
  1659. package/dist/utils/transformations.d.ts +0 -6
  1660. package/dist/utils/url.d.ts +0 -18
  1661. package/dist/utils/user-name.d.ts +0 -2
  1662. package/dist/utils/validate-diff.d.ts +0 -7
  1663. package/dist/utils/validate-env.d.ts +0 -1
  1664. package/dist/utils/validate-keys.d.ts +0 -5
  1665. package/dist/utils/validate-query.d.ts +0 -4
  1666. package/dist/utils/validate-snapshot.d.ts +0 -5
  1667. package/dist/utils/validate-storage.d.ts +0 -1
  1668. package/dist/utils/validate-user-count-integrity.d.ts +0 -6
  1669. package/dist/utils/verify-session-jwt.d.ts +0 -7
  1670. package/dist/utils/versioning/handle-version.d.ts +0 -3
  1671. package/dist/utils/versioning/merge-version-data.d.ts +0 -2
  1672. package/dist/utils/versioning/split-recursive.d.ts +0 -4
  1673. package/dist/websocket/authenticate.d.ts +0 -5
  1674. package/dist/websocket/collab/calculate-cache-metadata.d.ts +0 -9
  1675. package/dist/websocket/collab/collab.d.ts +0 -63
  1676. package/dist/websocket/collab/constants.d.ts +0 -1
  1677. package/dist/websocket/collab/filter-to-fields.d.ts +0 -2
  1678. package/dist/websocket/collab/messenger.d.ts +0 -43
  1679. package/dist/websocket/collab/payload-permissions.d.ts +0 -18
  1680. package/dist/websocket/collab/permissions-cache.d.ts +0 -52
  1681. package/dist/websocket/collab/room.d.ts +0 -125
  1682. package/dist/websocket/collab/store.d.ts +0 -7
  1683. package/dist/websocket/collab/types.d.ts +0 -21
  1684. package/dist/websocket/collab/verify-permissions.d.ts +0 -11
  1685. package/dist/websocket/controllers/base.d.ts +0 -35
  1686. package/dist/websocket/controllers/graphql.d.ts +0 -11
  1687. package/dist/websocket/controllers/hooks.d.ts +0 -1
  1688. package/dist/websocket/controllers/index.d.ts +0 -13
  1689. package/dist/websocket/controllers/logs.d.ts +0 -17
  1690. package/dist/websocket/controllers/rest.d.ts +0 -8
  1691. package/dist/websocket/errors.d.ts +0 -16
  1692. package/dist/websocket/handlers/heartbeat.d.ts +0 -11
  1693. package/dist/websocket/handlers/index.d.ts +0 -7
  1694. package/dist/websocket/handlers/items.d.ts +0 -6
  1695. package/dist/websocket/handlers/logs.d.ts +0 -31
  1696. package/dist/websocket/handlers/subscribe.d.ts +0 -38
  1697. package/dist/websocket/messages.d.ts +0 -114
  1698. package/dist/websocket/types.d.ts +0 -38
  1699. package/dist/websocket/utils/get-expires-at-for-token.d.ts +0 -1
  1700. package/dist/websocket/utils/items.d.ts +0 -43
  1701. package/dist/websocket/utils/message.d.ts +0 -4
  1702. package/dist/websocket/utils/wait-for-message.d.ts +0 -4
@@ -1,946 +1,855 @@
1
- import { Action } from '@directus/constants';
2
- import { useEnv } from '@directus/env';
3
- import { ErrorCode, ForbiddenError, InvalidPayloadError, isDirectusError } from '@directus/errors';
4
- import { isSystemCollection } from '@directus/system-data';
5
- import { UserIntegrityCheckFlag } from '@directus/types';
6
- import { assign, clone, cloneDeep, omit, pick, without } from 'lodash-es';
7
- import { getCache } from '../cache.js';
8
- import { translateDatabaseError } from '../database/errors/translate.js';
9
- import { getAstFromQuery } from '../database/get-ast-from-query/get-ast-from-query.js';
10
- import { getHelpers } from '../database/helpers/index.js';
11
- import getDatabase, { getDatabaseClient } from '../database/index.js';
12
- import { runAst } from '../database/run-ast/run-ast.js';
13
- import emitter from '../emitter.js';
14
- import { processAst } from '../permissions/modules/process-ast/process-ast.js';
15
- import { processPayload } from '../permissions/modules/process-payload/process-payload.js';
16
- import { validateAccess } from '../permissions/modules/validate-access/validate-access.js';
17
- import { shouldClearCache } from '../utils/should-clear-cache.js';
18
- import { transaction } from '../utils/transaction.js';
19
- import { validateKeys } from '../utils/validate-keys.js';
20
- import { validateUserCountIntegrity } from '../utils/validate-user-count-integrity.js';
21
- import { handleVersion } from '../utils/versioning/handle-version.js';
22
- import { PayloadService } from './payload.js';
1
+ import { UserIntegrityCheckFlag } from "../packages/types/dist/index.js";
2
+ import { getCache } from "../cache.js";
3
+ import { getHelpers } from "../database/helpers/index.js";
4
+ import database_default, { getDatabaseClient } from "../database/index.js";
5
+ import { processAst } from "../permissions/modules/process-ast/process-ast.js";
6
+ import emitter_default from "../emitter.js";
7
+ import { validateAccess } from "../permissions/modules/validate-access/validate-access.js";
8
+ import { transaction } from "../utils/transaction.js";
9
+ import { translateDatabaseError } from "../database/errors/translate.js";
10
+ import { getAstFromQuery } from "../database/get-ast-from-query/get-ast-from-query.js";
11
+ import { PayloadService } from "./payload.js";
12
+ import { runAst } from "../database/run-ast/run-ast.js";
13
+ import { processPayload } from "../permissions/modules/process-payload/process-payload.js";
14
+ import { shouldClearCache } from "../utils/should-clear-cache.js";
15
+ import { validateKeys } from "../utils/validate-keys.js";
16
+ import { validateUserCountIntegrity } from "../utils/validate-user-count-integrity.js";
17
+ import { handleVersion } from "../utils/versioning/handle-version.js";
18
+ import { useEnv } from "@directus/env";
19
+ import { ErrorCode, ForbiddenError, InvalidPayloadError, isDirectusError } from "@directus/errors";
20
+ import { getRelationsForCollection } from "@directus/utils";
21
+ import { assign, clone, cloneDeep, difference, omit, pick, without } from "lodash-es";
22
+ import { Action } from "@directus/constants";
23
+ import { isSystemCollection } from "@directus/system-data";
24
+
25
+ //#region src/services/items.ts
23
26
  const env = useEnv();
24
- export class ItemsService {
25
- collection;
26
- knex;
27
- accountability;
28
- eventScope;
29
- schema;
30
- cache;
31
- nested;
32
- constructor(collection, options) {
33
- this.collection = collection;
34
- this.knex = options.knex || getDatabase();
35
- this.accountability = options.accountability || null;
36
- this.eventScope = isSystemCollection(this.collection) ? this.collection.substring(9) : 'items';
37
- this.schema = options.schema;
38
- this.cache = getCache().cache;
39
- this.nested = options.nested ?? [];
40
- return this;
41
- }
42
- /**
43
- * Create a fork of the current service, allowing instantiation with different options.
44
- */
45
- fork(options) {
46
- const Service = this.constructor;
47
- // ItemsService expects `collection` and `options` as parameters,
48
- // while the other services only expect `options`
49
- const isItemsService = Service.length === 2;
50
- const newOptions = {
51
- knex: this.knex,
52
- accountability: this.accountability,
53
- schema: this.schema,
54
- nested: this.nested,
55
- ...options,
56
- };
57
- if (isItemsService) {
58
- return new ItemsService(this.collection, newOptions);
59
- }
60
- return new Service(newOptions);
61
- }
62
- createMutationTracker(initialCount = 0) {
63
- const maxCount = Number(env['MAX_BATCH_MUTATION']);
64
- let mutationCount = initialCount;
65
- return {
66
- trackMutations(count) {
67
- mutationCount += count;
68
- if (mutationCount > maxCount) {
69
- throw new InvalidPayloadError({ reason: `Exceeded max batch mutation limit of ${maxCount}` });
70
- }
71
- },
72
- getCount() {
73
- return mutationCount;
74
- },
75
- };
76
- }
77
- async getKeysByQuery(query) {
78
- const primaryKeyField = this.schema.collections[this.collection].primary;
79
- const readQuery = cloneDeep(query);
80
- readQuery.fields = [primaryKeyField];
81
- // Allow unauthenticated access
82
- const itemsService = new ItemsService(this.collection, {
83
- knex: this.knex,
84
- schema: this.schema,
85
- });
86
- // We read the IDs of the items based on the query, and then run `updateMany`. `updateMany` does it's own
87
- // permissions check for the keys, so we don't have to make this an authenticated read
88
- const items = await itemsService.readByQuery(readQuery);
89
- return items.map((item) => item[primaryKeyField]).filter((pk) => pk);
90
- }
91
- /**
92
- * Create a single new item.
93
- */
94
- async createOne(data, opts = {}) {
95
- if (!opts.mutationTracker)
96
- opts.mutationTracker = this.createMutationTracker();
97
- if (!opts.bypassLimits) {
98
- opts.mutationTracker.trackMutations(1);
99
- }
100
- const primaryKeyField = this.schema.collections[this.collection].primary;
101
- const fields = Object.keys(this.schema.collections[this.collection].fields);
102
- const aliases = Object.values(this.schema.collections[this.collection].fields)
103
- .filter((field) => field.alias === true)
104
- .map((field) => field.field);
105
- const payload = cloneDeep(data);
106
- let actionHookPayload = payload;
107
- const nestedActionEvents = [];
108
- /**
109
- * By wrapping the logic in a transaction, we make sure we automatically roll back all the
110
- * changes in the DB if any of the parts contained within throws an error. This also means
111
- * that any errors thrown in any nested relational changes will bubble up and cancel the whole
112
- * update tree
113
- */
114
- const primaryKey = await transaction(this.knex, async (trx) => {
115
- // Run all hooks that are attached to this event so the end user has the chance to augment the
116
- // item that is about to be saved
117
- const payloadAfterHooks = opts.emitEvents !== false
118
- ? await emitter.emitFilter(this.eventScope === 'items'
119
- ? ['items.create', `${this.collection}.items.create`]
120
- : `${this.eventScope}.create`, payload, {
121
- collection: this.collection,
122
- }, {
123
- database: trx,
124
- schema: this.schema,
125
- accountability: this.accountability,
126
- })
127
- : payload;
128
- const payloadWithPresets = this.accountability
129
- ? await processPayload({
130
- accountability: this.accountability,
131
- action: 'create',
132
- collection: this.collection,
133
- payload: payloadAfterHooks,
134
- nested: this.nested,
135
- }, {
136
- knex: trx,
137
- schema: this.schema,
138
- })
139
- : payloadAfterHooks;
140
- if (opts.preMutationError) {
141
- throw opts.preMutationError;
142
- }
143
- // Ensure the action hook payload has the post filter hook + preset changes
144
- actionHookPayload = payloadWithPresets;
145
- // We're creating new services instances so they can use the transaction as their Knex interface
146
- const payloadService = new PayloadService(this.collection, {
147
- accountability: this.accountability,
148
- knex: trx,
149
- schema: this.schema,
150
- nested: this.nested,
151
- overwriteDefaults: opts.overwriteDefaults,
152
- });
153
- const { payload: payloadWithM2O, revisions: revisionsM2O, nestedActionEvents: nestedActionEventsM2O, userIntegrityCheckFlags: userIntegrityCheckFlagsM2O, } = await payloadService.processM2O(payloadWithPresets, opts);
154
- const { payload: payloadWithA2O, revisions: revisionsA2O, nestedActionEvents: nestedActionEventsA2O, userIntegrityCheckFlags: userIntegrityCheckFlagsA2O, } = await payloadService.processA2O(payloadWithM2O, opts);
155
- const payloadWithoutAliases = pick(payloadWithA2O, without(fields, ...aliases));
156
- const payloadWithTypeCasting = await payloadService.processValues('create', payloadWithoutAliases);
157
- // The primary key can already exist in the payload.
158
- // In case of manual string / UUID primary keys it's always provided at this point.
159
- // In case of an (big) integer primary key, it might be provided as the user can specify the value manually.
160
- let primaryKey = payloadWithTypeCasting[primaryKeyField];
161
- if (primaryKey) {
162
- validateKeys(this.schema, this.collection, primaryKeyField, primaryKey);
163
- }
164
- // If a PK of type number was provided, although the PK is set the auto_increment,
165
- // depending on the database, the sequence might need to be reset to protect future PK collisions.
166
- let autoIncrementSequenceNeedsToBeReset = false;
167
- const pkField = this.schema.collections[this.collection].fields[primaryKeyField];
168
- if (primaryKey &&
169
- pkField &&
170
- !opts.bypassAutoIncrementSequenceReset &&
171
- ['integer', 'bigInteger'].includes(pkField.type) &&
172
- pkField.defaultValue === 'AUTO_INCREMENT') {
173
- autoIncrementSequenceNeedsToBeReset = true;
174
- }
175
- try {
176
- let returningOptions = undefined;
177
- // Support MSSQL tables that have triggers.
178
- if (getDatabaseClient(trx) === 'mssql') {
179
- returningOptions = { includeTriggerModifications: true };
180
- }
181
- const result = await trx
182
- .insert(payloadWithoutAliases)
183
- .into(this.collection)
184
- .returning(primaryKeyField, returningOptions)
185
- .then((result) => result[0]);
186
- const returnedKey = typeof result === 'object' ? result[primaryKeyField] : result;
187
- if (pkField.type === 'uuid') {
188
- primaryKey = getHelpers(trx).schema.formatUUID(primaryKey ?? returnedKey);
189
- }
190
- else {
191
- primaryKey = primaryKey ?? returnedKey;
192
- }
193
- }
194
- catch (err) {
195
- const dbError = await translateDatabaseError(err, data);
196
- if (isDirectusError(dbError, ErrorCode.RecordNotUnique) && dbError.extensions.primaryKey) {
197
- // This is a MySQL specific thing we need to handle here, since MySQL does not return the field name
198
- // if the unique constraint is the primary key
199
- dbError.extensions.field = pkField?.field ?? null;
200
- delete dbError.extensions.primaryKey;
201
- }
202
- throw dbError;
203
- }
204
- // Most database support returning, those who don't tend to return the PK anyways
205
- // (MySQL/SQLite). In case the primary key isn't know yet, we'll do a best-attempt at
206
- // fetching it based on the last inserted row
207
- if (!primaryKey) {
208
- // Fetching it with max should be safe, as we're in the context of the current transaction
209
- const result = await trx.max(primaryKeyField, { as: 'id' }).from(this.collection).first();
210
- primaryKey = result.id;
211
- // Set the primary key on the input item, in order for the "after" event hook to be able
212
- // to read from it
213
- actionHookPayload[primaryKeyField] = primaryKey;
214
- }
215
- // At this point, the primary key is guaranteed to be set.
216
- primaryKey = primaryKey;
217
- const { revisions: revisionsO2M, nestedActionEvents: nestedActionEventsO2M, userIntegrityCheckFlags: userIntegrityCheckFlagsO2M, } = await payloadService.processO2M(payloadWithPresets, primaryKey, opts);
218
- nestedActionEvents.push(...nestedActionEventsM2O);
219
- nestedActionEvents.push(...nestedActionEventsA2O);
220
- nestedActionEvents.push(...nestedActionEventsO2M);
221
- const userIntegrityCheckFlags = (opts.userIntegrityCheckFlags ?? UserIntegrityCheckFlag.None) |
222
- userIntegrityCheckFlagsM2O |
223
- userIntegrityCheckFlagsA2O |
224
- userIntegrityCheckFlagsO2M;
225
- if (userIntegrityCheckFlags) {
226
- if (opts.onRequireUserIntegrityCheck) {
227
- opts.onRequireUserIntegrityCheck(userIntegrityCheckFlags);
228
- }
229
- else {
230
- await validateUserCountIntegrity({ flags: userIntegrityCheckFlags, knex: trx });
231
- }
232
- }
233
- // If this is an authenticated action, and accountability tracking is enabled, save activity row
234
- if (opts.skipTracking !== true &&
235
- this.accountability &&
236
- this.schema.collections[this.collection].accountability !== null) {
237
- const { ActivityService } = await import('./activity.js');
238
- const { RevisionsService } = await import('./revisions.js');
239
- const activityService = new ActivityService({
240
- knex: trx,
241
- schema: this.schema,
242
- });
243
- const activity = await activityService.createOne({
244
- action: Action.CREATE,
245
- user: this.accountability.user,
246
- collection: this.collection,
247
- ip: this.accountability.ip,
248
- user_agent: this.accountability.userAgent,
249
- origin: this.accountability.origin,
250
- item: primaryKey,
251
- });
252
- // If revisions are tracked, create revisions record
253
- if (this.schema.collections[this.collection].accountability === 'all') {
254
- const revisionsService = new RevisionsService({
255
- knex: trx,
256
- schema: this.schema,
257
- });
258
- const revisionDelta = await payloadService.prepareDelta(payloadAfterHooks);
259
- const revision = await revisionsService.createOne({
260
- activity: activity,
261
- collection: this.collection,
262
- item: primaryKey,
263
- data: revisionDelta,
264
- delta: revisionDelta,
265
- });
266
- // Make sure to set the parent field of the child-revision rows
267
- const childrenRevisions = [...revisionsM2O, ...revisionsA2O, ...revisionsO2M];
268
- if (childrenRevisions.length > 0) {
269
- await revisionsService.updateMany(childrenRevisions, { parent: revision });
270
- }
271
- if (opts.onRevisionCreate) {
272
- opts.onRevisionCreate(revision);
273
- }
274
- }
275
- }
276
- if (autoIncrementSequenceNeedsToBeReset) {
277
- await getHelpers(trx).sequence.resetAutoIncrementSequence(this.collection, primaryKeyField);
278
- }
279
- if (opts.onItemCreate) {
280
- opts.onItemCreate(this.collection, primaryKey);
281
- }
282
- return primaryKey;
283
- });
284
- if (opts.emitEvents !== false) {
285
- const actionEvent = {
286
- event: this.eventScope === 'items'
287
- ? ['items.create', `${this.collection}.items.create`]
288
- : `${this.eventScope}.create`,
289
- meta: {
290
- payload: actionHookPayload,
291
- key: primaryKey,
292
- collection: this.collection,
293
- },
294
- context: {
295
- database: getDatabase(),
296
- schema: this.schema,
297
- accountability: this.accountability,
298
- },
299
- };
300
- if (opts.bypassEmitAction) {
301
- opts.bypassEmitAction(actionEvent);
302
- }
303
- else {
304
- emitter.emitAction(actionEvent.event, actionEvent.meta, actionEvent.context);
305
- }
306
- for (const nestedActionEvent of nestedActionEvents) {
307
- if (opts.bypassEmitAction) {
308
- opts.bypassEmitAction(nestedActionEvent);
309
- }
310
- else {
311
- emitter.emitAction(nestedActionEvent.event, nestedActionEvent.meta, nestedActionEvent.context);
312
- }
313
- }
314
- }
315
- if (shouldClearCache(this.cache, opts, this.collection)) {
316
- await this.cache.clear();
317
- }
318
- return primaryKey;
319
- }
320
- /**
321
- * Create multiple new items at once. Inserts all provided records sequentially wrapped in a transaction.
322
- *
323
- * Uses `this.createOne` under the hood.
324
- */
325
- async createMany(data, opts = {}) {
326
- if (!opts.mutationTracker)
327
- opts.mutationTracker = this.createMutationTracker();
328
- const { primaryKeys, nestedActionEvents } = await transaction(this.knex, async (knex) => {
329
- const service = this.fork({ knex });
330
- let userIntegrityCheckFlags = opts.userIntegrityCheckFlags ?? UserIntegrityCheckFlag.None;
331
- const primaryKeys = [];
332
- const nestedActionEvents = [];
333
- const pkField = this.schema.collections[this.collection].primary;
334
- for (const [index, payload] of data.entries()) {
335
- let bypassAutoIncrementSequenceReset = true;
336
- // the auto_increment sequence needs to be reset if the current item contains a manual PK and
337
- // if it's the last item of the batch or if the next item doesn't include a PK and hence one needs to be generated
338
- if (payload[pkField] && (index === data.length - 1 || !data[index + 1]?.[pkField])) {
339
- bypassAutoIncrementSequenceReset = false;
340
- }
341
- const primaryKey = await service.createOne(payload, {
342
- ...(opts || {}),
343
- autoPurgeCache: false,
344
- onRequireUserIntegrityCheck: (flags) => (userIntegrityCheckFlags |= flags),
345
- bypassEmitAction: (params) => nestedActionEvents.push(params),
346
- mutationTracker: opts.mutationTracker,
347
- overwriteDefaults: opts.overwriteDefaults?.[index],
348
- bypassAutoIncrementSequenceReset,
349
- });
350
- primaryKeys.push(primaryKey);
351
- }
352
- if (userIntegrityCheckFlags) {
353
- if (opts.onRequireUserIntegrityCheck) {
354
- opts.onRequireUserIntegrityCheck(userIntegrityCheckFlags);
355
- }
356
- else {
357
- await validateUserCountIntegrity({ flags: userIntegrityCheckFlags, knex });
358
- }
359
- }
360
- return { primaryKeys, nestedActionEvents };
361
- });
362
- if (opts.emitEvents !== false) {
363
- for (const nestedActionEvent of nestedActionEvents) {
364
- if (opts.bypassEmitAction) {
365
- opts.bypassEmitAction(nestedActionEvent);
366
- }
367
- else {
368
- emitter.emitAction(nestedActionEvent.event, nestedActionEvent.meta, nestedActionEvent.context);
369
- }
370
- }
371
- }
372
- if (shouldClearCache(this.cache, opts, this.collection)) {
373
- await this.cache.clear();
374
- }
375
- return primaryKeys;
376
- }
377
- /**
378
- * Get items by query.
379
- */
380
- async readByQuery(query, opts) {
381
- const updatedQuery = opts?.emitEvents !== false
382
- ? await emitter.emitFilter(this.eventScope === 'items'
383
- ? ['items.query', `${this.collection}.items.query`]
384
- : `${this.eventScope}.query`, query, {
385
- collection: this.collection,
386
- }, {
387
- database: this.knex,
388
- schema: this.schema,
389
- accountability: this.accountability,
390
- })
391
- : query;
392
- let ast = await getAstFromQuery({
393
- collection: this.collection,
394
- query: updatedQuery,
395
- accountability: this.accountability,
396
- }, {
397
- schema: this.schema,
398
- knex: this.knex,
399
- });
400
- ast = await processAst({ ast, action: 'read', accountability: this.accountability }, { knex: this.knex, schema: this.schema });
401
- const records = await runAst(ast, this.schema, this.accountability, {
402
- knex: this.knex,
403
- // GraphQL requires relational keys to be returned regardless
404
- stripNonRequested: opts?.stripNonRequested !== undefined ? opts.stripNonRequested : true,
405
- });
406
- // TODO when would this happen?
407
- if (records === null) {
408
- throw new ForbiddenError();
409
- }
410
- const filteredRecords = opts?.emitEvents !== false
411
- ? await emitter.emitFilter(this.eventScope === 'items' ? ['items.read', `${this.collection}.items.read`] : `${this.eventScope}.read`, records, {
412
- query: updatedQuery,
413
- collection: this.collection,
414
- }, {
415
- database: this.knex,
416
- schema: this.schema,
417
- accountability: this.accountability,
418
- })
419
- : records;
420
- if (opts?.emitEvents !== false) {
421
- emitter.emitAction(this.eventScope === 'items' ? ['items.read', `${this.collection}.items.read`] : `${this.eventScope}.read`, {
422
- payload: filteredRecords,
423
- query: updatedQuery,
424
- collection: this.collection,
425
- }, {
426
- database: this.knex || getDatabase(),
427
- schema: this.schema,
428
- accountability: this.accountability,
429
- });
430
- }
431
- return filteredRecords;
432
- }
433
- /**
434
- * Get single item by primary key.
435
- *
436
- * Uses `this.readByQuery` under the hood.
437
- */
438
- async readOne(key, query = {}, opts) {
439
- const primaryKeyField = this.schema.collections[this.collection].primary;
440
- validateKeys(this.schema, this.collection, primaryKeyField, key);
441
- const filterWithKey = assign({}, query.filter, { [primaryKeyField]: { _eq: key } });
442
- const queryWithKey = assign({}, query, { filter: filterWithKey });
443
- let results = [];
444
- if (query.version && query.version !== 'main') {
445
- results = [await handleVersion(this, key, queryWithKey, opts)];
446
- }
447
- else {
448
- results = await this.readByQuery(queryWithKey, opts);
449
- }
450
- if (results.length === 0) {
451
- throw new ForbiddenError();
452
- }
453
- return results[0];
454
- }
455
- /**
456
- * Get multiple items by primary keys.
457
- *
458
- * Uses `this.readByQuery` under the hood.
459
- */
460
- async readMany(keys, query = {}, opts) {
461
- const primaryKeyField = this.schema.collections[this.collection].primary;
462
- validateKeys(this.schema, this.collection, primaryKeyField, keys);
463
- const filterWithKey = { _and: [{ [primaryKeyField]: { _in: keys } }, query.filter ?? {}] };
464
- const queryWithKey = assign({}, query, { filter: filterWithKey });
465
- // Set query limit as the number of keys
466
- if (Array.isArray(keys) && keys.length > 0 && !queryWithKey.limit) {
467
- queryWithKey.limit = keys.length;
468
- }
469
- const results = await this.readByQuery(queryWithKey, opts);
470
- return results;
471
- }
472
- /**
473
- * Update multiple items by query.
474
- *
475
- * Uses `this.updateMany` under the hood.
476
- */
477
- async updateByQuery(query, data, opts) {
478
- const keys = await this.getKeysByQuery(query);
479
- return keys.length ? await this.updateMany(keys, data, opts) : [];
480
- }
481
- /**
482
- * Update a single item by primary key.
483
- *
484
- * Uses `this.updateMany` under the hood.
485
- */
486
- async updateOne(key, data, opts) {
487
- await this.updateMany([key], data, opts);
488
- return key;
489
- }
490
- /**
491
- * Update multiple items in a single transaction.
492
- *
493
- * Uses `this.updateOne` under the hood.
494
- */
495
- async updateBatch(data, opts = {}) {
496
- if (!Array.isArray(data)) {
497
- throw new InvalidPayloadError({ reason: 'Input should be an array of items' });
498
- }
499
- if (!opts.mutationTracker)
500
- opts.mutationTracker = this.createMutationTracker();
501
- const primaryKeyField = this.schema.collections[this.collection].primary;
502
- const keys = [];
503
- try {
504
- await transaction(this.knex, async (knex) => {
505
- const service = this.fork({ knex });
506
- let userIntegrityCheckFlags = opts.userIntegrityCheckFlags ?? UserIntegrityCheckFlag.None;
507
- for (const index in data) {
508
- const item = data[index];
509
- const primaryKey = item[primaryKeyField];
510
- if (!primaryKey)
511
- throw new InvalidPayloadError({ reason: `Item in update misses primary key` });
512
- const combinedOpts = {
513
- autoPurgeCache: false,
514
- ...opts,
515
- overwriteDefaults: opts.overwriteDefaults?.[index],
516
- onRequireUserIntegrityCheck: (flags) => (userIntegrityCheckFlags |= flags),
517
- };
518
- keys.push(await service.updateOne(primaryKey, omit(item, primaryKeyField), combinedOpts));
519
- }
520
- if (userIntegrityCheckFlags) {
521
- if (opts.onRequireUserIntegrityCheck) {
522
- opts.onRequireUserIntegrityCheck(userIntegrityCheckFlags);
523
- }
524
- else {
525
- await validateUserCountIntegrity({ flags: userIntegrityCheckFlags, knex });
526
- }
527
- }
528
- });
529
- }
530
- finally {
531
- if (shouldClearCache(this.cache, opts, this.collection)) {
532
- await this.cache.clear();
533
- }
534
- }
535
- return keys;
536
- }
537
- /**
538
- * Update many items by primary key, setting all items to the same change.
539
- */
540
- async updateMany(keys, data, opts = {}) {
541
- if (!opts.mutationTracker)
542
- opts.mutationTracker = this.createMutationTracker();
543
- if (!opts.bypassLimits) {
544
- opts.mutationTracker.trackMutations(keys.length);
545
- }
546
- const primaryKeyField = this.schema.collections[this.collection].primary;
547
- validateKeys(this.schema, this.collection, primaryKeyField, keys);
548
- const fields = Object.keys(this.schema.collections[this.collection].fields);
549
- const aliases = Object.values(this.schema.collections[this.collection].fields)
550
- .filter((field) => field.alias === true)
551
- .map((field) => field.field);
552
- const payload = cloneDeep(data);
553
- const nestedActionEvents = [];
554
- // Run all hooks that are attached to this event so the end user has the chance to augment the
555
- // item that is about to be saved
556
- const payloadAfterHooks = opts.emitEvents !== false
557
- ? await emitter.emitFilter(this.eventScope === 'items'
558
- ? ['items.update', `${this.collection}.items.update`]
559
- : `${this.eventScope}.update`, payload, {
560
- keys,
561
- collection: this.collection,
562
- }, {
563
- database: this.knex,
564
- schema: this.schema,
565
- accountability: this.accountability,
566
- })
567
- : payload;
568
- // Sort keys to ensure that the order is maintained
569
- keys.sort();
570
- if (this.accountability) {
571
- await validateAccess({
572
- accountability: this.accountability,
573
- action: 'update',
574
- collection: this.collection,
575
- primaryKeys: keys,
576
- fields: Object.keys(payloadAfterHooks),
577
- }, {
578
- schema: this.schema,
579
- knex: this.knex,
580
- });
581
- }
582
- const payloadWithPresets = this.accountability
583
- ? await processPayload({
584
- accountability: this.accountability,
585
- action: 'update',
586
- collection: this.collection,
587
- payload: payloadAfterHooks,
588
- nested: this.nested,
589
- }, {
590
- knex: this.knex,
591
- schema: this.schema,
592
- })
593
- : payloadAfterHooks;
594
- if (opts.preMutationError) {
595
- throw opts.preMutationError;
596
- }
597
- await transaction(this.knex, async (trx) => {
598
- const payloadService = new PayloadService(this.collection, {
599
- accountability: this.accountability,
600
- knex: trx,
601
- schema: this.schema,
602
- nested: this.nested,
603
- overwriteDefaults: opts.overwriteDefaults,
604
- });
605
- const { payload: payloadWithM2O, revisions: revisionsM2O, nestedActionEvents: nestedActionEventsM2O, userIntegrityCheckFlags: userIntegrityCheckFlagsM2O, } = await payloadService.processM2O(payloadWithPresets, opts);
606
- const { payload: payloadWithA2O, revisions: revisionsA2O, nestedActionEvents: nestedActionEventsA2O, userIntegrityCheckFlags: userIntegrityCheckFlagsA2O, } = await payloadService.processA2O(payloadWithM2O, opts);
607
- const payloadWithoutAliasAndPK = pick(payloadWithA2O, without(fields, primaryKeyField, ...aliases));
608
- const payloadWithTypeCasting = await payloadService.processValues('update', payloadWithoutAliasAndPK);
609
- if (Object.keys(payloadWithTypeCasting).length > 0) {
610
- try {
611
- await trx(this.collection).update(payloadWithTypeCasting).whereIn(primaryKeyField, keys);
612
- }
613
- catch (err) {
614
- throw await translateDatabaseError(err, data);
615
- }
616
- }
617
- const childrenRevisions = [...revisionsM2O, ...revisionsA2O];
618
- let userIntegrityCheckFlags = opts.userIntegrityCheckFlags ??
619
- UserIntegrityCheckFlag.None | userIntegrityCheckFlagsM2O | userIntegrityCheckFlagsA2O;
620
- nestedActionEvents.push(...nestedActionEventsM2O);
621
- nestedActionEvents.push(...nestedActionEventsA2O);
622
- for (const key of keys) {
623
- const { revisions, nestedActionEvents: nestedActionEventsO2M, userIntegrityCheckFlags: userIntegrityCheckFlagsO2M, } = await payloadService.processO2M(payloadWithA2O, key, opts);
624
- childrenRevisions.push(...revisions);
625
- nestedActionEvents.push(...nestedActionEventsO2M);
626
- userIntegrityCheckFlags |= userIntegrityCheckFlagsO2M;
627
- }
628
- if (userIntegrityCheckFlags) {
629
- if (opts?.onRequireUserIntegrityCheck) {
630
- opts.onRequireUserIntegrityCheck(userIntegrityCheckFlags);
631
- }
632
- else {
633
- // Having no onRequireUserIntegrityCheck callback indicates that
634
- // this is the top level invocation of the nested updates, so perform the user integrity check
635
- await validateUserCountIntegrity({ flags: userIntegrityCheckFlags, knex: trx });
636
- }
637
- }
638
- // If this is an authenticated action, and accountability tracking is enabled, save activity row
639
- if (opts.skipTracking !== true &&
640
- this.accountability &&
641
- this.schema.collections[this.collection].accountability !== null) {
642
- const { ActivityService } = await import('./activity.js');
643
- const { RevisionsService } = await import('./revisions.js');
644
- const activityService = new ActivityService({
645
- knex: trx,
646
- schema: this.schema,
647
- });
648
- const activity = await activityService.createMany(keys.map((key) => ({
649
- action: Action.UPDATE,
650
- user: this.accountability.user,
651
- collection: this.collection,
652
- ip: this.accountability.ip,
653
- user_agent: this.accountability.userAgent,
654
- origin: this.accountability.origin,
655
- item: key,
656
- })), { bypassLimits: true });
657
- if (this.schema.collections[this.collection].accountability === 'all') {
658
- const itemsService = new ItemsService(this.collection, {
659
- knex: trx,
660
- schema: this.schema,
661
- });
662
- const snapshots = await itemsService.readMany(keys);
663
- const revisionsService = new RevisionsService({
664
- knex: trx,
665
- schema: this.schema,
666
- });
667
- const revisions = (await Promise.all(activity.map(async (activity, index) => ({
668
- activity: activity,
669
- collection: this.collection,
670
- item: keys[index],
671
- data: snapshots && Array.isArray(snapshots) ? JSON.stringify(snapshots[index]) : JSON.stringify(snapshots),
672
- delta: await payloadService.prepareDelta(payloadWithTypeCasting),
673
- })))).filter((revision) => revision.delta);
674
- const revisionIDs = await revisionsService.createMany(revisions);
675
- for (let i = 0; i < revisionIDs.length; i++) {
676
- const revisionID = revisionIDs[i];
677
- if (opts.onRevisionCreate) {
678
- opts.onRevisionCreate(revisionID);
679
- }
680
- if (i === 0) {
681
- // In case of a nested relational creation/update in a updateMany, the nested m2o/a2o
682
- // creation is only done once. We treat the first updated item as the "main" update,
683
- // with all other revisions on the current level as regular "flat" updates, and
684
- // nested revisions as children of this first "root" item.
685
- if (childrenRevisions.length > 0) {
686
- await revisionsService.updateMany(childrenRevisions, { parent: revisionID });
687
- }
688
- }
689
- }
690
- }
691
- }
692
- });
693
- if (shouldClearCache(this.cache, opts, this.collection)) {
694
- await this.cache.clear();
695
- }
696
- if (opts.emitEvents !== false) {
697
- const actionEvent = {
698
- event: this.eventScope === 'items'
699
- ? ['items.update', `${this.collection}.items.update`]
700
- : `${this.eventScope}.update`,
701
- meta: {
702
- payload: payloadWithPresets,
703
- keys,
704
- collection: this.collection,
705
- },
706
- context: {
707
- database: getDatabase(),
708
- schema: this.schema,
709
- accountability: this.accountability,
710
- },
711
- };
712
- if (opts.bypassEmitAction) {
713
- opts.bypassEmitAction(actionEvent);
714
- }
715
- else {
716
- emitter.emitAction(actionEvent.event, actionEvent.meta, actionEvent.context);
717
- }
718
- for (const nestedActionEvent of nestedActionEvents) {
719
- if (opts.bypassEmitAction) {
720
- opts.bypassEmitAction(nestedActionEvent);
721
- }
722
- else {
723
- emitter.emitAction(nestedActionEvent.event, nestedActionEvent.meta, nestedActionEvent.context);
724
- }
725
- }
726
- }
727
- return keys;
728
- }
729
- /**
730
- * Upsert a single item.
731
- *
732
- * Uses `this.createOne` / `this.updateOne` under the hood.
733
- */
734
- async upsertOne(payload, opts) {
735
- const primaryKeyField = this.schema.collections[this.collection].primary;
736
- const primaryKey = payload[primaryKeyField];
737
- if (primaryKey) {
738
- validateKeys(this.schema, this.collection, primaryKeyField, primaryKey);
739
- }
740
- const exists = primaryKey &&
741
- !!(await this.knex
742
- .select(primaryKeyField)
743
- .from(this.collection)
744
- .where({ [primaryKeyField]: primaryKey })
745
- .first());
746
- if (exists) {
747
- const { [primaryKeyField]: _, ...data } = payload;
748
- return await this.updateOne(primaryKey, data, opts);
749
- }
750
- else {
751
- return await this.createOne(payload, opts);
752
- }
753
- }
754
- /**
755
- * Upsert many items.
756
- *
757
- * Uses `this.upsertOne` under the hood.
758
- */
759
- async upsertMany(payloads, opts = {}) {
760
- if (!opts.mutationTracker)
761
- opts.mutationTracker = this.createMutationTracker();
762
- const primaryKeys = await transaction(this.knex, async (knex) => {
763
- const service = this.fork({ knex });
764
- const primaryKeys = [];
765
- for (const index in payloads) {
766
- const payload = payloads[index];
767
- const primaryKey = await service.upsertOne(payload, {
768
- ...(opts || {}),
769
- overwriteDefaults: opts.overwriteDefaults?.[index],
770
- autoPurgeCache: false,
771
- });
772
- primaryKeys.push(primaryKey);
773
- }
774
- return primaryKeys;
775
- });
776
- if (shouldClearCache(this.cache, opts, this.collection)) {
777
- await this.cache.clear();
778
- }
779
- return primaryKeys;
780
- }
781
- /**
782
- * Delete multiple items by query.
783
- *
784
- * Uses `this.deleteMany` under the hood.
785
- */
786
- async deleteByQuery(query, opts) {
787
- const keys = await this.getKeysByQuery(query);
788
- const primaryKeyField = this.schema.collections[this.collection].primary;
789
- validateKeys(this.schema, this.collection, primaryKeyField, keys);
790
- return keys.length ? await this.deleteMany(keys, opts) : [];
791
- }
792
- /**
793
- * Delete a single item by primary key.
794
- *
795
- * Uses `this.deleteMany` under the hood.
796
- */
797
- async deleteOne(key, opts) {
798
- const primaryKeyField = this.schema.collections[this.collection].primary;
799
- validateKeys(this.schema, this.collection, primaryKeyField, key);
800
- await this.deleteMany([key], opts);
801
- return key;
802
- }
803
- /**
804
- * Delete multiple items by primary key.
805
- */
806
- async deleteMany(keys, opts = {}) {
807
- if (!opts.mutationTracker)
808
- opts.mutationTracker = this.createMutationTracker();
809
- if (!opts.bypassLimits) {
810
- opts.mutationTracker.trackMutations(keys.length);
811
- }
812
- const primaryKeyField = this.schema.collections[this.collection].primary;
813
- validateKeys(this.schema, this.collection, primaryKeyField, keys);
814
- const keysAfterHooks = opts.emitEvents !== false
815
- ? await emitter.emitFilter(this.eventScope === 'items'
816
- ? ['items.delete', `${this.collection}.items.delete`]
817
- : `${this.eventScope}.delete`, keys, {
818
- collection: this.collection,
819
- }, {
820
- database: this.knex,
821
- schema: this.schema,
822
- accountability: this.accountability,
823
- })
824
- : keys;
825
- if (this.accountability) {
826
- await validateAccess({
827
- accountability: this.accountability,
828
- action: 'delete',
829
- collection: this.collection,
830
- primaryKeys: keysAfterHooks,
831
- }, {
832
- knex: this.knex,
833
- schema: this.schema,
834
- });
835
- }
836
- if (opts.preMutationError) {
837
- throw opts.preMutationError;
838
- }
839
- await transaction(this.knex, async (trx) => {
840
- await trx(this.collection).whereIn(primaryKeyField, keysAfterHooks).delete();
841
- if (opts.userIntegrityCheckFlags) {
842
- if (opts.onRequireUserIntegrityCheck) {
843
- opts.onRequireUserIntegrityCheck(opts.userIntegrityCheckFlags);
844
- }
845
- else {
846
- await validateUserCountIntegrity({ flags: opts.userIntegrityCheckFlags, knex: trx });
847
- }
848
- }
849
- if (opts.skipTracking !== true &&
850
- this.accountability &&
851
- this.schema.collections[this.collection].accountability !== null) {
852
- const { ActivityService } = await import('./activity.js');
853
- const activityService = new ActivityService({
854
- knex: trx,
855
- schema: this.schema,
856
- });
857
- await activityService.createMany(keysAfterHooks.map((key) => ({
858
- action: Action.DELETE,
859
- user: this.accountability.user,
860
- collection: this.collection,
861
- ip: this.accountability.ip,
862
- user_agent: this.accountability.userAgent,
863
- origin: this.accountability.origin,
864
- item: key,
865
- })), { bypassLimits: true });
866
- }
867
- });
868
- if (shouldClearCache(this.cache, opts, this.collection)) {
869
- await this.cache.clear();
870
- }
871
- if (opts.emitEvents !== false) {
872
- const actionEvent = {
873
- event: this.eventScope === 'items'
874
- ? ['items.delete', `${this.collection}.items.delete`]
875
- : `${this.eventScope}.delete`,
876
- meta: {
877
- payload: keysAfterHooks,
878
- keys: keysAfterHooks,
879
- collection: this.collection,
880
- },
881
- context: {
882
- database: getDatabase(),
883
- schema: this.schema,
884
- accountability: this.accountability,
885
- },
886
- };
887
- if (opts.bypassEmitAction) {
888
- opts.bypassEmitAction(actionEvent);
889
- }
890
- else {
891
- emitter.emitAction(actionEvent.event, actionEvent.meta, actionEvent.context);
892
- }
893
- }
894
- return keysAfterHooks;
895
- }
896
- /**
897
- * Read/treat collection as singleton.
898
- */
899
- async readSingleton(query, opts) {
900
- query = clone(query);
901
- query.limit = 1;
902
- let record;
903
- if (query.version && query.version !== 'main') {
904
- const primaryKeyField = this.schema.collections[this.collection].primary;
905
- const key = (await this.knex.select(primaryKeyField).from(this.collection).first())?.[primaryKeyField];
906
- if (key) {
907
- record = await handleVersion(this, key, query, opts);
908
- }
909
- }
910
- else {
911
- record = (await this.readByQuery(query, opts))[0];
912
- }
913
- if (!record) {
914
- let fields = Object.entries(this.schema.collections[this.collection].fields);
915
- const defaults = {};
916
- if (query.fields && query.fields.includes('*') === false) {
917
- fields = fields.filter(([name]) => {
918
- return query.fields.includes(name);
919
- });
920
- }
921
- for (const [name, field] of fields) {
922
- if (this.schema.collections[this.collection].primary === name) {
923
- defaults[name] = null;
924
- continue;
925
- }
926
- if (field.defaultValue !== null)
927
- defaults[name] = field.defaultValue;
928
- }
929
- return defaults;
930
- }
931
- return record;
932
- }
933
- /**
934
- * Upsert/treat collection as singleton.
935
- *
936
- * Uses `this.createOne` / `this.updateOne` under the hood.
937
- */
938
- async upsertSingleton(data, opts) {
939
- const primaryKeyField = this.schema.collections[this.collection].primary;
940
- const record = await this.knex.select(primaryKeyField).from(this.collection).limit(1).first();
941
- if (record) {
942
- return await this.updateOne(record[primaryKeyField], data, opts);
943
- }
944
- return await this.createOne(data, opts);
945
- }
946
- }
27
+ var ItemsService = class ItemsService {
28
+ collection;
29
+ knex;
30
+ accountability;
31
+ eventScope;
32
+ schema;
33
+ cache;
34
+ nested;
35
+ constructor(collection, options) {
36
+ this.collection = collection;
37
+ this.knex = options.knex || database_default();
38
+ this.accountability = options.accountability || null;
39
+ this.eventScope = isSystemCollection(this.collection) ? this.collection.substring(9) : "items";
40
+ this.schema = options.schema;
41
+ this.cache = getCache().cache;
42
+ this.nested = options.nested ?? [];
43
+ return this;
44
+ }
45
+ /**
46
+ * Create a fork of the current service, allowing instantiation with different options.
47
+ */
48
+ fork(options) {
49
+ const Service = this.constructor;
50
+ const isItemsService = Service.length === 2;
51
+ const newOptions = {
52
+ knex: this.knex,
53
+ accountability: this.accountability,
54
+ schema: this.schema,
55
+ nested: this.nested,
56
+ ...options
57
+ };
58
+ if (isItemsService) {
59
+ return new ItemsService(this.collection, newOptions);
60
+ }
61
+ return new Service(newOptions);
62
+ }
63
+ createMutationTracker(initialCount = 0) {
64
+ const maxCount = Number(env["MAX_BATCH_MUTATION"]);
65
+ let mutationCount = initialCount;
66
+ return {
67
+ trackMutations(count) {
68
+ mutationCount += count;
69
+ if (mutationCount > maxCount) {
70
+ throw new InvalidPayloadError({ reason: `Exceeded max batch mutation limit of ${maxCount}` });
71
+ }
72
+ },
73
+ getCount() {
74
+ return mutationCount;
75
+ }
76
+ };
77
+ }
78
+ async getKeysByQuery(query) {
79
+ const primaryKeyField = this.schema.collections[this.collection].primary;
80
+ const readQuery = cloneDeep(query);
81
+ readQuery.fields = [primaryKeyField];
82
+ const itemsService = new ItemsService(this.collection, {
83
+ knex: this.knex,
84
+ schema: this.schema
85
+ });
86
+ const items = await itemsService.readByQuery(readQuery);
87
+ return items.map((item) => item[primaryKeyField]).filter((pk) => pk);
88
+ }
89
+ /**
90
+ * Create a single new item.
91
+ */
92
+ async createOne(data, opts = {}) {
93
+ if (!opts.mutationTracker) opts.mutationTracker = this.createMutationTracker();
94
+ if (!opts.bypassLimits) {
95
+ opts.mutationTracker.trackMutations(1);
96
+ }
97
+ const primaryKeyField = this.schema.collections[this.collection].primary;
98
+ const fields = Object.keys(this.schema.collections[this.collection].fields);
99
+ const aliases = Object.values(this.schema.collections[this.collection].fields).filter((field) => field.alias === true).map((field) => field.field);
100
+ const payload = cloneDeep(data);
101
+ let actionHookPayload = payload;
102
+ const nestedActionEvents = [];
103
+ /**
104
+ * By wrapping the logic in a transaction, we make sure we automatically roll back all the
105
+ * changes in the DB if any of the parts contained within throws an error. This also means
106
+ * that any errors thrown in any nested relational changes will bubble up and cancel the whole
107
+ * update tree
108
+ */
109
+ const primaryKey = await transaction(this.knex, async (trx) => {
110
+ const payloadAfterHooks = opts.emitEvents !== false ? await emitter_default.emitFilter(this.eventScope === "items" ? ["items.create", `${this.collection}.items.create`] : `${this.eventScope}.create`, payload, { collection: this.collection }, {
111
+ database: trx,
112
+ schema: this.schema,
113
+ accountability: this.accountability
114
+ }) : payload;
115
+ const payloadWithPresets = this.accountability ? await processPayload({
116
+ accountability: this.accountability,
117
+ action: "create",
118
+ collection: this.collection,
119
+ payload: payloadAfterHooks,
120
+ nested: this.nested
121
+ }, {
122
+ knex: trx,
123
+ schema: this.schema
124
+ }) : payloadAfterHooks;
125
+ if (opts.preMutationError) {
126
+ throw opts.preMutationError;
127
+ }
128
+ actionHookPayload = payloadWithPresets;
129
+ const payloadService = new PayloadService(this.collection, {
130
+ accountability: this.accountability,
131
+ knex: trx,
132
+ schema: this.schema,
133
+ nested: this.nested,
134
+ overwriteDefaults: opts.overwriteDefaults
135
+ });
136
+ const { payload: payloadWithM2O, revisions: revisionsM2O, nestedActionEvents: nestedActionEventsM2O, userIntegrityCheckFlags: userIntegrityCheckFlagsM2O } = await payloadService.processM2O(payloadWithPresets, opts);
137
+ const { payload: payloadWithA2O, revisions: revisionsA2O, nestedActionEvents: nestedActionEventsA2O, userIntegrityCheckFlags: userIntegrityCheckFlagsA2O } = await payloadService.processA2O(payloadWithM2O, opts);
138
+ const payloadWithoutAliases = pick(payloadWithA2O, without(fields, ...aliases));
139
+ const payloadWithTypeCasting = await payloadService.processValues("create", payloadWithoutAliases);
140
+ let primaryKey$1 = payloadWithTypeCasting[primaryKeyField];
141
+ if (primaryKey$1) {
142
+ validateKeys(this.schema, this.collection, primaryKeyField, primaryKey$1);
143
+ }
144
+ let autoIncrementSequenceNeedsToBeReset = false;
145
+ const pkField = this.schema.collections[this.collection].fields[primaryKeyField];
146
+ if (primaryKey$1 && pkField && !opts.bypassAutoIncrementSequenceReset && ["integer", "bigInteger"].includes(pkField.type) && pkField.defaultValue === "AUTO_INCREMENT") {
147
+ autoIncrementSequenceNeedsToBeReset = true;
148
+ }
149
+ try {
150
+ let returningOptions = undefined;
151
+ if (getDatabaseClient(trx) === "mssql") {
152
+ returningOptions = { includeTriggerModifications: true };
153
+ }
154
+ const result = await trx.insert(payloadWithoutAliases).into(this.collection).returning(primaryKeyField, returningOptions).then((result$1) => result$1[0]);
155
+ const returnedKey = typeof result === "object" ? result[primaryKeyField] : result;
156
+ if (pkField.type === "uuid") {
157
+ primaryKey$1 = getHelpers(trx).schema.formatUUID(primaryKey$1 ?? returnedKey);
158
+ } else {
159
+ primaryKey$1 = primaryKey$1 ?? returnedKey;
160
+ }
161
+ } catch (err) {
162
+ const dbError = await translateDatabaseError(err, data);
163
+ if (isDirectusError(dbError, ErrorCode.RecordNotUnique) && dbError.extensions.primaryKey) {
164
+ dbError.extensions.field = pkField?.field ?? null;
165
+ delete dbError.extensions.primaryKey;
166
+ }
167
+ throw dbError;
168
+ }
169
+ if (!primaryKey$1) {
170
+ const result = await trx.max(primaryKeyField, { as: "id" }).from(this.collection).first();
171
+ primaryKey$1 = result.id;
172
+ actionHookPayload[primaryKeyField] = primaryKey$1;
173
+ }
174
+ primaryKey$1 = primaryKey$1;
175
+ const { revisions: revisionsO2M, nestedActionEvents: nestedActionEventsO2M, userIntegrityCheckFlags: userIntegrityCheckFlagsO2M } = await payloadService.processO2M(payloadWithPresets, primaryKey$1, opts);
176
+ nestedActionEvents.push(...nestedActionEventsM2O);
177
+ nestedActionEvents.push(...nestedActionEventsA2O);
178
+ nestedActionEvents.push(...nestedActionEventsO2M);
179
+ const userIntegrityCheckFlags = (opts.userIntegrityCheckFlags ?? UserIntegrityCheckFlag.None) | userIntegrityCheckFlagsM2O | userIntegrityCheckFlagsA2O | userIntegrityCheckFlagsO2M;
180
+ if (userIntegrityCheckFlags) {
181
+ if (opts.onRequireUserIntegrityCheck) {
182
+ opts.onRequireUserIntegrityCheck(userIntegrityCheckFlags);
183
+ } else {
184
+ await validateUserCountIntegrity({
185
+ flags: userIntegrityCheckFlags,
186
+ knex: trx
187
+ });
188
+ }
189
+ }
190
+ if (opts.skipTracking !== true && this.accountability && this.schema.collections[this.collection].accountability !== null) {
191
+ const { ActivityService } = await import("./activity.js");
192
+ const { RevisionsService } = await import("./revisions.js");
193
+ const activityService = new ActivityService({
194
+ knex: trx,
195
+ schema: this.schema
196
+ });
197
+ const activity = await activityService.createOne({
198
+ action: Action.CREATE,
199
+ user: this.accountability.user,
200
+ collection: this.collection,
201
+ ip: this.accountability.ip,
202
+ user_agent: this.accountability.userAgent,
203
+ origin: this.accountability.origin,
204
+ item: primaryKey$1
205
+ });
206
+ if (this.schema.collections[this.collection].accountability === "all") {
207
+ const revisionsService = new RevisionsService({
208
+ knex: trx,
209
+ schema: this.schema
210
+ });
211
+ const relationalFields = getRelationsForCollection(this.schema, this.collection);
212
+ const revisionPayload = await payloadService.prepareDelta(omit(payloadWithPresets, relationalFields));
213
+ const revision = await revisionsService.createOne({
214
+ activity,
215
+ collection: this.collection,
216
+ item: primaryKey$1,
217
+ data: revisionPayload,
218
+ delta: revisionPayload
219
+ });
220
+ const childrenRevisions = [
221
+ ...revisionsM2O,
222
+ ...revisionsA2O,
223
+ ...revisionsO2M
224
+ ];
225
+ if (childrenRevisions.length > 0) {
226
+ await revisionsService.updateMany(childrenRevisions, { parent: revision });
227
+ }
228
+ if (opts.onRevisionCreate) {
229
+ opts.onRevisionCreate(revision);
230
+ }
231
+ }
232
+ }
233
+ if (autoIncrementSequenceNeedsToBeReset) {
234
+ await getHelpers(trx).sequence.resetAutoIncrementSequence(this.collection, primaryKeyField);
235
+ }
236
+ if (opts.onItemCreate) {
237
+ opts.onItemCreate(this.collection, primaryKey$1);
238
+ }
239
+ return primaryKey$1;
240
+ });
241
+ if (opts.emitEvents !== false) {
242
+ const actionEvent = {
243
+ event: this.eventScope === "items" ? ["items.create", `${this.collection}.items.create`] : `${this.eventScope}.create`,
244
+ meta: {
245
+ payload: actionHookPayload,
246
+ key: primaryKey,
247
+ collection: this.collection
248
+ },
249
+ context: {
250
+ database: database_default(),
251
+ schema: this.schema,
252
+ accountability: this.accountability
253
+ }
254
+ };
255
+ if (opts.bypassEmitAction) {
256
+ opts.bypassEmitAction(actionEvent);
257
+ } else {
258
+ emitter_default.emitAction(actionEvent.event, actionEvent.meta, actionEvent.context);
259
+ }
260
+ for (const nestedActionEvent of nestedActionEvents) {
261
+ if (opts.bypassEmitAction) {
262
+ opts.bypassEmitAction(nestedActionEvent);
263
+ } else {
264
+ emitter_default.emitAction(nestedActionEvent.event, nestedActionEvent.meta, nestedActionEvent.context);
265
+ }
266
+ }
267
+ }
268
+ if (shouldClearCache(this.cache, opts, this.collection)) {
269
+ await this.cache.clear();
270
+ }
271
+ return primaryKey;
272
+ }
273
+ /**
274
+ * Create multiple new items at once. Inserts all provided records sequentially wrapped in a transaction.
275
+ *
276
+ * Uses `this.createOne` under the hood.
277
+ */
278
+ async createMany(data, opts = {}) {
279
+ if (!opts.mutationTracker) opts.mutationTracker = this.createMutationTracker();
280
+ const { primaryKeys, nestedActionEvents } = await transaction(this.knex, async (knex) => {
281
+ const service = this.fork({ knex });
282
+ let userIntegrityCheckFlags = opts.userIntegrityCheckFlags ?? UserIntegrityCheckFlag.None;
283
+ const primaryKeys$1 = [];
284
+ const nestedActionEvents$1 = [];
285
+ const pkField = this.schema.collections[this.collection].primary;
286
+ for (const [index, payload] of data.entries()) {
287
+ let bypassAutoIncrementSequenceReset = true;
288
+ if (payload[pkField] && (index === data.length - 1 || !data[index + 1]?.[pkField])) {
289
+ bypassAutoIncrementSequenceReset = false;
290
+ }
291
+ const primaryKey = await service.createOne(payload, {
292
+ ...opts || {},
293
+ autoPurgeCache: false,
294
+ onRequireUserIntegrityCheck: (flags) => userIntegrityCheckFlags |= flags,
295
+ bypassEmitAction: (params) => nestedActionEvents$1.push(params),
296
+ mutationTracker: opts.mutationTracker,
297
+ overwriteDefaults: opts.overwriteDefaults?.[index],
298
+ bypassAutoIncrementSequenceReset
299
+ });
300
+ primaryKeys$1.push(primaryKey);
301
+ }
302
+ if (userIntegrityCheckFlags) {
303
+ if (opts.onRequireUserIntegrityCheck) {
304
+ opts.onRequireUserIntegrityCheck(userIntegrityCheckFlags);
305
+ } else {
306
+ await validateUserCountIntegrity({
307
+ flags: userIntegrityCheckFlags,
308
+ knex
309
+ });
310
+ }
311
+ }
312
+ return {
313
+ primaryKeys: primaryKeys$1,
314
+ nestedActionEvents: nestedActionEvents$1
315
+ };
316
+ });
317
+ if (opts.emitEvents !== false) {
318
+ for (const nestedActionEvent of nestedActionEvents) {
319
+ if (opts.bypassEmitAction) {
320
+ opts.bypassEmitAction(nestedActionEvent);
321
+ } else {
322
+ emitter_default.emitAction(nestedActionEvent.event, nestedActionEvent.meta, nestedActionEvent.context);
323
+ }
324
+ }
325
+ }
326
+ if (shouldClearCache(this.cache, opts, this.collection)) {
327
+ await this.cache.clear();
328
+ }
329
+ return primaryKeys;
330
+ }
331
+ /**
332
+ * Get items by query.
333
+ */
334
+ async readByQuery(query, opts) {
335
+ const updatedQuery = opts?.emitEvents !== false ? await emitter_default.emitFilter(this.eventScope === "items" ? ["items.query", `${this.collection}.items.query`] : `${this.eventScope}.query`, query, { collection: this.collection }, {
336
+ database: this.knex,
337
+ schema: this.schema,
338
+ accountability: this.accountability
339
+ }) : query;
340
+ let ast = await getAstFromQuery({
341
+ collection: this.collection,
342
+ query: updatedQuery,
343
+ accountability: this.accountability
344
+ }, {
345
+ schema: this.schema,
346
+ knex: this.knex
347
+ });
348
+ ast = await processAst({
349
+ ast,
350
+ action: "read",
351
+ accountability: this.accountability
352
+ }, {
353
+ knex: this.knex,
354
+ schema: this.schema
355
+ });
356
+ const records = await runAst(ast, this.schema, this.accountability, {
357
+ knex: this.knex,
358
+ stripNonRequested: opts?.stripNonRequested !== undefined ? opts.stripNonRequested : true
359
+ });
360
+ if (records === null) {
361
+ throw new ForbiddenError();
362
+ }
363
+ const filteredRecords = opts?.emitEvents !== false ? await emitter_default.emitFilter(this.eventScope === "items" ? ["items.read", `${this.collection}.items.read`] : `${this.eventScope}.read`, records, {
364
+ query: updatedQuery,
365
+ collection: this.collection
366
+ }, {
367
+ database: this.knex,
368
+ schema: this.schema,
369
+ accountability: this.accountability
370
+ }) : records;
371
+ if (opts?.emitEvents !== false) {
372
+ emitter_default.emitAction(this.eventScope === "items" ? ["items.read", `${this.collection}.items.read`] : `${this.eventScope}.read`, {
373
+ payload: filteredRecords,
374
+ query: updatedQuery,
375
+ collection: this.collection
376
+ }, {
377
+ database: this.knex || database_default(),
378
+ schema: this.schema,
379
+ accountability: this.accountability
380
+ });
381
+ }
382
+ return filteredRecords;
383
+ }
384
+ /**
385
+ * Get single item by primary key.
386
+ *
387
+ * Uses `this.readByQuery` under the hood.
388
+ */
389
+ async readOne(key, query = {}, opts) {
390
+ const primaryKeyField = this.schema.collections[this.collection].primary;
391
+ validateKeys(this.schema, this.collection, primaryKeyField, key);
392
+ const filterWithKey = assign({}, query.filter, { [primaryKeyField]: { _eq: key } });
393
+ const queryWithKey = assign({}, query, { filter: filterWithKey });
394
+ let results = [];
395
+ if (query.version && query.version !== "main") {
396
+ results = [await handleVersion(this, key, queryWithKey, opts)];
397
+ } else {
398
+ results = await this.readByQuery(queryWithKey, opts);
399
+ }
400
+ if (results.length === 0) {
401
+ throw new ForbiddenError();
402
+ }
403
+ return results[0];
404
+ }
405
+ /**
406
+ * Get multiple items by primary keys.
407
+ *
408
+ * Uses `this.readByQuery` under the hood.
409
+ */
410
+ async readMany(keys, query = {}, opts) {
411
+ const primaryKeyField = this.schema.collections[this.collection].primary;
412
+ validateKeys(this.schema, this.collection, primaryKeyField, keys);
413
+ const filterWithKey = { _and: [{ [primaryKeyField]: { _in: keys } }, query.filter ?? {}] };
414
+ const queryWithKey = assign({}, query, { filter: filterWithKey });
415
+ if (Array.isArray(keys) && keys.length > 0 && !queryWithKey.limit) {
416
+ queryWithKey.limit = keys.length;
417
+ }
418
+ const results = await this.readByQuery(queryWithKey, opts);
419
+ return results;
420
+ }
421
+ /**
422
+ * Update multiple items by query.
423
+ *
424
+ * Uses `this.updateMany` under the hood.
425
+ */
426
+ async updateByQuery(query, data, opts) {
427
+ const keys = await this.getKeysByQuery(query);
428
+ return keys.length ? await this.updateMany(keys, data, opts) : [];
429
+ }
430
+ /**
431
+ * Update a single item by primary key.
432
+ *
433
+ * Uses `this.updateMany` under the hood.
434
+ */
435
+ async updateOne(key, data, opts) {
436
+ await this.updateMany([key], data, opts);
437
+ return key;
438
+ }
439
+ /**
440
+ * Update multiple items in a single transaction.
441
+ *
442
+ * Uses `this.updateOne` under the hood.
443
+ */
444
+ async updateBatch(data, opts = {}) {
445
+ if (!Array.isArray(data)) {
446
+ throw new InvalidPayloadError({ reason: "Input should be an array of items" });
447
+ }
448
+ if (!opts.mutationTracker) opts.mutationTracker = this.createMutationTracker();
449
+ const primaryKeyField = this.schema.collections[this.collection].primary;
450
+ const keys = [];
451
+ try {
452
+ await transaction(this.knex, async (knex) => {
453
+ const service = this.fork({ knex });
454
+ let userIntegrityCheckFlags = opts.userIntegrityCheckFlags ?? UserIntegrityCheckFlag.None;
455
+ for (const index in data) {
456
+ const item = data[index];
457
+ const primaryKey = item[primaryKeyField];
458
+ if (!primaryKey) throw new InvalidPayloadError({ reason: `Item in update misses primary key` });
459
+ const combinedOpts = {
460
+ autoPurgeCache: false,
461
+ ...opts,
462
+ overwriteDefaults: opts.overwriteDefaults?.[index],
463
+ onRequireUserIntegrityCheck: (flags) => userIntegrityCheckFlags |= flags
464
+ };
465
+ keys.push(await service.updateOne(primaryKey, omit(item, primaryKeyField), combinedOpts));
466
+ }
467
+ if (userIntegrityCheckFlags) {
468
+ if (opts.onRequireUserIntegrityCheck) {
469
+ opts.onRequireUserIntegrityCheck(userIntegrityCheckFlags);
470
+ } else {
471
+ await validateUserCountIntegrity({
472
+ flags: userIntegrityCheckFlags,
473
+ knex
474
+ });
475
+ }
476
+ }
477
+ });
478
+ } finally {
479
+ if (shouldClearCache(this.cache, opts, this.collection)) {
480
+ await this.cache.clear();
481
+ }
482
+ }
483
+ return keys;
484
+ }
485
+ /**
486
+ * Update many items by primary key, setting all items to the same change.
487
+ */
488
+ async updateMany(keys, data, opts = {}) {
489
+ if (!opts.mutationTracker) opts.mutationTracker = this.createMutationTracker();
490
+ if (!opts.bypassLimits) {
491
+ opts.mutationTracker.trackMutations(keys.length);
492
+ }
493
+ const primaryKeyField = this.schema.collections[this.collection].primary;
494
+ validateKeys(this.schema, this.collection, primaryKeyField, keys);
495
+ const fields = Object.keys(this.schema.collections[this.collection].fields);
496
+ const aliases = Object.values(this.schema.collections[this.collection].fields).filter((field) => field.alias === true).map((field) => field.field);
497
+ const payload = cloneDeep(data);
498
+ const nestedActionEvents = [];
499
+ const payloadAfterHooks = opts.emitEvents !== false ? await emitter_default.emitFilter(this.eventScope === "items" ? ["items.update", `${this.collection}.items.update`] : `${this.eventScope}.update`, payload, {
500
+ keys,
501
+ collection: this.collection
502
+ }, {
503
+ database: this.knex,
504
+ schema: this.schema,
505
+ accountability: this.accountability
506
+ }) : payload;
507
+ keys.sort();
508
+ if (this.accountability) {
509
+ await validateAccess({
510
+ accountability: this.accountability,
511
+ action: "update",
512
+ collection: this.collection,
513
+ primaryKeys: keys,
514
+ fields: Object.keys(payloadAfterHooks)
515
+ }, {
516
+ schema: this.schema,
517
+ knex: this.knex
518
+ });
519
+ }
520
+ const payloadWithPresets = this.accountability ? await processPayload({
521
+ accountability: this.accountability,
522
+ action: "update",
523
+ collection: this.collection,
524
+ payload: payloadAfterHooks,
525
+ nested: this.nested
526
+ }, {
527
+ knex: this.knex,
528
+ schema: this.schema
529
+ }) : payloadAfterHooks;
530
+ if (opts.preMutationError) {
531
+ throw opts.preMutationError;
532
+ }
533
+ await transaction(this.knex, async (trx) => {
534
+ const payloadService = new PayloadService(this.collection, {
535
+ accountability: this.accountability,
536
+ knex: trx,
537
+ schema: this.schema,
538
+ nested: this.nested,
539
+ overwriteDefaults: opts.overwriteDefaults
540
+ });
541
+ const { payload: payloadWithM2O, revisions: revisionsM2O, nestedActionEvents: nestedActionEventsM2O, userIntegrityCheckFlags: userIntegrityCheckFlagsM2O } = await payloadService.processM2O(payloadWithPresets, opts);
542
+ const { payload: payloadWithA2O, revisions: revisionsA2O, nestedActionEvents: nestedActionEventsA2O, userIntegrityCheckFlags: userIntegrityCheckFlagsA2O } = await payloadService.processA2O(payloadWithM2O, opts);
543
+ const payloadWithoutAliasAndPK = pick(payloadWithA2O, without(fields, primaryKeyField, ...aliases));
544
+ const payloadWithTypeCasting = await payloadService.processValues("update", payloadWithoutAliasAndPK);
545
+ if (Object.keys(payloadWithTypeCasting).length > 0) {
546
+ try {
547
+ await trx(this.collection).update(payloadWithTypeCasting).whereIn(primaryKeyField, keys);
548
+ } catch (err) {
549
+ throw await translateDatabaseError(err, data);
550
+ }
551
+ }
552
+ const childrenRevisions = [...revisionsM2O, ...revisionsA2O];
553
+ let userIntegrityCheckFlags = opts.userIntegrityCheckFlags ?? UserIntegrityCheckFlag.None | userIntegrityCheckFlagsM2O | userIntegrityCheckFlagsA2O;
554
+ nestedActionEvents.push(...nestedActionEventsM2O);
555
+ nestedActionEvents.push(...nestedActionEventsA2O);
556
+ for (const key of keys) {
557
+ const { revisions, nestedActionEvents: nestedActionEventsO2M, userIntegrityCheckFlags: userIntegrityCheckFlagsO2M } = await payloadService.processO2M(payloadWithA2O, key, opts);
558
+ childrenRevisions.push(...revisions);
559
+ nestedActionEvents.push(...nestedActionEventsO2M);
560
+ userIntegrityCheckFlags |= userIntegrityCheckFlagsO2M;
561
+ }
562
+ if (userIntegrityCheckFlags) {
563
+ if (opts?.onRequireUserIntegrityCheck) {
564
+ opts.onRequireUserIntegrityCheck(userIntegrityCheckFlags);
565
+ } else {
566
+ await validateUserCountIntegrity({
567
+ flags: userIntegrityCheckFlags,
568
+ knex: trx
569
+ });
570
+ }
571
+ }
572
+ if (opts.skipTracking !== true && this.accountability && this.schema.collections[this.collection].accountability !== null) {
573
+ const { ActivityService } = await import("./activity.js");
574
+ const { RevisionsService } = await import("./revisions.js");
575
+ const activityService = new ActivityService({
576
+ knex: trx,
577
+ schema: this.schema
578
+ });
579
+ const activity = await activityService.createMany(keys.map((key) => ({
580
+ action: Action.UPDATE,
581
+ user: this.accountability.user,
582
+ collection: this.collection,
583
+ ip: this.accountability.ip,
584
+ user_agent: this.accountability.userAgent,
585
+ origin: this.accountability.origin,
586
+ item: key
587
+ })), { bypassLimits: true });
588
+ if (this.schema.collections[this.collection].accountability === "all") {
589
+ const itemsService = new ItemsService(this.collection, {
590
+ knex: trx,
591
+ schema: this.schema
592
+ });
593
+ const relationalFields = getRelationsForCollection(this.schema, this.collection);
594
+ const snapshotFields = difference(fields, relationalFields);
595
+ const snapshots = await itemsService.readMany(keys, { fields: snapshotFields.length > 0 ? snapshotFields : ["*"] });
596
+ const revisionsService = new RevisionsService({
597
+ knex: trx,
598
+ schema: this.schema
599
+ });
600
+ const revisions = (await Promise.all(activity.map(async (activity$1, index) => ({
601
+ activity: activity$1,
602
+ collection: this.collection,
603
+ item: keys[index],
604
+ data: Array.isArray(snapshots) && snapshots[index] ? await payloadService.prepareDelta(snapshots[index]) : null,
605
+ delta: await payloadService.prepareDelta(payloadWithTypeCasting)
606
+ })))).filter((revision) => revision.delta);
607
+ const revisionIDs = await revisionsService.createMany(revisions);
608
+ for (let i = 0; i < revisionIDs.length; i++) {
609
+ const revisionID = revisionIDs[i];
610
+ if (opts.onRevisionCreate) {
611
+ opts.onRevisionCreate(revisionID);
612
+ }
613
+ if (i === 0) {
614
+ if (childrenRevisions.length > 0) {
615
+ await revisionsService.updateMany(childrenRevisions, { parent: revisionID });
616
+ }
617
+ }
618
+ }
619
+ }
620
+ }
621
+ });
622
+ if (shouldClearCache(this.cache, opts, this.collection)) {
623
+ await this.cache.clear();
624
+ }
625
+ if (opts.emitEvents !== false) {
626
+ const actionEvent = {
627
+ event: this.eventScope === "items" ? ["items.update", `${this.collection}.items.update`] : `${this.eventScope}.update`,
628
+ meta: {
629
+ payload: payloadWithPresets,
630
+ keys,
631
+ collection: this.collection
632
+ },
633
+ context: {
634
+ database: database_default(),
635
+ schema: this.schema,
636
+ accountability: this.accountability
637
+ }
638
+ };
639
+ if (opts.bypassEmitAction) {
640
+ opts.bypassEmitAction(actionEvent);
641
+ } else {
642
+ emitter_default.emitAction(actionEvent.event, actionEvent.meta, actionEvent.context);
643
+ }
644
+ for (const nestedActionEvent of nestedActionEvents) {
645
+ if (opts.bypassEmitAction) {
646
+ opts.bypassEmitAction(nestedActionEvent);
647
+ } else {
648
+ emitter_default.emitAction(nestedActionEvent.event, nestedActionEvent.meta, nestedActionEvent.context);
649
+ }
650
+ }
651
+ }
652
+ return keys;
653
+ }
654
+ /**
655
+ * Upsert a single item.
656
+ *
657
+ * Uses `this.createOne` / `this.updateOne` under the hood.
658
+ */
659
+ async upsertOne(payload, opts) {
660
+ const primaryKeyField = this.schema.collections[this.collection].primary;
661
+ const primaryKey = payload[primaryKeyField];
662
+ if (primaryKey) {
663
+ validateKeys(this.schema, this.collection, primaryKeyField, primaryKey);
664
+ }
665
+ const exists = primaryKey && !!await this.knex.select(primaryKeyField).from(this.collection).where({ [primaryKeyField]: primaryKey }).first();
666
+ if (exists) {
667
+ const { [primaryKeyField]: _,...data } = payload;
668
+ return await this.updateOne(primaryKey, data, opts);
669
+ } else {
670
+ return await this.createOne(payload, opts);
671
+ }
672
+ }
673
+ /**
674
+ * Upsert many items.
675
+ *
676
+ * Uses `this.upsertOne` under the hood.
677
+ */
678
+ async upsertMany(payloads, opts = {}) {
679
+ if (!opts.mutationTracker) opts.mutationTracker = this.createMutationTracker();
680
+ const primaryKeys = await transaction(this.knex, async (knex) => {
681
+ const service = this.fork({ knex });
682
+ const primaryKeys$1 = [];
683
+ for (const index in payloads) {
684
+ const payload = payloads[index];
685
+ const primaryKey = await service.upsertOne(payload, {
686
+ ...opts || {},
687
+ overwriteDefaults: opts.overwriteDefaults?.[index],
688
+ autoPurgeCache: false
689
+ });
690
+ primaryKeys$1.push(primaryKey);
691
+ }
692
+ return primaryKeys$1;
693
+ });
694
+ if (shouldClearCache(this.cache, opts, this.collection)) {
695
+ await this.cache.clear();
696
+ }
697
+ return primaryKeys;
698
+ }
699
+ /**
700
+ * Delete multiple items by query.
701
+ *
702
+ * Uses `this.deleteMany` under the hood.
703
+ */
704
+ async deleteByQuery(query, opts) {
705
+ const keys = await this.getKeysByQuery(query);
706
+ const primaryKeyField = this.schema.collections[this.collection].primary;
707
+ validateKeys(this.schema, this.collection, primaryKeyField, keys);
708
+ return keys.length ? await this.deleteMany(keys, opts) : [];
709
+ }
710
+ /**
711
+ * Delete a single item by primary key.
712
+ *
713
+ * Uses `this.deleteMany` under the hood.
714
+ */
715
+ async deleteOne(key, opts) {
716
+ const primaryKeyField = this.schema.collections[this.collection].primary;
717
+ validateKeys(this.schema, this.collection, primaryKeyField, key);
718
+ await this.deleteMany([key], opts);
719
+ return key;
720
+ }
721
+ /**
722
+ * Delete multiple items by primary key.
723
+ */
724
+ async deleteMany(keys, opts = {}) {
725
+ if (!opts.mutationTracker) opts.mutationTracker = this.createMutationTracker();
726
+ if (!opts.bypassLimits) {
727
+ opts.mutationTracker.trackMutations(keys.length);
728
+ }
729
+ const primaryKeyField = this.schema.collections[this.collection].primary;
730
+ validateKeys(this.schema, this.collection, primaryKeyField, keys);
731
+ const keysAfterHooks = opts.emitEvents !== false ? await emitter_default.emitFilter(this.eventScope === "items" ? ["items.delete", `${this.collection}.items.delete`] : `${this.eventScope}.delete`, keys, { collection: this.collection }, {
732
+ database: this.knex,
733
+ schema: this.schema,
734
+ accountability: this.accountability
735
+ }) : keys;
736
+ if (this.accountability) {
737
+ await validateAccess({
738
+ accountability: this.accountability,
739
+ action: "delete",
740
+ collection: this.collection,
741
+ primaryKeys: keysAfterHooks
742
+ }, {
743
+ knex: this.knex,
744
+ schema: this.schema
745
+ });
746
+ }
747
+ if (opts.preMutationError) {
748
+ throw opts.preMutationError;
749
+ }
750
+ await transaction(this.knex, async (trx) => {
751
+ await trx(this.collection).whereIn(primaryKeyField, keysAfterHooks).delete();
752
+ if (opts.userIntegrityCheckFlags) {
753
+ if (opts.onRequireUserIntegrityCheck) {
754
+ opts.onRequireUserIntegrityCheck(opts.userIntegrityCheckFlags);
755
+ } else {
756
+ await validateUserCountIntegrity({
757
+ flags: opts.userIntegrityCheckFlags,
758
+ knex: trx
759
+ });
760
+ }
761
+ }
762
+ if (opts.skipTracking !== true && this.accountability && this.schema.collections[this.collection].accountability !== null) {
763
+ const { ActivityService } = await import("./activity.js");
764
+ const activityService = new ActivityService({
765
+ knex: trx,
766
+ schema: this.schema
767
+ });
768
+ await activityService.createMany(keysAfterHooks.map((key) => ({
769
+ action: Action.DELETE,
770
+ user: this.accountability.user,
771
+ collection: this.collection,
772
+ ip: this.accountability.ip,
773
+ user_agent: this.accountability.userAgent,
774
+ origin: this.accountability.origin,
775
+ item: key
776
+ })), { bypassLimits: true });
777
+ }
778
+ });
779
+ if (shouldClearCache(this.cache, opts, this.collection)) {
780
+ await this.cache.clear();
781
+ }
782
+ if (opts.emitEvents !== false) {
783
+ const actionEvent = {
784
+ event: this.eventScope === "items" ? ["items.delete", `${this.collection}.items.delete`] : `${this.eventScope}.delete`,
785
+ meta: {
786
+ payload: keysAfterHooks,
787
+ keys: keysAfterHooks,
788
+ collection: this.collection
789
+ },
790
+ context: {
791
+ database: database_default(),
792
+ schema: this.schema,
793
+ accountability: this.accountability
794
+ }
795
+ };
796
+ if (opts.bypassEmitAction) {
797
+ opts.bypassEmitAction(actionEvent);
798
+ } else {
799
+ emitter_default.emitAction(actionEvent.event, actionEvent.meta, actionEvent.context);
800
+ }
801
+ }
802
+ return keysAfterHooks;
803
+ }
804
+ /**
805
+ * Read/treat collection as singleton.
806
+ */
807
+ async readSingleton(query, opts) {
808
+ query = clone(query);
809
+ query.limit = 1;
810
+ let record;
811
+ if (query.version && query.version !== "main") {
812
+ const primaryKeyField = this.schema.collections[this.collection].primary;
813
+ const key = (await this.knex.select(primaryKeyField).from(this.collection).first())?.[primaryKeyField];
814
+ if (key) {
815
+ record = await handleVersion(this, key, query, opts);
816
+ }
817
+ } else {
818
+ record = (await this.readByQuery(query, opts))[0];
819
+ }
820
+ if (!record) {
821
+ let fields = Object.entries(this.schema.collections[this.collection].fields);
822
+ const defaults = {};
823
+ if (query.fields && query.fields.includes("*") === false) {
824
+ fields = fields.filter(([name]) => {
825
+ return query.fields.includes(name);
826
+ });
827
+ }
828
+ for (const [name, field] of fields) {
829
+ if (this.schema.collections[this.collection].primary === name) {
830
+ defaults[name] = null;
831
+ continue;
832
+ }
833
+ if (field.defaultValue !== null) defaults[name] = field.defaultValue;
834
+ }
835
+ return defaults;
836
+ }
837
+ return record;
838
+ }
839
+ /**
840
+ * Upsert/treat collection as singleton.
841
+ *
842
+ * Uses `this.createOne` / `this.updateOne` under the hood.
843
+ */
844
+ async upsertSingleton(data, opts) {
845
+ const primaryKeyField = this.schema.collections[this.collection].primary;
846
+ const record = await this.knex.select(primaryKeyField).from(this.collection).limit(1).first();
847
+ if (record) {
848
+ return await this.updateOne(record[primaryKeyField], data, opts);
849
+ }
850
+ return await this.createOne(data, opts);
851
+ }
852
+ };
853
+
854
+ //#endregion
855
+ export { ItemsService };