@strapi/core 0.0.0-experimental.d23c1d5b0e45dd06ef09977f526c85468be05403 → 0.0.0-experimental.d325780feab1caf1b9e4423588eb1cc73b74c376

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.

Potentially problematic release.


This version of @strapi/core might be problematic. Click here for more details.

Files changed (521) hide show
  1. package/LICENSE +18 -3
  2. package/dist/Strapi.d.ts +3 -1
  3. package/dist/Strapi.d.ts.map +1 -1
  4. package/dist/Strapi.js +71 -21
  5. package/dist/Strapi.js.map +1 -1
  6. package/dist/Strapi.mjs +50 -19
  7. package/dist/Strapi.mjs.map +1 -1
  8. package/dist/compile.js.map +1 -1
  9. package/dist/compile.mjs.map +1 -1
  10. package/dist/configuration/config-loader.js +1 -2
  11. package/dist/configuration/config-loader.js.map +1 -1
  12. package/dist/configuration/config-loader.mjs +1 -2
  13. package/dist/configuration/config-loader.mjs.map +1 -1
  14. package/dist/configuration/get-dirs.js +2 -2
  15. package/dist/configuration/get-dirs.js.map +1 -1
  16. package/dist/configuration/get-dirs.mjs.map +1 -1
  17. package/dist/configuration/index.d.ts.map +1 -1
  18. package/dist/configuration/index.js +10 -5
  19. package/dist/configuration/index.js.map +1 -1
  20. package/dist/configuration/index.mjs +8 -3
  21. package/dist/configuration/index.mjs.map +1 -1
  22. package/dist/configuration/urls.js.map +1 -1
  23. package/dist/configuration/urls.mjs.map +1 -1
  24. package/dist/container.js.map +1 -1
  25. package/dist/container.mjs.map +1 -1
  26. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  27. package/dist/core-api/controller/collection-type.js +5 -3
  28. package/dist/core-api/controller/collection-type.js.map +1 -1
  29. package/dist/core-api/controller/collection-type.mjs +2 -0
  30. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  31. package/dist/core-api/controller/index.js +2 -2
  32. package/dist/core-api/controller/index.js.map +1 -1
  33. package/dist/core-api/controller/index.mjs.map +1 -1
  34. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  35. package/dist/core-api/controller/single-type.js +3 -2
  36. package/dist/core-api/controller/single-type.js.map +1 -1
  37. package/dist/core-api/controller/single-type.mjs +1 -0
  38. package/dist/core-api/controller/single-type.mjs.map +1 -1
  39. package/dist/core-api/controller/transform.js +8 -8
  40. package/dist/core-api/controller/transform.js.map +1 -1
  41. package/dist/core-api/controller/transform.mjs.map +1 -1
  42. package/dist/core-api/routes/index.js.map +1 -1
  43. package/dist/core-api/routes/index.mjs.map +1 -1
  44. package/dist/core-api/service/collection-type.d.ts +3 -9
  45. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  46. package/dist/core-api/service/collection-type.js +5 -3
  47. package/dist/core-api/service/collection-type.js.map +1 -1
  48. package/dist/core-api/service/collection-type.mjs +6 -4
  49. package/dist/core-api/service/collection-type.mjs.map +1 -1
  50. package/dist/core-api/service/core-service.js.map +1 -1
  51. package/dist/core-api/service/core-service.mjs.map +1 -1
  52. package/dist/core-api/service/index.js.map +1 -1
  53. package/dist/core-api/service/index.mjs.map +1 -1
  54. package/dist/core-api/service/pagination.d.ts +4 -11
  55. package/dist/core-api/service/pagination.d.ts.map +1 -1
  56. package/dist/core-api/service/pagination.js +18 -44
  57. package/dist/core-api/service/pagination.js.map +1 -1
  58. package/dist/core-api/service/pagination.mjs +16 -42
  59. package/dist/core-api/service/pagination.mjs.map +1 -1
  60. package/dist/core-api/service/single-type.d.ts.map +1 -1
  61. package/dist/core-api/service/single-type.js +3 -3
  62. package/dist/core-api/service/single-type.js.map +1 -1
  63. package/dist/core-api/service/single-type.mjs +3 -3
  64. package/dist/core-api/service/single-type.mjs.map +1 -1
  65. package/dist/domain/content-type/index.js +4 -4
  66. package/dist/domain/content-type/index.js.map +1 -1
  67. package/dist/domain/content-type/index.mjs.map +1 -1
  68. package/dist/domain/content-type/validator.js.map +1 -1
  69. package/dist/domain/content-type/validator.mjs.map +1 -1
  70. package/dist/domain/module/index.js.map +1 -1
  71. package/dist/domain/module/index.mjs.map +1 -1
  72. package/dist/domain/module/validation.js.map +1 -1
  73. package/dist/domain/module/validation.mjs.map +1 -1
  74. package/dist/ee/index.d.ts.map +1 -1
  75. package/dist/ee/index.js +9 -4
  76. package/dist/ee/index.js.map +1 -1
  77. package/dist/ee/index.mjs +6 -1
  78. package/dist/ee/index.mjs.map +1 -1
  79. package/dist/ee/license.js.map +1 -1
  80. package/dist/ee/license.mjs.map +1 -1
  81. package/dist/factories.js +4 -4
  82. package/dist/factories.js.map +1 -1
  83. package/dist/factories.mjs.map +1 -1
  84. package/dist/index.d.ts +14 -0
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js.map +1 -1
  87. package/dist/index.mjs.map +1 -1
  88. package/dist/loaders/admin.js.map +1 -1
  89. package/dist/loaders/admin.mjs.map +1 -1
  90. package/dist/loaders/apis.d.ts.map +1 -1
  91. package/dist/loaders/apis.js +12 -12
  92. package/dist/loaders/apis.js.map +1 -1
  93. package/dist/loaders/apis.mjs +10 -10
  94. package/dist/loaders/apis.mjs.map +1 -1
  95. package/dist/loaders/components.js.map +1 -1
  96. package/dist/loaders/components.mjs.map +1 -1
  97. package/dist/loaders/middlewares.js.map +1 -1
  98. package/dist/loaders/middlewares.mjs.map +1 -1
  99. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  100. package/dist/loaders/plugins/get-enabled-plugins.js +45 -17
  101. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  102. package/dist/loaders/plugins/get-enabled-plugins.mjs +15 -9
  103. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  104. package/dist/loaders/plugins/get-user-plugins-config.js +2 -2
  105. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  106. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  107. package/dist/loaders/plugins/index.d.ts.map +1 -1
  108. package/dist/loaders/plugins/index.js +33 -7
  109. package/dist/loaders/plugins/index.js.map +1 -1
  110. package/dist/loaders/plugins/index.mjs +9 -1
  111. package/dist/loaders/plugins/index.mjs.map +1 -1
  112. package/dist/loaders/policies.js.map +1 -1
  113. package/dist/loaders/policies.mjs.map +1 -1
  114. package/dist/loaders/sanitizers.js.map +1 -1
  115. package/dist/loaders/sanitizers.mjs.map +1 -1
  116. package/dist/loaders/src-index.js.map +1 -1
  117. package/dist/loaders/src-index.mjs.map +1 -1
  118. package/dist/loaders/validators.js.map +1 -1
  119. package/dist/loaders/validators.mjs.map +1 -1
  120. package/dist/middlewares/body.js +2 -2
  121. package/dist/middlewares/body.js.map +1 -1
  122. package/dist/middlewares/body.mjs.map +1 -1
  123. package/dist/middlewares/cors.d.ts.map +1 -1
  124. package/dist/middlewares/cors.js +9 -7
  125. package/dist/middlewares/cors.js.map +1 -1
  126. package/dist/middlewares/cors.mjs +9 -7
  127. package/dist/middlewares/cors.mjs.map +1 -1
  128. package/dist/middlewares/errors.js.map +1 -1
  129. package/dist/middlewares/errors.mjs.map +1 -1
  130. package/dist/middlewares/favicon.js.map +1 -1
  131. package/dist/middlewares/favicon.mjs.map +1 -1
  132. package/dist/middlewares/index.js.map +1 -1
  133. package/dist/middlewares/logger.js.map +1 -1
  134. package/dist/middlewares/logger.mjs.map +1 -1
  135. package/dist/middlewares/powered-by.js.map +1 -1
  136. package/dist/middlewares/powered-by.mjs.map +1 -1
  137. package/dist/middlewares/public.js +2 -2
  138. package/dist/middlewares/public.js.map +1 -1
  139. package/dist/middlewares/public.mjs.map +1 -1
  140. package/dist/middlewares/query.d.ts.map +1 -1
  141. package/dist/middlewares/query.js.map +1 -1
  142. package/dist/middlewares/query.mjs.map +1 -1
  143. package/dist/middlewares/response-time.js.map +1 -1
  144. package/dist/middlewares/response-time.mjs.map +1 -1
  145. package/dist/middlewares/responses.js +2 -2
  146. package/dist/middlewares/responses.js.map +1 -1
  147. package/dist/middlewares/responses.mjs.map +1 -1
  148. package/dist/middlewares/security.d.ts.map +1 -1
  149. package/dist/middlewares/security.js +12 -5
  150. package/dist/middlewares/security.js.map +1 -1
  151. package/dist/middlewares/security.mjs +11 -4
  152. package/dist/middlewares/security.mjs.map +1 -1
  153. package/dist/middlewares/session.js +2 -2
  154. package/dist/middlewares/session.js.map +1 -1
  155. package/dist/middlewares/session.mjs.map +1 -1
  156. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +33 -0
  157. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -0
  158. package/dist/migrations/database/5.0.0-discard-drafts.js +109 -0
  159. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -0
  160. package/dist/migrations/database/5.0.0-discard-drafts.mjs +109 -0
  161. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -0
  162. package/dist/migrations/draft-publish.d.ts +1 -1
  163. package/dist/migrations/draft-publish.d.ts.map +1 -1
  164. package/dist/migrations/draft-publish.js +14 -31
  165. package/dist/migrations/draft-publish.js.map +1 -1
  166. package/dist/migrations/draft-publish.mjs +15 -32
  167. package/dist/migrations/draft-publish.mjs.map +1 -1
  168. package/dist/migrations/i18n.d.ts +5 -0
  169. package/dist/migrations/i18n.d.ts.map +1 -0
  170. package/dist/migrations/i18n.js +54 -0
  171. package/dist/migrations/i18n.js.map +1 -0
  172. package/dist/migrations/i18n.mjs +54 -0
  173. package/dist/migrations/i18n.mjs.map +1 -0
  174. package/dist/migrations/index.d.ts +5 -0
  175. package/dist/migrations/index.d.ts.map +1 -0
  176. package/dist/migrations/index.js +15 -0
  177. package/dist/migrations/index.js.map +1 -0
  178. package/dist/migrations/index.mjs +15 -0
  179. package/dist/migrations/index.mjs.map +1 -0
  180. package/dist/providers/admin.d.ts.map +1 -1
  181. package/dist/providers/admin.js.map +1 -1
  182. package/dist/providers/admin.mjs.map +1 -1
  183. package/dist/providers/coreStore.js.map +1 -1
  184. package/dist/providers/coreStore.mjs.map +1 -1
  185. package/dist/providers/cron.js.map +1 -1
  186. package/dist/providers/cron.mjs.map +1 -1
  187. package/dist/providers/registries.d.ts.map +1 -1
  188. package/dist/providers/registries.js +5 -3
  189. package/dist/providers/registries.js.map +1 -1
  190. package/dist/providers/registries.mjs +5 -3
  191. package/dist/providers/registries.mjs.map +1 -1
  192. package/dist/providers/telemetry.js.map +1 -1
  193. package/dist/providers/telemetry.mjs.map +1 -1
  194. package/dist/providers/webhooks.js.map +1 -1
  195. package/dist/providers/webhooks.mjs.map +1 -1
  196. package/dist/registries/apis.js +2 -2
  197. package/dist/registries/apis.js.map +1 -1
  198. package/dist/registries/apis.mjs.map +1 -1
  199. package/dist/registries/components.js +2 -2
  200. package/dist/registries/components.js.map +1 -1
  201. package/dist/registries/components.mjs.map +1 -1
  202. package/dist/registries/content-types.js +3 -3
  203. package/dist/registries/content-types.js.map +1 -1
  204. package/dist/registries/content-types.mjs.map +1 -1
  205. package/dist/registries/controllers.js +3 -3
  206. package/dist/registries/controllers.js.map +1 -1
  207. package/dist/registries/controllers.mjs.map +1 -1
  208. package/dist/registries/custom-fields.js +4 -4
  209. package/dist/registries/custom-fields.js.map +1 -1
  210. package/dist/registries/custom-fields.mjs.map +1 -1
  211. package/dist/registries/hooks.js +2 -2
  212. package/dist/registries/hooks.js.map +1 -1
  213. package/dist/registries/hooks.mjs.map +1 -1
  214. package/dist/registries/middlewares.js +3 -3
  215. package/dist/registries/middlewares.js.map +1 -1
  216. package/dist/registries/middlewares.mjs.map +1 -1
  217. package/dist/registries/models.js.map +1 -1
  218. package/dist/registries/models.mjs.map +1 -1
  219. package/dist/registries/modules.js +3 -3
  220. package/dist/registries/modules.js.map +1 -1
  221. package/dist/registries/modules.mjs.map +1 -1
  222. package/dist/registries/namespace.js.map +1 -1
  223. package/dist/registries/namespace.mjs.map +1 -1
  224. package/dist/registries/plugins.js +2 -2
  225. package/dist/registries/plugins.js.map +1 -1
  226. package/dist/registries/plugins.mjs.map +1 -1
  227. package/dist/registries/policies.d.ts +1 -1
  228. package/dist/registries/policies.d.ts.map +1 -1
  229. package/dist/registries/policies.js +5 -5
  230. package/dist/registries/policies.js.map +1 -1
  231. package/dist/registries/policies.mjs +1 -1
  232. package/dist/registries/policies.mjs.map +1 -1
  233. package/dist/registries/sanitizers.js.map +1 -1
  234. package/dist/registries/sanitizers.mjs.map +1 -1
  235. package/dist/registries/services.js +3 -3
  236. package/dist/registries/services.js.map +1 -1
  237. package/dist/registries/services.mjs.map +1 -1
  238. package/dist/registries/validators.js.map +1 -1
  239. package/dist/registries/validators.mjs.map +1 -1
  240. package/dist/services/auth/index.js +3 -3
  241. package/dist/services/auth/index.js.map +1 -1
  242. package/dist/services/auth/index.mjs.map +1 -1
  243. package/dist/services/config.js.map +1 -1
  244. package/dist/services/config.mjs.map +1 -1
  245. package/dist/services/content-api/index.d.ts +10 -12
  246. package/dist/services/content-api/index.d.ts.map +1 -1
  247. package/dist/services/content-api/index.js.map +1 -1
  248. package/dist/services/content-api/index.mjs.map +1 -1
  249. package/dist/services/content-api/permissions/index.d.ts +10 -12
  250. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  251. package/dist/services/content-api/permissions/index.js.map +1 -1
  252. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  253. package/dist/services/content-api/permissions/providers/action.d.ts +5 -6
  254. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  255. package/dist/services/content-api/permissions/providers/action.js.map +1 -1
  256. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
  257. package/dist/services/content-api/permissions/providers/condition.d.ts +5 -6
  258. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  259. package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
  260. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
  261. package/dist/services/core-store.js +3 -3
  262. package/dist/services/core-store.js.map +1 -1
  263. package/dist/services/core-store.mjs.map +1 -1
  264. package/dist/services/cron.d.ts +3 -3
  265. package/dist/services/cron.d.ts.map +1 -1
  266. package/dist/services/cron.js +12 -8
  267. package/dist/services/cron.js.map +1 -1
  268. package/dist/services/cron.mjs +9 -5
  269. package/dist/services/cron.mjs.map +1 -1
  270. package/dist/services/custom-fields.js.map +1 -1
  271. package/dist/services/custom-fields.mjs.map +1 -1
  272. package/dist/services/document-service/attributes/index.js +2 -2
  273. package/dist/services/document-service/attributes/index.js.map +1 -1
  274. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  275. package/dist/services/document-service/attributes/transforms.js +3 -3
  276. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  277. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  278. package/dist/services/document-service/common.d.ts +1 -1
  279. package/dist/services/document-service/common.d.ts.map +1 -1
  280. package/dist/services/document-service/common.js.map +1 -1
  281. package/dist/services/document-service/common.mjs.map +1 -1
  282. package/dist/services/document-service/components.d.ts.map +1 -1
  283. package/dist/services/document-service/components.js +15 -15
  284. package/dist/services/document-service/components.js.map +1 -1
  285. package/dist/services/document-service/components.mjs.map +1 -1
  286. package/dist/services/document-service/draft-and-publish.js +16 -16
  287. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  288. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  289. package/dist/services/document-service/entries.d.ts +3 -3
  290. package/dist/services/document-service/entries.d.ts.map +1 -1
  291. package/dist/services/document-service/entries.js +13 -13
  292. package/dist/services/document-service/entries.js.map +1 -1
  293. package/dist/services/document-service/entries.mjs +3 -3
  294. package/dist/services/document-service/entries.mjs.map +1 -1
  295. package/dist/services/document-service/events.d.ts +25 -0
  296. package/dist/services/document-service/events.d.ts.map +1 -0
  297. package/dist/services/document-service/events.js +47 -0
  298. package/dist/services/document-service/events.js.map +1 -0
  299. package/dist/services/document-service/events.mjs +47 -0
  300. package/dist/services/document-service/events.mjs.map +1 -0
  301. package/dist/services/document-service/index.d.ts +2 -1
  302. package/dist/services/document-service/index.d.ts.map +1 -1
  303. package/dist/services/document-service/index.js +3 -2
  304. package/dist/services/document-service/index.js.map +1 -1
  305. package/dist/services/document-service/index.mjs +3 -2
  306. package/dist/services/document-service/index.mjs.map +1 -1
  307. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  308. package/dist/services/document-service/internationalization.js +21 -12
  309. package/dist/services/document-service/internationalization.js.map +1 -1
  310. package/dist/services/document-service/internationalization.mjs +14 -5
  311. package/dist/services/document-service/internationalization.mjs.map +1 -1
  312. package/dist/services/document-service/middlewares/errors.js.map +1 -1
  313. package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
  314. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  315. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  316. package/dist/services/document-service/params.js +2 -2
  317. package/dist/services/document-service/params.js.map +1 -1
  318. package/dist/services/document-service/repository.d.ts.map +1 -1
  319. package/dist/services/document-service/repository.js +134 -52
  320. package/dist/services/document-service/repository.js.map +1 -1
  321. package/dist/services/document-service/repository.mjs +131 -49
  322. package/dist/services/document-service/repository.mjs.map +1 -1
  323. package/dist/services/document-service/transform/data.js.map +1 -1
  324. package/dist/services/document-service/transform/data.mjs.map +1 -1
  325. package/dist/services/document-service/transform/fields.js.map +1 -1
  326. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  327. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  328. package/dist/services/document-service/transform/id-map.js +15 -8
  329. package/dist/services/document-service/transform/id-map.js.map +1 -1
  330. package/dist/services/document-service/transform/id-map.mjs +16 -9
  331. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  332. package/dist/services/document-service/transform/id-transform.js +2 -2
  333. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  334. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  335. package/dist/services/document-service/transform/populate.js.map +1 -1
  336. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  337. package/dist/services/document-service/transform/query.js +3 -3
  338. package/dist/services/document-service/transform/query.js.map +1 -1
  339. package/dist/services/document-service/transform/query.mjs.map +1 -1
  340. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  341. package/dist/services/document-service/transform/relations/extract/data-ids.js +18 -8
  342. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  343. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +16 -6
  344. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  345. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  346. package/dist/services/document-service/transform/relations/transform/data-ids.js +22 -10
  347. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  348. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +21 -9
  349. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  350. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  351. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  352. package/dist/services/document-service/transform/relations/utils/dp.js +2 -2
  353. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  354. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  355. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  356. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  357. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  358. package/dist/services/document-service/transform/relations/utils/map-relation.js +12 -15
  359. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  360. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +7 -10
  361. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  362. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  363. package/dist/services/document-service/utils/populate.js +8 -2
  364. package/dist/services/document-service/utils/populate.js.map +1 -1
  365. package/dist/services/document-service/utils/populate.mjs +8 -2
  366. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  367. package/dist/services/document-service/utils/unidirectional-relations.d.ts +36 -0
  368. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -0
  369. package/dist/services/document-service/utils/unidirectional-relations.js +68 -0
  370. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -0
  371. package/dist/services/document-service/utils/unidirectional-relations.mjs +68 -0
  372. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -0
  373. package/dist/services/entity-service/index.js.map +1 -1
  374. package/dist/services/entity-service/index.mjs.map +1 -1
  375. package/dist/services/entity-validator/blocks-validator.d.ts +1 -2
  376. package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
  377. package/dist/services/entity-validator/blocks-validator.js +4 -3
  378. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  379. package/dist/services/entity-validator/blocks-validator.mjs +3 -3
  380. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  381. package/dist/services/entity-validator/index.d.ts +15 -1
  382. package/dist/services/entity-validator/index.d.ts.map +1 -1
  383. package/dist/services/entity-validator/index.js +109 -53
  384. package/dist/services/entity-validator/index.js.map +1 -1
  385. package/dist/services/entity-validator/index.mjs +95 -39
  386. package/dist/services/entity-validator/index.mjs.map +1 -1
  387. package/dist/services/entity-validator/validators.d.ts +36 -25
  388. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  389. package/dist/services/entity-validator/validators.js +148 -33
  390. package/dist/services/entity-validator/validators.js.map +1 -1
  391. package/dist/services/entity-validator/validators.mjs +140 -25
  392. package/dist/services/entity-validator/validators.mjs.map +1 -1
  393. package/dist/services/errors.js.map +1 -1
  394. package/dist/services/errors.mjs.map +1 -1
  395. package/dist/services/event-hub.d.ts +1 -0
  396. package/dist/services/event-hub.d.ts.map +1 -1
  397. package/dist/services/event-hub.js +9 -4
  398. package/dist/services/event-hub.js.map +1 -1
  399. package/dist/services/event-hub.mjs +9 -4
  400. package/dist/services/event-hub.mjs.map +1 -1
  401. package/dist/services/features.js.map +1 -1
  402. package/dist/services/features.mjs.map +1 -1
  403. package/dist/services/fs.js.map +1 -1
  404. package/dist/services/fs.mjs.map +1 -1
  405. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  406. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  407. package/dist/services/metrics/index.js +1 -2
  408. package/dist/services/metrics/index.js.map +1 -1
  409. package/dist/services/metrics/index.mjs +1 -2
  410. package/dist/services/metrics/index.mjs.map +1 -1
  411. package/dist/services/metrics/is-truthy.js.map +1 -1
  412. package/dist/services/metrics/middleware.d.ts.map +1 -1
  413. package/dist/services/metrics/middleware.js +6 -4
  414. package/dist/services/metrics/middleware.js.map +1 -1
  415. package/dist/services/metrics/middleware.mjs +6 -4
  416. package/dist/services/metrics/middleware.mjs.map +1 -1
  417. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  418. package/dist/services/metrics/rate-limiter.js +6 -3
  419. package/dist/services/metrics/rate-limiter.js.map +1 -1
  420. package/dist/services/metrics/rate-limiter.mjs +6 -3
  421. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  422. package/dist/services/metrics/sender.js.map +1 -1
  423. package/dist/services/metrics/sender.mjs.map +1 -1
  424. package/dist/services/query-params.js.map +1 -1
  425. package/dist/services/query-params.mjs.map +1 -1
  426. package/dist/services/reloader.js.map +1 -1
  427. package/dist/services/reloader.mjs.map +1 -1
  428. package/dist/services/request-context.js.map +1 -1
  429. package/dist/services/request-context.mjs.map +1 -1
  430. package/dist/services/server/admin-api.js.map +1 -1
  431. package/dist/services/server/admin-api.mjs.map +1 -1
  432. package/dist/services/server/api.js.map +1 -1
  433. package/dist/services/server/api.mjs.map +1 -1
  434. package/dist/services/server/compose-endpoint.js +7 -7
  435. package/dist/services/server/compose-endpoint.js.map +1 -1
  436. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  437. package/dist/services/server/content-api.js.map +1 -1
  438. package/dist/services/server/content-api.mjs.map +1 -1
  439. package/dist/services/server/http-server.js.map +1 -1
  440. package/dist/services/server/http-server.mjs.map +1 -1
  441. package/dist/services/server/index.js +1 -1
  442. package/dist/services/server/index.js.map +1 -1
  443. package/dist/services/server/index.mjs +1 -1
  444. package/dist/services/server/index.mjs.map +1 -1
  445. package/dist/services/server/koa.d.ts.map +1 -1
  446. package/dist/services/server/koa.js +4 -4
  447. package/dist/services/server/koa.js.map +1 -1
  448. package/dist/services/server/koa.mjs +1 -1
  449. package/dist/services/server/koa.mjs.map +1 -1
  450. package/dist/services/server/middleware.js +3 -3
  451. package/dist/services/server/middleware.js.map +1 -1
  452. package/dist/services/server/middleware.mjs.map +1 -1
  453. package/dist/services/server/policy.js.map +1 -1
  454. package/dist/services/server/policy.mjs.map +1 -1
  455. package/dist/services/server/register-middlewares.js.map +1 -1
  456. package/dist/services/server/register-middlewares.mjs.map +1 -1
  457. package/dist/services/server/register-routes.js.map +1 -1
  458. package/dist/services/server/register-routes.mjs.map +1 -1
  459. package/dist/services/server/routing.js +2 -2
  460. package/dist/services/server/routing.js.map +1 -1
  461. package/dist/services/server/routing.mjs.map +1 -1
  462. package/dist/services/utils/dynamic-zones.js +5 -5
  463. package/dist/services/utils/dynamic-zones.js.map +1 -1
  464. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  465. package/dist/services/webhook-runner.d.ts +2 -1
  466. package/dist/services/webhook-runner.d.ts.map +1 -1
  467. package/dist/services/webhook-runner.js.map +1 -1
  468. package/dist/services/webhook-runner.mjs.map +1 -1
  469. package/dist/services/webhook-store.d.ts +2 -8
  470. package/dist/services/webhook-store.d.ts.map +1 -1
  471. package/dist/services/webhook-store.js +9 -2
  472. package/dist/services/webhook-store.js.map +1 -1
  473. package/dist/services/webhook-store.mjs +9 -2
  474. package/dist/services/webhook-store.mjs.map +1 -1
  475. package/dist/services/worker-queue.js.map +1 -1
  476. package/dist/services/worker-queue.mjs.map +1 -1
  477. package/dist/utils/convert-custom-field-type.js.map +1 -1
  478. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  479. package/dist/utils/cron.js +3 -3
  480. package/dist/utils/cron.js.map +1 -1
  481. package/dist/utils/cron.mjs.map +1 -1
  482. package/dist/utils/fetch.d.ts.map +1 -1
  483. package/dist/utils/fetch.js +4 -3
  484. package/dist/utils/fetch.js.map +1 -1
  485. package/dist/utils/fetch.mjs +4 -3
  486. package/dist/utils/fetch.mjs.map +1 -1
  487. package/dist/utils/filepath-to-prop-path.d.ts +1 -1
  488. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  489. package/dist/utils/filepath-to-prop-path.js +27 -6
  490. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  491. package/dist/utils/filepath-to-prop-path.mjs +25 -5
  492. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  493. package/dist/utils/is-initialized.js +3 -3
  494. package/dist/utils/is-initialized.js.map +1 -1
  495. package/dist/utils/is-initialized.mjs.map +1 -1
  496. package/dist/utils/load-config-file.js.map +1 -1
  497. package/dist/utils/load-config-file.mjs.map +1 -1
  498. package/dist/utils/load-files.js +1 -2
  499. package/dist/utils/load-files.js.map +1 -1
  500. package/dist/utils/load-files.mjs +1 -2
  501. package/dist/utils/load-files.mjs.map +1 -1
  502. package/dist/utils/resolve-working-dirs.js.map +1 -1
  503. package/dist/utils/resolve-working-dirs.mjs.map +1 -1
  504. package/dist/utils/signals.js.map +1 -1
  505. package/dist/utils/signals.mjs.map +1 -1
  506. package/dist/utils/startup-logger.d.ts.map +1 -1
  507. package/dist/utils/startup-logger.js +10 -5
  508. package/dist/utils/startup-logger.js.map +1 -1
  509. package/dist/utils/startup-logger.mjs +9 -4
  510. package/dist/utils/startup-logger.mjs.map +1 -1
  511. package/dist/utils/transform-content-types-to-models.d.ts +355 -23
  512. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  513. package/dist/utils/transform-content-types-to-models.js +17 -4
  514. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  515. package/dist/utils/transform-content-types-to-models.mjs +16 -3
  516. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  517. package/dist/utils/update-notifier/index.js.map +1 -1
  518. package/dist/utils/update-notifier/index.mjs.map +1 -1
  519. package/package.json +29 -26
  520. package/dist/services/document-service/document-engine.d.ts +0 -1
  521. package/dist/services/document-service/document-engine.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"middleware-manager.js","sources":["../../../../src/services/document-service/middlewares/middleware-manager.ts"],"sourcesContent":["export type Middleware = (ctx: any, next: () => Promise<void>) => Promise<void> | void;\n\nexport type Options = {\n exclude?: string[];\n};\n\nexport const createMiddlewareManager = () => {\n const middlewares: Middleware[] = [];\n\n const manager = {\n use(middleware: Middleware) {\n middlewares.push(middleware);\n\n return () => middlewares.splice(middlewares.indexOf(middleware), 1);\n },\n\n async run(ctx: any, cb: () => void) {\n let index = 0;\n const next = async () => {\n if (index < middlewares.length) {\n // eslint-disable-next-line no-plusplus\n return middlewares[index++](ctx, next);\n }\n\n return cb();\n };\n\n return next();\n },\n\n wrapObject<TSource>(source: TSource, ctxDefaults = {}, opts: Options = {}): TSource {\n const facade: TSource = {} as TSource;\n const { exclude = [] } = opts;\n\n for (const key in source) {\n if (Object.hasOwnProperty.call(source, key)) {\n const prop = source[key];\n\n if (exclude.includes(key)) {\n facade[key] = prop;\n } else if (typeof prop === 'function') {\n const newMethod = async (params: any = {}) => {\n const ctx = {\n ...ctxDefaults,\n action: key,\n params,\n };\n\n return manager.run(ctx, () => prop(ctx.params));\n };\n\n facade[key] = newMethod as typeof prop;\n } else {\n facade[key] = prop;\n }\n }\n }\n\n return facade;\n },\n };\n\n return manager;\n};\n"],"names":[],"mappings":";;AAMO,MAAM,0BAA0B,MAAM;AAC3C,QAAM,cAA4B,CAAA;AAElC,QAAM,UAAU;AAAA,IACd,IAAI,YAAwB;AAC1B,kBAAY,KAAK,UAAU;AAE3B,aAAO,MAAM,YAAY,OAAO,YAAY,QAAQ,UAAU,GAAG,CAAC;AAAA,IACpE;AAAA,IAEA,MAAM,IAAI,KAAU,IAAgB;AAClC,UAAI,QAAQ;AACZ,YAAM,OAAO,YAAY;AACnB,YAAA,QAAQ,YAAY,QAAQ;AAE9B,iBAAO,YAAY,OAAO,EAAE,KAAK,IAAI;AAAA,QACvC;AAEA,eAAO,GAAG;AAAA,MAAA;AAGZ,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,WAAoB,QAAiB,cAAc,CAAA,GAAI,OAAgB,CAAA,GAAa;AAClF,YAAM,SAAkB,CAAA;AACxB,YAAM,EAAE,UAAU,GAAO,IAAA;AAEzB,iBAAW,OAAO,QAAQ;AACxB,YAAI,OAAO,eAAe,KAAK,QAAQ,GAAG,GAAG;AACrC,gBAAA,OAAO,OAAO,GAAG;AAEnB,cAAA,QAAQ,SAAS,GAAG,GAAG;AACzB,mBAAO,GAAG,IAAI;AAAA,UAAA,WACL,OAAO,SAAS,YAAY;AACrC,kBAAM,YAAY,OAAO,SAAc,OAAO;AAC5C,oBAAM,MAAM;AAAA,gBACV,GAAG;AAAA,gBACH,QAAQ;AAAA,gBACR;AAAA,cAAA;AAGF,qBAAO,QAAQ,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC;AAAA,YAAA;AAGhD,mBAAO,GAAG,IAAI;AAAA,UAAA,OACT;AACL,mBAAO,GAAG,IAAI;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAEO,aAAA;AAAA,IACT;AAAA,EAAA;AAGK,SAAA;AACT;;"}
1
+ {"version":3,"file":"middleware-manager.js","sources":["../../../../src/services/document-service/middlewares/middleware-manager.ts"],"sourcesContent":["export type Middleware = (ctx: any, next: () => Promise<void>) => Promise<void> | void;\n\nexport type Options = {\n exclude?: string[];\n};\n\nexport const createMiddlewareManager = () => {\n const middlewares: Middleware[] = [];\n\n const manager = {\n use(middleware: Middleware) {\n middlewares.push(middleware);\n\n return () => middlewares.splice(middlewares.indexOf(middleware), 1);\n },\n\n async run(ctx: any, cb: () => void) {\n let index = 0;\n const next = async () => {\n if (index < middlewares.length) {\n // eslint-disable-next-line no-plusplus\n return middlewares[index++](ctx, next);\n }\n\n return cb();\n };\n\n return next();\n },\n\n wrapObject<TSource>(source: TSource, ctxDefaults = {}, opts: Options = {}): TSource {\n const facade: TSource = {} as TSource;\n const { exclude = [] } = opts;\n\n for (const key in source) {\n if (Object.hasOwnProperty.call(source, key)) {\n const prop = source[key];\n\n if (exclude.includes(key)) {\n facade[key] = prop;\n } else if (typeof prop === 'function') {\n const newMethod = async (params: any = {}) => {\n const ctx = {\n ...ctxDefaults,\n action: key,\n params,\n };\n\n return manager.run(ctx, () => prop(ctx.params));\n };\n\n facade[key] = newMethod as typeof prop;\n } else {\n facade[key] = prop;\n }\n }\n }\n\n return facade;\n },\n };\n\n return manager;\n};\n"],"names":[],"mappings":";;AAMO,MAAM,0BAA0B,MAAM;AAC3C,QAAM,cAA4B,CAAC;AAEnC,QAAM,UAAU;AAAA,IACd,IAAI,YAAwB;AAC1B,kBAAY,KAAK,UAAU;AAE3B,aAAO,MAAM,YAAY,OAAO,YAAY,QAAQ,UAAU,GAAG,CAAC;AAAA,IACpE;AAAA,IAEA,MAAM,IAAI,KAAU,IAAgB;AAClC,UAAI,QAAQ;AACZ,YAAM,OAAO,YAAY;AACnB,YAAA,QAAQ,YAAY,QAAQ;AAE9B,iBAAO,YAAY,OAAO,EAAE,KAAK,IAAI;AAAA,QAAA;AAGvC,eAAO,GAAG;AAAA,MACZ;AAEA,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,WAAoB,QAAiB,cAAc,CAAA,GAAI,OAAgB,CAAA,GAAa;AAClF,YAAM,SAAkB,CAAC;AACzB,YAAM,EAAE,UAAU,CAAC,EAAA,IAAM;AAEzB,iBAAW,OAAO,QAAQ;AACxB,YAAI,OAAO,eAAe,KAAK,QAAQ,GAAG,GAAG;AACrC,gBAAA,OAAO,OAAO,GAAG;AAEnB,cAAA,QAAQ,SAAS,GAAG,GAAG;AACzB,mBAAO,GAAG,IAAI;AAAA,UAAA,WACL,OAAO,SAAS,YAAY;AACrC,kBAAM,YAAY,OAAO,SAAc,OAAO;AAC5C,oBAAM,MAAM;AAAA,gBACV,GAAG;AAAA,gBACH,QAAQ;AAAA,gBACR;AAAA,cACF;AAEA,qBAAO,QAAQ,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC;AAAA,YAChD;AAEA,mBAAO,GAAG,IAAI;AAAA,UAAA,OACT;AACL,mBAAO,GAAG,IAAI;AAAA,UAAA;AAAA,QAChB;AAAA,MACF;AAGK,aAAA;AAAA,IAAA;AAAA,EAEX;AAEO,SAAA;AACT;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"middleware-manager.mjs","sources":["../../../../src/services/document-service/middlewares/middleware-manager.ts"],"sourcesContent":["export type Middleware = (ctx: any, next: () => Promise<void>) => Promise<void> | void;\n\nexport type Options = {\n exclude?: string[];\n};\n\nexport const createMiddlewareManager = () => {\n const middlewares: Middleware[] = [];\n\n const manager = {\n use(middleware: Middleware) {\n middlewares.push(middleware);\n\n return () => middlewares.splice(middlewares.indexOf(middleware), 1);\n },\n\n async run(ctx: any, cb: () => void) {\n let index = 0;\n const next = async () => {\n if (index < middlewares.length) {\n // eslint-disable-next-line no-plusplus\n return middlewares[index++](ctx, next);\n }\n\n return cb();\n };\n\n return next();\n },\n\n wrapObject<TSource>(source: TSource, ctxDefaults = {}, opts: Options = {}): TSource {\n const facade: TSource = {} as TSource;\n const { exclude = [] } = opts;\n\n for (const key in source) {\n if (Object.hasOwnProperty.call(source, key)) {\n const prop = source[key];\n\n if (exclude.includes(key)) {\n facade[key] = prop;\n } else if (typeof prop === 'function') {\n const newMethod = async (params: any = {}) => {\n const ctx = {\n ...ctxDefaults,\n action: key,\n params,\n };\n\n return manager.run(ctx, () => prop(ctx.params));\n };\n\n facade[key] = newMethod as typeof prop;\n } else {\n facade[key] = prop;\n }\n }\n }\n\n return facade;\n },\n };\n\n return manager;\n};\n"],"names":[],"mappings":"AAMO,MAAM,0BAA0B,MAAM;AAC3C,QAAM,cAA4B,CAAA;AAElC,QAAM,UAAU;AAAA,IACd,IAAI,YAAwB;AAC1B,kBAAY,KAAK,UAAU;AAE3B,aAAO,MAAM,YAAY,OAAO,YAAY,QAAQ,UAAU,GAAG,CAAC;AAAA,IACpE;AAAA,IAEA,MAAM,IAAI,KAAU,IAAgB;AAClC,UAAI,QAAQ;AACZ,YAAM,OAAO,YAAY;AACnB,YAAA,QAAQ,YAAY,QAAQ;AAE9B,iBAAO,YAAY,OAAO,EAAE,KAAK,IAAI;AAAA,QACvC;AAEA,eAAO,GAAG;AAAA,MAAA;AAGZ,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,WAAoB,QAAiB,cAAc,CAAA,GAAI,OAAgB,CAAA,GAAa;AAClF,YAAM,SAAkB,CAAA;AACxB,YAAM,EAAE,UAAU,GAAO,IAAA;AAEzB,iBAAW,OAAO,QAAQ;AACxB,YAAI,OAAO,eAAe,KAAK,QAAQ,GAAG,GAAG;AACrC,gBAAA,OAAO,OAAO,GAAG;AAEnB,cAAA,QAAQ,SAAS,GAAG,GAAG;AACzB,mBAAO,GAAG,IAAI;AAAA,UAAA,WACL,OAAO,SAAS,YAAY;AACrC,kBAAM,YAAY,OAAO,SAAc,OAAO;AAC5C,oBAAM,MAAM;AAAA,gBACV,GAAG;AAAA,gBACH,QAAQ;AAAA,gBACR;AAAA,cAAA;AAGF,qBAAO,QAAQ,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC;AAAA,YAAA;AAGhD,mBAAO,GAAG,IAAI;AAAA,UAAA,OACT;AACL,mBAAO,GAAG,IAAI;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAEO,aAAA;AAAA,IACT;AAAA,EAAA;AAGK,SAAA;AACT;"}
1
+ {"version":3,"file":"middleware-manager.mjs","sources":["../../../../src/services/document-service/middlewares/middleware-manager.ts"],"sourcesContent":["export type Middleware = (ctx: any, next: () => Promise<void>) => Promise<void> | void;\n\nexport type Options = {\n exclude?: string[];\n};\n\nexport const createMiddlewareManager = () => {\n const middlewares: Middleware[] = [];\n\n const manager = {\n use(middleware: Middleware) {\n middlewares.push(middleware);\n\n return () => middlewares.splice(middlewares.indexOf(middleware), 1);\n },\n\n async run(ctx: any, cb: () => void) {\n let index = 0;\n const next = async () => {\n if (index < middlewares.length) {\n // eslint-disable-next-line no-plusplus\n return middlewares[index++](ctx, next);\n }\n\n return cb();\n };\n\n return next();\n },\n\n wrapObject<TSource>(source: TSource, ctxDefaults = {}, opts: Options = {}): TSource {\n const facade: TSource = {} as TSource;\n const { exclude = [] } = opts;\n\n for (const key in source) {\n if (Object.hasOwnProperty.call(source, key)) {\n const prop = source[key];\n\n if (exclude.includes(key)) {\n facade[key] = prop;\n } else if (typeof prop === 'function') {\n const newMethod = async (params: any = {}) => {\n const ctx = {\n ...ctxDefaults,\n action: key,\n params,\n };\n\n return manager.run(ctx, () => prop(ctx.params));\n };\n\n facade[key] = newMethod as typeof prop;\n } else {\n facade[key] = prop;\n }\n }\n }\n\n return facade;\n },\n };\n\n return manager;\n};\n"],"names":[],"mappings":"AAMO,MAAM,0BAA0B,MAAM;AAC3C,QAAM,cAA4B,CAAC;AAEnC,QAAM,UAAU;AAAA,IACd,IAAI,YAAwB;AAC1B,kBAAY,KAAK,UAAU;AAE3B,aAAO,MAAM,YAAY,OAAO,YAAY,QAAQ,UAAU,GAAG,CAAC;AAAA,IACpE;AAAA,IAEA,MAAM,IAAI,KAAU,IAAgB;AAClC,UAAI,QAAQ;AACZ,YAAM,OAAO,YAAY;AACnB,YAAA,QAAQ,YAAY,QAAQ;AAE9B,iBAAO,YAAY,OAAO,EAAE,KAAK,IAAI;AAAA,QAAA;AAGvC,eAAO,GAAG;AAAA,MACZ;AAEA,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,WAAoB,QAAiB,cAAc,CAAA,GAAI,OAAgB,CAAA,GAAa;AAClF,YAAM,SAAkB,CAAC;AACzB,YAAM,EAAE,UAAU,CAAC,EAAA,IAAM;AAEzB,iBAAW,OAAO,QAAQ;AACxB,YAAI,OAAO,eAAe,KAAK,QAAQ,GAAG,GAAG;AACrC,gBAAA,OAAO,OAAO,GAAG;AAEnB,cAAA,QAAQ,SAAS,GAAG,GAAG;AACzB,mBAAO,GAAG,IAAI;AAAA,UAAA,WACL,OAAO,SAAS,YAAY;AACrC,kBAAM,YAAY,OAAO,SAAc,OAAO;AAC5C,oBAAM,MAAM;AAAA,gBACV,GAAG;AAAA,gBACH,QAAQ;AAAA,gBACR;AAAA,cACF;AAEA,qBAAO,QAAQ,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC;AAAA,YAChD;AAEA,mBAAO,GAAG,IAAI;AAAA,UAAA,OACT;AACL,mBAAO,GAAG,IAAI;AAAA,UAAA;AAAA,QAChB;AAAA,MACF;AAGK,aAAA;AAAA,IAAA;AAAA,EAEX;AAEO,SAAA;AACT;"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const _ = require("lodash/fp");
3
+ const fp = require("lodash/fp");
4
4
  const pickSelectionParams = (data) => {
5
- return _.pick(["fields", "populate", "status"], data);
5
+ return fp.pick(["fields", "populate", "status"], data);
6
6
  };
7
7
  exports.pickSelectionParams = pickSelectionParams;
8
8
  //# sourceMappingURL=params.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"params.js","sources":["../../../src/services/document-service/params.ts"],"sourcesContent":["import { pick } from 'lodash/fp';\nimport type { UID, Modules } from '@strapi/types';\n\nconst pickSelectionParams = <TUID extends UID.ContentType>(\n data: unknown\n): Modules.Documents.Params.Pick<TUID, 'fields' | 'populate' | 'status'> => {\n return pick(['fields', 'populate', 'status'], data);\n};\n\nexport { pickSelectionParams };\n"],"names":["pick"],"mappings":";;;AAGM,MAAA,sBAAsB,CAC1B,SAC0E;AAC1E,SAAOA,EAAAA,KAAK,CAAC,UAAU,YAAY,QAAQ,GAAG,IAAI;AACpD;;"}
1
+ {"version":3,"file":"params.js","sources":["../../../src/services/document-service/params.ts"],"sourcesContent":["import { pick } from 'lodash/fp';\nimport type { UID, Modules } from '@strapi/types';\n\nconst pickSelectionParams = <TUID extends UID.ContentType>(\n data: unknown\n): Modules.Documents.Params.Pick<TUID, 'fields' | 'populate' | 'status'> => {\n return pick(['fields', 'populate', 'status'], data);\n};\n\nexport { pickSelectionParams };\n"],"names":["pick"],"mappings":";;;AAGM,MAAA,sBAAsB,CAC1B,SAC0E;AAC1E,SAAOA,GAAAA,KAAK,CAAC,UAAU,YAAY,QAAQ,GAAG,IAAI;AACpD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/repository.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,KAAK,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAY3E,eAAO,MAAM,2BAA2B,EAAE,uBA4SzC,CAAC"}
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/repository.ts"],"names":[],"mappings":"AAKA,OAAO,EAAqB,KAAK,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAoB3E,eAAO,MAAM,2BAA2B,EAAE,uBA+YzC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const _ = require("lodash/fp");
3
+ const fp = require("lodash/fp");
4
4
  const strapiUtils = require("@strapi/utils");
5
5
  const common = require("./common.js");
6
6
  const draftAndPublish = require("./draft-and-publish.js");
@@ -12,16 +12,44 @@ const transformContentTypesToModels = require("../../utils/transform-content-typ
12
12
  const populate = require("./utils/populate.js");
13
13
  const query = require("./transform/query.js");
14
14
  const idTransform = require("./transform/id-transform.js");
15
- const createContentTypeRepository = (uid) => {
15
+ const events = require("./events.js");
16
+ const unidirectionalRelations = require("./utils/unidirectional-relations.js");
17
+ const index = require("../entity-validator/index.js");
18
+ const { validators } = strapiUtils.validate;
19
+ const getModel = (schema) => strapi.getModel(schema);
20
+ const createContentTypeRepository = (uid, validator = index) => {
16
21
  const contentType = strapi.contentType(uid);
17
22
  const hasDraftAndPublish = strapiUtils.contentTypes.hasDraftAndPublish(contentType);
18
- const entries$1 = entries.createEntriesService(uid);
23
+ const sortValidations = ["nonAttributesOperators", "dynamicZones", "morphRelations"];
24
+ const fieldValidations = ["scalarAttributes"];
25
+ const filtersValidations = ["nonAttributesOperators", "dynamicZones", "morphRelations"];
26
+ const populateValidations = {
27
+ sort: sortValidations,
28
+ field: fieldValidations,
29
+ filters: filtersValidations,
30
+ populate: ["nonAttributesOperators"]
31
+ };
32
+ const validateParams = async (params2) => {
33
+ const ctx = { schema: contentType, getModel };
34
+ await validators.validateFilters(ctx, params2.filters, filtersValidations);
35
+ await validators.validateSort(ctx, params2.sort, sortValidations);
36
+ await validators.validateFields(ctx, params2.fields, fieldValidations);
37
+ await validators.validatePopulate(ctx, params2.populate, populateValidations);
38
+ if (params2.lookup) {
39
+ throw new strapiUtils.errors.ValidationError("Invalid params: 'lookup'");
40
+ }
41
+ return params2;
42
+ };
43
+ const entries$1 = entries.createEntriesService(uid, validator);
44
+ const eventManager = events.createEventManager(strapi, uid);
45
+ const emitEvent = fp.curry(eventManager.emitEvent);
19
46
  async function findMany(params2 = {}) {
20
47
  const query$1 = await strapiUtils.async.pipe(
48
+ validateParams,
21
49
  draftAndPublish.defaultToDraft,
22
50
  draftAndPublish.statusToLookup(contentType),
23
51
  internationalization.defaultLocale(contentType),
24
- internationalization.localeToLookup(contentType),
52
+ internationalization.multiLocaleToLookup(contentType),
25
53
  idTransform.transformParamsDocumentId(uid),
26
54
  query.transformParamsToQuery(uid)
27
55
  )(params2 || {});
@@ -29,6 +57,7 @@ const createContentTypeRepository = (uid) => {
29
57
  }
30
58
  async function findFirst(params2 = {}) {
31
59
  const query$1 = await strapiUtils.async.pipe(
60
+ validateParams,
32
61
  draftAndPublish.defaultToDraft,
33
62
  draftAndPublish.statusToLookup(contentType),
34
63
  internationalization.defaultLocale(contentType),
@@ -41,35 +70,42 @@ const createContentTypeRepository = (uid) => {
41
70
  async function findOne(opts = {}) {
42
71
  const { documentId, ...params2 } = opts;
43
72
  const query$1 = await strapiUtils.async.pipe(
73
+ validateParams,
44
74
  draftAndPublish.defaultToDraft,
45
75
  draftAndPublish.statusToLookup(contentType),
46
76
  internationalization.defaultLocale(contentType),
47
77
  internationalization.localeToLookup(contentType),
48
78
  idTransform.transformParamsDocumentId(uid),
49
79
  query.transformParamsToQuery(uid),
50
- (query2) => _.assoc("where", { ...query2.where, documentId }, query2)
80
+ (query2) => fp.assoc("where", { ...query2.where, documentId }, query2)
51
81
  )(params2);
52
82
  return strapi.db.query(uid).findOne(query$1);
53
83
  }
54
84
  async function deleteDocument(opts = {}) {
55
85
  const { documentId, ...params2 } = opts;
56
86
  const query$1 = await strapiUtils.async.pipe(
57
- _.omit("status"),
87
+ validateParams,
88
+ fp.omit("status"),
58
89
  internationalization.defaultLocale(contentType),
59
90
  internationalization.multiLocaleToLookup(contentType),
60
91
  query.transformParamsToQuery(uid),
61
- (query2) => _.assoc("where", { ...query2.where, documentId }, query2)
92
+ (query2) => fp.assoc("where", { ...query2.where, documentId }, query2)
62
93
  )(params2);
63
94
  if (params2.status === "draft") {
64
95
  throw new Error("Cannot delete a draft document");
65
96
  }
66
97
  const entriesToDelete = await strapi.db.query(uid).findMany(query$1);
67
- await strapiUtils.async.map(entriesToDelete, (entryToDelete) => entries$1.delete(entryToDelete.id));
68
- return { deletedEntries: entriesToDelete };
98
+ const deletedEntries = await strapiUtils.async.map(
99
+ entriesToDelete,
100
+ (entryToDelete) => entries$1.delete(entryToDelete.id)
101
+ );
102
+ entriesToDelete.forEach(emitEvent("entry.delete"));
103
+ return { documentId, entries: deletedEntries };
69
104
  }
70
105
  async function create(opts = {}) {
71
106
  const { documentId, ...params2 } = opts;
72
107
  const queryParams = await strapiUtils.async.pipe(
108
+ validateParams,
73
109
  draftAndPublish.filterDataPublishedAt,
74
110
  draftAndPublish.setStatusToDraft(contentType),
75
111
  draftAndPublish.statusToData(contentType),
@@ -77,22 +113,24 @@ const createContentTypeRepository = (uid) => {
77
113
  internationalization.localeToData(contentType)
78
114
  )(params2);
79
115
  const doc = await entries$1.create(queryParams);
116
+ emitEvent("entry.create", doc);
80
117
  if (hasDraftAndPublish && params2.status === "published") {
81
118
  return publish({
82
119
  ...params2,
83
120
  documentId: doc.documentId
84
- }).then((doc2) => doc2.versions[0]);
121
+ }).then((doc2) => doc2.entries[0]);
85
122
  }
86
123
  return doc;
87
124
  }
88
125
  async function clone(opts = {}) {
89
126
  const { documentId, ...params2 } = opts;
90
127
  const queryParams = await strapiUtils.async.pipe(
128
+ validateParams,
91
129
  draftAndPublish.filterDataPublishedAt,
92
130
  internationalization.defaultLocale(contentType),
93
131
  internationalization.multiLocaleToLookup(contentType)
94
132
  )(params2);
95
- const entriesToClone = await strapi.db?.query(uid).findMany({
133
+ const entriesToClone = await strapi.db.query(uid).findMany({
96
134
  where: {
97
135
  ...queryParams?.lookup,
98
136
  documentId,
@@ -105,19 +143,22 @@ const createContentTypeRepository = (uid) => {
105
143
  const clonedEntries = await strapiUtils.async.map(
106
144
  entriesToClone,
107
145
  strapiUtils.async.pipe(
108
- _.omit("id"),
146
+ validateParams,
147
+ fp.omit(["id", "createdAt", "updatedAt"]),
109
148
  // assign new documentId
110
- _.assoc("documentId", transformContentTypesToModels.createDocumentId()),
149
+ fp.assoc("documentId", transformContentTypesToModels.createDocumentId()),
111
150
  // Merge new data into it
112
- (data) => _.merge(data, queryParams.data),
151
+ (data) => fp.merge(data, queryParams.data),
113
152
  (data) => entries$1.create({ ...queryParams, data, status: "draft" })
114
153
  )
115
154
  );
116
- return { documentId: clonedEntries.at(0)?.documentId, versions: clonedEntries };
155
+ clonedEntries.forEach(emitEvent("entry.create"));
156
+ return { documentId: clonedEntries.at(0)?.documentId, entries: clonedEntries };
117
157
  }
118
158
  async function update(opts = {}) {
119
159
  const { documentId, ...params$1 } = opts;
120
160
  const queryParams = await strapiUtils.async.pipe(
161
+ validateParams,
121
162
  draftAndPublish.filterDataPublishedAt,
122
163
  draftAndPublish.setStatusToDraft(contentType),
123
164
  draftAndPublish.statusToLookup(contentType),
@@ -133,6 +174,7 @@ const createContentTypeRepository = (uid) => {
133
174
  let updatedDraft = null;
134
175
  if (entryToUpdate) {
135
176
  updatedDraft = await entries$1.update(entryToUpdate, queryParams);
177
+ emitEvent("entry.update", updatedDraft);
136
178
  }
137
179
  if (!updatedDraft) {
138
180
  const documentExists = await strapi.db.query(contentType.uid).findOne({ where: { documentId } });
@@ -141,18 +183,20 @@ const createContentTypeRepository = (uid) => {
141
183
  ...queryParams,
142
184
  data: { ...queryParams.data, documentId }
143
185
  });
186
+ emitEvent("entry.create", updatedDraft);
144
187
  }
145
188
  }
146
189
  if (hasDraftAndPublish && updatedDraft && params$1.status === "published") {
147
190
  return publish({
148
191
  ...params$1,
149
192
  documentId
150
- }).then((doc) => doc.versions[0]);
193
+ }).then((doc) => doc.entries[0]);
151
194
  }
152
195
  return updatedDraft;
153
196
  }
154
197
  async function count(params2 = {}) {
155
198
  const query$1 = await strapiUtils.async.pipe(
199
+ validateParams,
156
200
  draftAndPublish.defaultStatus(contentType),
157
201
  draftAndPublish.statusToLookup(contentType),
158
202
  internationalization.defaultLocale(contentType),
@@ -164,65 +208,103 @@ const createContentTypeRepository = (uid) => {
164
208
  async function publish(opts = {}) {
165
209
  const { documentId, ...params2 } = opts;
166
210
  const queryParams = await strapiUtils.async.pipe(
211
+ validateParams,
167
212
  internationalization.defaultLocale(contentType),
168
213
  internationalization.multiLocaleToLookup(contentType)
169
214
  )(params2);
170
- await deleteDocument({
171
- ...queryParams,
172
- documentId,
173
- lookup: { ...queryParams?.lookup, publishedAt: { $ne: null } }
215
+ const [draftsToPublish, oldPublishedVersions] = await Promise.all([
216
+ strapi.db.query(uid).findMany({
217
+ where: {
218
+ ...queryParams?.lookup,
219
+ documentId,
220
+ publishedAt: null
221
+ // Ignore lookup
222
+ },
223
+ // Populate relations, media, compos and dz
224
+ populate: populate.getDeepPopulate(uid, { relationalFields: ["documentId", "locale"] })
225
+ }),
226
+ strapi.db.query(uid).findMany({
227
+ where: {
228
+ ...queryParams?.lookup,
229
+ documentId,
230
+ publishedAt: { $ne: null }
231
+ },
232
+ select: ["id", "locale"]
233
+ })
234
+ ]);
235
+ const relationsToSync = await unidirectionalRelations.load(uid, {
236
+ newVersions: draftsToPublish,
237
+ oldVersions: oldPublishedVersions
174
238
  });
175
- const draftsToPublish = await strapi.db?.query(uid).findMany({
176
- where: {
177
- ...queryParams?.lookup,
178
- documentId,
179
- publishedAt: null
180
- },
181
- populate: populate.getDeepPopulate(uid, { relationalFields: ["documentId", "locale"] })
182
- });
183
- const versions = await strapiUtils.async.map(
239
+ await strapiUtils.async.map(oldPublishedVersions, (entry) => entries$1.delete(entry.id));
240
+ const publishedEntries = await strapiUtils.async.map(
184
241
  draftsToPublish,
185
242
  (draft) => entries$1.publish(draft, queryParams)
186
243
  );
187
- return { versions };
244
+ await unidirectionalRelations.sync(
245
+ [...oldPublishedVersions, ...draftsToPublish],
246
+ publishedEntries,
247
+ relationsToSync
248
+ );
249
+ publishedEntries.forEach(emitEvent("entry.publish"));
250
+ return { documentId, entries: publishedEntries };
188
251
  }
189
252
  async function unpublish(opts = {}) {
190
253
  const { documentId, ...params2 } = opts;
191
- const queryParams = await strapiUtils.async.pipe(
254
+ const query$1 = await strapiUtils.async.pipe(
255
+ validateParams,
192
256
  internationalization.defaultLocale(contentType),
193
- internationalization.multiLocaleToLookup(contentType)
257
+ internationalization.multiLocaleToLookup(contentType),
258
+ query.transformParamsToQuery(uid),
259
+ (query2) => fp.assoc("where", { ...query2.where, documentId, publishedAt: { $ne: null } }, query2)
194
260
  )(params2);
195
- const { deletedEntries } = await deleteDocument({
196
- ...params2,
197
- documentId,
198
- lookup: { ...queryParams?.lookup, publishedAt: { $ne: null } }
199
- });
200
- return { versions: deletedEntries };
261
+ const versionsToDelete = await strapi.db.query(uid).findMany(query$1);
262
+ await strapiUtils.async.map(versionsToDelete, (entry) => entries$1.delete(entry.id));
263
+ versionsToDelete.forEach(emitEvent("entry.unpublish"));
264
+ return { documentId, entries: versionsToDelete };
201
265
  }
202
266
  async function discardDraft(opts = {}) {
203
267
  const { documentId, ...params2 } = opts;
204
268
  const queryParams = await strapiUtils.async.pipe(
269
+ validateParams,
205
270
  internationalization.defaultLocale(contentType),
206
271
  internationalization.multiLocaleToLookup(contentType)
207
272
  )(params2);
208
- await deleteDocument({
209
- ...queryParams,
210
- documentId,
211
- lookup: { ...queryParams?.lookup, publishedAt: null }
212
- });
213
- const entriesToDraft = await strapi.db?.query(uid).findMany({
214
- where: {
215
- ...queryParams?.lookup,
216
- documentId,
217
- publishedAt: { $ne: null }
218
- },
219
- populate: populate.getDeepPopulate(uid, { relationalFields: ["documentId", "locale"] })
273
+ const [versionsToDraft, oldDrafts] = await Promise.all([
274
+ strapi.db.query(uid).findMany({
275
+ where: {
276
+ ...queryParams?.lookup,
277
+ documentId,
278
+ publishedAt: { $ne: null }
279
+ },
280
+ // Populate relations, media, compos and dz
281
+ populate: populate.getDeepPopulate(uid, { relationalFields: ["documentId", "locale"] })
282
+ }),
283
+ strapi.db.query(uid).findMany({
284
+ where: {
285
+ ...queryParams?.lookup,
286
+ documentId,
287
+ publishedAt: null
288
+ },
289
+ select: ["id", "locale"]
290
+ })
291
+ ]);
292
+ const relationsToSync = await unidirectionalRelations.load(uid, {
293
+ newVersions: versionsToDraft,
294
+ oldVersions: oldDrafts
220
295
  });
296
+ await strapiUtils.async.map(oldDrafts, (entry) => entries$1.delete(entry.id));
221
297
  const draftEntries = await strapiUtils.async.map(
222
- entriesToDraft,
298
+ versionsToDraft,
223
299
  (entry) => entries$1.discardDraft(entry, queryParams)
224
300
  );
225
- return { versions: draftEntries };
301
+ await unidirectionalRelations.sync(
302
+ [...oldDrafts, ...versionsToDraft],
303
+ draftEntries,
304
+ relationsToSync
305
+ );
306
+ draftEntries.forEach(emitEvent("entry.draft-discard"));
307
+ return { documentId, entries: draftEntries };
226
308
  }
227
309
  async function updateComponents(entry, data) {
228
310
  return components.updateComponents(uid, entry, data);
@@ -1 +1 @@
1
- {"version":3,"file":"repository.js","sources":["../../../src/services/document-service/repository.ts"],"sourcesContent":["import { omit, assoc, merge } from 'lodash/fp';\n\nimport { async, contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport { wrapInTransaction, type RepositoryFactoryMethod } from './common';\nimport * as DP from './draft-and-publish';\nimport * as i18n from './internationalization';\nimport * as components from './components';\n\nimport { createEntriesService } from './entries';\nimport { pickSelectionParams } from './params';\nimport { createDocumentId } from '../../utils/transform-content-types-to-models';\nimport { getDeepPopulate } from './utils/populate';\nimport { transformParamsToQuery } from './transform/query';\nimport { transformParamsDocumentId } from './transform/id-transform';\n\nexport const createContentTypeRepository: RepositoryFactoryMethod = (uid) => {\n const contentType = strapi.contentType(uid);\n const hasDraftAndPublish = contentTypesUtils.hasDraftAndPublish(contentType);\n\n const entries = createEntriesService(uid);\n\n async function findMany(params = {} as any) {\n const query = await async.pipe(\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params || {});\n\n return strapi.db.query(uid).findMany(query);\n }\n\n async function findFirst(params = {} as any) {\n const query = await async.pipe(\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n // TODO: do we really want to add filters on the findOne now that we have findFirst ?\n async function findOne(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n async function deleteDocument(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n omit('status'),\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n if (params.status === 'draft') {\n throw new Error('Cannot delete a draft document');\n }\n\n const entriesToDelete = await strapi.db.query(uid).findMany(query);\n\n // Delete all matched entries and its components\n await async.map(entriesToDelete, (entryToDelete: any) => entries.delete(entryToDelete.id));\n\n return { deletedEntries: entriesToDelete };\n }\n\n async function create(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToData(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const doc = await entries.create(queryParams);\n\n if (hasDraftAndPublish && params.status === 'published') {\n return publish({\n ...params,\n documentId: doc.documentId,\n }).then((doc) => doc.versions[0]);\n }\n\n return doc;\n }\n\n async function clone(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n DP.filterDataPublishedAt,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n // Get deep populate\n const entriesToClone = await strapi.db?.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n // DP Enabled: Clone drafts\n // DP Disabled: Clone only the existing version (published)\n publishedAt: { $null: hasDraftAndPublish },\n },\n populate: getDeepPopulate(uid, { relationalFields: ['id'] }),\n });\n\n const clonedEntries = await async.map(\n entriesToClone,\n async.pipe(\n omit('id'),\n // assign new documentId\n assoc('documentId', createDocumentId()),\n // Merge new data into it\n (data) => merge(data, queryParams.data),\n (data) => entries.create({ ...queryParams, data, status: 'draft' })\n )\n );\n\n return { documentId: clonedEntries.at(0)?.documentId, versions: clonedEntries };\n }\n\n async function update(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToLookup(contentType),\n DP.statusToData(contentType),\n // Default locale will be set if not provided\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const { data, ...restParams } = await transformParamsDocumentId(uid, queryParams || {});\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams || {}) as any);\n\n // Validation\n // Find if document exists\n const entryToUpdate = await strapi.db\n .query(uid)\n .findOne({ ...query, where: { ...queryParams?.lookup, ...query?.where, documentId } });\n\n let updatedDraft = null;\n if (entryToUpdate) {\n updatedDraft = await entries.update(entryToUpdate, queryParams);\n }\n\n if (!updatedDraft) {\n const documentExists = await strapi.db\n .query(contentType.uid)\n .findOne({ where: { documentId } });\n\n if (documentExists) {\n updatedDraft = await entries.create({\n ...queryParams,\n data: { ...queryParams.data, documentId },\n });\n }\n }\n\n if (hasDraftAndPublish && updatedDraft && params.status === 'published') {\n return publish({\n ...params,\n documentId,\n }).then((doc) => doc.versions[0]);\n }\n\n return updatedDraft;\n }\n\n async function count(params = {} as any) {\n const query = await async.pipe(\n DP.defaultStatus(contentType),\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).count(query);\n }\n\n async function publish(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n await deleteDocument({\n ...queryParams,\n documentId,\n lookup: { ...queryParams?.lookup, publishedAt: { $ne: null } },\n });\n\n // Get deep populate\n const draftsToPublish = await strapi.db?.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null,\n },\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n });\n\n // Transform draft entry data and create published versions\n const versions = await async.map(draftsToPublish, (draft: unknown) =>\n entries.publish(draft, queryParams)\n );\n\n return { versions };\n }\n\n async function unpublish(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const { deletedEntries } = await deleteDocument({\n ...params,\n documentId,\n lookup: { ...queryParams?.lookup, publishedAt: { $ne: null } },\n });\n\n return { versions: deletedEntries };\n }\n\n async function discardDraft(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n // Delete all drafts that match query\n await deleteDocument({\n ...queryParams,\n documentId,\n lookup: { ...queryParams?.lookup, publishedAt: null },\n });\n\n // Get deep populate of published versions\n const entriesToDraft = await strapi.db?.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n });\n\n // Transform published entry data and create draft versions\n const draftEntries = await async.map(entriesToDraft, (entry: any) =>\n entries.discardDraft(entry, queryParams)\n );\n\n return { versions: draftEntries };\n }\n\n async function updateComponents(entry: any, data: any) {\n return components.updateComponents(uid, entry, data);\n }\n\n function omitComponentData(data: any) {\n return components.omitComponentData(contentType, data);\n }\n\n return {\n findMany: wrapInTransaction(findMany),\n findFirst: wrapInTransaction(findFirst),\n findOne: wrapInTransaction(findOne),\n delete: wrapInTransaction(deleteDocument),\n create: wrapInTransaction(create),\n clone: wrapInTransaction(clone),\n update: wrapInTransaction(update),\n count: wrapInTransaction(count),\n publish: hasDraftAndPublish ? wrapInTransaction(publish) : (undefined as any),\n unpublish: hasDraftAndPublish ? wrapInTransaction(unpublish) : (undefined as any),\n discardDraft: hasDraftAndPublish ? wrapInTransaction(discardDraft) : (undefined as any),\n\n updateComponents,\n omitComponentData,\n };\n};\n"],"names":["contentTypesUtils","entries","createEntriesService","params","query","async","DP.defaultToDraft","DP.statusToLookup","i18n.defaultLocale","i18n.localeToLookup","transformParamsDocumentId","transformParamsToQuery","assoc","omit","i18n.multiLocaleToLookup","DP.filterDataPublishedAt","DP.setStatusToDraft","DP.statusToData","i18n.localeToData","doc","getDeepPopulate","createDocumentId","merge","pickSelectionParams","DP.defaultStatus","components.updateComponents","components.omitComponentData","wrapInTransaction"],"mappings":"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"}
1
+ {"version":3,"file":"repository.js","sources":["../../../src/services/document-service/repository.ts"],"sourcesContent":["import { omit, assoc, merge, curry } from 'lodash/fp';\n\nimport { async, contentTypes as contentTypesUtils, validate, errors } from '@strapi/utils';\n\nimport { UID } from '@strapi/types';\nimport { wrapInTransaction, type RepositoryFactoryMethod } from './common';\nimport * as DP from './draft-and-publish';\nimport * as i18n from './internationalization';\nimport * as components from './components';\n\nimport { createEntriesService } from './entries';\nimport { pickSelectionParams } from './params';\nimport { createDocumentId } from '../../utils/transform-content-types-to-models';\nimport { getDeepPopulate } from './utils/populate';\nimport { transformParamsToQuery } from './transform/query';\nimport { transformParamsDocumentId } from './transform/id-transform';\nimport { createEventManager } from './events';\nimport * as unidirectionalRelations from './utils/unidirectional-relations';\nimport entityValidator from '../entity-validator';\n\nconst { validators } = validate;\n\n// we have to typecast to reconcile the differences between validator and database getModel\nconst getModel = ((schema: UID.Schema) => strapi.getModel(schema)) as (schema: string) => any;\n\nexport const createContentTypeRepository: RepositoryFactoryMethod = (\n uid,\n validator = entityValidator\n) => {\n const contentType = strapi.contentType(uid);\n const hasDraftAndPublish = contentTypesUtils.hasDraftAndPublish(contentType);\n\n // Define the validations that should be performed\n const sortValidations = ['nonAttributesOperators', 'dynamicZones', 'morphRelations'];\n const fieldValidations = ['scalarAttributes'];\n const filtersValidations = ['nonAttributesOperators', 'dynamicZones', 'morphRelations'];\n const populateValidations = {\n sort: sortValidations,\n field: fieldValidations,\n filters: filtersValidations,\n populate: ['nonAttributesOperators'],\n };\n\n const validateParams = async (params: any) => {\n const ctx = { schema: contentType, getModel };\n await validators.validateFilters(ctx, params.filters, filtersValidations);\n await validators.validateSort(ctx, params.sort, sortValidations);\n await validators.validateFields(ctx, params.fields, fieldValidations);\n await validators.validatePopulate(ctx, params.populate, populateValidations);\n\n // Strip lookup from params, it's only used internally\n if (params.lookup) {\n throw new errors.ValidationError(\"Invalid params: 'lookup'\");\n }\n\n // TODO: add validate status, locale, pagination\n\n return params;\n };\n\n const entries = createEntriesService(uid, validator);\n\n const eventManager = createEventManager(strapi, uid);\n const emitEvent = curry(eventManager.emitEvent);\n\n async function findMany(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params || {});\n\n return strapi.db.query(uid).findMany(query);\n }\n\n async function findFirst(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n // TODO: do we really want to add filters on the findOne now that we have findFirst ?\n async function findOne(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n async function deleteDocument(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n omit('status'),\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n if (params.status === 'draft') {\n throw new Error('Cannot delete a draft document');\n }\n\n const entriesToDelete = await strapi.db.query(uid).findMany(query);\n\n // Delete all matched entries and its components\n const deletedEntries = await async.map(entriesToDelete, (entryToDelete: any) =>\n entries.delete(entryToDelete.id)\n );\n\n entriesToDelete.forEach(emitEvent('entry.delete'));\n\n return { documentId, entries: deletedEntries };\n }\n\n async function create(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToData(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const doc = await entries.create(queryParams);\n\n emitEvent('entry.create', doc);\n\n if (hasDraftAndPublish && params.status === 'published') {\n return publish({\n ...params,\n documentId: doc.documentId,\n }).then((doc) => doc.entries[0]);\n }\n\n return doc;\n }\n\n async function clone(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n // Get deep populate\n const entriesToClone = await strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n // DP Enabled: Clone drafts\n // DP Disabled: Clone only the existing version (published)\n publishedAt: { $null: hasDraftAndPublish },\n },\n populate: getDeepPopulate(uid, { relationalFields: ['id'] }),\n });\n\n const clonedEntries = await async.map(\n entriesToClone,\n async.pipe(\n validateParams,\n omit(['id', 'createdAt', 'updatedAt']),\n // assign new documentId\n assoc('documentId', createDocumentId()),\n // Merge new data into it\n (data) => merge(data, queryParams.data),\n (data) => entries.create({ ...queryParams, data, status: 'draft' })\n )\n );\n\n clonedEntries.forEach(emitEvent('entry.create'));\n\n return { documentId: clonedEntries.at(0)?.documentId, entries: clonedEntries };\n }\n\n async function update(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToLookup(contentType),\n DP.statusToData(contentType),\n // Default locale will be set if not provided\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const { data, ...restParams } = await transformParamsDocumentId(uid, queryParams || {});\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams || {}) as any);\n\n // Validation\n // Find if document exists\n const entryToUpdate = await strapi.db\n .query(uid)\n .findOne({ ...query, where: { ...queryParams?.lookup, ...query?.where, documentId } });\n\n let updatedDraft = null;\n if (entryToUpdate) {\n updatedDraft = await entries.update(entryToUpdate, queryParams);\n emitEvent('entry.update', updatedDraft);\n }\n\n if (!updatedDraft) {\n const documentExists = await strapi.db\n .query(contentType.uid)\n .findOne({ where: { documentId } });\n\n if (documentExists) {\n updatedDraft = await entries.create({\n ...queryParams,\n data: { ...queryParams.data, documentId },\n });\n emitEvent('entry.create', updatedDraft);\n }\n }\n\n if (hasDraftAndPublish && updatedDraft && params.status === 'published') {\n return publish({\n ...params,\n documentId,\n }).then((doc) => doc.entries[0]);\n }\n\n return updatedDraft;\n }\n\n async function count(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultStatus(contentType),\n DP.statusToLookup(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).count(query);\n }\n\n async function publish(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const [draftsToPublish, oldPublishedVersions] = await Promise.all([\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null, // Ignore lookup\n },\n // Populate relations, media, compos and dz\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n }),\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n select: ['id', 'locale'],\n }),\n ]);\n\n // Load any unidirectional relation targetting the old published entries\n const relationsToSync = await unidirectionalRelations.load(uid, {\n newVersions: draftsToPublish,\n oldVersions: oldPublishedVersions,\n });\n\n // Delete old published versions\n await async.map(oldPublishedVersions, (entry: any) => entries.delete(entry.id));\n\n // Transform draft entry data and create published versions\n const publishedEntries = await async.map(draftsToPublish, (draft: any) =>\n entries.publish(draft, queryParams)\n );\n\n // Sync unidirectional relations with the new published entries\n await unidirectionalRelations.sync(\n [...oldPublishedVersions, ...draftsToPublish],\n publishedEntries,\n relationsToSync\n );\n\n publishedEntries.forEach(emitEvent('entry.publish'));\n\n return { documentId, entries: publishedEntries };\n }\n\n async function unpublish(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId, publishedAt: { $ne: null } }, query)\n )(params);\n\n // Delete all published versions\n const versionsToDelete = await strapi.db.query(uid).findMany(query);\n await async.map(versionsToDelete, (entry: any) => entries.delete(entry.id));\n\n versionsToDelete.forEach(emitEvent('entry.unpublish'));\n return { documentId, entries: versionsToDelete };\n }\n\n async function discardDraft(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const [versionsToDraft, oldDrafts] = await Promise.all([\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n // Populate relations, media, compos and dz\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n }),\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null,\n },\n select: ['id', 'locale'],\n }),\n ]);\n\n // Load any unidirectional relation targeting the old drafts\n const relationsToSync = await unidirectionalRelations.load(uid, {\n newVersions: versionsToDraft,\n oldVersions: oldDrafts,\n });\n\n // Delete old drafts\n await async.map(oldDrafts, (entry: any) => entries.delete(entry.id));\n\n // Transform published entry data and create draft versions\n const draftEntries = await async.map(versionsToDraft, (entry: any) =>\n entries.discardDraft(entry, queryParams)\n );\n\n // Sync unidirectional relations with the new draft entries\n await unidirectionalRelations.sync(\n [...oldDrafts, ...versionsToDraft],\n draftEntries,\n relationsToSync\n );\n\n draftEntries.forEach(emitEvent('entry.draft-discard'));\n return { documentId, entries: draftEntries };\n }\n\n async function updateComponents(entry: any, data: any) {\n return components.updateComponents(uid, entry, data);\n }\n\n function omitComponentData(data: any) {\n return components.omitComponentData(contentType, data);\n }\n\n return {\n findMany: wrapInTransaction(findMany),\n findFirst: wrapInTransaction(findFirst),\n findOne: wrapInTransaction(findOne),\n delete: wrapInTransaction(deleteDocument),\n create: wrapInTransaction(create),\n clone: wrapInTransaction(clone),\n update: wrapInTransaction(update),\n count: wrapInTransaction(count),\n publish: hasDraftAndPublish ? wrapInTransaction(publish) : (undefined as any),\n unpublish: hasDraftAndPublish ? wrapInTransaction(unpublish) : (undefined as any),\n discardDraft: hasDraftAndPublish ? wrapInTransaction(discardDraft) : (undefined as any),\n\n updateComponents,\n omitComponentData,\n };\n};\n"],"names":["validate","entityValidator","contentTypesUtils","params","errors","entries","createEntriesService","createEventManager","curry","query","async","DP.defaultToDraft","DP.statusToLookup","i18n.defaultLocale","i18n.multiLocaleToLookup","transformParamsDocumentId","transformParamsToQuery","i18n.localeToLookup","assoc","omit","DP.filterDataPublishedAt","DP.setStatusToDraft","DP.statusToData","i18n.localeToData","doc","getDeepPopulate","createDocumentId","merge","pickSelectionParams","DP.defaultStatus","unidirectionalRelations.load","unidirectionalRelations.sync","components.updateComponents","components.omitComponentData","wrapInTransaction"],"mappings":"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"}