@strapi/core 0.0.0-experimental.556c80cf59c65b80db3d417f1609cebd8f342cff → 0.0.0-experimental.5691f94a497e119f564a7f60ce0830bf4c875eb9

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 (278) 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 +59 -15
  5. package/dist/Strapi.js.map +1 -1
  6. package/dist/Strapi.mjs +38 -13
  7. package/dist/Strapi.mjs.map +1 -1
  8. package/dist/configuration/get-dirs.js +2 -2
  9. package/dist/configuration/get-dirs.js.map +1 -1
  10. package/dist/configuration/index.js +2 -2
  11. package/dist/configuration/index.js.map +1 -1
  12. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  13. package/dist/core-api/controller/collection-type.js +5 -3
  14. package/dist/core-api/controller/collection-type.js.map +1 -1
  15. package/dist/core-api/controller/collection-type.mjs +2 -0
  16. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  17. package/dist/core-api/controller/index.js +2 -2
  18. package/dist/core-api/controller/index.js.map +1 -1
  19. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  20. package/dist/core-api/controller/single-type.js +3 -2
  21. package/dist/core-api/controller/single-type.js.map +1 -1
  22. package/dist/core-api/controller/single-type.mjs +1 -0
  23. package/dist/core-api/controller/single-type.mjs.map +1 -1
  24. package/dist/core-api/controller/transform.js +8 -8
  25. package/dist/core-api/controller/transform.js.map +1 -1
  26. package/dist/core-api/service/collection-type.d.ts +1 -7
  27. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  28. package/dist/core-api/service/collection-type.js +5 -3
  29. package/dist/core-api/service/collection-type.js.map +1 -1
  30. package/dist/core-api/service/collection-type.mjs +6 -4
  31. package/dist/core-api/service/collection-type.mjs.map +1 -1
  32. package/dist/core-api/service/pagination.d.ts +4 -11
  33. package/dist/core-api/service/pagination.d.ts.map +1 -1
  34. package/dist/core-api/service/pagination.js +18 -44
  35. package/dist/core-api/service/pagination.js.map +1 -1
  36. package/dist/core-api/service/pagination.mjs +16 -42
  37. package/dist/core-api/service/pagination.mjs.map +1 -1
  38. package/dist/core-api/service/single-type.d.ts.map +1 -1
  39. package/dist/core-api/service/single-type.js +2 -1
  40. package/dist/core-api/service/single-type.js.map +1 -1
  41. package/dist/core-api/service/single-type.mjs +2 -1
  42. package/dist/core-api/service/single-type.mjs.map +1 -1
  43. package/dist/domain/content-type/index.js +4 -4
  44. package/dist/domain/content-type/index.js.map +1 -1
  45. package/dist/ee/index.js +3 -3
  46. package/dist/ee/index.js.map +1 -1
  47. package/dist/factories.js +4 -4
  48. package/dist/factories.js.map +1 -1
  49. package/dist/index.d.ts +14 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/index.mjs.map +1 -1
  53. package/dist/loaders/apis.d.ts.map +1 -1
  54. package/dist/loaders/apis.js +12 -12
  55. package/dist/loaders/apis.js.map +1 -1
  56. package/dist/loaders/apis.mjs +10 -10
  57. package/dist/loaders/apis.mjs.map +1 -1
  58. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  59. package/dist/loaders/plugins/get-enabled-plugins.js +39 -14
  60. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  61. package/dist/loaders/plugins/get-enabled-plugins.mjs +9 -6
  62. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  63. package/dist/loaders/plugins/get-user-plugins-config.js +2 -2
  64. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  65. package/dist/loaders/plugins/index.js +6 -6
  66. package/dist/loaders/plugins/index.js.map +1 -1
  67. package/dist/middlewares/body.js +2 -2
  68. package/dist/middlewares/body.js.map +1 -1
  69. package/dist/middlewares/cors.d.ts.map +1 -1
  70. package/dist/middlewares/cors.js +9 -7
  71. package/dist/middlewares/cors.js.map +1 -1
  72. package/dist/middlewares/cors.mjs +9 -7
  73. package/dist/middlewares/cors.mjs.map +1 -1
  74. package/dist/middlewares/public.js +2 -2
  75. package/dist/middlewares/public.js.map +1 -1
  76. package/dist/middlewares/query.d.ts.map +1 -1
  77. package/dist/middlewares/query.js.map +1 -1
  78. package/dist/middlewares/query.mjs.map +1 -1
  79. package/dist/middlewares/responses.js +2 -2
  80. package/dist/middlewares/responses.js.map +1 -1
  81. package/dist/middlewares/security.d.ts.map +1 -1
  82. package/dist/middlewares/security.js +12 -5
  83. package/dist/middlewares/security.js.map +1 -1
  84. package/dist/middlewares/security.mjs +11 -4
  85. package/dist/middlewares/security.mjs.map +1 -1
  86. package/dist/middlewares/session.js +2 -2
  87. package/dist/middlewares/session.js.map +1 -1
  88. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +30 -0
  89. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -0
  90. package/dist/migrations/database/5.0.0-discard-drafts.js +50 -0
  91. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -0
  92. package/dist/migrations/database/5.0.0-discard-drafts.mjs +50 -0
  93. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -0
  94. package/dist/migrations/draft-publish.d.ts.map +1 -1
  95. package/dist/migrations/draft-publish.js +14 -31
  96. package/dist/migrations/draft-publish.js.map +1 -1
  97. package/dist/migrations/draft-publish.mjs +15 -32
  98. package/dist/migrations/draft-publish.mjs.map +1 -1
  99. package/dist/providers/registries.d.ts.map +1 -1
  100. package/dist/providers/registries.js +2 -0
  101. package/dist/providers/registries.js.map +1 -1
  102. package/dist/providers/registries.mjs +2 -0
  103. package/dist/providers/registries.mjs.map +1 -1
  104. package/dist/registries/apis.js +2 -2
  105. package/dist/registries/apis.js.map +1 -1
  106. package/dist/registries/components.js +2 -2
  107. package/dist/registries/components.js.map +1 -1
  108. package/dist/registries/content-types.js +3 -3
  109. package/dist/registries/content-types.js.map +1 -1
  110. package/dist/registries/controllers.js +3 -3
  111. package/dist/registries/controllers.js.map +1 -1
  112. package/dist/registries/custom-fields.js +4 -4
  113. package/dist/registries/custom-fields.js.map +1 -1
  114. package/dist/registries/hooks.js +2 -2
  115. package/dist/registries/hooks.js.map +1 -1
  116. package/dist/registries/middlewares.js +3 -3
  117. package/dist/registries/middlewares.js.map +1 -1
  118. package/dist/registries/modules.js +3 -3
  119. package/dist/registries/modules.js.map +1 -1
  120. package/dist/registries/plugins.js +2 -2
  121. package/dist/registries/plugins.js.map +1 -1
  122. package/dist/registries/policies.d.ts +1 -1
  123. package/dist/registries/policies.d.ts.map +1 -1
  124. package/dist/registries/policies.js +5 -5
  125. package/dist/registries/policies.js.map +1 -1
  126. package/dist/registries/policies.mjs +1 -1
  127. package/dist/registries/policies.mjs.map +1 -1
  128. package/dist/registries/services.js +3 -3
  129. package/dist/registries/services.js.map +1 -1
  130. package/dist/services/auth/index.js +3 -3
  131. package/dist/services/auth/index.js.map +1 -1
  132. package/dist/services/content-api/index.d.ts +6 -12
  133. package/dist/services/content-api/index.d.ts.map +1 -1
  134. package/dist/services/content-api/permissions/index.d.ts +6 -12
  135. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  136. package/dist/services/content-api/permissions/providers/action.d.ts +3 -6
  137. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  138. package/dist/services/content-api/permissions/providers/condition.d.ts +3 -6
  139. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  140. package/dist/services/core-store.js +3 -3
  141. package/dist/services/core-store.js.map +1 -1
  142. package/dist/services/cron.js +3 -3
  143. package/dist/services/cron.js.map +1 -1
  144. package/dist/services/document-service/attributes/index.js +2 -2
  145. package/dist/services/document-service/attributes/index.js.map +1 -1
  146. package/dist/services/document-service/attributes/transforms.js +3 -3
  147. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  148. package/dist/services/document-service/components.js +15 -15
  149. package/dist/services/document-service/components.js.map +1 -1
  150. package/dist/services/document-service/draft-and-publish.js +16 -16
  151. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  152. package/dist/services/document-service/entries.d.ts +1 -1
  153. package/dist/services/document-service/entries.d.ts.map +1 -1
  154. package/dist/services/document-service/entries.js +7 -6
  155. package/dist/services/document-service/entries.js.map +1 -1
  156. package/dist/services/document-service/entries.mjs +2 -1
  157. package/dist/services/document-service/entries.mjs.map +1 -1
  158. package/dist/services/document-service/events.d.ts +24 -4
  159. package/dist/services/document-service/events.d.ts.map +1 -1
  160. package/dist/services/document-service/events.js +29 -18
  161. package/dist/services/document-service/events.js.map +1 -1
  162. package/dist/services/document-service/events.mjs +29 -18
  163. package/dist/services/document-service/events.mjs.map +1 -1
  164. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  165. package/dist/services/document-service/internationalization.js +21 -12
  166. package/dist/services/document-service/internationalization.js.map +1 -1
  167. package/dist/services/document-service/internationalization.mjs +14 -5
  168. package/dist/services/document-service/internationalization.mjs.map +1 -1
  169. package/dist/services/document-service/params.js +2 -2
  170. package/dist/services/document-service/params.js.map +1 -1
  171. package/dist/services/document-service/repository.d.ts.map +1 -1
  172. package/dist/services/document-service/repository.js +31 -26
  173. package/dist/services/document-service/repository.js.map +1 -1
  174. package/dist/services/document-service/repository.mjs +26 -21
  175. package/dist/services/document-service/repository.mjs.map +1 -1
  176. package/dist/services/document-service/transform/id-transform.js +2 -2
  177. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  178. package/dist/services/document-service/transform/query.js +3 -3
  179. package/dist/services/document-service/transform/query.js.map +1 -1
  180. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  181. package/dist/services/document-service/transform/relations/extract/data-ids.js +5 -2
  182. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  183. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +3 -0
  184. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  185. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  186. package/dist/services/document-service/transform/relations/transform/data-ids.js +5 -2
  187. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  188. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +3 -0
  189. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  190. package/dist/services/document-service/transform/relations/utils/dp.js +2 -2
  191. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  192. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  193. package/dist/services/document-service/transform/relations/utils/map-relation.js +13 -9
  194. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  195. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +7 -3
  196. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  197. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  198. package/dist/services/document-service/utils/populate.js +4 -0
  199. package/dist/services/document-service/utils/populate.js.map +1 -1
  200. package/dist/services/document-service/utils/populate.mjs +4 -0
  201. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  202. package/dist/services/entity-validator/blocks-validator.d.ts +1 -2
  203. package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
  204. package/dist/services/entity-validator/blocks-validator.js +4 -3
  205. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  206. package/dist/services/entity-validator/blocks-validator.mjs +3 -3
  207. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  208. package/dist/services/entity-validator/index.d.ts +15 -1
  209. package/dist/services/entity-validator/index.d.ts.map +1 -1
  210. package/dist/services/entity-validator/index.js +103 -51
  211. package/dist/services/entity-validator/index.js.map +1 -1
  212. package/dist/services/entity-validator/index.mjs +89 -37
  213. package/dist/services/entity-validator/index.mjs.map +1 -1
  214. package/dist/services/entity-validator/validators.d.ts +36 -25
  215. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  216. package/dist/services/entity-validator/validators.js +148 -33
  217. package/dist/services/entity-validator/validators.js.map +1 -1
  218. package/dist/services/entity-validator/validators.mjs +140 -25
  219. package/dist/services/entity-validator/validators.mjs.map +1 -1
  220. package/dist/services/event-hub.d.ts +1 -0
  221. package/dist/services/event-hub.d.ts.map +1 -1
  222. package/dist/services/event-hub.js +9 -4
  223. package/dist/services/event-hub.js.map +1 -1
  224. package/dist/services/event-hub.mjs +9 -4
  225. package/dist/services/event-hub.mjs.map +1 -1
  226. package/dist/services/server/compose-endpoint.js +7 -7
  227. package/dist/services/server/compose-endpoint.js.map +1 -1
  228. package/dist/services/server/index.js +1 -1
  229. package/dist/services/server/index.js.map +1 -1
  230. package/dist/services/server/index.mjs +1 -1
  231. package/dist/services/server/index.mjs.map +1 -1
  232. package/dist/services/server/koa.d.ts.map +1 -1
  233. package/dist/services/server/koa.js +4 -4
  234. package/dist/services/server/koa.js.map +1 -1
  235. package/dist/services/server/koa.mjs +1 -1
  236. package/dist/services/server/koa.mjs.map +1 -1
  237. package/dist/services/server/middleware.js +3 -3
  238. package/dist/services/server/middleware.js.map +1 -1
  239. package/dist/services/server/routing.js +2 -2
  240. package/dist/services/server/routing.js.map +1 -1
  241. package/dist/services/utils/dynamic-zones.js +5 -5
  242. package/dist/services/utils/dynamic-zones.js.map +1 -1
  243. package/dist/services/webhook-runner.d.ts +2 -1
  244. package/dist/services/webhook-runner.d.ts.map +1 -1
  245. package/dist/services/webhook-runner.js.map +1 -1
  246. package/dist/services/webhook-runner.mjs.map +1 -1
  247. package/dist/services/webhook-store.d.ts +2 -8
  248. package/dist/services/webhook-store.d.ts.map +1 -1
  249. package/dist/services/webhook-store.js +1 -1
  250. package/dist/services/webhook-store.js.map +1 -1
  251. package/dist/services/webhook-store.mjs +1 -1
  252. package/dist/services/webhook-store.mjs.map +1 -1
  253. package/dist/utils/cron.js +3 -3
  254. package/dist/utils/cron.js.map +1 -1
  255. package/dist/utils/fetch.d.ts.map +1 -1
  256. package/dist/utils/fetch.js +4 -3
  257. package/dist/utils/fetch.js.map +1 -1
  258. package/dist/utils/fetch.mjs +4 -3
  259. package/dist/utils/fetch.mjs.map +1 -1
  260. package/dist/utils/filepath-to-prop-path.d.ts +1 -1
  261. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  262. package/dist/utils/filepath-to-prop-path.js +27 -6
  263. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  264. package/dist/utils/filepath-to-prop-path.mjs +25 -5
  265. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  266. package/dist/utils/is-initialized.js +3 -3
  267. package/dist/utils/is-initialized.js.map +1 -1
  268. package/dist/utils/startup-logger.js +4 -4
  269. package/dist/utils/startup-logger.js.map +1 -1
  270. package/dist/utils/startup-logger.mjs +3 -3
  271. package/dist/utils/startup-logger.mjs.map +1 -1
  272. package/dist/utils/transform-content-types-to-models.d.ts +2 -2
  273. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  274. package/dist/utils/transform-content-types-to-models.js +17 -4
  275. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  276. package/dist/utils/transform-content-types-to-models.mjs +16 -3
  277. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  278. package/package.json +22 -18
@@ -1 +1 @@
1
- {"version":3,"file":"internationalization.mjs","sources":["../../../src/services/document-service/internationalization.ts"],"sourcesContent":["import type { Struct, Modules } from '@strapi/types';\nimport { curry, assoc } from 'lodash/fp';\n\ntype Transform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Modules.Documents.Params.All;\n\ntype AsyncTransform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Promise<Modules.Documents.Params.All>;\n\nconst getDefaultLocale = async (): Promise<string> => {\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nconst defaultLocale: AsyncTransform = async (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (!params.locale) {\n return assoc('locale', await getDefaultLocale(), params);\n }\n\n return params;\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst localeToLookup: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n return assoc(['lookup', 'locale'], params.locale, params);\n }\n\n return params;\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst multiLocaleToLookup: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n if (params.locale === '*') {\n return params;\n }\n\n return assoc(['lookup', 'locale'], params.locale, params);\n }\n\n return params;\n};\n\n/**\n * Translate locale status parameter into the data that will be saved\n */\nconst localeToData: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n return assoc(['data', 'locale'], params.locale, params);\n }\n\n return params;\n};\n\nconst defaultLocaleCurry = curry(defaultLocale);\nconst localeToLookupCurry = curry(localeToLookup);\nconst multiLocaleToLookupCurry = curry(multiLocaleToLookup);\nconst localeToDataCurry = curry(localeToData);\n\nexport {\n defaultLocaleCurry as defaultLocale,\n localeToLookupCurry as localeToLookup,\n localeToDataCurry as localeToData,\n multiLocaleToLookupCurry as multiLocaleToLookup,\n};\n"],"names":[],"mappings":";AAaA,MAAM,mBAAmB,YAA6B;AACpD,SAAO,OAAO,OAAO,MAAM,EAAE,QAAQ,SAAS,EAAE;AAClD;AAEA,MAAM,gBAAgC,OAAO,aAAa,WAAW;AAC/D,MAAA,CAAC,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,WAAW,GAAG;AAChF,WAAA;AAAA,EACT;AAEI,MAAA,CAAC,OAAO,QAAQ;AAClB,WAAO,MAAM,UAAU,MAAM,oBAAoB,MAAM;AAAA,EACzD;AAEO,SAAA;AACT;AAKA,MAAM,iBAA4B,CAAC,aAAa,WAAW;AACrD,MAAA,CAAC,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,WAAW,GAAG;AAChF,WAAA;AAAA,EACT;AAEA,MAAI,OAAO,QAAQ;AACjB,WAAO,MAAM,CAAC,UAAU,QAAQ,GAAG,OAAO,QAAQ,MAAM;AAAA,EAC1D;AAEO,SAAA;AACT;AAKA,MAAM,sBAAiC,CAAC,aAAa,WAAW;AAC1D,MAAA,CAAC,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,WAAW,GAAG;AAChF,WAAA;AAAA,EACT;AAEA,MAAI,OAAO,QAAQ;AACb,QAAA,OAAO,WAAW,KAAK;AAClB,aAAA;AAAA,IACT;AAEA,WAAO,MAAM,CAAC,UAAU,QAAQ,GAAG,OAAO,QAAQ,MAAM;AAAA,EAC1D;AAEO,SAAA;AACT;AAKA,MAAM,eAA0B,CAAC,aAAa,WAAW;AACnD,MAAA,CAAC,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,WAAW,GAAG;AAChF,WAAA;AAAA,EACT;AAEA,MAAI,OAAO,QAAQ;AACjB,WAAO,MAAM,CAAC,QAAQ,QAAQ,GAAG,OAAO,QAAQ,MAAM;AAAA,EACxD;AAEO,SAAA;AACT;AAEM,MAAA,qBAAqB,MAAM,aAAa;AACxC,MAAA,sBAAsB,MAAM,cAAc;AAC1C,MAAA,2BAA2B,MAAM,mBAAmB;AACpD,MAAA,oBAAoB,MAAM,YAAY;"}
1
+ {"version":3,"file":"internationalization.mjs","sources":["../../../src/services/document-service/internationalization.ts"],"sourcesContent":["import type { Struct, Modules } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport { curry, assoc } from 'lodash/fp';\n\ntype Transform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Modules.Documents.Params.All;\n\ntype AsyncTransform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Promise<Modules.Documents.Params.All>;\n\nconst getDefaultLocale = async (): Promise<string> => {\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nconst defaultLocale: AsyncTransform = async (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (!params.locale) {\n return assoc('locale', await getDefaultLocale(), params);\n }\n\n return params;\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst localeToLookup: Transform = (contentType, params) => {\n if (\n !params.locale ||\n !strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)\n ) {\n return params;\n }\n\n if (typeof params.locale !== 'string') {\n // localeToLookup accepts locales of '*'. This is because the document\n // service functions that use this transform work with the '*' locale\n // to return all locales.\n throw new errors.ValidationError(\n `Invalid locale param ${String(params.locale)} provided. Document locales must be strings.`\n );\n }\n\n return assoc(['lookup', 'locale'], params.locale, params);\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst multiLocaleToLookup: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n if (params.locale === '*') {\n return params;\n }\n\n return assoc(['lookup', 'locale'], params.locale, params);\n }\n\n return params;\n};\n\n/**\n * Translate locale status parameter into the data that will be saved\n */\nconst localeToData: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n const isValidLocale = typeof params.locale === 'string' && params.locale !== '*';\n if (isValidLocale) {\n return assoc(['data', 'locale'], params.locale, params);\n }\n\n throw new errors.ValidationError(\n `Invalid locale param ${params.locale} provided. Document locales must be strings.`\n );\n }\n\n return params;\n};\n\nconst defaultLocaleCurry = curry(defaultLocale);\nconst localeToLookupCurry = curry(localeToLookup);\nconst multiLocaleToLookupCurry = curry(multiLocaleToLookup);\nconst localeToDataCurry = curry(localeToData);\n\nexport {\n defaultLocaleCurry as defaultLocale,\n localeToLookupCurry as localeToLookup,\n localeToDataCurry as localeToData,\n multiLocaleToLookupCurry as multiLocaleToLookup,\n};\n"],"names":[],"mappings":";;AAcA,MAAM,mBAAmB,YAA6B;AACpD,SAAO,OAAO,OAAO,MAAM,EAAE,QAAQ,SAAS,EAAE;AAClD;AAEA,MAAM,gBAAgC,OAAO,aAAa,WAAW;AAC/D,MAAA,CAAC,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,WAAW,GAAG;AAChF,WAAA;AAAA,EACT;AAEI,MAAA,CAAC,OAAO,QAAQ;AAClB,WAAO,MAAM,UAAU,MAAM,oBAAoB,MAAM;AAAA,EACzD;AAEO,SAAA;AACT;AAKA,MAAM,iBAA4B,CAAC,aAAa,WAAW;AACzD,MACE,CAAC,OAAO,UACR,CAAC,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,WAAW,GAClF;AACO,WAAA;AAAA,EACT;AAEI,MAAA,OAAO,OAAO,WAAW,UAAU;AAIrC,UAAM,IAAI,OAAO;AAAA,MACf,wBAAwB,OAAO,OAAO,MAAM,CAAC;AAAA,IAAA;AAAA,EAEjD;AAEA,SAAO,MAAM,CAAC,UAAU,QAAQ,GAAG,OAAO,QAAQ,MAAM;AAC1D;AAKA,MAAM,sBAAiC,CAAC,aAAa,WAAW;AAC1D,MAAA,CAAC,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,WAAW,GAAG;AAChF,WAAA;AAAA,EACT;AAEA,MAAI,OAAO,QAAQ;AACb,QAAA,OAAO,WAAW,KAAK;AAClB,aAAA;AAAA,IACT;AAEA,WAAO,MAAM,CAAC,UAAU,QAAQ,GAAG,OAAO,QAAQ,MAAM;AAAA,EAC1D;AAEO,SAAA;AACT;AAKA,MAAM,eAA0B,CAAC,aAAa,WAAW;AACnD,MAAA,CAAC,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,WAAW,GAAG;AAChF,WAAA;AAAA,EACT;AAEA,MAAI,OAAO,QAAQ;AACjB,UAAM,gBAAgB,OAAO,OAAO,WAAW,YAAY,OAAO,WAAW;AAC7E,QAAI,eAAe;AACjB,aAAO,MAAM,CAAC,QAAQ,QAAQ,GAAG,OAAO,QAAQ,MAAM;AAAA,IACxD;AAEA,UAAM,IAAI,OAAO;AAAA,MACf,wBAAwB,OAAO,MAAM;AAAA,IAAA;AAAA,EAEzC;AAEO,SAAA;AACT;AAEM,MAAA,qBAAqB,MAAM,aAAa;AACxC,MAAA,sBAAsB,MAAM,cAAc;AAC1C,MAAA,2BAA2B,MAAM,mBAAmB;AACpD,MAAA,oBAAoB,MAAM,YAAY;"}
@@ -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;AAa3E,eAAO,MAAM,2BAA2B,EAAE,uBAuUzC,CAAC"}
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;AAa3E,eAAO,MAAM,2BAA2B,EAAE,uBAyUzC,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");
@@ -17,12 +17,14 @@ const createContentTypeRepository = (uid) => {
17
17
  const contentType = strapi.contentType(uid);
18
18
  const hasDraftAndPublish = strapiUtils.contentTypes.hasDraftAndPublish(contentType);
19
19
  const entries$1 = entries.createEntriesService(uid);
20
+ const eventManager = events.createEventManager(strapi, uid);
21
+ const emitEvent = fp.curry(eventManager.emitEvent);
20
22
  async function findMany(params2 = {}) {
21
23
  const query$1 = await strapiUtils.async.pipe(
22
24
  draftAndPublish.defaultToDraft,
23
25
  draftAndPublish.statusToLookup(contentType),
24
26
  internationalization.defaultLocale(contentType),
25
- internationalization.localeToLookup(contentType),
27
+ internationalization.multiLocaleToLookup(contentType),
26
28
  idTransform.transformParamsDocumentId(uid),
27
29
  query.transformParamsToQuery(uid)
28
30
  )(params2 || {});
@@ -48,26 +50,29 @@ const createContentTypeRepository = (uid) => {
48
50
  internationalization.localeToLookup(contentType),
49
51
  idTransform.transformParamsDocumentId(uid),
50
52
  query.transformParamsToQuery(uid),
51
- (query2) => _.assoc("where", { ...query2.where, documentId }, query2)
53
+ (query2) => fp.assoc("where", { ...query2.where, documentId }, query2)
52
54
  )(params2);
53
55
  return strapi.db.query(uid).findOne(query$1);
54
56
  }
55
57
  async function deleteDocument(opts = {}) {
56
58
  const { documentId, ...params2 } = opts;
57
59
  const query$1 = await strapiUtils.async.pipe(
58
- _.omit("status"),
60
+ fp.omit("status"),
59
61
  internationalization.defaultLocale(contentType),
60
62
  internationalization.multiLocaleToLookup(contentType),
61
63
  query.transformParamsToQuery(uid),
62
- (query2) => _.assoc("where", { ...query2.where, documentId }, query2)
64
+ (query2) => fp.assoc("where", { ...query2.where, documentId }, query2)
63
65
  )(params2);
64
66
  if (params2.status === "draft") {
65
67
  throw new Error("Cannot delete a draft document");
66
68
  }
67
69
  const entriesToDelete = await strapi.db.query(uid).findMany(query$1);
68
- await strapiUtils.async.map(entriesToDelete, (entryToDelete) => entries$1.delete(entryToDelete.id));
69
- entriesToDelete.forEach(events.emitEvent(uid, "entry.delete"));
70
- return { deletedEntries: entriesToDelete };
70
+ const deletedEntries = await strapiUtils.async.map(
71
+ entriesToDelete,
72
+ (entryToDelete) => entries$1.delete(entryToDelete.id)
73
+ );
74
+ entriesToDelete.forEach(emitEvent("entry.delete"));
75
+ return { documentId, entries: deletedEntries };
71
76
  }
72
77
  async function create(opts = {}) {
73
78
  const { documentId, ...params2 } = opts;
@@ -79,12 +84,12 @@ const createContentTypeRepository = (uid) => {
79
84
  internationalization.localeToData(contentType)
80
85
  )(params2);
81
86
  const doc = await entries$1.create(queryParams);
82
- events.emitEvent(uid, "entry.create", doc);
87
+ emitEvent("entry.create", doc);
83
88
  if (hasDraftAndPublish && params2.status === "published") {
84
89
  return publish({
85
90
  ...params2,
86
91
  documentId: doc.documentId
87
- }).then((doc2) => doc2.versions[0]);
92
+ }).then((doc2) => doc2.entries[0]);
88
93
  }
89
94
  return doc;
90
95
  }
@@ -108,16 +113,16 @@ const createContentTypeRepository = (uid) => {
108
113
  const clonedEntries = await strapiUtils.async.map(
109
114
  entriesToClone,
110
115
  strapiUtils.async.pipe(
111
- _.omit("id"),
116
+ fp.omit("id"),
112
117
  // assign new documentId
113
- _.assoc("documentId", transformContentTypesToModels.createDocumentId()),
118
+ fp.assoc("documentId", transformContentTypesToModels.createDocumentId()),
114
119
  // Merge new data into it
115
- (data) => _.merge(data, queryParams.data),
120
+ (data) => fp.merge(data, queryParams.data),
116
121
  (data) => entries$1.create({ ...queryParams, data, status: "draft" })
117
122
  )
118
123
  );
119
- clonedEntries.forEach(events.emitEvent(uid, "entry.create"));
120
- return { documentId: clonedEntries.at(0)?.documentId, versions: clonedEntries };
124
+ clonedEntries.forEach(emitEvent("entry.create"));
125
+ return { documentId: clonedEntries.at(0)?.documentId, entries: clonedEntries };
121
126
  }
122
127
  async function update(opts = {}) {
123
128
  const { documentId, ...params$1 } = opts;
@@ -137,7 +142,7 @@ const createContentTypeRepository = (uid) => {
137
142
  let updatedDraft = null;
138
143
  if (entryToUpdate) {
139
144
  updatedDraft = await entries$1.update(entryToUpdate, queryParams);
140
- events.emitEvent(uid, "entry.update", updatedDraft);
145
+ emitEvent("entry.update", updatedDraft);
141
146
  }
142
147
  if (!updatedDraft) {
143
148
  const documentExists = await strapi.db.query(contentType.uid).findOne({ where: { documentId } });
@@ -146,14 +151,14 @@ const createContentTypeRepository = (uid) => {
146
151
  ...queryParams,
147
152
  data: { ...queryParams.data, documentId }
148
153
  });
149
- events.emitEvent(uid, "entry.create", updatedDraft);
154
+ emitEvent("entry.create", updatedDraft);
150
155
  }
151
156
  }
152
157
  if (hasDraftAndPublish && updatedDraft && params$1.status === "published") {
153
158
  return publish({
154
159
  ...params$1,
155
160
  documentId
156
- }).then((doc) => doc.versions[0]);
161
+ }).then((doc) => doc.entries[0]);
157
162
  }
158
163
  return updatedDraft;
159
164
  }
@@ -194,12 +199,12 @@ const createContentTypeRepository = (uid) => {
194
199
  })
195
200
  ]);
196
201
  await strapiUtils.async.map(publishedToDelete, (entry) => entries$1.delete(entry.id));
197
- const versions = await strapiUtils.async.map(
202
+ const publishedEntries = await strapiUtils.async.map(
198
203
  draftsToPublish,
199
204
  (draft) => entries$1.publish(draft, queryParams)
200
205
  );
201
- versions.forEach(events.emitEvent(uid, "entry.publish"));
202
- return { versions };
206
+ publishedEntries.forEach(emitEvent("entry.publish"));
207
+ return { documentId, entries: publishedEntries };
203
208
  }
204
209
  async function unpublish(opts = {}) {
205
210
  const { documentId, ...params2 } = opts;
@@ -207,12 +212,12 @@ const createContentTypeRepository = (uid) => {
207
212
  internationalization.defaultLocale(contentType),
208
213
  internationalization.multiLocaleToLookup(contentType),
209
214
  query.transformParamsToQuery(uid),
210
- (query2) => _.assoc("where", { ...query2.where, documentId, publishedAt: { $ne: null } }, query2)
215
+ (query2) => fp.assoc("where", { ...query2.where, documentId, publishedAt: { $ne: null } }, query2)
211
216
  )(params2);
212
217
  const versionsToDelete = await strapi.db.query(uid).findMany(query$1);
213
218
  await strapiUtils.async.map(versionsToDelete, (entry) => entries$1.delete(entry.id));
214
- versionsToDelete.forEach(events.emitEvent(uid, "entry.unpublish"));
215
- return { versions: versionsToDelete };
219
+ versionsToDelete.forEach(emitEvent("entry.unpublish"));
220
+ return { documentId, entries: versionsToDelete };
216
221
  }
217
222
  async function discardDraft(opts = {}) {
218
223
  const { documentId, ...params2 } = opts;
@@ -244,8 +249,8 @@ const createContentTypeRepository = (uid) => {
244
249
  versionsToDraft,
245
250
  (entry) => entries$1.discardDraft(entry, queryParams)
246
251
  );
247
- draftEntries.forEach(events.emitEvent(uid, "entry.draft-discard"));
248
- return { versions: draftEntries };
252
+ draftEntries.forEach(emitEvent("entry.draft-discard"));
253
+ return { documentId, entries: draftEntries };
249
254
  }
250
255
  async function updateComponents(entry, data) {
251
256
  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';\nimport { emitEvent } from './events';\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 entriesToDelete.forEach(emitEvent(uid, 'entry.delete'));\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 emitEvent(uid, 'entry.create', doc);\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 clonedEntries.forEach(emitEvent(uid, 'entry.create'));\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 emitEvent(uid, '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(uid, 'entry.create', updatedDraft);\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 const [draftsToPublish, publishedToDelete] = 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'],\n }),\n ]);\n\n // Delete all published versions\n await async.map(publishedToDelete, (entry: any) => entries.delete(entry.id));\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 versions.forEach(emitEvent(uid, 'entry.publish'));\n\n return { versions };\n }\n\n async function unpublish(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\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(uid, 'entry.unpublish'));\n\n return { versions: versionsToDelete };\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 const [versionsToDraft, versionsToDelete] = 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'],\n }),\n ]);\n\n // Delete all drafts\n await async.map(versionsToDelete, (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 draftEntries.forEach(emitEvent(uid, 'entry.draft-discard'));\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","emitEvent","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 } 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';\nimport { createEventManager } from './events';\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 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 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 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 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 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 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 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 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 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 const [draftsToPublish, publishedToDelete] = 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'],\n }),\n ]);\n\n // Delete all published versions\n await async.map(publishedToDelete, (entry: any) => entries.delete(entry.id));\n\n // Transform draft entry data and create published versions\n const publishedEntries = await async.map(draftsToPublish, (draft: unknown) =>\n entries.publish(draft, queryParams)\n );\n\n publishedEntries.forEach(emitEvent('entry.publish'));\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 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 i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const [versionsToDraft, versionsToDelete] = 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'],\n }),\n ]);\n\n // Delete all drafts\n await async.map(versionsToDelete, (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 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":["contentTypesUtils","entries","createEntriesService","createEventManager","curry","params","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","components.updateComponents","components.omitComponentData","wrapInTransaction"],"mappings":";;;;;;;;;;;;;;;AAiBa,MAAA,8BAAuD,CAAC,QAAQ;AACrE,QAAA,cAAc,OAAO,YAAY,GAAG;AACpC,QAAA,qBAAqBA,YAAAA,aAAkB,mBAAmB,WAAW;AAErE,QAAAC,YAAUC,6BAAqB,GAAG;AAElC,QAAA,eAAeC,OAAAA,mBAAmB,QAAQ,GAAG;AAC7C,QAAA,YAAYC,GAAAA,MAAM,aAAa,SAAS;AAE/B,iBAAA,SAASC,UAAS,IAAW;AACpC,UAAAC,UAAQ,MAAMC,YAAAA,MAAM;AAAA,MACxBC,gBAAG;AAAA,MACHC,gBAAAA,eAAkB,WAAW;AAAA,MAC7BC,qBAAAA,cAAmB,WAAW;AAAA,MAC9BC,qBAAAA,oBAAyB,WAAW;AAAA,MACpCC,YAAAA,0BAA0B,GAAG;AAAA,MAC7BC,MAAAA,uBAAuB,GAAG;AAAA,IAAA,EAC1BR,WAAU,CAAA,CAAE;AAEd,WAAO,OAAO,GAAG,MAAM,GAAG,EAAE,SAASC,OAAK;AAAA,EAC5C;AAEe,iBAAA,UAAUD,UAAS,IAAW;AACrC,UAAAC,UAAQ,MAAMC,YAAAA,MAAM;AAAA,MACxBC,gBAAG;AAAA,MACHC,gBAAAA,eAAkB,WAAW;AAAA,MAC7BC,qBAAAA,cAAmB,WAAW;AAAA,MAC9BI,qBAAAA,eAAoB,WAAW;AAAA,MAC/BF,YAAAA,0BAA0B,GAAG;AAAA,MAC7BC,MAAAA,uBAAuB,GAAG;AAAA,MAC1BR,OAAM;AAER,WAAO,OAAO,GAAG,MAAM,GAAG,EAAE,QAAQC,OAAK;AAAA,EAC3C;AAGe,iBAAA,QAAQ,OAAO,IAAW;AACvC,UAAM,EAAE,YAAY,GAAGD,QAAA,IAAW;AAE5B,UAAAC,UAAQ,MAAMC,YAAAA,MAAM;AAAA,MACxBC,gBAAG;AAAA,MACHC,gBAAAA,eAAkB,WAAW;AAAA,MAC7BC,qBAAAA,cAAmB,WAAW;AAAA,MAC9BI,qBAAAA,eAAoB,WAAW;AAAA,MAC/BF,YAAAA,0BAA0B,GAAG;AAAA,MAC7BC,MAAAA,uBAAuB,GAAG;AAAA,MAC1B,CAACP,WAAUS,GAAA,MAAM,SAAS,EAAE,GAAGT,OAAM,OAAO,WAAW,GAAGA,MAAK;AAAA,MAC/DD,OAAM;AAER,WAAO,OAAO,GAAG,MAAM,GAAG,EAAE,QAAQC,OAAK;AAAA,EAC3C;AAEe,iBAAA,eAAe,OAAO,IAAW;AAC9C,UAAM,EAAE,YAAY,GAAGD,QAAA,IAAW;AAE5B,UAAAC,UAAQ,MAAMC,YAAAA,MAAM;AAAA,MACxBS,GAAAA,KAAK,QAAQ;AAAA,MACbN,qBAAAA,cAAmB,WAAW;AAAA,MAC9BC,qBAAAA,oBAAyB,WAAW;AAAA,MACpCE,MAAAA,uBAAuB,GAAG;AAAA,MAC1B,CAACP,WAAUS,GAAA,MAAM,SAAS,EAAE,GAAGT,OAAM,OAAO,WAAW,GAAGA,MAAK;AAAA,MAC/DD,OAAM;AAEJ,QAAAA,QAAO,WAAW,SAAS;AACvB,YAAA,IAAI,MAAM,gCAAgC;AAAA,IAClD;AAEM,UAAA,kBAAkB,MAAM,OAAO,GAAG,MAAM,GAAG,EAAE,SAASC,OAAK;AAG3D,UAAA,iBAAiB,MAAMC,YAAAA,MAAM;AAAA,MAAI;AAAA,MAAiB,CAAC,kBACvDN,UAAQ,OAAO,cAAc,EAAE;AAAA,IAAA;AAGjB,oBAAA,QAAQ,UAAU,cAAc,CAAC;AAE1C,WAAA,EAAE,YAAY,SAAS;EAChC;AAEe,iBAAA,OAAO,OAAO,IAAW;AACtC,UAAM,EAAE,YAAY,GAAGI,QAAA,IAAW;AAE5B,UAAA,cAAc,MAAME,YAAAA,MAAM;AAAA,MAC9BU,gBAAG;AAAA,MACHC,gBAAAA,iBAAoB,WAAW;AAAA,MAC/BC,gBAAAA,aAAgB,WAAW;AAAA,MAC3BT,qBAAAA,cAAmB,WAAW;AAAA,MAC9BU,qBAAAA,aAAkB,WAAW;AAAA,MAC7Bf,OAAM;AAER,UAAM,MAAM,MAAMJ,UAAQ,OAAO,WAAW;AAE5C,cAAU,gBAAgB,GAAG;AAEzB,QAAA,sBAAsBI,QAAO,WAAW,aAAa;AACvD,aAAO,QAAQ;AAAA,QACb,GAAGA;AAAA,QACH,YAAY,IAAI;AAAA,MAAA,CACjB,EAAE,KAAK,CAACgB,SAAQA,KAAI,QAAQ,CAAC,CAAC;AAAA,IACjC;AAEO,WAAA;AAAA,EACT;AAEe,iBAAA,MAAM,OAAO,IAAW;AACrC,UAAM,EAAE,YAAY,GAAGhB,QAAA,IAAW;AAE5B,UAAA,cAAc,MAAME,YAAAA,MAAM;AAAA,MAC9BU,gBAAG;AAAA,MACHP,qBAAAA,cAAmB,WAAW;AAAA,MAC9BC,qBAAAA,oBAAyB,WAAW;AAAA,MACpCN,OAAM;AAGR,UAAM,iBAAiB,MAAM,OAAO,GAAG,MAAM,GAAG,EAAE,SAAS;AAAA,MACzD,OAAO;AAAA,QACL,GAAG,aAAa;AAAA,QAChB;AAAA;AAAA;AAAA,QAGA,aAAa,EAAE,OAAO,mBAAmB;AAAA,MAC3C;AAAA,MACA,UAAUiB,yBAAgB,KAAK,EAAE,kBAAkB,CAAC,IAAI,GAAG;AAAA,IAAA,CAC5D;AAEK,UAAA,gBAAgB,MAAMf,YAAAA,MAAM;AAAA,MAChC;AAAA,MACAA,YAAAA,MAAM;AAAA,QACJS,GAAAA,KAAK,IAAI;AAAA;AAAA,QAETD,SAAM,cAAcQ,8BAAAA,kBAAkB;AAAA;AAAA,QAEtC,CAAC,SAASC,GAAM,MAAA,MAAM,YAAY,IAAI;AAAA,QACtC,CAAC,SAASvB,UAAQ,OAAO,EAAE,GAAG,aAAa,MAAM,QAAQ,SAAS;AAAA,MACpE;AAAA,IAAA;AAGY,kBAAA,QAAQ,UAAU,cAAc,CAAC;AAExC,WAAA,EAAE,YAAY,cAAc,GAAG,CAAC,GAAG,YAAY,SAAS;EACjE;AAEe,iBAAA,OAAO,OAAO,IAAW;AACtC,UAAM,EAAE,YAAY,GAAGI,SAAA,IAAW;AAE5B,UAAA,cAAc,MAAME,YAAAA,MAAM;AAAA,MAC9BU,gBAAG;AAAA,MACHC,gBAAAA,iBAAoB,WAAW;AAAA,MAC/BT,gBAAAA,eAAkB,WAAW;AAAA,MAC7BU,gBAAAA,aAAgB,WAAW;AAAA;AAAA,MAE3BT,qBAAAA,cAAmB,WAAW;AAAA,MAC9BI,qBAAAA,eAAoB,WAAW;AAAA,MAC/BM,qBAAAA,aAAkB,WAAW;AAAA,MAC7Bf,QAAM;AAEF,UAAA,EAAE,MAAM,GAAG,WAAW,IAAI,MAAMO,YAAAA,0BAA0B,KAAK,eAAe,CAAA,CAAE;AACtF,UAAMN,UAAQO,MAAAA,uBAAuB,KAAKY,2BAAoB,cAAc,CAAE,CAAA,CAAQ;AAIhF,UAAA,gBAAgB,MAAM,OAAO,GAChC,MAAM,GAAG,EACT,QAAQ,EAAE,GAAGnB,SAAO,OAAO,EAAE,GAAG,aAAa,QAAQ,GAAGA,SAAO,OAAO,WAAW,EAAA,CAAG;AAEvF,QAAI,eAAe;AACnB,QAAI,eAAe;AACjB,qBAAe,MAAML,UAAQ,OAAO,eAAe,WAAW;AAC9D,gBAAU,gBAAgB,YAAY;AAAA,IACxC;AAEA,QAAI,CAAC,cAAc;AACjB,YAAM,iBAAiB,MAAM,OAAO,GACjC,MAAM,YAAY,GAAG,EACrB,QAAQ,EAAE,OAAO,EAAE,WAAA,EAAc,CAAA;AAEpC,UAAI,gBAAgB;AACH,uBAAA,MAAMA,UAAQ,OAAO;AAAA,UAClC,GAAG;AAAA,UACH,MAAM,EAAE,GAAG,YAAY,MAAM,WAAW;AAAA,QAAA,CACzC;AACD,kBAAU,gBAAgB,YAAY;AAAA,MACxC;AAAA,IACF;AAEA,QAAI,sBAAsB,gBAAgBI,SAAO,WAAW,aAAa;AACvE,aAAO,QAAQ;AAAA,QACb,GAAGA;AAAAA,QACH;AAAA,MAAA,CACD,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;AAAA,IACjC;AAEO,WAAA;AAAA,EACT;AAEe,iBAAA,MAAMA,UAAS,IAAW;AACjC,UAAAC,UAAQ,MAAMC,YAAAA,MAAM;AAAA,MACxBmB,gBAAAA,cAAiB,WAAW;AAAA,MAC5BjB,gBAAAA,eAAkB,WAAW;AAAA,MAC7BC,qBAAAA,cAAmB,WAAW;AAAA,MAC9BI,qBAAAA,eAAoB,WAAW;AAAA,MAC/BD,MAAAA,uBAAuB,GAAG;AAAA,MAC1BR,OAAM;AAER,WAAO,OAAO,GAAG,MAAM,GAAG,EAAE,MAAMC,OAAK;AAAA,EACzC;AAEe,iBAAA,QAAQ,OAAO,IAAW;AACvC,UAAM,EAAE,YAAY,GAAGD,QAAA,IAAW;AAE5B,UAAA,cAAc,MAAME,YAAAA,MAAM;AAAA,MAC9BG,qBAAAA,cAAmB,WAAW;AAAA,MAC9BC,qBAAAA,oBAAyB,WAAW;AAAA,MACpCN,OAAM;AAER,UAAM,CAAC,iBAAiB,iBAAiB,IAAI,MAAM,QAAQ,IAAI;AAAA,MAC7D,OAAO,GAAG,MAAM,GAAG,EAAE,SAAS;AAAA,QAC5B,OAAO;AAAA,UACL,GAAG,aAAa;AAAA,UAChB;AAAA,UACA,aAAa;AAAA;AAAA,QACf;AAAA;AAAA,QAEA,UAAUiB,yBAAgB,KAAK,EAAE,kBAAkB,CAAC,cAAc,QAAQ,GAAG;AAAA,MAAA,CAC9E;AAAA,MACD,OAAO,GAAG,MAAM,GAAG,EAAE,SAAS;AAAA,QAC5B,OAAO;AAAA,UACL,GAAG,aAAa;AAAA,UAChB;AAAA,UACA,aAAa,EAAE,KAAK,KAAK;AAAA,QAC3B;AAAA,QACA,QAAQ,CAAC,IAAI;AAAA,MAAA,CACd;AAAA,IAAA,CACF;AAGK,UAAAf,YAAA,MAAM,IAAI,mBAAmB,CAAC,UAAeN,UAAQ,OAAO,MAAM,EAAE,CAAC;AAGrE,UAAA,mBAAmB,MAAMM,YAAAA,MAAM;AAAA,MAAI;AAAA,MAAiB,CAAC,UACzDN,UAAQ,QAAQ,OAAO,WAAW;AAAA,IAAA;AAGnB,qBAAA,QAAQ,UAAU,eAAe,CAAC;AAC5C,WAAA,EAAE,YAAY,SAAS;EAChC;AAEe,iBAAA,UAAU,OAAO,IAAW;AACzC,UAAM,EAAE,YAAY,GAAGI,QAAA,IAAW;AAE5B,UAAAC,UAAQ,MAAMC,YAAAA,MAAM;AAAA,MACxBG,qBAAAA,cAAmB,WAAW;AAAA,MAC9BC,qBAAAA,oBAAyB,WAAW;AAAA,MACpCE,MAAAA,uBAAuB,GAAG;AAAA,MAC1B,CAACP,WAAUS,GAAM,MAAA,SAAS,EAAE,GAAGT,OAAM,OAAO,YAAY,aAAa,EAAE,KAAK,KAAK,EAAA,GAAKA,MAAK;AAAA,MAC3FD,OAAM;AAGF,UAAA,mBAAmB,MAAM,OAAO,GAAG,MAAM,GAAG,EAAE,SAASC,OAAK;AAC5D,UAAAC,YAAA,MAAM,IAAI,kBAAkB,CAAC,UAAeN,UAAQ,OAAO,MAAM,EAAE,CAAC;AAEzD,qBAAA,QAAQ,UAAU,iBAAiB,CAAC;AAC9C,WAAA,EAAE,YAAY,SAAS;EAChC;AAEe,iBAAA,aAAa,OAAO,IAAW;AAC5C,UAAM,EAAE,YAAY,GAAGI,QAAA,IAAW;AAE5B,UAAA,cAAc,MAAME,YAAAA,MAAM;AAAA,MAC9BG,qBAAAA,cAAmB,WAAW;AAAA,MAC9BC,qBAAAA,oBAAyB,WAAW;AAAA,MACpCN,OAAM;AAER,UAAM,CAAC,iBAAiB,gBAAgB,IAAI,MAAM,QAAQ,IAAI;AAAA,MAC5D,OAAO,GAAG,MAAM,GAAG,EAAE,SAAS;AAAA,QAC5B,OAAO;AAAA,UACL,GAAG,aAAa;AAAA,UAChB;AAAA,UACA,aAAa,EAAE,KAAK,KAAK;AAAA,QAC3B;AAAA;AAAA,QAEA,UAAUiB,yBAAgB,KAAK,EAAE,kBAAkB,CAAC,cAAc,QAAQ,GAAG;AAAA,MAAA,CAC9E;AAAA,MACD,OAAO,GAAG,MAAM,GAAG,EAAE,SAAS;AAAA,QAC5B,OAAO;AAAA,UACL,GAAG,aAAa;AAAA,UAChB;AAAA,UACA,aAAa;AAAA,QACf;AAAA,QACA,QAAQ,CAAC,IAAI;AAAA,MAAA,CACd;AAAA,IAAA,CACF;AAGK,UAAAf,YAAA,MAAM,IAAI,kBAAkB,CAAC,UAAeN,UAAQ,OAAO,MAAM,EAAE,CAAC;AAGpE,UAAA,eAAe,MAAMM,YAAAA,MAAM;AAAA,MAAI;AAAA,MAAiB,CAAC,UACrDN,UAAQ,aAAa,OAAO,WAAW;AAAA,IAAA;AAG5B,iBAAA,QAAQ,UAAU,qBAAqB,CAAC;AAC9C,WAAA,EAAE,YAAY,SAAS;EAChC;AAEe,iBAAA,iBAAiB,OAAY,MAAW;AACrD,WAAO0B,4BAA4B,KAAK,OAAO,IAAI;AAAA,EACrD;AAEA,WAAS,kBAAkB,MAAW;AAC7B,WAAAC,WAA6B,kBAAA,aAAa,IAAI;AAAA,EACvD;AAEO,SAAA;AAAA,IACL,UAAUC,yBAAkB,QAAQ;AAAA,IACpC,WAAWA,yBAAkB,SAAS;AAAA,IACtC,SAASA,yBAAkB,OAAO;AAAA,IAClC,QAAQA,yBAAkB,cAAc;AAAA,IACxC,QAAQA,yBAAkB,MAAM;AAAA,IAChC,OAAOA,yBAAkB,KAAK;AAAA,IAC9B,QAAQA,yBAAkB,MAAM;AAAA,IAChC,OAAOA,yBAAkB,KAAK;AAAA,IAC9B,SAAS,qBAAqBA,OAAAA,kBAAkB,OAAO,IAAK;AAAA,IAC5D,WAAW,qBAAqBA,OAAAA,kBAAkB,SAAS,IAAK;AAAA,IAChE,cAAc,qBAAqBA,OAAAA,kBAAkB,YAAY,IAAK;AAAA,IAEtE;AAAA,IACA;AAAA,EAAA;AAEJ;;"}
@@ -1,8 +1,8 @@
1
- import { assoc, omit, merge } from "lodash/fp";
1
+ import { curry, assoc, omit, merge } from "lodash/fp";
2
2
  import { contentTypes, async } from "@strapi/utils";
3
3
  import { wrapInTransaction } from "./common.mjs";
4
4
  import { defaultToDraft as defaultToDraftCurry, statusToLookup as statusToLookupCurry, filterDataPublishedAt as filterDataPublishedAtCurry, setStatusToDraft as setStatusToDraftCurry, statusToData as statusToDataCurry, defaultStatus as defaultStatusCurry } from "./draft-and-publish.mjs";
5
- import { defaultLocale as defaultLocaleCurry, localeToLookup as localeToLookupCurry, multiLocaleToLookup as multiLocaleToLookupCurry, localeToData as localeToDataCurry } from "./internationalization.mjs";
5
+ import { defaultLocale as defaultLocaleCurry, multiLocaleToLookup as multiLocaleToLookupCurry, localeToLookup as localeToLookupCurry, localeToData as localeToDataCurry } from "./internationalization.mjs";
6
6
  import { updateComponents, omitComponentData } from "./components.mjs";
7
7
  import { createEntriesService } from "./entries.mjs";
8
8
  import { pickSelectionParams } from "./params.mjs";
@@ -10,17 +10,19 @@ import { createDocumentId } from "../../utils/transform-content-types-to-models.
10
10
  import { getDeepPopulate } from "./utils/populate.mjs";
11
11
  import { transformParamsToQuery } from "./transform/query.mjs";
12
12
  import { transformParamsDocumentId as curriedTransformParamsDocumentId } from "./transform/id-transform.mjs";
13
- import { emitEvent as curriedEmitEvent } from "./events.mjs";
13
+ import { createEventManager } from "./events.mjs";
14
14
  const createContentTypeRepository = (uid) => {
15
15
  const contentType = strapi.contentType(uid);
16
16
  const hasDraftAndPublish = contentTypes.hasDraftAndPublish(contentType);
17
17
  const entries = createEntriesService(uid);
18
+ const eventManager = createEventManager(strapi, uid);
19
+ const emitEvent = curry(eventManager.emitEvent);
18
20
  async function findMany(params = {}) {
19
21
  const query = await async.pipe(
20
22
  defaultToDraftCurry,
21
23
  statusToLookupCurry(contentType),
22
24
  defaultLocaleCurry(contentType),
23
- localeToLookupCurry(contentType),
25
+ multiLocaleToLookupCurry(contentType),
24
26
  curriedTransformParamsDocumentId(uid),
25
27
  transformParamsToQuery(uid)
26
28
  )(params || {});
@@ -63,9 +65,12 @@ const createContentTypeRepository = (uid) => {
63
65
  throw new Error("Cannot delete a draft document");
64
66
  }
65
67
  const entriesToDelete = await strapi.db.query(uid).findMany(query);
66
- await async.map(entriesToDelete, (entryToDelete) => entries.delete(entryToDelete.id));
67
- entriesToDelete.forEach(curriedEmitEvent(uid, "entry.delete"));
68
- return { deletedEntries: entriesToDelete };
68
+ const deletedEntries = await async.map(
69
+ entriesToDelete,
70
+ (entryToDelete) => entries.delete(entryToDelete.id)
71
+ );
72
+ entriesToDelete.forEach(emitEvent("entry.delete"));
73
+ return { documentId, entries: deletedEntries };
69
74
  }
70
75
  async function create(opts = {}) {
71
76
  const { documentId, ...params } = opts;
@@ -77,12 +82,12 @@ const createContentTypeRepository = (uid) => {
77
82
  localeToDataCurry(contentType)
78
83
  )(params);
79
84
  const doc = await entries.create(queryParams);
80
- curriedEmitEvent(uid, "entry.create", doc);
85
+ emitEvent("entry.create", doc);
81
86
  if (hasDraftAndPublish && params.status === "published") {
82
87
  return publish({
83
88
  ...params,
84
89
  documentId: doc.documentId
85
- }).then((doc2) => doc2.versions[0]);
90
+ }).then((doc2) => doc2.entries[0]);
86
91
  }
87
92
  return doc;
88
93
  }
@@ -114,8 +119,8 @@ const createContentTypeRepository = (uid) => {
114
119
  (data) => entries.create({ ...queryParams, data, status: "draft" })
115
120
  )
116
121
  );
117
- clonedEntries.forEach(curriedEmitEvent(uid, "entry.create"));
118
- return { documentId: clonedEntries.at(0)?.documentId, versions: clonedEntries };
122
+ clonedEntries.forEach(emitEvent("entry.create"));
123
+ return { documentId: clonedEntries.at(0)?.documentId, entries: clonedEntries };
119
124
  }
120
125
  async function update(opts = {}) {
121
126
  const { documentId, ...params } = opts;
@@ -135,7 +140,7 @@ const createContentTypeRepository = (uid) => {
135
140
  let updatedDraft = null;
136
141
  if (entryToUpdate) {
137
142
  updatedDraft = await entries.update(entryToUpdate, queryParams);
138
- curriedEmitEvent(uid, "entry.update", updatedDraft);
143
+ emitEvent("entry.update", updatedDraft);
139
144
  }
140
145
  if (!updatedDraft) {
141
146
  const documentExists = await strapi.db.query(contentType.uid).findOne({ where: { documentId } });
@@ -144,14 +149,14 @@ const createContentTypeRepository = (uid) => {
144
149
  ...queryParams,
145
150
  data: { ...queryParams.data, documentId }
146
151
  });
147
- curriedEmitEvent(uid, "entry.create", updatedDraft);
152
+ emitEvent("entry.create", updatedDraft);
148
153
  }
149
154
  }
150
155
  if (hasDraftAndPublish && updatedDraft && params.status === "published") {
151
156
  return publish({
152
157
  ...params,
153
158
  documentId
154
- }).then((doc) => doc.versions[0]);
159
+ }).then((doc) => doc.entries[0]);
155
160
  }
156
161
  return updatedDraft;
157
162
  }
@@ -192,12 +197,12 @@ const createContentTypeRepository = (uid) => {
192
197
  })
193
198
  ]);
194
199
  await async.map(publishedToDelete, (entry) => entries.delete(entry.id));
195
- const versions = await async.map(
200
+ const publishedEntries = await async.map(
196
201
  draftsToPublish,
197
202
  (draft) => entries.publish(draft, queryParams)
198
203
  );
199
- versions.forEach(curriedEmitEvent(uid, "entry.publish"));
200
- return { versions };
204
+ publishedEntries.forEach(emitEvent("entry.publish"));
205
+ return { documentId, entries: publishedEntries };
201
206
  }
202
207
  async function unpublish(opts = {}) {
203
208
  const { documentId, ...params } = opts;
@@ -209,8 +214,8 @@ const createContentTypeRepository = (uid) => {
209
214
  )(params);
210
215
  const versionsToDelete = await strapi.db.query(uid).findMany(query);
211
216
  await async.map(versionsToDelete, (entry) => entries.delete(entry.id));
212
- versionsToDelete.forEach(curriedEmitEvent(uid, "entry.unpublish"));
213
- return { versions: versionsToDelete };
217
+ versionsToDelete.forEach(emitEvent("entry.unpublish"));
218
+ return { documentId, entries: versionsToDelete };
214
219
  }
215
220
  async function discardDraft(opts = {}) {
216
221
  const { documentId, ...params } = opts;
@@ -242,8 +247,8 @@ const createContentTypeRepository = (uid) => {
242
247
  versionsToDraft,
243
248
  (entry) => entries.discardDraft(entry, queryParams)
244
249
  );
245
- draftEntries.forEach(curriedEmitEvent(uid, "entry.draft-discard"));
246
- return { versions: draftEntries };
250
+ draftEntries.forEach(emitEvent("entry.draft-discard"));
251
+ return { documentId, entries: draftEntries };
247
252
  }
248
253
  async function updateComponents$1(entry, data) {
249
254
  return updateComponents(uid, entry, data);
@@ -1 +1 @@
1
- {"version":3,"file":"repository.mjs","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';\nimport { emitEvent } from './events';\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 entriesToDelete.forEach(emitEvent(uid, 'entry.delete'));\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 emitEvent(uid, 'entry.create', doc);\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 clonedEntries.forEach(emitEvent(uid, 'entry.create'));\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 emitEvent(uid, '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(uid, 'entry.create', updatedDraft);\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 const [draftsToPublish, publishedToDelete] = 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'],\n }),\n ]);\n\n // Delete all published versions\n await async.map(publishedToDelete, (entry: any) => entries.delete(entry.id));\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 versions.forEach(emitEvent(uid, 'entry.publish'));\n\n return { versions };\n }\n\n async function unpublish(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\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(uid, 'entry.unpublish'));\n\n return { versions: versionsToDelete };\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 const [versionsToDraft, versionsToDelete] = 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'],\n }),\n ]);\n\n // Delete all drafts\n await async.map(versionsToDelete, (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 draftEntries.forEach(emitEvent(uid, 'entry.draft-discard'));\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","DP.defaultToDraft","DP.statusToLookup","i18n.defaultLocale","i18n.localeToLookup","transformParamsDocumentId","query","i18n.multiLocaleToLookup","emitEvent","DP.filterDataPublishedAt","DP.setStatusToDraft","DP.statusToData","i18n.localeToData","doc","DP.defaultStatus","updateComponents","components.updateComponents","omitComponentData","components.omitComponentData"],"mappings":"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"}
1
+ {"version":3,"file":"repository.mjs","sources":["../../../src/services/document-service/repository.ts"],"sourcesContent":["import { omit, assoc, merge, curry } 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';\nimport { createEventManager } from './events';\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 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 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 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 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 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 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 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 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 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 const [draftsToPublish, publishedToDelete] = 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'],\n }),\n ]);\n\n // Delete all published versions\n await async.map(publishedToDelete, (entry: any) => entries.delete(entry.id));\n\n // Transform draft entry data and create published versions\n const publishedEntries = await async.map(draftsToPublish, (draft: unknown) =>\n entries.publish(draft, queryParams)\n );\n\n publishedEntries.forEach(emitEvent('entry.publish'));\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 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 i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const [versionsToDraft, versionsToDelete] = 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'],\n }),\n ]);\n\n // Delete all drafts\n await async.map(versionsToDelete, (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 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":["contentTypesUtils","DP.defaultToDraft","DP.statusToLookup","i18n.defaultLocale","i18n.multiLocaleToLookup","transformParamsDocumentId","i18n.localeToLookup","query","DP.filterDataPublishedAt","DP.setStatusToDraft","DP.statusToData","i18n.localeToData","doc","DP.defaultStatus","updateComponents","components.updateComponents","omitComponentData","components.omitComponentData"],"mappings":"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"}
@@ -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 data = require("./data.js");
5
5
  const fields = require("./fields.js");
6
6
  const populate = require("./populate.js");
@@ -28,6 +28,6 @@ async function transformParamsDocumentId(uid, query) {
28
28
  populate: populate$1
29
29
  };
30
30
  }
31
- const curriedTransformParamsDocumentId = _.curry(transformParamsDocumentId);
31
+ const curriedTransformParamsDocumentId = fp.curry(transformParamsDocumentId);
32
32
  exports.transformParamsDocumentId = curriedTransformParamsDocumentId;
33
33
  //# sourceMappingURL=id-transform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"id-transform.js","sources":["../../../../src/services/document-service/transform/id-transform.ts"],"sourcesContent":["import { curry } from 'lodash/fp';\n\nimport { UID, Modules } from '@strapi/types';\n\nimport { transformData } from './data';\nimport { transformFields } from './fields';\nimport { transformPopulate } from './populate';\n\n/**\n * Transform input of a query to map document ids to entity ids.\n */\nasync function transformParamsDocumentId(\n uid: UID.Schema,\n query: Modules.Documents.Params.All\n): Promise<Modules.Documents.Params.All> {\n // Transform relational documentIds to entity ids\n let data = query.data;\n if (query.data) {\n data = await transformData(query.data, {\n locale: query.locale,\n status: query.status,\n uid,\n });\n }\n\n // Make sure documentId is always present in the response\n let fields = query.fields;\n if (query.fields) {\n fields = transformFields(query.fields) as typeof query.fields;\n }\n\n let populate = query.populate;\n if (query.populate) {\n populate = (await transformPopulate(query.populate, { uid })) as typeof query.populate;\n }\n\n return {\n ...query,\n data,\n fields,\n populate,\n };\n}\n\nconst curriedTransformParamsDocumentId = curry(transformParamsDocumentId);\n\nexport { curriedTransformParamsDocumentId as transformParamsDocumentId };\n"],"names":["data","transformData","fields","transformFields","populate","transformPopulate","curry"],"mappings":";;;;;;AAWA,eAAe,0BACb,KACA,OACuC;AAEvC,MAAIA,SAAO,MAAM;AACjB,MAAI,MAAM,MAAM;AACPA,aAAA,MAAMC,KAAAA,cAAc,MAAM,MAAM;AAAA,MACrC,QAAQ,MAAM;AAAA,MACd,QAAQ,MAAM;AAAA,MACd;AAAA,IAAA,CACD;AAAA,EACH;AAGA,MAAIC,WAAS,MAAM;AACnB,MAAI,MAAM,QAAQ;AACPA,eAAAC,OAAA,gBAAgB,MAAM,MAAM;AAAA,EACvC;AAEA,MAAIC,aAAW,MAAM;AACrB,MAAI,MAAM,UAAU;AAClBA,iBAAY,MAAMC,SAAAA,kBAAkB,MAAM,UAAU,EAAE,KAAK;AAAA,EAC7D;AAEO,SAAA;AAAA,IACL,GAAG;AAAA,IAAA,MACHL;AAAAA,IAAA,QACAE;AAAAA,IAAA,UACAE;AAAAA,EAAA;AAEJ;AAEM,MAAA,mCAAmCE,QAAM,yBAAyB;;"}
1
+ {"version":3,"file":"id-transform.js","sources":["../../../../src/services/document-service/transform/id-transform.ts"],"sourcesContent":["import { curry } from 'lodash/fp';\n\nimport { UID, Modules } from '@strapi/types';\n\nimport { transformData } from './data';\nimport { transformFields } from './fields';\nimport { transformPopulate } from './populate';\n\n/**\n * Transform input of a query to map document ids to entity ids.\n */\nasync function transformParamsDocumentId(\n uid: UID.Schema,\n query: Modules.Documents.Params.All\n): Promise<Modules.Documents.Params.All> {\n // Transform relational documentIds to entity ids\n let data = query.data;\n if (query.data) {\n data = await transformData(query.data, {\n locale: query.locale,\n status: query.status,\n uid,\n });\n }\n\n // Make sure documentId is always present in the response\n let fields = query.fields;\n if (query.fields) {\n fields = transformFields(query.fields) as typeof query.fields;\n }\n\n let populate = query.populate;\n if (query.populate) {\n populate = (await transformPopulate(query.populate, { uid })) as typeof query.populate;\n }\n\n return {\n ...query,\n data,\n fields,\n populate,\n };\n}\n\nconst curriedTransformParamsDocumentId = curry(transformParamsDocumentId);\n\nexport { curriedTransformParamsDocumentId as transformParamsDocumentId };\n"],"names":["data","transformData","fields","transformFields","populate","transformPopulate","curry"],"mappings":";;;;;;AAWA,eAAe,0BACb,KACA,OACuC;AAEvC,MAAIA,SAAO,MAAM;AACjB,MAAI,MAAM,MAAM;AACPA,aAAA,MAAMC,KAAAA,cAAc,MAAM,MAAM;AAAA,MACrC,QAAQ,MAAM;AAAA,MACd,QAAQ,MAAM;AAAA,MACd;AAAA,IAAA,CACD;AAAA,EACH;AAGA,MAAIC,WAAS,MAAM;AACnB,MAAI,MAAM,QAAQ;AACPA,eAAAC,OAAA,gBAAgB,MAAM,MAAM;AAAA,EACvC;AAEA,MAAIC,aAAW,MAAM;AACrB,MAAI,MAAM,UAAU;AAClBA,iBAAY,MAAMC,SAAAA,kBAAkB,MAAM,UAAU,EAAE,KAAK;AAAA,EAC7D;AAEO,SAAA;AAAA,IACL,GAAG;AAAA,IAAA,MACHL;AAAAA,IAAA,QACAE;AAAAA,IAAA,UACAE;AAAAA,EAAA;AAEJ;AAEM,MAAA,mCAAmCE,SAAM,yBAAyB;;"}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const _ = require("lodash/fp");
4
- const transformParamsToQuery = _.curry((uid, params) => {
3
+ const fp = require("lodash/fp");
4
+ const transformParamsToQuery = fp.curry((uid, params) => {
5
5
  const query = strapi.get("query-params").transform(uid, params);
6
- return _.assoc("where", { ...params?.lookup, ...query.where }, query);
6
+ return fp.assoc("where", { ...params?.lookup, ...query.where }, query);
7
7
  });
8
8
  exports.transformParamsToQuery = transformParamsToQuery;
9
9
  //# sourceMappingURL=query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sources":["../../../../src/services/document-service/transform/query.ts"],"sourcesContent":["import type { UID } from '@strapi/types';\n\nimport { curry, assoc } from 'lodash/fp';\n\nconst transformParamsToQuery = curry((uid: UID.Schema, params: any) => {\n const query = strapi.get('query-params').transform(uid, params);\n\n return assoc('where', { ...params?.lookup, ...query.where }, query);\n});\n\nexport { transformParamsToQuery };\n"],"names":["curry","assoc"],"mappings":";;;AAIA,MAAM,yBAAyBA,EAAA,MAAM,CAAC,KAAiB,WAAgB;AACrE,QAAM,QAAQ,OAAO,IAAI,cAAc,EAAE,UAAU,KAAK,MAAM;AAEvD,SAAAC,EAAA,MAAM,SAAS,EAAE,GAAG,QAAQ,QAAQ,GAAG,MAAM,SAAS,KAAK;AACpE,CAAC;;"}
1
+ {"version":3,"file":"query.js","sources":["../../../../src/services/document-service/transform/query.ts"],"sourcesContent":["import type { UID } from '@strapi/types';\n\nimport { curry, assoc } from 'lodash/fp';\n\nconst transformParamsToQuery = curry((uid: UID.Schema, params: any) => {\n const query = strapi.get('query-params').transform(uid, params);\n\n return assoc('where', { ...params?.lookup, ...query.where }, query);\n});\n\nexport { transformParamsToQuery };\n"],"names":["curry","assoc"],"mappings":";;;AAIA,MAAM,yBAAyBA,GAAA,MAAM,CAAC,KAAiB,WAAgB;AACrE,QAAM,QAAQ,OAAO,IAAI,cAAc,EAAE,UAAU,KAAK,MAAM;AAEvD,SAAAC,GAAA,MAAM,SAAS,EAAE,GAAG,QAAQ,QAAQ,GAAG,MAAM,SAAS,KAAK;AACpE,CAAC;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"data-ids.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/extract/data-ids.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAMrC,UAAU,OAAO;IACf,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;CAChC;AA8BD;;;GAGG;AACH,QAAA,MAAM,cAAc,UAAW,KAAK,QAAQ,OAAO,MAAM,EAAE,GAAG,CAAC,UAAU,OAAO,qDA8B/E,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"data-ids.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/extract/data-ids.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAMrC,UAAU,OAAO;IACf,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;CAChC;AA8BD;;;GAGG;AACH,QAAA,MAAM,cAAc,UAAW,KAAK,QAAQ,OAAO,MAAM,EAAE,GAAG,CAAC,UAAU,OAAO,qDAkC/E,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -1,10 +1,10 @@
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 i18n = require("../utils/i18n.js");
5
5
  const dp = require("../utils/dp.js");
6
6
  const mapRelation = require("../utils/map-relation.js");
7
- const addRelationDocId = _.curry(
7
+ const addRelationDocId = fp.curry(
8
8
  (idMap, targetUid, source, relation) => {
9
9
  const targetLocale = i18n.getRelationTargetLocale(relation, {
10
10
  targetUid,
@@ -29,6 +29,9 @@ const addRelationDocId = _.curry(
29
29
  const extractDataIds = (idMap, data, source) => {
30
30
  return mapRelation.traverseEntityRelations(
31
31
  async ({ attribute, value }) => {
32
+ if (!attribute) {
33
+ return;
34
+ }
32
35
  const targetUid = attribute.target;
33
36
  const addDocId = addRelationDocId(idMap, targetUid, source);
34
37
  return mapRelation.mapRelation((relation) => {