@strapi/core 0.0.0-experimental.e14656d3b8681880212c13260b9a2b340c182f2d → 0.0.0-experimental.e1a19b9e52cdcb526515883c8289522a64c9871a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (849) hide show
  1. package/dist/Strapi.d.ts +1 -0
  2. package/dist/Strapi.d.ts.map +1 -1
  3. package/dist/Strapi.js +448 -403
  4. package/dist/Strapi.js.map +1 -1
  5. package/dist/Strapi.mjs +447 -402
  6. package/dist/Strapi.mjs.map +1 -1
  7. package/dist/compile.js +23 -14
  8. package/dist/compile.js.map +1 -1
  9. package/dist/compile.mjs +22 -14
  10. package/dist/compile.mjs.map +1 -1
  11. package/dist/configuration/config-loader.js +110 -97
  12. package/dist/configuration/config-loader.js.map +1 -1
  13. package/dist/configuration/config-loader.mjs +109 -96
  14. package/dist/configuration/config-loader.mjs.map +1 -1
  15. package/dist/configuration/get-dirs.js +31 -29
  16. package/dist/configuration/get-dirs.js.map +1 -1
  17. package/dist/configuration/get-dirs.mjs +30 -30
  18. package/dist/configuration/get-dirs.mjs.map +1 -1
  19. package/dist/configuration/index.d.ts +1 -0
  20. package/dist/configuration/index.d.ts.map +1 -1
  21. package/dist/configuration/index.js +85 -73
  22. package/dist/configuration/index.js.map +1 -1
  23. package/dist/configuration/index.mjs +84 -69
  24. package/dist/configuration/index.mjs.map +1 -1
  25. package/dist/configuration/urls.d.ts.map +1 -1
  26. package/dist/configuration/urls.js +74 -61
  27. package/dist/configuration/urls.js.map +1 -1
  28. package/dist/configuration/urls.mjs +73 -62
  29. package/dist/configuration/urls.mjs.map +1 -1
  30. package/dist/constants.d.ts +3 -0
  31. package/dist/constants.d.ts.map +1 -0
  32. package/dist/constants.js +6 -0
  33. package/dist/constants.js.map +1 -0
  34. package/dist/constants.mjs +4 -0
  35. package/dist/constants.mjs.map +1 -0
  36. package/dist/container.js +27 -23
  37. package/dist/container.js.map +1 -1
  38. package/dist/container.mjs +26 -24
  39. package/dist/container.mjs.map +1 -1
  40. package/dist/core-api/controller/collection-type.js +77 -76
  41. package/dist/core-api/controller/collection-type.js.map +1 -1
  42. package/dist/core-api/controller/collection-type.mjs +76 -77
  43. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  44. package/dist/core-api/controller/index.d.ts.map +1 -1
  45. package/dist/core-api/controller/index.js +64 -48
  46. package/dist/core-api/controller/index.js.map +1 -1
  47. package/dist/core-api/controller/index.mjs +63 -49
  48. package/dist/core-api/controller/index.mjs.map +1 -1
  49. package/dist/core-api/controller/single-type.js +41 -40
  50. package/dist/core-api/controller/single-type.js.map +1 -1
  51. package/dist/core-api/controller/single-type.mjs +40 -41
  52. package/dist/core-api/controller/single-type.mjs.map +1 -1
  53. package/dist/core-api/controller/transform.d.ts +3 -2
  54. package/dist/core-api/controller/transform.d.ts.map +1 -1
  55. package/dist/core-api/controller/transform.js +83 -64
  56. package/dist/core-api/controller/transform.js.map +1 -1
  57. package/dist/core-api/controller/transform.mjs +82 -65
  58. package/dist/core-api/controller/transform.mjs.map +1 -1
  59. package/dist/core-api/routes/index.d.ts +4 -22
  60. package/dist/core-api/routes/index.d.ts.map +1 -1
  61. package/dist/core-api/routes/index.js +205 -61
  62. package/dist/core-api/routes/index.js.map +1 -1
  63. package/dist/core-api/routes/index.mjs +185 -62
  64. package/dist/core-api/routes/index.mjs.map +1 -1
  65. package/dist/core-api/routes/validation/attributes.d.ts +244 -0
  66. package/dist/core-api/routes/validation/attributes.d.ts.map +1 -0
  67. package/dist/core-api/routes/validation/attributes.js +560 -0
  68. package/dist/core-api/routes/validation/attributes.js.map +1 -0
  69. package/dist/core-api/routes/validation/attributes.mjs +521 -0
  70. package/dist/core-api/routes/validation/attributes.mjs.map +1 -0
  71. package/dist/core-api/routes/validation/common.d.ts +105 -0
  72. package/dist/core-api/routes/validation/common.d.ts.map +1 -0
  73. package/dist/core-api/routes/validation/common.js +116 -0
  74. package/dist/core-api/routes/validation/common.js.map +1 -0
  75. package/dist/core-api/routes/validation/common.mjs +95 -0
  76. package/dist/core-api/routes/validation/common.mjs.map +1 -0
  77. package/dist/core-api/routes/validation/component.d.ts +34 -0
  78. package/dist/core-api/routes/validation/component.d.ts.map +1 -0
  79. package/dist/core-api/routes/validation/component.js +45 -0
  80. package/dist/core-api/routes/validation/component.js.map +1 -0
  81. package/dist/core-api/routes/validation/component.mjs +43 -0
  82. package/dist/core-api/routes/validation/component.mjs.map +1 -0
  83. package/dist/core-api/routes/validation/constants.d.ts +8 -0
  84. package/dist/core-api/routes/validation/constants.d.ts.map +1 -0
  85. package/dist/core-api/routes/validation/constants.js +18 -0
  86. package/dist/core-api/routes/validation/constants.js.map +1 -0
  87. package/dist/core-api/routes/validation/constants.mjs +16 -0
  88. package/dist/core-api/routes/validation/constants.mjs.map +1 -0
  89. package/dist/core-api/routes/validation/content-type.d.ts +128 -0
  90. package/dist/core-api/routes/validation/content-type.d.ts.map +1 -0
  91. package/dist/core-api/routes/validation/content-type.js +201 -0
  92. package/dist/core-api/routes/validation/content-type.js.map +1 -0
  93. package/dist/core-api/routes/validation/content-type.mjs +180 -0
  94. package/dist/core-api/routes/validation/content-type.mjs.map +1 -0
  95. package/dist/core-api/routes/validation/index.d.ts +5 -0
  96. package/dist/core-api/routes/validation/index.d.ts.map +1 -0
  97. package/dist/core-api/routes/validation/mappers.d.ts +105 -0
  98. package/dist/core-api/routes/validation/mappers.d.ts.map +1 -0
  99. package/dist/core-api/routes/validation/mappers.js +273 -0
  100. package/dist/core-api/routes/validation/mappers.js.map +1 -0
  101. package/dist/core-api/routes/validation/mappers.mjs +249 -0
  102. package/dist/core-api/routes/validation/mappers.mjs.map +1 -0
  103. package/dist/core-api/routes/validation/utils.d.ts +47 -0
  104. package/dist/core-api/routes/validation/utils.d.ts.map +1 -0
  105. package/dist/core-api/routes/validation/utils.js +128 -0
  106. package/dist/core-api/routes/validation/utils.js.map +1 -0
  107. package/dist/core-api/routes/validation/utils.mjs +106 -0
  108. package/dist/core-api/routes/validation/utils.mjs.map +1 -0
  109. package/dist/core-api/service/collection-type.d.ts +2 -2
  110. package/dist/core-api/service/collection-type.js +73 -60
  111. package/dist/core-api/service/collection-type.js.map +1 -1
  112. package/dist/core-api/service/collection-type.mjs +72 -62
  113. package/dist/core-api/service/collection-type.mjs.map +1 -1
  114. package/dist/core-api/service/core-service.js +9 -8
  115. package/dist/core-api/service/core-service.js.map +1 -1
  116. package/dist/core-api/service/core-service.mjs +8 -9
  117. package/dist/core-api/service/core-service.mjs.map +1 -1
  118. package/dist/core-api/service/index.js +13 -13
  119. package/dist/core-api/service/index.js.map +1 -1
  120. package/dist/core-api/service/index.mjs +12 -14
  121. package/dist/core-api/service/index.mjs.map +1 -1
  122. package/dist/core-api/service/pagination.js +69 -43
  123. package/dist/core-api/service/pagination.js.map +1 -1
  124. package/dist/core-api/service/pagination.mjs +68 -47
  125. package/dist/core-api/service/pagination.mjs.map +1 -1
  126. package/dist/core-api/service/single-type.js +43 -39
  127. package/dist/core-api/service/single-type.js.map +1 -1
  128. package/dist/core-api/service/single-type.mjs +42 -41
  129. package/dist/core-api/service/single-type.mjs.map +1 -1
  130. package/dist/domain/content-type/index.d.ts.map +1 -1
  131. package/dist/domain/content-type/index.js +110 -99
  132. package/dist/domain/content-type/index.js.map +1 -1
  133. package/dist/domain/content-type/index.mjs +109 -99
  134. package/dist/domain/content-type/index.mjs.map +1 -1
  135. package/dist/domain/content-type/validator.js +84 -69
  136. package/dist/domain/content-type/validator.js.map +1 -1
  137. package/dist/domain/content-type/validator.mjs +83 -68
  138. package/dist/domain/content-type/validator.mjs.map +1 -1
  139. package/dist/domain/module/index.d.ts.map +1 -1
  140. package/dist/domain/module/index.js +112 -100
  141. package/dist/domain/module/index.js.map +1 -1
  142. package/dist/domain/module/index.mjs +111 -99
  143. package/dist/domain/module/index.mjs.map +1 -1
  144. package/dist/domain/module/validation.js +25 -20
  145. package/dist/domain/module/validation.js.map +1 -1
  146. package/dist/domain/module/validation.mjs +24 -21
  147. package/dist/domain/module/validation.mjs.map +1 -1
  148. package/dist/ee/index.d.ts +7 -0
  149. package/dist/ee/index.d.ts.map +1 -1
  150. package/dist/ee/index.js +197 -132
  151. package/dist/ee/index.js.map +1 -1
  152. package/dist/ee/index.mjs +196 -134
  153. package/dist/ee/index.mjs.map +1 -1
  154. package/dist/ee/license.d.ts +3 -1
  155. package/dist/ee/license.d.ts.map +1 -1
  156. package/dist/ee/license.js +105 -75
  157. package/dist/ee/license.js.map +1 -1
  158. package/dist/ee/license.mjs +103 -76
  159. package/dist/ee/license.mjs.map +1 -1
  160. package/dist/factories.d.ts +3 -1
  161. package/dist/factories.d.ts.map +1 -1
  162. package/dist/factories.js +80 -67
  163. package/dist/factories.js.map +1 -1
  164. package/dist/factories.mjs +77 -70
  165. package/dist/factories.mjs.map +1 -1
  166. package/dist/index.js +29 -26
  167. package/dist/index.js.map +1 -1
  168. package/dist/index.mjs +29 -29
  169. package/dist/index.mjs.map +1 -1
  170. package/dist/loaders/admin.d.ts.map +1 -1
  171. package/dist/loaders/admin.js +21 -20
  172. package/dist/loaders/admin.js.map +1 -1
  173. package/dist/loaders/admin.mjs +20 -20
  174. package/dist/loaders/admin.mjs.map +1 -1
  175. package/dist/loaders/apis.js +143 -120
  176. package/dist/loaders/apis.js.map +1 -1
  177. package/dist/loaders/apis.mjs +142 -119
  178. package/dist/loaders/apis.mjs.map +1 -1
  179. package/dist/loaders/components.js +33 -34
  180. package/dist/loaders/components.js.map +1 -1
  181. package/dist/loaders/components.mjs +32 -34
  182. package/dist/loaders/components.mjs.map +1 -1
  183. package/dist/loaders/index.js +22 -20
  184. package/dist/loaders/index.js.map +1 -1
  185. package/dist/loaders/index.mjs +21 -21
  186. package/dist/loaders/index.mjs.map +1 -1
  187. package/dist/loaders/middlewares.js +29 -25
  188. package/dist/loaders/middlewares.js.map +1 -1
  189. package/dist/loaders/middlewares.mjs +28 -25
  190. package/dist/loaders/middlewares.mjs.map +1 -1
  191. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  192. package/dist/loaders/plugins/get-enabled-plugins.js +125 -127
  193. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  194. package/dist/loaders/plugins/get-enabled-plugins.mjs +124 -104
  195. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  196. package/dist/loaders/plugins/get-user-plugins-config.js +25 -24
  197. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  198. package/dist/loaders/plugins/get-user-plugins-config.mjs +24 -23
  199. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  200. package/dist/loaders/plugins/index.d.ts.map +1 -1
  201. package/dist/loaders/plugins/index.js +141 -104
  202. package/dist/loaders/plugins/index.js.map +1 -1
  203. package/dist/loaders/plugins/index.mjs +121 -104
  204. package/dist/loaders/plugins/index.mjs.map +1 -1
  205. package/dist/loaders/policies.js +24 -20
  206. package/dist/loaders/policies.js.map +1 -1
  207. package/dist/loaders/policies.mjs +23 -20
  208. package/dist/loaders/policies.mjs.map +1 -1
  209. package/dist/loaders/sanitizers.js +10 -4
  210. package/dist/loaders/sanitizers.js.map +1 -1
  211. package/dist/loaders/sanitizers.mjs +9 -6
  212. package/dist/loaders/sanitizers.mjs.map +1 -1
  213. package/dist/loaders/src-index.js +35 -27
  214. package/dist/loaders/src-index.js.map +1 -1
  215. package/dist/loaders/src-index.mjs +34 -29
  216. package/dist/loaders/src-index.mjs.map +1 -1
  217. package/dist/loaders/validators.js +9 -4
  218. package/dist/loaders/validators.js.map +1 -1
  219. package/dist/loaders/validators.mjs +8 -6
  220. package/dist/loaders/validators.mjs.map +1 -1
  221. package/dist/middlewares/body.d.ts.map +1 -1
  222. package/dist/middlewares/body.js +58 -54
  223. package/dist/middlewares/body.js.map +1 -1
  224. package/dist/middlewares/body.mjs +57 -51
  225. package/dist/middlewares/body.mjs.map +1 -1
  226. package/dist/middlewares/compression.js +6 -6
  227. package/dist/middlewares/compression.js.map +1 -1
  228. package/dist/middlewares/compression.mjs +5 -5
  229. package/dist/middlewares/compression.mjs.map +1 -1
  230. package/dist/middlewares/cors.d.ts +9 -1
  231. package/dist/middlewares/cors.d.ts.map +1 -1
  232. package/dist/middlewares/cors.js +81 -48
  233. package/dist/middlewares/cors.js.map +1 -1
  234. package/dist/middlewares/cors.mjs +78 -46
  235. package/dist/middlewares/cors.mjs.map +1 -1
  236. package/dist/middlewares/errors.js +32 -30
  237. package/dist/middlewares/errors.js.map +1 -1
  238. package/dist/middlewares/errors.mjs +31 -31
  239. package/dist/middlewares/errors.mjs.map +1 -1
  240. package/dist/middlewares/favicon.js +27 -17
  241. package/dist/middlewares/favicon.js.map +1 -1
  242. package/dist/middlewares/favicon.mjs +26 -16
  243. package/dist/middlewares/favicon.mjs.map +1 -1
  244. package/dist/middlewares/index.js +32 -30
  245. package/dist/middlewares/index.js.map +1 -1
  246. package/dist/middlewares/index.mjs +31 -31
  247. package/dist/middlewares/index.mjs.map +1 -1
  248. package/dist/middlewares/ip.js +6 -6
  249. package/dist/middlewares/ip.js.map +1 -1
  250. package/dist/middlewares/ip.mjs +5 -5
  251. package/dist/middlewares/ip.mjs.map +1 -1
  252. package/dist/middlewares/logger.js +10 -9
  253. package/dist/middlewares/logger.js.map +1 -1
  254. package/dist/middlewares/logger.mjs +9 -10
  255. package/dist/middlewares/logger.mjs.map +1 -1
  256. package/dist/middlewares/powered-by.js +13 -9
  257. package/dist/middlewares/powered-by.js.map +1 -1
  258. package/dist/middlewares/powered-by.mjs +12 -10
  259. package/dist/middlewares/powered-by.mjs.map +1 -1
  260. package/dist/middlewares/public.js +33 -29
  261. package/dist/middlewares/public.js.map +1 -1
  262. package/dist/middlewares/public.mjs +32 -28
  263. package/dist/middlewares/public.mjs.map +1 -1
  264. package/dist/middlewares/query.js +35 -32
  265. package/dist/middlewares/query.js.map +1 -1
  266. package/dist/middlewares/query.mjs +34 -31
  267. package/dist/middlewares/query.mjs.map +1 -1
  268. package/dist/middlewares/response-time.js +10 -9
  269. package/dist/middlewares/response-time.js.map +1 -1
  270. package/dist/middlewares/response-time.mjs +9 -10
  271. package/dist/middlewares/response-time.mjs.map +1 -1
  272. package/dist/middlewares/responses.js +14 -12
  273. package/dist/middlewares/responses.js.map +1 -1
  274. package/dist/middlewares/responses.mjs +13 -13
  275. package/dist/middlewares/responses.mjs.map +1 -1
  276. package/dist/middlewares/security.d.ts.map +1 -1
  277. package/dist/middlewares/security.js +109 -71
  278. package/dist/middlewares/security.js.map +1 -1
  279. package/dist/middlewares/security.mjs +108 -70
  280. package/dist/middlewares/security.mjs.map +1 -1
  281. package/dist/middlewares/session.js +26 -25
  282. package/dist/middlewares/session.js.map +1 -1
  283. package/dist/middlewares/session.mjs +25 -24
  284. package/dist/middlewares/session.mjs.map +1 -1
  285. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +14 -11
  286. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  287. package/dist/migrations/database/5.0.0-discard-drafts.js +153 -35
  288. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
  289. package/dist/migrations/database/5.0.0-discard-drafts.mjs +152 -37
  290. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
  291. package/dist/migrations/draft-publish.d.ts +2 -2
  292. package/dist/migrations/draft-publish.d.ts.map +1 -1
  293. package/dist/migrations/draft-publish.js +61 -34
  294. package/dist/migrations/draft-publish.js.map +1 -1
  295. package/dist/migrations/draft-publish.mjs +60 -36
  296. package/dist/migrations/draft-publish.mjs.map +1 -1
  297. package/dist/migrations/first-published-at.d.ts +4 -0
  298. package/dist/migrations/first-published-at.d.ts.map +1 -0
  299. package/dist/migrations/first-published-at.js +51 -0
  300. package/dist/migrations/first-published-at.js.map +1 -0
  301. package/dist/migrations/first-published-at.mjs +49 -0
  302. package/dist/migrations/first-published-at.mjs.map +1 -0
  303. package/dist/migrations/i18n.d.ts +5 -0
  304. package/dist/migrations/i18n.d.ts.map +1 -0
  305. package/dist/migrations/i18n.js +71 -0
  306. package/dist/migrations/i18n.js.map +1 -0
  307. package/dist/migrations/i18n.mjs +68 -0
  308. package/dist/migrations/i18n.mjs.map +1 -0
  309. package/dist/migrations/index.d.ts +5 -0
  310. package/dist/migrations/index.d.ts.map +1 -0
  311. package/dist/migrations/index.js +34 -0
  312. package/dist/migrations/index.js.map +1 -0
  313. package/dist/migrations/index.mjs +31 -0
  314. package/dist/migrations/index.mjs.map +1 -0
  315. package/dist/package.json.js +187 -0
  316. package/dist/package.json.js.map +1 -0
  317. package/dist/package.json.mjs +164 -0
  318. package/dist/package.json.mjs.map +1 -0
  319. package/dist/providers/admin.d.ts.map +1 -1
  320. package/dist/providers/admin.js +27 -17
  321. package/dist/providers/admin.js.map +1 -1
  322. package/dist/providers/admin.mjs +26 -19
  323. package/dist/providers/admin.mjs.map +1 -1
  324. package/dist/providers/coreStore.js +13 -8
  325. package/dist/providers/coreStore.js.map +1 -1
  326. package/dist/providers/coreStore.mjs +12 -10
  327. package/dist/providers/coreStore.mjs.map +1 -1
  328. package/dist/providers/cron.js +19 -16
  329. package/dist/providers/cron.js.map +1 -1
  330. package/dist/providers/cron.mjs +18 -18
  331. package/dist/providers/cron.mjs.map +1 -1
  332. package/dist/providers/index.d.ts.map +1 -1
  333. package/dist/providers/index.js +20 -9
  334. package/dist/providers/index.js.map +1 -1
  335. package/dist/providers/index.mjs +19 -10
  336. package/dist/providers/index.mjs.map +1 -1
  337. package/dist/providers/provider.js +4 -3
  338. package/dist/providers/provider.js.map +1 -1
  339. package/dist/providers/provider.mjs +3 -4
  340. package/dist/providers/provider.mjs.map +1 -1
  341. package/dist/providers/registries.js +37 -32
  342. package/dist/providers/registries.js.map +1 -1
  343. package/dist/providers/registries.mjs +36 -34
  344. package/dist/providers/registries.mjs.map +1 -1
  345. package/dist/providers/session-manager.d.ts +3 -0
  346. package/dist/providers/session-manager.d.ts.map +1 -0
  347. package/dist/providers/session-manager.js +23 -0
  348. package/dist/providers/session-manager.js.map +1 -0
  349. package/dist/providers/session-manager.mjs +21 -0
  350. package/dist/providers/session-manager.mjs.map +1 -0
  351. package/dist/providers/telemetry.js +19 -16
  352. package/dist/providers/telemetry.js.map +1 -1
  353. package/dist/providers/telemetry.mjs +18 -18
  354. package/dist/providers/telemetry.mjs.map +1 -1
  355. package/dist/providers/webhooks.js +28 -26
  356. package/dist/providers/webhooks.js.map +1 -1
  357. package/dist/providers/webhooks.mjs +27 -28
  358. package/dist/providers/webhooks.mjs.map +1 -1
  359. package/dist/registries/apis.js +23 -20
  360. package/dist/registries/apis.js.map +1 -1
  361. package/dist/registries/apis.mjs +22 -22
  362. package/dist/registries/apis.mjs.map +1 -1
  363. package/dist/registries/components.js +35 -37
  364. package/dist/registries/components.js.map +1 -1
  365. package/dist/registries/components.mjs +34 -39
  366. package/dist/registries/components.mjs.map +1 -1
  367. package/dist/registries/content-types.js +54 -59
  368. package/dist/registries/content-types.js.map +1 -1
  369. package/dist/registries/content-types.mjs +53 -61
  370. package/dist/registries/content-types.mjs.map +1 -1
  371. package/dist/registries/controllers.js +70 -71
  372. package/dist/registries/controllers.js.map +1 -1
  373. package/dist/registries/controllers.mjs +69 -73
  374. package/dist/registries/controllers.mjs.map +1 -1
  375. package/dist/registries/custom-fields.js +75 -65
  376. package/dist/registries/custom-fields.js.map +1 -1
  377. package/dist/registries/custom-fields.mjs +74 -67
  378. package/dist/registries/custom-fields.mjs.map +1 -1
  379. package/dist/registries/hooks.js +46 -49
  380. package/dist/registries/hooks.js.map +1 -1
  381. package/dist/registries/hooks.mjs +45 -51
  382. package/dist/registries/hooks.mjs.map +1 -1
  383. package/dist/registries/middlewares.js +49 -51
  384. package/dist/registries/middlewares.js.map +1 -1
  385. package/dist/registries/middlewares.mjs +48 -53
  386. package/dist/registries/middlewares.mjs.map +1 -1
  387. package/dist/registries/models.js +14 -13
  388. package/dist/registries/models.js.map +1 -1
  389. package/dist/registries/models.mjs +13 -14
  390. package/dist/registries/models.mjs.map +1 -1
  391. package/dist/registries/modules.js +39 -36
  392. package/dist/registries/modules.js.map +1 -1
  393. package/dist/registries/modules.mjs +38 -38
  394. package/dist/registries/modules.mjs.map +1 -1
  395. package/dist/registries/namespace.js +21 -20
  396. package/dist/registries/namespace.js.map +1 -1
  397. package/dist/registries/namespace.mjs +20 -23
  398. package/dist/registries/namespace.mjs.map +1 -1
  399. package/dist/registries/plugins.js +23 -20
  400. package/dist/registries/plugins.js.map +1 -1
  401. package/dist/registries/plugins.mjs +22 -22
  402. package/dist/registries/plugins.mjs.map +1 -1
  403. package/dist/registries/policies.js +103 -96
  404. package/dist/registries/policies.js.map +1 -1
  405. package/dist/registries/policies.mjs +102 -98
  406. package/dist/registries/policies.mjs.map +1 -1
  407. package/dist/registries/sanitizers.js +23 -22
  408. package/dist/registries/sanitizers.js.map +1 -1
  409. package/dist/registries/sanitizers.mjs +22 -22
  410. package/dist/registries/sanitizers.mjs.map +1 -1
  411. package/dist/registries/services.js +71 -71
  412. package/dist/registries/services.js.map +1 -1
  413. package/dist/registries/services.mjs +70 -73
  414. package/dist/registries/services.mjs.map +1 -1
  415. package/dist/registries/validators.js +23 -22
  416. package/dist/registries/validators.js.map +1 -1
  417. package/dist/registries/validators.mjs +22 -22
  418. package/dist/registries/validators.mjs.map +1 -1
  419. package/dist/services/auth/index.js +74 -74
  420. package/dist/services/auth/index.js.map +1 -1
  421. package/dist/services/auth/index.mjs +73 -74
  422. package/dist/services/auth/index.mjs.map +1 -1
  423. package/dist/services/config.js +47 -43
  424. package/dist/services/config.js.map +1 -1
  425. package/dist/services/config.mjs +46 -44
  426. package/dist/services/config.mjs.map +1 -1
  427. package/dist/services/content-api/index.d.ts +7 -3
  428. package/dist/services/content-api/index.d.ts.map +1 -1
  429. package/dist/services/content-api/index.js +80 -79
  430. package/dist/services/content-api/index.js.map +1 -1
  431. package/dist/services/content-api/index.mjs +79 -79
  432. package/dist/services/content-api/index.mjs.map +1 -1
  433. package/dist/services/content-api/permissions/engine.js +8 -5
  434. package/dist/services/content-api/permissions/engine.js.map +1 -1
  435. package/dist/services/content-api/permissions/engine.mjs +7 -5
  436. package/dist/services/content-api/permissions/engine.mjs.map +1 -1
  437. package/dist/services/content-api/permissions/index.d.ts +6 -2
  438. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  439. package/dist/services/content-api/permissions/index.js +101 -81
  440. package/dist/services/content-api/permissions/index.js.map +1 -1
  441. package/dist/services/content-api/permissions/index.mjs +100 -81
  442. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  443. package/dist/services/content-api/permissions/providers/action.d.ts +3 -1
  444. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  445. package/dist/services/content-api/permissions/providers/action.js +17 -14
  446. package/dist/services/content-api/permissions/providers/action.js.map +1 -1
  447. package/dist/services/content-api/permissions/providers/action.mjs +16 -16
  448. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
  449. package/dist/services/content-api/permissions/providers/condition.d.ts +3 -1
  450. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  451. package/dist/services/content-api/permissions/providers/condition.js +17 -14
  452. package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
  453. package/dist/services/content-api/permissions/providers/condition.mjs +16 -16
  454. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
  455. package/dist/services/content-source-maps.d.ts +13 -0
  456. package/dist/services/content-source-maps.d.ts.map +1 -0
  457. package/dist/services/content-source-maps.js +108 -0
  458. package/dist/services/content-source-maps.js.map +1 -0
  459. package/dist/services/content-source-maps.mjs +106 -0
  460. package/dist/services/content-source-maps.mjs.map +1 -0
  461. package/dist/services/core-store.d.ts +2 -2
  462. package/dist/services/core-store.d.ts.map +1 -1
  463. package/dist/services/core-store.js +115 -95
  464. package/dist/services/core-store.js.map +1 -1
  465. package/dist/services/core-store.mjs +114 -97
  466. package/dist/services/core-store.mjs.map +1 -1
  467. package/dist/services/cron.d.ts +3 -3
  468. package/dist/services/cron.d.ts.map +1 -1
  469. package/dist/services/cron.js +74 -60
  470. package/dist/services/cron.js.map +1 -1
  471. package/dist/services/cron.mjs +73 -62
  472. package/dist/services/cron.mjs.map +1 -1
  473. package/dist/services/custom-fields.js +9 -7
  474. package/dist/services/custom-fields.js.map +1 -1
  475. package/dist/services/custom-fields.mjs +8 -9
  476. package/dist/services/custom-fields.mjs.map +1 -1
  477. package/dist/services/document-service/attributes/index.js +23 -18
  478. package/dist/services/document-service/attributes/index.js.map +1 -1
  479. package/dist/services/document-service/attributes/index.mjs +22 -19
  480. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  481. package/dist/services/document-service/attributes/transforms.js +16 -15
  482. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  483. package/dist/services/document-service/attributes/transforms.mjs +15 -15
  484. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  485. package/dist/services/document-service/common.d.ts +1 -1
  486. package/dist/services/document-service/common.d.ts.map +1 -1
  487. package/dist/services/document-service/common.js +5 -4
  488. package/dist/services/document-service/common.js.map +1 -1
  489. package/dist/services/document-service/common.mjs +4 -5
  490. package/dist/services/document-service/common.mjs.map +1 -1
  491. package/dist/services/document-service/components.d.ts +31 -1
  492. package/dist/services/document-service/components.d.ts.map +1 -1
  493. package/dist/services/document-service/components.js +363 -256
  494. package/dist/services/document-service/components.js.map +1 -1
  495. package/dist/services/document-service/components.mjs +359 -261
  496. package/dist/services/document-service/components.mjs.map +1 -1
  497. package/dist/services/document-service/draft-and-publish.d.ts +1 -1
  498. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  499. package/dist/services/document-service/draft-and-publish.js +88 -48
  500. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  501. package/dist/services/document-service/draft-and-publish.mjs +87 -54
  502. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  503. package/dist/services/document-service/entries.d.ts +2 -2
  504. package/dist/services/document-service/entries.d.ts.map +1 -1
  505. package/dist/services/document-service/entries.js +151 -92
  506. package/dist/services/document-service/entries.js.map +1 -1
  507. package/dist/services/document-service/entries.mjs +150 -93
  508. package/dist/services/document-service/entries.mjs.map +1 -1
  509. package/dist/services/document-service/events.d.ts +1 -1
  510. package/dist/services/document-service/events.d.ts.map +1 -1
  511. package/dist/services/document-service/events.js +52 -40
  512. package/dist/services/document-service/events.js.map +1 -1
  513. package/dist/services/document-service/events.mjs +51 -41
  514. package/dist/services/document-service/events.mjs.map +1 -1
  515. package/dist/services/document-service/first-published-at.d.ts +7 -0
  516. package/dist/services/document-service/first-published-at.d.ts.map +1 -0
  517. package/dist/services/document-service/first-published-at.js +31 -0
  518. package/dist/services/document-service/first-published-at.js.map +1 -0
  519. package/dist/services/document-service/first-published-at.mjs +28 -0
  520. package/dist/services/document-service/first-published-at.mjs.map +1 -0
  521. package/dist/services/document-service/index.d.ts +2 -1
  522. package/dist/services/document-service/index.d.ts.map +1 -1
  523. package/dist/services/document-service/index.js +53 -32
  524. package/dist/services/document-service/index.js.map +1 -1
  525. package/dist/services/document-service/index.mjs +52 -33
  526. package/dist/services/document-service/index.mjs.map +1 -1
  527. package/dist/services/document-service/internationalization.d.ts +6 -1
  528. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  529. package/dist/services/document-service/internationalization.js +94 -46
  530. package/dist/services/document-service/internationalization.js.map +1 -1
  531. package/dist/services/document-service/internationalization.mjs +92 -50
  532. package/dist/services/document-service/internationalization.mjs.map +1 -1
  533. package/dist/services/document-service/middlewares/errors.js +23 -19
  534. package/dist/services/document-service/middlewares/errors.js.map +1 -1
  535. package/dist/services/document-service/middlewares/errors.mjs +22 -20
  536. package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
  537. package/dist/services/document-service/middlewares/middleware-manager.js +46 -44
  538. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  539. package/dist/services/document-service/middlewares/middleware-manager.mjs +45 -45
  540. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  541. package/dist/services/document-service/params.js +11 -5
  542. package/dist/services/document-service/params.js.map +1 -1
  543. package/dist/services/document-service/params.mjs +10 -6
  544. package/dist/services/document-service/params.mjs.map +1 -1
  545. package/dist/services/document-service/repository.d.ts.map +1 -1
  546. package/dist/services/document-service/repository.js +363 -269
  547. package/dist/services/document-service/repository.js.map +1 -1
  548. package/dist/services/document-service/repository.mjs +362 -270
  549. package/dist/services/document-service/repository.mjs.map +1 -1
  550. package/dist/services/document-service/transform/data.js +22 -12
  551. package/dist/services/document-service/transform/data.js.map +1 -1
  552. package/dist/services/document-service/transform/data.mjs +21 -13
  553. package/dist/services/document-service/transform/data.mjs.map +1 -1
  554. package/dist/services/document-service/transform/fields.js +26 -17
  555. package/dist/services/document-service/transform/fields.js.map +1 -1
  556. package/dist/services/document-service/transform/fields.mjs +25 -18
  557. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  558. package/dist/services/document-service/transform/id-map.d.ts +1 -1
  559. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  560. package/dist/services/document-service/transform/id-map.js +116 -69
  561. package/dist/services/document-service/transform/id-map.js.map +1 -1
  562. package/dist/services/document-service/transform/id-map.mjs +115 -70
  563. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  564. package/dist/services/document-service/transform/id-transform.d.ts +1 -1
  565. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  566. package/dist/services/document-service/transform/id-transform.js +37 -29
  567. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  568. package/dist/services/document-service/transform/id-transform.mjs +36 -30
  569. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  570. package/dist/services/document-service/transform/populate.js +23 -18
  571. package/dist/services/document-service/transform/populate.js.map +1 -1
  572. package/dist/services/document-service/transform/populate.mjs +22 -19
  573. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  574. package/dist/services/document-service/transform/query.js +11 -6
  575. package/dist/services/document-service/transform/query.js.map +1 -1
  576. package/dist/services/document-service/transform/query.mjs +10 -7
  577. package/dist/services/document-service/transform/query.mjs.map +1 -1
  578. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +1 -1
  579. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  580. package/dist/services/document-service/transform/relations/extract/data-ids.js +71 -48
  581. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  582. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +70 -49
  583. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  584. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  585. package/dist/services/document-service/transform/relations/transform/data-ids.js +97 -63
  586. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  587. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +96 -64
  588. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  589. package/dist/services/document-service/transform/relations/transform/default-locale.js +47 -29
  590. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  591. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +46 -30
  592. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  593. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  594. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  595. package/dist/services/document-service/transform/relations/utils/dp.js +52 -26
  596. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  597. package/dist/services/document-service/transform/relations/utils/dp.mjs +51 -27
  598. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  599. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +1 -1
  600. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  601. package/dist/services/document-service/transform/relations/utils/i18n.js +20 -18
  602. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  603. package/dist/services/document-service/transform/relations/utils/i18n.mjs +19 -21
  604. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  605. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  606. package/dist/services/document-service/transform/relations/utils/map-relation.js +116 -77
  607. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  608. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +115 -79
  609. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  610. package/dist/services/document-service/utils/bidirectional-relations.d.ts +95 -0
  611. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -0
  612. package/dist/services/document-service/utils/bidirectional-relations.js +148 -0
  613. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -0
  614. package/dist/services/document-service/utils/bidirectional-relations.mjs +145 -0
  615. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -0
  616. package/dist/services/document-service/utils/clean-component-join-table.d.ts +7 -0
  617. package/dist/services/document-service/utils/clean-component-join-table.d.ts.map +1 -0
  618. package/dist/services/document-service/utils/populate.d.ts +1 -1
  619. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  620. package/dist/services/document-service/utils/populate.js +67 -41
  621. package/dist/services/document-service/utils/populate.js.map +1 -1
  622. package/dist/services/document-service/utils/populate.mjs +66 -42
  623. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  624. package/dist/services/document-service/utils/unidirectional-relations.d.ts +53 -0
  625. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -0
  626. package/dist/services/document-service/utils/unidirectional-relations.js +131 -0
  627. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -0
  628. package/dist/services/document-service/utils/unidirectional-relations.mjs +128 -0
  629. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -0
  630. package/dist/services/entity-service/index.js +230 -161
  631. package/dist/services/entity-service/index.js.map +1 -1
  632. package/dist/services/entity-service/index.mjs +229 -160
  633. package/dist/services/entity-service/index.mjs.map +1 -1
  634. package/dist/services/entity-validator/blocks-validator.js +135 -103
  635. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  636. package/dist/services/entity-validator/blocks-validator.mjs +134 -104
  637. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  638. package/dist/services/entity-validator/index.d.ts +1 -1
  639. package/dist/services/entity-validator/index.d.ts.map +1 -1
  640. package/dist/services/entity-validator/index.js +370 -362
  641. package/dist/services/entity-validator/index.js.map +1 -1
  642. package/dist/services/entity-validator/index.mjs +366 -359
  643. package/dist/services/entity-validator/index.mjs.map +1 -1
  644. package/dist/services/entity-validator/validators.d.ts +1 -0
  645. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  646. package/dist/services/entity-validator/validators.js +270 -209
  647. package/dist/services/entity-validator/validators.js.map +1 -1
  648. package/dist/services/entity-validator/validators.mjs +269 -215
  649. package/dist/services/entity-validator/validators.mjs.map +1 -1
  650. package/dist/services/errors.js +65 -65
  651. package/dist/services/errors.js.map +1 -1
  652. package/dist/services/errors.mjs +64 -66
  653. package/dist/services/errors.mjs.map +1 -1
  654. package/dist/services/event-hub.js +82 -69
  655. package/dist/services/event-hub.js.map +1 -1
  656. package/dist/services/event-hub.mjs +81 -71
  657. package/dist/services/event-hub.mjs.map +1 -1
  658. package/dist/services/features.js +19 -14
  659. package/dist/services/features.js.map +1 -1
  660. package/dist/services/features.mjs +18 -15
  661. package/dist/services/features.mjs.map +1 -1
  662. package/dist/services/fs.js +41 -40
  663. package/dist/services/fs.js.map +1 -1
  664. package/dist/services/fs.mjs +40 -39
  665. package/dist/services/fs.mjs.map +1 -1
  666. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  667. package/dist/services/metrics/admin-user-hash.js +13 -11
  668. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  669. package/dist/services/metrics/admin-user-hash.mjs +12 -10
  670. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  671. package/dist/services/metrics/index.d.ts +1 -1
  672. package/dist/services/metrics/index.d.ts.map +1 -1
  673. package/dist/services/metrics/index.js +48 -40
  674. package/dist/services/metrics/index.js.map +1 -1
  675. package/dist/services/metrics/index.mjs +47 -42
  676. package/dist/services/metrics/index.mjs.map +1 -1
  677. package/dist/services/metrics/is-truthy.js +13 -6
  678. package/dist/services/metrics/is-truthy.js.map +1 -1
  679. package/dist/services/metrics/is-truthy.mjs +12 -6
  680. package/dist/services/metrics/is-truthy.mjs.map +1 -1
  681. package/dist/services/metrics/middleware.d.ts +2 -1
  682. package/dist/services/metrics/middleware.d.ts.map +1 -1
  683. package/dist/services/metrics/middleware.js +37 -22
  684. package/dist/services/metrics/middleware.js.map +1 -1
  685. package/dist/services/metrics/middleware.mjs +36 -24
  686. package/dist/services/metrics/middleware.mjs.map +1 -1
  687. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  688. package/dist/services/metrics/rate-limiter.js +24 -19
  689. package/dist/services/metrics/rate-limiter.js.map +1 -1
  690. package/dist/services/metrics/rate-limiter.mjs +23 -21
  691. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  692. package/dist/services/metrics/sender.d.ts.map +1 -1
  693. package/dist/services/metrics/sender.js +79 -69
  694. package/dist/services/metrics/sender.js.map +1 -1
  695. package/dist/services/metrics/sender.mjs +78 -64
  696. package/dist/services/metrics/sender.mjs.map +1 -1
  697. package/dist/services/query-params.js +13 -10
  698. package/dist/services/query-params.js.map +1 -1
  699. package/dist/services/query-params.mjs +12 -12
  700. package/dist/services/query-params.mjs.map +1 -1
  701. package/dist/services/reloader.js +35 -32
  702. package/dist/services/reloader.js.map +1 -1
  703. package/dist/services/reloader.mjs +34 -33
  704. package/dist/services/reloader.mjs.map +1 -1
  705. package/dist/services/request-context.js +11 -8
  706. package/dist/services/request-context.js.map +1 -1
  707. package/dist/services/request-context.mjs +10 -10
  708. package/dist/services/request-context.mjs.map +1 -1
  709. package/dist/services/server/admin-api.js +11 -10
  710. package/dist/services/server/admin-api.js.map +1 -1
  711. package/dist/services/server/admin-api.mjs +10 -11
  712. package/dist/services/server/admin-api.mjs.map +1 -1
  713. package/dist/services/server/api.js +33 -27
  714. package/dist/services/server/api.js.map +1 -1
  715. package/dist/services/server/api.mjs +32 -26
  716. package/dist/services/server/api.mjs.map +1 -1
  717. package/dist/services/server/compose-endpoint.js +116 -105
  718. package/dist/services/server/compose-endpoint.js.map +1 -1
  719. package/dist/services/server/compose-endpoint.mjs +115 -105
  720. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  721. package/dist/services/server/content-api.js +11 -9
  722. package/dist/services/server/content-api.js.map +1 -1
  723. package/dist/services/server/content-api.mjs +10 -10
  724. package/dist/services/server/content-api.mjs.map +1 -1
  725. package/dist/services/server/http-server.js +48 -44
  726. package/dist/services/server/http-server.js.map +1 -1
  727. package/dist/services/server/http-server.mjs +47 -43
  728. package/dist/services/server/http-server.mjs.map +1 -1
  729. package/dist/services/server/index.js +85 -82
  730. package/dist/services/server/index.js.map +1 -1
  731. package/dist/services/server/index.mjs +84 -81
  732. package/dist/services/server/index.mjs.map +1 -1
  733. package/dist/services/server/koa.js +49 -47
  734. package/dist/services/server/koa.js.map +1 -1
  735. package/dist/services/server/koa.mjs +48 -44
  736. package/dist/services/server/koa.mjs.map +1 -1
  737. package/dist/services/server/middleware.js +86 -82
  738. package/dist/services/server/middleware.js.map +1 -1
  739. package/dist/services/server/middleware.mjs +85 -82
  740. package/dist/services/server/middleware.mjs.map +1 -1
  741. package/dist/services/server/policy.js +24 -17
  742. package/dist/services/server/policy.js.map +1 -1
  743. package/dist/services/server/policy.mjs +23 -18
  744. package/dist/services/server/policy.mjs.map +1 -1
  745. package/dist/services/server/register-middlewares.js +68 -61
  746. package/dist/services/server/register-middlewares.js.map +1 -1
  747. package/dist/services/server/register-middlewares.mjs +67 -63
  748. package/dist/services/server/register-middlewares.mjs.map +1 -1
  749. package/dist/services/server/register-routes.js +109 -66
  750. package/dist/services/server/register-routes.js.map +1 -1
  751. package/dist/services/server/register-routes.mjs +108 -66
  752. package/dist/services/server/register-routes.mjs.map +1 -1
  753. package/dist/services/server/routing.d.ts +10 -0
  754. package/dist/services/server/routing.d.ts.map +1 -1
  755. package/dist/services/server/routing.js +100 -81
  756. package/dist/services/server/routing.js.map +1 -1
  757. package/dist/services/server/routing.mjs +99 -81
  758. package/dist/services/server/routing.mjs.map +1 -1
  759. package/dist/services/session-manager.d.ts +167 -0
  760. package/dist/services/session-manager.d.ts.map +1 -0
  761. package/dist/services/session-manager.js +529 -0
  762. package/dist/services/session-manager.js.map +1 -0
  763. package/dist/services/session-manager.mjs +526 -0
  764. package/dist/services/session-manager.mjs.map +1 -0
  765. package/dist/services/utils/conditional-fields.d.ts +3 -0
  766. package/dist/services/utils/conditional-fields.d.ts.map +1 -0
  767. package/dist/services/utils/conditional-fields.js +22 -0
  768. package/dist/services/utils/conditional-fields.js.map +1 -0
  769. package/dist/services/utils/conditional-fields.mjs +20 -0
  770. package/dist/services/utils/conditional-fields.mjs.map +1 -0
  771. package/dist/services/utils/dynamic-zones.js +13 -14
  772. package/dist/services/utils/dynamic-zones.js.map +1 -1
  773. package/dist/services/utils/dynamic-zones.mjs +12 -16
  774. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  775. package/dist/services/webhook-runner.js +124 -122
  776. package/dist/services/webhook-runner.js.map +1 -1
  777. package/dist/services/webhook-runner.mjs +123 -121
  778. package/dist/services/webhook-runner.mjs.map +1 -1
  779. package/dist/services/webhook-store.js +132 -99
  780. package/dist/services/webhook-store.js.map +1 -1
  781. package/dist/services/webhook-store.mjs +131 -101
  782. package/dist/services/webhook-store.mjs.map +1 -1
  783. package/dist/services/worker-queue.js +44 -49
  784. package/dist/services/worker-queue.js.map +1 -1
  785. package/dist/services/worker-queue.mjs +43 -49
  786. package/dist/services/worker-queue.mjs.map +1 -1
  787. package/dist/utils/convert-custom-field-type.js +17 -20
  788. package/dist/utils/convert-custom-field-type.js.map +1 -1
  789. package/dist/utils/convert-custom-field-type.mjs +16 -21
  790. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  791. package/dist/utils/cron.js +64 -30
  792. package/dist/utils/cron.js.map +1 -1
  793. package/dist/utils/cron.mjs +63 -31
  794. package/dist/utils/cron.mjs.map +1 -1
  795. package/dist/utils/fetch.d.ts +5 -1
  796. package/dist/utils/fetch.d.ts.map +1 -1
  797. package/dist/utils/fetch.js +28 -18
  798. package/dist/utils/fetch.js.map +1 -1
  799. package/dist/utils/fetch.mjs +27 -19
  800. package/dist/utils/fetch.mjs.map +1 -1
  801. package/dist/utils/filepath-to-prop-path.js +20 -28
  802. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  803. package/dist/utils/filepath-to-prop-path.mjs +19 -26
  804. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  805. package/dist/utils/is-initialized.js +21 -12
  806. package/dist/utils/is-initialized.js.map +1 -1
  807. package/dist/utils/is-initialized.mjs +20 -13
  808. package/dist/utils/is-initialized.mjs.map +1 -1
  809. package/dist/utils/lifecycles.js +6 -5
  810. package/dist/utils/lifecycles.js.map +1 -1
  811. package/dist/utils/lifecycles.mjs +5 -6
  812. package/dist/utils/lifecycles.mjs.map +1 -1
  813. package/dist/utils/load-config-file.js +40 -38
  814. package/dist/utils/load-config-file.js.map +1 -1
  815. package/dist/utils/load-config-file.mjs +39 -36
  816. package/dist/utils/load-config-file.mjs.map +1 -1
  817. package/dist/utils/load-files.js +40 -35
  818. package/dist/utils/load-files.js.map +1 -1
  819. package/dist/utils/load-files.mjs +39 -32
  820. package/dist/utils/load-files.mjs.map +1 -1
  821. package/dist/utils/open-browser.js +8 -8
  822. package/dist/utils/open-browser.js.map +1 -1
  823. package/dist/utils/open-browser.mjs +7 -7
  824. package/dist/utils/open-browser.mjs.map +1 -1
  825. package/dist/utils/resolve-working-dirs.js +23 -10
  826. package/dist/utils/resolve-working-dirs.js.map +1 -1
  827. package/dist/utils/resolve-working-dirs.mjs +22 -9
  828. package/dist/utils/resolve-working-dirs.mjs.map +1 -1
  829. package/dist/utils/signals.js +20 -14
  830. package/dist/utils/signals.js.map +1 -1
  831. package/dist/utils/signals.mjs +19 -15
  832. package/dist/utils/signals.mjs.map +1 -1
  833. package/dist/utils/startup-logger.d.ts.map +1 -1
  834. package/dist/utils/startup-logger.js +107 -78
  835. package/dist/utils/startup-logger.js.map +1 -1
  836. package/dist/utils/startup-logger.mjs +106 -75
  837. package/dist/utils/startup-logger.mjs.map +1 -1
  838. package/dist/utils/transform-content-types-to-models.d.ts +550 -21
  839. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  840. package/dist/utils/transform-content-types-to-models.js +350 -261
  841. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  842. package/dist/utils/transform-content-types-to-models.mjs +349 -269
  843. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  844. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  845. package/dist/utils/update-notifier/index.js +68 -73
  846. package/dist/utils/update-notifier/index.js.map +1 -1
  847. package/dist/utils/update-notifier/index.mjs +67 -67
  848. package/dist/utils/update-notifier/index.mjs.map +1 -1
  849. package/package.json +36 -32
@@ -1 +1 @@
1
- {"version":3,"file":"5.0.0-discard-drafts.mjs","sources":["../../../src/migrations/database/5.0.0-discard-drafts.ts"],"sourcesContent":["/* eslint-disable no-continue */\nimport type { UID } from '@strapi/types';\nimport type { Database, Migration } from '@strapi/database';\nimport { async, contentTypes } from '@strapi/utils';\n\ntype DocumentVersion = { documentId: string; locale: string };\ntype Knex = Parameters<Migration['up']>[0];\n\n/**\n * Load a batch of versions to discard.\n *\n * Versions with only a draft version will be ignored.\n * Only versions with a published version (which always have a draft version) will be discarded.\n */\nexport async function* getBatchToDiscard({\n db,\n trx,\n uid,\n batchSize = 1000,\n}: {\n db: Database;\n trx: Knex;\n uid: string;\n batchSize?: number;\n}) {\n let offset = 0;\n let hasMore = true;\n\n while (hasMore) {\n // Look for the published entries to discard\n const batch: DocumentVersion[] = await db\n .queryBuilder(uid)\n .select(['id', 'documentId', 'locale'])\n .where({ publishedAt: { $ne: null } })\n .limit(batchSize)\n .offset(offset)\n .orderBy('id')\n .transacting(trx)\n .execute();\n\n if (batch.length < batchSize) {\n hasMore = false;\n }\n\n offset += batchSize;\n yield batch;\n }\n}\n\nconst migrateUp = async (trx: Knex, db: Database) => {\n for (const meta of db.metadata.values()) {\n const hasTable = await trx.schema.hasTable(meta.tableName);\n\n if (!hasTable) {\n continue;\n }\n\n const uid = meta.uid as UID.ContentType;\n const model = strapi.getModel(uid);\n const hasDP = contentTypes.hasDraftAndPublish(model);\n if (!hasDP) {\n continue;\n }\n\n const discardDraft = async (entry: DocumentVersion) =>\n strapi\n .documents(uid)\n // Discard draft by referencing the documentId and locale\n .discardDraft({ documentId: entry.documentId, locale: entry.locale });\n\n /**\n * Load a batch of entries (batched to prevent loading millions of rows at once ),\n * and discard them using the document service.\n */\n for await (const batch of getBatchToDiscard({ db, trx, uid: meta.uid })) {\n await async.map(batch, discardDraft, { concurrency: 10 });\n }\n }\n};\n\n/**\n * On V4 there was no concept of document, and an entry could be in a draft or published state.\n * But not both at the same time.\n *\n * On V5 we introduced the concept of document, and an entry can be in a draft or published state,\n * with the requirement that a document must always have a draft.\n *\n * This migration creates the document draft counterpart for all the entries that were in a published state.\n */\nexport const discardDocumentDrafts: Migration = {\n name: 'core::5.0.0-discard-drafts',\n async up(trx, db) {\n // TODO: Log to inform the user that the migration is running in the background\n await migrateUp(trx, db);\n },\n async down() {\n throw new Error('not implemented');\n },\n};\n"],"names":[],"mappings":";AAcA,gBAAuB,kBAAkB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AACd,GAKG;AACD,MAAI,SAAS;AACb,MAAI,UAAU;AAEd,SAAO,SAAS;AAEd,UAAM,QAA2B,MAAM,GACpC,aAAa,GAAG,EAChB,OAAO,CAAC,MAAM,cAAc,QAAQ,CAAC,EACrC,MAAM,EAAE,aAAa,EAAE,KAAK,KAAO,EAAA,CAAC,EACpC,MAAM,SAAS,EACf,OAAO,MAAM,EACb,QAAQ,IAAI,EACZ,YAAY,GAAG,EACf,QAAQ;AAEP,QAAA,MAAM,SAAS,WAAW;AAClB,gBAAA;AAAA,IACZ;AAEU,cAAA;AACJ,UAAA;AAAA,EACR;AACF;AAEA,MAAM,YAAY,OAAO,KAAW,OAAiB;AACnD,aAAW,QAAQ,GAAG,SAAS,OAAA,GAAU;AACvC,UAAM,WAAW,MAAM,IAAI,OAAO,SAAS,KAAK,SAAS;AAEzD,QAAI,CAAC,UAAU;AACb;AAAA,IACF;AAEA,UAAM,MAAM,KAAK;AACX,UAAA,QAAQ,OAAO,SAAS,GAAG;AAC3B,UAAA,QAAQ,aAAa,mBAAmB,KAAK;AACnD,QAAI,CAAC,OAAO;AACV;AAAA,IACF;AAEA,UAAM,eAAe,OAAO,UAC1B,OACG,UAAU,GAAG,EAEb,aAAa,EAAE,YAAY,MAAM,YAAY,QAAQ,MAAM,QAAQ;AAMvD,qBAAA,SAAS,kBAAkB,EAAE,IAAI,KAAK,KAAK,KAAK,IAAI,CAAC,GAAG;AACvE,YAAM,MAAM,IAAI,OAAO,cAAc,EAAE,aAAa,IAAI;AAAA,IAC1D;AAAA,EACF;AACF;AAWO,MAAM,wBAAmC;AAAA,EAC9C,MAAM;AAAA,EACN,MAAM,GAAG,KAAK,IAAI;AAEV,UAAA,UAAU,KAAK,EAAE;AAAA,EACzB;AAAA,EACA,MAAM,OAAO;AACL,UAAA,IAAI,MAAM,iBAAiB;AAAA,EACnC;AACF;"}
1
+ {"version":3,"file":"5.0.0-discard-drafts.mjs","sources":["../../../src/migrations/database/5.0.0-discard-drafts.ts"],"sourcesContent":["/**\n * This migration is responsible for creating the draft counterpart for all the entries that were in a published state.\n *\n * In v4, entries could either be in a draft or published state, but not both at the same time.\n * In v5, we introduced the concept of document, and an entry can be in a draft or published state.\n *\n * This means the migration needs to create the draft counterpart if an entry was published.\n *\n * This migration performs the following steps:\n * 1. Creates draft entries for all published entries, without it's components, dynamic zones or relations.\n * 2. Using the document service, discard those same drafts to copy its relations.\n */\n\n/* eslint-disable no-continue */\nimport type { UID } from '@strapi/types';\nimport type { Database, Migration } from '@strapi/database';\nimport { async, contentTypes } from '@strapi/utils';\nimport { createDocumentService } from '../../services/document-service';\n\ntype DocumentVersion = { documentId: string; locale: string };\ntype Knex = Parameters<Migration['up']>[0];\n\n/**\n * Check if the model has draft and publish enabled.\n */\nconst hasDraftAndPublish = async (trx: Knex, meta: any) => {\n const hasTable = await trx.schema.hasTable(meta.tableName);\n\n if (!hasTable) {\n return false;\n }\n\n const uid = meta.uid as UID.ContentType;\n const model = strapi.getModel(uid);\n const hasDP = contentTypes.hasDraftAndPublish(model);\n if (!hasDP) {\n return false;\n }\n\n return true;\n};\n\n/**\n * Copy all the published entries to draft entries, without it's components, dynamic zones or relations.\n * This ensures all necessary draft's exist before copying it's relations.\n */\nasync function copyPublishedEntriesToDraft({\n db,\n trx,\n uid,\n}: {\n db: Database;\n trx: Knex;\n uid: string;\n}) {\n // Extract all scalar attributes to use in the insert query\n const meta = db.metadata.get(uid);\n\n // Get scalar attributes that will be copied over the new draft\n const scalarAttributes = Object.values(meta.attributes).reduce((acc, attribute: any) => {\n if (['id'].includes(attribute.columnName)) {\n return acc;\n }\n\n if (contentTypes.isScalarAttribute(attribute)) {\n acc.push(attribute.columnName);\n }\n\n return acc;\n }, [] as string[]);\n\n /**\n * Query to copy the published entries into draft entries.\n *\n * INSERT INTO tableName (columnName1, columnName2, columnName3, ...)\n * SELECT columnName1, columnName2, columnName3, ...\n * FROM tableName\n */\n await trx\n // INSERT INTO tableName (columnName1, columnName2, columnName3, ...)\n .into(\n trx.raw(`?? (${scalarAttributes.map(() => `??`).join(', ')})`, [\n meta.tableName,\n ...scalarAttributes,\n ])\n )\n .insert((subQb: typeof trx) => {\n // SELECT columnName1, columnName2, columnName3, ...\n subQb\n .select(\n ...scalarAttributes.map((att: string) => {\n // Override 'publishedAt' and 'updatedAt' attributes\n if (att === 'published_at') {\n return trx.raw('NULL as ??', 'published_at');\n }\n\n return att;\n })\n )\n .from(meta.tableName)\n // Only select entries that were published\n .whereNotNull('published_at');\n });\n}\n\n/**\n * Load a batch of versions to discard.\n *\n * Versions with only a draft version will be ignored.\n * Only versions with a published version (which always have a draft version) will be discarded.\n */\nexport async function* getBatchToDiscard({\n db,\n trx,\n uid,\n defaultBatchSize = 1000,\n}: {\n db: Database;\n trx: Knex;\n uid: string;\n defaultBatchSize?: number;\n}) {\n const client = db.config.connection.client;\n const isSQLite =\n typeof client === 'string' && ['sqlite', 'sqlite3', 'better-sqlite3'].includes(client);\n\n // The SQLite documentation states that the maximum number of terms in a\n // compound SELECT statement is 500 by default.\n // See: https://www.sqlite.org/limits.html\n // To ensure a successful migration, we limit the batch size to 500 for SQLite.\n const batchSize = isSQLite ? Math.min(defaultBatchSize, 500) : defaultBatchSize;\n let offset = 0;\n let hasMore = true;\n\n while (hasMore) {\n // Look for the published entries to discard\n const batch: DocumentVersion[] = await db\n .queryBuilder(uid)\n .select(['id', 'documentId', 'locale'])\n .where({ publishedAt: { $ne: null } })\n .limit(batchSize)\n .offset(offset)\n .orderBy('id')\n .transacting(trx)\n .execute();\n\n if (batch.length < batchSize) {\n hasMore = false;\n }\n\n offset += batchSize;\n yield batch;\n }\n}\n\n/**\n * 2 pass migration to create the draft entries for all the published entries.\n * And then discard the drafts to copy the relations.\n */\nconst migrateUp = async (trx: Knex, db: Database) => {\n const dpModels = [];\n for (const meta of db.metadata.values()) {\n const hasDP = await hasDraftAndPublish(trx, meta);\n if (hasDP) {\n dpModels.push(meta);\n }\n }\n\n /**\n * Create plain draft entries for all the entries that were published.\n */\n for (const model of dpModels) {\n await copyPublishedEntriesToDraft({ db, trx, uid: model.uid });\n }\n\n /**\n * Discard the drafts will copy the relations from the published entries to the newly created drafts.\n *\n * Load a batch of entries (batched to prevent loading millions of rows at once ),\n * and discard them using the document service.\n *\n * NOTE: This is using a custom document service without any validations,\n * to prevent the migration from failing if users already had invalid data in V4.\n * E.g. @see https://github.com/strapi/strapi/issues/21583\n */\n const documentService = createDocumentService(strapi, {\n async validateEntityCreation(_, data) {\n return data;\n },\n async validateEntityUpdate(_, data) {\n // Data can be partially empty on partial updates\n // This migration doesn't trigger any update (or partial update),\n // so it's safe to return the data as is.\n return data as any;\n },\n });\n\n for (const model of dpModels) {\n const discardDraft = async (entry: DocumentVersion) =>\n documentService(model.uid as UID.ContentType).discardDraft({\n documentId: entry.documentId,\n locale: entry.locale,\n });\n\n for await (const batch of getBatchToDiscard({ db, trx, uid: model.uid })) {\n // NOTE: concurrency had to be disabled to prevent a race condition with self-references\n // TODO: improve performance in a safe way\n await async.map(batch, discardDraft, { concurrency: 1 });\n }\n }\n};\n\nexport const discardDocumentDrafts: Migration = {\n name: 'core::5.0.0-discard-drafts',\n async up(trx, db) {\n await migrateUp(trx, db);\n },\n async down() {\n throw new Error('not implemented');\n },\n};\n"],"names":["hasDraftAndPublish","trx","meta","hasTable","schema","tableName","uid","model","strapi","getModel","hasDP","contentTypes","copyPublishedEntriesToDraft","db","metadata","get","scalarAttributes","Object","values","attributes","reduce","acc","attribute","includes","columnName","isScalarAttribute","push","into","raw","map","join","insert","subQb","select","att","from","whereNotNull","getBatchToDiscard","defaultBatchSize","client","config","connection","isSQLite","batchSize","Math","min","offset","hasMore","batch","queryBuilder","where","publishedAt","$ne","limit","orderBy","transacting","execute","length","migrateUp","dpModels","documentService","createDocumentService","validateEntityCreation","_","data","validateEntityUpdate","discardDraft","entry","documentId","locale","async","concurrency","discardDocumentDrafts","name","up","down","Error"],"mappings":";;;AAsBA;;IAGA,MAAMA,kBAAqB,GAAA,OAAOC,GAAWC,EAAAA,IAAAA,GAAAA;IAC3C,MAAMC,QAAAA,GAAW,MAAMF,GAAIG,CAAAA,MAAM,CAACD,QAAQ,CAACD,KAAKG,SAAS,CAAA;AAEzD,IAAA,IAAI,CAACF,QAAU,EAAA;QACb,OAAO,KAAA;AACT;IAEA,MAAMG,GAAAA,GAAMJ,KAAKI,GAAG;IACpB,MAAMC,KAAAA,GAAQC,MAAOC,CAAAA,QAAQ,CAACH,GAAAA,CAAAA;IAC9B,MAAMI,KAAAA,GAAQC,YAAaX,CAAAA,kBAAkB,CAACO,KAAAA,CAAAA;AAC9C,IAAA,IAAI,CAACG,KAAO,EAAA;QACV,OAAO,KAAA;AACT;IAEA,OAAO,IAAA;AACT,CAAA;AAEA;;;IAIA,eAAeE,4BAA4B,EACzCC,EAAE,EACFZ,GAAG,EACHK,GAAG,EAKJ,EAAA;;AAEC,IAAA,MAAMJ,IAAOW,GAAAA,EAAAA,CAAGC,QAAQ,CAACC,GAAG,CAACT,GAAAA,CAAAA;;IAG7B,MAAMU,gBAAAA,GAAmBC,MAAOC,CAAAA,MAAM,CAAChB,IAAAA,CAAKiB,UAAU,CAAEC,CAAAA,MAAM,CAAC,CAACC,GAAKC,EAAAA,SAAAA,GAAAA;QACnE,IAAI;AAAC,YAAA;AAAK,SAAA,CAACC,QAAQ,CAACD,SAAUE,CAAAA,UAAU,CAAG,EAAA;YACzC,OAAOH,GAAAA;AACT;QAEA,IAAIV,YAAAA,CAAac,iBAAiB,CAACH,SAAY,CAAA,EAAA;YAC7CD,GAAIK,CAAAA,IAAI,CAACJ,SAAAA,CAAUE,UAAU,CAAA;AAC/B;QAEA,OAAOH,GAAAA;AACT,KAAA,EAAG,EAAE,CAAA;AAEL;;;;;;MAOA,MAAMpB,GACJ;KACC0B,IAAI,CACH1B,IAAI2B,GAAG,CAAC,CAAC,IAAI,EAAEZ,iBAAiBa,GAAG,CAAC,IAAM,CAAC,EAAE,CAAC,CAAEC,CAAAA,IAAI,CAAC,IAAM,CAAA,CAAA,CAAC,CAAC,EAAE;AAC7D5B,QAAAA,IAAAA,CAAKG,SAAS;AACXW,QAAAA,GAAAA;KACJ,CAEFe,CAAAA,CAAAA,MAAM,CAAC,CAACC,KAAAA,GAAAA;;AAEPA,QAAAA,KAAAA,CACGC,MAAM,CAAA,GACFjB,gBAAiBa,CAAAA,GAAG,CAAC,CAACK,GAAAA,GAAAA;;AAEvB,YAAA,IAAIA,QAAQ,cAAgB,EAAA;gBAC1B,OAAOjC,GAAAA,CAAI2B,GAAG,CAAC,YAAc,EAAA,cAAA,CAAA;AAC/B;YAEA,OAAOM,GAAAA;AACT,SAAA,CAAA,CAAA,CAEDC,IAAI,CAACjC,IAAKG,CAAAA,SAAS,CACpB;AACC+B,SAAAA,YAAY,CAAC,cAAA,CAAA;AAClB,KAAA,CAAA;AACJ;AAEA;;;;;AAKC,IACM,gBAAgBC,iBAAkB,CAAA,EACvCxB,EAAE,EACFZ,GAAG,EACHK,GAAG,EACHgC,gBAAmB,GAAA,IAAI,EAMxB,EAAA;AACC,IAAA,MAAMC,SAAS1B,EAAG2B,CAAAA,MAAM,CAACC,UAAU,CAACF,MAAM;IAC1C,MAAMG,QAAAA,GACJ,OAAOH,MAAAA,KAAW,QAAY,IAAA;AAAC,QAAA,QAAA;AAAU,QAAA,SAAA;AAAW,QAAA;AAAiB,KAAA,CAAChB,QAAQ,CAACgB,MAAAA,CAAAA;;;;;AAMjF,IAAA,MAAMI,YAAYD,QAAWE,GAAAA,IAAAA,CAAKC,GAAG,CAACP,kBAAkB,GAAOA,CAAAA,GAAAA,gBAAAA;AAC/D,IAAA,IAAIQ,MAAS,GAAA,CAAA;AACb,IAAA,IAAIC,OAAU,GAAA,IAAA;AAEd,IAAA,MAAOA,OAAS,CAAA;;AAEd,QAAA,MAAMC,QAA2B,MAAMnC,EAAAA,CACpCoC,YAAY,CAAC3C,GAAAA,CAAAA,CACb2B,MAAM,CAAC;AAAC,YAAA,IAAA;AAAM,YAAA,YAAA;AAAc,YAAA;AAAS,SAAA,CAAA,CACrCiB,KAAK,CAAC;YAAEC,WAAa,EAAA;gBAAEC,GAAK,EAAA;AAAK;AAAE,SAAA,CAAA,CACnCC,KAAK,CAACV,SACNG,CAAAA,CAAAA,MAAM,CAACA,MAAAA,CAAAA,CACPQ,OAAO,CAAC,IACRC,CAAAA,CAAAA,WAAW,CAACtD,GAAAA,CAAAA,CACZuD,OAAO,EAAA;QAEV,IAAIR,KAAAA,CAAMS,MAAM,GAAGd,SAAW,EAAA;YAC5BI,OAAU,GAAA,KAAA;AACZ;QAEAD,MAAUH,IAAAA,SAAAA;QACV,MAAMK,KAAAA;AACR;AACF;AAEA;;;IAIA,MAAMU,SAAY,GAAA,OAAOzD,GAAWY,EAAAA,EAAAA,GAAAA;AAClC,IAAA,MAAM8C,WAAW,EAAE;AACnB,IAAA,KAAK,MAAMzD,IAAQW,IAAAA,EAAAA,CAAGC,QAAQ,CAACI,MAAM,EAAI,CAAA;QACvC,MAAMR,KAAAA,GAAQ,MAAMV,kBAAAA,CAAmBC,GAAKC,EAAAA,IAAAA,CAAAA;AAC5C,QAAA,IAAIQ,KAAO,EAAA;AACTiD,YAAAA,QAAAA,CAASjC,IAAI,CAACxB,IAAAA,CAAAA;AAChB;AACF;AAEA;;MAGA,KAAK,MAAMK,KAAAA,IAASoD,QAAU,CAAA;AAC5B,QAAA,MAAM/C,2BAA4B,CAAA;AAAEC,YAAAA,EAAAA;AAAIZ,YAAAA,GAAAA;AAAKK,YAAAA,GAAAA,EAAKC,MAAMD;AAAI,SAAA,CAAA;AAC9D;AAEA;;;;;;;;;MAUA,MAAMsD,eAAkBC,GAAAA,qBAAAA,CAAsBrD,MAAQ,EAAA;QACpD,MAAMsD,sBAAAA,CAAAA,CAAuBC,CAAC,EAAEC,IAAI,EAAA;YAClC,OAAOA,IAAAA;AACT,SAAA;QACA,MAAMC,oBAAAA,CAAAA,CAAqBF,CAAC,EAAEC,IAAI,EAAA;;;;YAIhC,OAAOA,IAAAA;AACT;AACF,KAAA,CAAA;IAEA,KAAK,MAAMzD,SAASoD,QAAU,CAAA;QAC5B,MAAMO,YAAAA,GAAe,OAAOC,KAC1BP,GAAAA,eAAAA,CAAgBrD,MAAMD,GAAG,CAAA,CAAqB4D,YAAY,CAAC;AACzDE,gBAAAA,UAAAA,EAAYD,MAAMC,UAAU;AAC5BC,gBAAAA,MAAAA,EAAQF,MAAME;AAChB,aAAA,CAAA;QAEF,WAAW,MAAMrB,SAASX,iBAAkB,CAAA;AAAExB,YAAAA,EAAAA;AAAIZ,YAAAA,GAAAA;AAAKK,YAAAA,GAAAA,EAAKC,MAAMD;SAAQ,CAAA,CAAA;;;AAGxE,YAAA,MAAMgE,KAAMzC,CAAAA,GAAG,CAACmB,KAAAA,EAAOkB,YAAc,EAAA;gBAAEK,WAAa,EAAA;AAAE,aAAA,CAAA;AACxD;AACF;AACF,CAAA;MAEaC,qBAAmC,GAAA;IAC9CC,IAAM,EAAA,4BAAA;IACN,MAAMC,EAAAA,CAAAA,CAAGzE,GAAG,EAAEY,EAAE,EAAA;AACd,QAAA,MAAM6C,UAAUzD,GAAKY,EAAAA,EAAAA,CAAAA;AACvB,KAAA;IACA,MAAM8D,IAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAM,IAAIC,KAAM,CAAA,iBAAA,CAAA;AAClB;AACF;;;;"}
@@ -1,5 +1,5 @@
1
- import { Schema } from '@strapi/types';
2
- interface Input {
1
+ import type { Schema } from '@strapi/types';
2
+ export interface Input {
3
3
  oldContentTypes: Record<string, Schema.ContentType>;
4
4
  contentTypes: Record<string, Schema.ContentType>;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"draft-publish.d.ts","sourceRoot":"","sources":["../../src/migrations/draft-publish.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAIvC,UAAU,KAAK;IACb,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACpD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;CAClD;AAED;;;;;;;GAOG;AACH,QAAA,MAAM,qBAAqB,sCAA6C,KAAK,kBAoC5E,CAAC;AAEF,QAAA,MAAM,sBAAsB,sCAA6C,KAAK,kBAqB7E,CAAC;AAEF,OAAO,EAAE,qBAAqB,IAAI,MAAM,EAAE,sBAAsB,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"draft-publish.d.ts","sourceRoot":"","sources":["../../src/migrations/draft-publish.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAI5C,MAAM,WAAW,KAAK;IACpB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACpD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;CAClD;AAED;;;;;;;GAOG;AACH,QAAA,MAAM,qBAAqB,sCAA6C,KAAK,kBAoC5E,CAAC;AAEF,QAAA,MAAM,sBAAsB,sCAA6C,KAAK,kBAqB7E,CAAC;AAEF,OAAO,EAAE,qBAAqB,IAAI,MAAM,EAAE,sBAAsB,IAAI,OAAO,EAAE,CAAC"}
@@ -1,42 +1,69 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const strapiUtils = require("@strapi/utils");
4
- const _5_0_0DiscardDrafts = require("./database/5.0.0-discard-drafts.js");
5
- const enableDraftAndPublish = async ({ oldContentTypes, contentTypes }) => {
6
- if (!oldContentTypes) {
7
- return;
8
- }
9
- return strapi.db.transaction(async (trx) => {
10
- for (const uid in contentTypes) {
11
- if (!oldContentTypes[uid]) {
12
- continue;
13
- }
14
- const oldContentType = oldContentTypes[uid];
15
- const contentType = contentTypes[uid];
16
- if (!strapiUtils.contentTypes.hasDraftAndPublish(oldContentType) && strapiUtils.contentTypes.hasDraftAndPublish(contentType)) {
17
- const discardDraft = async (entry) => strapi.documents(uid).discardDraft({ documentId: entry.documentId, locale: entry.locale });
18
- for await (const batch of _5_0_0DiscardDrafts.getBatchToDiscard({ db: strapi.db, trx, uid })) {
19
- await strapiUtils.async.map(batch, discardDraft, { concurrency: 10 });
20
- }
21
- }
1
+ 'use strict';
2
+
3
+ var strapiUtils = require('@strapi/utils');
4
+ var _5_0_0DiscardDrafts = require('./database/5.0.0-discard-drafts.js');
5
+
6
+ /**
7
+ * Enable draft and publish for content types.
8
+ *
9
+ * Draft and publish disabled content types will have their entries published,
10
+ * this migration clones those entries as drafts.
11
+ *
12
+ * TODO: Clone components, dynamic zones and relations
13
+ */ const enableDraftAndPublish = async ({ oldContentTypes, contentTypes })=>{
14
+ if (!oldContentTypes) {
15
+ return;
22
16
  }
23
- });
17
+ // run the after content types migrations
18
+ return strapi.db.transaction(async (trx)=>{
19
+ for(const uid in contentTypes){
20
+ if (!oldContentTypes[uid]) {
21
+ continue;
22
+ }
23
+ const oldContentType = oldContentTypes[uid];
24
+ const contentType = contentTypes[uid];
25
+ // if d&p was enabled set publishedAt to eq createdAt
26
+ if (!strapiUtils.contentTypes.hasDraftAndPublish(oldContentType) && strapiUtils.contentTypes.hasDraftAndPublish(contentType)) {
27
+ const discardDraft = async (entry)=>strapi.documents(uid)// Discard draft by referencing the documentId and locale
28
+ .discardDraft({
29
+ documentId: entry.documentId,
30
+ locale: entry.locale
31
+ });
32
+ /**
33
+ * Load a batch of entries (batched to prevent loading millions of rows at once ),
34
+ * and discard them using the document service.
35
+ */ for await (const batch of _5_0_0DiscardDrafts.getBatchToDiscard({
36
+ db: strapi.db,
37
+ trx,
38
+ uid
39
+ })){
40
+ await strapiUtils.async.map(batch, discardDraft, {
41
+ concurrency: 10
42
+ });
43
+ }
44
+ }
45
+ }
46
+ });
24
47
  };
25
- const disableDraftAndPublish = async ({ oldContentTypes, contentTypes }) => {
26
- if (!oldContentTypes) {
27
- return;
28
- }
29
- for (const uid in contentTypes) {
30
- if (!oldContentTypes[uid]) {
31
- continue;
48
+ const disableDraftAndPublish = async ({ oldContentTypes, contentTypes })=>{
49
+ if (!oldContentTypes) {
50
+ return;
32
51
  }
33
- const oldContentType = oldContentTypes[uid];
34
- const contentType = contentTypes[uid];
35
- if (strapiUtils.contentTypes.hasDraftAndPublish(oldContentType) && !strapiUtils.contentTypes.hasDraftAndPublish(contentType)) {
36
- await strapi.db?.queryBuilder(uid).delete().where({ published_at: null }).execute();
52
+ for(const uid in contentTypes){
53
+ if (!oldContentTypes[uid]) {
54
+ continue;
55
+ }
56
+ const oldContentType = oldContentTypes[uid];
57
+ const contentType = contentTypes[uid];
58
+ // if d&p was disabled remove unpublish content before sync
59
+ if (strapiUtils.contentTypes.hasDraftAndPublish(oldContentType) && !strapiUtils.contentTypes.hasDraftAndPublish(contentType)) {
60
+ await strapi.db?.queryBuilder(uid).delete().where({
61
+ published_at: null
62
+ }).execute();
63
+ }
37
64
  }
38
- }
39
65
  };
66
+
40
67
  exports.disable = disableDraftAndPublish;
41
68
  exports.enable = enableDraftAndPublish;
42
69
  //# sourceMappingURL=draft-publish.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"draft-publish.js","sources":["../../src/migrations/draft-publish.ts"],"sourcesContent":["import { contentTypes as contentTypesUtils, async } from '@strapi/utils';\nimport { Schema } from '@strapi/types';\n\nimport { getBatchToDiscard } from './database/5.0.0-discard-drafts';\n\ninterface Input {\n oldContentTypes: Record<string, Schema.ContentType>;\n contentTypes: Record<string, Schema.ContentType>;\n}\n\n/**\n * Enable draft and publish for content types.\n *\n * Draft and publish disabled content types will have their entries published,\n * this migration clones those entries as drafts.\n *\n * TODO: Clone components, dynamic zones and relations\n */\nconst enableDraftAndPublish = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n\n // run the after content types migrations\n return strapi.db.transaction(async (trx) => {\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if d&p was enabled set publishedAt to eq createdAt\n if (\n !contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n const discardDraft = async (entry: { documentId: string; locale: string }) =>\n strapi\n .documents(uid as any)\n // Discard draft by referencing the documentId and locale\n .discardDraft({ documentId: entry.documentId, locale: entry.locale });\n\n /**\n * Load a batch of entries (batched to prevent loading millions of rows at once ),\n * and discard them using the document service.\n */\n for await (const batch of getBatchToDiscard({ db: strapi.db, trx, uid })) {\n await async.map(batch, discardDraft, { concurrency: 10 });\n }\n }\n }\n });\n};\n\nconst disableDraftAndPublish = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if d&p was disabled remove unpublish content before sync\n if (\n contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n !contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n await strapi.db?.queryBuilder(uid).delete().where({ published_at: null }).execute();\n }\n }\n};\n\nexport { enableDraftAndPublish as enable, disableDraftAndPublish as disable };\n"],"names":["contentTypesUtils","getBatchToDiscard","async"],"mappings":";;;;AAkBA,MAAM,wBAAwB,OAAO,EAAE,iBAAiB,mBAA0B;AAChF,MAAI,CAAC,iBAAiB;AACpB;AAAA,EACF;AAGA,SAAO,OAAO,GAAG,YAAY,OAAO,QAAQ;AAC1C,eAAW,OAAO,cAAc;AAC1B,UAAA,CAAC,gBAAgB,GAAG,GAAG;AACzB;AAAA,MACF;AAEM,YAAA,iBAAiB,gBAAgB,GAAG;AACpC,YAAA,cAAc,aAAa,GAAG;AAIlC,UAAA,CAACA,yBAAkB,mBAAmB,cAAc,KACpDA,yBAAkB,mBAAmB,WAAW,GAChD;AACA,cAAM,eAAe,OAAO,UAC1B,OACG,UAAU,GAAU,EAEpB,aAAa,EAAE,YAAY,MAAM,YAAY,QAAQ,MAAM,QAAQ;AAMvD,yBAAA,SAASC,sCAAkB,EAAE,IAAI,OAAO,IAAI,KAAK,IAAI,CAAC,GAAG;AACxE,gBAAMC,YAAAA,MAAM,IAAI,OAAO,cAAc,EAAE,aAAa,IAAI;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,EAAA,CACD;AACH;AAEA,MAAM,yBAAyB,OAAO,EAAE,iBAAiB,mBAA0B;AACjF,MAAI,CAAC,iBAAiB;AACpB;AAAA,EACF;AAEA,aAAW,OAAO,cAAc;AAC1B,QAAA,CAAC,gBAAgB,GAAG,GAAG;AACzB;AAAA,IACF;AAEM,UAAA,iBAAiB,gBAAgB,GAAG;AACpC,UAAA,cAAc,aAAa,GAAG;AAIlC,QAAAF,YAAAA,aAAkB,mBAAmB,cAAc,KACnD,CAACA,yBAAkB,mBAAmB,WAAW,GACjD;AACA,YAAM,OAAO,IAAI,aAAa,GAAG,EAAE,OAAA,EAAS,MAAM,EAAE,cAAc,MAAM,EAAE,QAAQ;AAAA,IACpF;AAAA,EACF;AACF;;;"}
1
+ {"version":3,"file":"draft-publish.js","sources":["../../src/migrations/draft-publish.ts"],"sourcesContent":["import { contentTypes as contentTypesUtils, async } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\n\nimport { getBatchToDiscard } from './database/5.0.0-discard-drafts';\n\nexport interface Input {\n oldContentTypes: Record<string, Schema.ContentType>;\n contentTypes: Record<string, Schema.ContentType>;\n}\n\n/**\n * Enable draft and publish for content types.\n *\n * Draft and publish disabled content types will have their entries published,\n * this migration clones those entries as drafts.\n *\n * TODO: Clone components, dynamic zones and relations\n */\nconst enableDraftAndPublish = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n\n // run the after content types migrations\n return strapi.db.transaction(async (trx) => {\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if d&p was enabled set publishedAt to eq createdAt\n if (\n !contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n const discardDraft = async (entry: { documentId: string; locale: string }) =>\n strapi\n .documents(uid as any)\n // Discard draft by referencing the documentId and locale\n .discardDraft({ documentId: entry.documentId, locale: entry.locale });\n\n /**\n * Load a batch of entries (batched to prevent loading millions of rows at once ),\n * and discard them using the document service.\n */\n for await (const batch of getBatchToDiscard({ db: strapi.db, trx, uid })) {\n await async.map(batch, discardDraft, { concurrency: 10 });\n }\n }\n }\n });\n};\n\nconst disableDraftAndPublish = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if d&p was disabled remove unpublish content before sync\n if (\n contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n !contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n await strapi.db?.queryBuilder(uid).delete().where({ published_at: null }).execute();\n }\n }\n};\n\nexport { enableDraftAndPublish as enable, disableDraftAndPublish as disable };\n"],"names":["enableDraftAndPublish","oldContentTypes","contentTypes","strapi","db","transaction","trx","uid","oldContentType","contentType","contentTypesUtils","hasDraftAndPublish","discardDraft","entry","documents","documentId","locale","batch","getBatchToDiscard","async","map","concurrency","disableDraftAndPublish","queryBuilder","delete","where","published_at","execute"],"mappings":";;;;;AAUA;;;;;;;AAOC,UACKA,qBAAwB,GAAA,OAAO,EAAEC,eAAe,EAAEC,YAAY,EAAS,GAAA;AAC3E,IAAA,IAAI,CAACD,eAAiB,EAAA;AACpB,QAAA;AACF;;AAGA,IAAA,OAAOE,MAAOC,CAAAA,EAAE,CAACC,WAAW,CAAC,OAAOC,GAAAA,GAAAA;QAClC,IAAK,MAAMC,OAAOL,YAAc,CAAA;AAC9B,YAAA,IAAI,CAACD,eAAe,CAACM,GAAAA,CAAI,EAAE;AACzB,gBAAA;AACF;YAEA,MAAMC,cAAAA,GAAiBP,eAAe,CAACM,GAAI,CAAA;YAC3C,MAAME,WAAAA,GAAcP,YAAY,CAACK,GAAI,CAAA;;YAGrC,IACE,CAACG,yBAAkBC,kBAAkB,CAACH,mBACtCE,wBAAkBC,CAAAA,kBAAkB,CAACF,WACrC,CAAA,EAAA;AACA,gBAAA,MAAMG,eAAe,OAAOC,KAAAA,GAC1BV,OACGW,SAAS,CAACP,IACX;AACCK,qBAAAA,YAAY,CAAC;AAAEG,wBAAAA,UAAAA,EAAYF,MAAME,UAAU;AAAEC,wBAAAA,MAAAA,EAAQH,MAAMG;AAAO,qBAAA,CAAA;AAEvE;;;YAIA,WAAW,MAAMC,KAAAA,IAASC,qCAAkB,CAAA;AAAEd,oBAAAA,EAAAA,EAAID,OAAOC,EAAE;AAAEE,oBAAAA,GAAAA;AAAKC,oBAAAA;iBAAQ,CAAA,CAAA;AACxE,oBAAA,MAAMY,iBAAMC,CAAAA,GAAG,CAACH,KAAAA,EAAOL,YAAc,EAAA;wBAAES,WAAa,EAAA;AAAG,qBAAA,CAAA;AACzD;AACF;AACF;AACF,KAAA,CAAA;AACF;AAEA,MAAMC,yBAAyB,OAAO,EAAErB,eAAe,EAAEC,YAAY,EAAS,GAAA;AAC5E,IAAA,IAAI,CAACD,eAAiB,EAAA;AACpB,QAAA;AACF;IAEA,IAAK,MAAMM,OAAOL,YAAc,CAAA;AAC9B,QAAA,IAAI,CAACD,eAAe,CAACM,GAAAA,CAAI,EAAE;AACzB,YAAA;AACF;QAEA,MAAMC,cAAAA,GAAiBP,eAAe,CAACM,GAAI,CAAA;QAC3C,MAAME,WAAAA,GAAcP,YAAY,CAACK,GAAI,CAAA;;QAGrC,IACEG,wBAAAA,CAAkBC,kBAAkB,CAACH,cAAAA,CAAAA,IACrC,CAACE,wBAAkBC,CAAAA,kBAAkB,CAACF,WACtC,CAAA,EAAA;AACA,YAAA,MAAMN,OAAOC,EAAE,EAAEmB,YAAahB,CAAAA,GAAAA,CAAAA,CAAKiB,SAASC,KAAM,CAAA;gBAAEC,YAAc,EAAA;aAAQC,CAAAA,CAAAA,OAAAA,EAAAA;AAC5E;AACF;AACF;;;;;"}
@@ -1,42 +1,66 @@
1
- import { contentTypes, async } from "@strapi/utils";
2
- import { getBatchToDiscard } from "./database/5.0.0-discard-drafts.mjs";
3
- const enableDraftAndPublish = async ({ oldContentTypes, contentTypes: contentTypes$1 }) => {
4
- if (!oldContentTypes) {
5
- return;
6
- }
7
- return strapi.db.transaction(async (trx) => {
8
- for (const uid in contentTypes$1) {
9
- if (!oldContentTypes[uid]) {
10
- continue;
11
- }
12
- const oldContentType = oldContentTypes[uid];
13
- const contentType = contentTypes$1[uid];
14
- if (!contentTypes.hasDraftAndPublish(oldContentType) && contentTypes.hasDraftAndPublish(contentType)) {
15
- const discardDraft = async (entry) => strapi.documents(uid).discardDraft({ documentId: entry.documentId, locale: entry.locale });
16
- for await (const batch of getBatchToDiscard({ db: strapi.db, trx, uid })) {
17
- await async.map(batch, discardDraft, { concurrency: 10 });
18
- }
19
- }
1
+ import { contentTypes, async } from '@strapi/utils';
2
+ import { getBatchToDiscard } from './database/5.0.0-discard-drafts.mjs';
3
+
4
+ /**
5
+ * Enable draft and publish for content types.
6
+ *
7
+ * Draft and publish disabled content types will have their entries published,
8
+ * this migration clones those entries as drafts.
9
+ *
10
+ * TODO: Clone components, dynamic zones and relations
11
+ */ const enableDraftAndPublish = async ({ oldContentTypes, contentTypes: contentTypes$1 })=>{
12
+ if (!oldContentTypes) {
13
+ return;
20
14
  }
21
- });
15
+ // run the after content types migrations
16
+ return strapi.db.transaction(async (trx)=>{
17
+ for(const uid in contentTypes$1){
18
+ if (!oldContentTypes[uid]) {
19
+ continue;
20
+ }
21
+ const oldContentType = oldContentTypes[uid];
22
+ const contentType = contentTypes$1[uid];
23
+ // if d&p was enabled set publishedAt to eq createdAt
24
+ if (!contentTypes.hasDraftAndPublish(oldContentType) && contentTypes.hasDraftAndPublish(contentType)) {
25
+ const discardDraft = async (entry)=>strapi.documents(uid)// Discard draft by referencing the documentId and locale
26
+ .discardDraft({
27
+ documentId: entry.documentId,
28
+ locale: entry.locale
29
+ });
30
+ /**
31
+ * Load a batch of entries (batched to prevent loading millions of rows at once ),
32
+ * and discard them using the document service.
33
+ */ for await (const batch of getBatchToDiscard({
34
+ db: strapi.db,
35
+ trx,
36
+ uid
37
+ })){
38
+ await async.map(batch, discardDraft, {
39
+ concurrency: 10
40
+ });
41
+ }
42
+ }
43
+ }
44
+ });
22
45
  };
23
- const disableDraftAndPublish = async ({ oldContentTypes, contentTypes: contentTypes$1 }) => {
24
- if (!oldContentTypes) {
25
- return;
26
- }
27
- for (const uid in contentTypes$1) {
28
- if (!oldContentTypes[uid]) {
29
- continue;
46
+ const disableDraftAndPublish = async ({ oldContentTypes, contentTypes: contentTypes$1 })=>{
47
+ if (!oldContentTypes) {
48
+ return;
30
49
  }
31
- const oldContentType = oldContentTypes[uid];
32
- const contentType = contentTypes$1[uid];
33
- if (contentTypes.hasDraftAndPublish(oldContentType) && !contentTypes.hasDraftAndPublish(contentType)) {
34
- await strapi.db?.queryBuilder(uid).delete().where({ published_at: null }).execute();
50
+ for(const uid in contentTypes$1){
51
+ if (!oldContentTypes[uid]) {
52
+ continue;
53
+ }
54
+ const oldContentType = oldContentTypes[uid];
55
+ const contentType = contentTypes$1[uid];
56
+ // if d&p was disabled remove unpublish content before sync
57
+ if (contentTypes.hasDraftAndPublish(oldContentType) && !contentTypes.hasDraftAndPublish(contentType)) {
58
+ await strapi.db?.queryBuilder(uid).delete().where({
59
+ published_at: null
60
+ }).execute();
61
+ }
35
62
  }
36
- }
37
- };
38
- export {
39
- disableDraftAndPublish as disable,
40
- enableDraftAndPublish as enable
41
63
  };
64
+
65
+ export { disableDraftAndPublish as disable, enableDraftAndPublish as enable };
42
66
  //# sourceMappingURL=draft-publish.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"draft-publish.mjs","sources":["../../src/migrations/draft-publish.ts"],"sourcesContent":["import { contentTypes as contentTypesUtils, async } from '@strapi/utils';\nimport { Schema } from '@strapi/types';\n\nimport { getBatchToDiscard } from './database/5.0.0-discard-drafts';\n\ninterface Input {\n oldContentTypes: Record<string, Schema.ContentType>;\n contentTypes: Record<string, Schema.ContentType>;\n}\n\n/**\n * Enable draft and publish for content types.\n *\n * Draft and publish disabled content types will have their entries published,\n * this migration clones those entries as drafts.\n *\n * TODO: Clone components, dynamic zones and relations\n */\nconst enableDraftAndPublish = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n\n // run the after content types migrations\n return strapi.db.transaction(async (trx) => {\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if d&p was enabled set publishedAt to eq createdAt\n if (\n !contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n const discardDraft = async (entry: { documentId: string; locale: string }) =>\n strapi\n .documents(uid as any)\n // Discard draft by referencing the documentId and locale\n .discardDraft({ documentId: entry.documentId, locale: entry.locale });\n\n /**\n * Load a batch of entries (batched to prevent loading millions of rows at once ),\n * and discard them using the document service.\n */\n for await (const batch of getBatchToDiscard({ db: strapi.db, trx, uid })) {\n await async.map(batch, discardDraft, { concurrency: 10 });\n }\n }\n }\n });\n};\n\nconst disableDraftAndPublish = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if d&p was disabled remove unpublish content before sync\n if (\n contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n !contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n await strapi.db?.queryBuilder(uid).delete().where({ published_at: null }).execute();\n }\n }\n};\n\nexport { enableDraftAndPublish as enable, disableDraftAndPublish as disable };\n"],"names":["contentTypes","contentTypesUtils"],"mappings":";;AAkBA,MAAM,wBAAwB,OAAO,EAAE,iBAAiBA,cAAAA,qBAA0B;AAChF,MAAI,CAAC,iBAAiB;AACpB;AAAA,EACF;AAGA,SAAO,OAAO,GAAG,YAAY,OAAO,QAAQ;AAC1C,eAAW,OAAOA,gBAAc;AAC1B,UAAA,CAAC,gBAAgB,GAAG,GAAG;AACzB;AAAA,MACF;AAEM,YAAA,iBAAiB,gBAAgB,GAAG;AACpC,YAAA,cAAcA,eAAa,GAAG;AAIlC,UAAA,CAACC,aAAkB,mBAAmB,cAAc,KACpDA,aAAkB,mBAAmB,WAAW,GAChD;AACA,cAAM,eAAe,OAAO,UAC1B,OACG,UAAU,GAAU,EAEpB,aAAa,EAAE,YAAY,MAAM,YAAY,QAAQ,MAAM,QAAQ;AAMvD,yBAAA,SAAS,kBAAkB,EAAE,IAAI,OAAO,IAAI,KAAK,IAAI,CAAC,GAAG;AACxE,gBAAM,MAAM,IAAI,OAAO,cAAc,EAAE,aAAa,IAAI;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,EAAA,CACD;AACH;AAEA,MAAM,yBAAyB,OAAO,EAAE,iBAAiBD,cAAAA,qBAA0B;AACjF,MAAI,CAAC,iBAAiB;AACpB;AAAA,EACF;AAEA,aAAW,OAAOA,gBAAc;AAC1B,QAAA,CAAC,gBAAgB,GAAG,GAAG;AACzB;AAAA,IACF;AAEM,UAAA,iBAAiB,gBAAgB,GAAG;AACpC,UAAA,cAAcA,eAAa,GAAG;AAIlC,QAAAC,aAAkB,mBAAmB,cAAc,KACnD,CAACA,aAAkB,mBAAmB,WAAW,GACjD;AACA,YAAM,OAAO,IAAI,aAAa,GAAG,EAAE,OAAA,EAAS,MAAM,EAAE,cAAc,MAAM,EAAE,QAAQ;AAAA,IACpF;AAAA,EACF;AACF;"}
1
+ {"version":3,"file":"draft-publish.mjs","sources":["../../src/migrations/draft-publish.ts"],"sourcesContent":["import { contentTypes as contentTypesUtils, async } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\n\nimport { getBatchToDiscard } from './database/5.0.0-discard-drafts';\n\nexport interface Input {\n oldContentTypes: Record<string, Schema.ContentType>;\n contentTypes: Record<string, Schema.ContentType>;\n}\n\n/**\n * Enable draft and publish for content types.\n *\n * Draft and publish disabled content types will have their entries published,\n * this migration clones those entries as drafts.\n *\n * TODO: Clone components, dynamic zones and relations\n */\nconst enableDraftAndPublish = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n\n // run the after content types migrations\n return strapi.db.transaction(async (trx) => {\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if d&p was enabled set publishedAt to eq createdAt\n if (\n !contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n const discardDraft = async (entry: { documentId: string; locale: string }) =>\n strapi\n .documents(uid as any)\n // Discard draft by referencing the documentId and locale\n .discardDraft({ documentId: entry.documentId, locale: entry.locale });\n\n /**\n * Load a batch of entries (batched to prevent loading millions of rows at once ),\n * and discard them using the document service.\n */\n for await (const batch of getBatchToDiscard({ db: strapi.db, trx, uid })) {\n await async.map(batch, discardDraft, { concurrency: 10 });\n }\n }\n }\n });\n};\n\nconst disableDraftAndPublish = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if d&p was disabled remove unpublish content before sync\n if (\n contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n !contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n await strapi.db?.queryBuilder(uid).delete().where({ published_at: null }).execute();\n }\n }\n};\n\nexport { enableDraftAndPublish as enable, disableDraftAndPublish as disable };\n"],"names":["enableDraftAndPublish","oldContentTypes","contentTypes","strapi","db","transaction","trx","uid","oldContentType","contentType","contentTypesUtils","hasDraftAndPublish","discardDraft","entry","documents","documentId","locale","batch","getBatchToDiscard","async","map","concurrency","disableDraftAndPublish","queryBuilder","delete","where","published_at","execute"],"mappings":";;;AAUA;;;;;;;AAOC,UACKA,qBAAwB,GAAA,OAAO,EAAEC,eAAe,gBAAEC,cAAY,EAAS,GAAA;AAC3E,IAAA,IAAI,CAACD,eAAiB,EAAA;AACpB,QAAA;AACF;;AAGA,IAAA,OAAOE,MAAOC,CAAAA,EAAE,CAACC,WAAW,CAAC,OAAOC,GAAAA,GAAAA;QAClC,IAAK,MAAMC,OAAOL,cAAc,CAAA;AAC9B,YAAA,IAAI,CAACD,eAAe,CAACM,GAAAA,CAAI,EAAE;AACzB,gBAAA;AACF;YAEA,MAAMC,cAAAA,GAAiBP,eAAe,CAACM,GAAI,CAAA;YAC3C,MAAME,WAAAA,GAAcP,cAAY,CAACK,GAAI,CAAA;;YAGrC,IACE,CAACG,aAAkBC,kBAAkB,CAACH,mBACtCE,YAAkBC,CAAAA,kBAAkB,CAACF,WACrC,CAAA,EAAA;AACA,gBAAA,MAAMG,eAAe,OAAOC,KAAAA,GAC1BV,OACGW,SAAS,CAACP,IACX;AACCK,qBAAAA,YAAY,CAAC;AAAEG,wBAAAA,UAAAA,EAAYF,MAAME,UAAU;AAAEC,wBAAAA,MAAAA,EAAQH,MAAMG;AAAO,qBAAA,CAAA;AAEvE;;;YAIA,WAAW,MAAMC,KAAAA,IAASC,iBAAkB,CAAA;AAAEd,oBAAAA,EAAAA,EAAID,OAAOC,EAAE;AAAEE,oBAAAA,GAAAA;AAAKC,oBAAAA;iBAAQ,CAAA,CAAA;AACxE,oBAAA,MAAMY,KAAMC,CAAAA,GAAG,CAACH,KAAAA,EAAOL,YAAc,EAAA;wBAAES,WAAa,EAAA;AAAG,qBAAA,CAAA;AACzD;AACF;AACF;AACF,KAAA,CAAA;AACF;AAEA,MAAMC,yBAAyB,OAAO,EAAErB,eAAe,gBAAEC,cAAY,EAAS,GAAA;AAC5E,IAAA,IAAI,CAACD,eAAiB,EAAA;AACpB,QAAA;AACF;IAEA,IAAK,MAAMM,OAAOL,cAAc,CAAA;AAC9B,QAAA,IAAI,CAACD,eAAe,CAACM,GAAAA,CAAI,EAAE;AACzB,YAAA;AACF;QAEA,MAAMC,cAAAA,GAAiBP,eAAe,CAACM,GAAI,CAAA;QAC3C,MAAME,WAAAA,GAAcP,cAAY,CAACK,GAAI,CAAA;;QAGrC,IACEG,YAAAA,CAAkBC,kBAAkB,CAACH,cAAAA,CAAAA,IACrC,CAACE,YAAkBC,CAAAA,kBAAkB,CAACF,WACtC,CAAA,EAAA;AACA,YAAA,MAAMN,OAAOC,EAAE,EAAEmB,YAAahB,CAAAA,GAAAA,CAAAA,CAAKiB,SAASC,KAAM,CAAA;gBAAEC,YAAc,EAAA;aAAQC,CAAAA,CAAAA,OAAAA,EAAAA;AAC5E;AACF;AACF;;;;"}
@@ -0,0 +1,4 @@
1
+ import { Input } from './draft-publish';
2
+ declare const enableFirstPublishedAt: ({ oldContentTypes, contentTypes }: Input) => Promise<void>;
3
+ export { enableFirstPublishedAt as enable };
4
+ //# sourceMappingURL=first-published-at.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"first-published-at.d.ts","sourceRoot":"","sources":["../../src/migrations/first-published-at.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAUxC,QAAA,MAAM,sBAAsB,sCAA6C,KAAK,kBA6D7E,CAAC;AAEF,OAAO,EAAE,sBAAsB,IAAI,MAAM,EAAE,CAAC"}
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+
3
+ var strapiUtils = require('@strapi/utils');
4
+ var _ = require('lodash');
5
+
6
+ const enableFirstPublishedAt = async ({ oldContentTypes, contentTypes })=>{
7
+ if (!oldContentTypes) {
8
+ return;
9
+ }
10
+ return strapi.db.transaction(async (trx)=>{
11
+ for(const uid in contentTypes){
12
+ if (!oldContentTypes[uid]) {
13
+ continue;
14
+ }
15
+ const contentType = contentTypes[uid];
16
+ if (!strapiUtils.contentTypes.hasFirstPublishedAtField(contentType)) {
17
+ continue;
18
+ }
19
+ if (!contentType.attributes?.firstPublishedAt) {
20
+ continue;
21
+ }
22
+ const content = await strapi.db.queryBuilder(uid).select('*').transacting(trx).execute();
23
+ // Process content types in pairs: draft and published.
24
+ // If only one exist, which means the value is not published yet and we can ignore it
25
+ const groupedContent = _.groupBy(content, (item)=>`${item.documentId}-${item.locale}`);
26
+ for (const items of Object.values(groupedContent)){
27
+ // If there is only one item, which means nothing is published yet for this locale
28
+ if (items.length <= 1) {
29
+ continue;
30
+ }
31
+ // If firstPublishedAt is already present, do not do anything
32
+ if (items[0].firstPublishedAt != null && items[1].firstPublishedAt != null) {
33
+ continue;
34
+ }
35
+ const publishedContent = items.filter((item)=>item.publishedAt != null).at(0);
36
+ if (!publishedContent) {
37
+ continue;
38
+ }
39
+ await strapi.db.queryBuilder(uid).update({
40
+ firstPublishedAt: new Date(publishedContent.publishedAt)
41
+ }).where({
42
+ documentId: publishedContent.documentId,
43
+ locale: publishedContent.locale
44
+ }).transacting(trx).execute();
45
+ }
46
+ }
47
+ });
48
+ };
49
+
50
+ exports.enable = enableFirstPublishedAt;
51
+ //# sourceMappingURL=first-published-at.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"first-published-at.js","sources":["../../src/migrations/first-published-at.ts"],"sourcesContent":["import { contentTypes as contentTypesUtils } from '@strapi/utils';\nimport _ from 'lodash';\nimport { Input } from './draft-publish';\n\ninterface ContentTypeData {\n id: number;\n documentId: string;\n publishedAt: Date;\n firstPublishedAt: Date;\n locale: string;\n}\n\nconst enableFirstPublishedAt = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n\n return strapi.db.transaction(async (trx) => {\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const contentType = contentTypes[uid];\n\n if (!contentTypesUtils.hasFirstPublishedAtField(contentType)) {\n continue;\n }\n\n if (!contentType.attributes?.firstPublishedAt) {\n continue;\n }\n\n const content: ContentTypeData[] = await strapi.db\n .queryBuilder(uid)\n .select('*')\n .transacting(trx)\n .execute();\n\n // Process content types in pairs: draft and published.\n // If only one exist, which means the value is not published yet and we can ignore it\n const groupedContent = _.groupBy(content, (item) => `${item.documentId}-${item.locale}`);\n\n for (const items of Object.values(groupedContent)) {\n // If there is only one item, which means nothing is published yet for this locale\n if (items.length <= 1) {\n continue;\n }\n\n // If firstPublishedAt is already present, do not do anything\n if (items[0].firstPublishedAt != null && items[1].firstPublishedAt != null) {\n continue;\n }\n\n const publishedContent = items.filter((item) => item.publishedAt != null).at(0);\n if (!publishedContent) {\n continue;\n }\n\n await strapi.db\n .queryBuilder(uid)\n .update({\n firstPublishedAt: new Date(publishedContent.publishedAt),\n })\n .where({\n documentId: publishedContent.documentId,\n locale: publishedContent.locale,\n })\n .transacting(trx)\n .execute();\n }\n }\n });\n};\n\nexport { enableFirstPublishedAt as enable };\n"],"names":["enableFirstPublishedAt","oldContentTypes","contentTypes","strapi","db","transaction","trx","uid","contentType","contentTypesUtils","hasFirstPublishedAtField","attributes","firstPublishedAt","content","queryBuilder","select","transacting","execute","groupedContent","_","groupBy","item","documentId","locale","items","Object","values","length","publishedContent","filter","publishedAt","at","update","Date","where"],"mappings":";;;;;AAYA,MAAMA,yBAAyB,OAAO,EAAEC,eAAe,EAAEC,YAAY,EAAS,GAAA;AAC5E,IAAA,IAAI,CAACD,eAAiB,EAAA;AACpB,QAAA;AACF;AAEA,IAAA,OAAOE,MAAOC,CAAAA,EAAE,CAACC,WAAW,CAAC,OAAOC,GAAAA,GAAAA;QAClC,IAAK,MAAMC,OAAOL,YAAc,CAAA;AAC9B,YAAA,IAAI,CAACD,eAAe,CAACM,GAAAA,CAAI,EAAE;AACzB,gBAAA;AACF;YAEA,MAAMC,WAAAA,GAAcN,YAAY,CAACK,GAAI,CAAA;AAErC,YAAA,IAAI,CAACE,wBAAAA,CAAkBC,wBAAwB,CAACF,WAAc,CAAA,EAAA;AAC5D,gBAAA;AACF;AAEA,YAAA,IAAI,CAACA,WAAAA,CAAYG,UAAU,EAAEC,gBAAkB,EAAA;AAC7C,gBAAA;AACF;AAEA,YAAA,MAAMC,OAA6B,GAAA,MAAMV,MAAOC,CAAAA,EAAE,CAC/CU,YAAY,CAACP,GACbQ,CAAAA,CAAAA,MAAM,CAAC,GAAA,CAAA,CACPC,WAAW,CAACV,KACZW,OAAO,EAAA;;;AAIV,YAAA,MAAMC,iBAAiBC,CAAEC,CAAAA,OAAO,CAACP,OAAAA,EAAS,CAACQ,IAAS,GAAA,CAAC,EAAEA,IAAAA,CAAKC,UAAU,CAAC,CAAC,EAAED,IAAKE,CAAAA,MAAM,CAAC,CAAC,CAAA;AAEvF,YAAA,KAAK,MAAMC,KAAAA,IAASC,MAAOC,CAAAA,MAAM,CAACR,cAAiB,CAAA,CAAA;;gBAEjD,IAAIM,KAAAA,CAAMG,MAAM,IAAI,CAAG,EAAA;AACrB,oBAAA;AACF;;AAGA,gBAAA,IAAIH,KAAK,CAAC,CAAE,CAAA,CAACZ,gBAAgB,IAAI,IAAQY,IAAAA,KAAK,CAAC,CAAA,CAAE,CAACZ,gBAAgB,IAAI,IAAM,EAAA;AAC1E,oBAAA;AACF;gBAEA,MAAMgB,gBAAAA,GAAmBJ,KAAMK,CAAAA,MAAM,CAAC,CAACR,IAASA,GAAAA,IAAAA,CAAKS,WAAW,IAAI,IAAMC,CAAAA,CAAAA,EAAE,CAAC,CAAA,CAAA;AAC7E,gBAAA,IAAI,CAACH,gBAAkB,EAAA;AACrB,oBAAA;AACF;AAEA,gBAAA,MAAMzB,OAAOC,EAAE,CACZU,YAAY,CAACP,GAAAA,CAAAA,CACbyB,MAAM,CAAC;oBACNpB,gBAAkB,EAAA,IAAIqB,IAAKL,CAAAA,gBAAAA,CAAiBE,WAAW;AACzD,iBAAA,CAAA,CACCI,KAAK,CAAC;AACLZ,oBAAAA,UAAAA,EAAYM,iBAAiBN,UAAU;AACvCC,oBAAAA,MAAAA,EAAQK,iBAAiBL;iBAE1BP,CAAAA,CAAAA,WAAW,CAACV,GAAAA,CAAAA,CACZW,OAAO,EAAA;AACZ;AACF;AACF,KAAA,CAAA;AACF;;;;"}
@@ -0,0 +1,49 @@
1
+ import { contentTypes } from '@strapi/utils';
2
+ import _ from 'lodash';
3
+
4
+ const enableFirstPublishedAt = async ({ oldContentTypes, contentTypes: contentTypes$1 })=>{
5
+ if (!oldContentTypes) {
6
+ return;
7
+ }
8
+ return strapi.db.transaction(async (trx)=>{
9
+ for(const uid in contentTypes$1){
10
+ if (!oldContentTypes[uid]) {
11
+ continue;
12
+ }
13
+ const contentType = contentTypes$1[uid];
14
+ if (!contentTypes.hasFirstPublishedAtField(contentType)) {
15
+ continue;
16
+ }
17
+ if (!contentType.attributes?.firstPublishedAt) {
18
+ continue;
19
+ }
20
+ const content = await strapi.db.queryBuilder(uid).select('*').transacting(trx).execute();
21
+ // Process content types in pairs: draft and published.
22
+ // If only one exist, which means the value is not published yet and we can ignore it
23
+ const groupedContent = _.groupBy(content, (item)=>`${item.documentId}-${item.locale}`);
24
+ for (const items of Object.values(groupedContent)){
25
+ // If there is only one item, which means nothing is published yet for this locale
26
+ if (items.length <= 1) {
27
+ continue;
28
+ }
29
+ // If firstPublishedAt is already present, do not do anything
30
+ if (items[0].firstPublishedAt != null && items[1].firstPublishedAt != null) {
31
+ continue;
32
+ }
33
+ const publishedContent = items.filter((item)=>item.publishedAt != null).at(0);
34
+ if (!publishedContent) {
35
+ continue;
36
+ }
37
+ await strapi.db.queryBuilder(uid).update({
38
+ firstPublishedAt: new Date(publishedContent.publishedAt)
39
+ }).where({
40
+ documentId: publishedContent.documentId,
41
+ locale: publishedContent.locale
42
+ }).transacting(trx).execute();
43
+ }
44
+ }
45
+ });
46
+ };
47
+
48
+ export { enableFirstPublishedAt as enable };
49
+ //# sourceMappingURL=first-published-at.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"first-published-at.mjs","sources":["../../src/migrations/first-published-at.ts"],"sourcesContent":["import { contentTypes as contentTypesUtils } from '@strapi/utils';\nimport _ from 'lodash';\nimport { Input } from './draft-publish';\n\ninterface ContentTypeData {\n id: number;\n documentId: string;\n publishedAt: Date;\n firstPublishedAt: Date;\n locale: string;\n}\n\nconst enableFirstPublishedAt = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n\n return strapi.db.transaction(async (trx) => {\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const contentType = contentTypes[uid];\n\n if (!contentTypesUtils.hasFirstPublishedAtField(contentType)) {\n continue;\n }\n\n if (!contentType.attributes?.firstPublishedAt) {\n continue;\n }\n\n const content: ContentTypeData[] = await strapi.db\n .queryBuilder(uid)\n .select('*')\n .transacting(trx)\n .execute();\n\n // Process content types in pairs: draft and published.\n // If only one exist, which means the value is not published yet and we can ignore it\n const groupedContent = _.groupBy(content, (item) => `${item.documentId}-${item.locale}`);\n\n for (const items of Object.values(groupedContent)) {\n // If there is only one item, which means nothing is published yet for this locale\n if (items.length <= 1) {\n continue;\n }\n\n // If firstPublishedAt is already present, do not do anything\n if (items[0].firstPublishedAt != null && items[1].firstPublishedAt != null) {\n continue;\n }\n\n const publishedContent = items.filter((item) => item.publishedAt != null).at(0);\n if (!publishedContent) {\n continue;\n }\n\n await strapi.db\n .queryBuilder(uid)\n .update({\n firstPublishedAt: new Date(publishedContent.publishedAt),\n })\n .where({\n documentId: publishedContent.documentId,\n locale: publishedContent.locale,\n })\n .transacting(trx)\n .execute();\n }\n }\n });\n};\n\nexport { enableFirstPublishedAt as enable };\n"],"names":["enableFirstPublishedAt","oldContentTypes","contentTypes","strapi","db","transaction","trx","uid","contentType","contentTypesUtils","hasFirstPublishedAtField","attributes","firstPublishedAt","content","queryBuilder","select","transacting","execute","groupedContent","_","groupBy","item","documentId","locale","items","Object","values","length","publishedContent","filter","publishedAt","at","update","Date","where"],"mappings":";;;AAYA,MAAMA,yBAAyB,OAAO,EAAEC,eAAe,gBAAEC,cAAY,EAAS,GAAA;AAC5E,IAAA,IAAI,CAACD,eAAiB,EAAA;AACpB,QAAA;AACF;AAEA,IAAA,OAAOE,MAAOC,CAAAA,EAAE,CAACC,WAAW,CAAC,OAAOC,GAAAA,GAAAA;QAClC,IAAK,MAAMC,OAAOL,cAAc,CAAA;AAC9B,YAAA,IAAI,CAACD,eAAe,CAACM,GAAAA,CAAI,EAAE;AACzB,gBAAA;AACF;YAEA,MAAMC,WAAAA,GAAcN,cAAY,CAACK,GAAI,CAAA;AAErC,YAAA,IAAI,CAACE,YAAAA,CAAkBC,wBAAwB,CAACF,WAAc,CAAA,EAAA;AAC5D,gBAAA;AACF;AAEA,YAAA,IAAI,CAACA,WAAAA,CAAYG,UAAU,EAAEC,gBAAkB,EAAA;AAC7C,gBAAA;AACF;AAEA,YAAA,MAAMC,OAA6B,GAAA,MAAMV,MAAOC,CAAAA,EAAE,CAC/CU,YAAY,CAACP,GACbQ,CAAAA,CAAAA,MAAM,CAAC,GAAA,CAAA,CACPC,WAAW,CAACV,KACZW,OAAO,EAAA;;;AAIV,YAAA,MAAMC,iBAAiBC,CAAEC,CAAAA,OAAO,CAACP,OAAAA,EAAS,CAACQ,IAAS,GAAA,CAAC,EAAEA,IAAAA,CAAKC,UAAU,CAAC,CAAC,EAAED,IAAKE,CAAAA,MAAM,CAAC,CAAC,CAAA;AAEvF,YAAA,KAAK,MAAMC,KAAAA,IAASC,MAAOC,CAAAA,MAAM,CAACR,cAAiB,CAAA,CAAA;;gBAEjD,IAAIM,KAAAA,CAAMG,MAAM,IAAI,CAAG,EAAA;AACrB,oBAAA;AACF;;AAGA,gBAAA,IAAIH,KAAK,CAAC,CAAE,CAAA,CAACZ,gBAAgB,IAAI,IAAQY,IAAAA,KAAK,CAAC,CAAA,CAAE,CAACZ,gBAAgB,IAAI,IAAM,EAAA;AAC1E,oBAAA;AACF;gBAEA,MAAMgB,gBAAAA,GAAmBJ,KAAMK,CAAAA,MAAM,CAAC,CAACR,IAASA,GAAAA,IAAAA,CAAKS,WAAW,IAAI,IAAMC,CAAAA,CAAAA,EAAE,CAAC,CAAA,CAAA;AAC7E,gBAAA,IAAI,CAACH,gBAAkB,EAAA;AACrB,oBAAA;AACF;AAEA,gBAAA,MAAMzB,OAAOC,EAAE,CACZU,YAAY,CAACP,GAAAA,CAAAA,CACbyB,MAAM,CAAC;oBACNpB,gBAAkB,EAAA,IAAIqB,IAAKL,CAAAA,gBAAAA,CAAiBE,WAAW;AACzD,iBAAA,CAAA,CACCI,KAAK,CAAC;AACLZ,oBAAAA,UAAAA,EAAYM,iBAAiBN,UAAU;AACvCC,oBAAAA,MAAAA,EAAQK,iBAAiBL;iBAE1BP,CAAAA,CAAAA,WAAW,CAACV,GAAAA,CAAAA,CACZW,OAAO,EAAA;AACZ;AACF;AACF,KAAA,CAAA;AACF;;;;"}
@@ -0,0 +1,5 @@
1
+ import { Input } from './draft-publish';
2
+ declare const enableI18n: ({ oldContentTypes, contentTypes }: Input) => Promise<void>;
3
+ declare const disableI18n: ({ oldContentTypes, contentTypes }: Input) => Promise<void>;
4
+ export { enableI18n as enable, disableI18n as disable };
5
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/migrations/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,QAAA,MAAM,UAAU,sCAA6C,KAAK,kBAyBjE,CAAC;AAEF,QAAA,MAAM,WAAW,sCAA6C,KAAK,kBAiClE,CAAC;AAEF,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,WAAW,IAAI,OAAO,EAAE,CAAC"}
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ // if i18N enabled set default locale
4
+ const enableI18n = async ({ oldContentTypes, contentTypes })=>{
5
+ const { isLocalizedContentType } = strapi.plugin('i18n')?.service('content-types') ?? {};
6
+ const { getDefaultLocale } = strapi.plugin('i18n')?.service('locales') ?? {};
7
+ if (!oldContentTypes) {
8
+ return;
9
+ }
10
+ for(const uid in contentTypes){
11
+ if (!oldContentTypes[uid]) {
12
+ continue;
13
+ }
14
+ const oldContentType = oldContentTypes[uid];
15
+ const contentType = contentTypes[uid];
16
+ if (!isLocalizedContentType(oldContentType) && isLocalizedContentType(contentType)) {
17
+ const defaultLocale = await getDefaultLocale();
18
+ await strapi.db.query(uid).updateMany({
19
+ where: {
20
+ locale: null
21
+ },
22
+ data: {
23
+ locale: defaultLocale
24
+ }
25
+ });
26
+ }
27
+ }
28
+ };
29
+ const disableI18n = async ({ oldContentTypes, contentTypes })=>{
30
+ const { isLocalizedContentType } = strapi.plugin('i18n')?.service('content-types') ?? {};
31
+ const { getDefaultLocale } = strapi.plugin('i18n')?.service('locales') ?? {};
32
+ if (!oldContentTypes) {
33
+ return;
34
+ }
35
+ for(const uid in contentTypes){
36
+ if (!oldContentTypes[uid]) {
37
+ continue;
38
+ }
39
+ const oldContentType = oldContentTypes[uid];
40
+ const contentType = contentTypes[uid];
41
+ // if i18N is disabled remove non default locales before sync
42
+ if (isLocalizedContentType(oldContentType) && !isLocalizedContentType(contentType)) {
43
+ const defaultLocale = await getDefaultLocale();
44
+ await Promise.all([
45
+ // Delete all entities that are not in the default locale
46
+ strapi.db.query(uid).deleteMany({
47
+ where: {
48
+ locale: {
49
+ $ne: defaultLocale
50
+ }
51
+ }
52
+ }),
53
+ // Set locale to null for the rest
54
+ strapi.db.query(uid).updateMany({
55
+ where: {
56
+ locale: {
57
+ $eq: defaultLocale
58
+ }
59
+ },
60
+ data: {
61
+ locale: null
62
+ }
63
+ })
64
+ ]);
65
+ }
66
+ }
67
+ };
68
+
69
+ exports.disable = disableI18n;
70
+ exports.enable = enableI18n;
71
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sources":["../../src/migrations/i18n.ts"],"sourcesContent":["import { Input } from './draft-publish';\n\n// if i18N enabled set default locale\nconst enableI18n = async ({ oldContentTypes, contentTypes }: Input) => {\n const { isLocalizedContentType } = strapi.plugin('i18n')?.service('content-types') ?? {};\n const { getDefaultLocale } = strapi.plugin('i18n')?.service('locales') ?? {};\n\n if (!oldContentTypes) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n if (!isLocalizedContentType(oldContentType) && isLocalizedContentType(contentType)) {\n const defaultLocale = await getDefaultLocale();\n\n await strapi.db.query(uid).updateMany({\n where: { locale: null },\n data: { locale: defaultLocale },\n });\n }\n }\n};\n\nconst disableI18n = async ({ oldContentTypes, contentTypes }: Input) => {\n const { isLocalizedContentType } = strapi.plugin('i18n')?.service('content-types') ?? {};\n const { getDefaultLocale } = strapi.plugin('i18n')?.service('locales') ?? {};\n\n if (!oldContentTypes) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if i18N is disabled remove non default locales before sync\n if (isLocalizedContentType(oldContentType) && !isLocalizedContentType(contentType)) {\n const defaultLocale = await getDefaultLocale();\n\n await Promise.all([\n // Delete all entities that are not in the default locale\n strapi.db.query(uid).deleteMany({\n where: { locale: { $ne: defaultLocale } },\n }),\n // Set locale to null for the rest\n strapi.db.query(uid).updateMany({\n where: { locale: { $eq: defaultLocale } },\n data: { locale: null },\n }),\n ]);\n }\n }\n};\n\nexport { enableI18n as enable, disableI18n as disable };\n"],"names":["enableI18n","oldContentTypes","contentTypes","isLocalizedContentType","strapi","plugin","service","getDefaultLocale","uid","oldContentType","contentType","defaultLocale","db","query","updateMany","where","locale","data","disableI18n","Promise","all","deleteMany","$ne","$eq"],"mappings":";;AAEA;AACA,MAAMA,aAAa,OAAO,EAAEC,eAAe,EAAEC,YAAY,EAAS,GAAA;IAChE,MAAM,EAAEC,sBAAsB,EAAE,GAAGC,MAAAA,CAAOC,MAAM,CAAC,MAAA,CAAA,EAASC,OAAQ,CAAA,eAAA,CAAA,IAAoB,EAAC;IACvF,MAAM,EAAEC,gBAAgB,EAAE,GAAGH,MAAAA,CAAOC,MAAM,CAAC,MAAA,CAAA,EAASC,OAAQ,CAAA,SAAA,CAAA,IAAc,EAAC;AAE3E,IAAA,IAAI,CAACL,eAAiB,EAAA;AACpB,QAAA;AACF;IAEA,IAAK,MAAMO,OAAON,YAAc,CAAA;AAC9B,QAAA,IAAI,CAACD,eAAe,CAACO,GAAAA,CAAI,EAAE;AACzB,YAAA;AACF;QAEA,MAAMC,cAAAA,GAAiBR,eAAe,CAACO,GAAI,CAAA;QAC3C,MAAME,WAAAA,GAAcR,YAAY,CAACM,GAAI,CAAA;AAErC,QAAA,IAAI,CAACL,sBAAAA,CAAuBM,cAAmBN,CAAAA,IAAAA,sBAAAA,CAAuBO,WAAc,CAAA,EAAA;AAClF,YAAA,MAAMC,gBAAgB,MAAMJ,gBAAAA,EAAAA;AAE5B,YAAA,MAAMH,OAAOQ,EAAE,CAACC,KAAK,CAACL,GAAAA,CAAAA,CAAKM,UAAU,CAAC;gBACpCC,KAAO,EAAA;oBAAEC,MAAQ,EAAA;AAAK,iBAAA;gBACtBC,IAAM,EAAA;oBAAED,MAAQL,EAAAA;AAAc;AAChC,aAAA,CAAA;AACF;AACF;AACF;AAEA,MAAMO,cAAc,OAAO,EAAEjB,eAAe,EAAEC,YAAY,EAAS,GAAA;IACjE,MAAM,EAAEC,sBAAsB,EAAE,GAAGC,MAAAA,CAAOC,MAAM,CAAC,MAAA,CAAA,EAASC,OAAQ,CAAA,eAAA,CAAA,IAAoB,EAAC;IACvF,MAAM,EAAEC,gBAAgB,EAAE,GAAGH,MAAAA,CAAOC,MAAM,CAAC,MAAA,CAAA,EAASC,OAAQ,CAAA,SAAA,CAAA,IAAc,EAAC;AAE3E,IAAA,IAAI,CAACL,eAAiB,EAAA;AACpB,QAAA;AACF;IAEA,IAAK,MAAMO,OAAON,YAAc,CAAA;AAC9B,QAAA,IAAI,CAACD,eAAe,CAACO,GAAAA,CAAI,EAAE;AACzB,YAAA;AACF;QAEA,MAAMC,cAAAA,GAAiBR,eAAe,CAACO,GAAI,CAAA;QAC3C,MAAME,WAAAA,GAAcR,YAAY,CAACM,GAAI,CAAA;;AAGrC,QAAA,IAAIL,sBAAuBM,CAAAA,cAAAA,CAAAA,IAAmB,CAACN,sBAAAA,CAAuBO,WAAc,CAAA,EAAA;AAClF,YAAA,MAAMC,gBAAgB,MAAMJ,gBAAAA,EAAAA;YAE5B,MAAMY,OAAAA,CAAQC,GAAG,CAAC;;AAEhBhB,gBAAAA,MAAAA,CAAOQ,EAAE,CAACC,KAAK,CAACL,GAAAA,CAAAA,CAAKa,UAAU,CAAC;oBAC9BN,KAAO,EAAA;wBAAEC,MAAQ,EAAA;4BAAEM,GAAKX,EAAAA;AAAc;AAAE;AAC1C,iBAAA,CAAA;;AAEAP,gBAAAA,MAAAA,CAAOQ,EAAE,CAACC,KAAK,CAACL,GAAAA,CAAAA,CAAKM,UAAU,CAAC;oBAC9BC,KAAO,EAAA;wBAAEC,MAAQ,EAAA;4BAAEO,GAAKZ,EAAAA;AAAc;AAAE,qBAAA;oBACxCM,IAAM,EAAA;wBAAED,MAAQ,EAAA;AAAK;AACvB,iBAAA;AACD,aAAA,CAAA;AACH;AACF;AACF;;;;;"}
@@ -0,0 +1,68 @@
1
+ // if i18N enabled set default locale
2
+ const enableI18n = async ({ oldContentTypes, contentTypes })=>{
3
+ const { isLocalizedContentType } = strapi.plugin('i18n')?.service('content-types') ?? {};
4
+ const { getDefaultLocale } = strapi.plugin('i18n')?.service('locales') ?? {};
5
+ if (!oldContentTypes) {
6
+ return;
7
+ }
8
+ for(const uid in contentTypes){
9
+ if (!oldContentTypes[uid]) {
10
+ continue;
11
+ }
12
+ const oldContentType = oldContentTypes[uid];
13
+ const contentType = contentTypes[uid];
14
+ if (!isLocalizedContentType(oldContentType) && isLocalizedContentType(contentType)) {
15
+ const defaultLocale = await getDefaultLocale();
16
+ await strapi.db.query(uid).updateMany({
17
+ where: {
18
+ locale: null
19
+ },
20
+ data: {
21
+ locale: defaultLocale
22
+ }
23
+ });
24
+ }
25
+ }
26
+ };
27
+ const disableI18n = async ({ oldContentTypes, contentTypes })=>{
28
+ const { isLocalizedContentType } = strapi.plugin('i18n')?.service('content-types') ?? {};
29
+ const { getDefaultLocale } = strapi.plugin('i18n')?.service('locales') ?? {};
30
+ if (!oldContentTypes) {
31
+ return;
32
+ }
33
+ for(const uid in contentTypes){
34
+ if (!oldContentTypes[uid]) {
35
+ continue;
36
+ }
37
+ const oldContentType = oldContentTypes[uid];
38
+ const contentType = contentTypes[uid];
39
+ // if i18N is disabled remove non default locales before sync
40
+ if (isLocalizedContentType(oldContentType) && !isLocalizedContentType(contentType)) {
41
+ const defaultLocale = await getDefaultLocale();
42
+ await Promise.all([
43
+ // Delete all entities that are not in the default locale
44
+ strapi.db.query(uid).deleteMany({
45
+ where: {
46
+ locale: {
47
+ $ne: defaultLocale
48
+ }
49
+ }
50
+ }),
51
+ // Set locale to null for the rest
52
+ strapi.db.query(uid).updateMany({
53
+ where: {
54
+ locale: {
55
+ $eq: defaultLocale
56
+ }
57
+ },
58
+ data: {
59
+ locale: null
60
+ }
61
+ })
62
+ ]);
63
+ }
64
+ }
65
+ };
66
+
67
+ export { disableI18n as disable, enableI18n as enable };
68
+ //# sourceMappingURL=i18n.mjs.map