@strapi/core 5.0.0-beta.0 → 5.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (707) hide show
  1. package/dist/Strapi.d.ts +46 -57
  2. package/dist/Strapi.d.ts.map +1 -1
  3. package/dist/Strapi.js +145 -220
  4. package/dist/Strapi.js.map +1 -1
  5. package/dist/Strapi.mjs +135 -211
  6. package/dist/Strapi.mjs.map +1 -1
  7. package/dist/configuration/config-loader.d.ts.map +1 -1
  8. package/dist/configuration/config-loader.js +9 -5
  9. package/dist/configuration/config-loader.js.map +1 -1
  10. package/dist/configuration/config-loader.mjs +9 -5
  11. package/dist/configuration/config-loader.mjs.map +1 -1
  12. package/dist/configuration/get-dirs.d.ts +10 -0
  13. package/dist/configuration/get-dirs.d.ts.map +1 -0
  14. package/dist/{utils → configuration}/get-dirs.js +3 -2
  15. package/dist/configuration/get-dirs.js.map +1 -0
  16. package/dist/{utils → configuration}/get-dirs.mjs +3 -2
  17. package/dist/configuration/get-dirs.mjs.map +1 -0
  18. package/dist/configuration/index.d.ts +4 -7
  19. package/dist/configuration/index.d.ts.map +1 -1
  20. package/dist/configuration/index.js +6 -4
  21. package/dist/configuration/index.js.map +1 -1
  22. package/dist/configuration/index.mjs +5 -4
  23. package/dist/configuration/index.mjs.map +1 -1
  24. package/dist/container.d.ts +2 -2
  25. package/dist/container.d.ts.map +1 -1
  26. package/dist/container.js.map +1 -1
  27. package/dist/container.mjs.map +1 -1
  28. package/dist/core-api/controller/collection-type.d.ts +3 -3
  29. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  30. package/dist/core-api/controller/collection-type.js +3 -0
  31. package/dist/core-api/controller/collection-type.js.map +1 -1
  32. package/dist/core-api/controller/collection-type.mjs +3 -0
  33. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  34. package/dist/core-api/controller/index.d.ts +3 -3
  35. package/dist/core-api/controller/index.d.ts.map +1 -1
  36. package/dist/core-api/controller/index.js +5 -5
  37. package/dist/core-api/controller/index.js.map +1 -1
  38. package/dist/core-api/controller/index.mjs +6 -6
  39. package/dist/core-api/controller/index.mjs.map +1 -1
  40. package/dist/core-api/controller/single-type.d.ts +3 -3
  41. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  42. package/dist/core-api/controller/single-type.js +1 -0
  43. package/dist/core-api/controller/single-type.js.map +1 -1
  44. package/dist/core-api/controller/single-type.mjs +1 -0
  45. package/dist/core-api/controller/single-type.mjs.map +1 -1
  46. package/dist/core-api/controller/transform.d.ts +2 -2
  47. package/dist/core-api/controller/transform.d.ts.map +1 -1
  48. package/dist/core-api/controller/transform.js +2 -5
  49. package/dist/core-api/controller/transform.js.map +1 -1
  50. package/dist/core-api/controller/transform.mjs +2 -5
  51. package/dist/core-api/controller/transform.mjs.map +1 -1
  52. package/dist/core-api/routes/index.d.ts.map +1 -1
  53. package/dist/core-api/service/collection-type.d.ts +11 -17
  54. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  55. package/dist/core-api/service/collection-type.js +18 -7
  56. package/dist/core-api/service/collection-type.js.map +1 -1
  57. package/dist/core-api/service/collection-type.mjs +19 -8
  58. package/dist/core-api/service/collection-type.mjs.map +1 -1
  59. package/dist/core-api/service/index.d.ts +3 -3
  60. package/dist/core-api/service/index.d.ts.map +1 -1
  61. package/dist/core-api/service/index.js.map +1 -1
  62. package/dist/core-api/service/index.mjs.map +1 -1
  63. package/dist/core-api/service/pagination.d.ts +4 -11
  64. package/dist/core-api/service/pagination.d.ts.map +1 -1
  65. package/dist/core-api/service/pagination.js +14 -40
  66. package/dist/core-api/service/pagination.js.map +1 -1
  67. package/dist/core-api/service/pagination.mjs +16 -42
  68. package/dist/core-api/service/pagination.mjs.map +1 -1
  69. package/dist/core-api/service/single-type.d.ts +4 -4
  70. package/dist/core-api/service/single-type.d.ts.map +1 -1
  71. package/dist/core-api/service/single-type.js +9 -2
  72. package/dist/core-api/service/single-type.js.map +1 -1
  73. package/dist/core-api/service/single-type.mjs +9 -2
  74. package/dist/core-api/service/single-type.mjs.map +1 -1
  75. package/dist/domain/content-type/index.d.ts +1 -1
  76. package/dist/domain/content-type/index.d.ts.map +1 -1
  77. package/dist/domain/module/index.d.ts +24 -23
  78. package/dist/domain/module/index.d.ts.map +1 -1
  79. package/dist/domain/module/index.js +2 -1
  80. package/dist/domain/module/index.js.map +1 -1
  81. package/dist/domain/module/index.mjs +3 -2
  82. package/dist/domain/module/index.mjs.map +1 -1
  83. package/dist/ee/index.d.ts +4 -2
  84. package/dist/ee/index.d.ts.map +1 -1
  85. package/dist/ee/index.js.map +1 -1
  86. package/dist/ee/index.mjs.map +1 -1
  87. package/dist/ee/license.d.ts +2 -2
  88. package/dist/ee/license.d.ts.map +1 -1
  89. package/dist/ee/license.js +2 -1
  90. package/dist/ee/license.js.map +1 -1
  91. package/dist/ee/license.mjs +2 -1
  92. package/dist/ee/license.mjs.map +1 -1
  93. package/dist/factories.d.ts +10 -10
  94. package/dist/factories.d.ts.map +1 -1
  95. package/dist/factories.js +6 -2
  96. package/dist/factories.js.map +1 -1
  97. package/dist/factories.mjs +6 -2
  98. package/dist/factories.mjs.map +1 -1
  99. package/dist/index.d.ts +4 -2
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js +25 -1
  102. package/dist/index.js.map +1 -1
  103. package/dist/index.mjs +27 -3
  104. package/dist/index.mjs.map +1 -1
  105. package/dist/loaders/admin.d.ts +2 -2
  106. package/dist/loaders/admin.d.ts.map +1 -1
  107. package/dist/loaders/admin.js +0 -1
  108. package/dist/loaders/admin.js.map +1 -1
  109. package/dist/loaders/admin.mjs +0 -1
  110. package/dist/loaders/admin.mjs.map +1 -1
  111. package/dist/loaders/apis.d.ts +2 -2
  112. package/dist/loaders/apis.d.ts.map +1 -1
  113. package/dist/loaders/apis.js +10 -10
  114. package/dist/loaders/apis.js.map +1 -1
  115. package/dist/loaders/apis.mjs +10 -10
  116. package/dist/loaders/apis.mjs.map +1 -1
  117. package/dist/loaders/components.d.ts +2 -2
  118. package/dist/loaders/components.d.ts.map +1 -1
  119. package/dist/loaders/components.js.map +1 -1
  120. package/dist/loaders/components.mjs.map +1 -1
  121. package/dist/loaders/index.d.ts +2 -2
  122. package/dist/loaders/index.d.ts.map +1 -1
  123. package/dist/loaders/index.js +0 -2
  124. package/dist/loaders/index.js.map +1 -1
  125. package/dist/loaders/index.mjs +0 -2
  126. package/dist/loaders/index.mjs.map +1 -1
  127. package/dist/loaders/middlewares.d.ts +2 -2
  128. package/dist/loaders/middlewares.d.ts.map +1 -1
  129. package/dist/loaders/middlewares.js.map +1 -1
  130. package/dist/loaders/middlewares.mjs.map +1 -1
  131. package/dist/loaders/plugins/get-enabled-plugins.d.ts +2 -2
  132. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  133. package/dist/loaders/plugins/get-enabled-plugins.js +7 -6
  134. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  135. package/dist/loaders/plugins/get-enabled-plugins.mjs +7 -6
  136. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  137. package/dist/loaders/plugins/index.d.ts +2 -2
  138. package/dist/loaders/plugins/index.d.ts.map +1 -1
  139. package/dist/loaders/plugins/index.js.map +1 -1
  140. package/dist/loaders/plugins/index.mjs.map +1 -1
  141. package/dist/loaders/policies.d.ts +2 -2
  142. package/dist/loaders/policies.d.ts.map +1 -1
  143. package/dist/loaders/policies.js.map +1 -1
  144. package/dist/loaders/policies.mjs.map +1 -1
  145. package/dist/loaders/sanitizers.d.ts +2 -2
  146. package/dist/loaders/sanitizers.d.ts.map +1 -1
  147. package/dist/loaders/sanitizers.js.map +1 -1
  148. package/dist/loaders/sanitizers.mjs.map +1 -1
  149. package/dist/loaders/src-index.d.ts +2 -2
  150. package/dist/loaders/src-index.d.ts.map +1 -1
  151. package/dist/loaders/src-index.js.map +1 -1
  152. package/dist/loaders/src-index.mjs.map +1 -1
  153. package/dist/loaders/validators.d.ts +2 -2
  154. package/dist/loaders/validators.d.ts.map +1 -1
  155. package/dist/loaders/validators.js.map +1 -1
  156. package/dist/loaders/validators.mjs.map +1 -1
  157. package/dist/middlewares/body.d.ts +4 -4
  158. package/dist/middlewares/body.d.ts.map +1 -1
  159. package/dist/middlewares/body.js +4 -4
  160. package/dist/middlewares/body.js.map +1 -1
  161. package/dist/middlewares/body.mjs +4 -4
  162. package/dist/middlewares/body.mjs.map +1 -1
  163. package/dist/middlewares/compression.d.ts +2 -2
  164. package/dist/middlewares/compression.d.ts.map +1 -1
  165. package/dist/middlewares/compression.js.map +1 -1
  166. package/dist/middlewares/compression.mjs.map +1 -1
  167. package/dist/middlewares/cors.d.ts +2 -2
  168. package/dist/middlewares/cors.d.ts.map +1 -1
  169. package/dist/middlewares/cors.js +6 -8
  170. package/dist/middlewares/cors.js.map +1 -1
  171. package/dist/middlewares/cors.mjs +6 -8
  172. package/dist/middlewares/cors.mjs.map +1 -1
  173. package/dist/middlewares/errors.d.ts +2 -2
  174. package/dist/middlewares/errors.d.ts.map +1 -1
  175. package/dist/middlewares/errors.js.map +1 -1
  176. package/dist/middlewares/errors.mjs.map +1 -1
  177. package/dist/middlewares/favicon.d.ts +2 -2
  178. package/dist/middlewares/favicon.d.ts.map +1 -1
  179. package/dist/middlewares/favicon.js.map +1 -1
  180. package/dist/middlewares/favicon.mjs.map +1 -1
  181. package/dist/middlewares/index.d.ts +2 -2
  182. package/dist/middlewares/index.d.ts.map +1 -1
  183. package/dist/middlewares/index.js.map +1 -1
  184. package/dist/middlewares/index.mjs.map +1 -1
  185. package/dist/middlewares/ip.d.ts +2 -2
  186. package/dist/middlewares/ip.d.ts.map +1 -1
  187. package/dist/middlewares/ip.js.map +1 -1
  188. package/dist/middlewares/ip.mjs.map +1 -1
  189. package/dist/middlewares/logger.d.ts +2 -2
  190. package/dist/middlewares/logger.d.ts.map +1 -1
  191. package/dist/middlewares/logger.js.map +1 -1
  192. package/dist/middlewares/logger.mjs.map +1 -1
  193. package/dist/middlewares/powered-by.d.ts +2 -2
  194. package/dist/middlewares/powered-by.d.ts.map +1 -1
  195. package/dist/middlewares/powered-by.js.map +1 -1
  196. package/dist/middlewares/powered-by.mjs.map +1 -1
  197. package/dist/middlewares/public.d.ts +2 -2
  198. package/dist/middlewares/public.d.ts.map +1 -1
  199. package/dist/middlewares/public.js +1 -1
  200. package/dist/middlewares/public.js.map +1 -1
  201. package/dist/middlewares/public.mjs +1 -1
  202. package/dist/middlewares/public.mjs.map +1 -1
  203. package/dist/middlewares/query.d.ts +2 -2
  204. package/dist/middlewares/query.d.ts.map +1 -1
  205. package/dist/middlewares/query.js.map +1 -1
  206. package/dist/middlewares/query.mjs.map +1 -1
  207. package/dist/middlewares/response-time.d.ts +2 -2
  208. package/dist/middlewares/response-time.d.ts.map +1 -1
  209. package/dist/middlewares/response-time.js.map +1 -1
  210. package/dist/middlewares/response-time.mjs.map +1 -1
  211. package/dist/middlewares/responses.d.ts +3 -3
  212. package/dist/middlewares/responses.d.ts.map +1 -1
  213. package/dist/middlewares/responses.js.map +1 -1
  214. package/dist/middlewares/responses.mjs.map +1 -1
  215. package/dist/middlewares/security.d.ts +2 -2
  216. package/dist/middlewares/security.d.ts.map +1 -1
  217. package/dist/middlewares/security.js +10 -3
  218. package/dist/middlewares/security.js.map +1 -1
  219. package/dist/middlewares/security.mjs +11 -4
  220. package/dist/middlewares/security.mjs.map +1 -1
  221. package/dist/middlewares/session.d.ts +2 -2
  222. package/dist/middlewares/session.d.ts.map +1 -1
  223. package/dist/middlewares/session.js.map +1 -1
  224. package/dist/middlewares/session.mjs.map +1 -1
  225. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +30 -0
  226. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -0
  227. package/dist/migrations/database/5.0.0-discard-drafts.js +50 -0
  228. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -0
  229. package/dist/migrations/database/5.0.0-discard-drafts.mjs +50 -0
  230. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -0
  231. package/dist/migrations/draft-publish.d.ts.map +1 -1
  232. package/dist/migrations/draft-publish.js +14 -31
  233. package/dist/migrations/draft-publish.js.map +1 -1
  234. package/dist/migrations/draft-publish.mjs +15 -32
  235. package/dist/migrations/draft-publish.mjs.map +1 -1
  236. package/dist/providers/admin.d.ts +3 -0
  237. package/dist/providers/admin.d.ts.map +1 -0
  238. package/dist/providers/admin.js +20 -0
  239. package/dist/providers/admin.js.map +1 -0
  240. package/dist/providers/admin.mjs +21 -0
  241. package/dist/providers/admin.mjs.map +1 -0
  242. package/dist/providers/coreStore.d.ts +3 -0
  243. package/dist/providers/coreStore.d.ts.map +1 -0
  244. package/dist/providers/coreStore.js +11 -0
  245. package/dist/providers/coreStore.js.map +1 -0
  246. package/dist/providers/coreStore.mjs +12 -0
  247. package/dist/providers/coreStore.mjs.map +1 -0
  248. package/dist/providers/cron.d.ts +3 -0
  249. package/dist/providers/cron.d.ts.map +1 -0
  250. package/dist/providers/cron.js +20 -0
  251. package/dist/providers/cron.js.map +1 -0
  252. package/dist/providers/cron.mjs +21 -0
  253. package/dist/providers/cron.mjs.map +1 -0
  254. package/dist/providers/index.d.ts +3 -0
  255. package/dist/providers/index.d.ts.map +1 -0
  256. package/dist/providers/index.js +11 -0
  257. package/dist/providers/index.js.map +1 -0
  258. package/dist/providers/index.mjs +11 -0
  259. package/dist/providers/index.mjs.map +1 -0
  260. package/dist/providers/provider.d.ts +9 -0
  261. package/dist/providers/provider.d.ts.map +1 -0
  262. package/dist/providers/provider.js +5 -0
  263. package/dist/providers/provider.js.map +1 -0
  264. package/dist/providers/provider.mjs +5 -0
  265. package/dist/providers/provider.mjs.map +1 -0
  266. package/dist/providers/registries.d.ts +3 -0
  267. package/dist/providers/registries.d.ts.map +1 -0
  268. package/dist/providers/registries.js +35 -0
  269. package/dist/providers/registries.js.map +1 -0
  270. package/dist/providers/registries.mjs +36 -0
  271. package/dist/providers/registries.mjs.map +1 -0
  272. package/dist/providers/telemetry.d.ts +3 -0
  273. package/dist/providers/telemetry.d.ts.map +1 -0
  274. package/dist/providers/telemetry.js +19 -0
  275. package/dist/providers/telemetry.js.map +1 -0
  276. package/dist/providers/telemetry.mjs +20 -0
  277. package/dist/providers/telemetry.mjs.map +1 -0
  278. package/dist/providers/webhooks.d.ts +3 -0
  279. package/dist/providers/webhooks.d.ts.map +1 -0
  280. package/dist/providers/webhooks.js +30 -0
  281. package/dist/providers/webhooks.js.map +1 -0
  282. package/dist/providers/webhooks.mjs +31 -0
  283. package/dist/providers/webhooks.mjs.map +1 -0
  284. package/dist/registries/apis.d.ts +2 -2
  285. package/dist/registries/apis.d.ts.map +1 -1
  286. package/dist/registries/apis.js.map +1 -1
  287. package/dist/registries/apis.mjs.map +1 -1
  288. package/dist/registries/components.d.ts +6 -6
  289. package/dist/registries/components.d.ts.map +1 -1
  290. package/dist/registries/components.js.map +1 -1
  291. package/dist/registries/components.mjs.map +1 -1
  292. package/dist/registries/content-types.d.ts +5 -5
  293. package/dist/registries/content-types.d.ts.map +1 -1
  294. package/dist/registries/content-types.js.map +1 -1
  295. package/dist/registries/content-types.mjs.map +1 -1
  296. package/dist/registries/controllers.d.ts +10 -10
  297. package/dist/registries/controllers.d.ts.map +1 -1
  298. package/dist/registries/controllers.js.map +1 -1
  299. package/dist/registries/controllers.mjs.map +1 -1
  300. package/dist/registries/custom-fields.d.ts +3 -3
  301. package/dist/registries/custom-fields.d.ts.map +1 -1
  302. package/dist/registries/custom-fields.js.map +1 -1
  303. package/dist/registries/custom-fields.mjs.map +1 -1
  304. package/dist/registries/index.d.ts +0 -1
  305. package/dist/registries/index.d.ts.map +1 -1
  306. package/dist/registries/middlewares.d.ts +6 -6
  307. package/dist/registries/middlewares.d.ts.map +1 -1
  308. package/dist/registries/middlewares.js.map +1 -1
  309. package/dist/registries/middlewares.mjs.map +1 -1
  310. package/dist/registries/modules.d.ts +2 -2
  311. package/dist/registries/modules.d.ts.map +1 -1
  312. package/dist/registries/modules.js.map +1 -1
  313. package/dist/registries/modules.mjs.map +1 -1
  314. package/dist/registries/plugins.d.ts +5 -5
  315. package/dist/registries/plugins.d.ts.map +1 -1
  316. package/dist/registries/plugins.js.map +1 -1
  317. package/dist/registries/plugins.mjs.map +1 -1
  318. package/dist/registries/policies.d.ts +23 -11
  319. package/dist/registries/policies.d.ts.map +1 -1
  320. package/dist/registries/policies.js +64 -18
  321. package/dist/registries/policies.js.map +1 -1
  322. package/dist/registries/policies.mjs +65 -19
  323. package/dist/registries/policies.mjs.map +1 -1
  324. package/dist/registries/services.d.ts +8 -8
  325. package/dist/registries/services.d.ts.map +1 -1
  326. package/dist/registries/services.js.map +1 -1
  327. package/dist/registries/services.mjs.map +1 -1
  328. package/dist/services/auth/index.d.ts +4 -4
  329. package/dist/services/auth/index.d.ts.map +1 -1
  330. package/dist/services/auth/index.js.map +1 -1
  331. package/dist/services/auth/index.mjs.map +1 -1
  332. package/dist/services/config.d.ts +3 -0
  333. package/dist/services/config.d.ts.map +1 -0
  334. package/dist/services/config.js +47 -0
  335. package/dist/services/config.js.map +1 -0
  336. package/dist/services/config.mjs +47 -0
  337. package/dist/services/config.mjs.map +1 -0
  338. package/dist/services/content-api/index.d.ts +21 -3
  339. package/dist/services/content-api/index.d.ts.map +1 -1
  340. package/dist/services/content-api/index.js +28 -2
  341. package/dist/services/content-api/index.js.map +1 -1
  342. package/dist/services/content-api/index.mjs +28 -2
  343. package/dist/services/content-api/index.mjs.map +1 -1
  344. package/dist/services/content-api/permissions/index.d.ts +3 -3
  345. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  346. package/dist/services/content-api/permissions/index.js +1 -1
  347. package/dist/services/content-api/permissions/index.js.map +1 -1
  348. package/dist/services/content-api/permissions/index.mjs +1 -1
  349. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  350. package/dist/services/core-store.d.ts.map +1 -1
  351. package/dist/services/cron.d.ts +2 -2
  352. package/dist/services/cron.d.ts.map +1 -1
  353. package/dist/services/cron.js.map +1 -1
  354. package/dist/services/cron.mjs.map +1 -1
  355. package/dist/services/custom-fields.d.ts +2 -2
  356. package/dist/services/custom-fields.d.ts.map +1 -1
  357. package/dist/services/custom-fields.js.map +1 -1
  358. package/dist/services/custom-fields.mjs.map +1 -1
  359. package/dist/services/document-service/attributes/index.d.ts +6 -0
  360. package/dist/services/document-service/attributes/index.d.ts.map +1 -0
  361. package/dist/services/{entity-service → document-service}/attributes/index.js +5 -5
  362. package/dist/services/document-service/attributes/index.js.map +1 -0
  363. package/dist/services/{entity-service → document-service}/attributes/index.mjs +5 -5
  364. package/dist/services/document-service/attributes/index.mjs.map +1 -0
  365. package/dist/services/document-service/attributes/transforms.d.ts +10 -0
  366. package/dist/services/document-service/attributes/transforms.d.ts.map +1 -0
  367. package/dist/services/document-service/attributes/transforms.js.map +1 -0
  368. package/dist/services/document-service/attributes/transforms.mjs.map +1 -0
  369. package/dist/services/document-service/common.d.ts +2 -2
  370. package/dist/services/document-service/common.d.ts.map +1 -1
  371. package/dist/services/document-service/common.js.map +1 -1
  372. package/dist/services/document-service/common.mjs.map +1 -1
  373. package/dist/services/document-service/components.d.ts +25 -1
  374. package/dist/services/document-service/components.d.ts.map +1 -1
  375. package/dist/services/{entity-service → document-service}/components.js +35 -45
  376. package/dist/services/document-service/components.js.map +1 -0
  377. package/dist/services/{entity-service → document-service}/components.mjs +36 -46
  378. package/dist/services/document-service/components.mjs.map +1 -0
  379. package/dist/services/document-service/draft-and-publish.d.ts +7 -7
  380. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  381. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  382. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  383. package/dist/services/document-service/entries.d.ts +10 -0
  384. package/dist/services/document-service/entries.d.ts.map +1 -0
  385. package/dist/services/document-service/entries.js +96 -0
  386. package/dist/services/document-service/entries.js.map +1 -0
  387. package/dist/services/document-service/entries.mjs +96 -0
  388. package/dist/services/document-service/entries.mjs.map +1 -0
  389. package/dist/services/document-service/events.d.ts +25 -0
  390. package/dist/services/document-service/events.d.ts.map +1 -0
  391. package/dist/services/document-service/events.js +47 -0
  392. package/dist/services/document-service/events.js.map +1 -0
  393. package/dist/services/document-service/events.mjs +47 -0
  394. package/dist/services/document-service/events.mjs.map +1 -0
  395. package/dist/services/document-service/index.d.ts +2 -4
  396. package/dist/services/document-service/index.d.ts.map +1 -1
  397. package/dist/services/document-service/index.js +13 -2
  398. package/dist/services/document-service/index.js.map +1 -1
  399. package/dist/services/document-service/index.mjs +13 -2
  400. package/dist/services/document-service/index.mjs.map +1 -1
  401. package/dist/services/document-service/internationalization.d.ts +5 -5
  402. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  403. package/dist/services/document-service/internationalization.js +14 -5
  404. package/dist/services/document-service/internationalization.js.map +1 -1
  405. package/dist/services/document-service/internationalization.mjs +14 -5
  406. package/dist/services/document-service/internationalization.mjs.map +1 -1
  407. package/dist/services/document-service/middlewares/middleware-manager.d.ts +5 -2
  408. package/dist/services/document-service/middlewares/middleware-manager.d.ts.map +1 -1
  409. package/dist/services/document-service/middlewares/middleware-manager.js +8 -5
  410. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  411. package/dist/services/document-service/middlewares/middleware-manager.mjs +8 -5
  412. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  413. package/dist/services/document-service/params.d.ts +3 -1
  414. package/dist/services/document-service/params.d.ts.map +1 -1
  415. package/dist/services/document-service/params.js.map +1 -0
  416. package/dist/services/document-service/params.mjs.map +1 -0
  417. package/dist/services/document-service/repository.d.ts.map +1 -1
  418. package/dist/services/document-service/repository.js +135 -152
  419. package/dist/services/document-service/repository.js.map +1 -1
  420. package/dist/services/document-service/repository.mjs +118 -135
  421. package/dist/services/document-service/repository.mjs.map +1 -1
  422. package/dist/services/document-service/transform/data.d.ts.map +1 -1
  423. package/dist/services/document-service/transform/data.js +4 -2
  424. package/dist/services/document-service/transform/data.js.map +1 -1
  425. package/dist/services/document-service/transform/data.mjs +4 -2
  426. package/dist/services/document-service/transform/data.mjs.map +1 -1
  427. package/dist/services/document-service/transform/fields.d.ts +2 -2
  428. package/dist/services/document-service/transform/fields.d.ts.map +1 -1
  429. package/dist/services/document-service/transform/fields.js.map +1 -1
  430. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  431. package/dist/services/document-service/transform/id-map.d.ts +3 -3
  432. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  433. package/dist/services/document-service/transform/id-map.js.map +1 -1
  434. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  435. package/dist/services/document-service/transform/id-transform.d.ts +2 -2
  436. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  437. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  438. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  439. package/dist/services/document-service/transform/populate.d.ts +2 -2
  440. package/dist/services/document-service/transform/populate.d.ts.map +1 -1
  441. package/dist/services/document-service/transform/populate.js +1 -1
  442. package/dist/services/document-service/transform/populate.js.map +1 -1
  443. package/dist/services/document-service/transform/populate.mjs +1 -1
  444. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  445. package/dist/services/document-service/transform/query.d.ts +5 -0
  446. package/dist/services/document-service/transform/query.d.ts.map +1 -0
  447. package/dist/services/document-service/transform/query.js +9 -0
  448. package/dist/services/document-service/transform/query.js.map +1 -0
  449. package/dist/services/document-service/transform/query.mjs +9 -0
  450. package/dist/services/document-service/transform/query.mjs.map +1 -0
  451. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +8 -7
  452. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  453. package/dist/services/document-service/transform/relations/extract/data-ids.js +44 -77
  454. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  455. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +44 -77
  456. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  457. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts +8 -4
  458. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  459. package/dist/services/document-service/transform/relations/transform/data-ids.js +60 -125
  460. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  461. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +61 -126
  462. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  463. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts +9 -0
  464. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts.map +1 -0
  465. package/dist/services/document-service/transform/relations/transform/default-locale.js +32 -0
  466. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -0
  467. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +32 -0
  468. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -0
  469. package/dist/services/document-service/transform/relations/utils/dp.d.ts +3 -3
  470. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  471. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  472. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  473. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +6 -6
  474. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  475. package/dist/services/document-service/transform/relations/utils/i18n.js +3 -9
  476. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  477. package/dist/services/document-service/transform/relations/utils/i18n.mjs +3 -9
  478. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  479. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts +6 -0
  480. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -0
  481. package/dist/services/document-service/transform/relations/utils/map-relation.js +91 -0
  482. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -0
  483. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +91 -0
  484. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -0
  485. package/dist/services/document-service/transform/relations/utils/types.d.ts +6 -0
  486. package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -1
  487. package/dist/services/document-service/transform/types.d.ts +3 -3
  488. package/dist/services/document-service/transform/types.d.ts.map +1 -1
  489. package/dist/services/document-service/utils/populate.d.ts +2 -2
  490. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  491. package/dist/services/document-service/utils/populate.js.map +1 -1
  492. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  493. package/dist/services/entity-service/index.d.ts +4 -4
  494. package/dist/services/entity-service/index.d.ts.map +1 -1
  495. package/dist/services/entity-service/index.js +22 -16
  496. package/dist/services/entity-service/index.js.map +1 -1
  497. package/dist/services/entity-service/index.mjs +23 -17
  498. package/dist/services/entity-service/index.mjs.map +1 -1
  499. package/dist/services/entity-validator/index.d.ts +2 -2
  500. package/dist/services/entity-validator/index.d.ts.map +1 -1
  501. package/dist/services/entity-validator/index.js +100 -89
  502. package/dist/services/entity-validator/index.js.map +1 -1
  503. package/dist/services/entity-validator/index.mjs +100 -89
  504. package/dist/services/entity-validator/index.mjs.map +1 -1
  505. package/dist/services/entity-validator/validators.d.ts +18 -18
  506. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  507. package/dist/services/entity-validator/validators.js +6 -1
  508. package/dist/services/entity-validator/validators.js.map +1 -1
  509. package/dist/services/entity-validator/validators.mjs +6 -1
  510. package/dist/services/entity-validator/validators.mjs.map +1 -1
  511. package/dist/services/event-hub.d.ts +1 -0
  512. package/dist/services/event-hub.d.ts.map +1 -1
  513. package/dist/services/event-hub.js +9 -4
  514. package/dist/services/event-hub.js.map +1 -1
  515. package/dist/services/event-hub.mjs +9 -4
  516. package/dist/services/event-hub.mjs.map +1 -1
  517. package/dist/services/features.d.ts +3 -3
  518. package/dist/services/features.d.ts.map +1 -1
  519. package/dist/services/features.js.map +1 -1
  520. package/dist/services/features.mjs.map +1 -1
  521. package/dist/services/fs.d.ts +2 -2
  522. package/dist/services/fs.d.ts.map +1 -1
  523. package/dist/services/fs.js.map +1 -1
  524. package/dist/services/fs.mjs.map +1 -1
  525. package/dist/services/metrics/admin-user-hash.d.ts +2 -2
  526. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  527. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  528. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  529. package/dist/services/metrics/index.d.ts +2 -2
  530. package/dist/services/metrics/index.d.ts.map +1 -1
  531. package/dist/services/metrics/index.js.map +1 -1
  532. package/dist/services/metrics/index.mjs.map +1 -1
  533. package/dist/services/metrics/middleware.d.ts +2 -2
  534. package/dist/services/metrics/middleware.d.ts.map +1 -1
  535. package/dist/services/metrics/middleware.js.map +1 -1
  536. package/dist/services/metrics/middleware.mjs.map +1 -1
  537. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  538. package/dist/services/metrics/rate-limiter.js.map +1 -1
  539. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  540. package/dist/services/metrics/sender.d.ts +3 -3
  541. package/dist/services/metrics/sender.d.ts.map +1 -1
  542. package/dist/services/metrics/sender.js.map +1 -1
  543. package/dist/services/metrics/sender.mjs.map +1 -1
  544. package/dist/services/query-params.d.ts +7 -0
  545. package/dist/services/query-params.d.ts.map +1 -0
  546. package/dist/services/query-params.js +12 -0
  547. package/dist/services/query-params.js.map +1 -0
  548. package/dist/services/query-params.mjs +13 -0
  549. package/dist/services/query-params.mjs.map +1 -0
  550. package/dist/services/reloader.d.ts +7 -0
  551. package/dist/services/reloader.d.ts.map +1 -0
  552. package/dist/services/reloader.js +36 -0
  553. package/dist/services/reloader.js.map +1 -0
  554. package/dist/services/reloader.mjs +36 -0
  555. package/dist/services/reloader.mjs.map +1 -0
  556. package/dist/services/server/admin-api.d.ts +3 -3
  557. package/dist/services/server/admin-api.d.ts.map +1 -1
  558. package/dist/services/server/admin-api.js.map +1 -1
  559. package/dist/services/server/admin-api.mjs.map +1 -1
  560. package/dist/services/server/api.d.ts +3 -3
  561. package/dist/services/server/api.d.ts.map +1 -1
  562. package/dist/services/server/api.js.map +1 -1
  563. package/dist/services/server/api.mjs.map +1 -1
  564. package/dist/services/server/compose-endpoint.d.ts +2 -2
  565. package/dist/services/server/compose-endpoint.d.ts.map +1 -1
  566. package/dist/services/server/compose-endpoint.js +1 -2
  567. package/dist/services/server/compose-endpoint.js.map +1 -1
  568. package/dist/services/server/compose-endpoint.mjs +2 -3
  569. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  570. package/dist/services/server/content-api.d.ts +3 -3
  571. package/dist/services/server/content-api.d.ts.map +1 -1
  572. package/dist/services/server/content-api.js.map +1 -1
  573. package/dist/services/server/content-api.mjs.map +1 -1
  574. package/dist/services/server/http-server.d.ts +2 -2
  575. package/dist/services/server/http-server.d.ts.map +1 -1
  576. package/dist/services/server/http-server.js.map +1 -1
  577. package/dist/services/server/http-server.mjs.map +1 -1
  578. package/dist/services/server/index.d.ts +2 -2
  579. package/dist/services/server/index.d.ts.map +1 -1
  580. package/dist/services/server/index.js +1 -2
  581. package/dist/services/server/index.js.map +1 -1
  582. package/dist/services/server/index.mjs +1 -2
  583. package/dist/services/server/index.mjs.map +1 -1
  584. package/dist/services/server/koa.d.ts.map +1 -1
  585. package/dist/services/server/koa.js +1 -1
  586. package/dist/services/server/koa.js.map +1 -1
  587. package/dist/services/server/koa.mjs +1 -1
  588. package/dist/services/server/koa.mjs.map +1 -1
  589. package/dist/services/server/middleware.d.ts +4 -4
  590. package/dist/services/server/middleware.d.ts.map +1 -1
  591. package/dist/services/server/middleware.js.map +1 -1
  592. package/dist/services/server/middleware.mjs.map +1 -1
  593. package/dist/services/server/policy.d.ts +3 -3
  594. package/dist/services/server/policy.d.ts.map +1 -1
  595. package/dist/services/server/policy.js +4 -4
  596. package/dist/services/server/policy.js.map +1 -1
  597. package/dist/services/server/policy.mjs +4 -4
  598. package/dist/services/server/policy.mjs.map +1 -1
  599. package/dist/services/server/register-middlewares.d.ts +2 -2
  600. package/dist/services/server/register-middlewares.d.ts.map +1 -1
  601. package/dist/services/server/register-middlewares.js.map +1 -1
  602. package/dist/services/server/register-middlewares.mjs.map +1 -1
  603. package/dist/services/server/register-routes.d.ts +2 -2
  604. package/dist/services/server/register-routes.d.ts.map +1 -1
  605. package/dist/services/server/register-routes.js +3 -3
  606. package/dist/services/server/register-routes.js.map +1 -1
  607. package/dist/services/server/register-routes.mjs +3 -3
  608. package/dist/services/server/register-routes.mjs.map +1 -1
  609. package/dist/services/server/routing.d.ts +5 -5
  610. package/dist/services/server/routing.d.ts.map +1 -1
  611. package/dist/services/server/routing.js.map +1 -1
  612. package/dist/services/server/routing.mjs.map +1 -1
  613. package/dist/services/utils/dynamic-zones.d.ts.map +1 -1
  614. package/dist/services/utils/dynamic-zones.js +2 -1
  615. package/dist/services/utils/dynamic-zones.js.map +1 -1
  616. package/dist/services/utils/dynamic-zones.mjs +2 -1
  617. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  618. package/dist/services/webhook-runner.d.ts +2 -1
  619. package/dist/services/webhook-runner.d.ts.map +1 -1
  620. package/dist/services/webhook-runner.js.map +1 -1
  621. package/dist/services/webhook-runner.mjs.map +1 -1
  622. package/dist/services/webhook-store.d.ts +2 -8
  623. package/dist/services/webhook-store.d.ts.map +1 -1
  624. package/dist/services/webhook-store.js +14 -8
  625. package/dist/services/webhook-store.js.map +1 -1
  626. package/dist/services/webhook-store.mjs +14 -8
  627. package/dist/services/webhook-store.mjs.map +1 -1
  628. package/dist/utils/convert-custom-field-type.d.ts +2 -2
  629. package/dist/utils/convert-custom-field-type.d.ts.map +1 -1
  630. package/dist/utils/convert-custom-field-type.js.map +1 -1
  631. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  632. package/dist/utils/fetch.d.ts +3 -3
  633. package/dist/utils/fetch.d.ts.map +1 -1
  634. package/dist/utils/fetch.js.map +1 -1
  635. package/dist/utils/fetch.mjs.map +1 -1
  636. package/dist/utils/index.d.ts +2 -1
  637. package/dist/utils/index.d.ts.map +1 -1
  638. package/dist/utils/is-initialized.d.ts +2 -2
  639. package/dist/utils/is-initialized.d.ts.map +1 -1
  640. package/dist/utils/is-initialized.js.map +1 -1
  641. package/dist/utils/is-initialized.mjs.map +1 -1
  642. package/dist/utils/load-files.d.ts.map +1 -1
  643. package/dist/utils/open-browser.d.ts +2 -2
  644. package/dist/utils/open-browser.d.ts.map +1 -1
  645. package/dist/utils/open-browser.js.map +1 -1
  646. package/dist/utils/open-browser.mjs.map +1 -1
  647. package/dist/utils/resolve-working-dirs.d.ts +19 -0
  648. package/dist/utils/resolve-working-dirs.d.ts.map +1 -0
  649. package/dist/utils/resolve-working-dirs.js +13 -0
  650. package/dist/utils/resolve-working-dirs.js.map +1 -0
  651. package/dist/utils/resolve-working-dirs.mjs +11 -0
  652. package/dist/utils/resolve-working-dirs.mjs.map +1 -0
  653. package/dist/utils/signals.d.ts +2 -2
  654. package/dist/utils/signals.d.ts.map +1 -1
  655. package/dist/utils/signals.js.map +1 -1
  656. package/dist/utils/signals.mjs.map +1 -1
  657. package/dist/utils/startup-logger.d.ts +2 -2
  658. package/dist/utils/startup-logger.d.ts.map +1 -1
  659. package/dist/utils/startup-logger.js.map +1 -1
  660. package/dist/utils/startup-logger.mjs.map +1 -1
  661. package/dist/utils/transform-content-types-to-models.d.ts +54 -99
  662. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  663. package/dist/utils/transform-content-types-to-models.js +105 -57
  664. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  665. package/dist/utils/transform-content-types-to-models.mjs +105 -57
  666. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  667. package/dist/utils/update-notifier/index.d.ts +2 -7
  668. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  669. package/dist/utils/update-notifier/index.js +11 -14
  670. package/dist/utils/update-notifier/index.js.map +1 -1
  671. package/dist/utils/update-notifier/index.mjs +11 -14
  672. package/dist/utils/update-notifier/index.mjs.map +1 -1
  673. package/package.json +28 -26
  674. package/dist/registries/config.d.ts +0 -4
  675. package/dist/registries/config.d.ts.map +0 -1
  676. package/dist/registries/config.js +0 -31
  677. package/dist/registries/config.js.map +0 -1
  678. package/dist/registries/config.mjs +0 -32
  679. package/dist/registries/config.mjs.map +0 -1
  680. package/dist/services/document-service/transform/relations/utils/data.js +0 -12
  681. package/dist/services/document-service/transform/relations/utils/data.js.map +0 -1
  682. package/dist/services/document-service/transform/relations/utils/data.mjs +0 -12
  683. package/dist/services/document-service/transform/relations/utils/data.mjs.map +0 -1
  684. package/dist/services/entity-service/attributes/index.d.ts +0 -6
  685. package/dist/services/entity-service/attributes/index.d.ts.map +0 -1
  686. package/dist/services/entity-service/attributes/index.js.map +0 -1
  687. package/dist/services/entity-service/attributes/index.mjs.map +0 -1
  688. package/dist/services/entity-service/attributes/transforms.d.ts +0 -10
  689. package/dist/services/entity-service/attributes/transforms.d.ts.map +0 -1
  690. package/dist/services/entity-service/attributes/transforms.js.map +0 -1
  691. package/dist/services/entity-service/attributes/transforms.mjs.map +0 -1
  692. package/dist/services/entity-service/components.d.ts +0 -20
  693. package/dist/services/entity-service/components.d.ts.map +0 -1
  694. package/dist/services/entity-service/components.js.map +0 -1
  695. package/dist/services/entity-service/components.mjs.map +0 -1
  696. package/dist/services/entity-service/params.d.ts +0 -8
  697. package/dist/services/entity-service/params.d.ts.map +0 -1
  698. package/dist/services/entity-service/params.js.map +0 -1
  699. package/dist/services/entity-service/params.mjs.map +0 -1
  700. package/dist/utils/get-dirs.d.ts +0 -9
  701. package/dist/utils/get-dirs.d.ts.map +0 -1
  702. package/dist/utils/get-dirs.js.map +0 -1
  703. package/dist/utils/get-dirs.mjs.map +0 -1
  704. /package/dist/services/{entity-service → document-service}/attributes/transforms.js +0 -0
  705. /package/dist/services/{entity-service → document-service}/attributes/transforms.mjs +0 -0
  706. /package/dist/services/{entity-service → document-service}/params.js +0 -0
  707. /package/dist/services/{entity-service → document-service}/params.mjs +0 -0
@@ -0,0 +1,10 @@
1
+ import type { Schema } from '@strapi/types';
2
+ type Transforms = {
3
+ [TKind in Schema.Attribute.Kind]?: (value: unknown, context: {
4
+ attribute: Schema.Attribute.AnyAttribute;
5
+ attributeName: string;
6
+ }) => any;
7
+ };
8
+ declare const transforms: Transforms;
9
+ export default transforms;
10
+ //# sourceMappingURL=transforms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transforms.d.ts","sourceRoot":"","sources":["../../../../src/services/document-service/attributes/transforms.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAG5C,KAAK,UAAU,GAAG;KACf,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CACjC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC;QACzC,aAAa,EAAE,MAAM,CAAC;KACvB,KACE,GAAG;CACT,CAAC;AAEF,QAAA,MAAM,UAAU,EAAE,UAgBjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transforms.js","sources":["../../../../src/services/document-service/attributes/transforms.ts"],"sourcesContent":["import { getOr, toNumber, isString } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport bcrypt from 'bcryptjs';\n\ntype Transforms = {\n [TKind in Schema.Attribute.Kind]?: (\n value: unknown,\n context: {\n attribute: Schema.Attribute.AnyAttribute;\n attributeName: string;\n }\n ) => any;\n};\n\nconst transforms: Transforms = {\n password(value, context) {\n const { attribute } = context;\n\n if (attribute.type !== 'password') {\n throw new Error('Invalid attribute type');\n }\n\n if (!isString(value) && !(value instanceof Buffer)) {\n return value;\n }\n\n const rounds = toNumber(getOr(10, 'encryption.rounds', attribute));\n\n return bcrypt.hashSync(value.toString(), rounds);\n },\n};\n\nexport default transforms;\n"],"names":["isString","toNumber","getOr","bcrypt"],"mappings":";;;;;AAcA,MAAM,aAAyB;AAAA,EAC7B,SAAS,OAAO,SAAS;AACjB,UAAA,EAAE,UAAc,IAAA;AAElB,QAAA,UAAU,SAAS,YAAY;AAC3B,YAAA,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AAEA,QAAI,CAACA,EAAS,SAAA,KAAK,KAAK,EAAE,iBAAiB,SAAS;AAC3C,aAAA;AAAA,IACT;AAEA,UAAM,SAASC,EAAAA,SAASC,EAAA,MAAM,IAAI,qBAAqB,SAAS,CAAC;AAEjE,WAAOC,gBAAAA,QAAO,SAAS,MAAM,YAAY,MAAM;AAAA,EACjD;AACF;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transforms.mjs","sources":["../../../../src/services/document-service/attributes/transforms.ts"],"sourcesContent":["import { getOr, toNumber, isString } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport bcrypt from 'bcryptjs';\n\ntype Transforms = {\n [TKind in Schema.Attribute.Kind]?: (\n value: unknown,\n context: {\n attribute: Schema.Attribute.AnyAttribute;\n attributeName: string;\n }\n ) => any;\n};\n\nconst transforms: Transforms = {\n password(value, context) {\n const { attribute } = context;\n\n if (attribute.type !== 'password') {\n throw new Error('Invalid attribute type');\n }\n\n if (!isString(value) && !(value instanceof Buffer)) {\n return value;\n }\n\n const rounds = toNumber(getOr(10, 'encryption.rounds', attribute));\n\n return bcrypt.hashSync(value.toString(), rounds);\n },\n};\n\nexport default transforms;\n"],"names":[],"mappings":";;AAcA,MAAM,aAAyB;AAAA,EAC7B,SAAS,OAAO,SAAS;AACjB,UAAA,EAAE,UAAc,IAAA;AAElB,QAAA,UAAU,SAAS,YAAY;AAC3B,YAAA,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AAEA,QAAI,CAAC,SAAS,KAAK,KAAK,EAAE,iBAAiB,SAAS;AAC3C,aAAA;AAAA,IACT;AAEA,UAAM,SAAS,SAAS,MAAM,IAAI,qBAAqB,SAAS,CAAC;AAEjE,WAAO,OAAO,SAAS,MAAM,YAAY,MAAM;AAAA,EACjD;AACF;"}
@@ -1,4 +1,4 @@
1
- import type { Common, Documents } from '@strapi/types';
2
- export type RepositoryFactoryMethod = (uid: Common.UID.CollectionType) => Documents.ServiceInstance;
1
+ import type { UID, Modules } from '@strapi/types';
2
+ export type RepositoryFactoryMethod = <TContentTypeUID extends UID.ContentType>(uid: TContentTypeUID) => Modules.Documents.ServiceInstance<TContentTypeUID>;
3
3
  export declare const wrapInTransaction: (fn: (...args: any) => any) => (...args: any[]) => Promise<any>;
4
4
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,eAAe,CAAC;AAEpG,eAAO,MAAM,iBAAiB,iBAAkB,GAAG,KAAK,GAAG,eACxC,GAAG,EAAE,iBACvB,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,uBAAuB,GAAG,CAAC,eAAe,SAAS,GAAG,CAAC,WAAW,EAC5E,GAAG,EAAE,eAAe,KACjB,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,iBAAiB,OAAQ,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,eACxC,GAAG,EAAE,iBACvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sources":["../../../src/services/document-service/common.ts"],"sourcesContent":["import type { Common, Documents } from '@strapi/types';\n\nexport type RepositoryFactoryMethod = (uid: Common.UID.CollectionType) => Documents.ServiceInstance;\n\nexport const wrapInTransaction = (fn: (...args: any) => any) => {\n return (...args: any[]) => strapi.db.transaction?.(() => fn(...args));\n};\n"],"names":[],"mappings":";;AAIa,MAAA,oBAAoB,CAAC,OAA8B;AACvD,SAAA,IAAI,SAAgB,OAAO,GAAG,cAAc,MAAM,GAAG,GAAG,IAAI,CAAC;AACtE;;"}
1
+ {"version":3,"file":"common.js","sources":["../../../src/services/document-service/common.ts"],"sourcesContent":["import type { UID, Modules } from '@strapi/types';\n\nexport type RepositoryFactoryMethod = <TContentTypeUID extends UID.ContentType>(\n uid: TContentTypeUID\n) => Modules.Documents.ServiceInstance<TContentTypeUID>;\n\nexport const wrapInTransaction = (fn: (...args: any) => any) => {\n return (...args: any[]) => strapi.db.transaction?.(() => fn(...args));\n};\n"],"names":[],"mappings":";;AAMa,MAAA,oBAAoB,CAAC,OAA8B;AACvD,SAAA,IAAI,SAAgB,OAAO,GAAG,cAAc,MAAM,GAAG,GAAG,IAAI,CAAC;AACtE;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"common.mjs","sources":["../../../src/services/document-service/common.ts"],"sourcesContent":["import type { Common, Documents } from '@strapi/types';\n\nexport type RepositoryFactoryMethod = (uid: Common.UID.CollectionType) => Documents.ServiceInstance;\n\nexport const wrapInTransaction = (fn: (...args: any) => any) => {\n return (...args: any[]) => strapi.db.transaction?.(() => fn(...args));\n};\n"],"names":[],"mappings":"AAIa,MAAA,oBAAoB,CAAC,OAA8B;AACvD,SAAA,IAAI,SAAgB,OAAO,GAAG,cAAc,MAAM,GAAG,GAAG,IAAI,CAAC;AACtE;"}
1
+ {"version":3,"file":"common.mjs","sources":["../../../src/services/document-service/common.ts"],"sourcesContent":["import type { UID, Modules } from '@strapi/types';\n\nexport type RepositoryFactoryMethod = <TContentTypeUID extends UID.ContentType>(\n uid: TContentTypeUID\n) => Modules.Documents.ServiceInstance<TContentTypeUID>;\n\nexport const wrapInTransaction = (fn: (...args: any) => any) => {\n return (...args: any[]) => strapi.db.transaction?.(() => fn(...args));\n};\n"],"names":[],"mappings":"AAMa,MAAA,oBAAoB,CAAC,OAA8B;AACvD,SAAA,IAAI,SAAgB,OAAO,GAAG,cAAc,MAAM,GAAG,GAAG,IAAI,CAAC;AACtE;"}
@@ -1,2 +1,26 @@
1
- export {};
1
+ import _ from 'lodash';
2
+ import type { UID, Schema, Data, Modules } from '@strapi/types';
3
+ type Input<T extends UID.Schema> = Modules.Documents.Params.Data.Input<T>;
4
+ type LoadedComponents<TUID extends UID.Schema> = Data.Entity<TUID, Schema.AttributeNamesByType<TUID, 'component' | 'dynamiczone'>>;
5
+ type SingleComponentValue = Schema.Attribute.ComponentValue<UID.Component, false>;
6
+ type RepeatableComponentValue = Schema.Attribute.ComponentValue<UID.Component, true>;
7
+ type ComponentValue = SingleComponentValue | RepeatableComponentValue;
8
+ type DynamicZoneValue = Schema.Attribute.DynamicZoneValue<UID.Component[]>;
9
+ type ComponentBody = {
10
+ [key: string]: ComponentValue | DynamicZoneValue;
11
+ };
12
+ declare const omitComponentData: _.CurriedFunction2<import("@strapi/types/dist/struct").ComponentSchema | import("@strapi/types/dist/struct").ContentTypeSchema, Input<UID.Schema>, Partial<Input<UID.Schema>>>;
13
+ declare const createComponents: <TUID extends UID.Schema, TData extends Input<TUID>>(uid: TUID, data: TData) => Promise<ComponentBody>;
14
+ declare const getComponents: <TUID extends UID.Schema>(uid: TUID, entity: {
15
+ id: Modules.EntityService.Params.Attribute.ID;
16
+ }) => Promise<LoadedComponents<TUID>>;
17
+ declare const updateComponents: <TUID extends UID.Schema, TData extends Partial<Input<TUID>>>(uid: TUID, entityToUpdate: {
18
+ id: Modules.EntityService.Params.Attribute.ID;
19
+ }, data: TData) => Promise<ComponentBody>;
20
+ declare const deleteComponents: <TUID extends UID.Schema, TEntity extends Data.Entity<TUID, Extract<keyof Schema.Attributes<TUID>, string>>>(uid: TUID, entityToDelete: TEntity, { loadComponents }?: {
21
+ loadComponents?: boolean | undefined;
22
+ }) => Promise<void>;
23
+ declare const deleteComponent: <TUID extends `${string}.${string}`>(uid: TUID, componentToDelete: Data.Component<TUID>) => Promise<void>;
24
+ declare const assignComponentData: _.CurriedFunction3<import("@strapi/types/dist/struct").ComponentSchema | import("@strapi/types/dist/struct").ContentTypeSchema, ComponentBody, Input<UID.Schema>, ComponentBody & Partial<Input<UID.Schema>>>;
25
+ export { omitComponentData, assignComponentData, getComponents, createComponents, updateComponents, deleteComponents, deleteComponent, };
2
26
  //# sourceMappingURL=components.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/components.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/components.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,KAAK,EAAS,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAIvE,KAAK,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE1E,KAAK,gBAAgB,CAAC,IAAI,SAAS,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAC1D,IAAI,EACJ,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,aAAa,CAAC,CAC/D,CAAC;AAEF,KAAK,oBAAoB,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAClF,KAAK,wBAAwB,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAErF,KAAK,cAAc,GAAG,oBAAoB,GAAG,wBAAwB,CAAC;AAEtE,KAAK,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AAE3E,KAAK,aAAa,GAAG;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,gBAAgB,CAAC;CAClD,CAAC;AAEF,QAAA,MAAM,iBAAiB,gLAStB,CAAC;AAGF,QAAA,MAAM,gBAAgB,4DACf,IAAI,QACH,KAAK,2BA6FZ,CAAC;AAEF,QAAA,MAAM,aAAa,iCACZ,IAAI,UACD;IAAE,EAAE,EAAE,QAAQ,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAA;CAAE,KACxD,QAAQ,iBAAiB,IAAI,CAAC,CAQhC,CAAC;AAMF,QAAA,MAAM,gBAAgB,qEACf,IAAI,kBACO;IAAE,EAAE,EAAE,QAAQ,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAA;CAAE,QAC3D,KAAK,2BA0EZ,CAAC;AAkGF,QAAA,MAAM,gBAAgB,oHACf,IAAI,kBACO,OAAO;;mBAqCxB,CAAC;AAyDF,QAAA,MAAM,eAAe,4CACd,IAAI,qBACU,KAAK,SAAS,CAAC,IAAI,CAAC,kBAIxC,CAAC;AAEF,QAAA,MAAM,mBAAmB,+MAIxB,CAAC;AAEF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,CAAC"}
@@ -5,14 +5,15 @@ const _ = require("lodash/fp");
5
5
  const strapiUtils = require("@strapi/utils");
6
6
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
7
7
  const ___default = /* @__PURE__ */ _interopDefault(_$1);
8
- const isDialectMySQL = () => strapi.db?.dialect.client === "mysql";
9
- function omitComponentData(contentType, data) {
10
- const { attributes } = contentType;
11
- const componentAttributes = Object.keys(attributes).filter(
12
- (attributeName) => strapiUtils.contentTypes.isComponentAttribute(attributes[attributeName])
13
- );
14
- return _.omit(componentAttributes, data);
15
- }
8
+ const omitComponentData = _.curry(
9
+ (schema, data) => {
10
+ const { attributes } = schema;
11
+ const componentAttributes = Object.keys(attributes).filter(
12
+ (attributeName) => strapiUtils.contentTypes.isComponentAttribute(attributes[attributeName])
13
+ );
14
+ return _.omit(componentAttributes, data);
15
+ }
16
+ );
16
17
  const createComponents = async (uid, data) => {
17
18
  const { attributes = {} } = strapi.getModel(uid);
18
19
  const componentBody = {};
@@ -34,8 +35,7 @@ const createComponents = async (uid, data) => {
34
35
  }
35
36
  const components = await strapiUtils.async.map(
36
37
  componentValue,
37
- (value) => createComponent(componentUID, value),
38
- { concurrency: isDialectMySQL() && !strapi.db?.inTransaction() ? 1 : Infinity }
38
+ (value) => createComponent(componentUID, value)
39
39
  );
40
40
  componentBody[attributeName] = components.map(({ id }) => {
41
41
  return {
@@ -78,8 +78,7 @@ const createComponents = async (uid, data) => {
78
78
  };
79
79
  componentBody[attributeName] = await strapiUtils.async.map(
80
80
  dynamiczoneValues,
81
- createDynamicZoneComponents,
82
- { concurrency: isDialectMySQL() && !strapi.db?.inTransaction() ? 1 : Infinity }
81
+ createDynamicZoneComponents
83
82
  );
84
83
  continue;
85
84
  }
@@ -111,8 +110,7 @@ const updateComponents = async (uid, entityToUpdate, data) => {
111
110
  }
112
111
  const components = await strapiUtils.async.map(
113
112
  componentValue,
114
- (value) => updateOrCreateComponent(componentUID, value),
115
- { concurrency: isDialectMySQL() && !strapi.db?.inTransaction() ? 1 : Infinity }
113
+ (value) => updateOrCreateComponent(componentUID, value)
116
114
  );
117
115
  componentBody[attributeName] = components.filter(___default.default.negate(___default.default.isNil)).map(({ id }) => {
118
116
  return {
@@ -133,29 +131,22 @@ const updateComponents = async (uid, entityToUpdate, data) => {
133
131
  }
134
132
  };
135
133
  }
136
- continue;
137
- }
138
- if (attribute.type === "dynamiczone") {
134
+ } else if (attribute.type === "dynamiczone") {
139
135
  const dynamiczoneValues = data[attributeName];
140
136
  await deleteOldDZComponents(uid, entityToUpdate, attributeName, dynamiczoneValues);
141
137
  if (!Array.isArray(dynamiczoneValues)) {
142
138
  throw new Error("Expected an array to create repeatable component");
143
139
  }
144
- componentBody[attributeName] = await strapiUtils.async.map(
145
- dynamiczoneValues,
146
- async (value) => {
147
- const { id } = await updateOrCreateComponent(value.__component, value);
148
- return {
149
- id,
150
- __component: value.__component,
151
- __pivot: {
152
- field: attributeName
153
- }
154
- };
155
- },
156
- { concurrency: isDialectMySQL() && !strapi.db?.inTransaction() ? 1 : Infinity }
157
- );
158
- continue;
140
+ componentBody[attributeName] = await strapiUtils.async.map(dynamiczoneValues, async (value) => {
141
+ const { id } = await updateOrCreateComponent(value.__component, value);
142
+ return {
143
+ id,
144
+ __component: value.__component,
145
+ __pivot: {
146
+ field: attributeName
147
+ }
148
+ };
149
+ });
159
150
  }
160
151
  }
161
152
  return componentBody;
@@ -237,16 +228,12 @@ const deleteComponents = async (uid, entityToDelete, { loadComponents = true } =
237
228
  const { component: componentUID } = attribute;
238
229
  await strapiUtils.async.map(
239
230
  ___default.default.castArray(value),
240
- (subValue) => deleteComponent(componentUID, subValue),
241
- {
242
- concurrency: isDialectMySQL() && !strapi.db?.inTransaction() ? 1 : Infinity
243
- }
231
+ (subValue) => deleteComponent(componentUID, subValue)
244
232
  );
245
233
  } else {
246
234
  await strapiUtils.async.map(
247
235
  ___default.default.castArray(value),
248
- (subValue) => deleteComponent(subValue.__component, subValue),
249
- { concurrency: isDialectMySQL() && !strapi.db?.inTransaction() ? 1 : Infinity }
236
+ (subValue) => deleteComponent(subValue.__component, subValue)
250
237
  );
251
238
  }
252
239
  continue;
@@ -254,26 +241,23 @@ const deleteComponents = async (uid, entityToDelete, { loadComponents = true } =
254
241
  }
255
242
  };
256
243
  const createComponent = async (uid, data) => {
257
- const model = strapi.getModel(uid);
244
+ const schema = strapi.getModel(uid);
258
245
  const componentData = await createComponents(uid, data);
259
246
  const transform = _.pipe(
260
247
  // Make sure we don't save the component with a pre-defined ID
261
248
  _.omit("id"),
262
- // Remove the component data from the original data object ...
263
- (payload) => omitComponentData(model, payload),
264
- // ... and assign the newly created component instead
265
- _.assign(componentData)
249
+ assignComponentData(schema, componentData)
266
250
  );
267
251
  return strapi.db.query(uid).create({ data: transform(data) });
268
252
  };
269
253
  const updateComponent = async (uid, componentToUpdate, data) => {
270
- const model = strapi.getModel(uid);
254
+ const schema = strapi.getModel(uid);
271
255
  const componentData = await updateComponents(uid, componentToUpdate, data);
272
256
  return strapi.db.query(uid).update({
273
257
  where: {
274
258
  id: componentToUpdate.id
275
259
  },
276
- data: Object.assign(omitComponentData(model, data), componentData)
260
+ data: assignComponentData(schema, componentData, data)
277
261
  });
278
262
  };
279
263
  const updateOrCreateComponent = (componentUID, value) => {
@@ -289,6 +273,12 @@ const deleteComponent = async (uid, componentToDelete) => {
289
273
  await deleteComponents(uid, componentToDelete);
290
274
  await strapi.db.query(uid).delete({ where: { id: componentToDelete.id } });
291
275
  };
276
+ const assignComponentData = _.curry(
277
+ (schema, componentData, data) => {
278
+ return _.pipe(omitComponentData(schema), _.assign(componentData))(data);
279
+ }
280
+ );
281
+ exports.assignComponentData = assignComponentData;
292
282
  exports.createComponents = createComponents;
293
283
  exports.deleteComponent = deleteComponent;
294
284
  exports.deleteComponents = deleteComponents;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sources":["../../../src/services/document-service/components.ts"],"sourcesContent":["import _ from 'lodash';\nimport { has, omit, pipe, assign, curry } from 'lodash/fp';\nimport type { Utils, UID, Schema, Data, Modules } from '@strapi/types';\nimport { contentTypes as contentTypesUtils, async, errors } from '@strapi/utils';\n\n// type aliases for readability\ntype Input<T extends UID.Schema> = Modules.Documents.Params.Data.Input<T>;\n\ntype LoadedComponents<TUID extends UID.Schema> = Data.Entity<\n TUID,\n Schema.AttributeNamesByType<TUID, 'component' | 'dynamiczone'>\n>;\n\ntype SingleComponentValue = Schema.Attribute.ComponentValue<UID.Component, false>;\ntype RepeatableComponentValue = Schema.Attribute.ComponentValue<UID.Component, true>;\n\ntype ComponentValue = SingleComponentValue | RepeatableComponentValue;\n\ntype DynamicZoneValue = Schema.Attribute.DynamicZoneValue<UID.Component[]>;\n\ntype ComponentBody = {\n [key: string]: ComponentValue | DynamicZoneValue;\n};\n\nconst omitComponentData = curry(\n (schema: Schema.Schema, data: Input<UID.Schema>): Partial<Input<UID.Schema>> => {\n const { attributes } = schema;\n const componentAttributes = Object.keys(attributes).filter((attributeName) =>\n contentTypesUtils.isComponentAttribute(attributes[attributeName])\n );\n\n return omit(componentAttributes, data);\n }\n);\n\n// NOTE: we could generalize the logic to allow CRUD of relation directly in the DB layer\nconst createComponents = async <TUID extends UID.Schema, TData extends Input<TUID>>(\n uid: TUID,\n data: TData\n) => {\n const { attributes = {} } = strapi.getModel(uid);\n\n const componentBody: ComponentBody = {};\n\n const attributeNames = Object.keys(attributes);\n\n for (const attributeName of attributeNames) {\n const attribute = attributes[attributeName];\n\n if (!has(attributeName, data) || !contentTypesUtils.isComponentAttribute(attribute)) {\n continue;\n }\n\n if (attribute.type === 'component') {\n const { component: componentUID, repeatable = false } = attribute;\n\n const componentValue = data[attributeName as keyof TData];\n\n if (componentValue === null) {\n continue;\n }\n\n if (repeatable === true) {\n if (!Array.isArray(componentValue)) {\n throw new Error('Expected an array to create repeatable component');\n }\n\n const components: RepeatableComponentValue = await async.map(componentValue, (value: any) =>\n createComponent(componentUID, value)\n );\n\n componentBody[attributeName] = components.map(({ id }) => {\n return {\n id,\n __pivot: {\n field: attributeName,\n component_type: componentUID,\n },\n };\n });\n } else {\n const component = await createComponent(\n componentUID,\n componentValue as Input<UID.Component>\n );\n\n componentBody[attributeName] = {\n id: component.id,\n __pivot: {\n field: attributeName,\n component_type: componentUID,\n },\n };\n }\n\n continue;\n }\n\n if (attribute.type === 'dynamiczone') {\n const dynamiczoneValues = data[\n attributeName as keyof TData\n ] as Modules.EntityService.Params.Attribute.GetValue<Schema.Attribute.DynamicZone>;\n\n if (!Array.isArray(dynamiczoneValues)) {\n throw new Error('Expected an array to create repeatable component');\n }\n\n const createDynamicZoneComponents = async (\n value: Utils.Array.Values<typeof dynamiczoneValues>\n ) => {\n const { id } = await createComponent(value.__component, value);\n return {\n id,\n __component: value.__component,\n __pivot: {\n field: attributeName,\n },\n };\n };\n\n // MySQL/MariaDB can cause deadlocks here if concurrency higher than 1\n componentBody[attributeName] = await async.map(\n dynamiczoneValues,\n createDynamicZoneComponents\n );\n\n continue;\n }\n }\n\n return componentBody;\n};\n\nconst getComponents = async <TUID extends UID.Schema>(\n uid: TUID,\n entity: { id: Modules.EntityService.Params.Attribute.ID }\n): Promise<LoadedComponents<TUID>> => {\n const componentAttributes = contentTypesUtils.getComponentAttributes(strapi.getModel(uid));\n\n if (_.isEmpty(componentAttributes)) {\n return {} as LoadedComponents<TUID>;\n }\n\n return strapi.db.query(uid).load(entity, componentAttributes) as Promise<LoadedComponents<TUID>>;\n};\n\n/*\n delete old components\n create or update\n*/\nconst updateComponents = async <TUID extends UID.Schema, TData extends Partial<Input<TUID>>>(\n uid: TUID,\n entityToUpdate: { id: Modules.EntityService.Params.Attribute.ID },\n data: TData\n) => {\n const { attributes = {} } = strapi.getModel(uid);\n\n const componentBody: ComponentBody = {};\n\n for (const attributeName of Object.keys(attributes)) {\n const attribute = attributes[attributeName];\n\n if (!has(attributeName, data)) {\n continue;\n }\n\n if (attribute.type === 'component') {\n const { component: componentUID, repeatable = false } = attribute;\n\n const componentValue = data[attributeName as keyof TData] as ComponentValue;\n\n await deleteOldComponents(uid, componentUID, entityToUpdate, attributeName, componentValue);\n\n if (repeatable === true) {\n if (!Array.isArray(componentValue)) {\n throw new Error('Expected an array to create repeatable component');\n }\n\n // MySQL/MariaDB can cause deadlocks here if concurrency higher than 1\n const components: RepeatableComponentValue = await async.map(componentValue, (value: any) =>\n updateOrCreateComponent(componentUID, value)\n );\n\n componentBody[attributeName] = components.filter(_.negate(_.isNil)).map(({ id }) => {\n return {\n id,\n __pivot: {\n field: attributeName,\n component_type: componentUID,\n },\n };\n });\n } else {\n const component = await updateOrCreateComponent(componentUID, componentValue);\n componentBody[attributeName] = component && {\n id: component.id,\n __pivot: {\n field: attributeName,\n component_type: componentUID,\n },\n };\n }\n } else if (attribute.type === 'dynamiczone') {\n const dynamiczoneValues = data[attributeName as keyof TData] as DynamicZoneValue;\n\n await deleteOldDZComponents(uid, entityToUpdate, attributeName, dynamiczoneValues);\n\n if (!Array.isArray(dynamiczoneValues)) {\n throw new Error('Expected an array to create repeatable component');\n }\n\n // MySQL/MariaDB can cause deadlocks here if concurrency higher than 1\n componentBody[attributeName] = await async.map(dynamiczoneValues, async (value: any) => {\n const { id } = await updateOrCreateComponent(value.__component, value);\n\n return {\n id,\n __component: value.__component,\n __pivot: {\n field: attributeName,\n },\n };\n });\n }\n }\n\n return componentBody;\n};\n\nconst pickStringifiedId = ({\n id,\n}: {\n id: Modules.EntityService.Params.Attribute.ID;\n}): Modules.EntityService.Params.Attribute.ID & string => {\n if (typeof id === 'string') {\n return id;\n }\n\n return `${id}`;\n};\n\nconst deleteOldComponents = async <TUID extends UID.Schema>(\n uid: TUID,\n componentUID: UID.Component,\n entityToUpdate: { id: Modules.EntityService.Params.Attribute.ID },\n attributeName: string,\n componentValue: ComponentValue\n) => {\n const previousValue = (await strapi.db\n .query(uid)\n .load(entityToUpdate, attributeName)) as ComponentValue;\n\n const idsToKeep = _.castArray(componentValue).filter(has('id')).map(pickStringifiedId);\n const allIds = _.castArray(previousValue).filter(has('id')).map(pickStringifiedId);\n\n idsToKeep.forEach((id) => {\n if (!allIds.includes(id)) {\n throw new errors.ApplicationError(\n `Some of the provided components in ${attributeName} are not related to the entity`\n );\n }\n });\n\n const idsToDelete = _.difference(allIds, idsToKeep);\n\n if (idsToDelete.length > 0) {\n for (const idToDelete of idsToDelete) {\n await deleteComponent(componentUID, { id: idToDelete });\n }\n }\n};\n\nconst deleteOldDZComponents = async <TUID extends UID.Schema>(\n uid: TUID,\n entityToUpdate: { id: Modules.EntityService.Params.Attribute.ID },\n attributeName: string,\n dynamiczoneValues: DynamicZoneValue\n) => {\n const previousValue = (await strapi.db\n .query(uid)\n .load(entityToUpdate, attributeName)) as DynamicZoneValue;\n\n const idsToKeep = _.castArray(dynamiczoneValues)\n .filter(has('id'))\n .map((v) => ({\n id: pickStringifiedId(v),\n __component: v.__component,\n }));\n\n const allIds = _.castArray(previousValue)\n .filter(has('id'))\n .map((v) => ({\n id: pickStringifiedId(v),\n __component: v.__component,\n }));\n\n idsToKeep.forEach(({ id, __component }) => {\n if (!allIds.find((el) => el.id === id && el.__component === __component)) {\n const err = new Error(\n `Some of the provided components in ${attributeName} are not related to the entity`\n );\n\n Object.assign(err, { status: 400 });\n throw err;\n }\n });\n\n type IdsToDelete = DynamicZoneValue;\n\n const idsToDelete = allIds.reduce((acc, { id, __component }) => {\n if (!idsToKeep.find((el) => el.id === id && el.__component === __component)) {\n acc.push({ id, __component });\n }\n\n return acc;\n }, [] as IdsToDelete);\n\n if (idsToDelete.length > 0) {\n for (const idToDelete of idsToDelete) {\n const { id, __component } = idToDelete;\n await deleteComponent(__component, { id });\n }\n }\n};\n\nconst deleteComponents = async <TUID extends UID.Schema, TEntity extends Data.Entity<TUID>>(\n uid: TUID,\n entityToDelete: TEntity,\n { loadComponents = true } = {}\n) => {\n const { attributes = {} } = strapi.getModel(uid);\n\n const attributeNames = Object.keys(attributes);\n\n for (const attributeName of attributeNames) {\n const attribute = attributes[attributeName];\n\n if (attribute.type === 'component' || attribute.type === 'dynamiczone') {\n let value;\n\n if (loadComponents) {\n value = await strapi.db.query(uid).load(entityToDelete, attributeName);\n } else {\n value = entityToDelete[attributeName as keyof TEntity];\n }\n\n if (!value) {\n continue;\n }\n\n if (attribute.type === 'component') {\n const { component: componentUID } = attribute;\n await async.map(_.castArray(value), (subValue: any) =>\n deleteComponent(componentUID, subValue)\n );\n } else {\n await async.map(_.castArray(value), (subValue: any) =>\n deleteComponent(subValue.__component, subValue)\n );\n }\n\n continue;\n }\n }\n};\n\n/** *************************\n Component queries\n************************** */\n\n// components can have nested compos so this must be recursive\nconst createComponent = async <TUID extends UID.Component>(uid: TUID, data: Input<TUID>) => {\n const schema = strapi.getModel(uid);\n\n const componentData = await createComponents(uid, data);\n\n const transform = pipe(\n // Make sure we don't save the component with a pre-defined ID\n omit('id'),\n assignComponentData(schema, componentData)\n );\n\n return strapi.db.query(uid).create({ data: transform(data) });\n};\n\n// components can have nested compos so this must be recursive\nconst updateComponent = async <TUID extends UID.Component>(\n uid: TUID,\n componentToUpdate: { id: Modules.EntityService.Params.Attribute.ID },\n data: Input<TUID>\n) => {\n const schema = strapi.getModel(uid);\n\n const componentData = await updateComponents(uid, componentToUpdate, data);\n\n return strapi.db.query(uid).update({\n where: {\n id: componentToUpdate.id,\n },\n data: assignComponentData(schema, componentData, data),\n });\n};\n\nconst updateOrCreateComponent = <TUID extends UID.Component>(\n componentUID: TUID,\n value: Input<TUID>\n) => {\n if (value === null) {\n return null;\n }\n\n // update\n if ('id' in value && typeof value.id !== 'undefined') {\n // TODO: verify the compo is associated with the entity\n return updateComponent(componentUID, { id: value.id }, value);\n }\n\n // create\n return createComponent(componentUID, value);\n};\n\nconst deleteComponent = async <TUID extends UID.Component>(\n uid: TUID,\n componentToDelete: Data.Component<TUID>\n) => {\n await deleteComponents(uid, componentToDelete);\n await strapi.db.query(uid).delete({ where: { id: componentToDelete.id } });\n};\n\nconst assignComponentData = curry(\n (schema: Schema.Schema, componentData: ComponentBody, data: Input<UID.Schema>) => {\n return pipe(omitComponentData(schema), assign(componentData))(data);\n }\n);\n\nexport {\n omitComponentData,\n assignComponentData,\n getComponents,\n createComponents,\n updateComponents,\n deleteComponents,\n deleteComponent,\n};\n"],"names":["curry","contentTypesUtils","omit","has","async","_","errors","pipe","assign"],"mappings":"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"}
@@ -1,14 +1,15 @@
1
1
  import _ from "lodash";
2
- import { omit, has, pipe, assign } from "lodash/fp";
2
+ import { curry, omit, pipe, assign, has } from "lodash/fp";
3
3
  import { contentTypes, async, errors } from "@strapi/utils";
4
- const isDialectMySQL = () => strapi.db?.dialect.client === "mysql";
5
- function omitComponentData(contentType, data) {
6
- const { attributes } = contentType;
7
- const componentAttributes = Object.keys(attributes).filter(
8
- (attributeName) => contentTypes.isComponentAttribute(attributes[attributeName])
9
- );
10
- return omit(componentAttributes, data);
11
- }
4
+ const omitComponentData = curry(
5
+ (schema, data) => {
6
+ const { attributes } = schema;
7
+ const componentAttributes = Object.keys(attributes).filter(
8
+ (attributeName) => contentTypes.isComponentAttribute(attributes[attributeName])
9
+ );
10
+ return omit(componentAttributes, data);
11
+ }
12
+ );
12
13
  const createComponents = async (uid, data) => {
13
14
  const { attributes = {} } = strapi.getModel(uid);
14
15
  const componentBody = {};
@@ -30,8 +31,7 @@ const createComponents = async (uid, data) => {
30
31
  }
31
32
  const components = await async.map(
32
33
  componentValue,
33
- (value) => createComponent(componentUID, value),
34
- { concurrency: isDialectMySQL() && !strapi.db?.inTransaction() ? 1 : Infinity }
34
+ (value) => createComponent(componentUID, value)
35
35
  );
36
36
  componentBody[attributeName] = components.map(({ id }) => {
37
37
  return {
@@ -74,8 +74,7 @@ const createComponents = async (uid, data) => {
74
74
  };
75
75
  componentBody[attributeName] = await async.map(
76
76
  dynamiczoneValues,
77
- createDynamicZoneComponents,
78
- { concurrency: isDialectMySQL() && !strapi.db?.inTransaction() ? 1 : Infinity }
77
+ createDynamicZoneComponents
79
78
  );
80
79
  continue;
81
80
  }
@@ -107,8 +106,7 @@ const updateComponents = async (uid, entityToUpdate, data) => {
107
106
  }
108
107
  const components = await async.map(
109
108
  componentValue,
110
- (value) => updateOrCreateComponent(componentUID, value),
111
- { concurrency: isDialectMySQL() && !strapi.db?.inTransaction() ? 1 : Infinity }
109
+ (value) => updateOrCreateComponent(componentUID, value)
112
110
  );
113
111
  componentBody[attributeName] = components.filter(_.negate(_.isNil)).map(({ id }) => {
114
112
  return {
@@ -129,29 +127,22 @@ const updateComponents = async (uid, entityToUpdate, data) => {
129
127
  }
130
128
  };
131
129
  }
132
- continue;
133
- }
134
- if (attribute.type === "dynamiczone") {
130
+ } else if (attribute.type === "dynamiczone") {
135
131
  const dynamiczoneValues = data[attributeName];
136
132
  await deleteOldDZComponents(uid, entityToUpdate, attributeName, dynamiczoneValues);
137
133
  if (!Array.isArray(dynamiczoneValues)) {
138
134
  throw new Error("Expected an array to create repeatable component");
139
135
  }
140
- componentBody[attributeName] = await async.map(
141
- dynamiczoneValues,
142
- async (value) => {
143
- const { id } = await updateOrCreateComponent(value.__component, value);
144
- return {
145
- id,
146
- __component: value.__component,
147
- __pivot: {
148
- field: attributeName
149
- }
150
- };
151
- },
152
- { concurrency: isDialectMySQL() && !strapi.db?.inTransaction() ? 1 : Infinity }
153
- );
154
- continue;
136
+ componentBody[attributeName] = await async.map(dynamiczoneValues, async (value) => {
137
+ const { id } = await updateOrCreateComponent(value.__component, value);
138
+ return {
139
+ id,
140
+ __component: value.__component,
141
+ __pivot: {
142
+ field: attributeName
143
+ }
144
+ };
145
+ });
155
146
  }
156
147
  }
157
148
  return componentBody;
@@ -233,16 +224,12 @@ const deleteComponents = async (uid, entityToDelete, { loadComponents = true } =
233
224
  const { component: componentUID } = attribute;
234
225
  await async.map(
235
226
  _.castArray(value),
236
- (subValue) => deleteComponent(componentUID, subValue),
237
- {
238
- concurrency: isDialectMySQL() && !strapi.db?.inTransaction() ? 1 : Infinity
239
- }
227
+ (subValue) => deleteComponent(componentUID, subValue)
240
228
  );
241
229
  } else {
242
230
  await async.map(
243
231
  _.castArray(value),
244
- (subValue) => deleteComponent(subValue.__component, subValue),
245
- { concurrency: isDialectMySQL() && !strapi.db?.inTransaction() ? 1 : Infinity }
232
+ (subValue) => deleteComponent(subValue.__component, subValue)
246
233
  );
247
234
  }
248
235
  continue;
@@ -250,26 +237,23 @@ const deleteComponents = async (uid, entityToDelete, { loadComponents = true } =
250
237
  }
251
238
  };
252
239
  const createComponent = async (uid, data) => {
253
- const model = strapi.getModel(uid);
240
+ const schema = strapi.getModel(uid);
254
241
  const componentData = await createComponents(uid, data);
255
242
  const transform = pipe(
256
243
  // Make sure we don't save the component with a pre-defined ID
257
244
  omit("id"),
258
- // Remove the component data from the original data object ...
259
- (payload) => omitComponentData(model, payload),
260
- // ... and assign the newly created component instead
261
- assign(componentData)
245
+ assignComponentData(schema, componentData)
262
246
  );
263
247
  return strapi.db.query(uid).create({ data: transform(data) });
264
248
  };
265
249
  const updateComponent = async (uid, componentToUpdate, data) => {
266
- const model = strapi.getModel(uid);
250
+ const schema = strapi.getModel(uid);
267
251
  const componentData = await updateComponents(uid, componentToUpdate, data);
268
252
  return strapi.db.query(uid).update({
269
253
  where: {
270
254
  id: componentToUpdate.id
271
255
  },
272
- data: Object.assign(omitComponentData(model, data), componentData)
256
+ data: assignComponentData(schema, componentData, data)
273
257
  });
274
258
  };
275
259
  const updateOrCreateComponent = (componentUID, value) => {
@@ -285,7 +269,13 @@ const deleteComponent = async (uid, componentToDelete) => {
285
269
  await deleteComponents(uid, componentToDelete);
286
270
  await strapi.db.query(uid).delete({ where: { id: componentToDelete.id } });
287
271
  };
272
+ const assignComponentData = curry(
273
+ (schema, componentData, data) => {
274
+ return pipe(omitComponentData(schema), assign(componentData))(data);
275
+ }
276
+ );
288
277
  export {
278
+ assignComponentData,
289
279
  createComponents,
290
280
  deleteComponent,
291
281
  deleteComponents,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.mjs","sources":["../../../src/services/document-service/components.ts"],"sourcesContent":["import _ from 'lodash';\nimport { has, omit, pipe, assign, curry } from 'lodash/fp';\nimport type { Utils, UID, Schema, Data, Modules } from '@strapi/types';\nimport { contentTypes as contentTypesUtils, async, errors } from '@strapi/utils';\n\n// type aliases for readability\ntype Input<T extends UID.Schema> = Modules.Documents.Params.Data.Input<T>;\n\ntype LoadedComponents<TUID extends UID.Schema> = Data.Entity<\n TUID,\n Schema.AttributeNamesByType<TUID, 'component' | 'dynamiczone'>\n>;\n\ntype SingleComponentValue = Schema.Attribute.ComponentValue<UID.Component, false>;\ntype RepeatableComponentValue = Schema.Attribute.ComponentValue<UID.Component, true>;\n\ntype ComponentValue = SingleComponentValue | RepeatableComponentValue;\n\ntype DynamicZoneValue = Schema.Attribute.DynamicZoneValue<UID.Component[]>;\n\ntype ComponentBody = {\n [key: string]: ComponentValue | DynamicZoneValue;\n};\n\nconst omitComponentData = curry(\n (schema: Schema.Schema, data: Input<UID.Schema>): Partial<Input<UID.Schema>> => {\n const { attributes } = schema;\n const componentAttributes = Object.keys(attributes).filter((attributeName) =>\n contentTypesUtils.isComponentAttribute(attributes[attributeName])\n );\n\n return omit(componentAttributes, data);\n }\n);\n\n// NOTE: we could generalize the logic to allow CRUD of relation directly in the DB layer\nconst createComponents = async <TUID extends UID.Schema, TData extends Input<TUID>>(\n uid: TUID,\n data: TData\n) => {\n const { attributes = {} } = strapi.getModel(uid);\n\n const componentBody: ComponentBody = {};\n\n const attributeNames = Object.keys(attributes);\n\n for (const attributeName of attributeNames) {\n const attribute = attributes[attributeName];\n\n if (!has(attributeName, data) || !contentTypesUtils.isComponentAttribute(attribute)) {\n continue;\n }\n\n if (attribute.type === 'component') {\n const { component: componentUID, repeatable = false } = attribute;\n\n const componentValue = data[attributeName as keyof TData];\n\n if (componentValue === null) {\n continue;\n }\n\n if (repeatable === true) {\n if (!Array.isArray(componentValue)) {\n throw new Error('Expected an array to create repeatable component');\n }\n\n const components: RepeatableComponentValue = await async.map(componentValue, (value: any) =>\n createComponent(componentUID, value)\n );\n\n componentBody[attributeName] = components.map(({ id }) => {\n return {\n id,\n __pivot: {\n field: attributeName,\n component_type: componentUID,\n },\n };\n });\n } else {\n const component = await createComponent(\n componentUID,\n componentValue as Input<UID.Component>\n );\n\n componentBody[attributeName] = {\n id: component.id,\n __pivot: {\n field: attributeName,\n component_type: componentUID,\n },\n };\n }\n\n continue;\n }\n\n if (attribute.type === 'dynamiczone') {\n const dynamiczoneValues = data[\n attributeName as keyof TData\n ] as Modules.EntityService.Params.Attribute.GetValue<Schema.Attribute.DynamicZone>;\n\n if (!Array.isArray(dynamiczoneValues)) {\n throw new Error('Expected an array to create repeatable component');\n }\n\n const createDynamicZoneComponents = async (\n value: Utils.Array.Values<typeof dynamiczoneValues>\n ) => {\n const { id } = await createComponent(value.__component, value);\n return {\n id,\n __component: value.__component,\n __pivot: {\n field: attributeName,\n },\n };\n };\n\n // MySQL/MariaDB can cause deadlocks here if concurrency higher than 1\n componentBody[attributeName] = await async.map(\n dynamiczoneValues,\n createDynamicZoneComponents\n );\n\n continue;\n }\n }\n\n return componentBody;\n};\n\nconst getComponents = async <TUID extends UID.Schema>(\n uid: TUID,\n entity: { id: Modules.EntityService.Params.Attribute.ID }\n): Promise<LoadedComponents<TUID>> => {\n const componentAttributes = contentTypesUtils.getComponentAttributes(strapi.getModel(uid));\n\n if (_.isEmpty(componentAttributes)) {\n return {} as LoadedComponents<TUID>;\n }\n\n return strapi.db.query(uid).load(entity, componentAttributes) as Promise<LoadedComponents<TUID>>;\n};\n\n/*\n delete old components\n create or update\n*/\nconst updateComponents = async <TUID extends UID.Schema, TData extends Partial<Input<TUID>>>(\n uid: TUID,\n entityToUpdate: { id: Modules.EntityService.Params.Attribute.ID },\n data: TData\n) => {\n const { attributes = {} } = strapi.getModel(uid);\n\n const componentBody: ComponentBody = {};\n\n for (const attributeName of Object.keys(attributes)) {\n const attribute = attributes[attributeName];\n\n if (!has(attributeName, data)) {\n continue;\n }\n\n if (attribute.type === 'component') {\n const { component: componentUID, repeatable = false } = attribute;\n\n const componentValue = data[attributeName as keyof TData] as ComponentValue;\n\n await deleteOldComponents(uid, componentUID, entityToUpdate, attributeName, componentValue);\n\n if (repeatable === true) {\n if (!Array.isArray(componentValue)) {\n throw new Error('Expected an array to create repeatable component');\n }\n\n // MySQL/MariaDB can cause deadlocks here if concurrency higher than 1\n const components: RepeatableComponentValue = await async.map(componentValue, (value: any) =>\n updateOrCreateComponent(componentUID, value)\n );\n\n componentBody[attributeName] = components.filter(_.negate(_.isNil)).map(({ id }) => {\n return {\n id,\n __pivot: {\n field: attributeName,\n component_type: componentUID,\n },\n };\n });\n } else {\n const component = await updateOrCreateComponent(componentUID, componentValue);\n componentBody[attributeName] = component && {\n id: component.id,\n __pivot: {\n field: attributeName,\n component_type: componentUID,\n },\n };\n }\n } else if (attribute.type === 'dynamiczone') {\n const dynamiczoneValues = data[attributeName as keyof TData] as DynamicZoneValue;\n\n await deleteOldDZComponents(uid, entityToUpdate, attributeName, dynamiczoneValues);\n\n if (!Array.isArray(dynamiczoneValues)) {\n throw new Error('Expected an array to create repeatable component');\n }\n\n // MySQL/MariaDB can cause deadlocks here if concurrency higher than 1\n componentBody[attributeName] = await async.map(dynamiczoneValues, async (value: any) => {\n const { id } = await updateOrCreateComponent(value.__component, value);\n\n return {\n id,\n __component: value.__component,\n __pivot: {\n field: attributeName,\n },\n };\n });\n }\n }\n\n return componentBody;\n};\n\nconst pickStringifiedId = ({\n id,\n}: {\n id: Modules.EntityService.Params.Attribute.ID;\n}): Modules.EntityService.Params.Attribute.ID & string => {\n if (typeof id === 'string') {\n return id;\n }\n\n return `${id}`;\n};\n\nconst deleteOldComponents = async <TUID extends UID.Schema>(\n uid: TUID,\n componentUID: UID.Component,\n entityToUpdate: { id: Modules.EntityService.Params.Attribute.ID },\n attributeName: string,\n componentValue: ComponentValue\n) => {\n const previousValue = (await strapi.db\n .query(uid)\n .load(entityToUpdate, attributeName)) as ComponentValue;\n\n const idsToKeep = _.castArray(componentValue).filter(has('id')).map(pickStringifiedId);\n const allIds = _.castArray(previousValue).filter(has('id')).map(pickStringifiedId);\n\n idsToKeep.forEach((id) => {\n if (!allIds.includes(id)) {\n throw new errors.ApplicationError(\n `Some of the provided components in ${attributeName} are not related to the entity`\n );\n }\n });\n\n const idsToDelete = _.difference(allIds, idsToKeep);\n\n if (idsToDelete.length > 0) {\n for (const idToDelete of idsToDelete) {\n await deleteComponent(componentUID, { id: idToDelete });\n }\n }\n};\n\nconst deleteOldDZComponents = async <TUID extends UID.Schema>(\n uid: TUID,\n entityToUpdate: { id: Modules.EntityService.Params.Attribute.ID },\n attributeName: string,\n dynamiczoneValues: DynamicZoneValue\n) => {\n const previousValue = (await strapi.db\n .query(uid)\n .load(entityToUpdate, attributeName)) as DynamicZoneValue;\n\n const idsToKeep = _.castArray(dynamiczoneValues)\n .filter(has('id'))\n .map((v) => ({\n id: pickStringifiedId(v),\n __component: v.__component,\n }));\n\n const allIds = _.castArray(previousValue)\n .filter(has('id'))\n .map((v) => ({\n id: pickStringifiedId(v),\n __component: v.__component,\n }));\n\n idsToKeep.forEach(({ id, __component }) => {\n if (!allIds.find((el) => el.id === id && el.__component === __component)) {\n const err = new Error(\n `Some of the provided components in ${attributeName} are not related to the entity`\n );\n\n Object.assign(err, { status: 400 });\n throw err;\n }\n });\n\n type IdsToDelete = DynamicZoneValue;\n\n const idsToDelete = allIds.reduce((acc, { id, __component }) => {\n if (!idsToKeep.find((el) => el.id === id && el.__component === __component)) {\n acc.push({ id, __component });\n }\n\n return acc;\n }, [] as IdsToDelete);\n\n if (idsToDelete.length > 0) {\n for (const idToDelete of idsToDelete) {\n const { id, __component } = idToDelete;\n await deleteComponent(__component, { id });\n }\n }\n};\n\nconst deleteComponents = async <TUID extends UID.Schema, TEntity extends Data.Entity<TUID>>(\n uid: TUID,\n entityToDelete: TEntity,\n { loadComponents = true } = {}\n) => {\n const { attributes = {} } = strapi.getModel(uid);\n\n const attributeNames = Object.keys(attributes);\n\n for (const attributeName of attributeNames) {\n const attribute = attributes[attributeName];\n\n if (attribute.type === 'component' || attribute.type === 'dynamiczone') {\n let value;\n\n if (loadComponents) {\n value = await strapi.db.query(uid).load(entityToDelete, attributeName);\n } else {\n value = entityToDelete[attributeName as keyof TEntity];\n }\n\n if (!value) {\n continue;\n }\n\n if (attribute.type === 'component') {\n const { component: componentUID } = attribute;\n await async.map(_.castArray(value), (subValue: any) =>\n deleteComponent(componentUID, subValue)\n );\n } else {\n await async.map(_.castArray(value), (subValue: any) =>\n deleteComponent(subValue.__component, subValue)\n );\n }\n\n continue;\n }\n }\n};\n\n/** *************************\n Component queries\n************************** */\n\n// components can have nested compos so this must be recursive\nconst createComponent = async <TUID extends UID.Component>(uid: TUID, data: Input<TUID>) => {\n const schema = strapi.getModel(uid);\n\n const componentData = await createComponents(uid, data);\n\n const transform = pipe(\n // Make sure we don't save the component with a pre-defined ID\n omit('id'),\n assignComponentData(schema, componentData)\n );\n\n return strapi.db.query(uid).create({ data: transform(data) });\n};\n\n// components can have nested compos so this must be recursive\nconst updateComponent = async <TUID extends UID.Component>(\n uid: TUID,\n componentToUpdate: { id: Modules.EntityService.Params.Attribute.ID },\n data: Input<TUID>\n) => {\n const schema = strapi.getModel(uid);\n\n const componentData = await updateComponents(uid, componentToUpdate, data);\n\n return strapi.db.query(uid).update({\n where: {\n id: componentToUpdate.id,\n },\n data: assignComponentData(schema, componentData, data),\n });\n};\n\nconst updateOrCreateComponent = <TUID extends UID.Component>(\n componentUID: TUID,\n value: Input<TUID>\n) => {\n if (value === null) {\n return null;\n }\n\n // update\n if ('id' in value && typeof value.id !== 'undefined') {\n // TODO: verify the compo is associated with the entity\n return updateComponent(componentUID, { id: value.id }, value);\n }\n\n // create\n return createComponent(componentUID, value);\n};\n\nconst deleteComponent = async <TUID extends UID.Component>(\n uid: TUID,\n componentToDelete: Data.Component<TUID>\n) => {\n await deleteComponents(uid, componentToDelete);\n await strapi.db.query(uid).delete({ where: { id: componentToDelete.id } });\n};\n\nconst assignComponentData = curry(\n (schema: Schema.Schema, componentData: ComponentBody, data: Input<UID.Schema>) => {\n return pipe(omitComponentData(schema), assign(componentData))(data);\n }\n);\n\nexport {\n omitComponentData,\n assignComponentData,\n getComponents,\n createComponents,\n updateComponents,\n deleteComponents,\n deleteComponent,\n};\n"],"names":["contentTypesUtils"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  /// <reference types="lodash" />
2
- import { Schema, Documents } from '@strapi/types';
3
- declare const setStatusToDraftCurry: import("lodash").CurriedFunction2<Schema.SingleType | Schema.CollectionType, Documents.Params.All, Documents.Params.All>;
4
- declare const defaultToDraftCurry: import("lodash").CurriedFunction1<Documents.Params.All, Documents.Params.All>;
5
- declare const defaultStatusCurry: import("lodash").CurriedFunction2<Schema.SingleType | Schema.CollectionType, Documents.Params.All, Documents.Params.All>;
6
- declare const filterDataPublishedAtCurry: import("lodash").CurriedFunction1<Documents.Params.All, Documents.Params.All>;
7
- declare const statusToLookupCurry: import("lodash").CurriedFunction2<Schema.SingleType | Schema.CollectionType, Documents.Params.All, Documents.Params.All>;
8
- declare const statusToDataCurry: import("lodash").CurriedFunction2<Schema.SingleType | Schema.CollectionType, Documents.Params.All, Documents.Params.All>;
2
+ import { Modules, Struct } from '@strapi/types';
3
+ declare const setStatusToDraftCurry: import("lodash").CurriedFunction2<Struct.SingleTypeSchema | Struct.CollectionTypeSchema, Modules.Documents.Params.All, Modules.Documents.Params.All>;
4
+ declare const defaultToDraftCurry: import("lodash").CurriedFunction1<Modules.Documents.Params.All, Modules.Documents.Params.All>;
5
+ declare const defaultStatusCurry: import("lodash").CurriedFunction2<Struct.SingleTypeSchema | Struct.CollectionTypeSchema, Modules.Documents.Params.All, Modules.Documents.Params.All>;
6
+ declare const filterDataPublishedAtCurry: import("lodash").CurriedFunction1<Modules.Documents.Params.All, Modules.Documents.Params.All>;
7
+ declare const statusToLookupCurry: import("lodash").CurriedFunction2<Struct.SingleTypeSchema | Struct.CollectionTypeSchema, Modules.Documents.Params.All, Modules.Documents.Params.All>;
8
+ declare const statusToDataCurry: import("lodash").CurriedFunction2<Struct.SingleTypeSchema | Struct.CollectionTypeSchema, Modules.Documents.Params.All, Modules.Documents.Params.All>;
9
9
  export { setStatusToDraftCurry as setStatusToDraft, defaultToDraftCurry as defaultToDraft, defaultStatusCurry as defaultStatus, filterDataPublishedAtCurry as filterDataPublishedAt, statusToLookupCurry as statusToLookup, statusToDataCurry as statusToData, };
10
10
  //# sourceMappingURL=draft-and-publish.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"draft-and-publish.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/draft-and-publish.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAwGlD,QAAA,MAAM,qBAAqB,0HAA0B,CAAC;AACtD,QAAA,MAAM,mBAAmB,+EAAwB,CAAC;AAClD,QAAA,MAAM,kBAAkB,0HAAuB,CAAC;AAChD,QAAA,MAAM,0BAA0B,+EAA+B,CAAC;AAChE,QAAA,MAAM,mBAAmB,0HAAwB,CAAC;AAClD,QAAA,MAAM,iBAAiB,0HAAsB,CAAC;AAE9C,OAAO,EACL,qBAAqB,IAAI,gBAAgB,EACzC,mBAAmB,IAAI,cAAc,EACrC,kBAAkB,IAAI,aAAa,EACnC,0BAA0B,IAAI,qBAAqB,EACnD,mBAAmB,IAAI,cAAc,EACrC,iBAAiB,IAAI,YAAY,GAClC,CAAC"}
1
+ {"version":3,"file":"draft-and-publish.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/draft-and-publish.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAwGhD,QAAA,MAAM,qBAAqB,sJAA0B,CAAC;AACtD,QAAA,MAAM,mBAAmB,+FAAwB,CAAC;AAClD,QAAA,MAAM,kBAAkB,sJAAuB,CAAC;AAChD,QAAA,MAAM,0BAA0B,+FAA+B,CAAC;AAChE,QAAA,MAAM,mBAAmB,sJAAwB,CAAC;AAClD,QAAA,MAAM,iBAAiB,sJAAsB,CAAC;AAE9C,OAAO,EACL,qBAAqB,IAAI,gBAAgB,EACzC,mBAAmB,IAAI,cAAc,EACrC,kBAAkB,IAAI,aAAa,EACnC,0BAA0B,IAAI,qBAAqB,EACnD,mBAAmB,IAAI,cAAc,EACrC,iBAAiB,IAAI,YAAY,GAClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"draft-and-publish.js","sources":["../../../src/services/document-service/draft-and-publish.ts"],"sourcesContent":["import { assoc, curry } from 'lodash/fp';\n\nimport { Schema, Documents } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\ntype ParamsTransform = (params: Documents.Params.All) => Documents.Params.All;\n\ntype TransformWithContentType = (\n contentType: Schema.SingleType | Schema.CollectionType,\n params: Documents.Params.All\n) => Documents.Params.All;\n\n/**\n * DP enabled -> set status to draft\n * DP disabled -> Used mostly for parsing relations, so there is not a need for a default.\n */\nconst setStatusToDraft: TransformWithContentType = (contentType, params) => {\n if (!contentTypes.hasDraftAndPublish(contentType) && params.status) {\n return params;\n }\n\n return assoc('status', 'draft', params);\n};\n\n/**\n * Adds a default status of `draft` to the params\n */\nconst defaultToDraft: ParamsTransform = (params) => {\n // Default to draft if no status is provided or it's invalid\n if (!params.status || params.status !== 'published') {\n return assoc('status', 'draft', params);\n }\n\n return params;\n};\n\n/**\n * DP disabled -> ignore status\n * DP enabled -> set status to draft if no status is provided or it's invalid\n */\nconst defaultStatus: TransformWithContentType = (contentType, params) => {\n if (!contentTypes.hasDraftAndPublish(contentType)) {\n return params;\n }\n\n // Default to draft if no status is provided or it's invalid\n if (!params.status || params.status !== 'published') {\n return defaultToDraft(params);\n }\n\n return params;\n};\n\n/**\n * In mutating actions we don't want user to set the publishedAt attribute.\n */\nconst filterDataPublishedAt: ParamsTransform = (params) => {\n if (params?.data?.publishedAt) {\n return assoc(['data', 'publishedAt'], null, params);\n }\n\n return params;\n};\n\n/**\n * Add status lookup query to the params\n */\nconst statusToLookup: TransformWithContentType = (contentType, params) => {\n if (!contentTypes.hasDraftAndPublish(contentType)) {\n return params;\n }\n\n const lookup = params.lookup || {};\n\n switch (params?.status) {\n case 'published':\n return assoc(['lookup', 'publishedAt'], { $notNull: true }, params);\n case 'draft':\n return assoc(['lookup', 'publishedAt'], { $null: true }, params);\n default:\n break;\n }\n\n return assoc('lookup', lookup, params);\n};\n\n/**\n * Translate publication status parameter into the data that will be saved\n */\nconst statusToData: TransformWithContentType = (contentType, params) => {\n if (!contentTypes.hasDraftAndPublish(contentType)) {\n return assoc(['data', 'publishedAt'], new Date(), params);\n }\n\n switch (params?.status) {\n case 'published':\n return assoc(['data', 'publishedAt'], new Date(), params);\n case 'draft':\n return assoc(['data', 'publishedAt'], null, params);\n default:\n break;\n }\n\n return params;\n};\n\nconst setStatusToDraftCurry = curry(setStatusToDraft);\nconst defaultToDraftCurry = curry(defaultToDraft);\nconst defaultStatusCurry = curry(defaultStatus);\nconst filterDataPublishedAtCurry = curry(filterDataPublishedAt);\nconst statusToLookupCurry = curry(statusToLookup);\nconst statusToDataCurry = curry(statusToData);\n\nexport {\n setStatusToDraftCurry as setStatusToDraft,\n defaultToDraftCurry as defaultToDraft,\n defaultStatusCurry as defaultStatus,\n filterDataPublishedAtCurry as filterDataPublishedAt,\n statusToLookupCurry as statusToLookup,\n statusToDataCurry as statusToData,\n};\n"],"names":["contentTypes","assoc","curry"],"mappings":";;;;AAgBA,MAAM,mBAA6C,CAAC,aAAa,WAAW;AAC1E,MAAI,CAACA,YAAa,aAAA,mBAAmB,WAAW,KAAK,OAAO,QAAQ;AAC3D,WAAA;AAAA,EACT;AAEO,SAAAC,QAAM,UAAU,SAAS,MAAM;AACxC;AAKA,MAAM,iBAAkC,CAAC,WAAW;AAElD,MAAI,CAAC,OAAO,UAAU,OAAO,WAAW,aAAa;AAC5C,WAAAA,QAAM,UAAU,SAAS,MAAM;AAAA,EACxC;AAEO,SAAA;AACT;AAMA,MAAM,gBAA0C,CAAC,aAAa,WAAW;AACvE,MAAI,CAACD,YAAA,aAAa,mBAAmB,WAAW,GAAG;AAC1C,WAAA;AAAA,EACT;AAGA,MAAI,CAAC,OAAO,UAAU,OAAO,WAAW,aAAa;AACnD,WAAO,eAAe,MAAM;AAAA,EAC9B;AAEO,SAAA;AACT;AAKA,MAAM,wBAAyC,CAAC,WAAW;AACrD,MAAA,QAAQ,MAAM,aAAa;AAC7B,WAAOC,EAAAA,MAAM,CAAC,QAAQ,aAAa,GAAG,MAAM,MAAM;AAAA,EACpD;AAEO,SAAA;AACT;AAKA,MAAM,iBAA2C,CAAC,aAAa,WAAW;AACxE,MAAI,CAACD,YAAA,aAAa,mBAAmB,WAAW,GAAG;AAC1C,WAAA;AAAA,EACT;AAEM,QAAA,SAAS,OAAO,UAAU;AAEhC,UAAQ,QAAQ,QAAQ;AAAA,IACtB,KAAK;AACI,aAAAC,EAAA,MAAM,CAAC,UAAU,aAAa,GAAG,EAAE,UAAU,QAAQ,MAAM;AAAA,IACpE,KAAK;AACI,aAAAA,EAAA,MAAM,CAAC,UAAU,aAAa,GAAG,EAAE,OAAO,QAAQ,MAAM;AAAA,EAGnE;AAEO,SAAAA,QAAM,UAAU,QAAQ,MAAM;AACvC;AAKA,MAAM,eAAyC,CAAC,aAAa,WAAW;AACtE,MAAI,CAACD,YAAA,aAAa,mBAAmB,WAAW,GAAG;AAC1C,WAAAC,EAAAA,MAAM,CAAC,QAAQ,aAAa,GAAO,oBAAA,KAAA,GAAQ,MAAM;AAAA,EAC1D;AAEA,UAAQ,QAAQ,QAAQ;AAAA,IACtB,KAAK;AACI,aAAAA,EAAAA,MAAM,CAAC,QAAQ,aAAa,GAAO,oBAAA,KAAA,GAAQ,MAAM;AAAA,IAC1D,KAAK;AACH,aAAOA,EAAAA,MAAM,CAAC,QAAQ,aAAa,GAAG,MAAM,MAAM;AAAA,EAGtD;AAEO,SAAA;AACT;AAEM,MAAA,wBAAwBC,QAAM,gBAAgB;AAC9C,MAAA,sBAAsBA,QAAM,cAAc;AAC1C,MAAA,qBAAqBA,QAAM,aAAa;AACxC,MAAA,6BAA6BA,QAAM,qBAAqB;AACxD,MAAA,sBAAsBA,QAAM,cAAc;AAC1C,MAAA,oBAAoBA,QAAM,YAAY;;;;;;;"}
1
+ {"version":3,"file":"draft-and-publish.js","sources":["../../../src/services/document-service/draft-and-publish.ts"],"sourcesContent":["import { assoc, curry } from 'lodash/fp';\n\nimport { Modules, Struct } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\ntype ParamsTransform = (params: Modules.Documents.Params.All) => Modules.Documents.Params.All;\n\ntype TransformWithContentType = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Modules.Documents.Params.All;\n\n/**\n * DP enabled -> set status to draft\n * DP disabled -> Used mostly for parsing relations, so there is not a need for a default.\n */\nconst setStatusToDraft: TransformWithContentType = (contentType, params) => {\n if (!contentTypes.hasDraftAndPublish(contentType) && params.status) {\n return params;\n }\n\n return assoc('status', 'draft', params);\n};\n\n/**\n * Adds a default status of `draft` to the params\n */\nconst defaultToDraft: ParamsTransform = (params) => {\n // Default to draft if no status is provided or it's invalid\n if (!params.status || params.status !== 'published') {\n return assoc('status', 'draft', params);\n }\n\n return params;\n};\n\n/**\n * DP disabled -> ignore status\n * DP enabled -> set status to draft if no status is provided or it's invalid\n */\nconst defaultStatus: TransformWithContentType = (contentType, params) => {\n if (!contentTypes.hasDraftAndPublish(contentType)) {\n return params;\n }\n\n // Default to draft if no status is provided or it's invalid\n if (!params.status || params.status !== 'published') {\n return defaultToDraft(params);\n }\n\n return params;\n};\n\n/**\n * In mutating actions we don't want user to set the publishedAt attribute.\n */\nconst filterDataPublishedAt: ParamsTransform = (params) => {\n if (params?.data?.publishedAt) {\n return assoc(['data', 'publishedAt'], null, params);\n }\n\n return params;\n};\n\n/**\n * Add status lookup query to the params\n */\nconst statusToLookup: TransformWithContentType = (contentType, params) => {\n if (!contentTypes.hasDraftAndPublish(contentType)) {\n return params;\n }\n\n const lookup = params.lookup || {};\n\n switch (params?.status) {\n case 'published':\n return assoc(['lookup', 'publishedAt'], { $notNull: true }, params);\n case 'draft':\n return assoc(['lookup', 'publishedAt'], { $null: true }, params);\n default:\n break;\n }\n\n return assoc('lookup', lookup, params);\n};\n\n/**\n * Translate publication status parameter into the data that will be saved\n */\nconst statusToData: TransformWithContentType = (contentType, params) => {\n if (!contentTypes.hasDraftAndPublish(contentType)) {\n return assoc(['data', 'publishedAt'], new Date(), params);\n }\n\n switch (params?.status) {\n case 'published':\n return assoc(['data', 'publishedAt'], new Date(), params);\n case 'draft':\n return assoc(['data', 'publishedAt'], null, params);\n default:\n break;\n }\n\n return params;\n};\n\nconst setStatusToDraftCurry = curry(setStatusToDraft);\nconst defaultToDraftCurry = curry(defaultToDraft);\nconst defaultStatusCurry = curry(defaultStatus);\nconst filterDataPublishedAtCurry = curry(filterDataPublishedAt);\nconst statusToLookupCurry = curry(statusToLookup);\nconst statusToDataCurry = curry(statusToData);\n\nexport {\n setStatusToDraftCurry as setStatusToDraft,\n defaultToDraftCurry as defaultToDraft,\n defaultStatusCurry as defaultStatus,\n filterDataPublishedAtCurry as filterDataPublishedAt,\n statusToLookupCurry as statusToLookup,\n statusToDataCurry as statusToData,\n};\n"],"names":["contentTypes","assoc","curry"],"mappings":";;;;AAgBA,MAAM,mBAA6C,CAAC,aAAa,WAAW;AAC1E,MAAI,CAACA,YAAa,aAAA,mBAAmB,WAAW,KAAK,OAAO,QAAQ;AAC3D,WAAA;AAAA,EACT;AAEO,SAAAC,QAAM,UAAU,SAAS,MAAM;AACxC;AAKA,MAAM,iBAAkC,CAAC,WAAW;AAElD,MAAI,CAAC,OAAO,UAAU,OAAO,WAAW,aAAa;AAC5C,WAAAA,QAAM,UAAU,SAAS,MAAM;AAAA,EACxC;AAEO,SAAA;AACT;AAMA,MAAM,gBAA0C,CAAC,aAAa,WAAW;AACvE,MAAI,CAACD,YAAA,aAAa,mBAAmB,WAAW,GAAG;AAC1C,WAAA;AAAA,EACT;AAGA,MAAI,CAAC,OAAO,UAAU,OAAO,WAAW,aAAa;AACnD,WAAO,eAAe,MAAM;AAAA,EAC9B;AAEO,SAAA;AACT;AAKA,MAAM,wBAAyC,CAAC,WAAW;AACrD,MAAA,QAAQ,MAAM,aAAa;AAC7B,WAAOC,EAAAA,MAAM,CAAC,QAAQ,aAAa,GAAG,MAAM,MAAM;AAAA,EACpD;AAEO,SAAA;AACT;AAKA,MAAM,iBAA2C,CAAC,aAAa,WAAW;AACxE,MAAI,CAACD,YAAA,aAAa,mBAAmB,WAAW,GAAG;AAC1C,WAAA;AAAA,EACT;AAEM,QAAA,SAAS,OAAO,UAAU;AAEhC,UAAQ,QAAQ,QAAQ;AAAA,IACtB,KAAK;AACI,aAAAC,EAAA,MAAM,CAAC,UAAU,aAAa,GAAG,EAAE,UAAU,QAAQ,MAAM;AAAA,IACpE,KAAK;AACI,aAAAA,EAAA,MAAM,CAAC,UAAU,aAAa,GAAG,EAAE,OAAO,QAAQ,MAAM;AAAA,EAGnE;AAEO,SAAAA,QAAM,UAAU,QAAQ,MAAM;AACvC;AAKA,MAAM,eAAyC,CAAC,aAAa,WAAW;AACtE,MAAI,CAACD,YAAA,aAAa,mBAAmB,WAAW,GAAG;AAC1C,WAAAC,EAAAA,MAAM,CAAC,QAAQ,aAAa,GAAO,oBAAA,KAAA,GAAQ,MAAM;AAAA,EAC1D;AAEA,UAAQ,QAAQ,QAAQ;AAAA,IACtB,KAAK;AACI,aAAAA,EAAAA,MAAM,CAAC,QAAQ,aAAa,GAAO,oBAAA,KAAA,GAAQ,MAAM;AAAA,IAC1D,KAAK;AACH,aAAOA,EAAAA,MAAM,CAAC,QAAQ,aAAa,GAAG,MAAM,MAAM;AAAA,EAGtD;AAEO,SAAA;AACT;AAEM,MAAA,wBAAwBC,QAAM,gBAAgB;AAC9C,MAAA,sBAAsBA,QAAM,cAAc;AAC1C,MAAA,qBAAqBA,QAAM,aAAa;AACxC,MAAA,6BAA6BA,QAAM,qBAAqB;AACxD,MAAA,sBAAsBA,QAAM,cAAc;AAC1C,MAAA,oBAAoBA,QAAM,YAAY;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"draft-and-publish.mjs","sources":["../../../src/services/document-service/draft-and-publish.ts"],"sourcesContent":["import { assoc, curry } from 'lodash/fp';\n\nimport { Schema, Documents } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\ntype ParamsTransform = (params: Documents.Params.All) => Documents.Params.All;\n\ntype TransformWithContentType = (\n contentType: Schema.SingleType | Schema.CollectionType,\n params: Documents.Params.All\n) => Documents.Params.All;\n\n/**\n * DP enabled -> set status to draft\n * DP disabled -> Used mostly for parsing relations, so there is not a need for a default.\n */\nconst setStatusToDraft: TransformWithContentType = (contentType, params) => {\n if (!contentTypes.hasDraftAndPublish(contentType) && params.status) {\n return params;\n }\n\n return assoc('status', 'draft', params);\n};\n\n/**\n * Adds a default status of `draft` to the params\n */\nconst defaultToDraft: ParamsTransform = (params) => {\n // Default to draft if no status is provided or it's invalid\n if (!params.status || params.status !== 'published') {\n return assoc('status', 'draft', params);\n }\n\n return params;\n};\n\n/**\n * DP disabled -> ignore status\n * DP enabled -> set status to draft if no status is provided or it's invalid\n */\nconst defaultStatus: TransformWithContentType = (contentType, params) => {\n if (!contentTypes.hasDraftAndPublish(contentType)) {\n return params;\n }\n\n // Default to draft if no status is provided or it's invalid\n if (!params.status || params.status !== 'published') {\n return defaultToDraft(params);\n }\n\n return params;\n};\n\n/**\n * In mutating actions we don't want user to set the publishedAt attribute.\n */\nconst filterDataPublishedAt: ParamsTransform = (params) => {\n if (params?.data?.publishedAt) {\n return assoc(['data', 'publishedAt'], null, params);\n }\n\n return params;\n};\n\n/**\n * Add status lookup query to the params\n */\nconst statusToLookup: TransformWithContentType = (contentType, params) => {\n if (!contentTypes.hasDraftAndPublish(contentType)) {\n return params;\n }\n\n const lookup = params.lookup || {};\n\n switch (params?.status) {\n case 'published':\n return assoc(['lookup', 'publishedAt'], { $notNull: true }, params);\n case 'draft':\n return assoc(['lookup', 'publishedAt'], { $null: true }, params);\n default:\n break;\n }\n\n return assoc('lookup', lookup, params);\n};\n\n/**\n * Translate publication status parameter into the data that will be saved\n */\nconst statusToData: TransformWithContentType = (contentType, params) => {\n if (!contentTypes.hasDraftAndPublish(contentType)) {\n return assoc(['data', 'publishedAt'], new Date(), params);\n }\n\n switch (params?.status) {\n case 'published':\n return assoc(['data', 'publishedAt'], new Date(), params);\n case 'draft':\n return assoc(['data', 'publishedAt'], null, params);\n default:\n break;\n }\n\n return params;\n};\n\nconst setStatusToDraftCurry = curry(setStatusToDraft);\nconst defaultToDraftCurry = curry(defaultToDraft);\nconst defaultStatusCurry = curry(defaultStatus);\nconst filterDataPublishedAtCurry = curry(filterDataPublishedAt);\nconst statusToLookupCurry = curry(statusToLookup);\nconst statusToDataCurry = curry(statusToData);\n\nexport {\n setStatusToDraftCurry as setStatusToDraft,\n defaultToDraftCurry as defaultToDraft,\n defaultStatusCurry as defaultStatus,\n filterDataPublishedAtCurry as filterDataPublishedAt,\n statusToLookupCurry as statusToLookup,\n statusToDataCurry as statusToData,\n};\n"],"names":[],"mappings":";;AAgBA,MAAM,mBAA6C,CAAC,aAAa,WAAW;AAC1E,MAAI,CAAC,aAAa,mBAAmB,WAAW,KAAK,OAAO,QAAQ;AAC3D,WAAA;AAAA,EACT;AAEO,SAAA,MAAM,UAAU,SAAS,MAAM;AACxC;AAKA,MAAM,iBAAkC,CAAC,WAAW;AAElD,MAAI,CAAC,OAAO,UAAU,OAAO,WAAW,aAAa;AAC5C,WAAA,MAAM,UAAU,SAAS,MAAM;AAAA,EACxC;AAEO,SAAA;AACT;AAMA,MAAM,gBAA0C,CAAC,aAAa,WAAW;AACvE,MAAI,CAAC,aAAa,mBAAmB,WAAW,GAAG;AAC1C,WAAA;AAAA,EACT;AAGA,MAAI,CAAC,OAAO,UAAU,OAAO,WAAW,aAAa;AACnD,WAAO,eAAe,MAAM;AAAA,EAC9B;AAEO,SAAA;AACT;AAKA,MAAM,wBAAyC,CAAC,WAAW;AACrD,MAAA,QAAQ,MAAM,aAAa;AAC7B,WAAO,MAAM,CAAC,QAAQ,aAAa,GAAG,MAAM,MAAM;AAAA,EACpD;AAEO,SAAA;AACT;AAKA,MAAM,iBAA2C,CAAC,aAAa,WAAW;AACxE,MAAI,CAAC,aAAa,mBAAmB,WAAW,GAAG;AAC1C,WAAA;AAAA,EACT;AAEM,QAAA,SAAS,OAAO,UAAU;AAEhC,UAAQ,QAAQ,QAAQ;AAAA,IACtB,KAAK;AACI,aAAA,MAAM,CAAC,UAAU,aAAa,GAAG,EAAE,UAAU,QAAQ,MAAM;AAAA,IACpE,KAAK;AACI,aAAA,MAAM,CAAC,UAAU,aAAa,GAAG,EAAE,OAAO,QAAQ,MAAM;AAAA,EAGnE;AAEO,SAAA,MAAM,UAAU,QAAQ,MAAM;AACvC;AAKA,MAAM,eAAyC,CAAC,aAAa,WAAW;AACtE,MAAI,CAAC,aAAa,mBAAmB,WAAW,GAAG;AAC1C,WAAA,MAAM,CAAC,QAAQ,aAAa,GAAO,oBAAA,KAAA,GAAQ,MAAM;AAAA,EAC1D;AAEA,UAAQ,QAAQ,QAAQ;AAAA,IACtB,KAAK;AACI,aAAA,MAAM,CAAC,QAAQ,aAAa,GAAO,oBAAA,KAAA,GAAQ,MAAM;AAAA,IAC1D,KAAK;AACH,aAAO,MAAM,CAAC,QAAQ,aAAa,GAAG,MAAM,MAAM;AAAA,EAGtD;AAEO,SAAA;AACT;AAEM,MAAA,wBAAwB,MAAM,gBAAgB;AAC9C,MAAA,sBAAsB,MAAM,cAAc;AAC1C,MAAA,qBAAqB,MAAM,aAAa;AACxC,MAAA,6BAA6B,MAAM,qBAAqB;AACxD,MAAA,sBAAsB,MAAM,cAAc;AAC1C,MAAA,oBAAoB,MAAM,YAAY;"}
1
+ {"version":3,"file":"draft-and-publish.mjs","sources":["../../../src/services/document-service/draft-and-publish.ts"],"sourcesContent":["import { assoc, curry } from 'lodash/fp';\n\nimport { Modules, Struct } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\ntype ParamsTransform = (params: Modules.Documents.Params.All) => Modules.Documents.Params.All;\n\ntype TransformWithContentType = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Modules.Documents.Params.All;\n\n/**\n * DP enabled -> set status to draft\n * DP disabled -> Used mostly for parsing relations, so there is not a need for a default.\n */\nconst setStatusToDraft: TransformWithContentType = (contentType, params) => {\n if (!contentTypes.hasDraftAndPublish(contentType) && params.status) {\n return params;\n }\n\n return assoc('status', 'draft', params);\n};\n\n/**\n * Adds a default status of `draft` to the params\n */\nconst defaultToDraft: ParamsTransform = (params) => {\n // Default to draft if no status is provided or it's invalid\n if (!params.status || params.status !== 'published') {\n return assoc('status', 'draft', params);\n }\n\n return params;\n};\n\n/**\n * DP disabled -> ignore status\n * DP enabled -> set status to draft if no status is provided or it's invalid\n */\nconst defaultStatus: TransformWithContentType = (contentType, params) => {\n if (!contentTypes.hasDraftAndPublish(contentType)) {\n return params;\n }\n\n // Default to draft if no status is provided or it's invalid\n if (!params.status || params.status !== 'published') {\n return defaultToDraft(params);\n }\n\n return params;\n};\n\n/**\n * In mutating actions we don't want user to set the publishedAt attribute.\n */\nconst filterDataPublishedAt: ParamsTransform = (params) => {\n if (params?.data?.publishedAt) {\n return assoc(['data', 'publishedAt'], null, params);\n }\n\n return params;\n};\n\n/**\n * Add status lookup query to the params\n */\nconst statusToLookup: TransformWithContentType = (contentType, params) => {\n if (!contentTypes.hasDraftAndPublish(contentType)) {\n return params;\n }\n\n const lookup = params.lookup || {};\n\n switch (params?.status) {\n case 'published':\n return assoc(['lookup', 'publishedAt'], { $notNull: true }, params);\n case 'draft':\n return assoc(['lookup', 'publishedAt'], { $null: true }, params);\n default:\n break;\n }\n\n return assoc('lookup', lookup, params);\n};\n\n/**\n * Translate publication status parameter into the data that will be saved\n */\nconst statusToData: TransformWithContentType = (contentType, params) => {\n if (!contentTypes.hasDraftAndPublish(contentType)) {\n return assoc(['data', 'publishedAt'], new Date(), params);\n }\n\n switch (params?.status) {\n case 'published':\n return assoc(['data', 'publishedAt'], new Date(), params);\n case 'draft':\n return assoc(['data', 'publishedAt'], null, params);\n default:\n break;\n }\n\n return params;\n};\n\nconst setStatusToDraftCurry = curry(setStatusToDraft);\nconst defaultToDraftCurry = curry(defaultToDraft);\nconst defaultStatusCurry = curry(defaultStatus);\nconst filterDataPublishedAtCurry = curry(filterDataPublishedAt);\nconst statusToLookupCurry = curry(statusToLookup);\nconst statusToDataCurry = curry(statusToData);\n\nexport {\n setStatusToDraftCurry as setStatusToDraft,\n defaultToDraftCurry as defaultToDraft,\n defaultStatusCurry as defaultStatus,\n filterDataPublishedAtCurry as filterDataPublishedAt,\n statusToLookupCurry as statusToLookup,\n statusToDataCurry as statusToData,\n};\n"],"names":[],"mappings":";;AAgBA,MAAM,mBAA6C,CAAC,aAAa,WAAW;AAC1E,MAAI,CAAC,aAAa,mBAAmB,WAAW,KAAK,OAAO,QAAQ;AAC3D,WAAA;AAAA,EACT;AAEO,SAAA,MAAM,UAAU,SAAS,MAAM;AACxC;AAKA,MAAM,iBAAkC,CAAC,WAAW;AAElD,MAAI,CAAC,OAAO,UAAU,OAAO,WAAW,aAAa;AAC5C,WAAA,MAAM,UAAU,SAAS,MAAM;AAAA,EACxC;AAEO,SAAA;AACT;AAMA,MAAM,gBAA0C,CAAC,aAAa,WAAW;AACvE,MAAI,CAAC,aAAa,mBAAmB,WAAW,GAAG;AAC1C,WAAA;AAAA,EACT;AAGA,MAAI,CAAC,OAAO,UAAU,OAAO,WAAW,aAAa;AACnD,WAAO,eAAe,MAAM;AAAA,EAC9B;AAEO,SAAA;AACT;AAKA,MAAM,wBAAyC,CAAC,WAAW;AACrD,MAAA,QAAQ,MAAM,aAAa;AAC7B,WAAO,MAAM,CAAC,QAAQ,aAAa,GAAG,MAAM,MAAM;AAAA,EACpD;AAEO,SAAA;AACT;AAKA,MAAM,iBAA2C,CAAC,aAAa,WAAW;AACxE,MAAI,CAAC,aAAa,mBAAmB,WAAW,GAAG;AAC1C,WAAA;AAAA,EACT;AAEM,QAAA,SAAS,OAAO,UAAU;AAEhC,UAAQ,QAAQ,QAAQ;AAAA,IACtB,KAAK;AACI,aAAA,MAAM,CAAC,UAAU,aAAa,GAAG,EAAE,UAAU,QAAQ,MAAM;AAAA,IACpE,KAAK;AACI,aAAA,MAAM,CAAC,UAAU,aAAa,GAAG,EAAE,OAAO,QAAQ,MAAM;AAAA,EAGnE;AAEO,SAAA,MAAM,UAAU,QAAQ,MAAM;AACvC;AAKA,MAAM,eAAyC,CAAC,aAAa,WAAW;AACtE,MAAI,CAAC,aAAa,mBAAmB,WAAW,GAAG;AAC1C,WAAA,MAAM,CAAC,QAAQ,aAAa,GAAO,oBAAA,KAAA,GAAQ,MAAM;AAAA,EAC1D;AAEA,UAAQ,QAAQ,QAAQ;AAAA,IACtB,KAAK;AACI,aAAA,MAAM,CAAC,QAAQ,aAAa,GAAO,oBAAA,KAAA,GAAQ,MAAM;AAAA,IAC1D,KAAK;AACH,aAAO,MAAM,CAAC,QAAQ,aAAa,GAAG,MAAM,MAAM;AAAA,EAGtD;AAEO,SAAA;AACT;AAEM,MAAA,wBAAwB,MAAM,gBAAgB;AAC9C,MAAA,sBAAsB,MAAM,cAAc;AAC1C,MAAA,qBAAqB,MAAM,aAAa;AACxC,MAAA,6BAA6B,MAAM,qBAAqB;AACxD,MAAA,sBAAsB,MAAM,cAAc;AAC1C,MAAA,oBAAoB,MAAM,YAAY;"}
@@ -0,0 +1,10 @@
1
+ import type { UID } from '@strapi/types';
2
+ declare const createEntriesService: (uid: UID.ContentType) => {
3
+ create: (params?: any) => Promise<any>;
4
+ delete: (id: number) => Promise<any>;
5
+ update: (entryToUpdate: any, params?: any) => Promise<any>;
6
+ publish: (entry: any, params?: any) => Promise<object>;
7
+ discardDraft: (entry: any, params?: any) => Promise<object>;
8
+ };
9
+ export { createEntriesService };
10
+ //# sourceMappingURL=entries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/entries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAazC,QAAA,MAAM,oBAAoB,QAAS,IAAI,WAAW;;iBAkCjB,MAAM;4BAUK,GAAG;qBA4BV,GAAG;0BAaE,GAAG;CAoB5C,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC"}