@strapi/core 0.0.0-experimental.c5235059f5636c4549ea2118c75c43b92e2615c8 → 0.0.0-experimental.c72b48da735f44a3ccafb7a6dc9ba5213f3844db

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 (736) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/Strapi.js +427 -403
  3. package/dist/Strapi.js.map +1 -1
  4. package/dist/Strapi.mjs +426 -402
  5. package/dist/Strapi.mjs.map +1 -1
  6. package/dist/compile.js +23 -14
  7. package/dist/compile.js.map +1 -1
  8. package/dist/compile.mjs +22 -14
  9. package/dist/compile.mjs.map +1 -1
  10. package/dist/configuration/config-loader.js +110 -97
  11. package/dist/configuration/config-loader.js.map +1 -1
  12. package/dist/configuration/config-loader.mjs +109 -96
  13. package/dist/configuration/config-loader.mjs.map +1 -1
  14. package/dist/configuration/get-dirs.js +31 -29
  15. package/dist/configuration/get-dirs.js.map +1 -1
  16. package/dist/configuration/get-dirs.mjs +30 -30
  17. package/dist/configuration/get-dirs.mjs.map +1 -1
  18. package/dist/configuration/index.d.ts +1 -0
  19. package/dist/configuration/index.d.ts.map +1 -1
  20. package/dist/configuration/index.js +85 -73
  21. package/dist/configuration/index.js.map +1 -1
  22. package/dist/configuration/index.mjs +84 -69
  23. package/dist/configuration/index.mjs.map +1 -1
  24. package/dist/configuration/urls.d.ts.map +1 -1
  25. package/dist/configuration/urls.js +74 -61
  26. package/dist/configuration/urls.js.map +1 -1
  27. package/dist/configuration/urls.mjs +73 -62
  28. package/dist/configuration/urls.mjs.map +1 -1
  29. package/dist/container.js +27 -23
  30. package/dist/container.js.map +1 -1
  31. package/dist/container.mjs +26 -24
  32. package/dist/container.mjs.map +1 -1
  33. package/dist/core-api/controller/collection-type.js +77 -76
  34. package/dist/core-api/controller/collection-type.js.map +1 -1
  35. package/dist/core-api/controller/collection-type.mjs +76 -77
  36. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  37. package/dist/core-api/controller/index.js +63 -48
  38. package/dist/core-api/controller/index.js.map +1 -1
  39. package/dist/core-api/controller/index.mjs +62 -49
  40. package/dist/core-api/controller/index.mjs.map +1 -1
  41. package/dist/core-api/controller/single-type.js +41 -40
  42. package/dist/core-api/controller/single-type.js.map +1 -1
  43. package/dist/core-api/controller/single-type.mjs +40 -41
  44. package/dist/core-api/controller/single-type.mjs.map +1 -1
  45. package/dist/core-api/controller/transform.js +72 -63
  46. package/dist/core-api/controller/transform.js.map +1 -1
  47. package/dist/core-api/controller/transform.mjs +71 -64
  48. package/dist/core-api/controller/transform.mjs.map +1 -1
  49. package/dist/core-api/routes/index.js +64 -62
  50. package/dist/core-api/routes/index.js.map +1 -1
  51. package/dist/core-api/routes/index.mjs +62 -62
  52. package/dist/core-api/routes/index.mjs.map +1 -1
  53. package/dist/core-api/service/collection-type.d.ts +2 -2
  54. package/dist/core-api/service/collection-type.js +73 -60
  55. package/dist/core-api/service/collection-type.js.map +1 -1
  56. package/dist/core-api/service/collection-type.mjs +72 -62
  57. package/dist/core-api/service/collection-type.mjs.map +1 -1
  58. package/dist/core-api/service/core-service.js +9 -8
  59. package/dist/core-api/service/core-service.js.map +1 -1
  60. package/dist/core-api/service/core-service.mjs +8 -9
  61. package/dist/core-api/service/core-service.mjs.map +1 -1
  62. package/dist/core-api/service/index.js +13 -13
  63. package/dist/core-api/service/index.js.map +1 -1
  64. package/dist/core-api/service/index.mjs +12 -14
  65. package/dist/core-api/service/index.mjs.map +1 -1
  66. package/dist/core-api/service/pagination.js +69 -43
  67. package/dist/core-api/service/pagination.js.map +1 -1
  68. package/dist/core-api/service/pagination.mjs +68 -47
  69. package/dist/core-api/service/pagination.mjs.map +1 -1
  70. package/dist/core-api/service/single-type.js +43 -39
  71. package/dist/core-api/service/single-type.js.map +1 -1
  72. package/dist/core-api/service/single-type.mjs +42 -41
  73. package/dist/core-api/service/single-type.mjs.map +1 -1
  74. package/dist/domain/content-type/index.js +95 -100
  75. package/dist/domain/content-type/index.js.map +1 -1
  76. package/dist/domain/content-type/index.mjs +94 -100
  77. package/dist/domain/content-type/index.mjs.map +1 -1
  78. package/dist/domain/content-type/validator.js +84 -69
  79. package/dist/domain/content-type/validator.js.map +1 -1
  80. package/dist/domain/content-type/validator.mjs +83 -68
  81. package/dist/domain/content-type/validator.mjs.map +1 -1
  82. package/dist/domain/module/index.js +109 -100
  83. package/dist/domain/module/index.js.map +1 -1
  84. package/dist/domain/module/index.mjs +108 -99
  85. package/dist/domain/module/index.mjs.map +1 -1
  86. package/dist/domain/module/validation.js +25 -20
  87. package/dist/domain/module/validation.js.map +1 -1
  88. package/dist/domain/module/validation.mjs +24 -21
  89. package/dist/domain/module/validation.mjs.map +1 -1
  90. package/dist/ee/index.d.ts +1 -0
  91. package/dist/ee/index.d.ts.map +1 -1
  92. package/dist/ee/index.js +171 -132
  93. package/dist/ee/index.js.map +1 -1
  94. package/dist/ee/index.mjs +170 -134
  95. package/dist/ee/index.mjs.map +1 -1
  96. package/dist/ee/license.d.ts.map +1 -1
  97. package/dist/ee/license.js +100 -75
  98. package/dist/ee/license.js.map +1 -1
  99. package/dist/ee/license.mjs +99 -76
  100. package/dist/ee/license.mjs.map +1 -1
  101. package/dist/factories.js +72 -67
  102. package/dist/factories.js.map +1 -1
  103. package/dist/factories.mjs +71 -71
  104. package/dist/factories.mjs.map +1 -1
  105. package/dist/index.js +29 -26
  106. package/dist/index.js.map +1 -1
  107. package/dist/index.mjs +29 -29
  108. package/dist/index.mjs.map +1 -1
  109. package/dist/loaders/admin.d.ts.map +1 -1
  110. package/dist/loaders/admin.js +21 -20
  111. package/dist/loaders/admin.js.map +1 -1
  112. package/dist/loaders/admin.mjs +20 -20
  113. package/dist/loaders/admin.mjs.map +1 -1
  114. package/dist/loaders/apis.js +143 -120
  115. package/dist/loaders/apis.js.map +1 -1
  116. package/dist/loaders/apis.mjs +142 -119
  117. package/dist/loaders/apis.mjs.map +1 -1
  118. package/dist/loaders/components.js +33 -34
  119. package/dist/loaders/components.js.map +1 -1
  120. package/dist/loaders/components.mjs +32 -34
  121. package/dist/loaders/components.mjs.map +1 -1
  122. package/dist/loaders/index.js +22 -20
  123. package/dist/loaders/index.js.map +1 -1
  124. package/dist/loaders/index.mjs +21 -21
  125. package/dist/loaders/index.mjs.map +1 -1
  126. package/dist/loaders/middlewares.js +29 -25
  127. package/dist/loaders/middlewares.js.map +1 -1
  128. package/dist/loaders/middlewares.mjs +28 -25
  129. package/dist/loaders/middlewares.mjs.map +1 -1
  130. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  131. package/dist/loaders/plugins/get-enabled-plugins.js +125 -102
  132. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  133. package/dist/loaders/plugins/get-enabled-plugins.mjs +124 -101
  134. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  135. package/dist/loaders/plugins/get-user-plugins-config.js +25 -24
  136. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  137. package/dist/loaders/plugins/get-user-plugins-config.mjs +24 -23
  138. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  139. package/dist/loaders/plugins/index.d.ts.map +1 -1
  140. package/dist/loaders/plugins/index.js +141 -104
  141. package/dist/loaders/plugins/index.js.map +1 -1
  142. package/dist/loaders/plugins/index.mjs +121 -104
  143. package/dist/loaders/plugins/index.mjs.map +1 -1
  144. package/dist/loaders/policies.js +24 -20
  145. package/dist/loaders/policies.js.map +1 -1
  146. package/dist/loaders/policies.mjs +23 -20
  147. package/dist/loaders/policies.mjs.map +1 -1
  148. package/dist/loaders/sanitizers.js +10 -4
  149. package/dist/loaders/sanitizers.js.map +1 -1
  150. package/dist/loaders/sanitizers.mjs +9 -6
  151. package/dist/loaders/sanitizers.mjs.map +1 -1
  152. package/dist/loaders/src-index.js +35 -27
  153. package/dist/loaders/src-index.js.map +1 -1
  154. package/dist/loaders/src-index.mjs +34 -29
  155. package/dist/loaders/src-index.mjs.map +1 -1
  156. package/dist/loaders/validators.js +9 -4
  157. package/dist/loaders/validators.js.map +1 -1
  158. package/dist/loaders/validators.mjs +8 -6
  159. package/dist/loaders/validators.mjs.map +1 -1
  160. package/dist/middlewares/body.d.ts.map +1 -1
  161. package/dist/middlewares/body.js +58 -54
  162. package/dist/middlewares/body.js.map +1 -1
  163. package/dist/middlewares/body.mjs +57 -51
  164. package/dist/middlewares/body.mjs.map +1 -1
  165. package/dist/middlewares/compression.js +6 -6
  166. package/dist/middlewares/compression.js.map +1 -1
  167. package/dist/middlewares/compression.mjs +5 -5
  168. package/dist/middlewares/compression.mjs.map +1 -1
  169. package/dist/middlewares/cors.js +59 -48
  170. package/dist/middlewares/cors.js.map +1 -1
  171. package/dist/middlewares/cors.mjs +58 -47
  172. package/dist/middlewares/cors.mjs.map +1 -1
  173. package/dist/middlewares/errors.js +32 -30
  174. package/dist/middlewares/errors.js.map +1 -1
  175. package/dist/middlewares/errors.mjs +31 -31
  176. package/dist/middlewares/errors.mjs.map +1 -1
  177. package/dist/middlewares/favicon.js +27 -17
  178. package/dist/middlewares/favicon.js.map +1 -1
  179. package/dist/middlewares/favicon.mjs +26 -16
  180. package/dist/middlewares/favicon.mjs.map +1 -1
  181. package/dist/middlewares/index.js +32 -30
  182. package/dist/middlewares/index.js.map +1 -1
  183. package/dist/middlewares/index.mjs +31 -31
  184. package/dist/middlewares/index.mjs.map +1 -1
  185. package/dist/middlewares/ip.js +6 -6
  186. package/dist/middlewares/ip.js.map +1 -1
  187. package/dist/middlewares/ip.mjs +5 -5
  188. package/dist/middlewares/ip.mjs.map +1 -1
  189. package/dist/middlewares/logger.js +10 -9
  190. package/dist/middlewares/logger.js.map +1 -1
  191. package/dist/middlewares/logger.mjs +9 -10
  192. package/dist/middlewares/logger.mjs.map +1 -1
  193. package/dist/middlewares/powered-by.js +13 -9
  194. package/dist/middlewares/powered-by.js.map +1 -1
  195. package/dist/middlewares/powered-by.mjs +12 -10
  196. package/dist/middlewares/powered-by.mjs.map +1 -1
  197. package/dist/middlewares/public.js +33 -29
  198. package/dist/middlewares/public.js.map +1 -1
  199. package/dist/middlewares/public.mjs +32 -28
  200. package/dist/middlewares/public.mjs.map +1 -1
  201. package/dist/middlewares/query.js +35 -32
  202. package/dist/middlewares/query.js.map +1 -1
  203. package/dist/middlewares/query.mjs +34 -31
  204. package/dist/middlewares/query.mjs.map +1 -1
  205. package/dist/middlewares/response-time.js +10 -9
  206. package/dist/middlewares/response-time.js.map +1 -1
  207. package/dist/middlewares/response-time.mjs +9 -10
  208. package/dist/middlewares/response-time.mjs.map +1 -1
  209. package/dist/middlewares/responses.js +14 -12
  210. package/dist/middlewares/responses.js.map +1 -1
  211. package/dist/middlewares/responses.mjs +13 -13
  212. package/dist/middlewares/responses.mjs.map +1 -1
  213. package/dist/middlewares/security.d.ts.map +1 -1
  214. package/dist/middlewares/security.js +109 -71
  215. package/dist/middlewares/security.js.map +1 -1
  216. package/dist/middlewares/security.mjs +108 -70
  217. package/dist/middlewares/security.mjs.map +1 -1
  218. package/dist/middlewares/session.js +26 -25
  219. package/dist/middlewares/session.js.map +1 -1
  220. package/dist/middlewares/session.mjs +25 -24
  221. package/dist/middlewares/session.mjs.map +1 -1
  222. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +14 -11
  223. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  224. package/dist/migrations/database/5.0.0-discard-drafts.js +153 -35
  225. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
  226. package/dist/migrations/database/5.0.0-discard-drafts.mjs +152 -37
  227. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
  228. package/dist/migrations/draft-publish.d.ts +2 -2
  229. package/dist/migrations/draft-publish.d.ts.map +1 -1
  230. package/dist/migrations/draft-publish.js +61 -34
  231. package/dist/migrations/draft-publish.js.map +1 -1
  232. package/dist/migrations/draft-publish.mjs +60 -36
  233. package/dist/migrations/draft-publish.mjs.map +1 -1
  234. package/dist/migrations/i18n.d.ts +5 -0
  235. package/dist/migrations/i18n.d.ts.map +1 -0
  236. package/dist/migrations/i18n.js +71 -0
  237. package/dist/migrations/i18n.js.map +1 -0
  238. package/dist/migrations/i18n.mjs +68 -0
  239. package/dist/migrations/i18n.mjs.map +1 -0
  240. package/dist/migrations/index.d.ts +5 -0
  241. package/dist/migrations/index.d.ts.map +1 -0
  242. package/dist/migrations/index.js +29 -0
  243. package/dist/migrations/index.js.map +1 -0
  244. package/dist/migrations/index.mjs +26 -0
  245. package/dist/migrations/index.mjs.map +1 -0
  246. package/dist/package.json.js +182 -0
  247. package/dist/package.json.js.map +1 -0
  248. package/dist/package.json.mjs +159 -0
  249. package/dist/package.json.mjs.map +1 -0
  250. package/dist/providers/admin.d.ts.map +1 -1
  251. package/dist/providers/admin.js +27 -17
  252. package/dist/providers/admin.js.map +1 -1
  253. package/dist/providers/admin.mjs +26 -19
  254. package/dist/providers/admin.mjs.map +1 -1
  255. package/dist/providers/coreStore.js +13 -8
  256. package/dist/providers/coreStore.js.map +1 -1
  257. package/dist/providers/coreStore.mjs +12 -10
  258. package/dist/providers/coreStore.mjs.map +1 -1
  259. package/dist/providers/cron.js +19 -16
  260. package/dist/providers/cron.js.map +1 -1
  261. package/dist/providers/cron.mjs +18 -18
  262. package/dist/providers/cron.mjs.map +1 -1
  263. package/dist/providers/index.js +18 -9
  264. package/dist/providers/index.js.map +1 -1
  265. package/dist/providers/index.mjs +17 -10
  266. package/dist/providers/index.mjs.map +1 -1
  267. package/dist/providers/provider.js +4 -3
  268. package/dist/providers/provider.js.map +1 -1
  269. package/dist/providers/provider.mjs +3 -4
  270. package/dist/providers/provider.mjs.map +1 -1
  271. package/dist/providers/registries.js +37 -32
  272. package/dist/providers/registries.js.map +1 -1
  273. package/dist/providers/registries.mjs +36 -34
  274. package/dist/providers/registries.mjs.map +1 -1
  275. package/dist/providers/telemetry.js +19 -16
  276. package/dist/providers/telemetry.js.map +1 -1
  277. package/dist/providers/telemetry.mjs +18 -18
  278. package/dist/providers/telemetry.mjs.map +1 -1
  279. package/dist/providers/webhooks.js +28 -26
  280. package/dist/providers/webhooks.js.map +1 -1
  281. package/dist/providers/webhooks.mjs +27 -28
  282. package/dist/providers/webhooks.mjs.map +1 -1
  283. package/dist/registries/apis.js +23 -20
  284. package/dist/registries/apis.js.map +1 -1
  285. package/dist/registries/apis.mjs +22 -22
  286. package/dist/registries/apis.mjs.map +1 -1
  287. package/dist/registries/components.js +35 -37
  288. package/dist/registries/components.js.map +1 -1
  289. package/dist/registries/components.mjs +34 -39
  290. package/dist/registries/components.mjs.map +1 -1
  291. package/dist/registries/content-types.js +54 -59
  292. package/dist/registries/content-types.js.map +1 -1
  293. package/dist/registries/content-types.mjs +53 -61
  294. package/dist/registries/content-types.mjs.map +1 -1
  295. package/dist/registries/controllers.js +70 -71
  296. package/dist/registries/controllers.js.map +1 -1
  297. package/dist/registries/controllers.mjs +69 -73
  298. package/dist/registries/controllers.mjs.map +1 -1
  299. package/dist/registries/custom-fields.js +75 -65
  300. package/dist/registries/custom-fields.js.map +1 -1
  301. package/dist/registries/custom-fields.mjs +74 -67
  302. package/dist/registries/custom-fields.mjs.map +1 -1
  303. package/dist/registries/hooks.js +46 -49
  304. package/dist/registries/hooks.js.map +1 -1
  305. package/dist/registries/hooks.mjs +45 -51
  306. package/dist/registries/hooks.mjs.map +1 -1
  307. package/dist/registries/middlewares.js +49 -51
  308. package/dist/registries/middlewares.js.map +1 -1
  309. package/dist/registries/middlewares.mjs +48 -53
  310. package/dist/registries/middlewares.mjs.map +1 -1
  311. package/dist/registries/models.js +14 -13
  312. package/dist/registries/models.js.map +1 -1
  313. package/dist/registries/models.mjs +13 -14
  314. package/dist/registries/models.mjs.map +1 -1
  315. package/dist/registries/modules.js +39 -36
  316. package/dist/registries/modules.js.map +1 -1
  317. package/dist/registries/modules.mjs +38 -38
  318. package/dist/registries/modules.mjs.map +1 -1
  319. package/dist/registries/namespace.js +21 -20
  320. package/dist/registries/namespace.js.map +1 -1
  321. package/dist/registries/namespace.mjs +20 -23
  322. package/dist/registries/namespace.mjs.map +1 -1
  323. package/dist/registries/plugins.js +23 -20
  324. package/dist/registries/plugins.js.map +1 -1
  325. package/dist/registries/plugins.mjs +22 -22
  326. package/dist/registries/plugins.mjs.map +1 -1
  327. package/dist/registries/policies.d.ts +1 -1
  328. package/dist/registries/policies.d.ts.map +1 -1
  329. package/dist/registries/policies.js +103 -96
  330. package/dist/registries/policies.js.map +1 -1
  331. package/dist/registries/policies.mjs +102 -98
  332. package/dist/registries/policies.mjs.map +1 -1
  333. package/dist/registries/sanitizers.js +23 -22
  334. package/dist/registries/sanitizers.js.map +1 -1
  335. package/dist/registries/sanitizers.mjs +22 -22
  336. package/dist/registries/sanitizers.mjs.map +1 -1
  337. package/dist/registries/services.js +71 -71
  338. package/dist/registries/services.js.map +1 -1
  339. package/dist/registries/services.mjs +70 -73
  340. package/dist/registries/services.mjs.map +1 -1
  341. package/dist/registries/validators.js +23 -22
  342. package/dist/registries/validators.js.map +1 -1
  343. package/dist/registries/validators.mjs +22 -22
  344. package/dist/registries/validators.mjs.map +1 -1
  345. package/dist/services/auth/index.js +74 -74
  346. package/dist/services/auth/index.js.map +1 -1
  347. package/dist/services/auth/index.mjs +73 -74
  348. package/dist/services/auth/index.mjs.map +1 -1
  349. package/dist/services/config.js +47 -43
  350. package/dist/services/config.js.map +1 -1
  351. package/dist/services/config.mjs +46 -44
  352. package/dist/services/config.mjs.map +1 -1
  353. package/dist/services/content-api/index.d.ts +10 -12
  354. package/dist/services/content-api/index.d.ts.map +1 -1
  355. package/dist/services/content-api/index.js +80 -79
  356. package/dist/services/content-api/index.js.map +1 -1
  357. package/dist/services/content-api/index.mjs +79 -79
  358. package/dist/services/content-api/index.mjs.map +1 -1
  359. package/dist/services/content-api/permissions/engine.js +8 -5
  360. package/dist/services/content-api/permissions/engine.js.map +1 -1
  361. package/dist/services/content-api/permissions/engine.mjs +7 -5
  362. package/dist/services/content-api/permissions/engine.mjs.map +1 -1
  363. package/dist/services/content-api/permissions/index.d.ts +10 -12
  364. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  365. package/dist/services/content-api/permissions/index.js +101 -81
  366. package/dist/services/content-api/permissions/index.js.map +1 -1
  367. package/dist/services/content-api/permissions/index.mjs +100 -81
  368. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  369. package/dist/services/content-api/permissions/providers/action.d.ts +5 -6
  370. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  371. package/dist/services/content-api/permissions/providers/action.js +17 -14
  372. package/dist/services/content-api/permissions/providers/action.js.map +1 -1
  373. package/dist/services/content-api/permissions/providers/action.mjs +16 -16
  374. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
  375. package/dist/services/content-api/permissions/providers/condition.d.ts +5 -6
  376. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  377. package/dist/services/content-api/permissions/providers/condition.js +17 -14
  378. package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
  379. package/dist/services/content-api/permissions/providers/condition.mjs +16 -16
  380. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
  381. package/dist/services/core-store.js +115 -95
  382. package/dist/services/core-store.js.map +1 -1
  383. package/dist/services/core-store.mjs +114 -97
  384. package/dist/services/core-store.mjs.map +1 -1
  385. package/dist/services/cron.d.ts +3 -3
  386. package/dist/services/cron.d.ts.map +1 -1
  387. package/dist/services/cron.js +74 -60
  388. package/dist/services/cron.js.map +1 -1
  389. package/dist/services/cron.mjs +73 -62
  390. package/dist/services/cron.mjs.map +1 -1
  391. package/dist/services/custom-fields.js +9 -7
  392. package/dist/services/custom-fields.js.map +1 -1
  393. package/dist/services/custom-fields.mjs +8 -9
  394. package/dist/services/custom-fields.mjs.map +1 -1
  395. package/dist/services/document-service/attributes/index.js +23 -18
  396. package/dist/services/document-service/attributes/index.js.map +1 -1
  397. package/dist/services/document-service/attributes/index.mjs +22 -19
  398. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  399. package/dist/services/document-service/attributes/transforms.js +16 -15
  400. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  401. package/dist/services/document-service/attributes/transforms.mjs +15 -15
  402. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  403. package/dist/services/document-service/common.d.ts +1 -1
  404. package/dist/services/document-service/common.d.ts.map +1 -1
  405. package/dist/services/document-service/common.js +5 -4
  406. package/dist/services/document-service/common.js.map +1 -1
  407. package/dist/services/document-service/common.mjs +4 -5
  408. package/dist/services/document-service/common.mjs.map +1 -1
  409. package/dist/services/document-service/components.d.ts.map +1 -1
  410. package/dist/services/document-service/components.js +255 -257
  411. package/dist/services/document-service/components.js.map +1 -1
  412. package/dist/services/document-service/components.mjs +254 -262
  413. package/dist/services/document-service/components.mjs.map +1 -1
  414. package/dist/services/document-service/draft-and-publish.d.ts +1 -1
  415. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  416. package/dist/services/document-service/draft-and-publish.js +88 -48
  417. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  418. package/dist/services/document-service/draft-and-publish.mjs +87 -54
  419. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  420. package/dist/services/document-service/entries.d.ts +2 -2
  421. package/dist/services/document-service/entries.d.ts.map +1 -1
  422. package/dist/services/document-service/entries.js +109 -92
  423. package/dist/services/document-service/entries.js.map +1 -1
  424. package/dist/services/document-service/entries.mjs +108 -93
  425. package/dist/services/document-service/entries.mjs.map +1 -1
  426. package/dist/services/document-service/events.d.ts +1 -1
  427. package/dist/services/document-service/events.d.ts.map +1 -1
  428. package/dist/services/document-service/events.js +52 -40
  429. package/dist/services/document-service/events.js.map +1 -1
  430. package/dist/services/document-service/events.mjs +51 -41
  431. package/dist/services/document-service/events.mjs.map +1 -1
  432. package/dist/services/document-service/index.d.ts +2 -1
  433. package/dist/services/document-service/index.d.ts.map +1 -1
  434. package/dist/services/document-service/index.js +53 -32
  435. package/dist/services/document-service/index.js.map +1 -1
  436. package/dist/services/document-service/index.mjs +52 -33
  437. package/dist/services/document-service/index.mjs.map +1 -1
  438. package/dist/services/document-service/internationalization.js +62 -46
  439. package/dist/services/document-service/internationalization.js.map +1 -1
  440. package/dist/services/document-service/internationalization.mjs +61 -50
  441. package/dist/services/document-service/internationalization.mjs.map +1 -1
  442. package/dist/services/document-service/middlewares/errors.js +23 -19
  443. package/dist/services/document-service/middlewares/errors.js.map +1 -1
  444. package/dist/services/document-service/middlewares/errors.mjs +22 -20
  445. package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
  446. package/dist/services/document-service/middlewares/middleware-manager.js +46 -44
  447. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  448. package/dist/services/document-service/middlewares/middleware-manager.mjs +45 -45
  449. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  450. package/dist/services/document-service/params.js +11 -5
  451. package/dist/services/document-service/params.js.map +1 -1
  452. package/dist/services/document-service/params.mjs +10 -6
  453. package/dist/services/document-service/params.mjs.map +1 -1
  454. package/dist/services/document-service/repository.d.ts.map +1 -1
  455. package/dist/services/document-service/repository.js +355 -269
  456. package/dist/services/document-service/repository.js.map +1 -1
  457. package/dist/services/document-service/repository.mjs +354 -270
  458. package/dist/services/document-service/repository.mjs.map +1 -1
  459. package/dist/services/document-service/transform/data.js +22 -12
  460. package/dist/services/document-service/transform/data.js.map +1 -1
  461. package/dist/services/document-service/transform/data.mjs +21 -13
  462. package/dist/services/document-service/transform/data.mjs.map +1 -1
  463. package/dist/services/document-service/transform/fields.js +26 -17
  464. package/dist/services/document-service/transform/fields.js.map +1 -1
  465. package/dist/services/document-service/transform/fields.mjs +25 -18
  466. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  467. package/dist/services/document-service/transform/id-map.d.ts +1 -1
  468. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  469. package/dist/services/document-service/transform/id-map.js +116 -69
  470. package/dist/services/document-service/transform/id-map.js.map +1 -1
  471. package/dist/services/document-service/transform/id-map.mjs +115 -70
  472. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  473. package/dist/services/document-service/transform/id-transform.d.ts +1 -1
  474. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  475. package/dist/services/document-service/transform/id-transform.js +37 -29
  476. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  477. package/dist/services/document-service/transform/id-transform.mjs +36 -30
  478. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  479. package/dist/services/document-service/transform/populate.js +23 -18
  480. package/dist/services/document-service/transform/populate.js.map +1 -1
  481. package/dist/services/document-service/transform/populate.mjs +22 -19
  482. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  483. package/dist/services/document-service/transform/query.js +11 -6
  484. package/dist/services/document-service/transform/query.js.map +1 -1
  485. package/dist/services/document-service/transform/query.mjs +10 -7
  486. package/dist/services/document-service/transform/query.mjs.map +1 -1
  487. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +1 -1
  488. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  489. package/dist/services/document-service/transform/relations/extract/data-ids.js +71 -48
  490. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  491. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +70 -49
  492. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  493. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  494. package/dist/services/document-service/transform/relations/transform/data-ids.js +97 -63
  495. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  496. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +96 -64
  497. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  498. package/dist/services/document-service/transform/relations/transform/default-locale.js +47 -29
  499. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  500. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +46 -30
  501. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  502. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  503. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  504. package/dist/services/document-service/transform/relations/utils/dp.js +52 -26
  505. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  506. package/dist/services/document-service/transform/relations/utils/dp.mjs +51 -27
  507. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  508. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +1 -1
  509. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  510. package/dist/services/document-service/transform/relations/utils/i18n.js +20 -18
  511. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  512. package/dist/services/document-service/transform/relations/utils/i18n.mjs +19 -21
  513. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  514. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  515. package/dist/services/document-service/transform/relations/utils/map-relation.js +116 -77
  516. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  517. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +115 -79
  518. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  519. package/dist/services/document-service/utils/bidirectional-relations.d.ts +95 -0
  520. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -0
  521. package/dist/services/document-service/utils/bidirectional-relations.js +148 -0
  522. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -0
  523. package/dist/services/document-service/utils/bidirectional-relations.mjs +145 -0
  524. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -0
  525. package/dist/services/document-service/utils/populate.d.ts +1 -1
  526. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  527. package/dist/services/document-service/utils/populate.js +67 -41
  528. package/dist/services/document-service/utils/populate.js.map +1 -1
  529. package/dist/services/document-service/utils/populate.mjs +66 -42
  530. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  531. package/dist/services/document-service/utils/unidirectional-relations.d.ts +36 -0
  532. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -0
  533. package/dist/services/document-service/utils/unidirectional-relations.js +116 -0
  534. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -0
  535. package/dist/services/document-service/utils/unidirectional-relations.mjs +113 -0
  536. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -0
  537. package/dist/services/entity-service/index.js +230 -161
  538. package/dist/services/entity-service/index.js.map +1 -1
  539. package/dist/services/entity-service/index.mjs +229 -160
  540. package/dist/services/entity-service/index.mjs.map +1 -1
  541. package/dist/services/entity-validator/blocks-validator.js +135 -103
  542. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  543. package/dist/services/entity-validator/blocks-validator.mjs +134 -104
  544. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  545. package/dist/services/entity-validator/index.d.ts +1 -1
  546. package/dist/services/entity-validator/index.d.ts.map +1 -1
  547. package/dist/services/entity-validator/index.js +362 -363
  548. package/dist/services/entity-validator/index.js.map +1 -1
  549. package/dist/services/entity-validator/index.mjs +358 -360
  550. package/dist/services/entity-validator/index.mjs.map +1 -1
  551. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  552. package/dist/services/entity-validator/validators.js +270 -208
  553. package/dist/services/entity-validator/validators.js.map +1 -1
  554. package/dist/services/entity-validator/validators.mjs +269 -214
  555. package/dist/services/entity-validator/validators.mjs.map +1 -1
  556. package/dist/services/errors.js +65 -65
  557. package/dist/services/errors.js.map +1 -1
  558. package/dist/services/errors.mjs +64 -66
  559. package/dist/services/errors.mjs.map +1 -1
  560. package/dist/services/event-hub.js +82 -69
  561. package/dist/services/event-hub.js.map +1 -1
  562. package/dist/services/event-hub.mjs +81 -71
  563. package/dist/services/event-hub.mjs.map +1 -1
  564. package/dist/services/features.js +19 -14
  565. package/dist/services/features.js.map +1 -1
  566. package/dist/services/features.mjs +18 -15
  567. package/dist/services/features.mjs.map +1 -1
  568. package/dist/services/fs.js +41 -40
  569. package/dist/services/fs.js.map +1 -1
  570. package/dist/services/fs.mjs +40 -39
  571. package/dist/services/fs.mjs.map +1 -1
  572. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  573. package/dist/services/metrics/admin-user-hash.js +13 -11
  574. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  575. package/dist/services/metrics/admin-user-hash.mjs +12 -10
  576. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  577. package/dist/services/metrics/index.js +46 -40
  578. package/dist/services/metrics/index.js.map +1 -1
  579. package/dist/services/metrics/index.mjs +45 -42
  580. package/dist/services/metrics/index.mjs.map +1 -1
  581. package/dist/services/metrics/is-truthy.js +13 -6
  582. package/dist/services/metrics/is-truthy.js.map +1 -1
  583. package/dist/services/metrics/is-truthy.mjs +12 -6
  584. package/dist/services/metrics/is-truthy.mjs.map +1 -1
  585. package/dist/services/metrics/middleware.d.ts.map +1 -1
  586. package/dist/services/metrics/middleware.js +37 -22
  587. package/dist/services/metrics/middleware.js.map +1 -1
  588. package/dist/services/metrics/middleware.mjs +36 -24
  589. package/dist/services/metrics/middleware.mjs.map +1 -1
  590. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  591. package/dist/services/metrics/rate-limiter.js +24 -19
  592. package/dist/services/metrics/rate-limiter.js.map +1 -1
  593. package/dist/services/metrics/rate-limiter.mjs +23 -21
  594. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  595. package/dist/services/metrics/sender.d.ts.map +1 -1
  596. package/dist/services/metrics/sender.js +78 -69
  597. package/dist/services/metrics/sender.js.map +1 -1
  598. package/dist/services/metrics/sender.mjs +77 -64
  599. package/dist/services/metrics/sender.mjs.map +1 -1
  600. package/dist/services/query-params.js +13 -10
  601. package/dist/services/query-params.js.map +1 -1
  602. package/dist/services/query-params.mjs +12 -12
  603. package/dist/services/query-params.mjs.map +1 -1
  604. package/dist/services/reloader.js +35 -32
  605. package/dist/services/reloader.js.map +1 -1
  606. package/dist/services/reloader.mjs +34 -33
  607. package/dist/services/reloader.mjs.map +1 -1
  608. package/dist/services/request-context.js +11 -8
  609. package/dist/services/request-context.js.map +1 -1
  610. package/dist/services/request-context.mjs +10 -10
  611. package/dist/services/request-context.mjs.map +1 -1
  612. package/dist/services/server/admin-api.js +11 -10
  613. package/dist/services/server/admin-api.js.map +1 -1
  614. package/dist/services/server/admin-api.mjs +10 -11
  615. package/dist/services/server/admin-api.mjs.map +1 -1
  616. package/dist/services/server/api.js +33 -27
  617. package/dist/services/server/api.js.map +1 -1
  618. package/dist/services/server/api.mjs +32 -26
  619. package/dist/services/server/api.mjs.map +1 -1
  620. package/dist/services/server/compose-endpoint.js +116 -105
  621. package/dist/services/server/compose-endpoint.js.map +1 -1
  622. package/dist/services/server/compose-endpoint.mjs +115 -105
  623. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  624. package/dist/services/server/content-api.js +11 -9
  625. package/dist/services/server/content-api.js.map +1 -1
  626. package/dist/services/server/content-api.mjs +10 -10
  627. package/dist/services/server/content-api.mjs.map +1 -1
  628. package/dist/services/server/http-server.js +48 -44
  629. package/dist/services/server/http-server.js.map +1 -1
  630. package/dist/services/server/http-server.mjs +47 -43
  631. package/dist/services/server/http-server.mjs.map +1 -1
  632. package/dist/services/server/index.js +85 -82
  633. package/dist/services/server/index.js.map +1 -1
  634. package/dist/services/server/index.mjs +84 -81
  635. package/dist/services/server/index.mjs.map +1 -1
  636. package/dist/services/server/koa.js +49 -47
  637. package/dist/services/server/koa.js.map +1 -1
  638. package/dist/services/server/koa.mjs +48 -44
  639. package/dist/services/server/koa.mjs.map +1 -1
  640. package/dist/services/server/middleware.js +86 -82
  641. package/dist/services/server/middleware.js.map +1 -1
  642. package/dist/services/server/middleware.mjs +85 -82
  643. package/dist/services/server/middleware.mjs.map +1 -1
  644. package/dist/services/server/policy.js +24 -17
  645. package/dist/services/server/policy.js.map +1 -1
  646. package/dist/services/server/policy.mjs +23 -18
  647. package/dist/services/server/policy.mjs.map +1 -1
  648. package/dist/services/server/register-middlewares.js +68 -61
  649. package/dist/services/server/register-middlewares.js.map +1 -1
  650. package/dist/services/server/register-middlewares.mjs +67 -63
  651. package/dist/services/server/register-middlewares.mjs.map +1 -1
  652. package/dist/services/server/register-routes.js +90 -67
  653. package/dist/services/server/register-routes.js.map +1 -1
  654. package/dist/services/server/register-routes.mjs +89 -67
  655. package/dist/services/server/register-routes.mjs.map +1 -1
  656. package/dist/services/server/routing.js +94 -81
  657. package/dist/services/server/routing.js.map +1 -1
  658. package/dist/services/server/routing.mjs +93 -81
  659. package/dist/services/server/routing.mjs.map +1 -1
  660. package/dist/services/utils/dynamic-zones.js +13 -14
  661. package/dist/services/utils/dynamic-zones.js.map +1 -1
  662. package/dist/services/utils/dynamic-zones.mjs +12 -16
  663. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  664. package/dist/services/webhook-runner.js +124 -122
  665. package/dist/services/webhook-runner.js.map +1 -1
  666. package/dist/services/webhook-runner.mjs +123 -121
  667. package/dist/services/webhook-runner.mjs.map +1 -1
  668. package/dist/services/webhook-store.js +132 -99
  669. package/dist/services/webhook-store.js.map +1 -1
  670. package/dist/services/webhook-store.mjs +131 -101
  671. package/dist/services/webhook-store.mjs.map +1 -1
  672. package/dist/services/worker-queue.js +44 -49
  673. package/dist/services/worker-queue.js.map +1 -1
  674. package/dist/services/worker-queue.mjs +43 -49
  675. package/dist/services/worker-queue.mjs.map +1 -1
  676. package/dist/utils/convert-custom-field-type.js +17 -20
  677. package/dist/utils/convert-custom-field-type.js.map +1 -1
  678. package/dist/utils/convert-custom-field-type.mjs +16 -21
  679. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  680. package/dist/utils/cron.js +64 -30
  681. package/dist/utils/cron.js.map +1 -1
  682. package/dist/utils/cron.mjs +63 -31
  683. package/dist/utils/cron.mjs.map +1 -1
  684. package/dist/utils/fetch.js +24 -18
  685. package/dist/utils/fetch.js.map +1 -1
  686. package/dist/utils/fetch.mjs +23 -19
  687. package/dist/utils/fetch.mjs.map +1 -1
  688. package/dist/utils/filepath-to-prop-path.js +20 -28
  689. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  690. package/dist/utils/filepath-to-prop-path.mjs +19 -26
  691. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  692. package/dist/utils/is-initialized.js +21 -12
  693. package/dist/utils/is-initialized.js.map +1 -1
  694. package/dist/utils/is-initialized.mjs +20 -13
  695. package/dist/utils/is-initialized.mjs.map +1 -1
  696. package/dist/utils/lifecycles.js +6 -5
  697. package/dist/utils/lifecycles.js.map +1 -1
  698. package/dist/utils/lifecycles.mjs +5 -6
  699. package/dist/utils/lifecycles.mjs.map +1 -1
  700. package/dist/utils/load-config-file.js +40 -38
  701. package/dist/utils/load-config-file.js.map +1 -1
  702. package/dist/utils/load-config-file.mjs +39 -36
  703. package/dist/utils/load-config-file.mjs.map +1 -1
  704. package/dist/utils/load-files.js +40 -35
  705. package/dist/utils/load-files.js.map +1 -1
  706. package/dist/utils/load-files.mjs +39 -32
  707. package/dist/utils/load-files.mjs.map +1 -1
  708. package/dist/utils/open-browser.js +8 -8
  709. package/dist/utils/open-browser.js.map +1 -1
  710. package/dist/utils/open-browser.mjs +7 -7
  711. package/dist/utils/open-browser.mjs.map +1 -1
  712. package/dist/utils/resolve-working-dirs.js +23 -10
  713. package/dist/utils/resolve-working-dirs.js.map +1 -1
  714. package/dist/utils/resolve-working-dirs.mjs +22 -9
  715. package/dist/utils/resolve-working-dirs.mjs.map +1 -1
  716. package/dist/utils/signals.js +20 -14
  717. package/dist/utils/signals.js.map +1 -1
  718. package/dist/utils/signals.mjs +19 -15
  719. package/dist/utils/signals.mjs.map +1 -1
  720. package/dist/utils/startup-logger.d.ts.map +1 -1
  721. package/dist/utils/startup-logger.js +107 -78
  722. package/dist/utils/startup-logger.js.map +1 -1
  723. package/dist/utils/startup-logger.mjs +106 -75
  724. package/dist/utils/startup-logger.mjs.map +1 -1
  725. package/dist/utils/transform-content-types-to-models.d.ts +355 -23
  726. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  727. package/dist/utils/transform-content-types-to-models.js +350 -260
  728. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  729. package/dist/utils/transform-content-types-to-models.mjs +349 -268
  730. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  731. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  732. package/dist/utils/update-notifier/index.js +68 -73
  733. package/dist/utils/update-notifier/index.js.map +1 -1
  734. package/dist/utils/update-notifier/index.mjs +67 -67
  735. package/dist/utils/update-notifier/index.mjs.map +1 -1
  736. package/package.json +30 -30
@@ -1 +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
+ {"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 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 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":["omitComponentData","curry","schema","data","attributes","componentAttributes","Object","keys","filter","attributeName","contentTypesUtils","isComponentAttribute","omit","createComponents","uid","strapi","getModel","componentBody","attributeNames","attribute","has","type","component","componentUID","repeatable","componentValue","Array","isArray","Error","components","async","map","value","createComponent","id","__pivot","field","component_type","dynamiczoneValues","createDynamicZoneComponents","__component","getComponents","entity","getComponentAttributes","_","isEmpty","db","query","load","updateComponents","entityToUpdate","deleteOldComponents","updateOrCreateComponent","negate","isNil","deleteOldDZComponents","pickStringifiedId","previousValue","idsToKeep","castArray","allIds","forEach","includes","errors","ApplicationError","idsToDelete","difference","length","idToDelete","deleteComponent","v","find","el","err","assign","status","reduce","acc","push","deleteComponents","entityToDelete","loadComponents","subValue","componentData","transform","pipe","assignComponentData","create","updateComponent","componentToUpdate","update","where","componentToDelete","delete"],"mappings":"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"}