@strapi/core 0.0.0-experimental.d23c1d5b0e45dd06ef09977f526c85468be05403 → 0.0.0-experimental.d325780feab1caf1b9e4423588eb1cc73b74c376

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 (521) hide show
  1. package/LICENSE +18 -3
  2. package/dist/Strapi.d.ts +3 -1
  3. package/dist/Strapi.d.ts.map +1 -1
  4. package/dist/Strapi.js +71 -21
  5. package/dist/Strapi.js.map +1 -1
  6. package/dist/Strapi.mjs +50 -19
  7. package/dist/Strapi.mjs.map +1 -1
  8. package/dist/compile.js.map +1 -1
  9. package/dist/compile.mjs.map +1 -1
  10. package/dist/configuration/config-loader.js +1 -2
  11. package/dist/configuration/config-loader.js.map +1 -1
  12. package/dist/configuration/config-loader.mjs +1 -2
  13. package/dist/configuration/config-loader.mjs.map +1 -1
  14. package/dist/configuration/get-dirs.js +2 -2
  15. package/dist/configuration/get-dirs.js.map +1 -1
  16. package/dist/configuration/get-dirs.mjs.map +1 -1
  17. package/dist/configuration/index.d.ts.map +1 -1
  18. package/dist/configuration/index.js +10 -5
  19. package/dist/configuration/index.js.map +1 -1
  20. package/dist/configuration/index.mjs +8 -3
  21. package/dist/configuration/index.mjs.map +1 -1
  22. package/dist/configuration/urls.js.map +1 -1
  23. package/dist/configuration/urls.mjs.map +1 -1
  24. package/dist/container.js.map +1 -1
  25. package/dist/container.mjs.map +1 -1
  26. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  27. package/dist/core-api/controller/collection-type.js +5 -3
  28. package/dist/core-api/controller/collection-type.js.map +1 -1
  29. package/dist/core-api/controller/collection-type.mjs +2 -0
  30. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  31. package/dist/core-api/controller/index.js +2 -2
  32. package/dist/core-api/controller/index.js.map +1 -1
  33. package/dist/core-api/controller/index.mjs.map +1 -1
  34. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  35. package/dist/core-api/controller/single-type.js +3 -2
  36. package/dist/core-api/controller/single-type.js.map +1 -1
  37. package/dist/core-api/controller/single-type.mjs +1 -0
  38. package/dist/core-api/controller/single-type.mjs.map +1 -1
  39. package/dist/core-api/controller/transform.js +8 -8
  40. package/dist/core-api/controller/transform.js.map +1 -1
  41. package/dist/core-api/controller/transform.mjs.map +1 -1
  42. package/dist/core-api/routes/index.js.map +1 -1
  43. package/dist/core-api/routes/index.mjs.map +1 -1
  44. package/dist/core-api/service/collection-type.d.ts +3 -9
  45. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  46. package/dist/core-api/service/collection-type.js +5 -3
  47. package/dist/core-api/service/collection-type.js.map +1 -1
  48. package/dist/core-api/service/collection-type.mjs +6 -4
  49. package/dist/core-api/service/collection-type.mjs.map +1 -1
  50. package/dist/core-api/service/core-service.js.map +1 -1
  51. package/dist/core-api/service/core-service.mjs.map +1 -1
  52. package/dist/core-api/service/index.js.map +1 -1
  53. package/dist/core-api/service/index.mjs.map +1 -1
  54. package/dist/core-api/service/pagination.d.ts +4 -11
  55. package/dist/core-api/service/pagination.d.ts.map +1 -1
  56. package/dist/core-api/service/pagination.js +18 -44
  57. package/dist/core-api/service/pagination.js.map +1 -1
  58. package/dist/core-api/service/pagination.mjs +16 -42
  59. package/dist/core-api/service/pagination.mjs.map +1 -1
  60. package/dist/core-api/service/single-type.d.ts.map +1 -1
  61. package/dist/core-api/service/single-type.js +3 -3
  62. package/dist/core-api/service/single-type.js.map +1 -1
  63. package/dist/core-api/service/single-type.mjs +3 -3
  64. package/dist/core-api/service/single-type.mjs.map +1 -1
  65. package/dist/domain/content-type/index.js +4 -4
  66. package/dist/domain/content-type/index.js.map +1 -1
  67. package/dist/domain/content-type/index.mjs.map +1 -1
  68. package/dist/domain/content-type/validator.js.map +1 -1
  69. package/dist/domain/content-type/validator.mjs.map +1 -1
  70. package/dist/domain/module/index.js.map +1 -1
  71. package/dist/domain/module/index.mjs.map +1 -1
  72. package/dist/domain/module/validation.js.map +1 -1
  73. package/dist/domain/module/validation.mjs.map +1 -1
  74. package/dist/ee/index.d.ts.map +1 -1
  75. package/dist/ee/index.js +9 -4
  76. package/dist/ee/index.js.map +1 -1
  77. package/dist/ee/index.mjs +6 -1
  78. package/dist/ee/index.mjs.map +1 -1
  79. package/dist/ee/license.js.map +1 -1
  80. package/dist/ee/license.mjs.map +1 -1
  81. package/dist/factories.js +4 -4
  82. package/dist/factories.js.map +1 -1
  83. package/dist/factories.mjs.map +1 -1
  84. package/dist/index.d.ts +14 -0
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js.map +1 -1
  87. package/dist/index.mjs.map +1 -1
  88. package/dist/loaders/admin.js.map +1 -1
  89. package/dist/loaders/admin.mjs.map +1 -1
  90. package/dist/loaders/apis.d.ts.map +1 -1
  91. package/dist/loaders/apis.js +12 -12
  92. package/dist/loaders/apis.js.map +1 -1
  93. package/dist/loaders/apis.mjs +10 -10
  94. package/dist/loaders/apis.mjs.map +1 -1
  95. package/dist/loaders/components.js.map +1 -1
  96. package/dist/loaders/components.mjs.map +1 -1
  97. package/dist/loaders/middlewares.js.map +1 -1
  98. package/dist/loaders/middlewares.mjs.map +1 -1
  99. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  100. package/dist/loaders/plugins/get-enabled-plugins.js +45 -17
  101. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  102. package/dist/loaders/plugins/get-enabled-plugins.mjs +15 -9
  103. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  104. package/dist/loaders/plugins/get-user-plugins-config.js +2 -2
  105. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  106. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  107. package/dist/loaders/plugins/index.d.ts.map +1 -1
  108. package/dist/loaders/plugins/index.js +33 -7
  109. package/dist/loaders/plugins/index.js.map +1 -1
  110. package/dist/loaders/plugins/index.mjs +9 -1
  111. package/dist/loaders/plugins/index.mjs.map +1 -1
  112. package/dist/loaders/policies.js.map +1 -1
  113. package/dist/loaders/policies.mjs.map +1 -1
  114. package/dist/loaders/sanitizers.js.map +1 -1
  115. package/dist/loaders/sanitizers.mjs.map +1 -1
  116. package/dist/loaders/src-index.js.map +1 -1
  117. package/dist/loaders/src-index.mjs.map +1 -1
  118. package/dist/loaders/validators.js.map +1 -1
  119. package/dist/loaders/validators.mjs.map +1 -1
  120. package/dist/middlewares/body.js +2 -2
  121. package/dist/middlewares/body.js.map +1 -1
  122. package/dist/middlewares/body.mjs.map +1 -1
  123. package/dist/middlewares/cors.d.ts.map +1 -1
  124. package/dist/middlewares/cors.js +9 -7
  125. package/dist/middlewares/cors.js.map +1 -1
  126. package/dist/middlewares/cors.mjs +9 -7
  127. package/dist/middlewares/cors.mjs.map +1 -1
  128. package/dist/middlewares/errors.js.map +1 -1
  129. package/dist/middlewares/errors.mjs.map +1 -1
  130. package/dist/middlewares/favicon.js.map +1 -1
  131. package/dist/middlewares/favicon.mjs.map +1 -1
  132. package/dist/middlewares/index.js.map +1 -1
  133. package/dist/middlewares/logger.js.map +1 -1
  134. package/dist/middlewares/logger.mjs.map +1 -1
  135. package/dist/middlewares/powered-by.js.map +1 -1
  136. package/dist/middlewares/powered-by.mjs.map +1 -1
  137. package/dist/middlewares/public.js +2 -2
  138. package/dist/middlewares/public.js.map +1 -1
  139. package/dist/middlewares/public.mjs.map +1 -1
  140. package/dist/middlewares/query.d.ts.map +1 -1
  141. package/dist/middlewares/query.js.map +1 -1
  142. package/dist/middlewares/query.mjs.map +1 -1
  143. package/dist/middlewares/response-time.js.map +1 -1
  144. package/dist/middlewares/response-time.mjs.map +1 -1
  145. package/dist/middlewares/responses.js +2 -2
  146. package/dist/middlewares/responses.js.map +1 -1
  147. package/dist/middlewares/responses.mjs.map +1 -1
  148. package/dist/middlewares/security.d.ts.map +1 -1
  149. package/dist/middlewares/security.js +12 -5
  150. package/dist/middlewares/security.js.map +1 -1
  151. package/dist/middlewares/security.mjs +11 -4
  152. package/dist/middlewares/security.mjs.map +1 -1
  153. package/dist/middlewares/session.js +2 -2
  154. package/dist/middlewares/session.js.map +1 -1
  155. package/dist/middlewares/session.mjs.map +1 -1
  156. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +33 -0
  157. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -0
  158. package/dist/migrations/database/5.0.0-discard-drafts.js +109 -0
  159. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -0
  160. package/dist/migrations/database/5.0.0-discard-drafts.mjs +109 -0
  161. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -0
  162. package/dist/migrations/draft-publish.d.ts +1 -1
  163. package/dist/migrations/draft-publish.d.ts.map +1 -1
  164. package/dist/migrations/draft-publish.js +14 -31
  165. package/dist/migrations/draft-publish.js.map +1 -1
  166. package/dist/migrations/draft-publish.mjs +15 -32
  167. package/dist/migrations/draft-publish.mjs.map +1 -1
  168. package/dist/migrations/i18n.d.ts +5 -0
  169. package/dist/migrations/i18n.d.ts.map +1 -0
  170. package/dist/migrations/i18n.js +54 -0
  171. package/dist/migrations/i18n.js.map +1 -0
  172. package/dist/migrations/i18n.mjs +54 -0
  173. package/dist/migrations/i18n.mjs.map +1 -0
  174. package/dist/migrations/index.d.ts +5 -0
  175. package/dist/migrations/index.d.ts.map +1 -0
  176. package/dist/migrations/index.js +15 -0
  177. package/dist/migrations/index.js.map +1 -0
  178. package/dist/migrations/index.mjs +15 -0
  179. package/dist/migrations/index.mjs.map +1 -0
  180. package/dist/providers/admin.d.ts.map +1 -1
  181. package/dist/providers/admin.js.map +1 -1
  182. package/dist/providers/admin.mjs.map +1 -1
  183. package/dist/providers/coreStore.js.map +1 -1
  184. package/dist/providers/coreStore.mjs.map +1 -1
  185. package/dist/providers/cron.js.map +1 -1
  186. package/dist/providers/cron.mjs.map +1 -1
  187. package/dist/providers/registries.d.ts.map +1 -1
  188. package/dist/providers/registries.js +5 -3
  189. package/dist/providers/registries.js.map +1 -1
  190. package/dist/providers/registries.mjs +5 -3
  191. package/dist/providers/registries.mjs.map +1 -1
  192. package/dist/providers/telemetry.js.map +1 -1
  193. package/dist/providers/telemetry.mjs.map +1 -1
  194. package/dist/providers/webhooks.js.map +1 -1
  195. package/dist/providers/webhooks.mjs.map +1 -1
  196. package/dist/registries/apis.js +2 -2
  197. package/dist/registries/apis.js.map +1 -1
  198. package/dist/registries/apis.mjs.map +1 -1
  199. package/dist/registries/components.js +2 -2
  200. package/dist/registries/components.js.map +1 -1
  201. package/dist/registries/components.mjs.map +1 -1
  202. package/dist/registries/content-types.js +3 -3
  203. package/dist/registries/content-types.js.map +1 -1
  204. package/dist/registries/content-types.mjs.map +1 -1
  205. package/dist/registries/controllers.js +3 -3
  206. package/dist/registries/controllers.js.map +1 -1
  207. package/dist/registries/controllers.mjs.map +1 -1
  208. package/dist/registries/custom-fields.js +4 -4
  209. package/dist/registries/custom-fields.js.map +1 -1
  210. package/dist/registries/custom-fields.mjs.map +1 -1
  211. package/dist/registries/hooks.js +2 -2
  212. package/dist/registries/hooks.js.map +1 -1
  213. package/dist/registries/hooks.mjs.map +1 -1
  214. package/dist/registries/middlewares.js +3 -3
  215. package/dist/registries/middlewares.js.map +1 -1
  216. package/dist/registries/middlewares.mjs.map +1 -1
  217. package/dist/registries/models.js.map +1 -1
  218. package/dist/registries/models.mjs.map +1 -1
  219. package/dist/registries/modules.js +3 -3
  220. package/dist/registries/modules.js.map +1 -1
  221. package/dist/registries/modules.mjs.map +1 -1
  222. package/dist/registries/namespace.js.map +1 -1
  223. package/dist/registries/namespace.mjs.map +1 -1
  224. package/dist/registries/plugins.js +2 -2
  225. package/dist/registries/plugins.js.map +1 -1
  226. package/dist/registries/plugins.mjs.map +1 -1
  227. package/dist/registries/policies.d.ts +1 -1
  228. package/dist/registries/policies.d.ts.map +1 -1
  229. package/dist/registries/policies.js +5 -5
  230. package/dist/registries/policies.js.map +1 -1
  231. package/dist/registries/policies.mjs +1 -1
  232. package/dist/registries/policies.mjs.map +1 -1
  233. package/dist/registries/sanitizers.js.map +1 -1
  234. package/dist/registries/sanitizers.mjs.map +1 -1
  235. package/dist/registries/services.js +3 -3
  236. package/dist/registries/services.js.map +1 -1
  237. package/dist/registries/services.mjs.map +1 -1
  238. package/dist/registries/validators.js.map +1 -1
  239. package/dist/registries/validators.mjs.map +1 -1
  240. package/dist/services/auth/index.js +3 -3
  241. package/dist/services/auth/index.js.map +1 -1
  242. package/dist/services/auth/index.mjs.map +1 -1
  243. package/dist/services/config.js.map +1 -1
  244. package/dist/services/config.mjs.map +1 -1
  245. package/dist/services/content-api/index.d.ts +10 -12
  246. package/dist/services/content-api/index.d.ts.map +1 -1
  247. package/dist/services/content-api/index.js.map +1 -1
  248. package/dist/services/content-api/index.mjs.map +1 -1
  249. package/dist/services/content-api/permissions/index.d.ts +10 -12
  250. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  251. package/dist/services/content-api/permissions/index.js.map +1 -1
  252. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  253. package/dist/services/content-api/permissions/providers/action.d.ts +5 -6
  254. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  255. package/dist/services/content-api/permissions/providers/action.js.map +1 -1
  256. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
  257. package/dist/services/content-api/permissions/providers/condition.d.ts +5 -6
  258. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  259. package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
  260. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
  261. package/dist/services/core-store.js +3 -3
  262. package/dist/services/core-store.js.map +1 -1
  263. package/dist/services/core-store.mjs.map +1 -1
  264. package/dist/services/cron.d.ts +3 -3
  265. package/dist/services/cron.d.ts.map +1 -1
  266. package/dist/services/cron.js +12 -8
  267. package/dist/services/cron.js.map +1 -1
  268. package/dist/services/cron.mjs +9 -5
  269. package/dist/services/cron.mjs.map +1 -1
  270. package/dist/services/custom-fields.js.map +1 -1
  271. package/dist/services/custom-fields.mjs.map +1 -1
  272. package/dist/services/document-service/attributes/index.js +2 -2
  273. package/dist/services/document-service/attributes/index.js.map +1 -1
  274. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  275. package/dist/services/document-service/attributes/transforms.js +3 -3
  276. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  277. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  278. package/dist/services/document-service/common.d.ts +1 -1
  279. package/dist/services/document-service/common.d.ts.map +1 -1
  280. package/dist/services/document-service/common.js.map +1 -1
  281. package/dist/services/document-service/common.mjs.map +1 -1
  282. package/dist/services/document-service/components.d.ts.map +1 -1
  283. package/dist/services/document-service/components.js +15 -15
  284. package/dist/services/document-service/components.js.map +1 -1
  285. package/dist/services/document-service/components.mjs.map +1 -1
  286. package/dist/services/document-service/draft-and-publish.js +16 -16
  287. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  288. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  289. package/dist/services/document-service/entries.d.ts +3 -3
  290. package/dist/services/document-service/entries.d.ts.map +1 -1
  291. package/dist/services/document-service/entries.js +13 -13
  292. package/dist/services/document-service/entries.js.map +1 -1
  293. package/dist/services/document-service/entries.mjs +3 -3
  294. package/dist/services/document-service/entries.mjs.map +1 -1
  295. package/dist/services/document-service/events.d.ts +25 -0
  296. package/dist/services/document-service/events.d.ts.map +1 -0
  297. package/dist/services/document-service/events.js +47 -0
  298. package/dist/services/document-service/events.js.map +1 -0
  299. package/dist/services/document-service/events.mjs +47 -0
  300. package/dist/services/document-service/events.mjs.map +1 -0
  301. package/dist/services/document-service/index.d.ts +2 -1
  302. package/dist/services/document-service/index.d.ts.map +1 -1
  303. package/dist/services/document-service/index.js +3 -2
  304. package/dist/services/document-service/index.js.map +1 -1
  305. package/dist/services/document-service/index.mjs +3 -2
  306. package/dist/services/document-service/index.mjs.map +1 -1
  307. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  308. package/dist/services/document-service/internationalization.js +21 -12
  309. package/dist/services/document-service/internationalization.js.map +1 -1
  310. package/dist/services/document-service/internationalization.mjs +14 -5
  311. package/dist/services/document-service/internationalization.mjs.map +1 -1
  312. package/dist/services/document-service/middlewares/errors.js.map +1 -1
  313. package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
  314. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  315. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  316. package/dist/services/document-service/params.js +2 -2
  317. package/dist/services/document-service/params.js.map +1 -1
  318. package/dist/services/document-service/repository.d.ts.map +1 -1
  319. package/dist/services/document-service/repository.js +134 -52
  320. package/dist/services/document-service/repository.js.map +1 -1
  321. package/dist/services/document-service/repository.mjs +131 -49
  322. package/dist/services/document-service/repository.mjs.map +1 -1
  323. package/dist/services/document-service/transform/data.js.map +1 -1
  324. package/dist/services/document-service/transform/data.mjs.map +1 -1
  325. package/dist/services/document-service/transform/fields.js.map +1 -1
  326. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  327. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  328. package/dist/services/document-service/transform/id-map.js +15 -8
  329. package/dist/services/document-service/transform/id-map.js.map +1 -1
  330. package/dist/services/document-service/transform/id-map.mjs +16 -9
  331. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  332. package/dist/services/document-service/transform/id-transform.js +2 -2
  333. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  334. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  335. package/dist/services/document-service/transform/populate.js.map +1 -1
  336. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  337. package/dist/services/document-service/transform/query.js +3 -3
  338. package/dist/services/document-service/transform/query.js.map +1 -1
  339. package/dist/services/document-service/transform/query.mjs.map +1 -1
  340. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  341. package/dist/services/document-service/transform/relations/extract/data-ids.js +18 -8
  342. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  343. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +16 -6
  344. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  345. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  346. package/dist/services/document-service/transform/relations/transform/data-ids.js +22 -10
  347. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  348. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +21 -9
  349. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  350. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  351. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  352. package/dist/services/document-service/transform/relations/utils/dp.js +2 -2
  353. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  354. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  355. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  356. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  357. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  358. package/dist/services/document-service/transform/relations/utils/map-relation.js +12 -15
  359. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  360. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +7 -10
  361. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  362. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  363. package/dist/services/document-service/utils/populate.js +8 -2
  364. package/dist/services/document-service/utils/populate.js.map +1 -1
  365. package/dist/services/document-service/utils/populate.mjs +8 -2
  366. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  367. package/dist/services/document-service/utils/unidirectional-relations.d.ts +36 -0
  368. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -0
  369. package/dist/services/document-service/utils/unidirectional-relations.js +68 -0
  370. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -0
  371. package/dist/services/document-service/utils/unidirectional-relations.mjs +68 -0
  372. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -0
  373. package/dist/services/entity-service/index.js.map +1 -1
  374. package/dist/services/entity-service/index.mjs.map +1 -1
  375. package/dist/services/entity-validator/blocks-validator.d.ts +1 -2
  376. package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
  377. package/dist/services/entity-validator/blocks-validator.js +4 -3
  378. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  379. package/dist/services/entity-validator/blocks-validator.mjs +3 -3
  380. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  381. package/dist/services/entity-validator/index.d.ts +15 -1
  382. package/dist/services/entity-validator/index.d.ts.map +1 -1
  383. package/dist/services/entity-validator/index.js +109 -53
  384. package/dist/services/entity-validator/index.js.map +1 -1
  385. package/dist/services/entity-validator/index.mjs +95 -39
  386. package/dist/services/entity-validator/index.mjs.map +1 -1
  387. package/dist/services/entity-validator/validators.d.ts +36 -25
  388. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  389. package/dist/services/entity-validator/validators.js +148 -33
  390. package/dist/services/entity-validator/validators.js.map +1 -1
  391. package/dist/services/entity-validator/validators.mjs +140 -25
  392. package/dist/services/entity-validator/validators.mjs.map +1 -1
  393. package/dist/services/errors.js.map +1 -1
  394. package/dist/services/errors.mjs.map +1 -1
  395. package/dist/services/event-hub.d.ts +1 -0
  396. package/dist/services/event-hub.d.ts.map +1 -1
  397. package/dist/services/event-hub.js +9 -4
  398. package/dist/services/event-hub.js.map +1 -1
  399. package/dist/services/event-hub.mjs +9 -4
  400. package/dist/services/event-hub.mjs.map +1 -1
  401. package/dist/services/features.js.map +1 -1
  402. package/dist/services/features.mjs.map +1 -1
  403. package/dist/services/fs.js.map +1 -1
  404. package/dist/services/fs.mjs.map +1 -1
  405. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  406. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  407. package/dist/services/metrics/index.js +1 -2
  408. package/dist/services/metrics/index.js.map +1 -1
  409. package/dist/services/metrics/index.mjs +1 -2
  410. package/dist/services/metrics/index.mjs.map +1 -1
  411. package/dist/services/metrics/is-truthy.js.map +1 -1
  412. package/dist/services/metrics/middleware.d.ts.map +1 -1
  413. package/dist/services/metrics/middleware.js +6 -4
  414. package/dist/services/metrics/middleware.js.map +1 -1
  415. package/dist/services/metrics/middleware.mjs +6 -4
  416. package/dist/services/metrics/middleware.mjs.map +1 -1
  417. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  418. package/dist/services/metrics/rate-limiter.js +6 -3
  419. package/dist/services/metrics/rate-limiter.js.map +1 -1
  420. package/dist/services/metrics/rate-limiter.mjs +6 -3
  421. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  422. package/dist/services/metrics/sender.js.map +1 -1
  423. package/dist/services/metrics/sender.mjs.map +1 -1
  424. package/dist/services/query-params.js.map +1 -1
  425. package/dist/services/query-params.mjs.map +1 -1
  426. package/dist/services/reloader.js.map +1 -1
  427. package/dist/services/reloader.mjs.map +1 -1
  428. package/dist/services/request-context.js.map +1 -1
  429. package/dist/services/request-context.mjs.map +1 -1
  430. package/dist/services/server/admin-api.js.map +1 -1
  431. package/dist/services/server/admin-api.mjs.map +1 -1
  432. package/dist/services/server/api.js.map +1 -1
  433. package/dist/services/server/api.mjs.map +1 -1
  434. package/dist/services/server/compose-endpoint.js +7 -7
  435. package/dist/services/server/compose-endpoint.js.map +1 -1
  436. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  437. package/dist/services/server/content-api.js.map +1 -1
  438. package/dist/services/server/content-api.mjs.map +1 -1
  439. package/dist/services/server/http-server.js.map +1 -1
  440. package/dist/services/server/http-server.mjs.map +1 -1
  441. package/dist/services/server/index.js +1 -1
  442. package/dist/services/server/index.js.map +1 -1
  443. package/dist/services/server/index.mjs +1 -1
  444. package/dist/services/server/index.mjs.map +1 -1
  445. package/dist/services/server/koa.d.ts.map +1 -1
  446. package/dist/services/server/koa.js +4 -4
  447. package/dist/services/server/koa.js.map +1 -1
  448. package/dist/services/server/koa.mjs +1 -1
  449. package/dist/services/server/koa.mjs.map +1 -1
  450. package/dist/services/server/middleware.js +3 -3
  451. package/dist/services/server/middleware.js.map +1 -1
  452. package/dist/services/server/middleware.mjs.map +1 -1
  453. package/dist/services/server/policy.js.map +1 -1
  454. package/dist/services/server/policy.mjs.map +1 -1
  455. package/dist/services/server/register-middlewares.js.map +1 -1
  456. package/dist/services/server/register-middlewares.mjs.map +1 -1
  457. package/dist/services/server/register-routes.js.map +1 -1
  458. package/dist/services/server/register-routes.mjs.map +1 -1
  459. package/dist/services/server/routing.js +2 -2
  460. package/dist/services/server/routing.js.map +1 -1
  461. package/dist/services/server/routing.mjs.map +1 -1
  462. package/dist/services/utils/dynamic-zones.js +5 -5
  463. package/dist/services/utils/dynamic-zones.js.map +1 -1
  464. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  465. package/dist/services/webhook-runner.d.ts +2 -1
  466. package/dist/services/webhook-runner.d.ts.map +1 -1
  467. package/dist/services/webhook-runner.js.map +1 -1
  468. package/dist/services/webhook-runner.mjs.map +1 -1
  469. package/dist/services/webhook-store.d.ts +2 -8
  470. package/dist/services/webhook-store.d.ts.map +1 -1
  471. package/dist/services/webhook-store.js +9 -2
  472. package/dist/services/webhook-store.js.map +1 -1
  473. package/dist/services/webhook-store.mjs +9 -2
  474. package/dist/services/webhook-store.mjs.map +1 -1
  475. package/dist/services/worker-queue.js.map +1 -1
  476. package/dist/services/worker-queue.mjs.map +1 -1
  477. package/dist/utils/convert-custom-field-type.js.map +1 -1
  478. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  479. package/dist/utils/cron.js +3 -3
  480. package/dist/utils/cron.js.map +1 -1
  481. package/dist/utils/cron.mjs.map +1 -1
  482. package/dist/utils/fetch.d.ts.map +1 -1
  483. package/dist/utils/fetch.js +4 -3
  484. package/dist/utils/fetch.js.map +1 -1
  485. package/dist/utils/fetch.mjs +4 -3
  486. package/dist/utils/fetch.mjs.map +1 -1
  487. package/dist/utils/filepath-to-prop-path.d.ts +1 -1
  488. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  489. package/dist/utils/filepath-to-prop-path.js +27 -6
  490. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  491. package/dist/utils/filepath-to-prop-path.mjs +25 -5
  492. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  493. package/dist/utils/is-initialized.js +3 -3
  494. package/dist/utils/is-initialized.js.map +1 -1
  495. package/dist/utils/is-initialized.mjs.map +1 -1
  496. package/dist/utils/load-config-file.js.map +1 -1
  497. package/dist/utils/load-config-file.mjs.map +1 -1
  498. package/dist/utils/load-files.js +1 -2
  499. package/dist/utils/load-files.js.map +1 -1
  500. package/dist/utils/load-files.mjs +1 -2
  501. package/dist/utils/load-files.mjs.map +1 -1
  502. package/dist/utils/resolve-working-dirs.js.map +1 -1
  503. package/dist/utils/resolve-working-dirs.mjs.map +1 -1
  504. package/dist/utils/signals.js.map +1 -1
  505. package/dist/utils/signals.mjs.map +1 -1
  506. package/dist/utils/startup-logger.d.ts.map +1 -1
  507. package/dist/utils/startup-logger.js +10 -5
  508. package/dist/utils/startup-logger.js.map +1 -1
  509. package/dist/utils/startup-logger.mjs +9 -4
  510. package/dist/utils/startup-logger.mjs.map +1 -1
  511. package/dist/utils/transform-content-types-to-models.d.ts +355 -23
  512. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  513. package/dist/utils/transform-content-types-to-models.js +17 -4
  514. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  515. package/dist/utils/transform-content-types-to-models.mjs +16 -3
  516. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  517. package/dist/utils/update-notifier/index.js.map +1 -1
  518. package/dist/utils/update-notifier/index.mjs.map +1 -1
  519. package/package.json +29 -26
  520. package/dist/services/document-service/document-engine.d.ts +0 -1
  521. package/dist/services/document-service/document-engine.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"body.mjs","sources":["../../src/middlewares/body.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport { defaultsDeep } from 'lodash/fp';\nimport body, { KoaBodyMiddlewareOptions } from 'koa-body';\nimport mime from 'mime-types';\nimport type Koa from 'koa';\nimport type { Core } from '@strapi/types';\n\nexport type Config = KoaBodyMiddlewareOptions;\n\nconst defaults = {\n multipart: true,\n patchKoa: true,\n};\n\nfunction ensureFileMimeType(file: any): void {\n if (!file.type) {\n file.type = mime.lookup(file.name) || 'application/octet-stream';\n }\n}\n\nfunction getFiles(ctx: Koa.Context) {\n return ctx?.request?.files?.files;\n}\n\nconst bodyMiddleware: Core.MiddlewareFactory<Config> = (config, { strapi }) => {\n const bodyConfig: Config = defaultsDeep(defaults, config);\n\n let gqlEndpoint: string | undefined;\n if (strapi.plugin('graphql')) {\n const { config: gqlConfig } = strapi.plugin('graphql');\n gqlEndpoint = gqlConfig('endpoint');\n }\n\n return async (ctx, next) => {\n // TODO: find a better way later\n if (gqlEndpoint && ctx.url === gqlEndpoint) {\n await next();\n } else {\n try {\n await body(bodyConfig)(ctx, async () => {});\n\n const files = getFiles(ctx);\n\n /**\n * in case the mime-type wasn't sent, Strapi tries to guess it\n * from the file extension, to avoid a corrupt database state\n */\n if (files) {\n if (Array.isArray(files)) {\n files.forEach(ensureFileMimeType);\n } else {\n ensureFileMimeType(files);\n }\n }\n\n await next();\n } catch (error) {\n if (\n error instanceof Error &&\n error.message &&\n error.message.includes('maxFileSize exceeded')\n ) {\n return ctx.payloadTooLarge('FileTooBig');\n }\n\n throw error;\n }\n }\n\n const files = getFiles(ctx);\n\n // clean any file that was uploaded\n if (files) {\n if (Array.isArray(files)) {\n // not awaiting to not slow the request\n Promise.all(files.map((file) => fse.remove(file.filepath)));\n } else if (files && files.filepath) {\n // not awaiting to not slow the request\n fse.remove(files.filepath);\n }\n delete ctx.request.files;\n }\n };\n};\n\nexport { bodyMiddleware as body };\n"],"names":["files"],"mappings":";;;;AASA,MAAM,WAAW;AAAA,EACf,WAAW;AAAA,EACX,UAAU;AACZ;AAEA,SAAS,mBAAmB,MAAiB;AACvC,MAAA,CAAC,KAAK,MAAM;AACd,SAAK,OAAO,KAAK,OAAO,KAAK,IAAI,KAAK;AAAA,EACxC;AACF;AAEA,SAAS,SAAS,KAAkB;AAC3B,SAAA,KAAK,SAAS,OAAO;AAC9B;AAEA,MAAM,iBAAiD,CAAC,QAAQ,EAAE,aAAa;AACvE,QAAA,aAAqB,aAAa,UAAU,MAAM;AAEpD,MAAA;AACA,MAAA,OAAO,OAAO,SAAS,GAAG;AAC5B,UAAM,EAAE,QAAQ,UAAA,IAAc,OAAO,OAAO,SAAS;AACrD,kBAAc,UAAU,UAAU;AAAA,EACpC;AAEO,SAAA,OAAO,KAAK,SAAS;AAEtB,QAAA,eAAe,IAAI,QAAQ,aAAa;AAC1C,YAAM,KAAK;AAAA,IAAA,OACN;AACD,UAAA;AACF,cAAM,KAAK,UAAU,EAAE,KAAK,YAAY;AAAA,QAAA,CAAE;AAEpCA,cAAAA,SAAQ,SAAS,GAAG;AAM1B,YAAIA,QAAO;AACL,cAAA,MAAM,QAAQA,MAAK,GAAG;AACxBA,mBAAM,QAAQ,kBAAkB;AAAA,UAAA,OAC3B;AACL,+BAAmBA,MAAK;AAAA,UAC1B;AAAA,QACF;AAEA,cAAM,KAAK;AAAA,eACJ,OAAO;AAEZ,YAAA,iBAAiB,SACjB,MAAM,WACN,MAAM,QAAQ,SAAS,sBAAsB,GAC7C;AACO,iBAAA,IAAI,gBAAgB,YAAY;AAAA,QACzC;AAEM,cAAA;AAAA,MACR;AAAA,IACF;AAEM,UAAA,QAAQ,SAAS,GAAG;AAG1B,QAAI,OAAO;AACL,UAAA,MAAM,QAAQ,KAAK,GAAG;AAEhB,gBAAA,IAAI,MAAM,IAAI,CAAC,SAAS,IAAI,OAAO,KAAK,QAAQ,CAAC,CAAC;AAAA,MAAA,WACjD,SAAS,MAAM,UAAU;AAE9B,YAAA,OAAO,MAAM,QAAQ;AAAA,MAC3B;AACA,aAAO,IAAI,QAAQ;AAAA,IACrB;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"body.mjs","sources":["../../src/middlewares/body.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport { defaultsDeep } from 'lodash/fp';\nimport body, { KoaBodyMiddlewareOptions } from 'koa-body';\nimport mime from 'mime-types';\nimport type Koa from 'koa';\nimport type { Core } from '@strapi/types';\n\nexport type Config = KoaBodyMiddlewareOptions;\n\nconst defaults = {\n multipart: true,\n patchKoa: true,\n};\n\nfunction ensureFileMimeType(file: any): void {\n if (!file.type) {\n file.type = mime.lookup(file.name) || 'application/octet-stream';\n }\n}\n\nfunction getFiles(ctx: Koa.Context) {\n return ctx?.request?.files?.files;\n}\n\nconst bodyMiddleware: Core.MiddlewareFactory<Config> = (config, { strapi }) => {\n const bodyConfig: Config = defaultsDeep(defaults, config);\n\n let gqlEndpoint: string | undefined;\n if (strapi.plugin('graphql')) {\n const { config: gqlConfig } = strapi.plugin('graphql');\n gqlEndpoint = gqlConfig('endpoint');\n }\n\n return async (ctx, next) => {\n // TODO: find a better way later\n if (gqlEndpoint && ctx.url === gqlEndpoint) {\n await next();\n } else {\n try {\n await body(bodyConfig)(ctx, async () => {});\n\n const files = getFiles(ctx);\n\n /**\n * in case the mime-type wasn't sent, Strapi tries to guess it\n * from the file extension, to avoid a corrupt database state\n */\n if (files) {\n if (Array.isArray(files)) {\n files.forEach(ensureFileMimeType);\n } else {\n ensureFileMimeType(files);\n }\n }\n\n await next();\n } catch (error) {\n if (\n error instanceof Error &&\n error.message &&\n error.message.includes('maxFileSize exceeded')\n ) {\n return ctx.payloadTooLarge('FileTooBig');\n }\n\n throw error;\n }\n }\n\n const files = getFiles(ctx);\n\n // clean any file that was uploaded\n if (files) {\n if (Array.isArray(files)) {\n // not awaiting to not slow the request\n Promise.all(files.map((file) => fse.remove(file.filepath)));\n } else if (files && files.filepath) {\n // not awaiting to not slow the request\n fse.remove(files.filepath);\n }\n delete ctx.request.files;\n }\n };\n};\n\nexport { bodyMiddleware as body };\n"],"names":["files"],"mappings":";;;;AASA,MAAM,WAAW;AAAA,EACf,WAAW;AAAA,EACX,UAAU;AACZ;AAEA,SAAS,mBAAmB,MAAiB;AACvC,MAAA,CAAC,KAAK,MAAM;AACd,SAAK,OAAO,KAAK,OAAO,KAAK,IAAI,KAAK;AAAA,EAAA;AAE1C;AAEA,SAAS,SAAS,KAAkB;AAC3B,SAAA,KAAK,SAAS,OAAO;AAC9B;AAEA,MAAM,iBAAiD,CAAC,QAAQ,EAAE,aAAa;AACvE,QAAA,aAAqB,aAAa,UAAU,MAAM;AAEpD,MAAA;AACA,MAAA,OAAO,OAAO,SAAS,GAAG;AAC5B,UAAM,EAAE,QAAQ,UAAA,IAAc,OAAO,OAAO,SAAS;AACrD,kBAAc,UAAU,UAAU;AAAA,EAAA;AAG7B,SAAA,OAAO,KAAK,SAAS;AAEtB,QAAA,eAAe,IAAI,QAAQ,aAAa;AAC1C,YAAM,KAAK;AAAA,IAAA,OACN;AACD,UAAA;AACF,cAAM,KAAK,UAAU,EAAE,KAAK,YAAY;AAAA,QAAA,CAAE;AAEpCA,cAAAA,SAAQ,SAAS,GAAG;AAM1B,YAAIA,QAAO;AACL,cAAA,MAAM,QAAQA,MAAK,GAAG;AACxBA,mBAAM,QAAQ,kBAAkB;AAAA,UAAA,OAC3B;AACL,+BAAmBA,MAAK;AAAA,UAAA;AAAA,QAC1B;AAGF,cAAM,KAAK;AAAA,eACJ,OAAO;AAEZ,YAAA,iBAAiB,SACjB,MAAM,WACN,MAAM,QAAQ,SAAS,sBAAsB,GAC7C;AACO,iBAAA,IAAI,gBAAgB,YAAY;AAAA,QAAA;AAGnC,cAAA;AAAA,MAAA;AAAA,IACR;AAGI,UAAA,QAAQ,SAAS,GAAG;AAG1B,QAAI,OAAO;AACL,UAAA,MAAM,QAAQ,KAAK,GAAG;AAEhB,gBAAA,IAAI,MAAM,IAAI,CAAC,SAAS,IAAI,OAAO,KAAK,QAAQ,CAAC,CAAC;AAAA,MAAA,WACjD,SAAS,MAAM,UAAU;AAE9B,YAAA,OAAO,MAAM,QAAQ;AAAA,MAAA;AAE3B,aAAO,IAAI,QAAQ;AAAA,IAAA;AAAA,EAEvB;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../src/middlewares/cors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,MAAM,MAAM,GAAG;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC9D,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAWF,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CA2C/C,CAAC"}
1
+ {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../src/middlewares/cors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,MAAM,MAAM,GAAG;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC9D,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAWF,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CA8C/C,CAAC"}
@@ -23,21 +23,23 @@ const cors = (config) => {
23
23
  }
24
24
  return koaCors__default.default({
25
25
  async origin(ctx) {
26
+ if (!ctx.get("Origin")) {
27
+ return "*";
28
+ }
26
29
  let originList;
27
30
  if (typeof origin === "function") {
28
31
  originList = await origin(ctx);
29
32
  } else {
30
33
  originList = origin;
31
34
  }
32
- const whitelist = Array.isArray(originList) ? originList : originList.split(/\s*,\s*/);
33
- const requestOrigin = ctx.headers.origin ?? "";
34
- if (whitelist.includes("*")) {
35
- return credentials ? requestOrigin : "*";
35
+ if (Array.isArray(originList)) {
36
+ return originList.includes(ctx.get("Origin")) ? ctx.get("Origin") : "";
36
37
  }
37
- if (!whitelist.includes(requestOrigin)) {
38
- return ctx.throw(`${requestOrigin} is not a valid origin`);
38
+ const parsedOrigin = originList.split(",").map((origin2) => origin2.trim());
39
+ if (parsedOrigin.length > 1) {
40
+ return parsedOrigin.includes(ctx.get("Origin")) ? ctx.get("Origin") : "";
39
41
  }
40
- return requestOrigin;
42
+ return originList;
41
43
  },
42
44
  exposeHeaders: expose,
43
45
  maxAge,
@@ -1 +1 @@
1
- {"version":3,"file":"cors.js","sources":["../../src/middlewares/cors.ts"],"sourcesContent":["import koaCors from '@koa/cors';\n\nimport type { Core } from '@strapi/types';\n\nexport type Config = {\n enabled?: boolean;\n origin: string | string[] | ((ctx: any) => string | string[]);\n expose?: string | string[];\n maxAge?: number;\n credentials?: boolean;\n methods?: string | string[];\n headers?: string | string[];\n keepHeadersOnError?: boolean;\n};\n\nconst defaults: Config = {\n origin: '*',\n maxAge: 31536000,\n credentials: true,\n methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],\n headers: ['Content-Type', 'Authorization', 'Origin', 'Accept'],\n keepHeadersOnError: false,\n};\n\nexport const cors: Core.MiddlewareFactory<Config> = (config) => {\n const { origin, expose, maxAge, credentials, methods, headers, keepHeadersOnError } = {\n ...defaults,\n ...config,\n };\n\n if (config.enabled !== undefined) {\n strapi.log.warn(\n 'The strapi::cors middleware no longer supports the `enabled` option. Using it' +\n ' to conditionally enable CORS might cause an insecure default. To disable strapi::cors, remove it from' +\n ' the exported array in config/middleware.js'\n );\n }\n\n return koaCors({\n async origin(ctx) {\n let originList: string | string[];\n\n if (typeof origin === 'function') {\n originList = await origin(ctx);\n } else {\n originList = origin;\n }\n\n const whitelist = Array.isArray(originList) ? originList : originList.split(/\\s*,\\s*/);\n\n const requestOrigin = ctx.headers.origin ?? '';\n if (whitelist.includes('*')) {\n return credentials ? requestOrigin : '*';\n }\n\n if (!whitelist.includes(requestOrigin)) {\n return ctx.throw(`${requestOrigin} is not a valid origin`);\n }\n return requestOrigin;\n },\n exposeHeaders: expose,\n maxAge,\n credentials,\n allowMethods: methods,\n allowHeaders: headers,\n keepHeadersOnError,\n });\n};\n"],"names":["koaCors"],"mappings":";;;;;AAeA,MAAM,WAAmB;AAAA,EACvB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,SAAS,CAAC,OAAO,QAAQ,OAAO,SAAS,UAAU,QAAQ,SAAS;AAAA,EACpE,SAAS,CAAC,gBAAgB,iBAAiB,UAAU,QAAQ;AAAA,EAC7D,oBAAoB;AACtB;AAEa,MAAA,OAAuC,CAAC,WAAW;AACxD,QAAA,EAAE,QAAQ,QAAQ,QAAQ,aAAa,SAAS,SAAS,uBAAuB;AAAA,IACpF,GAAG;AAAA,IACH,GAAG;AAAA,EAAA;AAGD,MAAA,OAAO,YAAY,QAAW;AAChC,WAAO,IAAI;AAAA,MACT;AAAA,IAAA;AAAA,EAIJ;AAEA,SAAOA,yBAAQ;AAAA,IACb,MAAM,OAAO,KAAK;AACZ,UAAA;AAEA,UAAA,OAAO,WAAW,YAAY;AACnB,qBAAA,MAAM,OAAO,GAAG;AAAA,MAAA,OACxB;AACQ,qBAAA;AAAA,MACf;AAEM,YAAA,YAAY,MAAM,QAAQ,UAAU,IAAI,aAAa,WAAW,MAAM,SAAS;AAE/E,YAAA,gBAAgB,IAAI,QAAQ,UAAU;AACxC,UAAA,UAAU,SAAS,GAAG,GAAG;AAC3B,eAAO,cAAc,gBAAgB;AAAA,MACvC;AAEA,UAAI,CAAC,UAAU,SAAS,aAAa,GAAG;AACtC,eAAO,IAAI,MAAM,GAAG,aAAa,wBAAwB;AAAA,MAC3D;AACO,aAAA;AAAA,IACT;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,cAAc;AAAA,IACd;AAAA,EAAA,CACD;AACH;;"}
1
+ {"version":3,"file":"cors.js","sources":["../../src/middlewares/cors.ts"],"sourcesContent":["import koaCors from '@koa/cors';\n\nimport type { Core } from '@strapi/types';\n\nexport type Config = {\n enabled?: boolean;\n origin: string | string[] | ((ctx: any) => string | string[]);\n expose?: string | string[];\n maxAge?: number;\n credentials?: boolean;\n methods?: string | string[];\n headers?: string | string[];\n keepHeadersOnError?: boolean;\n};\n\nconst defaults: Config = {\n origin: '*',\n maxAge: 31536000,\n credentials: true,\n methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],\n headers: ['Content-Type', 'Authorization', 'Origin', 'Accept'],\n keepHeadersOnError: false,\n};\n\nexport const cors: Core.MiddlewareFactory<Config> = (config) => {\n const { origin, expose, maxAge, credentials, methods, headers, keepHeadersOnError } = {\n ...defaults,\n ...config,\n };\n\n if (config.enabled !== undefined) {\n strapi.log.warn(\n 'The strapi::cors middleware no longer supports the `enabled` option. Using it' +\n ' to conditionally enable CORS might cause an insecure default. To disable strapi::cors, remove it from' +\n ' the exported array in config/middleware.js'\n );\n }\n\n return koaCors({\n async origin(ctx) {\n if (!ctx.get('Origin')) {\n return '*';\n }\n\n let originList: string | string[];\n\n if (typeof origin === 'function') {\n originList = await origin(ctx);\n } else {\n originList = origin;\n }\n\n if (Array.isArray(originList)) {\n return originList.includes(ctx.get('Origin')) ? ctx.get('Origin') : '';\n }\n\n const parsedOrigin = originList.split(',').map((origin) => origin.trim());\n if (parsedOrigin.length > 1) {\n return parsedOrigin.includes(ctx.get('Origin')) ? ctx.get('Origin') : '';\n }\n\n return originList;\n },\n exposeHeaders: expose,\n maxAge,\n credentials,\n allowMethods: methods,\n allowHeaders: headers,\n keepHeadersOnError,\n });\n};\n"],"names":["koaCors","origin"],"mappings":";;;;;AAeA,MAAM,WAAmB;AAAA,EACvB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,SAAS,CAAC,OAAO,QAAQ,OAAO,SAAS,UAAU,QAAQ,SAAS;AAAA,EACpE,SAAS,CAAC,gBAAgB,iBAAiB,UAAU,QAAQ;AAAA,EAC7D,oBAAoB;AACtB;AAEa,MAAA,OAAuC,CAAC,WAAW;AACxD,QAAA,EAAE,QAAQ,QAAQ,QAAQ,aAAa,SAAS,SAAS,uBAAuB;AAAA,IACpF,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAEI,MAAA,OAAO,YAAY,QAAW;AAChC,WAAO,IAAI;AAAA,MACT;AAAA,IAGF;AAAA,EAAA;AAGF,SAAOA,yBAAQ;AAAA,IACb,MAAM,OAAO,KAAK;AAChB,UAAI,CAAC,IAAI,IAAI,QAAQ,GAAG;AACf,eAAA;AAAA,MAAA;AAGL,UAAA;AAEA,UAAA,OAAO,WAAW,YAAY;AACnB,qBAAA,MAAM,OAAO,GAAG;AAAA,MAAA,OACxB;AACQ,qBAAA;AAAA,MAAA;AAGX,UAAA,MAAM,QAAQ,UAAU,GAAG;AACtB,eAAA,WAAW,SAAS,IAAI,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,QAAQ,IAAI;AAAA,MAAA;AAGhE,YAAA,eAAe,WAAW,MAAM,GAAG,EAAE,IAAI,CAACC,YAAWA,QAAO,MAAM;AACpE,UAAA,aAAa,SAAS,GAAG;AACpB,eAAA,aAAa,SAAS,IAAI,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,QAAQ,IAAI;AAAA,MAAA;AAGjE,aAAA;AAAA,IACT;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,cAAc;AAAA,IACd;AAAA,EAAA,CACD;AACH;;"}
@@ -19,21 +19,23 @@ const cors = (config) => {
19
19
  }
20
20
  return koaCors({
21
21
  async origin(ctx) {
22
+ if (!ctx.get("Origin")) {
23
+ return "*";
24
+ }
22
25
  let originList;
23
26
  if (typeof origin === "function") {
24
27
  originList = await origin(ctx);
25
28
  } else {
26
29
  originList = origin;
27
30
  }
28
- const whitelist = Array.isArray(originList) ? originList : originList.split(/\s*,\s*/);
29
- const requestOrigin = ctx.headers.origin ?? "";
30
- if (whitelist.includes("*")) {
31
- return credentials ? requestOrigin : "*";
31
+ if (Array.isArray(originList)) {
32
+ return originList.includes(ctx.get("Origin")) ? ctx.get("Origin") : "";
32
33
  }
33
- if (!whitelist.includes(requestOrigin)) {
34
- return ctx.throw(`${requestOrigin} is not a valid origin`);
34
+ const parsedOrigin = originList.split(",").map((origin2) => origin2.trim());
35
+ if (parsedOrigin.length > 1) {
36
+ return parsedOrigin.includes(ctx.get("Origin")) ? ctx.get("Origin") : "";
35
37
  }
36
- return requestOrigin;
38
+ return originList;
37
39
  },
38
40
  exposeHeaders: expose,
39
41
  maxAge,
@@ -1 +1 @@
1
- {"version":3,"file":"cors.mjs","sources":["../../src/middlewares/cors.ts"],"sourcesContent":["import koaCors from '@koa/cors';\n\nimport type { Core } from '@strapi/types';\n\nexport type Config = {\n enabled?: boolean;\n origin: string | string[] | ((ctx: any) => string | string[]);\n expose?: string | string[];\n maxAge?: number;\n credentials?: boolean;\n methods?: string | string[];\n headers?: string | string[];\n keepHeadersOnError?: boolean;\n};\n\nconst defaults: Config = {\n origin: '*',\n maxAge: 31536000,\n credentials: true,\n methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],\n headers: ['Content-Type', 'Authorization', 'Origin', 'Accept'],\n keepHeadersOnError: false,\n};\n\nexport const cors: Core.MiddlewareFactory<Config> = (config) => {\n const { origin, expose, maxAge, credentials, methods, headers, keepHeadersOnError } = {\n ...defaults,\n ...config,\n };\n\n if (config.enabled !== undefined) {\n strapi.log.warn(\n 'The strapi::cors middleware no longer supports the `enabled` option. Using it' +\n ' to conditionally enable CORS might cause an insecure default. To disable strapi::cors, remove it from' +\n ' the exported array in config/middleware.js'\n );\n }\n\n return koaCors({\n async origin(ctx) {\n let originList: string | string[];\n\n if (typeof origin === 'function') {\n originList = await origin(ctx);\n } else {\n originList = origin;\n }\n\n const whitelist = Array.isArray(originList) ? originList : originList.split(/\\s*,\\s*/);\n\n const requestOrigin = ctx.headers.origin ?? '';\n if (whitelist.includes('*')) {\n return credentials ? requestOrigin : '*';\n }\n\n if (!whitelist.includes(requestOrigin)) {\n return ctx.throw(`${requestOrigin} is not a valid origin`);\n }\n return requestOrigin;\n },\n exposeHeaders: expose,\n maxAge,\n credentials,\n allowMethods: methods,\n allowHeaders: headers,\n keepHeadersOnError,\n });\n};\n"],"names":[],"mappings":";AAeA,MAAM,WAAmB;AAAA,EACvB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,SAAS,CAAC,OAAO,QAAQ,OAAO,SAAS,UAAU,QAAQ,SAAS;AAAA,EACpE,SAAS,CAAC,gBAAgB,iBAAiB,UAAU,QAAQ;AAAA,EAC7D,oBAAoB;AACtB;AAEa,MAAA,OAAuC,CAAC,WAAW;AACxD,QAAA,EAAE,QAAQ,QAAQ,QAAQ,aAAa,SAAS,SAAS,uBAAuB;AAAA,IACpF,GAAG;AAAA,IACH,GAAG;AAAA,EAAA;AAGD,MAAA,OAAO,YAAY,QAAW;AAChC,WAAO,IAAI;AAAA,MACT;AAAA,IAAA;AAAA,EAIJ;AAEA,SAAO,QAAQ;AAAA,IACb,MAAM,OAAO,KAAK;AACZ,UAAA;AAEA,UAAA,OAAO,WAAW,YAAY;AACnB,qBAAA,MAAM,OAAO,GAAG;AAAA,MAAA,OACxB;AACQ,qBAAA;AAAA,MACf;AAEM,YAAA,YAAY,MAAM,QAAQ,UAAU,IAAI,aAAa,WAAW,MAAM,SAAS;AAE/E,YAAA,gBAAgB,IAAI,QAAQ,UAAU;AACxC,UAAA,UAAU,SAAS,GAAG,GAAG;AAC3B,eAAO,cAAc,gBAAgB;AAAA,MACvC;AAEA,UAAI,CAAC,UAAU,SAAS,aAAa,GAAG;AACtC,eAAO,IAAI,MAAM,GAAG,aAAa,wBAAwB;AAAA,MAC3D;AACO,aAAA;AAAA,IACT;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,cAAc;AAAA,IACd;AAAA,EAAA,CACD;AACH;"}
1
+ {"version":3,"file":"cors.mjs","sources":["../../src/middlewares/cors.ts"],"sourcesContent":["import koaCors from '@koa/cors';\n\nimport type { Core } from '@strapi/types';\n\nexport type Config = {\n enabled?: boolean;\n origin: string | string[] | ((ctx: any) => string | string[]);\n expose?: string | string[];\n maxAge?: number;\n credentials?: boolean;\n methods?: string | string[];\n headers?: string | string[];\n keepHeadersOnError?: boolean;\n};\n\nconst defaults: Config = {\n origin: '*',\n maxAge: 31536000,\n credentials: true,\n methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],\n headers: ['Content-Type', 'Authorization', 'Origin', 'Accept'],\n keepHeadersOnError: false,\n};\n\nexport const cors: Core.MiddlewareFactory<Config> = (config) => {\n const { origin, expose, maxAge, credentials, methods, headers, keepHeadersOnError } = {\n ...defaults,\n ...config,\n };\n\n if (config.enabled !== undefined) {\n strapi.log.warn(\n 'The strapi::cors middleware no longer supports the `enabled` option. Using it' +\n ' to conditionally enable CORS might cause an insecure default. To disable strapi::cors, remove it from' +\n ' the exported array in config/middleware.js'\n );\n }\n\n return koaCors({\n async origin(ctx) {\n if (!ctx.get('Origin')) {\n return '*';\n }\n\n let originList: string | string[];\n\n if (typeof origin === 'function') {\n originList = await origin(ctx);\n } else {\n originList = origin;\n }\n\n if (Array.isArray(originList)) {\n return originList.includes(ctx.get('Origin')) ? ctx.get('Origin') : '';\n }\n\n const parsedOrigin = originList.split(',').map((origin) => origin.trim());\n if (parsedOrigin.length > 1) {\n return parsedOrigin.includes(ctx.get('Origin')) ? ctx.get('Origin') : '';\n }\n\n return originList;\n },\n exposeHeaders: expose,\n maxAge,\n credentials,\n allowMethods: methods,\n allowHeaders: headers,\n keepHeadersOnError,\n });\n};\n"],"names":["origin"],"mappings":";AAeA,MAAM,WAAmB;AAAA,EACvB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,SAAS,CAAC,OAAO,QAAQ,OAAO,SAAS,UAAU,QAAQ,SAAS;AAAA,EACpE,SAAS,CAAC,gBAAgB,iBAAiB,UAAU,QAAQ;AAAA,EAC7D,oBAAoB;AACtB;AAEa,MAAA,OAAuC,CAAC,WAAW;AACxD,QAAA,EAAE,QAAQ,QAAQ,QAAQ,aAAa,SAAS,SAAS,uBAAuB;AAAA,IACpF,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAEI,MAAA,OAAO,YAAY,QAAW;AAChC,WAAO,IAAI;AAAA,MACT;AAAA,IAGF;AAAA,EAAA;AAGF,SAAO,QAAQ;AAAA,IACb,MAAM,OAAO,KAAK;AAChB,UAAI,CAAC,IAAI,IAAI,QAAQ,GAAG;AACf,eAAA;AAAA,MAAA;AAGL,UAAA;AAEA,UAAA,OAAO,WAAW,YAAY;AACnB,qBAAA,MAAM,OAAO,GAAG;AAAA,MAAA,OACxB;AACQ,qBAAA;AAAA,MAAA;AAGX,UAAA,MAAM,QAAQ,UAAU,GAAG;AACtB,eAAA,WAAW,SAAS,IAAI,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,QAAQ,IAAI;AAAA,MAAA;AAGhE,YAAA,eAAe,WAAW,MAAM,GAAG,EAAE,IAAI,CAACA,YAAWA,QAAO,MAAM;AACpE,UAAA,aAAa,SAAS,GAAG;AACpB,eAAA,aAAa,SAAS,IAAI,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,QAAQ,IAAI;AAAA,MAAA;AAGjE,aAAA;AAAA,IACT;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,cAAc;AAAA,IACd;AAAA,EAAA,CACD;AACH;"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sources":["../../src/middlewares/errors.ts"],"sourcesContent":["import { errors } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nimport { formatApplicationError, formatHttpError, formatInternalError } from '../services/errors';\n\nconst errorMiddleware: Core.MiddlewareFactory = (/* _, { strapi } */) => {\n return async (ctx, next) => {\n try {\n await next();\n\n if (!ctx.response._explicitStatus) {\n return ctx.notFound();\n }\n } catch (error) {\n if (error instanceof errors.ApplicationError) {\n const { status, body } = formatApplicationError(error);\n ctx.status = status;\n ctx.body = body;\n return;\n }\n\n if (error instanceof errors.HttpError) {\n const { status, body } = formatHttpError(error);\n ctx.status = status;\n ctx.body = body;\n return;\n }\n\n strapi.log.error(error);\n\n const { status, body } = formatInternalError(error);\n ctx.status = status;\n ctx.body = body;\n }\n };\n};\n\nexport { errorMiddleware as errors };\n"],"names":["errors","status","body","formatApplicationError","formatHttpError","formatInternalError"],"mappings":";;;;AAKA,MAAM,kBAA0C,MAAyB;AAChE,SAAA,OAAO,KAAK,SAAS;AACtB,QAAA;AACF,YAAM,KAAK;AAEP,UAAA,CAAC,IAAI,SAAS,iBAAiB;AACjC,eAAO,IAAI;MACb;AAAA,aACO,OAAO;AACV,UAAA,iBAAiBA,mBAAO,kBAAkB;AAC5C,cAAM,EAAE,QAAAC,SAAQ,MAAAC,UAASC,OAAAA,uBAAuB,KAAK;AACrD,YAAI,SAASF;AACb,YAAI,OAAOC;AACX;AAAA,MACF;AAEI,UAAA,iBAAiBF,mBAAO,WAAW;AACrC,cAAM,EAAE,QAAAC,SAAQ,MAAAC,UAASE,OAAAA,gBAAgB,KAAK;AAC9C,YAAI,SAASH;AACb,YAAI,OAAOC;AACX;AAAA,MACF;AAEO,aAAA,IAAI,MAAM,KAAK;AAEtB,YAAM,EAAE,QAAQ,KAAK,IAAIG,2BAAoB,KAAK;AAClD,UAAI,SAAS;AACb,UAAI,OAAO;AAAA,IACb;AAAA,EAAA;AAEJ;;"}
1
+ {"version":3,"file":"errors.js","sources":["../../src/middlewares/errors.ts"],"sourcesContent":["import { errors } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nimport { formatApplicationError, formatHttpError, formatInternalError } from '../services/errors';\n\nconst errorMiddleware: Core.MiddlewareFactory = (/* _, { strapi } */) => {\n return async (ctx, next) => {\n try {\n await next();\n\n if (!ctx.response._explicitStatus) {\n return ctx.notFound();\n }\n } catch (error) {\n if (error instanceof errors.ApplicationError) {\n const { status, body } = formatApplicationError(error);\n ctx.status = status;\n ctx.body = body;\n return;\n }\n\n if (error instanceof errors.HttpError) {\n const { status, body } = formatHttpError(error);\n ctx.status = status;\n ctx.body = body;\n return;\n }\n\n strapi.log.error(error);\n\n const { status, body } = formatInternalError(error);\n ctx.status = status;\n ctx.body = body;\n }\n };\n};\n\nexport { errorMiddleware as errors };\n"],"names":["errors","status","body","formatApplicationError","formatHttpError","formatInternalError"],"mappings":";;;;AAKA,MAAM,kBAA0C,MAAyB;AAChE,SAAA,OAAO,KAAK,SAAS;AACtB,QAAA;AACF,YAAM,KAAK;AAEP,UAAA,CAAC,IAAI,SAAS,iBAAiB;AACjC,eAAO,IAAI,SAAS;AAAA,MAAA;AAAA,aAEf,OAAO;AACV,UAAA,iBAAiBA,mBAAO,kBAAkB;AAC5C,cAAM,EAAE,QAAAC,SAAQ,MAAAC,MAAK,IAAIC,8BAAuB,KAAK;AACrD,YAAI,SAASF;AACb,YAAI,OAAOC;AACX;AAAA,MAAA;AAGE,UAAA,iBAAiBF,mBAAO,WAAW;AACrC,cAAM,EAAE,QAAAC,SAAQ,MAAAC,MAAK,IAAIE,uBAAgB,KAAK;AAC9C,YAAI,SAASH;AACb,YAAI,OAAOC;AACX;AAAA,MAAA;AAGK,aAAA,IAAI,MAAM,KAAK;AAEtB,YAAM,EAAE,QAAQ,SAASG,OAAAA,oBAAoB,KAAK;AAClD,UAAI,SAAS;AACb,UAAI,OAAO;AAAA,IAAA;AAAA,EAEf;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.mjs","sources":["../../src/middlewares/errors.ts"],"sourcesContent":["import { errors } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nimport { formatApplicationError, formatHttpError, formatInternalError } from '../services/errors';\n\nconst errorMiddleware: Core.MiddlewareFactory = (/* _, { strapi } */) => {\n return async (ctx, next) => {\n try {\n await next();\n\n if (!ctx.response._explicitStatus) {\n return ctx.notFound();\n }\n } catch (error) {\n if (error instanceof errors.ApplicationError) {\n const { status, body } = formatApplicationError(error);\n ctx.status = status;\n ctx.body = body;\n return;\n }\n\n if (error instanceof errors.HttpError) {\n const { status, body } = formatHttpError(error);\n ctx.status = status;\n ctx.body = body;\n return;\n }\n\n strapi.log.error(error);\n\n const { status, body } = formatInternalError(error);\n ctx.status = status;\n ctx.body = body;\n }\n };\n};\n\nexport { errorMiddleware as errors };\n"],"names":["status","body"],"mappings":";;AAKA,MAAM,kBAA0C,MAAyB;AAChE,SAAA,OAAO,KAAK,SAAS;AACtB,QAAA;AACF,YAAM,KAAK;AAEP,UAAA,CAAC,IAAI,SAAS,iBAAiB;AACjC,eAAO,IAAI;MACb;AAAA,aACO,OAAO;AACV,UAAA,iBAAiB,OAAO,kBAAkB;AAC5C,cAAM,EAAE,QAAAA,SAAQ,MAAAC,UAAS,uBAAuB,KAAK;AACrD,YAAI,SAASD;AACb,YAAI,OAAOC;AACX;AAAA,MACF;AAEI,UAAA,iBAAiB,OAAO,WAAW;AACrC,cAAM,EAAE,QAAAD,SAAQ,MAAAC,UAAS,gBAAgB,KAAK;AAC9C,YAAI,SAASD;AACb,YAAI,OAAOC;AACX;AAAA,MACF;AAEO,aAAA,IAAI,MAAM,KAAK;AAEtB,YAAM,EAAE,QAAQ,KAAK,IAAI,oBAAoB,KAAK;AAClD,UAAI,SAAS;AACb,UAAI,OAAO;AAAA,IACb;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"errors.mjs","sources":["../../src/middlewares/errors.ts"],"sourcesContent":["import { errors } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nimport { formatApplicationError, formatHttpError, formatInternalError } from '../services/errors';\n\nconst errorMiddleware: Core.MiddlewareFactory = (/* _, { strapi } */) => {\n return async (ctx, next) => {\n try {\n await next();\n\n if (!ctx.response._explicitStatus) {\n return ctx.notFound();\n }\n } catch (error) {\n if (error instanceof errors.ApplicationError) {\n const { status, body } = formatApplicationError(error);\n ctx.status = status;\n ctx.body = body;\n return;\n }\n\n if (error instanceof errors.HttpError) {\n const { status, body } = formatHttpError(error);\n ctx.status = status;\n ctx.body = body;\n return;\n }\n\n strapi.log.error(error);\n\n const { status, body } = formatInternalError(error);\n ctx.status = status;\n ctx.body = body;\n }\n };\n};\n\nexport { errorMiddleware as errors };\n"],"names":["status","body"],"mappings":";;AAKA,MAAM,kBAA0C,MAAyB;AAChE,SAAA,OAAO,KAAK,SAAS;AACtB,QAAA;AACF,YAAM,KAAK;AAEP,UAAA,CAAC,IAAI,SAAS,iBAAiB;AACjC,eAAO,IAAI,SAAS;AAAA,MAAA;AAAA,aAEf,OAAO;AACV,UAAA,iBAAiB,OAAO,kBAAkB;AAC5C,cAAM,EAAE,QAAAA,SAAQ,MAAAC,MAAK,IAAI,uBAAuB,KAAK;AACrD,YAAI,SAASD;AACb,YAAI,OAAOC;AACX;AAAA,MAAA;AAGE,UAAA,iBAAiB,OAAO,WAAW;AACrC,cAAM,EAAE,QAAAD,SAAQ,MAAAC,MAAK,IAAI,gBAAgB,KAAK;AAC9C,YAAI,SAASD;AACb,YAAI,OAAOC;AACX;AAAA,MAAA;AAGK,aAAA,IAAI,MAAM,KAAK;AAEtB,YAAM,EAAE,QAAQ,SAAS,oBAAoB,KAAK;AAClD,UAAI,SAAS;AACb,UAAI,OAAO;AAAA,IAAA;AAAA,EAEf;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"favicon.js","sources":["../../src/middlewares/favicon.ts"],"sourcesContent":["import { existsSync } from 'fs';\nimport { resolve } from 'path';\nimport koaFavicon from 'koa-favicon';\nimport type { Core } from '@strapi/types';\n\nexport type Config = NonNullable<Parameters<typeof koaFavicon>[1]>;\n\nconst defaults = {\n path: 'favicon.png',\n maxAge: 86400000,\n};\n\nexport const favicon: Core.MiddlewareFactory<Config> = (config, { strapi }) => {\n const { maxAge, path: faviconDefaultPath } = { ...defaults, ...config };\n const { root: appRoot } = strapi.dirs.app;\n let faviconPath = faviconDefaultPath;\n\n /** TODO (v5): Updating the favicon to use a png caused\n * https://github.com/strapi/strapi/issues/14693\n *\n * This check ensures backwards compatibility until\n * the next major version\n */\n if (!existsSync(resolve(appRoot, faviconPath))) {\n faviconPath = 'favicon.ico';\n }\n\n return koaFavicon(resolve(appRoot, faviconPath), { maxAge });\n};\n"],"names":["existsSync","resolve","koaFavicon"],"mappings":";;;;;;;AAOA,MAAM,WAAW;AAAA,EACf,MAAM;AAAA,EACN,QAAQ;AACV;AAEO,MAAM,UAA0C,CAAC,QAAQ,EAAE,aAAa;AACvE,QAAA,EAAE,QAAQ,MAAM,mBAAA,IAAuB,EAAE,GAAG,UAAU,GAAG;AAC/D,QAAM,EAAE,MAAM,QAAQ,IAAI,OAAO,KAAK;AACtC,MAAI,cAAc;AAQlB,MAAI,CAACA,GAAAA,WAAWC,KAAAA,QAAQ,SAAS,WAAW,CAAC,GAAG;AAChC,kBAAA;AAAA,EAChB;AAEA,SAAOC,oBAAAA,QAAWD,KAAAA,QAAQ,SAAS,WAAW,GAAG,EAAE,QAAQ;AAC7D;;"}
1
+ {"version":3,"file":"favicon.js","sources":["../../src/middlewares/favicon.ts"],"sourcesContent":["import { existsSync } from 'fs';\nimport { resolve } from 'path';\nimport koaFavicon from 'koa-favicon';\nimport type { Core } from '@strapi/types';\n\nexport type Config = NonNullable<Parameters<typeof koaFavicon>[1]>;\n\nconst defaults = {\n path: 'favicon.png',\n maxAge: 86400000,\n};\n\nexport const favicon: Core.MiddlewareFactory<Config> = (config, { strapi }) => {\n const { maxAge, path: faviconDefaultPath } = { ...defaults, ...config };\n const { root: appRoot } = strapi.dirs.app;\n let faviconPath = faviconDefaultPath;\n\n /** TODO (v5): Updating the favicon to use a png caused\n * https://github.com/strapi/strapi/issues/14693\n *\n * This check ensures backwards compatibility until\n * the next major version\n */\n if (!existsSync(resolve(appRoot, faviconPath))) {\n faviconPath = 'favicon.ico';\n }\n\n return koaFavicon(resolve(appRoot, faviconPath), { maxAge });\n};\n"],"names":["existsSync","resolve","koaFavicon"],"mappings":";;;;;;;AAOA,MAAM,WAAW;AAAA,EACf,MAAM;AAAA,EACN,QAAQ;AACV;AAEO,MAAM,UAA0C,CAAC,QAAQ,EAAE,aAAa;AACvE,QAAA,EAAE,QAAQ,MAAM,uBAAuB,EAAE,GAAG,UAAU,GAAG,OAAO;AACtE,QAAM,EAAE,MAAM,QAAQ,IAAI,OAAO,KAAK;AACtC,MAAI,cAAc;AAQlB,MAAI,CAACA,GAAAA,WAAWC,KAAAA,QAAQ,SAAS,WAAW,CAAC,GAAG;AAChC,kBAAA;AAAA,EAAA;AAGhB,SAAOC,oBAAAA,QAAWD,KAAAA,QAAQ,SAAS,WAAW,GAAG,EAAE,QAAQ;AAC7D;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"favicon.mjs","sources":["../../src/middlewares/favicon.ts"],"sourcesContent":["import { existsSync } from 'fs';\nimport { resolve } from 'path';\nimport koaFavicon from 'koa-favicon';\nimport type { Core } from '@strapi/types';\n\nexport type Config = NonNullable<Parameters<typeof koaFavicon>[1]>;\n\nconst defaults = {\n path: 'favicon.png',\n maxAge: 86400000,\n};\n\nexport const favicon: Core.MiddlewareFactory<Config> = (config, { strapi }) => {\n const { maxAge, path: faviconDefaultPath } = { ...defaults, ...config };\n const { root: appRoot } = strapi.dirs.app;\n let faviconPath = faviconDefaultPath;\n\n /** TODO (v5): Updating the favicon to use a png caused\n * https://github.com/strapi/strapi/issues/14693\n *\n * This check ensures backwards compatibility until\n * the next major version\n */\n if (!existsSync(resolve(appRoot, faviconPath))) {\n faviconPath = 'favicon.ico';\n }\n\n return koaFavicon(resolve(appRoot, faviconPath), { maxAge });\n};\n"],"names":[],"mappings":";;;AAOA,MAAM,WAAW;AAAA,EACf,MAAM;AAAA,EACN,QAAQ;AACV;AAEO,MAAM,UAA0C,CAAC,QAAQ,EAAE,aAAa;AACvE,QAAA,EAAE,QAAQ,MAAM,mBAAA,IAAuB,EAAE,GAAG,UAAU,GAAG;AAC/D,QAAM,EAAE,MAAM,QAAQ,IAAI,OAAO,KAAK;AACtC,MAAI,cAAc;AAQlB,MAAI,CAAC,WAAW,QAAQ,SAAS,WAAW,CAAC,GAAG;AAChC,kBAAA;AAAA,EAChB;AAEA,SAAO,WAAW,QAAQ,SAAS,WAAW,GAAG,EAAE,QAAQ;AAC7D;"}
1
+ {"version":3,"file":"favicon.mjs","sources":["../../src/middlewares/favicon.ts"],"sourcesContent":["import { existsSync } from 'fs';\nimport { resolve } from 'path';\nimport koaFavicon from 'koa-favicon';\nimport type { Core } from '@strapi/types';\n\nexport type Config = NonNullable<Parameters<typeof koaFavicon>[1]>;\n\nconst defaults = {\n path: 'favicon.png',\n maxAge: 86400000,\n};\n\nexport const favicon: Core.MiddlewareFactory<Config> = (config, { strapi }) => {\n const { maxAge, path: faviconDefaultPath } = { ...defaults, ...config };\n const { root: appRoot } = strapi.dirs.app;\n let faviconPath = faviconDefaultPath;\n\n /** TODO (v5): Updating the favicon to use a png caused\n * https://github.com/strapi/strapi/issues/14693\n *\n * This check ensures backwards compatibility until\n * the next major version\n */\n if (!existsSync(resolve(appRoot, faviconPath))) {\n faviconPath = 'favicon.ico';\n }\n\n return koaFavicon(resolve(appRoot, faviconPath), { maxAge });\n};\n"],"names":[],"mappings":";;;AAOA,MAAM,WAAW;AAAA,EACf,MAAM;AAAA,EACN,QAAQ;AACV;AAEO,MAAM,UAA0C,CAAC,QAAQ,EAAE,aAAa;AACvE,QAAA,EAAE,QAAQ,MAAM,uBAAuB,EAAE,GAAG,UAAU,GAAG,OAAO;AACtE,QAAM,EAAE,MAAM,QAAQ,IAAI,OAAO,KAAK;AACtC,MAAI,cAAc;AAQlB,MAAI,CAAC,WAAW,QAAQ,SAAS,WAAW,CAAC,GAAG;AAChC,kBAAA;AAAA,EAAA;AAGhB,SAAO,WAAW,QAAQ,SAAS,WAAW,GAAG,EAAE,QAAQ;AAC7D;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/middlewares/index.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { compression } from './compression';\nimport { cors } from './cors';\nimport { errors } from './errors';\nimport { favicon } from './favicon';\nimport { ip } from './ip';\nimport { logger } from './logger';\nimport { poweredBy } from './powered-by';\nimport { body } from './body';\nimport { query } from './query';\nimport { responseTime } from './response-time';\nimport { responses } from './responses';\nimport { security } from './security';\nimport { session } from './session';\nimport { publicStatic } from './public';\n\nexport const middlewares: Record<string, Core.MiddlewareFactory> = {\n compression,\n cors,\n errors,\n favicon,\n ip,\n logger,\n poweredBy,\n body,\n query,\n responseTime,\n responses,\n security,\n session,\n public: publicStatic,\n};\n"],"names":["compression","cors","errors","favicon","ip","logger","poweredBy","body","query","responseTime","responses","security","session","publicStatic"],"mappings":";;;;;;;;;;;;;;;;AAgBO,MAAM,cAAsD;AAAA,EAAA,aACjEA,YAAA;AAAA,EAAA,MACAC,KAAA;AAAA,EAAA,QACAC,OAAA;AAAA,EAAA,SACAC,QAAA;AAAA,EAAA,IACAC,GAAA;AAAA,EAAA,QACAC,OAAA;AAAA,EAAA,WACAC,UAAA;AAAA,EAAA,MACAC,KAAA;AAAA,EAAA,OACAC,MAAA;AAAA,EAAA,cACAC,aAAA;AAAA,EAAA,WACAC,UAAA;AAAA,EAAA,UACAC,SAAA;AAAA,EAAA,SACAC,QAAA;AAAA,EACA,QAAQC,QAAA;AACV;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/middlewares/index.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { compression } from './compression';\nimport { cors } from './cors';\nimport { errors } from './errors';\nimport { favicon } from './favicon';\nimport { ip } from './ip';\nimport { logger } from './logger';\nimport { poweredBy } from './powered-by';\nimport { body } from './body';\nimport { query } from './query';\nimport { responseTime } from './response-time';\nimport { responses } from './responses';\nimport { security } from './security';\nimport { session } from './session';\nimport { publicStatic } from './public';\n\nexport const middlewares: Record<string, Core.MiddlewareFactory> = {\n compression,\n cors,\n errors,\n favicon,\n ip,\n logger,\n poweredBy,\n body,\n query,\n responseTime,\n responses,\n security,\n session,\n public: publicStatic,\n};\n"],"names":["compression","cors","errors","favicon","ip","logger","poweredBy","body","query","responseTime","responses","security","session","publicStatic"],"mappings":";;;;;;;;;;;;;;;;AAgBO,MAAM,cAAsD;AAAA,EAAA,aACjEA,YAAA;AAAA,EAAA,MACAC,KAAA;AAAA,EAAA,QACAC,OAAA;AAAA,EAAA,SACAC,QAAA;AAAA,EAAA,IACAC,GAAA;AAAA,EAAA,QACAC,OAAA;AAAA,EAAA,WACAC,UAAA;AAAA,EAAA,MACAC,KAAA;AAAA,EAAA,OACAC,MAAA;AAAA,EAAA,cACAC,aAAA;AAAA,EAAA,WACAC,UAAA;AAAA,EAAA,UACAC,SAAA;AAAA,EAAA,SACAC,QAAA;AAAA,EACA,QAAQC,QAAAA;AACV;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sources":["../../src/middlewares/logger.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport const logger: Core.MiddlewareFactory = (_, { strapi }) => {\n return async (ctx, next) => {\n const start = Date.now();\n await next();\n const delta = Math.ceil(Date.now() - start);\n\n strapi.log.http(`${ctx.method} ${ctx.url} (${delta} ms) ${ctx.status}`);\n };\n};\n"],"names":[],"mappings":";;AAEO,MAAM,SAAiC,CAAC,GAAG,EAAE,aAAa;AACxD,SAAA,OAAO,KAAK,SAAS;AACpB,UAAA,QAAQ,KAAK;AACnB,UAAM,KAAK;AACX,UAAM,QAAQ,KAAK,KAAK,KAAK,IAAA,IAAQ,KAAK;AAE1C,WAAO,IAAI,KAAK,GAAG,IAAI,MAAM,IAAI,IAAI,GAAG,KAAK,KAAK,QAAQ,IAAI,MAAM,EAAE;AAAA,EAAA;AAE1E;;"}
1
+ {"version":3,"file":"logger.js","sources":["../../src/middlewares/logger.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport const logger: Core.MiddlewareFactory = (_, { strapi }) => {\n return async (ctx, next) => {\n const start = Date.now();\n await next();\n const delta = Math.ceil(Date.now() - start);\n\n strapi.log.http(`${ctx.method} ${ctx.url} (${delta} ms) ${ctx.status}`);\n };\n};\n"],"names":[],"mappings":";;AAEO,MAAM,SAAiC,CAAC,GAAG,EAAE,aAAa;AACxD,SAAA,OAAO,KAAK,SAAS;AACpB,UAAA,QAAQ,KAAK,IAAI;AACvB,UAAM,KAAK;AACX,UAAM,QAAQ,KAAK,KAAK,KAAK,QAAQ,KAAK;AAE1C,WAAO,IAAI,KAAK,GAAG,IAAI,MAAM,IAAI,IAAI,GAAG,KAAK,KAAK,QAAQ,IAAI,MAAM,EAAE;AAAA,EACxE;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.mjs","sources":["../../src/middlewares/logger.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport const logger: Core.MiddlewareFactory = (_, { strapi }) => {\n return async (ctx, next) => {\n const start = Date.now();\n await next();\n const delta = Math.ceil(Date.now() - start);\n\n strapi.log.http(`${ctx.method} ${ctx.url} (${delta} ms) ${ctx.status}`);\n };\n};\n"],"names":[],"mappings":"AAEO,MAAM,SAAiC,CAAC,GAAG,EAAE,aAAa;AACxD,SAAA,OAAO,KAAK,SAAS;AACpB,UAAA,QAAQ,KAAK;AACnB,UAAM,KAAK;AACX,UAAM,QAAQ,KAAK,KAAK,KAAK,IAAA,IAAQ,KAAK;AAE1C,WAAO,IAAI,KAAK,GAAG,IAAI,MAAM,IAAI,IAAI,GAAG,KAAK,KAAK,QAAQ,IAAI,MAAM,EAAE;AAAA,EAAA;AAE1E;"}
1
+ {"version":3,"file":"logger.mjs","sources":["../../src/middlewares/logger.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport const logger: Core.MiddlewareFactory = (_, { strapi }) => {\n return async (ctx, next) => {\n const start = Date.now();\n await next();\n const delta = Math.ceil(Date.now() - start);\n\n strapi.log.http(`${ctx.method} ${ctx.url} (${delta} ms) ${ctx.status}`);\n };\n};\n"],"names":[],"mappings":"AAEO,MAAM,SAAiC,CAAC,GAAG,EAAE,aAAa;AACxD,SAAA,OAAO,KAAK,SAAS;AACpB,UAAA,QAAQ,KAAK,IAAI;AACvB,UAAM,KAAK;AACX,UAAM,QAAQ,KAAK,KAAK,KAAK,QAAQ,KAAK;AAE1C,WAAO,IAAI,KAAK,GAAG,IAAI,MAAM,IAAI,IAAI,GAAG,KAAK,KAAK,QAAQ,IAAI,MAAM,EAAE;AAAA,EACxE;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"powered-by.js","sources":["../../src/middlewares/powered-by.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport interface Config {\n poweredBy: string;\n}\n\nconst defaults: Config = {\n poweredBy: 'Strapi <strapi.io>',\n};\n\nexport const poweredBy: Core.MiddlewareFactory<Partial<Config>> = (config) => {\n const { poweredBy } = { ...defaults, ...config };\n\n return async (ctx, next) => {\n await next();\n\n ctx.set('X-Powered-By', poweredBy);\n };\n};\n"],"names":["poweredBy"],"mappings":";;AAMA,MAAM,WAAmB;AAAA,EACvB,WAAW;AACb;AAEa,MAAA,YAAqD,CAAC,WAAW;AACtE,QAAA,EAAE,WAAAA,WAAU,IAAI,EAAE,GAAG,UAAU,GAAG;AAEjC,SAAA,OAAO,KAAK,SAAS;AAC1B,UAAM,KAAK;AAEP,QAAA,IAAI,gBAAgBA,UAAS;AAAA,EAAA;AAErC;;"}
1
+ {"version":3,"file":"powered-by.js","sources":["../../src/middlewares/powered-by.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport interface Config {\n poweredBy: string;\n}\n\nconst defaults: Config = {\n poweredBy: 'Strapi <strapi.io>',\n};\n\nexport const poweredBy: Core.MiddlewareFactory<Partial<Config>> = (config) => {\n const { poweredBy } = { ...defaults, ...config };\n\n return async (ctx, next) => {\n await next();\n\n ctx.set('X-Powered-By', poweredBy);\n };\n};\n"],"names":["poweredBy"],"mappings":";;AAMA,MAAM,WAAmB;AAAA,EACvB,WAAW;AACb;AAEa,MAAA,YAAqD,CAAC,WAAW;AACtE,QAAA,EAAE,WAAAA,WAAU,IAAI,EAAE,GAAG,UAAU,GAAG,OAAO;AAExC,SAAA,OAAO,KAAK,SAAS;AAC1B,UAAM,KAAK;AAEP,QAAA,IAAI,gBAAgBA,UAAS;AAAA,EACnC;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"powered-by.mjs","sources":["../../src/middlewares/powered-by.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport interface Config {\n poweredBy: string;\n}\n\nconst defaults: Config = {\n poweredBy: 'Strapi <strapi.io>',\n};\n\nexport const poweredBy: Core.MiddlewareFactory<Partial<Config>> = (config) => {\n const { poweredBy } = { ...defaults, ...config };\n\n return async (ctx, next) => {\n await next();\n\n ctx.set('X-Powered-By', poweredBy);\n };\n};\n"],"names":["poweredBy"],"mappings":"AAMA,MAAM,WAAmB;AAAA,EACvB,WAAW;AACb;AAEa,MAAA,YAAqD,CAAC,WAAW;AACtE,QAAA,EAAE,WAAAA,WAAU,IAAI,EAAE,GAAG,UAAU,GAAG;AAEjC,SAAA,OAAO,KAAK,SAAS;AAC1B,UAAM,KAAK;AAEP,QAAA,IAAI,gBAAgBA,UAAS;AAAA,EAAA;AAErC;"}
1
+ {"version":3,"file":"powered-by.mjs","sources":["../../src/middlewares/powered-by.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport interface Config {\n poweredBy: string;\n}\n\nconst defaults: Config = {\n poweredBy: 'Strapi <strapi.io>',\n};\n\nexport const poweredBy: Core.MiddlewareFactory<Partial<Config>> = (config) => {\n const { poweredBy } = { ...defaults, ...config };\n\n return async (ctx, next) => {\n await next();\n\n ctx.set('X-Powered-By', poweredBy);\n };\n};\n"],"names":["poweredBy"],"mappings":"AAMA,MAAM,WAAmB;AAAA,EACvB,WAAW;AACb;AAEa,MAAA,YAAqD,CAAC,WAAW;AACtE,QAAA,EAAE,WAAAA,WAAU,IAAI,EAAE,GAAG,UAAU,GAAG,OAAO;AAExC,SAAA,OAAO,KAAK,SAAS;AAC1B,UAAM,KAAK;AAEP,QAAA,IAAI,gBAAgBA,UAAS;AAAA,EACnC;AACF;"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const _ = require("lodash/fp");
3
+ const fp = require("lodash/fp");
4
4
  const koaStatic = require("koa-static");
5
5
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
6
6
  const koaStatic__default = /* @__PURE__ */ _interopDefault(koaStatic);
@@ -8,7 +8,7 @@ const defaults = {
8
8
  maxAge: 6e4
9
9
  };
10
10
  const publicStatic = (config, { strapi }) => {
11
- const { maxAge } = _.defaultsDeep(defaults, config);
11
+ const { maxAge } = fp.defaultsDeep(defaults, config);
12
12
  strapi.server.routes([
13
13
  {
14
14
  method: "GET",
@@ -1 +1 @@
1
- {"version":3,"file":"public.js","sources":["../../src/middlewares/public.ts"],"sourcesContent":["import { defaultsDeep } from 'lodash/fp';\nimport koaStatic from 'koa-static';\nimport type { Core } from '@strapi/types';\n\ntype Config = koaStatic.Options;\n\nconst defaults = {\n maxAge: 60000,\n};\n\nexport const publicStatic: Core.MiddlewareFactory = (\n config: Config,\n { strapi }: { strapi: Core.Strapi }\n) => {\n const { maxAge } = defaultsDeep(defaults, config);\n\n strapi.server.routes([\n {\n method: 'GET',\n path: '/',\n handler(ctx) {\n ctx.redirect(strapi.config.get('admin.url', '/admin'));\n },\n config: { auth: false },\n },\n // All other public GET-routes except /uploads/(.*) which is handled in upload middleware\n {\n method: 'GET',\n path: '/((?!uploads/).+)',\n handler: koaStatic(strapi.dirs.static.public, {\n maxage: maxAge,\n defer: true,\n }),\n config: { auth: false },\n },\n ]);\n};\n"],"names":["defaultsDeep","koaStatic"],"mappings":";;;;;;AAMA,MAAM,WAAW;AAAA,EACf,QAAQ;AACV;AAEO,MAAM,eAAuC,CAClD,QACA,EAAE,aACC;AACH,QAAM,EAAE,OAAW,IAAAA,EAAA,aAAa,UAAU,MAAM;AAEhD,SAAO,OAAO,OAAO;AAAA,IACnB;AAAA,MACE,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AACX,YAAI,SAAS,OAAO,OAAO,IAAI,aAAa,QAAQ,CAAC;AAAA,MACvD;AAAA,MACA,QAAQ,EAAE,MAAM,MAAM;AAAA,IACxB;AAAA;AAAA,IAEA;AAAA,MACE,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAASC,mBAAAA,QAAU,OAAO,KAAK,OAAO,QAAQ;AAAA,QAC5C,QAAQ;AAAA,QACR,OAAO;AAAA,MAAA,CACR;AAAA,MACD,QAAQ,EAAE,MAAM,MAAM;AAAA,IACxB;AAAA,EAAA,CACD;AACH;;"}
1
+ {"version":3,"file":"public.js","sources":["../../src/middlewares/public.ts"],"sourcesContent":["import { defaultsDeep } from 'lodash/fp';\nimport koaStatic from 'koa-static';\nimport type { Core } from '@strapi/types';\n\ntype Config = koaStatic.Options;\n\nconst defaults = {\n maxAge: 60000,\n};\n\nexport const publicStatic: Core.MiddlewareFactory = (\n config: Config,\n { strapi }: { strapi: Core.Strapi }\n) => {\n const { maxAge } = defaultsDeep(defaults, config);\n\n strapi.server.routes([\n {\n method: 'GET',\n path: '/',\n handler(ctx) {\n ctx.redirect(strapi.config.get('admin.url', '/admin'));\n },\n config: { auth: false },\n },\n // All other public GET-routes except /uploads/(.*) which is handled in upload middleware\n {\n method: 'GET',\n path: '/((?!uploads/).+)',\n handler: koaStatic(strapi.dirs.static.public, {\n maxage: maxAge,\n defer: true,\n }),\n config: { auth: false },\n },\n ]);\n};\n"],"names":["defaultsDeep","koaStatic"],"mappings":";;;;;;AAMA,MAAM,WAAW;AAAA,EACf,QAAQ;AACV;AAEO,MAAM,eAAuC,CAClD,QACA,EAAE,aACC;AACH,QAAM,EAAE,OAAW,IAAAA,gBAAa,UAAU,MAAM;AAEhD,SAAO,OAAO,OAAO;AAAA,IACnB;AAAA,MACE,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AACX,YAAI,SAAS,OAAO,OAAO,IAAI,aAAa,QAAQ,CAAC;AAAA,MACvD;AAAA,MACA,QAAQ,EAAE,MAAM,MAAM;AAAA,IACxB;AAAA;AAAA,IAEA;AAAA,MACE,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAASC,mBAAAA,QAAU,OAAO,KAAK,OAAO,QAAQ;AAAA,QAC5C,QAAQ;AAAA,QACR,OAAO;AAAA,MAAA,CACR;AAAA,MACD,QAAQ,EAAE,MAAM,MAAM;AAAA,IAAA;AAAA,EACxB,CACD;AACH;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"public.mjs","sources":["../../src/middlewares/public.ts"],"sourcesContent":["import { defaultsDeep } from 'lodash/fp';\nimport koaStatic from 'koa-static';\nimport type { Core } from '@strapi/types';\n\ntype Config = koaStatic.Options;\n\nconst defaults = {\n maxAge: 60000,\n};\n\nexport const publicStatic: Core.MiddlewareFactory = (\n config: Config,\n { strapi }: { strapi: Core.Strapi }\n) => {\n const { maxAge } = defaultsDeep(defaults, config);\n\n strapi.server.routes([\n {\n method: 'GET',\n path: '/',\n handler(ctx) {\n ctx.redirect(strapi.config.get('admin.url', '/admin'));\n },\n config: { auth: false },\n },\n // All other public GET-routes except /uploads/(.*) which is handled in upload middleware\n {\n method: 'GET',\n path: '/((?!uploads/).+)',\n handler: koaStatic(strapi.dirs.static.public, {\n maxage: maxAge,\n defer: true,\n }),\n config: { auth: false },\n },\n ]);\n};\n"],"names":[],"mappings":";;AAMA,MAAM,WAAW;AAAA,EACf,QAAQ;AACV;AAEO,MAAM,eAAuC,CAClD,QACA,EAAE,aACC;AACH,QAAM,EAAE,OAAW,IAAA,aAAa,UAAU,MAAM;AAEhD,SAAO,OAAO,OAAO;AAAA,IACnB;AAAA,MACE,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AACX,YAAI,SAAS,OAAO,OAAO,IAAI,aAAa,QAAQ,CAAC;AAAA,MACvD;AAAA,MACA,QAAQ,EAAE,MAAM,MAAM;AAAA,IACxB;AAAA;AAAA,IAEA;AAAA,MACE,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,UAAU,OAAO,KAAK,OAAO,QAAQ;AAAA,QAC5C,QAAQ;AAAA,QACR,OAAO;AAAA,MAAA,CACR;AAAA,MACD,QAAQ,EAAE,MAAM,MAAM;AAAA,IACxB;AAAA,EAAA,CACD;AACH;"}
1
+ {"version":3,"file":"public.mjs","sources":["../../src/middlewares/public.ts"],"sourcesContent":["import { defaultsDeep } from 'lodash/fp';\nimport koaStatic from 'koa-static';\nimport type { Core } from '@strapi/types';\n\ntype Config = koaStatic.Options;\n\nconst defaults = {\n maxAge: 60000,\n};\n\nexport const publicStatic: Core.MiddlewareFactory = (\n config: Config,\n { strapi }: { strapi: Core.Strapi }\n) => {\n const { maxAge } = defaultsDeep(defaults, config);\n\n strapi.server.routes([\n {\n method: 'GET',\n path: '/',\n handler(ctx) {\n ctx.redirect(strapi.config.get('admin.url', '/admin'));\n },\n config: { auth: false },\n },\n // All other public GET-routes except /uploads/(.*) which is handled in upload middleware\n {\n method: 'GET',\n path: '/((?!uploads/).+)',\n handler: koaStatic(strapi.dirs.static.public, {\n maxage: maxAge,\n defer: true,\n }),\n config: { auth: false },\n },\n ]);\n};\n"],"names":[],"mappings":";;AAMA,MAAM,WAAW;AAAA,EACf,QAAQ;AACV;AAEO,MAAM,eAAuC,CAClD,QACA,EAAE,aACC;AACH,QAAM,EAAE,OAAW,IAAA,aAAa,UAAU,MAAM;AAEhD,SAAO,OAAO,OAAO;AAAA,IACnB;AAAA,MACE,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ,KAAK;AACX,YAAI,SAAS,OAAO,OAAO,IAAI,aAAa,QAAQ,CAAC;AAAA,MACvD;AAAA,MACA,QAAQ,EAAE,MAAM,MAAM;AAAA,IACxB;AAAA;AAAA,IAEA;AAAA,MACE,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,UAAU,OAAO,KAAK,OAAO,QAAQ;AAAA,QAC5C,QAAQ;AAAA,QACR,OAAO;AAAA,MAAA,CACR;AAAA,MACD,QAAQ,EAAE,MAAM,MAAM;AAAA,IAAA;AAAA,EACxB,CACD;AACH;"}
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/middlewares/query.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AA2C1C,eAAO,MAAM,KAAK,EAAE,IAAI,CAAC,iBAKxB,CAAC"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/middlewares/query.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AA4C1C,eAAO,MAAM,KAAK,EAAE,IAAI,CAAC,iBAKxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sources":["../../src/middlewares/query.ts"],"sourcesContent":["import qs, { IParseOptions } from 'qs';\nimport type Koa from 'koa';\nimport type { Core } from '@strapi/types';\n\ntype Config = IParseOptions;\n\nconst defaults: Config = {\n strictNullHandling: true,\n arrayLimit: 100,\n depth: 20,\n};\n\n/**\n * Body parser hook\n */\nconst addQsParser = (app: Koa, settings: Config) => {\n Object.defineProperty(app.request, 'query', {\n configurable: false,\n enumerable: true,\n /*\n * Get parsed query-string.\n */\n get() {\n const qstr = this.querystring;\n this._querycache = this._querycache || {};\n const cache = this._querycache;\n\n if (!cache[qstr]) {\n cache[qstr] = qs.parse(qstr, settings);\n }\n\n return cache[qstr];\n },\n\n /*\n * Set query-string as an object.\n */\n set(obj) {\n this.querystring = qs.stringify(obj);\n },\n });\n\n return app;\n};\n\nexport const query: Core.MiddlewareFactory = (\n config: Partial<Config>,\n { strapi }: { strapi: Core.Strapi }\n) => {\n addQsParser(strapi.server.app, { ...defaults, ...config });\n};\n"],"names":["qs"],"mappings":";;;;;AAMA,MAAM,WAAmB;AAAA,EACvB,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AACT;AAKA,MAAM,cAAc,CAAC,KAAU,aAAqB;AAC3C,SAAA,eAAe,IAAI,SAAS,SAAS;AAAA,IAC1C,cAAc;AAAA,IACd,YAAY;AAAA;AAAA;AAAA;AAAA,IAIZ,MAAM;AACJ,YAAM,OAAO,KAAK;AACb,WAAA,cAAc,KAAK,eAAe,CAAA;AACvC,YAAM,QAAQ,KAAK;AAEf,UAAA,CAAC,MAAM,IAAI,GAAG;AAChB,cAAM,IAAI,IAAIA,YAAAA,QAAG,MAAM,MAAM,QAAQ;AAAA,MACvC;AAEA,aAAO,MAAM,IAAI;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAK;AACF,WAAA,cAAcA,YAAAA,QAAG,UAAU,GAAG;AAAA,IACrC;AAAA,EAAA,CACD;AAEM,SAAA;AACT;AAEO,MAAM,QAAgC,CAC3C,QACA,EAAE,aACC;AACS,cAAA,OAAO,OAAO,KAAK,EAAE,GAAG,UAAU,GAAG,QAAQ;AAC3D;;"}
1
+ {"version":3,"file":"query.js","sources":["../../src/middlewares/query.ts"],"sourcesContent":["import qs from 'qs';\nimport type Koa from 'koa';\nimport type { Core } from '@strapi/types';\n\ntype Config = Parameters<typeof qs.parse>[1];\n\nconst defaults: Config = {\n strictNullHandling: true,\n arrayLimit: 100,\n depth: 20,\n};\n\n/**\n * Body parser hook\n */\nconst addQsParser = (app: Koa, settings: Config) => {\n Object.defineProperty(app.request, 'query', {\n configurable: false,\n enumerable: true,\n /*\n * Get parsed query-string.\n */\n get() {\n const qstr = this.querystring;\n\n this._querycache = this._querycache || {};\n const cache = this._querycache;\n\n if (!cache[qstr]) {\n cache[qstr] = qs.parse(qstr, settings);\n }\n\n return cache[qstr];\n },\n\n /*\n * Set query-string as an object.\n */\n set(obj) {\n this.querystring = qs.stringify(obj);\n },\n } satisfies PropertyDescriptor & ThisType<Koa.BaseRequest>);\n\n return app;\n};\n\nexport const query: Core.MiddlewareFactory = (\n config: Partial<Config>,\n { strapi }: { strapi: Core.Strapi }\n) => {\n addQsParser(strapi.server.app, { ...defaults, ...config } as Config);\n};\n"],"names":["qs"],"mappings":";;;;;AAMA,MAAM,WAAmB;AAAA,EACvB,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AACT;AAKA,MAAM,cAAc,CAAC,KAAU,aAAqB;AAC3C,SAAA,eAAe,IAAI,SAAS,SAAS;AAAA,IAC1C,cAAc;AAAA,IACd,YAAY;AAAA;AAAA;AAAA;AAAA,IAIZ,MAAM;AACJ,YAAM,OAAO,KAAK;AAEb,WAAA,cAAc,KAAK,eAAe,CAAC;AACxC,YAAM,QAAQ,KAAK;AAEf,UAAA,CAAC,MAAM,IAAI,GAAG;AAChB,cAAM,IAAI,IAAIA,YAAAA,QAAG,MAAM,MAAM,QAAQ;AAAA,MAAA;AAGvC,aAAO,MAAM,IAAI;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAK;AACF,WAAA,cAAcA,oBAAG,UAAU,GAAG;AAAA,IAAA;AAAA,EACrC,CACwD;AAEnD,SAAA;AACT;AAEO,MAAM,QAAgC,CAC3C,QACA,EAAE,aACC;AACS,cAAA,OAAO,OAAO,KAAK,EAAE,GAAG,UAAU,GAAG,QAAkB;AACrE;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"query.mjs","sources":["../../src/middlewares/query.ts"],"sourcesContent":["import qs, { IParseOptions } from 'qs';\nimport type Koa from 'koa';\nimport type { Core } from '@strapi/types';\n\ntype Config = IParseOptions;\n\nconst defaults: Config = {\n strictNullHandling: true,\n arrayLimit: 100,\n depth: 20,\n};\n\n/**\n * Body parser hook\n */\nconst addQsParser = (app: Koa, settings: Config) => {\n Object.defineProperty(app.request, 'query', {\n configurable: false,\n enumerable: true,\n /*\n * Get parsed query-string.\n */\n get() {\n const qstr = this.querystring;\n this._querycache = this._querycache || {};\n const cache = this._querycache;\n\n if (!cache[qstr]) {\n cache[qstr] = qs.parse(qstr, settings);\n }\n\n return cache[qstr];\n },\n\n /*\n * Set query-string as an object.\n */\n set(obj) {\n this.querystring = qs.stringify(obj);\n },\n });\n\n return app;\n};\n\nexport const query: Core.MiddlewareFactory = (\n config: Partial<Config>,\n { strapi }: { strapi: Core.Strapi }\n) => {\n addQsParser(strapi.server.app, { ...defaults, ...config });\n};\n"],"names":[],"mappings":";AAMA,MAAM,WAAmB;AAAA,EACvB,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AACT;AAKA,MAAM,cAAc,CAAC,KAAU,aAAqB;AAC3C,SAAA,eAAe,IAAI,SAAS,SAAS;AAAA,IAC1C,cAAc;AAAA,IACd,YAAY;AAAA;AAAA;AAAA;AAAA,IAIZ,MAAM;AACJ,YAAM,OAAO,KAAK;AACb,WAAA,cAAc,KAAK,eAAe,CAAA;AACvC,YAAM,QAAQ,KAAK;AAEf,UAAA,CAAC,MAAM,IAAI,GAAG;AAChB,cAAM,IAAI,IAAI,GAAG,MAAM,MAAM,QAAQ;AAAA,MACvC;AAEA,aAAO,MAAM,IAAI;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAK;AACF,WAAA,cAAc,GAAG,UAAU,GAAG;AAAA,IACrC;AAAA,EAAA,CACD;AAEM,SAAA;AACT;AAEO,MAAM,QAAgC,CAC3C,QACA,EAAE,aACC;AACS,cAAA,OAAO,OAAO,KAAK,EAAE,GAAG,UAAU,GAAG,QAAQ;AAC3D;"}
1
+ {"version":3,"file":"query.mjs","sources":["../../src/middlewares/query.ts"],"sourcesContent":["import qs from 'qs';\nimport type Koa from 'koa';\nimport type { Core } from '@strapi/types';\n\ntype Config = Parameters<typeof qs.parse>[1];\n\nconst defaults: Config = {\n strictNullHandling: true,\n arrayLimit: 100,\n depth: 20,\n};\n\n/**\n * Body parser hook\n */\nconst addQsParser = (app: Koa, settings: Config) => {\n Object.defineProperty(app.request, 'query', {\n configurable: false,\n enumerable: true,\n /*\n * Get parsed query-string.\n */\n get() {\n const qstr = this.querystring;\n\n this._querycache = this._querycache || {};\n const cache = this._querycache;\n\n if (!cache[qstr]) {\n cache[qstr] = qs.parse(qstr, settings);\n }\n\n return cache[qstr];\n },\n\n /*\n * Set query-string as an object.\n */\n set(obj) {\n this.querystring = qs.stringify(obj);\n },\n } satisfies PropertyDescriptor & ThisType<Koa.BaseRequest>);\n\n return app;\n};\n\nexport const query: Core.MiddlewareFactory = (\n config: Partial<Config>,\n { strapi }: { strapi: Core.Strapi }\n) => {\n addQsParser(strapi.server.app, { ...defaults, ...config } as Config);\n};\n"],"names":[],"mappings":";AAMA,MAAM,WAAmB;AAAA,EACvB,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AACT;AAKA,MAAM,cAAc,CAAC,KAAU,aAAqB;AAC3C,SAAA,eAAe,IAAI,SAAS,SAAS;AAAA,IAC1C,cAAc;AAAA,IACd,YAAY;AAAA;AAAA;AAAA;AAAA,IAIZ,MAAM;AACJ,YAAM,OAAO,KAAK;AAEb,WAAA,cAAc,KAAK,eAAe,CAAC;AACxC,YAAM,QAAQ,KAAK;AAEf,UAAA,CAAC,MAAM,IAAI,GAAG;AAChB,cAAM,IAAI,IAAI,GAAG,MAAM,MAAM,QAAQ;AAAA,MAAA;AAGvC,aAAO,MAAM,IAAI;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAK;AACF,WAAA,cAAc,GAAG,UAAU,GAAG;AAAA,IAAA;AAAA,EACrC,CACwD;AAEnD,SAAA;AACT;AAEO,MAAM,QAAgC,CAC3C,QACA,EAAE,aACC;AACS,cAAA,OAAO,OAAO,KAAK,EAAE,GAAG,UAAU,GAAG,QAAkB;AACrE;"}
@@ -1 +1 @@
1
- {"version":3,"file":"response-time.js","sources":["../../src/middlewares/response-time.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport const responseTime: Core.MiddlewareFactory = () => {\n return async (ctx, next) => {\n const start = Date.now();\n\n await next();\n\n const delta = Math.ceil(Date.now() - start);\n ctx.set('X-Response-Time', `${delta}ms`);\n };\n};\n"],"names":[],"mappings":";;AAEO,MAAM,eAAuC,MAAM;AACjD,SAAA,OAAO,KAAK,SAAS;AACpB,UAAA,QAAQ,KAAK;AAEnB,UAAM,KAAK;AAEX,UAAM,QAAQ,KAAK,KAAK,KAAK,IAAA,IAAQ,KAAK;AAC1C,QAAI,IAAI,mBAAmB,GAAG,KAAK,IAAI;AAAA,EAAA;AAE3C;;"}
1
+ {"version":3,"file":"response-time.js","sources":["../../src/middlewares/response-time.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport const responseTime: Core.MiddlewareFactory = () => {\n return async (ctx, next) => {\n const start = Date.now();\n\n await next();\n\n const delta = Math.ceil(Date.now() - start);\n ctx.set('X-Response-Time', `${delta}ms`);\n };\n};\n"],"names":[],"mappings":";;AAEO,MAAM,eAAuC,MAAM;AACjD,SAAA,OAAO,KAAK,SAAS;AACpB,UAAA,QAAQ,KAAK,IAAI;AAEvB,UAAM,KAAK;AAEX,UAAM,QAAQ,KAAK,KAAK,KAAK,QAAQ,KAAK;AAC1C,QAAI,IAAI,mBAAmB,GAAG,KAAK,IAAI;AAAA,EACzC;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"response-time.mjs","sources":["../../src/middlewares/response-time.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport const responseTime: Core.MiddlewareFactory = () => {\n return async (ctx, next) => {\n const start = Date.now();\n\n await next();\n\n const delta = Math.ceil(Date.now() - start);\n ctx.set('X-Response-Time', `${delta}ms`);\n };\n};\n"],"names":[],"mappings":"AAEO,MAAM,eAAuC,MAAM;AACjD,SAAA,OAAO,KAAK,SAAS;AACpB,UAAA,QAAQ,KAAK;AAEnB,UAAM,KAAK;AAEX,UAAM,QAAQ,KAAK,KAAK,KAAK,IAAA,IAAQ,KAAK;AAC1C,QAAI,IAAI,mBAAmB,GAAG,KAAK,IAAI;AAAA,EAAA;AAE3C;"}
1
+ {"version":3,"file":"response-time.mjs","sources":["../../src/middlewares/response-time.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport const responseTime: Core.MiddlewareFactory = () => {\n return async (ctx, next) => {\n const start = Date.now();\n\n await next();\n\n const delta = Math.ceil(Date.now() - start);\n ctx.set('X-Response-Time', `${delta}ms`);\n };\n};\n"],"names":[],"mappings":"AAEO,MAAM,eAAuC,MAAM;AACjD,SAAA,OAAO,KAAK,SAAS;AACpB,UAAA,QAAQ,KAAK,IAAI;AAEvB,UAAM,KAAK;AAEX,UAAM,QAAQ,KAAK,KAAK,KAAK,QAAQ,KAAK;AAC1C,QAAI,IAAI,mBAAmB,GAAG,KAAK,IAAI;AAAA,EACzC;AACF;"}
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const _ = require("lodash/fp");
3
+ const fp = require("lodash/fp");
4
4
  const responses = (config = {}) => {
5
5
  return async (ctx, next) => {
6
6
  await next();
7
7
  const { status } = ctx;
8
8
  const handler = config?.handlers?.[status];
9
- if (_.isFunction(handler)) {
9
+ if (fp.isFunction(handler)) {
10
10
  await handler(ctx, next);
11
11
  }
12
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"responses.js","sources":["../../src/middlewares/responses.ts"],"sourcesContent":["import { isFunction } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\nexport interface Config {\n handlers?: Record<number, Core.MiddlewareHandler>;\n}\n\nexport const responses: Core.MiddlewareFactory<Config> = (config = {}) => {\n return async (ctx, next) => {\n await next();\n\n const { status } = ctx;\n const handler = config?.handlers?.[status];\n\n if (isFunction(handler)) {\n await handler(ctx, next);\n }\n };\n};\n"],"names":["isFunction"],"mappings":";;;AAOO,MAAM,YAA4C,CAAC,SAAS,OAAO;AACjE,SAAA,OAAO,KAAK,SAAS;AAC1B,UAAM,KAAK;AAEL,UAAA,EAAE,OAAW,IAAA;AACb,UAAA,UAAU,QAAQ,WAAW,MAAM;AAErC,QAAAA,EAAAA,WAAW,OAAO,GAAG;AACjB,YAAA,QAAQ,KAAK,IAAI;AAAA,IACzB;AAAA,EAAA;AAEJ;;"}
1
+ {"version":3,"file":"responses.js","sources":["../../src/middlewares/responses.ts"],"sourcesContent":["import { isFunction } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\nexport interface Config {\n handlers?: Record<number, Core.MiddlewareHandler>;\n}\n\nexport const responses: Core.MiddlewareFactory<Config> = (config = {}) => {\n return async (ctx, next) => {\n await next();\n\n const { status } = ctx;\n const handler = config?.handlers?.[status];\n\n if (isFunction(handler)) {\n await handler(ctx, next);\n }\n };\n};\n"],"names":["isFunction"],"mappings":";;;AAOO,MAAM,YAA4C,CAAC,SAAS,OAAO;AACjE,SAAA,OAAO,KAAK,SAAS;AAC1B,UAAM,KAAK;AAEL,UAAA,EAAE,WAAW;AACb,UAAA,UAAU,QAAQ,WAAW,MAAM;AAErC,QAAAA,GAAAA,WAAW,OAAO,GAAG;AACjB,YAAA,QAAQ,KAAK,IAAI;AAAA,IAAA;AAAA,EAE3B;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"responses.mjs","sources":["../../src/middlewares/responses.ts"],"sourcesContent":["import { isFunction } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\nexport interface Config {\n handlers?: Record<number, Core.MiddlewareHandler>;\n}\n\nexport const responses: Core.MiddlewareFactory<Config> = (config = {}) => {\n return async (ctx, next) => {\n await next();\n\n const { status } = ctx;\n const handler = config?.handlers?.[status];\n\n if (isFunction(handler)) {\n await handler(ctx, next);\n }\n };\n};\n"],"names":[],"mappings":";AAOO,MAAM,YAA4C,CAAC,SAAS,OAAO;AACjE,SAAA,OAAO,KAAK,SAAS;AAC1B,UAAM,KAAK;AAEL,UAAA,EAAE,OAAW,IAAA;AACb,UAAA,UAAU,QAAQ,WAAW,MAAM;AAErC,QAAA,WAAW,OAAO,GAAG;AACjB,YAAA,QAAQ,KAAK,IAAI;AAAA,IACzB;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"responses.mjs","sources":["../../src/middlewares/responses.ts"],"sourcesContent":["import { isFunction } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\nexport interface Config {\n handlers?: Record<number, Core.MiddlewareHandler>;\n}\n\nexport const responses: Core.MiddlewareFactory<Config> = (config = {}) => {\n return async (ctx, next) => {\n await next();\n\n const { status } = ctx;\n const handler = config?.handlers?.[status];\n\n if (isFunction(handler)) {\n await handler(ctx, next);\n }\n };\n};\n"],"names":[],"mappings":";AAOO,MAAM,YAA4C,CAAC,SAAS,OAAO;AACjE,SAAA,OAAO,KAAK,SAAS;AAC1B,UAAM,KAAK;AAEL,UAAA,EAAE,WAAW;AACb,UAAA,UAAU,QAAQ,WAAW,MAAM;AAErC,QAAA,WAAW,OAAO,GAAG;AACjB,YAAA,QAAQ,KAAK,IAAI;AAAA,IAAA;AAAA,EAE3B;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/middlewares/security.ts"],"names":[],"mappings":"AACA,OAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AA0B3D,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAkEjD,CAAC"}
1
+ {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/middlewares/security.ts"],"names":[],"mappings":"AACA,OAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAkC3D,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAmEjD,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const _ = require("lodash/fp");
3
+ const fp = require("lodash/fp");
4
4
  const helmet = require("koa-helmet");
5
5
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
6
6
  const helmet__default = /* @__PURE__ */ _interopDefault(helmet);
@@ -27,8 +27,15 @@ const defaults = {
27
27
  action: "sameorigin"
28
28
  }
29
29
  };
30
+ const mergeConfig = (existingConfig, newConfig) => {
31
+ return fp.mergeWith(
32
+ (obj, src) => Array.isArray(obj) && Array.isArray(src) ? obj.concat(src) : void 0,
33
+ existingConfig,
34
+ newConfig
35
+ );
36
+ };
30
37
  const security = (config, { strapi }) => (ctx, next) => {
31
- let helmetConfig = _.defaultsDeep(defaults, config);
38
+ let helmetConfig = fp.defaultsDeep(defaults, config);
32
39
  const specialPaths = ["/documentation"];
33
40
  const directives = {
34
41
  "script-src": ["'self'", "'unsafe-inline'", "cdn.jsdelivr.net"],
@@ -47,7 +54,7 @@ const security = (config, { strapi }) => (ctx, next) => {
47
54
  directives["frame-src"].push("sandbox.embed.apollographql.com");
48
55
  }
49
56
  if (ctx.method === "GET" && specialPaths.some((str) => ctx.path.startsWith(str))) {
50
- helmetConfig = _.merge(helmetConfig, {
57
+ helmetConfig = mergeConfig(helmetConfig, {
51
58
  crossOriginEmbedderPolicy: false,
52
59
  // TODO: only use this for graphql playground
53
60
  contentSecurityPolicy: {
@@ -55,8 +62,8 @@ const security = (config, { strapi }) => (ctx, next) => {
55
62
  }
56
63
  });
57
64
  }
58
- if (process.env.NODE_ENV === "development" && ctx.method === "GET" && ["/admin"].some((str) => ctx.path.startsWith(str))) {
59
- helmetConfig = _.merge(helmetConfig, {
65
+ if (["development", "test"].includes(process.env.NODE_ENV ?? "") && ctx.method === "GET" && ctx.path.startsWith(strapi.config.get("admin.path"))) {
66
+ helmetConfig = mergeConfig(helmetConfig, {
60
67
  contentSecurityPolicy: {
61
68
  directives: {
62
69
  "script-src": ["'self'", "'unsafe-inline'"],
@@ -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\n if (\n ['development', 'test'].includes(process.env.NODE_ENV ?? '') &&\n ctx.method === 'GET' &&\n ctx.path.startsWith(strapi.config.get('admin.path'))\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,IAAA;AAAA,EAE7B;AAAA,EACA,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,mBAAmB;AAAA,EACrB;AAAA,EACA,YAAY;AAAA,IACV,QAAQ;AAAA,EAAA;AAEZ;AAEA,MAAM,cAAc,CAAC,gBAAwB,cAAsB;AAC1D,SAAAA,GAAA;AAAA,IACL,CAAC,KAAK,QAAS,MAAM,QAAQ,GAAG,KAAK,MAAM,QAAQ,GAAG,IAAI,IAAI,OAAO,GAAG,IAAI;AAAA,IAC5E;AAAA,IACA;AAAA,EACF;AACF;AAEa,MAAA,WACX,CAAC,QAAQ,EAAE,aACX,CAAC,KAAK,SAAS;AACT,MAAA,eAAuBC,GAAAA,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,CAAA;AAAA,EACf;AAGI,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,EAAA;AAIhE,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,MAAA;AAAA,IACF,CACD;AAAA,EAAA;AAaD,MAAA,CAAC,eAAe,MAAM,EAAE,SAAS,QAAQ,IAAI,YAAY,EAAE,KAC3D,IAAI,WAAW,SACf,IAAI,KAAK,WAAW,OAAO,OAAO,IAAI,YAAY,CAAC,GACnD;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,QAAA;AAAA,MACpD;AAAA,IACF,CACD;AAAA,EAAA;AAGH,SAAOC,wBAAO,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" && ctx.path.startsWith(strapi.config.get("admin.path"))) {
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\n if (\n ['development', 'test'].includes(process.env.NODE_ENV ?? '') &&\n ctx.method === 'GET' &&\n ctx.path.startsWith(strapi.config.get('admin.path'))\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,IAAA;AAAA,EAE7B;AAAA,EACA,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,mBAAmB;AAAA,EACrB;AAAA,EACA,YAAY;AAAA,IACV,QAAQ;AAAA,EAAA;AAEZ;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,EACF;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,CAAA;AAAA,EACf;AAGI,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,EAAA;AAIhE,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,MAAA;AAAA,IACF,CACD;AAAA,EAAA;AAaD,MAAA,CAAC,eAAe,MAAM,EAAE,SAAS,QAAQ,IAAI,YAAY,EAAE,KAC3D,IAAI,WAAW,SACf,IAAI,KAAK,WAAW,OAAO,OAAO,IAAI,YAAY,CAAC,GACnD;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,QAAA;AAAA,MACpD;AAAA,IACF,CACD;AAAA,EAAA;AAGH,SAAO,OAAO,YAAY,EAAE,KAAK,IAAI;AACvC;"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const _ = require("lodash/fp");
3
+ const fp = require("lodash/fp");
4
4
  const koaSession = require("koa-session");
5
5
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
6
6
  const koaSession__default = /* @__PURE__ */ _interopDefault(koaSession);
@@ -18,7 +18,7 @@ const defaultConfig = {
18
18
  };
19
19
  const session = (userConfig, { strapi }) => {
20
20
  const { keys } = strapi.server.app;
21
- if (!_.isArray(keys) || _.isEmpty(keys) || keys.some(_.isEmpty)) {
21
+ if (!fp.isArray(keys) || fp.isEmpty(keys) || keys.some(fp.isEmpty)) {
22
22
  throw new Error(
23
23
  `App keys are required. Please set app.keys in config/server.js (ex: keys: ['myKeyA', 'myKeyB'])`
24
24
  );
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sources":["../../src/middlewares/session.ts"],"sourcesContent":["import { isEmpty, isArray } from 'lodash/fp';\nimport koaSession from 'koa-session';\nimport type { Core } from '@strapi/types';\n\nconst defaultConfig = {\n key: 'koa.sess',\n maxAge: 86400000,\n autoCommit: true,\n overwrite: true,\n httpOnly: true,\n signed: true,\n rolling: false,\n renew: false,\n secure: process.env.NODE_ENV === 'production',\n sameSite: undefined,\n};\n\nexport const session: Core.MiddlewareFactory<Partial<koaSession.opts>> = (\n userConfig,\n { strapi }\n) => {\n const { keys } = strapi.server.app;\n if (!isArray(keys) || isEmpty(keys) || keys.some(isEmpty)) {\n throw new Error(\n `App keys are required. Please set app.keys in config/server.js (ex: keys: ['myKeyA', 'myKeyB'])`\n );\n }\n\n const config: Partial<koaSession.opts> = { ...defaultConfig, ...userConfig };\n\n strapi.server.use(koaSession(config, strapi.server.app));\n};\n"],"names":["isArray","isEmpty","koaSession"],"mappings":";;;;;;AAIA,MAAM,gBAAgB;AAAA,EACpB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ,QAAQ,IAAI,aAAa;AAAA,EACjC,UAAU;AACZ;AAEO,MAAM,UAA4D,CACvE,YACA,EAAE,aACC;AACH,QAAM,EAAE,KAAS,IAAA,OAAO,OAAO;AAC3B,MAAA,CAACA,EAAAA,QAAQ,IAAI,KAAKC,EAAA,QAAQ,IAAI,KAAK,KAAK,KAAKA,EAAAA,OAAO,GAAG;AACzD,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,SAAmC,EAAE,GAAG,eAAe,GAAG,WAAW;AAE3E,SAAO,OAAO,IAAIC,oBAAA,QAAW,QAAQ,OAAO,OAAO,GAAG,CAAC;AACzD;;"}
1
+ {"version":3,"file":"session.js","sources":["../../src/middlewares/session.ts"],"sourcesContent":["import { isEmpty, isArray } from 'lodash/fp';\nimport koaSession from 'koa-session';\nimport type { Core } from '@strapi/types';\n\nconst defaultConfig = {\n key: 'koa.sess',\n maxAge: 86400000,\n autoCommit: true,\n overwrite: true,\n httpOnly: true,\n signed: true,\n rolling: false,\n renew: false,\n secure: process.env.NODE_ENV === 'production',\n sameSite: undefined,\n};\n\nexport const session: Core.MiddlewareFactory<Partial<koaSession.opts>> = (\n userConfig,\n { strapi }\n) => {\n const { keys } = strapi.server.app;\n if (!isArray(keys) || isEmpty(keys) || keys.some(isEmpty)) {\n throw new Error(\n `App keys are required. Please set app.keys in config/server.js (ex: keys: ['myKeyA', 'myKeyB'])`\n );\n }\n\n const config: Partial<koaSession.opts> = { ...defaultConfig, ...userConfig };\n\n strapi.server.use(koaSession(config, strapi.server.app));\n};\n"],"names":["isArray","isEmpty","koaSession"],"mappings":";;;;;;AAIA,MAAM,gBAAgB;AAAA,EACpB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ,QAAQ,IAAI,aAAa;AAAA,EACjC,UAAU;AACZ;AAEO,MAAM,UAA4D,CACvE,YACA,EAAE,aACC;AACH,QAAM,EAAE,KAAA,IAAS,OAAO,OAAO;AAC3B,MAAA,CAACA,GAAAA,QAAQ,IAAI,KAAKC,GAAA,QAAQ,IAAI,KAAK,KAAK,KAAKA,GAAAA,OAAO,GAAG;AACzD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EAAA;AAGF,QAAM,SAAmC,EAAE,GAAG,eAAe,GAAG,WAAW;AAE3E,SAAO,OAAO,IAAIC,oBAAA,QAAW,QAAQ,OAAO,OAAO,GAAG,CAAC;AACzD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.mjs","sources":["../../src/middlewares/session.ts"],"sourcesContent":["import { isEmpty, isArray } from 'lodash/fp';\nimport koaSession from 'koa-session';\nimport type { Core } from '@strapi/types';\n\nconst defaultConfig = {\n key: 'koa.sess',\n maxAge: 86400000,\n autoCommit: true,\n overwrite: true,\n httpOnly: true,\n signed: true,\n rolling: false,\n renew: false,\n secure: process.env.NODE_ENV === 'production',\n sameSite: undefined,\n};\n\nexport const session: Core.MiddlewareFactory<Partial<koaSession.opts>> = (\n userConfig,\n { strapi }\n) => {\n const { keys } = strapi.server.app;\n if (!isArray(keys) || isEmpty(keys) || keys.some(isEmpty)) {\n throw new Error(\n `App keys are required. Please set app.keys in config/server.js (ex: keys: ['myKeyA', 'myKeyB'])`\n );\n }\n\n const config: Partial<koaSession.opts> = { ...defaultConfig, ...userConfig };\n\n strapi.server.use(koaSession(config, strapi.server.app));\n};\n"],"names":[],"mappings":";;AAIA,MAAM,gBAAgB;AAAA,EACpB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ,QAAQ,IAAI,aAAa;AAAA,EACjC,UAAU;AACZ;AAEO,MAAM,UAA4D,CACvE,YACA,EAAE,aACC;AACH,QAAM,EAAE,KAAS,IAAA,OAAO,OAAO;AAC3B,MAAA,CAAC,QAAQ,IAAI,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,OAAO,GAAG;AACzD,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,SAAmC,EAAE,GAAG,eAAe,GAAG,WAAW;AAE3E,SAAO,OAAO,IAAI,WAAW,QAAQ,OAAO,OAAO,GAAG,CAAC;AACzD;"}
1
+ {"version":3,"file":"session.mjs","sources":["../../src/middlewares/session.ts"],"sourcesContent":["import { isEmpty, isArray } from 'lodash/fp';\nimport koaSession from 'koa-session';\nimport type { Core } from '@strapi/types';\n\nconst defaultConfig = {\n key: 'koa.sess',\n maxAge: 86400000,\n autoCommit: true,\n overwrite: true,\n httpOnly: true,\n signed: true,\n rolling: false,\n renew: false,\n secure: process.env.NODE_ENV === 'production',\n sameSite: undefined,\n};\n\nexport const session: Core.MiddlewareFactory<Partial<koaSession.opts>> = (\n userConfig,\n { strapi }\n) => {\n const { keys } = strapi.server.app;\n if (!isArray(keys) || isEmpty(keys) || keys.some(isEmpty)) {\n throw new Error(\n `App keys are required. Please set app.keys in config/server.js (ex: keys: ['myKeyA', 'myKeyB'])`\n );\n }\n\n const config: Partial<koaSession.opts> = { ...defaultConfig, ...userConfig };\n\n strapi.server.use(koaSession(config, strapi.server.app));\n};\n"],"names":[],"mappings":";;AAIA,MAAM,gBAAgB;AAAA,EACpB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ,QAAQ,IAAI,aAAa;AAAA,EACjC,UAAU;AACZ;AAEO,MAAM,UAA4D,CACvE,YACA,EAAE,aACC;AACH,QAAM,EAAE,KAAA,IAAS,OAAO,OAAO;AAC3B,MAAA,CAAC,QAAQ,IAAI,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,OAAO,GAAG;AACzD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EAAA;AAGF,QAAM,SAAmC,EAAE,GAAG,eAAe,GAAG,WAAW;AAE3E,SAAO,OAAO,IAAI,WAAW,QAAQ,OAAO,OAAO,GAAG,CAAC;AACzD;"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * This migration is responsible for creating the draft counterpart for all the entries that were in a published state.
3
+ *
4
+ * In v4, entries could either be in a draft or published state, but not both at the same time.
5
+ * In v5, we introduced the concept of document, and an entry can be in a draft or published state.
6
+ *
7
+ * This means the migration needs to create the draft counterpart if an entry was published.
8
+ *
9
+ * This migration performs the following steps:
10
+ * 1. Creates draft entries for all published entries, without it's components, dynamic zones or relations.
11
+ * 2. Using the document service, discard those same drafts to copy its relations.
12
+ */
13
+ import type { Database, Migration } from '@strapi/database';
14
+ type DocumentVersion = {
15
+ documentId: string;
16
+ locale: string;
17
+ };
18
+ type Knex = Parameters<Migration['up']>[0];
19
+ /**
20
+ * Load a batch of versions to discard.
21
+ *
22
+ * Versions with only a draft version will be ignored.
23
+ * Only versions with a published version (which always have a draft version) will be discarded.
24
+ */
25
+ export declare function getBatchToDiscard({ db, trx, uid, defaultBatchSize, }: {
26
+ db: Database;
27
+ trx: Knex;
28
+ uid: string;
29
+ defaultBatchSize?: number;
30
+ }): AsyncGenerator<DocumentVersion[], void, unknown>;
31
+ export declare const discardDocumentDrafts: Migration;
32
+ export {};
33
+ //# 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":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI5D,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;AAqF3C;;;;;GAKG;AACH,wBAAuB,iBAAiB,CAAC,EACvC,EAAE,EACF,GAAG,EACH,GAAG,EACH,gBAAuB,GACxB,EAAE;IACD,EAAE,EAAE,QAAQ,CAAC;IACb,GAAG,EAAE,IAAI,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,oDAgCA;AA2DD,eAAO,MAAM,qBAAqB,EAAE,SAQnC,CAAC"}