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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/dist/Strapi.d.ts +34 -45
  2. package/dist/Strapi.d.ts.map +1 -1
  3. package/dist/Strapi.js +143 -222
  4. package/dist/Strapi.js.map +1 -1
  5. package/dist/Strapi.mjs +133 -213
  6. package/dist/Strapi.mjs.map +1 -1
  7. package/dist/configuration/config-loader.d.ts.map +1 -1
  8. package/dist/configuration/config-loader.js +9 -5
  9. package/dist/configuration/config-loader.js.map +1 -1
  10. package/dist/configuration/config-loader.mjs +9 -5
  11. package/dist/configuration/config-loader.mjs.map +1 -1
  12. package/dist/configuration/get-dirs.d.ts +10 -0
  13. package/dist/configuration/get-dirs.d.ts.map +1 -0
  14. package/dist/{utils → configuration}/get-dirs.js +3 -2
  15. package/dist/configuration/get-dirs.js.map +1 -0
  16. package/dist/{utils → configuration}/get-dirs.mjs +3 -2
  17. package/dist/configuration/get-dirs.mjs.map +1 -0
  18. package/dist/configuration/index.d.ts +4 -7
  19. package/dist/configuration/index.d.ts.map +1 -1
  20. package/dist/configuration/index.js +6 -4
  21. package/dist/configuration/index.js.map +1 -1
  22. package/dist/configuration/index.mjs +5 -4
  23. package/dist/configuration/index.mjs.map +1 -1
  24. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  25. package/dist/core-api/controller/collection-type.js +3 -0
  26. package/dist/core-api/controller/collection-type.js.map +1 -1
  27. package/dist/core-api/controller/collection-type.mjs +3 -0
  28. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  29. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  30. package/dist/core-api/controller/single-type.js +1 -0
  31. package/dist/core-api/controller/single-type.js.map +1 -1
  32. package/dist/core-api/controller/single-type.mjs +1 -0
  33. package/dist/core-api/controller/single-type.mjs.map +1 -1
  34. package/dist/core-api/routes/index.d.ts.map +1 -1
  35. package/dist/core-api/service/collection-type.d.ts +5 -11
  36. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  37. package/dist/core-api/service/collection-type.js +18 -7
  38. package/dist/core-api/service/collection-type.js.map +1 -1
  39. package/dist/core-api/service/collection-type.mjs +19 -8
  40. package/dist/core-api/service/collection-type.mjs.map +1 -1
  41. package/dist/core-api/service/pagination.d.ts +4 -11
  42. package/dist/core-api/service/pagination.d.ts.map +1 -1
  43. package/dist/core-api/service/pagination.js +14 -40
  44. package/dist/core-api/service/pagination.js.map +1 -1
  45. package/dist/core-api/service/pagination.mjs +16 -42
  46. package/dist/core-api/service/pagination.mjs.map +1 -1
  47. package/dist/core-api/service/single-type.d.ts.map +1 -1
  48. package/dist/core-api/service/single-type.js +9 -2
  49. package/dist/core-api/service/single-type.js.map +1 -1
  50. package/dist/core-api/service/single-type.mjs +9 -2
  51. package/dist/core-api/service/single-type.mjs.map +1 -1
  52. package/dist/ee/index.d.ts +2 -0
  53. package/dist/ee/index.d.ts.map +1 -1
  54. package/dist/ee/index.js.map +1 -1
  55. package/dist/ee/index.mjs.map +1 -1
  56. package/dist/ee/license.d.ts.map +1 -1
  57. package/dist/ee/license.js +2 -1
  58. package/dist/ee/license.js.map +1 -1
  59. package/dist/ee/license.mjs +2 -1
  60. package/dist/ee/license.mjs.map +1 -1
  61. package/dist/factories.d.ts +2 -2
  62. package/dist/factories.d.ts.map +1 -1
  63. package/dist/factories.js.map +1 -1
  64. package/dist/factories.mjs.map +1 -1
  65. package/dist/index.d.ts +4 -2
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +25 -1
  68. package/dist/index.js.map +1 -1
  69. package/dist/index.mjs +27 -3
  70. package/dist/index.mjs.map +1 -1
  71. package/dist/loaders/admin.js +0 -1
  72. package/dist/loaders/admin.js.map +1 -1
  73. package/dist/loaders/admin.mjs +0 -1
  74. package/dist/loaders/admin.mjs.map +1 -1
  75. package/dist/loaders/apis.d.ts.map +1 -1
  76. package/dist/loaders/apis.js +10 -10
  77. package/dist/loaders/apis.js.map +1 -1
  78. package/dist/loaders/apis.mjs +10 -10
  79. package/dist/loaders/apis.mjs.map +1 -1
  80. package/dist/loaders/index.d.ts.map +1 -1
  81. package/dist/loaders/index.js +0 -2
  82. package/dist/loaders/index.js.map +1 -1
  83. package/dist/loaders/index.mjs +0 -2
  84. package/dist/loaders/index.mjs.map +1 -1
  85. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  86. package/dist/loaders/plugins/get-enabled-plugins.js +7 -6
  87. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  88. package/dist/loaders/plugins/get-enabled-plugins.mjs +7 -6
  89. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  90. package/dist/middlewares/body.d.ts +2 -2
  91. package/dist/middlewares/body.d.ts.map +1 -1
  92. package/dist/middlewares/body.js +4 -4
  93. package/dist/middlewares/body.js.map +1 -1
  94. package/dist/middlewares/body.mjs +4 -4
  95. package/dist/middlewares/body.mjs.map +1 -1
  96. package/dist/middlewares/cors.d.ts.map +1 -1
  97. package/dist/middlewares/cors.js +6 -8
  98. package/dist/middlewares/cors.js.map +1 -1
  99. package/dist/middlewares/cors.mjs +6 -8
  100. package/dist/middlewares/cors.mjs.map +1 -1
  101. package/dist/middlewares/public.js +1 -1
  102. package/dist/middlewares/public.js.map +1 -1
  103. package/dist/middlewares/public.mjs +1 -1
  104. package/dist/middlewares/public.mjs.map +1 -1
  105. package/dist/middlewares/security.d.ts.map +1 -1
  106. package/dist/middlewares/security.js +10 -3
  107. package/dist/middlewares/security.js.map +1 -1
  108. package/dist/middlewares/security.mjs +11 -4
  109. package/dist/middlewares/security.mjs.map +1 -1
  110. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +30 -0
  111. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -0
  112. package/dist/migrations/database/5.0.0-discard-drafts.js +50 -0
  113. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -0
  114. package/dist/migrations/database/5.0.0-discard-drafts.mjs +50 -0
  115. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -0
  116. package/dist/migrations/draft-publish.d.ts.map +1 -1
  117. package/dist/migrations/draft-publish.js +14 -31
  118. package/dist/migrations/draft-publish.js.map +1 -1
  119. package/dist/migrations/draft-publish.mjs +15 -32
  120. package/dist/migrations/draft-publish.mjs.map +1 -1
  121. package/dist/providers/admin.d.ts +3 -0
  122. package/dist/providers/admin.d.ts.map +1 -0
  123. package/dist/providers/admin.js +20 -0
  124. package/dist/providers/admin.js.map +1 -0
  125. package/dist/providers/admin.mjs +21 -0
  126. package/dist/providers/admin.mjs.map +1 -0
  127. package/dist/providers/coreStore.d.ts +3 -0
  128. package/dist/providers/coreStore.d.ts.map +1 -0
  129. package/dist/providers/coreStore.js +11 -0
  130. package/dist/providers/coreStore.js.map +1 -0
  131. package/dist/providers/coreStore.mjs +12 -0
  132. package/dist/providers/coreStore.mjs.map +1 -0
  133. package/dist/providers/cron.d.ts +3 -0
  134. package/dist/providers/cron.d.ts.map +1 -0
  135. package/dist/providers/cron.js +20 -0
  136. package/dist/providers/cron.js.map +1 -0
  137. package/dist/providers/cron.mjs +21 -0
  138. package/dist/providers/cron.mjs.map +1 -0
  139. package/dist/providers/index.d.ts +3 -0
  140. package/dist/providers/index.d.ts.map +1 -0
  141. package/dist/providers/index.js +11 -0
  142. package/dist/providers/index.js.map +1 -0
  143. package/dist/providers/index.mjs +11 -0
  144. package/dist/providers/index.mjs.map +1 -0
  145. package/dist/providers/provider.d.ts +9 -0
  146. package/dist/providers/provider.d.ts.map +1 -0
  147. package/dist/providers/provider.js +5 -0
  148. package/dist/providers/provider.js.map +1 -0
  149. package/dist/providers/provider.mjs +5 -0
  150. package/dist/providers/provider.mjs.map +1 -0
  151. package/dist/providers/registries.d.ts +3 -0
  152. package/dist/providers/registries.d.ts.map +1 -0
  153. package/dist/providers/registries.js +35 -0
  154. package/dist/providers/registries.js.map +1 -0
  155. package/dist/providers/registries.mjs +36 -0
  156. package/dist/providers/registries.mjs.map +1 -0
  157. package/dist/providers/telemetry.d.ts +3 -0
  158. package/dist/providers/telemetry.d.ts.map +1 -0
  159. package/dist/providers/telemetry.js +19 -0
  160. package/dist/providers/telemetry.js.map +1 -0
  161. package/dist/providers/telemetry.mjs +20 -0
  162. package/dist/providers/telemetry.mjs.map +1 -0
  163. package/dist/providers/webhooks.d.ts +3 -0
  164. package/dist/providers/webhooks.d.ts.map +1 -0
  165. package/dist/providers/webhooks.js +30 -0
  166. package/dist/providers/webhooks.js.map +1 -0
  167. package/dist/providers/webhooks.mjs +31 -0
  168. package/dist/providers/webhooks.mjs.map +1 -0
  169. package/dist/registries/index.d.ts +0 -1
  170. package/dist/registries/index.d.ts.map +1 -1
  171. package/dist/services/config.d.ts +3 -0
  172. package/dist/services/config.d.ts.map +1 -0
  173. package/dist/{registries → services}/config.js +11 -7
  174. package/dist/services/config.js.map +1 -0
  175. package/dist/{registries → services}/config.mjs +10 -7
  176. package/dist/services/config.mjs.map +1 -0
  177. package/dist/services/content-api/index.js +1 -1
  178. package/dist/services/content-api/index.js.map +1 -1
  179. package/dist/services/content-api/index.mjs +1 -1
  180. package/dist/services/content-api/index.mjs.map +1 -1
  181. package/dist/services/content-api/permissions/index.js +1 -1
  182. package/dist/services/content-api/permissions/index.js.map +1 -1
  183. package/dist/services/content-api/permissions/index.mjs +1 -1
  184. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  185. package/dist/services/core-store.d.ts.map +1 -1
  186. package/dist/services/document-service/attributes/index.d.ts +6 -0
  187. package/dist/services/document-service/attributes/index.d.ts.map +1 -0
  188. package/dist/services/{entity-service → document-service}/attributes/index.js +5 -5
  189. package/dist/services/document-service/attributes/index.js.map +1 -0
  190. package/dist/services/{entity-service → document-service}/attributes/index.mjs +5 -5
  191. package/dist/services/document-service/attributes/index.mjs.map +1 -0
  192. package/dist/services/document-service/attributes/transforms.d.ts.map +1 -0
  193. package/dist/services/document-service/attributes/transforms.js.map +1 -0
  194. package/dist/services/document-service/attributes/transforms.mjs.map +1 -0
  195. package/dist/services/document-service/common.d.ts +1 -1
  196. package/dist/services/document-service/common.d.ts.map +1 -1
  197. package/dist/services/document-service/common.js.map +1 -1
  198. package/dist/services/document-service/common.mjs.map +1 -1
  199. package/dist/services/document-service/components.d.ts +25 -1
  200. package/dist/services/document-service/components.d.ts.map +1 -1
  201. package/dist/services/{entity-service → document-service}/components.js +35 -45
  202. package/dist/services/document-service/components.js.map +1 -0
  203. package/dist/services/{entity-service → document-service}/components.mjs +36 -46
  204. package/dist/services/document-service/components.mjs.map +1 -0
  205. package/dist/services/document-service/entries.d.ts +10 -0
  206. package/dist/services/document-service/entries.d.ts.map +1 -0
  207. package/dist/services/document-service/entries.js +96 -0
  208. package/dist/services/document-service/entries.js.map +1 -0
  209. package/dist/services/document-service/entries.mjs +96 -0
  210. package/dist/services/document-service/entries.mjs.map +1 -0
  211. package/dist/services/document-service/events.d.ts +25 -0
  212. package/dist/services/document-service/events.d.ts.map +1 -0
  213. package/dist/services/document-service/events.js +47 -0
  214. package/dist/services/document-service/events.js.map +1 -0
  215. package/dist/services/document-service/events.mjs +47 -0
  216. package/dist/services/document-service/events.mjs.map +1 -0
  217. package/dist/services/document-service/index.d.ts +0 -2
  218. package/dist/services/document-service/index.d.ts.map +1 -1
  219. package/dist/services/document-service/index.js +13 -2
  220. package/dist/services/document-service/index.js.map +1 -1
  221. package/dist/services/document-service/index.mjs +13 -2
  222. package/dist/services/document-service/index.mjs.map +1 -1
  223. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  224. package/dist/services/document-service/internationalization.js +14 -5
  225. package/dist/services/document-service/internationalization.js.map +1 -1
  226. package/dist/services/document-service/internationalization.mjs +14 -5
  227. package/dist/services/document-service/internationalization.mjs.map +1 -1
  228. package/dist/services/document-service/middlewares/middleware-manager.d.ts +5 -2
  229. package/dist/services/document-service/middlewares/middleware-manager.d.ts.map +1 -1
  230. package/dist/services/document-service/middlewares/middleware-manager.js +8 -5
  231. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  232. package/dist/services/document-service/middlewares/middleware-manager.mjs +8 -5
  233. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  234. package/dist/services/document-service/params.d.ts +3 -1
  235. package/dist/services/document-service/params.d.ts.map +1 -1
  236. package/dist/services/document-service/params.js.map +1 -0
  237. package/dist/services/document-service/params.mjs.map +1 -0
  238. package/dist/services/document-service/repository.d.ts.map +1 -1
  239. package/dist/services/document-service/repository.js +135 -154
  240. package/dist/services/document-service/repository.js.map +1 -1
  241. package/dist/services/document-service/repository.mjs +117 -136
  242. package/dist/services/document-service/repository.mjs.map +1 -1
  243. package/dist/services/document-service/transform/data.d.ts.map +1 -1
  244. package/dist/services/document-service/transform/data.js +4 -2
  245. package/dist/services/document-service/transform/data.js.map +1 -1
  246. package/dist/services/document-service/transform/data.mjs +4 -2
  247. package/dist/services/document-service/transform/data.mjs.map +1 -1
  248. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  249. package/dist/services/document-service/transform/query.d.ts +5 -0
  250. package/dist/services/document-service/transform/query.d.ts.map +1 -0
  251. package/dist/services/document-service/transform/query.js +9 -0
  252. package/dist/services/document-service/transform/query.js.map +1 -0
  253. package/dist/services/document-service/transform/query.mjs +9 -0
  254. package/dist/services/document-service/transform/query.mjs.map +1 -0
  255. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +8 -7
  256. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  257. package/dist/services/document-service/transform/relations/extract/data-ids.js +44 -77
  258. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  259. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +44 -77
  260. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  261. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts +7 -3
  262. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  263. package/dist/services/document-service/transform/relations/transform/data-ids.js +60 -125
  264. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  265. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +61 -126
  266. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  267. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts +9 -0
  268. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts.map +1 -0
  269. package/dist/services/document-service/transform/relations/transform/default-locale.js +32 -0
  270. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -0
  271. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +32 -0
  272. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -0
  273. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +2 -2
  274. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  275. package/dist/services/document-service/transform/relations/utils/i18n.js +3 -9
  276. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  277. package/dist/services/document-service/transform/relations/utils/i18n.mjs +3 -9
  278. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  279. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts +6 -0
  280. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -0
  281. package/dist/services/document-service/transform/relations/utils/map-relation.js +91 -0
  282. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -0
  283. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +91 -0
  284. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -0
  285. package/dist/services/document-service/transform/relations/utils/types.d.ts +6 -0
  286. package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -1
  287. package/dist/services/entity-service/index.d.ts.map +1 -1
  288. package/dist/services/entity-service/index.js +11 -4
  289. package/dist/services/entity-service/index.js.map +1 -1
  290. package/dist/services/entity-service/index.mjs +11 -4
  291. package/dist/services/entity-service/index.mjs.map +1 -1
  292. package/dist/services/entity-validator/index.d.ts.map +1 -1
  293. package/dist/services/entity-validator/index.js +93 -87
  294. package/dist/services/entity-validator/index.js.map +1 -1
  295. package/dist/services/entity-validator/index.mjs +93 -87
  296. package/dist/services/entity-validator/index.mjs.map +1 -1
  297. package/dist/services/event-hub.d.ts +1 -0
  298. package/dist/services/event-hub.d.ts.map +1 -1
  299. package/dist/services/event-hub.js +9 -4
  300. package/dist/services/event-hub.js.map +1 -1
  301. package/dist/services/event-hub.mjs +9 -4
  302. package/dist/services/event-hub.mjs.map +1 -1
  303. package/dist/services/metrics/middleware.d.ts.map +1 -1
  304. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  305. package/dist/services/metrics/rate-limiter.js.map +1 -1
  306. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  307. package/dist/services/reloader.d.ts +7 -0
  308. package/dist/services/reloader.d.ts.map +1 -0
  309. package/dist/services/reloader.js +36 -0
  310. package/dist/services/reloader.js.map +1 -0
  311. package/dist/services/reloader.mjs +36 -0
  312. package/dist/services/reloader.mjs.map +1 -0
  313. package/dist/services/server/compose-endpoint.d.ts.map +1 -1
  314. package/dist/services/server/koa.d.ts.map +1 -1
  315. package/dist/services/server/koa.js +1 -1
  316. package/dist/services/server/koa.js.map +1 -1
  317. package/dist/services/server/koa.mjs +1 -1
  318. package/dist/services/server/koa.mjs.map +1 -1
  319. package/dist/services/server/register-routes.js +3 -3
  320. package/dist/services/server/register-routes.js.map +1 -1
  321. package/dist/services/server/register-routes.mjs +3 -3
  322. package/dist/services/server/register-routes.mjs.map +1 -1
  323. package/dist/services/server/routing.d.ts +1 -1
  324. package/dist/services/webhook-runner.d.ts +2 -1
  325. package/dist/services/webhook-runner.d.ts.map +1 -1
  326. package/dist/services/webhook-runner.js.map +1 -1
  327. package/dist/services/webhook-runner.mjs.map +1 -1
  328. package/dist/services/webhook-store.d.ts +2 -8
  329. package/dist/services/webhook-store.d.ts.map +1 -1
  330. package/dist/services/webhook-store.js +14 -8
  331. package/dist/services/webhook-store.js.map +1 -1
  332. package/dist/services/webhook-store.mjs +14 -8
  333. package/dist/services/webhook-store.mjs.map +1 -1
  334. package/dist/utils/index.d.ts +2 -1
  335. package/dist/utils/index.d.ts.map +1 -1
  336. package/dist/utils/load-files.d.ts.map +1 -1
  337. package/dist/utils/resolve-working-dirs.d.ts +19 -0
  338. package/dist/utils/resolve-working-dirs.d.ts.map +1 -0
  339. package/dist/utils/resolve-working-dirs.js +13 -0
  340. package/dist/utils/resolve-working-dirs.js.map +1 -0
  341. package/dist/utils/resolve-working-dirs.mjs +11 -0
  342. package/dist/utils/resolve-working-dirs.mjs.map +1 -0
  343. package/dist/utils/startup-logger.d.ts.map +1 -1
  344. package/dist/utils/transform-content-types-to-models.d.ts +21 -16
  345. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  346. package/dist/utils/transform-content-types-to-models.js +105 -57
  347. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  348. package/dist/utils/transform-content-types-to-models.mjs +105 -57
  349. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  350. package/dist/utils/update-notifier/index.d.ts +1 -6
  351. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  352. package/dist/utils/update-notifier/index.js +11 -14
  353. package/dist/utils/update-notifier/index.js.map +1 -1
  354. package/dist/utils/update-notifier/index.mjs +11 -14
  355. package/dist/utils/update-notifier/index.mjs.map +1 -1
  356. package/package.json +28 -26
  357. package/dist/registries/config.d.ts +0 -4
  358. package/dist/registries/config.d.ts.map +0 -1
  359. package/dist/registries/config.js.map +0 -1
  360. package/dist/registries/config.mjs.map +0 -1
  361. package/dist/services/document-service/document-engine.d.ts +0 -2
  362. package/dist/services/document-service/document-engine.d.ts.map +0 -1
  363. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts +0 -2
  364. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts.map +0 -1
  365. package/dist/services/document-service/transform/relations/utils/data.js +0 -12
  366. package/dist/services/document-service/transform/relations/utils/data.js.map +0 -1
  367. package/dist/services/document-service/transform/relations/utils/data.mjs +0 -12
  368. package/dist/services/document-service/transform/relations/utils/data.mjs.map +0 -1
  369. package/dist/services/entity-service/attributes/index.d.ts +0 -6
  370. package/dist/services/entity-service/attributes/index.d.ts.map +0 -1
  371. package/dist/services/entity-service/attributes/index.js.map +0 -1
  372. package/dist/services/entity-service/attributes/index.mjs.map +0 -1
  373. package/dist/services/entity-service/attributes/transforms.d.ts.map +0 -1
  374. package/dist/services/entity-service/attributes/transforms.js.map +0 -1
  375. package/dist/services/entity-service/attributes/transforms.mjs.map +0 -1
  376. package/dist/services/entity-service/components.d.ts +0 -95
  377. package/dist/services/entity-service/components.d.ts.map +0 -1
  378. package/dist/services/entity-service/components.js.map +0 -1
  379. package/dist/services/entity-service/components.mjs.map +0 -1
  380. package/dist/services/entity-service/params.d.ts +0 -8
  381. package/dist/services/entity-service/params.d.ts.map +0 -1
  382. package/dist/services/entity-service/params.js.map +0 -1
  383. package/dist/services/entity-service/params.mjs.map +0 -1
  384. package/dist/utils/get-dirs.d.ts +0 -9
  385. package/dist/utils/get-dirs.d.ts.map +0 -1
  386. package/dist/utils/get-dirs.js.map +0 -1
  387. package/dist/utils/get-dirs.mjs.map +0 -1
  388. /package/dist/services/{entity-service → document-service}/attributes/transforms.d.ts +0 -0
  389. /package/dist/services/{entity-service → document-service}/attributes/transforms.js +0 -0
  390. /package/dist/services/{entity-service → document-service}/attributes/transforms.mjs +0 -0
  391. /package/dist/services/{entity-service → document-service}/params.js +0 -0
  392. /package/dist/services/{entity-service → document-service}/params.mjs +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"security.js","sources":["../../src/middlewares/security.ts"],"sourcesContent":["import { defaultsDeep, merge } from 'lodash/fp';\nimport helmet, { KoaHelmet } from 'koa-helmet';\n\nimport type { Core } from '@strapi/types';\n\nexport type Config = NonNullable<Parameters<KoaHelmet>[0]>;\n\nconst defaults: Config = {\n crossOriginEmbedderPolicy: false,\n crossOriginOpenerPolicy: false,\n crossOriginResourcePolicy: false,\n originAgentCluster: false,\n contentSecurityPolicy: {\n useDefaults: true,\n directives: {\n 'connect-src': [\"'self'\", 'https:'],\n 'img-src': [\"'self'\", 'data:', 'blob:', 'https://market-assets.strapi.io'],\n 'media-src': [\"'self'\", 'data:', 'blob:'],\n upgradeInsecureRequests: null,\n },\n },\n xssFilter: false,\n hsts: {\n maxAge: 31536000,\n includeSubDomains: true,\n },\n frameguard: {\n action: 'sameorigin',\n },\n};\n\nexport const security: Core.MiddlewareFactory<Config> =\n (config, { strapi }) =>\n (ctx, next) => {\n let helmetConfig: Config = defaultsDeep(defaults, config);\n\n const specialPaths = ['/documentation'];\n\n const directives: {\n 'script-src': string[];\n 'img-src': string[];\n 'manifest-src': string[];\n 'frame-src': string[];\n } = {\n 'script-src': [\"'self'\", \"'unsafe-inline'\", 'cdn.jsdelivr.net'],\n 'img-src': [\"'self'\", 'data:', 'cdn.jsdelivr.net', 'strapi.io'],\n 'manifest-src': [],\n 'frame-src': [],\n };\n\n // if apollo graphql playground is enabled, add exceptions for it\n if (strapi.plugin('graphql')?.service('utils').playground.isEnabled()) {\n const { config: gqlConfig } = strapi.plugin('graphql');\n specialPaths.push(gqlConfig('endpoint'));\n\n directives['script-src'].push(`https: 'unsafe-inline'`);\n directives['img-src'].push(`'apollo-server-landing-page.cdn.apollographql.com'`);\n directives['manifest-src'].push(`'self'`);\n directives['manifest-src'].push('apollo-server-landing-page.cdn.apollographql.com');\n directives['frame-src'].push(`'self'`);\n directives['frame-src'].push('sandbox.embed.apollographql.com');\n }\n\n // TODO: we shouldn't combine playground exceptions with documentation for all routes, we should first check the path and then return exceptions specific to that\n if (ctx.method === 'GET' && specialPaths.some((str) => ctx.path.startsWith(str))) {\n helmetConfig = merge(helmetConfig, {\n crossOriginEmbedderPolicy: false, // TODO: only use this for graphql playground\n contentSecurityPolicy: {\n directives,\n },\n });\n }\n\n /**\n * These are for vite's watch mode so it can accurately\n * connect to the HMR websocket & reconnect on failure\n * or when the server restarts.\n *\n * It only applies in development, and only on GET requests\n * that are part of the admin route.\n */\n if (\n process.env.NODE_ENV === 'development' &&\n ctx.method === 'GET' &&\n ['/admin'].some((str) => ctx.path.startsWith(str))\n ) {\n helmetConfig = merge(helmetConfig, {\n contentSecurityPolicy: {\n directives: {\n 'script-src': [\"'self'\", \"'unsafe-inline'\"],\n 'connect-src': [\"'self'\", 'http:', 'https:', 'ws:'],\n },\n },\n });\n }\n\n return helmet(helmetConfig)(ctx, next);\n };\n"],"names":["defaultsDeep","merge","helmet"],"mappings":";;;;;;AAOA,MAAM,WAAmB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,yBAAyB;AAAA,EACzB,2BAA2B;AAAA,EAC3B,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,IACrB,aAAa;AAAA,IACb,YAAY;AAAA,MACV,eAAe,CAAC,UAAU,QAAQ;AAAA,MAClC,WAAW,CAAC,UAAU,SAAS,SAAS,iCAAiC;AAAA,MACzE,aAAa,CAAC,UAAU,SAAS,OAAO;AAAA,MACxC,yBAAyB;AAAA,IAC3B;AAAA,EACF;AAAA,EACA,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,mBAAmB;AAAA,EACrB;AAAA,EACA,YAAY;AAAA,IACV,QAAQ;AAAA,EACV;AACF;AAEa,MAAA,WACX,CAAC,QAAQ,EAAE,aACX,CAAC,KAAK,SAAS;AACT,MAAA,eAAuBA,EAAAA,aAAa,UAAU,MAAM;AAElD,QAAA,eAAe,CAAC,gBAAgB;AAEtC,QAAM,aAKF;AAAA,IACF,cAAc,CAAC,UAAU,mBAAmB,kBAAkB;AAAA,IAC9D,WAAW,CAAC,UAAU,SAAS,oBAAoB,WAAW;AAAA,IAC9D,gBAAgB,CAAC;AAAA,IACjB,aAAa,CAAC;AAAA,EAAA;AAIZ,MAAA,OAAO,OAAO,SAAS,GAAG,QAAQ,OAAO,EAAE,WAAW,aAAa;AACrE,UAAM,EAAE,QAAQ,UAAA,IAAc,OAAO,OAAO,SAAS;AACxC,iBAAA,KAAK,UAAU,UAAU,CAAC;AAE5B,eAAA,YAAY,EAAE,KAAK,wBAAwB;AAC3C,eAAA,SAAS,EAAE,KAAK,oDAAoD;AACpE,eAAA,cAAc,EAAE,KAAK,QAAQ;AAC7B,eAAA,cAAc,EAAE,KAAK,kDAAkD;AACvE,eAAA,WAAW,EAAE,KAAK,QAAQ;AAC1B,eAAA,WAAW,EAAE,KAAK,iCAAiC;AAAA,EAChE;AAGA,MAAI,IAAI,WAAW,SAAS,aAAa,KAAK,CAAC,QAAQ,IAAI,KAAK,WAAW,GAAG,CAAC,GAAG;AAChF,mBAAeC,QAAM,cAAc;AAAA,MACjC,2BAA2B;AAAA;AAAA,MAC3B,uBAAuB;AAAA,QACrB;AAAA,MACF;AAAA,IAAA,CACD;AAAA,EACH;AAUA,MACE,QAAQ,IAAI,aAAa,iBACzB,IAAI,WAAW,SACf,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,WAAW,GAAG,CAAC,GACjD;AACA,mBAAeA,QAAM,cAAc;AAAA,MACjC,uBAAuB;AAAA,QACrB,YAAY;AAAA,UACV,cAAc,CAAC,UAAU,iBAAiB;AAAA,UAC1C,eAAe,CAAC,UAAU,SAAS,UAAU,KAAK;AAAA,QACpD;AAAA,MACF;AAAA,IAAA,CACD;AAAA,EACH;AAEA,SAAOC,gBAAO,QAAA,YAAY,EAAE,KAAK,IAAI;AACvC;;"}
1
+ {"version":3,"file":"security.js","sources":["../../src/middlewares/security.ts"],"sourcesContent":["import { defaultsDeep, mergeWith } from 'lodash/fp';\nimport helmet, { KoaHelmet } from 'koa-helmet';\n\nimport type { Core } from '@strapi/types';\n\nexport type Config = NonNullable<Parameters<KoaHelmet>[0]>;\n\nconst defaults: Config = {\n crossOriginEmbedderPolicy: false,\n crossOriginOpenerPolicy: false,\n crossOriginResourcePolicy: false,\n originAgentCluster: false,\n contentSecurityPolicy: {\n useDefaults: true,\n directives: {\n 'connect-src': [\"'self'\", 'https:'],\n 'img-src': [\"'self'\", 'data:', 'blob:', 'https://market-assets.strapi.io'],\n 'media-src': [\"'self'\", 'data:', 'blob:'],\n upgradeInsecureRequests: null,\n },\n },\n xssFilter: false,\n hsts: {\n maxAge: 31536000,\n includeSubDomains: true,\n },\n frameguard: {\n action: 'sameorigin',\n },\n};\n\nconst mergeConfig = (existingConfig: Config, newConfig: Config) => {\n return mergeWith(\n (obj, src) => (Array.isArray(obj) && Array.isArray(src) ? obj.concat(src) : undefined),\n existingConfig,\n newConfig\n );\n};\n\nexport const security: Core.MiddlewareFactory<Config> =\n (config, { strapi }) =>\n (ctx, next) => {\n let helmetConfig: Config = defaultsDeep(defaults, config);\n\n const specialPaths = ['/documentation'];\n\n const directives: {\n 'script-src': string[];\n 'img-src': string[];\n 'manifest-src': string[];\n 'frame-src': string[];\n } = {\n 'script-src': [\"'self'\", \"'unsafe-inline'\", 'cdn.jsdelivr.net'],\n 'img-src': [\"'self'\", 'data:', 'cdn.jsdelivr.net', 'strapi.io'],\n 'manifest-src': [],\n 'frame-src': [],\n };\n\n // if apollo graphql playground is enabled, add exceptions for it\n if (strapi.plugin('graphql')?.service('utils').playground.isEnabled()) {\n const { config: gqlConfig } = strapi.plugin('graphql');\n specialPaths.push(gqlConfig('endpoint'));\n\n directives['script-src'].push(`https: 'unsafe-inline'`);\n directives['img-src'].push(`'apollo-server-landing-page.cdn.apollographql.com'`);\n directives['manifest-src'].push(`'self'`);\n directives['manifest-src'].push('apollo-server-landing-page.cdn.apollographql.com');\n directives['frame-src'].push(`'self'`);\n directives['frame-src'].push('sandbox.embed.apollographql.com');\n }\n\n // TODO: we shouldn't combine playground exceptions with documentation for all routes, we should first check the path and then return exceptions specific to that\n if (ctx.method === 'GET' && specialPaths.some((str) => ctx.path.startsWith(str))) {\n helmetConfig = mergeConfig(helmetConfig, {\n crossOriginEmbedderPolicy: false, // TODO: only use this for graphql playground\n contentSecurityPolicy: {\n directives,\n },\n });\n }\n\n /**\n * These are for vite's watch mode so it can accurately\n * connect to the HMR websocket & reconnect on failure\n * or when the server restarts.\n *\n * It only applies in development, and only on GET requests\n * that are part of the admin route.\n */\n if (\n ['development', 'test'].includes(process.env.NODE_ENV ?? '') &&\n ctx.method === 'GET' &&\n ['/admin'].some((str) => ctx.path.startsWith(str))\n ) {\n helmetConfig = mergeConfig(helmetConfig, {\n contentSecurityPolicy: {\n directives: {\n 'script-src': [\"'self'\", \"'unsafe-inline'\"],\n 'connect-src': [\"'self'\", 'http:', 'https:', 'ws:'],\n },\n },\n });\n }\n\n return helmet(helmetConfig)(ctx, next);\n };\n"],"names":["mergeWith","defaultsDeep","helmet"],"mappings":";;;;;;AAOA,MAAM,WAAmB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,yBAAyB;AAAA,EACzB,2BAA2B;AAAA,EAC3B,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,IACrB,aAAa;AAAA,IACb,YAAY;AAAA,MACV,eAAe,CAAC,UAAU,QAAQ;AAAA,MAClC,WAAW,CAAC,UAAU,SAAS,SAAS,iCAAiC;AAAA,MACzE,aAAa,CAAC,UAAU,SAAS,OAAO;AAAA,MACxC,yBAAyB;AAAA,IAC3B;AAAA,EACF;AAAA,EACA,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,mBAAmB;AAAA,EACrB;AAAA,EACA,YAAY;AAAA,IACV,QAAQ;AAAA,EACV;AACF;AAEA,MAAM,cAAc,CAAC,gBAAwB,cAAsB;AAC1D,SAAAA,EAAA;AAAA,IACL,CAAC,KAAK,QAAS,MAAM,QAAQ,GAAG,KAAK,MAAM,QAAQ,GAAG,IAAI,IAAI,OAAO,GAAG,IAAI;AAAA,IAC5E;AAAA,IACA;AAAA,EAAA;AAEJ;AAEa,MAAA,WACX,CAAC,QAAQ,EAAE,aACX,CAAC,KAAK,SAAS;AACT,MAAA,eAAuBC,EAAAA,aAAa,UAAU,MAAM;AAElD,QAAA,eAAe,CAAC,gBAAgB;AAEtC,QAAM,aAKF;AAAA,IACF,cAAc,CAAC,UAAU,mBAAmB,kBAAkB;AAAA,IAC9D,WAAW,CAAC,UAAU,SAAS,oBAAoB,WAAW;AAAA,IAC9D,gBAAgB,CAAC;AAAA,IACjB,aAAa,CAAC;AAAA,EAAA;AAIZ,MAAA,OAAO,OAAO,SAAS,GAAG,QAAQ,OAAO,EAAE,WAAW,aAAa;AACrE,UAAM,EAAE,QAAQ,UAAA,IAAc,OAAO,OAAO,SAAS;AACxC,iBAAA,KAAK,UAAU,UAAU,CAAC;AAE5B,eAAA,YAAY,EAAE,KAAK,wBAAwB;AAC3C,eAAA,SAAS,EAAE,KAAK,oDAAoD;AACpE,eAAA,cAAc,EAAE,KAAK,QAAQ;AAC7B,eAAA,cAAc,EAAE,KAAK,kDAAkD;AACvE,eAAA,WAAW,EAAE,KAAK,QAAQ;AAC1B,eAAA,WAAW,EAAE,KAAK,iCAAiC;AAAA,EAChE;AAGA,MAAI,IAAI,WAAW,SAAS,aAAa,KAAK,CAAC,QAAQ,IAAI,KAAK,WAAW,GAAG,CAAC,GAAG;AAChF,mBAAe,YAAY,cAAc;AAAA,MACvC,2BAA2B;AAAA;AAAA,MAC3B,uBAAuB;AAAA,QACrB;AAAA,MACF;AAAA,IAAA,CACD;AAAA,EACH;AAWE,MAAA,CAAC,eAAe,MAAM,EAAE,SAAS,QAAQ,IAAI,YAAY,EAAE,KAC3D,IAAI,WAAW,SACf,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,WAAW,GAAG,CAAC,GACjD;AACA,mBAAe,YAAY,cAAc;AAAA,MACvC,uBAAuB;AAAA,QACrB,YAAY;AAAA,UACV,cAAc,CAAC,UAAU,iBAAiB;AAAA,UAC1C,eAAe,CAAC,UAAU,SAAS,UAAU,KAAK;AAAA,QACpD;AAAA,MACF;AAAA,IAAA,CACD;AAAA,EACH;AAEA,SAAOC,gBAAO,QAAA,YAAY,EAAE,KAAK,IAAI;AACvC;;"}
@@ -1,4 +1,4 @@
1
- import { defaultsDeep, merge } from "lodash/fp";
1
+ import { defaultsDeep, mergeWith } from "lodash/fp";
2
2
  import helmet from "koa-helmet";
3
3
  const defaults = {
4
4
  crossOriginEmbedderPolicy: false,
@@ -23,6 +23,13 @@ const defaults = {
23
23
  action: "sameorigin"
24
24
  }
25
25
  };
26
+ const mergeConfig = (existingConfig, newConfig) => {
27
+ return mergeWith(
28
+ (obj, src) => Array.isArray(obj) && Array.isArray(src) ? obj.concat(src) : void 0,
29
+ existingConfig,
30
+ newConfig
31
+ );
32
+ };
26
33
  const security = (config, { strapi }) => (ctx, next) => {
27
34
  let helmetConfig = defaultsDeep(defaults, config);
28
35
  const specialPaths = ["/documentation"];
@@ -43,7 +50,7 @@ const security = (config, { strapi }) => (ctx, next) => {
43
50
  directives["frame-src"].push("sandbox.embed.apollographql.com");
44
51
  }
45
52
  if (ctx.method === "GET" && specialPaths.some((str) => ctx.path.startsWith(str))) {
46
- helmetConfig = merge(helmetConfig, {
53
+ helmetConfig = mergeConfig(helmetConfig, {
47
54
  crossOriginEmbedderPolicy: false,
48
55
  // TODO: only use this for graphql playground
49
56
  contentSecurityPolicy: {
@@ -51,8 +58,8 @@ const security = (config, { strapi }) => (ctx, next) => {
51
58
  }
52
59
  });
53
60
  }
54
- if (process.env.NODE_ENV === "development" && ctx.method === "GET" && ["/admin"].some((str) => ctx.path.startsWith(str))) {
55
- helmetConfig = merge(helmetConfig, {
61
+ if (["development", "test"].includes(process.env.NODE_ENV ?? "") && ctx.method === "GET" && ["/admin"].some((str) => ctx.path.startsWith(str))) {
62
+ helmetConfig = mergeConfig(helmetConfig, {
56
63
  contentSecurityPolicy: {
57
64
  directives: {
58
65
  "script-src": ["'self'", "'unsafe-inline'"],
@@ -1 +1 @@
1
- {"version":3,"file":"security.mjs","sources":["../../src/middlewares/security.ts"],"sourcesContent":["import { defaultsDeep, merge } from 'lodash/fp';\nimport helmet, { KoaHelmet } from 'koa-helmet';\n\nimport type { Core } from '@strapi/types';\n\nexport type Config = NonNullable<Parameters<KoaHelmet>[0]>;\n\nconst defaults: Config = {\n crossOriginEmbedderPolicy: false,\n crossOriginOpenerPolicy: false,\n crossOriginResourcePolicy: false,\n originAgentCluster: false,\n contentSecurityPolicy: {\n useDefaults: true,\n directives: {\n 'connect-src': [\"'self'\", 'https:'],\n 'img-src': [\"'self'\", 'data:', 'blob:', 'https://market-assets.strapi.io'],\n 'media-src': [\"'self'\", 'data:', 'blob:'],\n upgradeInsecureRequests: null,\n },\n },\n xssFilter: false,\n hsts: {\n maxAge: 31536000,\n includeSubDomains: true,\n },\n frameguard: {\n action: 'sameorigin',\n },\n};\n\nexport const security: Core.MiddlewareFactory<Config> =\n (config, { strapi }) =>\n (ctx, next) => {\n let helmetConfig: Config = defaultsDeep(defaults, config);\n\n const specialPaths = ['/documentation'];\n\n const directives: {\n 'script-src': string[];\n 'img-src': string[];\n 'manifest-src': string[];\n 'frame-src': string[];\n } = {\n 'script-src': [\"'self'\", \"'unsafe-inline'\", 'cdn.jsdelivr.net'],\n 'img-src': [\"'self'\", 'data:', 'cdn.jsdelivr.net', 'strapi.io'],\n 'manifest-src': [],\n 'frame-src': [],\n };\n\n // if apollo graphql playground is enabled, add exceptions for it\n if (strapi.plugin('graphql')?.service('utils').playground.isEnabled()) {\n const { config: gqlConfig } = strapi.plugin('graphql');\n specialPaths.push(gqlConfig('endpoint'));\n\n directives['script-src'].push(`https: 'unsafe-inline'`);\n directives['img-src'].push(`'apollo-server-landing-page.cdn.apollographql.com'`);\n directives['manifest-src'].push(`'self'`);\n directives['manifest-src'].push('apollo-server-landing-page.cdn.apollographql.com');\n directives['frame-src'].push(`'self'`);\n directives['frame-src'].push('sandbox.embed.apollographql.com');\n }\n\n // TODO: we shouldn't combine playground exceptions with documentation for all routes, we should first check the path and then return exceptions specific to that\n if (ctx.method === 'GET' && specialPaths.some((str) => ctx.path.startsWith(str))) {\n helmetConfig = merge(helmetConfig, {\n crossOriginEmbedderPolicy: false, // TODO: only use this for graphql playground\n contentSecurityPolicy: {\n directives,\n },\n });\n }\n\n /**\n * These are for vite's watch mode so it can accurately\n * connect to the HMR websocket & reconnect on failure\n * or when the server restarts.\n *\n * It only applies in development, and only on GET requests\n * that are part of the admin route.\n */\n if (\n process.env.NODE_ENV === 'development' &&\n ctx.method === 'GET' &&\n ['/admin'].some((str) => ctx.path.startsWith(str))\n ) {\n helmetConfig = merge(helmetConfig, {\n contentSecurityPolicy: {\n directives: {\n 'script-src': [\"'self'\", \"'unsafe-inline'\"],\n 'connect-src': [\"'self'\", 'http:', 'https:', 'ws:'],\n },\n },\n });\n }\n\n return helmet(helmetConfig)(ctx, next);\n };\n"],"names":[],"mappings":";;AAOA,MAAM,WAAmB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,yBAAyB;AAAA,EACzB,2BAA2B;AAAA,EAC3B,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,IACrB,aAAa;AAAA,IACb,YAAY;AAAA,MACV,eAAe,CAAC,UAAU,QAAQ;AAAA,MAClC,WAAW,CAAC,UAAU,SAAS,SAAS,iCAAiC;AAAA,MACzE,aAAa,CAAC,UAAU,SAAS,OAAO;AAAA,MACxC,yBAAyB;AAAA,IAC3B;AAAA,EACF;AAAA,EACA,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,mBAAmB;AAAA,EACrB;AAAA,EACA,YAAY;AAAA,IACV,QAAQ;AAAA,EACV;AACF;AAEa,MAAA,WACX,CAAC,QAAQ,EAAE,aACX,CAAC,KAAK,SAAS;AACT,MAAA,eAAuB,aAAa,UAAU,MAAM;AAElD,QAAA,eAAe,CAAC,gBAAgB;AAEtC,QAAM,aAKF;AAAA,IACF,cAAc,CAAC,UAAU,mBAAmB,kBAAkB;AAAA,IAC9D,WAAW,CAAC,UAAU,SAAS,oBAAoB,WAAW;AAAA,IAC9D,gBAAgB,CAAC;AAAA,IACjB,aAAa,CAAC;AAAA,EAAA;AAIZ,MAAA,OAAO,OAAO,SAAS,GAAG,QAAQ,OAAO,EAAE,WAAW,aAAa;AACrE,UAAM,EAAE,QAAQ,UAAA,IAAc,OAAO,OAAO,SAAS;AACxC,iBAAA,KAAK,UAAU,UAAU,CAAC;AAE5B,eAAA,YAAY,EAAE,KAAK,wBAAwB;AAC3C,eAAA,SAAS,EAAE,KAAK,oDAAoD;AACpE,eAAA,cAAc,EAAE,KAAK,QAAQ;AAC7B,eAAA,cAAc,EAAE,KAAK,kDAAkD;AACvE,eAAA,WAAW,EAAE,KAAK,QAAQ;AAC1B,eAAA,WAAW,EAAE,KAAK,iCAAiC;AAAA,EAChE;AAGA,MAAI,IAAI,WAAW,SAAS,aAAa,KAAK,CAAC,QAAQ,IAAI,KAAK,WAAW,GAAG,CAAC,GAAG;AAChF,mBAAe,MAAM,cAAc;AAAA,MACjC,2BAA2B;AAAA;AAAA,MAC3B,uBAAuB;AAAA,QACrB;AAAA,MACF;AAAA,IAAA,CACD;AAAA,EACH;AAUA,MACE,QAAQ,IAAI,aAAa,iBACzB,IAAI,WAAW,SACf,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,WAAW,GAAG,CAAC,GACjD;AACA,mBAAe,MAAM,cAAc;AAAA,MACjC,uBAAuB;AAAA,QACrB,YAAY;AAAA,UACV,cAAc,CAAC,UAAU,iBAAiB;AAAA,UAC1C,eAAe,CAAC,UAAU,SAAS,UAAU,KAAK;AAAA,QACpD;AAAA,MACF;AAAA,IAAA,CACD;AAAA,EACH;AAEA,SAAO,OAAO,YAAY,EAAE,KAAK,IAAI;AACvC;"}
1
+ {"version":3,"file":"security.mjs","sources":["../../src/middlewares/security.ts"],"sourcesContent":["import { defaultsDeep, mergeWith } from 'lodash/fp';\nimport helmet, { KoaHelmet } from 'koa-helmet';\n\nimport type { Core } from '@strapi/types';\n\nexport type Config = NonNullable<Parameters<KoaHelmet>[0]>;\n\nconst defaults: Config = {\n crossOriginEmbedderPolicy: false,\n crossOriginOpenerPolicy: false,\n crossOriginResourcePolicy: false,\n originAgentCluster: false,\n contentSecurityPolicy: {\n useDefaults: true,\n directives: {\n 'connect-src': [\"'self'\", 'https:'],\n 'img-src': [\"'self'\", 'data:', 'blob:', 'https://market-assets.strapi.io'],\n 'media-src': [\"'self'\", 'data:', 'blob:'],\n upgradeInsecureRequests: null,\n },\n },\n xssFilter: false,\n hsts: {\n maxAge: 31536000,\n includeSubDomains: true,\n },\n frameguard: {\n action: 'sameorigin',\n },\n};\n\nconst mergeConfig = (existingConfig: Config, newConfig: Config) => {\n return mergeWith(\n (obj, src) => (Array.isArray(obj) && Array.isArray(src) ? obj.concat(src) : undefined),\n existingConfig,\n newConfig\n );\n};\n\nexport const security: Core.MiddlewareFactory<Config> =\n (config, { strapi }) =>\n (ctx, next) => {\n let helmetConfig: Config = defaultsDeep(defaults, config);\n\n const specialPaths = ['/documentation'];\n\n const directives: {\n 'script-src': string[];\n 'img-src': string[];\n 'manifest-src': string[];\n 'frame-src': string[];\n } = {\n 'script-src': [\"'self'\", \"'unsafe-inline'\", 'cdn.jsdelivr.net'],\n 'img-src': [\"'self'\", 'data:', 'cdn.jsdelivr.net', 'strapi.io'],\n 'manifest-src': [],\n 'frame-src': [],\n };\n\n // if apollo graphql playground is enabled, add exceptions for it\n if (strapi.plugin('graphql')?.service('utils').playground.isEnabled()) {\n const { config: gqlConfig } = strapi.plugin('graphql');\n specialPaths.push(gqlConfig('endpoint'));\n\n directives['script-src'].push(`https: 'unsafe-inline'`);\n directives['img-src'].push(`'apollo-server-landing-page.cdn.apollographql.com'`);\n directives['manifest-src'].push(`'self'`);\n directives['manifest-src'].push('apollo-server-landing-page.cdn.apollographql.com');\n directives['frame-src'].push(`'self'`);\n directives['frame-src'].push('sandbox.embed.apollographql.com');\n }\n\n // TODO: we shouldn't combine playground exceptions with documentation for all routes, we should first check the path and then return exceptions specific to that\n if (ctx.method === 'GET' && specialPaths.some((str) => ctx.path.startsWith(str))) {\n helmetConfig = mergeConfig(helmetConfig, {\n crossOriginEmbedderPolicy: false, // TODO: only use this for graphql playground\n contentSecurityPolicy: {\n directives,\n },\n });\n }\n\n /**\n * These are for vite's watch mode so it can accurately\n * connect to the HMR websocket & reconnect on failure\n * or when the server restarts.\n *\n * It only applies in development, and only on GET requests\n * that are part of the admin route.\n */\n if (\n ['development', 'test'].includes(process.env.NODE_ENV ?? '') &&\n ctx.method === 'GET' &&\n ['/admin'].some((str) => ctx.path.startsWith(str))\n ) {\n helmetConfig = mergeConfig(helmetConfig, {\n contentSecurityPolicy: {\n directives: {\n 'script-src': [\"'self'\", \"'unsafe-inline'\"],\n 'connect-src': [\"'self'\", 'http:', 'https:', 'ws:'],\n },\n },\n });\n }\n\n return helmet(helmetConfig)(ctx, next);\n };\n"],"names":[],"mappings":";;AAOA,MAAM,WAAmB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,yBAAyB;AAAA,EACzB,2BAA2B;AAAA,EAC3B,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,IACrB,aAAa;AAAA,IACb,YAAY;AAAA,MACV,eAAe,CAAC,UAAU,QAAQ;AAAA,MAClC,WAAW,CAAC,UAAU,SAAS,SAAS,iCAAiC;AAAA,MACzE,aAAa,CAAC,UAAU,SAAS,OAAO;AAAA,MACxC,yBAAyB;AAAA,IAC3B;AAAA,EACF;AAAA,EACA,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,mBAAmB;AAAA,EACrB;AAAA,EACA,YAAY;AAAA,IACV,QAAQ;AAAA,EACV;AACF;AAEA,MAAM,cAAc,CAAC,gBAAwB,cAAsB;AAC1D,SAAA;AAAA,IACL,CAAC,KAAK,QAAS,MAAM,QAAQ,GAAG,KAAK,MAAM,QAAQ,GAAG,IAAI,IAAI,OAAO,GAAG,IAAI;AAAA,IAC5E;AAAA,IACA;AAAA,EAAA;AAEJ;AAEa,MAAA,WACX,CAAC,QAAQ,EAAE,aACX,CAAC,KAAK,SAAS;AACT,MAAA,eAAuB,aAAa,UAAU,MAAM;AAElD,QAAA,eAAe,CAAC,gBAAgB;AAEtC,QAAM,aAKF;AAAA,IACF,cAAc,CAAC,UAAU,mBAAmB,kBAAkB;AAAA,IAC9D,WAAW,CAAC,UAAU,SAAS,oBAAoB,WAAW;AAAA,IAC9D,gBAAgB,CAAC;AAAA,IACjB,aAAa,CAAC;AAAA,EAAA;AAIZ,MAAA,OAAO,OAAO,SAAS,GAAG,QAAQ,OAAO,EAAE,WAAW,aAAa;AACrE,UAAM,EAAE,QAAQ,UAAA,IAAc,OAAO,OAAO,SAAS;AACxC,iBAAA,KAAK,UAAU,UAAU,CAAC;AAE5B,eAAA,YAAY,EAAE,KAAK,wBAAwB;AAC3C,eAAA,SAAS,EAAE,KAAK,oDAAoD;AACpE,eAAA,cAAc,EAAE,KAAK,QAAQ;AAC7B,eAAA,cAAc,EAAE,KAAK,kDAAkD;AACvE,eAAA,WAAW,EAAE,KAAK,QAAQ;AAC1B,eAAA,WAAW,EAAE,KAAK,iCAAiC;AAAA,EAChE;AAGA,MAAI,IAAI,WAAW,SAAS,aAAa,KAAK,CAAC,QAAQ,IAAI,KAAK,WAAW,GAAG,CAAC,GAAG;AAChF,mBAAe,YAAY,cAAc;AAAA,MACvC,2BAA2B;AAAA;AAAA,MAC3B,uBAAuB;AAAA,QACrB;AAAA,MACF;AAAA,IAAA,CACD;AAAA,EACH;AAWE,MAAA,CAAC,eAAe,MAAM,EAAE,SAAS,QAAQ,IAAI,YAAY,EAAE,KAC3D,IAAI,WAAW,SACf,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,WAAW,GAAG,CAAC,GACjD;AACA,mBAAe,YAAY,cAAc;AAAA,MACvC,uBAAuB;AAAA,QACrB,YAAY;AAAA,UACV,cAAc,CAAC,UAAU,iBAAiB;AAAA,UAC1C,eAAe,CAAC,UAAU,SAAS,UAAU,KAAK;AAAA,QACpD;AAAA,MACF;AAAA,IAAA,CACD;AAAA,EACH;AAEA,SAAO,OAAO,YAAY,EAAE,KAAK,IAAI;AACvC;"}
@@ -0,0 +1,30 @@
1
+ import type { Database, Migration } from '@strapi/database';
2
+ type DocumentVersion = {
3
+ documentId: string;
4
+ locale: string;
5
+ };
6
+ type Knex = Parameters<Migration['up']>[0];
7
+ /**
8
+ * Load a batch of versions to discard.
9
+ *
10
+ * Versions with only a draft version will be ignored.
11
+ * Only versions with a published version (which always have a draft version) will be discarded.
12
+ */
13
+ export declare function getBatchToDiscard({ db, trx, uid, batchSize, }: {
14
+ db: Database;
15
+ trx: Knex;
16
+ uid: string;
17
+ batchSize?: number;
18
+ }): AsyncGenerator<DocumentVersion[], void, unknown>;
19
+ /**
20
+ * On V4 there was no concept of document, and an entry could be in a draft or published state.
21
+ * But not both at the same time.
22
+ *
23
+ * On V5 we introduced the concept of document, and an entry can be in a draft or published state,
24
+ * with the requirement that a document must always have a draft.
25
+ *
26
+ * This migration creates the document draft counterpart for all the entries that were in a published state.
27
+ */
28
+ export declare const discardDocumentDrafts: Migration;
29
+ export {};
30
+ //# sourceMappingURL=5.0.0-discard-drafts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"5.0.0-discard-drafts.d.ts","sourceRoot":"","sources":["../../../src/migrations/database/5.0.0-discard-drafts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG5D,KAAK,eAAe,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAC9D,KAAK,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3C;;;;;GAKG;AACH,wBAAuB,iBAAiB,CAAC,EACvC,EAAE,EACF,GAAG,EACH,GAAG,EACH,SAAgB,GACjB,EAAE;IACD,EAAE,EAAE,QAAQ,CAAC;IACb,GAAG,EAAE,IAAI,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,oDAuBA;AAiCD;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,EAAE,SASnC,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const strapiUtils = require("@strapi/utils");
4
+ async function* getBatchToDiscard({
5
+ db,
6
+ trx,
7
+ uid,
8
+ batchSize = 1e3
9
+ }) {
10
+ let offset = 0;
11
+ let hasMore = true;
12
+ while (hasMore) {
13
+ const batch = await db.queryBuilder(uid).select(["id", "documentId", "locale"]).where({ publishedAt: { $ne: null } }).limit(batchSize).offset(offset).orderBy("id").transacting(trx).execute();
14
+ if (batch.length < batchSize) {
15
+ hasMore = false;
16
+ }
17
+ offset += batchSize;
18
+ yield batch;
19
+ }
20
+ }
21
+ const migrateUp = async (trx, db) => {
22
+ for (const meta of db.metadata.values()) {
23
+ const hasTable = await trx.schema.hasTable(meta.tableName);
24
+ if (!hasTable) {
25
+ continue;
26
+ }
27
+ const uid = meta.uid;
28
+ const model = strapi.getModel(uid);
29
+ const hasDP = strapiUtils.contentTypes.hasDraftAndPublish(model);
30
+ if (!hasDP) {
31
+ continue;
32
+ }
33
+ const discardDraft = async (entry) => strapi.documents(uid).discardDraft({ documentId: entry.documentId, locale: entry.locale });
34
+ for await (const batch of getBatchToDiscard({ db, trx, uid: meta.uid })) {
35
+ await strapiUtils.async.map(batch, discardDraft, { concurrency: 10 });
36
+ }
37
+ }
38
+ };
39
+ const discardDocumentDrafts = {
40
+ name: "core::5.0.0-discard-drafts",
41
+ async up(trx, db) {
42
+ await migrateUp(trx, db);
43
+ },
44
+ async down() {
45
+ throw new Error("not implemented");
46
+ }
47
+ };
48
+ exports.discardDocumentDrafts = discardDocumentDrafts;
49
+ exports.getBatchToDiscard = getBatchToDiscard;
50
+ //# sourceMappingURL=5.0.0-discard-drafts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"5.0.0-discard-drafts.js","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":["contentTypes","async"],"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,QAAQA,YAAAA,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,YAAMC,YAAAA,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;;;"}
@@ -0,0 +1,50 @@
1
+ import { contentTypes, async } from "@strapi/utils";
2
+ async function* getBatchToDiscard({
3
+ db,
4
+ trx,
5
+ uid,
6
+ batchSize = 1e3
7
+ }) {
8
+ let offset = 0;
9
+ let hasMore = true;
10
+ while (hasMore) {
11
+ const batch = await db.queryBuilder(uid).select(["id", "documentId", "locale"]).where({ publishedAt: { $ne: null } }).limit(batchSize).offset(offset).orderBy("id").transacting(trx).execute();
12
+ if (batch.length < batchSize) {
13
+ hasMore = false;
14
+ }
15
+ offset += batchSize;
16
+ yield batch;
17
+ }
18
+ }
19
+ const migrateUp = async (trx, db) => {
20
+ for (const meta of db.metadata.values()) {
21
+ const hasTable = await trx.schema.hasTable(meta.tableName);
22
+ if (!hasTable) {
23
+ continue;
24
+ }
25
+ const uid = meta.uid;
26
+ const model = strapi.getModel(uid);
27
+ const hasDP = contentTypes.hasDraftAndPublish(model);
28
+ if (!hasDP) {
29
+ continue;
30
+ }
31
+ const discardDraft = async (entry) => strapi.documents(uid).discardDraft({ documentId: entry.documentId, locale: entry.locale });
32
+ for await (const batch of getBatchToDiscard({ db, trx, uid: meta.uid })) {
33
+ await async.map(batch, discardDraft, { concurrency: 10 });
34
+ }
35
+ }
36
+ };
37
+ const discardDocumentDrafts = {
38
+ name: "core::5.0.0-discard-drafts",
39
+ async up(trx, db) {
40
+ await migrateUp(trx, db);
41
+ },
42
+ async down() {
43
+ throw new Error("not implemented");
44
+ }
45
+ };
46
+ export {
47
+ discardDocumentDrafts,
48
+ getBatchToDiscard
49
+ };
50
+ //# sourceMappingURL=5.0.0-discard-drafts.mjs.map
@@ -0,0 +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 +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;AAEvC,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,kBAkE5E,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,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,43 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const strapiUtils = require("@strapi/utils");
4
+ const _5_0_0DiscardDrafts = require("./database/5.0.0-discard-drafts.js");
4
5
  const enableDraftAndPublish = async ({ oldContentTypes, contentTypes }) => {
5
6
  if (!oldContentTypes) {
6
7
  return;
7
8
  }
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 (!strapiUtils.contentTypes.hasDraftAndPublish(oldContentType) && strapiUtils.contentTypes.hasDraftAndPublish(contentType)) {
15
- const metadata = strapi.db.metadata.get(uid);
16
- const attributes = Object.values(metadata.attributes).reduce((acc, attribute) => {
17
- if (["id"].includes(attribute.columnName)) {
18
- return acc;
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 });
19
20
  }
20
- if (strapiUtils.contentTypes.isScalarAttribute(attribute)) {
21
- acc.push(attribute.columnName);
22
- }
23
- return acc;
24
- }, []);
25
- const qb = strapi.db?.getConnection();
26
- await qb.into(qb.raw(`${metadata.tableName} (${attributes.join(", ")})`)).insert((subQb) => {
27
- subQb.select(
28
- ...attributes.map((att) => {
29
- if (att === "published_at") {
30
- return qb.raw("NULL as published_at");
31
- }
32
- if (att === "updated_at") {
33
- return qb.raw(`? as updated_at`, [/* @__PURE__ */ new Date()]);
34
- }
35
- return att;
36
- })
37
- ).from(metadata.tableName).whereNotNull("published_at");
38
- });
21
+ }
39
22
  }
40
- }
23
+ });
41
24
  };
42
25
  const disableDraftAndPublish = async ({ oldContentTypes, contentTypes }) => {
43
26
  if (!oldContentTypes) {
@@ -1 +1 @@
1
- {"version":3,"file":"draft-publish.js","sources":["../../src/migrations/draft-publish.ts"],"sourcesContent":["import { contentTypes as contentTypesUtils } from '@strapi/utils';\nimport { Schema } from '@strapi/types';\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\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 metadata = strapi.db.metadata.get(uid);\n\n // Extract all scalar attributes to use in the insert query\n const attributes = Object.values(metadata.attributes).reduce((acc, attribute: any) => {\n if (['id'].includes(attribute.columnName)) {\n return acc;\n }\n\n if (contentTypesUtils.isScalarAttribute(attribute)) {\n acc.push(attribute.columnName);\n }\n\n return acc;\n }, [] as string[]);\n\n /**\n * INSERT INTO tableName (columnName1, columnName2, columnName3, ...)\n * SELECT columnName1, columnName2, columnName3, ...\n * FROM tableName\n */\n const qb = strapi.db?.getConnection();\n await qb\n // INSERT INTO tableName (columnName1, columnName2, columnName3, ...)\n .into(qb.raw(`${metadata.tableName} (${attributes.join(', ')})`))\n .insert((subQb: typeof qb) => {\n // SELECT columnName1, columnName2, columnName3, ...\n subQb\n .select(\n ...attributes.map((att) => {\n // Override 'publishedAt' and 'updatedAt' attributes\n if (att === 'published_at') {\n return qb.raw('NULL as published_at');\n }\n\n if (att === 'updated_at') {\n return qb.raw(`? as updated_at`, [new Date()]);\n }\n\n return att;\n })\n )\n .from(metadata.tableName)\n .whereNotNull('published_at');\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"],"mappings":";;;AAgBA,MAAM,wBAAwB,OAAO,EAAE,iBAAiB,mBAA0B;AAChF,MAAI,CAAC,iBAAiB;AACpB;AAAA,EACF;AAIA,aAAW,OAAO,cAAc;AAC1B,QAAA,CAAC,gBAAgB,GAAG,GAAG;AACzB;AAAA,IACF;AAEM,UAAA,iBAAiB,gBAAgB,GAAG;AACpC,UAAA,cAAc,aAAa,GAAG;AAIlC,QAAA,CAACA,yBAAkB,mBAAmB,cAAc,KACpDA,yBAAkB,mBAAmB,WAAW,GAChD;AACA,YAAM,WAAW,OAAO,GAAG,SAAS,IAAI,GAAG;AAGrC,YAAA,aAAa,OAAO,OAAO,SAAS,UAAU,EAAE,OAAO,CAAC,KAAK,cAAmB;AACpF,YAAI,CAAC,IAAI,EAAE,SAAS,UAAU,UAAU,GAAG;AAClC,iBAAA;AAAA,QACT;AAEI,YAAAA,YAAA,aAAkB,kBAAkB,SAAS,GAAG;AAC9C,cAAA,KAAK,UAAU,UAAU;AAAA,QAC/B;AAEO,eAAA;AAAA,MACT,GAAG,CAAc,CAAA;AAOX,YAAA,KAAK,OAAO,IAAI,cAAc;AACpC,YAAM,GAEH,KAAK,GAAG,IAAI,GAAG,SAAS,SAAS,KAAK,WAAW,KAAK,IAAI,CAAC,GAAG,CAAC,EAC/D,OAAO,CAAC,UAAqB;AAGzB,cAAA;AAAA,UACC,GAAG,WAAW,IAAI,CAAC,QAAQ;AAEzB,gBAAI,QAAQ,gBAAgB;AACnB,qBAAA,GAAG,IAAI,sBAAsB;AAAA,YACtC;AAEA,gBAAI,QAAQ,cAAc;AACxB,qBAAO,GAAG,IAAI,mBAAmB,CAAK,oBAAA,KAAM,CAAA,CAAC;AAAA,YAC/C;AAEO,mBAAA;AAAA,UAAA,CACR;AAAA,QAAA,EAEF,KAAK,SAAS,SAAS,EACvB,aAAa,cAAc;AAAA,MAAA,CAC/B;AAAA,IACL;AAAA,EACF;AACF;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,QAAAA,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 { 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,41 +1,24 @@
1
- import { contentTypes } from "@strapi/utils";
1
+ import { contentTypes, async } from "@strapi/utils";
2
+ import { getBatchToDiscard } from "./database/5.0.0-discard-drafts.mjs";
2
3
  const enableDraftAndPublish = async ({ oldContentTypes, contentTypes: contentTypes$1 }) => {
3
4
  if (!oldContentTypes) {
4
5
  return;
5
6
  }
6
- for (const uid in contentTypes$1) {
7
- if (!oldContentTypes[uid]) {
8
- continue;
9
- }
10
- const oldContentType = oldContentTypes[uid];
11
- const contentType = contentTypes$1[uid];
12
- if (!contentTypes.hasDraftAndPublish(oldContentType) && contentTypes.hasDraftAndPublish(contentType)) {
13
- const metadata = strapi.db.metadata.get(uid);
14
- const attributes = Object.values(metadata.attributes).reduce((acc, attribute) => {
15
- if (["id"].includes(attribute.columnName)) {
16
- return acc;
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 });
17
18
  }
18
- if (contentTypes.isScalarAttribute(attribute)) {
19
- acc.push(attribute.columnName);
20
- }
21
- return acc;
22
- }, []);
23
- const qb = strapi.db?.getConnection();
24
- await qb.into(qb.raw(`${metadata.tableName} (${attributes.join(", ")})`)).insert((subQb) => {
25
- subQb.select(
26
- ...attributes.map((att) => {
27
- if (att === "published_at") {
28
- return qb.raw("NULL as published_at");
29
- }
30
- if (att === "updated_at") {
31
- return qb.raw(`? as updated_at`, [/* @__PURE__ */ new Date()]);
32
- }
33
- return att;
34
- })
35
- ).from(metadata.tableName).whereNotNull("published_at");
36
- });
19
+ }
37
20
  }
38
- }
21
+ });
39
22
  };
40
23
  const disableDraftAndPublish = async ({ oldContentTypes, contentTypes: contentTypes$1 }) => {
41
24
  if (!oldContentTypes) {
@@ -1 +1 @@
1
- {"version":3,"file":"draft-publish.mjs","sources":["../../src/migrations/draft-publish.ts"],"sourcesContent":["import { contentTypes as contentTypesUtils } from '@strapi/utils';\nimport { Schema } from '@strapi/types';\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\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 metadata = strapi.db.metadata.get(uid);\n\n // Extract all scalar attributes to use in the insert query\n const attributes = Object.values(metadata.attributes).reduce((acc, attribute: any) => {\n if (['id'].includes(attribute.columnName)) {\n return acc;\n }\n\n if (contentTypesUtils.isScalarAttribute(attribute)) {\n acc.push(attribute.columnName);\n }\n\n return acc;\n }, [] as string[]);\n\n /**\n * INSERT INTO tableName (columnName1, columnName2, columnName3, ...)\n * SELECT columnName1, columnName2, columnName3, ...\n * FROM tableName\n */\n const qb = strapi.db?.getConnection();\n await qb\n // INSERT INTO tableName (columnName1, columnName2, columnName3, ...)\n .into(qb.raw(`${metadata.tableName} (${attributes.join(', ')})`))\n .insert((subQb: typeof qb) => {\n // SELECT columnName1, columnName2, columnName3, ...\n subQb\n .select(\n ...attributes.map((att) => {\n // Override 'publishedAt' and 'updatedAt' attributes\n if (att === 'published_at') {\n return qb.raw('NULL as published_at');\n }\n\n if (att === 'updated_at') {\n return qb.raw(`? as updated_at`, [new Date()]);\n }\n\n return att;\n })\n )\n .from(metadata.tableName)\n .whereNotNull('published_at');\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":";AAgBA,MAAM,wBAAwB,OAAO,EAAE,iBAAiBA,cAAAA,qBAA0B;AAChF,MAAI,CAAC,iBAAiB;AACpB;AAAA,EACF;AAIA,aAAW,OAAOA,gBAAc;AAC1B,QAAA,CAAC,gBAAgB,GAAG,GAAG;AACzB;AAAA,IACF;AAEM,UAAA,iBAAiB,gBAAgB,GAAG;AACpC,UAAA,cAAcA,eAAa,GAAG;AAIlC,QAAA,CAACC,aAAkB,mBAAmB,cAAc,KACpDA,aAAkB,mBAAmB,WAAW,GAChD;AACA,YAAM,WAAW,OAAO,GAAG,SAAS,IAAI,GAAG;AAGrC,YAAA,aAAa,OAAO,OAAO,SAAS,UAAU,EAAE,OAAO,CAAC,KAAK,cAAmB;AACpF,YAAI,CAAC,IAAI,EAAE,SAAS,UAAU,UAAU,GAAG;AAClC,iBAAA;AAAA,QACT;AAEI,YAAAA,aAAkB,kBAAkB,SAAS,GAAG;AAC9C,cAAA,KAAK,UAAU,UAAU;AAAA,QAC/B;AAEO,eAAA;AAAA,MACT,GAAG,CAAc,CAAA;AAOX,YAAA,KAAK,OAAO,IAAI,cAAc;AACpC,YAAM,GAEH,KAAK,GAAG,IAAI,GAAG,SAAS,SAAS,KAAK,WAAW,KAAK,IAAI,CAAC,GAAG,CAAC,EAC/D,OAAO,CAAC,UAAqB;AAGzB,cAAA;AAAA,UACC,GAAG,WAAW,IAAI,CAAC,QAAQ;AAEzB,gBAAI,QAAQ,gBAAgB;AACnB,qBAAA,GAAG,IAAI,sBAAsB;AAAA,YACtC;AAEA,gBAAI,QAAQ,cAAc;AACxB,qBAAO,GAAG,IAAI,mBAAmB,CAAK,oBAAA,KAAM,CAAA,CAAC;AAAA,YAC/C;AAEO,mBAAA;AAAA,UAAA,CACR;AAAA,QAAA,EAEF,KAAK,SAAS,SAAS,EACvB,aAAa,cAAc;AAAA,MAAA,CAC/B;AAAA,IACL;AAAA,EACF;AACF;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 { 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;"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("./provider").Provider;
2
+ export default _default;
3
+ //# sourceMappingURL=admin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/providers/admin.ts"],"names":[],"mappings":";AAGA,wBAkBG"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ const provider = require("./provider.js");
3
+ const admin$1 = require("../loaders/admin.js");
4
+ const admin = provider.defineProvider({
5
+ init(strapi) {
6
+ strapi.add("admin", () => require("@strapi/admin/strapi-server"));
7
+ },
8
+ async register(strapi) {
9
+ await admin$1(strapi);
10
+ await strapi.get("admin")?.register({ strapi });
11
+ },
12
+ async bootstrap(strapi) {
13
+ await strapi.get("admin")?.bootstrap({ strapi });
14
+ },
15
+ async destroy(strapi) {
16
+ await strapi.get("admin")?.destroy({ strapi });
17
+ }
18
+ });
19
+ module.exports = admin;
20
+ //# sourceMappingURL=admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.js","sources":["../../src/providers/admin.ts"],"sourcesContent":["import { defineProvider } from './provider';\nimport loadAdmin from '../loaders/admin';\n\nexport default defineProvider({\n init(strapi) {\n strapi.add('admin', () => require('@strapi/admin/strapi-server'));\n },\n\n async register(strapi) {\n await loadAdmin(strapi);\n\n await strapi.get('admin')?.register({ strapi });\n },\n\n async bootstrap(strapi) {\n await strapi.get('admin')?.bootstrap({ strapi });\n },\n\n async destroy(strapi) {\n await strapi.get('admin')?.destroy({ strapi });\n },\n});\n"],"names":["defineProvider","loadAdmin"],"mappings":";;;AAGA,MAAA,QAAeA,wBAAe;AAAA,EAC5B,KAAK,QAAQ;AACX,WAAO,IAAI,SAAS,MAAM,QAAQ,6BAA6B,CAAC;AAAA,EAClE;AAAA,EAEA,MAAM,SAAS,QAAQ;AACrB,UAAMC,QAAU,MAAM;AAEtB,UAAM,OAAO,IAAI,OAAO,GAAG,SAAS,EAAE,QAAQ;AAAA,EAChD;AAAA,EAEA,MAAM,UAAU,QAAQ;AACtB,UAAM,OAAO,IAAI,OAAO,GAAG,UAAU,EAAE,QAAQ;AAAA,EACjD;AAAA,EAEA,MAAM,QAAQ,QAAQ;AACpB,UAAM,OAAO,IAAI,OAAO,GAAG,QAAQ,EAAE,QAAQ;AAAA,EAC/C;AACF,CAAC;;"}
@@ -0,0 +1,21 @@
1
+ import { defineProvider } from "./provider.mjs";
2
+ import loadAdmin from "../loaders/admin.mjs";
3
+ const admin = defineProvider({
4
+ init(strapi) {
5
+ strapi.add("admin", () => require("@strapi/admin/strapi-server"));
6
+ },
7
+ async register(strapi) {
8
+ await loadAdmin(strapi);
9
+ await strapi.get("admin")?.register({ strapi });
10
+ },
11
+ async bootstrap(strapi) {
12
+ await strapi.get("admin")?.bootstrap({ strapi });
13
+ },
14
+ async destroy(strapi) {
15
+ await strapi.get("admin")?.destroy({ strapi });
16
+ }
17
+ });
18
+ export {
19
+ admin as default
20
+ };
21
+ //# sourceMappingURL=admin.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.mjs","sources":["../../src/providers/admin.ts"],"sourcesContent":["import { defineProvider } from './provider';\nimport loadAdmin from '../loaders/admin';\n\nexport default defineProvider({\n init(strapi) {\n strapi.add('admin', () => require('@strapi/admin/strapi-server'));\n },\n\n async register(strapi) {\n await loadAdmin(strapi);\n\n await strapi.get('admin')?.register({ strapi });\n },\n\n async bootstrap(strapi) {\n await strapi.get('admin')?.bootstrap({ strapi });\n },\n\n async destroy(strapi) {\n await strapi.get('admin')?.destroy({ strapi });\n },\n});\n"],"names":[],"mappings":";;AAGA,MAAA,QAAe,eAAe;AAAA,EAC5B,KAAK,QAAQ;AACX,WAAO,IAAI,SAAS,MAAM,QAAQ,6BAA6B,CAAC;AAAA,EAClE;AAAA,EAEA,MAAM,SAAS,QAAQ;AACrB,UAAM,UAAU,MAAM;AAEtB,UAAM,OAAO,IAAI,OAAO,GAAG,SAAS,EAAE,QAAQ;AAAA,EAChD;AAAA,EAEA,MAAM,UAAU,QAAQ;AACtB,UAAM,OAAO,IAAI,OAAO,GAAG,UAAU,EAAE,QAAQ;AAAA,EACjD;AAAA,EAEA,MAAM,QAAQ,QAAQ;AACpB,UAAM,OAAO,IAAI,OAAO,GAAG,QAAQ,EAAE,QAAQ;AAAA,EAC/C;AACF,CAAC;"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("./provider").Provider;
2
+ export default _default;
3
+ //# sourceMappingURL=coreStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coreStore.d.ts","sourceRoot":"","sources":["../../src/providers/coreStore.ts"],"names":[],"mappings":";AAGA,wBAKG"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ const provider = require("./provider.js");
3
+ const coreStore$1 = require("../services/core-store.js");
4
+ const coreStore = provider.defineProvider({
5
+ init(strapi) {
6
+ strapi.get("models").add(coreStore$1.coreStoreModel);
7
+ strapi.add("coreStore", () => coreStore$1.createCoreStore({ db: strapi.db }));
8
+ }
9
+ });
10
+ module.exports = coreStore;
11
+ //# sourceMappingURL=coreStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coreStore.js","sources":["../../src/providers/coreStore.ts"],"sourcesContent":["import { defineProvider } from './provider';\nimport { createCoreStore, coreStoreModel } from '../services/core-store';\n\nexport default defineProvider({\n init(strapi) {\n strapi.get('models').add(coreStoreModel);\n strapi.add('coreStore', () => createCoreStore({ db: strapi.db }));\n },\n});\n"],"names":["defineProvider","coreStoreModel","createCoreStore"],"mappings":";;;AAGA,MAAA,YAAeA,wBAAe;AAAA,EAC5B,KAAK,QAAQ;AACX,WAAO,IAAI,QAAQ,EAAE,IAAIC,YAAc,cAAA;AAChC,WAAA,IAAI,aAAa,MAAMC,YAAA,gBAAgB,EAAE,IAAI,OAAO,GAAI,CAAA,CAAC;AAAA,EAClE;AACF,CAAC;;"}
@@ -0,0 +1,12 @@
1
+ import { defineProvider } from "./provider.mjs";
2
+ import { coreStoreModel, createCoreStore } from "../services/core-store.mjs";
3
+ const coreStore = defineProvider({
4
+ init(strapi) {
5
+ strapi.get("models").add(coreStoreModel);
6
+ strapi.add("coreStore", () => createCoreStore({ db: strapi.db }));
7
+ }
8
+ });
9
+ export {
10
+ coreStore as default
11
+ };
12
+ //# sourceMappingURL=coreStore.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coreStore.mjs","sources":["../../src/providers/coreStore.ts"],"sourcesContent":["import { defineProvider } from './provider';\nimport { createCoreStore, coreStoreModel } from '../services/core-store';\n\nexport default defineProvider({\n init(strapi) {\n strapi.get('models').add(coreStoreModel);\n strapi.add('coreStore', () => createCoreStore({ db: strapi.db }));\n },\n});\n"],"names":[],"mappings":";;AAGA,MAAA,YAAe,eAAe;AAAA,EAC5B,KAAK,QAAQ;AACX,WAAO,IAAI,QAAQ,EAAE,IAAI,cAAc;AAChC,WAAA,IAAI,aAAa,MAAM,gBAAgB,EAAE,IAAI,OAAO,GAAI,CAAA,CAAC;AAAA,EAClE;AACF,CAAC;"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("./provider").Provider;
2
+ export default _default;
3
+ //# sourceMappingURL=cron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/providers/cron.ts"],"names":[],"mappings":";AAGA,wBAeG"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ const provider = require("./provider.js");
3
+ const cron$1 = require("../services/cron.js");
4
+ const cron = provider.defineProvider({
5
+ init(strapi) {
6
+ strapi.add("cron", () => cron$1());
7
+ },
8
+ async bootstrap(strapi) {
9
+ if (strapi.config.get("server.cron.enabled", true)) {
10
+ const cronTasks = strapi.config.get("server.cron.tasks", {});
11
+ strapi.get("cron").add(cronTasks);
12
+ }
13
+ strapi.get("cron").start();
14
+ },
15
+ async destroy(strapi) {
16
+ strapi.get("cron").destroy();
17
+ }
18
+ });
19
+ module.exports = cron;
20
+ //# sourceMappingURL=cron.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron.js","sources":["../../src/providers/cron.ts"],"sourcesContent":["import { defineProvider } from './provider';\nimport createCronService from '../services/cron';\n\nexport default defineProvider({\n init(strapi) {\n strapi.add('cron', () => createCronService());\n },\n async bootstrap(strapi) {\n if (strapi.config.get('server.cron.enabled', true)) {\n const cronTasks = strapi.config.get('server.cron.tasks', {});\n strapi.get('cron').add(cronTasks);\n }\n\n strapi.get('cron').start();\n },\n async destroy(strapi) {\n strapi.get('cron').destroy();\n },\n});\n"],"names":["defineProvider","createCronService"],"mappings":";;;AAGA,MAAA,OAAeA,wBAAe;AAAA,EAC5B,KAAK,QAAQ;AACX,WAAO,IAAI,QAAQ,MAAMC,OAAmB,CAAA;AAAA,EAC9C;AAAA,EACA,MAAM,UAAU,QAAQ;AACtB,QAAI,OAAO,OAAO,IAAI,uBAAuB,IAAI,GAAG;AAClD,YAAM,YAAY,OAAO,OAAO,IAAI,qBAAqB,CAAA,CAAE;AAC3D,aAAO,IAAI,MAAM,EAAE,IAAI,SAAS;AAAA,IAClC;AAEO,WAAA,IAAI,MAAM,EAAE,MAAM;AAAA,EAC3B;AAAA,EACA,MAAM,QAAQ,QAAQ;AACb,WAAA,IAAI,MAAM,EAAE,QAAQ;AAAA,EAC7B;AACF,CAAC;;"}
@@ -0,0 +1,21 @@
1
+ import { defineProvider } from "./provider.mjs";
2
+ import createCronService from "../services/cron.mjs";
3
+ const cron = defineProvider({
4
+ init(strapi) {
5
+ strapi.add("cron", () => createCronService());
6
+ },
7
+ async bootstrap(strapi) {
8
+ if (strapi.config.get("server.cron.enabled", true)) {
9
+ const cronTasks = strapi.config.get("server.cron.tasks", {});
10
+ strapi.get("cron").add(cronTasks);
11
+ }
12
+ strapi.get("cron").start();
13
+ },
14
+ async destroy(strapi) {
15
+ strapi.get("cron").destroy();
16
+ }
17
+ });
18
+ export {
19
+ cron as default
20
+ };
21
+ //# sourceMappingURL=cron.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron.mjs","sources":["../../src/providers/cron.ts"],"sourcesContent":["import { defineProvider } from './provider';\nimport createCronService from '../services/cron';\n\nexport default defineProvider({\n init(strapi) {\n strapi.add('cron', () => createCronService());\n },\n async bootstrap(strapi) {\n if (strapi.config.get('server.cron.enabled', true)) {\n const cronTasks = strapi.config.get('server.cron.tasks', {});\n strapi.get('cron').add(cronTasks);\n }\n\n strapi.get('cron').start();\n },\n async destroy(strapi) {\n strapi.get('cron').destroy();\n },\n});\n"],"names":[],"mappings":";;AAGA,MAAA,OAAe,eAAe;AAAA,EAC5B,KAAK,QAAQ;AACX,WAAO,IAAI,QAAQ,MAAM,kBAAmB,CAAA;AAAA,EAC9C;AAAA,EACA,MAAM,UAAU,QAAQ;AACtB,QAAI,OAAO,OAAO,IAAI,uBAAuB,IAAI,GAAG;AAClD,YAAM,YAAY,OAAO,OAAO,IAAI,qBAAqB,CAAA,CAAE;AAC3D,aAAO,IAAI,MAAM,EAAE,IAAI,SAAS;AAAA,IAClC;AAEO,WAAA,IAAI,MAAM,EAAE,MAAM;AAAA,EAC3B;AAAA,EACA,MAAM,QAAQ,QAAQ;AACb,WAAA,IAAI,MAAM,EAAE,QAAQ;AAAA,EAC7B;AACF,CAAC;"}