@strapi/core 5.48.1 → 5.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (420) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/Strapi.js +11 -5
  3. package/dist/Strapi.js.map +1 -1
  4. package/dist/Strapi.mjs +2 -1
  5. package/dist/Strapi.mjs.map +1 -1
  6. package/dist/ai.d.ts +2 -0
  7. package/dist/ai.d.ts.map +1 -0
  8. package/dist/ai.js +8 -0
  9. package/dist/ai.js.map +1 -0
  10. package/dist/ai.mjs +3 -0
  11. package/dist/ai.mjs.map +1 -0
  12. package/dist/configuration/config-loader.d.ts.map +1 -1
  13. package/dist/configuration/config-loader.js +11 -6
  14. package/dist/configuration/config-loader.js.map +1 -1
  15. package/dist/configuration/get-dirs.d.ts.map +1 -1
  16. package/dist/configuration/index.d.ts +0 -3
  17. package/dist/configuration/index.d.ts.map +1 -1
  18. package/dist/configuration/index.js +22 -18
  19. package/dist/configuration/index.js.map +1 -1
  20. package/dist/configuration/index.mjs +0 -3
  21. package/dist/configuration/index.mjs.map +1 -1
  22. package/dist/configuration/server-config.d.ts +11 -0
  23. package/dist/configuration/server-config.d.ts.map +1 -0
  24. package/dist/configuration/server-config.js +16 -0
  25. package/dist/configuration/server-config.js.map +1 -0
  26. package/dist/configuration/server-config.mjs +14 -0
  27. package/dist/configuration/server-config.mjs.map +1 -0
  28. package/dist/configuration/urls.d.ts.map +1 -1
  29. package/dist/configuration/urls.js +11 -7
  30. package/dist/configuration/urls.js.map +1 -1
  31. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  32. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  33. package/dist/core-api/controller/transform.d.ts.map +1 -1
  34. package/dist/core-api/routes/index.d.ts.map +1 -1
  35. package/dist/core-api/routes/index.js +3 -2
  36. package/dist/core-api/routes/index.js.map +1 -1
  37. package/dist/core-api/routes/validation/attributes.d.ts.map +1 -1
  38. package/dist/core-api/routes/validation/common.js +3 -2
  39. package/dist/core-api/routes/validation/common.js.map +1 -1
  40. package/dist/core-api/routes/validation/content-type.js +3 -2
  41. package/dist/core-api/routes/validation/content-type.js.map +1 -1
  42. package/dist/core-api/routes/validation/mappers.d.ts.map +1 -1
  43. package/dist/core-api/routes/validation/mappers.js +3 -2
  44. package/dist/core-api/routes/validation/mappers.js.map +1 -1
  45. package/dist/core-api/routes/validation/utils.d.ts.map +1 -1
  46. package/dist/core-api/routes/validation/utils.js +3 -2
  47. package/dist/core-api/routes/validation/utils.js.map +1 -1
  48. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  49. package/dist/core-api/service/pagination.d.ts.map +1 -1
  50. package/dist/core-api/service/single-type.d.ts.map +1 -1
  51. package/dist/domain/content-type/index.d.ts.map +1 -1
  52. package/dist/domain/content-type/index.js +9 -5
  53. package/dist/domain/content-type/index.js.map +1 -1
  54. package/dist/domain/content-type/validator.d.ts.map +1 -1
  55. package/dist/domain/content-type/validator.js +6 -2
  56. package/dist/domain/content-type/validator.js.map +1 -1
  57. package/dist/domain/module/index.d.ts.map +1 -1
  58. package/dist/domain/module/index.js +6 -2
  59. package/dist/domain/module/index.js.map +1 -1
  60. package/dist/domain/module/validation.d.ts.map +1 -1
  61. package/dist/ee/index.d.ts +2 -1
  62. package/dist/ee/index.d.ts.map +1 -1
  63. package/dist/ee/license.d.ts.map +1 -1
  64. package/dist/ee/license.js +8 -3
  65. package/dist/ee/license.js.map +1 -1
  66. package/dist/factories.d.ts.map +1 -1
  67. package/dist/index.d.ts +5 -1
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +2 -0
  70. package/dist/index.js.map +1 -1
  71. package/dist/index.mjs +2 -0
  72. package/dist/index.mjs.map +1 -1
  73. package/dist/loaders/admin.js +5 -1
  74. package/dist/loaders/admin.js.map +1 -1
  75. package/dist/loaders/apis.js +16 -11
  76. package/dist/loaders/apis.js.map +1 -1
  77. package/dist/loaders/components.js +6 -2
  78. package/dist/loaders/components.js.map +1 -1
  79. package/dist/loaders/middlewares.js +6 -2
  80. package/dist/loaders/middlewares.js.map +1 -1
  81. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  82. package/dist/loaders/plugins/get-enabled-plugins.js +5 -1
  83. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  84. package/dist/loaders/plugins/get-user-plugins-config.js +6 -2
  85. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  86. package/dist/loaders/plugins/index.js +8 -4
  87. package/dist/loaders/plugins/index.js.map +1 -1
  88. package/dist/loaders/policies.js +6 -2
  89. package/dist/loaders/policies.js.map +1 -1
  90. package/dist/loaders/sanitizers.d.ts.map +1 -1
  91. package/dist/loaders/src-index.d.ts.map +1 -1
  92. package/dist/loaders/validators.d.ts.map +1 -1
  93. package/dist/mcp.d.ts +4 -0
  94. package/dist/mcp.d.ts.map +1 -0
  95. package/dist/mcp.js +12 -0
  96. package/dist/mcp.js.map +1 -0
  97. package/dist/mcp.mjs +4 -0
  98. package/dist/mcp.mjs.map +1 -0
  99. package/dist/middlewares/body.d.ts.map +1 -1
  100. package/dist/middlewares/body.js +9 -4
  101. package/dist/middlewares/body.js.map +1 -1
  102. package/dist/middlewares/body.mjs +1 -1
  103. package/dist/middlewares/body.mjs.map +1 -1
  104. package/dist/middlewares/compression.js +5 -1
  105. package/dist/middlewares/compression.js.map +1 -1
  106. package/dist/middlewares/cors.d.ts.map +1 -1
  107. package/dist/middlewares/cors.js +5 -1
  108. package/dist/middlewares/cors.js.map +1 -1
  109. package/dist/middlewares/errors.d.ts +5 -0
  110. package/dist/middlewares/errors.d.ts.map +1 -1
  111. package/dist/middlewares/errors.js.map +1 -1
  112. package/dist/middlewares/errors.mjs.map +1 -1
  113. package/dist/middlewares/favicon.d.ts +0 -1
  114. package/dist/middlewares/favicon.d.ts.map +1 -1
  115. package/dist/middlewares/favicon.js +5 -1
  116. package/dist/middlewares/favicon.js.map +1 -1
  117. package/dist/middlewares/ip.js +5 -1
  118. package/dist/middlewares/ip.js.map +1 -1
  119. package/dist/middlewares/public.js +5 -1
  120. package/dist/middlewares/public.js.map +1 -1
  121. package/dist/middlewares/query.js +6 -2
  122. package/dist/middlewares/query.js.map +1 -1
  123. package/dist/middlewares/security.js +5 -1
  124. package/dist/middlewares/security.js.map +1 -1
  125. package/dist/migrations/database/5.0.0-discard-drafts.js +5 -1
  126. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
  127. package/dist/migrations/draft-publish.d.ts.map +1 -1
  128. package/dist/migrations/first-published-at.d.ts.map +1 -1
  129. package/dist/migrations/first-published-at.js +5 -1
  130. package/dist/migrations/first-published-at.js.map +1 -1
  131. package/dist/migrations/i18n.d.ts.map +1 -1
  132. package/dist/migrations/index.d.ts.map +1 -1
  133. package/dist/package.json.js +18 -21
  134. package/dist/package.json.js.map +1 -1
  135. package/dist/package.json.mjs +18 -21
  136. package/dist/package.json.mjs.map +1 -1
  137. package/dist/providers/provider.d.ts.map +1 -1
  138. package/dist/registries/apis.d.ts.map +1 -1
  139. package/dist/registries/components.d.ts +1 -1
  140. package/dist/registries/components.d.ts.map +1 -1
  141. package/dist/registries/content-types.d.ts +2 -3
  142. package/dist/registries/content-types.d.ts.map +1 -1
  143. package/dist/registries/controllers.d.ts +3 -3
  144. package/dist/registries/controllers.d.ts.map +1 -1
  145. package/dist/registries/custom-fields.d.ts.map +1 -1
  146. package/dist/registries/hooks.d.ts +3 -4
  147. package/dist/registries/hooks.d.ts.map +1 -1
  148. package/dist/registries/middlewares.d.ts +2 -3
  149. package/dist/registries/middlewares.d.ts.map +1 -1
  150. package/dist/registries/models.d.ts +1 -1
  151. package/dist/registries/modules.d.ts.map +1 -1
  152. package/dist/registries/namespace.d.ts.map +1 -1
  153. package/dist/registries/plugins.d.ts.map +1 -1
  154. package/dist/registries/policies.d.ts +1 -2
  155. package/dist/registries/policies.d.ts.map +1 -1
  156. package/dist/registries/sanitizers.d.ts +2 -2
  157. package/dist/registries/sanitizers.js +7 -3
  158. package/dist/registries/sanitizers.js.map +1 -1
  159. package/dist/registries/services.d.ts +3 -3
  160. package/dist/registries/services.d.ts.map +1 -1
  161. package/dist/registries/validators.d.ts +2 -2
  162. package/dist/registries/validators.js +7 -3
  163. package/dist/registries/validators.js.map +1 -1
  164. package/dist/services/ai.d.ts.map +1 -1
  165. package/dist/services/auth/index.js +7 -3
  166. package/dist/services/auth/index.js.map +1 -1
  167. package/dist/services/config.d.ts.map +1 -1
  168. package/dist/services/content-api/index.d.ts +4 -4
  169. package/dist/services/content-api/index.d.ts.map +1 -1
  170. package/dist/services/content-api/index.js +10 -6
  171. package/dist/services/content-api/index.js.map +1 -1
  172. package/dist/services/content-api/permissions/engine.d.ts.map +1 -1
  173. package/dist/services/content-api/permissions/engine.js +5 -1
  174. package/dist/services/content-api/permissions/engine.js.map +1 -1
  175. package/dist/services/content-api/permissions/index.d.ts +2 -2
  176. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  177. package/dist/services/content-api/permissions/index.js +10 -6
  178. package/dist/services/content-api/permissions/index.js.map +1 -1
  179. package/dist/services/content-api/permissions/providers/action.d.ts +1 -1
  180. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  181. package/dist/services/content-api/permissions/providers/condition.d.ts +1 -1
  182. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  183. package/dist/services/content-source-maps.d.ts.map +1 -1
  184. package/dist/services/core-store.d.ts.map +1 -1
  185. package/dist/services/cron.d.ts +5 -5
  186. package/dist/services/custom-fields.d.ts.map +1 -1
  187. package/dist/services/document-service/attributes/index.d.ts +0 -1
  188. package/dist/services/document-service/attributes/index.d.ts.map +1 -1
  189. package/dist/services/document-service/attributes/transforms.js +5 -1
  190. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  191. package/dist/services/document-service/common.d.ts.map +1 -1
  192. package/dist/services/document-service/components.d.ts +2 -2
  193. package/dist/services/document-service/components.d.ts.map +1 -1
  194. package/dist/services/document-service/components.js +14 -10
  195. package/dist/services/document-service/components.js.map +1 -1
  196. package/dist/services/document-service/components.mjs.map +1 -1
  197. package/dist/services/document-service/draft-and-publish.d.ts +0 -1
  198. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  199. package/dist/services/document-service/draft-and-publish.js +1 -1
  200. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  201. package/dist/services/document-service/draft-and-publish.mjs +1 -1
  202. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  203. package/dist/services/document-service/entries.d.ts.map +1 -1
  204. package/dist/services/document-service/entries.js +6 -2
  205. package/dist/services/document-service/entries.js.map +1 -1
  206. package/dist/services/document-service/entries.mjs +7 -3
  207. package/dist/services/document-service/entries.mjs.map +1 -1
  208. package/dist/services/document-service/events.d.ts.map +1 -1
  209. package/dist/services/document-service/first-published-at.d.ts.map +1 -1
  210. package/dist/services/document-service/index.d.ts.map +1 -1
  211. package/dist/services/document-service/internationalization.d.ts +0 -1
  212. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  213. package/dist/services/document-service/internationalization.js.map +1 -1
  214. package/dist/services/document-service/internationalization.mjs.map +1 -1
  215. package/dist/services/document-service/middlewares/middleware-manager.d.ts.map +1 -1
  216. package/dist/services/document-service/params.d.ts +1 -1
  217. package/dist/services/document-service/params.d.ts.map +1 -1
  218. package/dist/services/document-service/publication-filter.d.ts +1 -1
  219. package/dist/services/document-service/publication-filter.d.ts.map +1 -1
  220. package/dist/services/document-service/transform/data.d.ts +2 -0
  221. package/dist/services/document-service/transform/data.d.ts.map +1 -1
  222. package/dist/services/document-service/transform/data.js +7 -1
  223. package/dist/services/document-service/transform/data.js.map +1 -1
  224. package/dist/services/document-service/transform/data.mjs +7 -2
  225. package/dist/services/document-service/transform/data.mjs.map +1 -1
  226. package/dist/services/document-service/transform/fields.d.ts.map +1 -1
  227. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  228. package/dist/services/document-service/transform/id-map.js +7 -4
  229. package/dist/services/document-service/transform/id-map.js.map +1 -1
  230. package/dist/services/document-service/transform/id-map.mjs +7 -4
  231. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  232. package/dist/services/document-service/transform/id-transform.d.ts +0 -1
  233. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  234. package/dist/services/document-service/transform/populate.d.ts.map +1 -1
  235. package/dist/services/document-service/transform/query.d.ts +0 -1
  236. package/dist/services/document-service/transform/query.d.ts.map +1 -1
  237. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  238. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  239. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts.map +1 -1
  240. package/dist/services/document-service/transform/relations/utils/data.d.ts.map +1 -1
  241. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  242. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  243. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  244. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts +0 -1
  245. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  246. package/dist/services/document-service/transform/relations/utils/xto-one.d.ts.map +1 -1
  247. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -1
  248. package/dist/services/document-service/utils/bidirectional-relations.js +7 -2
  249. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -1
  250. package/dist/services/document-service/utils/bidirectional-relations.mjs +7 -2
  251. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -1
  252. package/dist/services/document-service/utils/clean-component-join-table.d.ts.map +1 -1
  253. package/dist/services/document-service/utils/ordered-parallel.d.ts.map +1 -1
  254. package/dist/services/document-service/utils/populate.d.ts +1 -1
  255. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  256. package/dist/services/document-service/utils/populate.js.map +1 -1
  257. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  258. package/dist/services/document-service/utils/self-referential-relations.d.ts.map +1 -1
  259. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
  260. package/dist/services/entity-service/index.d.ts.map +1 -1
  261. package/dist/services/entity-service/index.js +9 -4
  262. package/dist/services/entity-service/index.js.map +1 -1
  263. package/dist/services/entity-validator/index.d.ts.map +1 -1
  264. package/dist/services/entity-validator/index.js +9 -4
  265. package/dist/services/entity-validator/index.js.map +1 -1
  266. package/dist/services/entity-validator/index.mjs.map +1 -1
  267. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  268. package/dist/services/entity-validator/validators.js +10 -6
  269. package/dist/services/entity-validator/validators.js.map +1 -1
  270. package/dist/services/errors.d.ts.map +1 -1
  271. package/dist/services/errors.js +7 -3
  272. package/dist/services/errors.js.map +1 -1
  273. package/dist/services/features.d.ts.map +1 -1
  274. package/dist/services/fs.d.ts.map +1 -1
  275. package/dist/services/fs.js +10 -5
  276. package/dist/services/fs.js.map +1 -1
  277. package/dist/services/mcp/authentication.d.ts.map +1 -1
  278. package/dist/services/mcp/handlers/handlePost.d.ts.map +1 -1
  279. package/dist/services/mcp/index.d.ts.map +1 -1
  280. package/dist/services/mcp/internal/McpCapabilityRegistry.d.ts +2 -2
  281. package/dist/services/mcp/internal/McpServerFactory.d.ts.map +1 -1
  282. package/dist/services/mcp/internal/syncMcpSessionCapabilities.d.ts.map +1 -1
  283. package/dist/services/mcp/metrics/metrics.d.ts.map +1 -1
  284. package/dist/services/mcp/metrics/normalizeMcpCapability.d.ts.map +1 -1
  285. package/dist/services/mcp/metrics/wrapCapabilityHandlerForMetrics.d.ts.map +1 -1
  286. package/dist/services/mcp/middleware/oauthDiscoveryFallback.d.ts.map +1 -1
  287. package/dist/services/mcp/prompt-registry.d.ts +31 -3
  288. package/dist/services/mcp/prompt-registry.d.ts.map +1 -1
  289. package/dist/services/mcp/prompt-registry.js +31 -0
  290. package/dist/services/mcp/prompt-registry.js.map +1 -1
  291. package/dist/services/mcp/prompt-registry.mjs +31 -1
  292. package/dist/services/mcp/prompt-registry.mjs.map +1 -1
  293. package/dist/services/mcp/resource-registry.d.ts +31 -1
  294. package/dist/services/mcp/resource-registry.d.ts.map +1 -1
  295. package/dist/services/mcp/resource-registry.js +31 -0
  296. package/dist/services/mcp/resource-registry.js.map +1 -1
  297. package/dist/services/mcp/resource-registry.mjs +31 -1
  298. package/dist/services/mcp/resource-registry.mjs.map +1 -1
  299. package/dist/services/mcp/routes.d.ts +1 -1
  300. package/dist/services/mcp/routes.d.ts.map +1 -1
  301. package/dist/services/mcp/tool-registry.d.ts +36 -9
  302. package/dist/services/mcp/tool-registry.d.ts.map +1 -1
  303. package/dist/services/mcp/tool-registry.js +35 -3
  304. package/dist/services/mcp/tool-registry.js.map +1 -1
  305. package/dist/services/mcp/tool-registry.mjs +35 -3
  306. package/dist/services/mcp/tool-registry.mjs.map +1 -1
  307. package/dist/services/mcp/tools/log.d.ts +15 -85
  308. package/dist/services/mcp/tools/log.d.ts.map +1 -1
  309. package/dist/services/mcp/utils/createSafeCapabilityRegistration.d.ts.map +1 -1
  310. package/dist/services/mcp/utils/safeHandlerWrapper.d.ts.map +1 -1
  311. package/dist/services/mcp/utils/sendJsonRpcError.d.ts +0 -1
  312. package/dist/services/mcp/utils/sendJsonRpcError.d.ts.map +1 -1
  313. package/dist/services/mcp/utils/withTimeout.d.ts.map +1 -1
  314. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  315. package/dist/services/metrics/admin-user-hash.js +5 -1
  316. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  317. package/dist/services/metrics/index.d.ts.map +1 -1
  318. package/dist/services/metrics/is-truthy.d.ts.map +1 -1
  319. package/dist/services/metrics/is-truthy.js +5 -1
  320. package/dist/services/metrics/is-truthy.js.map +1 -1
  321. package/dist/services/metrics/middleware.d.ts.map +1 -1
  322. package/dist/services/metrics/rate-limiter.d.ts +2 -1
  323. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  324. package/dist/services/metrics/sender.d.ts.map +1 -1
  325. package/dist/services/metrics/sender.js +17 -9
  326. package/dist/services/metrics/sender.js.map +1 -1
  327. package/dist/services/query-params.d.ts.map +1 -1
  328. package/dist/services/reloader.d.ts.map +1 -1
  329. package/dist/services/request-context.d.ts.map +1 -1
  330. package/dist/services/server/admin-api.d.ts +3 -5
  331. package/dist/services/server/admin-api.d.ts.map +1 -1
  332. package/dist/services/server/api.d.ts +3 -4
  333. package/dist/services/server/api.d.ts.map +1 -1
  334. package/dist/services/server/api.js +5 -1
  335. package/dist/services/server/api.js.map +1 -1
  336. package/dist/services/server/compose-endpoint.d.ts.map +1 -1
  337. package/dist/services/server/compose-endpoint.js +5 -1
  338. package/dist/services/server/compose-endpoint.js.map +1 -1
  339. package/dist/services/server/content-api.d.ts +3 -5
  340. package/dist/services/server/content-api.d.ts.map +1 -1
  341. package/dist/services/server/http-server.d.ts +0 -1
  342. package/dist/services/server/http-server.d.ts.map +1 -1
  343. package/dist/services/server/http-server.js +5 -1
  344. package/dist/services/server/http-server.js.map +1 -1
  345. package/dist/services/server/index.d.ts.map +1 -1
  346. package/dist/services/server/index.js +5 -1
  347. package/dist/services/server/index.js.map +1 -1
  348. package/dist/services/server/koa-methods.d.ts +107 -0
  349. package/dist/services/server/koa-methods.d.ts.map +1 -0
  350. package/dist/services/server/koa-methods.js +24 -0
  351. package/dist/services/server/koa-methods.js.map +1 -0
  352. package/dist/services/server/koa-methods.mjs +22 -0
  353. package/dist/services/server/koa-methods.mjs.map +1 -0
  354. package/dist/services/server/koa.d.ts +0 -9
  355. package/dist/services/server/koa.d.ts.map +1 -1
  356. package/dist/services/server/koa.js +14 -10
  357. package/dist/services/server/koa.js.map +1 -1
  358. package/dist/services/server/koa.mjs +7 -9
  359. package/dist/services/server/koa.mjs.map +1 -1
  360. package/dist/services/server/middleware.d.ts.map +1 -1
  361. package/dist/services/server/middleware.js +5 -1
  362. package/dist/services/server/middleware.js.map +1 -1
  363. package/dist/services/server/openapi.d.ts.map +1 -1
  364. package/dist/services/server/openapi.js +11 -6
  365. package/dist/services/server/openapi.js.map +1 -1
  366. package/dist/services/server/policy.d.ts.map +1 -1
  367. package/dist/services/server/register-middlewares.d.ts.map +1 -1
  368. package/dist/services/server/register-routes.d.ts.map +1 -1
  369. package/dist/services/server/register-routes.js +8 -4
  370. package/dist/services/server/register-routes.js.map +1 -1
  371. package/dist/services/server/routing.d.ts +0 -2
  372. package/dist/services/server/routing.d.ts.map +1 -1
  373. package/dist/services/server/routing.js +5 -1
  374. package/dist/services/server/routing.js.map +1 -1
  375. package/dist/services/session-manager.d.ts +20 -0
  376. package/dist/services/session-manager.d.ts.map +1 -1
  377. package/dist/services/session-manager.js +71 -9
  378. package/dist/services/session-manager.js.map +1 -1
  379. package/dist/services/session-manager.mjs +57 -0
  380. package/dist/services/session-manager.mjs.map +1 -1
  381. package/dist/services/webhook-runner.js +7 -2
  382. package/dist/services/webhook-runner.js.map +1 -1
  383. package/dist/services/webhook-store.d.ts.map +1 -1
  384. package/dist/services/worker-queue.js +5 -1
  385. package/dist/services/worker-queue.js.map +1 -1
  386. package/dist/utils/convert-custom-field-type.d.ts.map +1 -1
  387. package/dist/utils/cron.d.ts.map +1 -1
  388. package/dist/utils/fetch.d.ts.map +1 -1
  389. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  390. package/dist/utils/filepath-to-prop-path.js +13 -8
  391. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  392. package/dist/utils/is-initialized.d.ts.map +1 -1
  393. package/dist/utils/load-config-file.d.ts.map +1 -1
  394. package/dist/utils/load-config-file.js +7 -2
  395. package/dist/utils/load-config-file.js.map +1 -1
  396. package/dist/utils/load-files.d.ts +1 -1
  397. package/dist/utils/load-files.d.ts.map +1 -1
  398. package/dist/utils/load-files.js +12 -6
  399. package/dist/utils/load-files.js.map +1 -1
  400. package/dist/utils/open-browser.d.ts +0 -1
  401. package/dist/utils/open-browser.d.ts.map +1 -1
  402. package/dist/utils/open-browser.js +5 -1
  403. package/dist/utils/open-browser.js.map +1 -1
  404. package/dist/utils/resolve-working-dirs.d.ts.map +1 -1
  405. package/dist/utils/resolve-working-dirs.js +6 -2
  406. package/dist/utils/resolve-working-dirs.js.map +1 -1
  407. package/dist/utils/signals.d.ts.map +1 -1
  408. package/dist/utils/startup-logger.d.ts.map +1 -1
  409. package/dist/utils/startup-logger.js +27 -21
  410. package/dist/utils/startup-logger.js.map +1 -1
  411. package/dist/utils/transform-content-types-to-models.d.ts +3 -3
  412. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  413. package/dist/utils/transform-content-types-to-models.js +10 -5
  414. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  415. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  416. package/dist/utils/update-notifier/index.js +21 -8
  417. package/dist/utils/update-notifier/index.js.map +1 -1
  418. package/dist/utils/update-notifier/index.mjs +6 -1
  419. package/dist/utils/update-notifier/index.mjs.map +1 -1
  420. package/package.json +18 -21
@@ -5,6 +5,11 @@ var path = require('path');
5
5
  var crypto = require('crypto');
6
6
  var strapiUtils = require('@strapi/utils');
7
7
 
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var fs__default = /*#__PURE__*/_interopDefault(fs);
11
+ var crypto__default = /*#__PURE__*/_interopDefault(crypto);
12
+
8
13
  const DEFAULT_FEATURES = {
9
14
  bronze: [],
10
15
  silver: [],
@@ -38,7 +43,7 @@ const DEFAULT_FEATURES = {
38
43
  ]
39
44
  };
40
45
  const LICENSE_REGISTRY_URI = 'https://license.strapi.io';
41
- const publicKey = fs.readFileSync(path.resolve(__dirname, '../../resources/key.pub'));
46
+ const publicKey = fs__default.default.readFileSync(path.resolve(__dirname, '../../resources/key.pub'));
42
47
  class LicenseCheckError extends Error {
43
48
  constructor(message, shouldFallback = false){
44
49
  super(message), this.shouldFallback = false;
@@ -48,7 +53,7 @@ class LicenseCheckError extends Error {
48
53
  const readLicense = (directory)=>{
49
54
  try {
50
55
  const path$1 = path.join(directory, 'license.txt');
51
- return fs.readFileSync(path$1).toString();
56
+ return fs__default.default.readFileSync(path$1).toString();
52
57
  } catch (error) {
53
58
  if (typeof error === 'object' && error !== null && 'code' in error && error.code !== 'ENOENT') {
54
59
  throw Error('License file not readable, review its format and access rules.');
@@ -61,7 +66,7 @@ const verifyLicense = (license)=>{
61
66
  throw new Error('Invalid license.');
62
67
  }
63
68
  const stringifiedContent = Buffer.from(base64Content, 'base64').toString();
64
- const verify = crypto.createVerify('RSA-SHA256');
69
+ const verify = crypto__default.default.createVerify('RSA-SHA256');
65
70
  verify.update(stringifiedContent);
66
71
  verify.end();
67
72
  const verified = verify.verify(publicKey, signature, 'base64');
@@ -1 +1 @@
1
- {"version":3,"file":"license.js","sources":["../../src/ee/license.ts"],"sourcesContent":["import fs from 'fs';\nimport { join, resolve } from 'path';\nimport crypto from 'crypto';\nimport type { Core } from '@strapi/types';\n\nimport { generateInstallId } from '@strapi/utils';\n\ninterface LicenseInfo {\n type: 'bronze' | 'silver' | 'gold';\n isTrial: boolean;\n expireAt?: string;\n seats?: number;\n features?: Array<{ name: string; options?: Record<string, unknown> }>;\n subscriptionId?: string;\n planPriceId?: string;\n}\n\nconst DEFAULT_FEATURES = {\n bronze: [],\n silver: [],\n gold: [\n { name: 'sso' },\n // Set a null retention duration to allow the user to override it\n // The default of 90 days is set in the audit logs service\n { name: 'audit-logs', options: { retentionDays: null } },\n { name: 'review-workflows' },\n { name: 'cms-content-releases' },\n { name: 'cms-content-history', options: { retentionDays: 99999 } },\n { name: 'cms-advanced-preview' },\n ],\n};\n\nconst LICENSE_REGISTRY_URI = 'https://license.strapi.io';\n\nconst publicKey = fs.readFileSync(resolve(__dirname, '../../resources/key.pub'));\n\nclass LicenseCheckError extends Error {\n shouldFallback = false;\n\n constructor(message: string, shouldFallback = false) {\n super(message);\n\n this.shouldFallback = shouldFallback;\n }\n}\n\nconst readLicense = (directory: string) => {\n try {\n const path = join(directory, 'license.txt');\n return fs.readFileSync(path).toString();\n } catch (error) {\n if (typeof error === 'object' && error !== null && 'code' in error && error.code !== 'ENOENT') {\n throw Error('License file not readable, review its format and access rules.');\n }\n }\n};\n\nconst verifyLicense = (license: string) => {\n const [signature, base64Content] = Buffer.from(license, 'base64').toString().split('\\n');\n\n if (!signature || !base64Content) {\n throw new Error('Invalid license.');\n }\n\n const stringifiedContent = Buffer.from(base64Content, 'base64').toString();\n\n const verify = crypto.createVerify('RSA-SHA256');\n verify.update(stringifiedContent);\n verify.end();\n\n const verified = verify.verify(publicKey, signature, 'base64');\n\n if (!verified) {\n throw new Error('Invalid license.');\n }\n\n const licenseInfo: LicenseInfo = JSON.parse(stringifiedContent);\n\n if (!licenseInfo.features) {\n licenseInfo.features = DEFAULT_FEATURES[licenseInfo.type];\n }\n\n if (!licenseInfo.isTrial) {\n licenseInfo.isTrial = false;\n }\n\n Object.freeze(licenseInfo.features);\n return licenseInfo;\n};\n\nconst throwError = () => {\n throw new LicenseCheckError('Could not proceed to the online validation of your license.', true);\n};\n\nconst fetchLicense = async (\n { strapi }: { strapi: Core.Strapi },\n key: string,\n projectId: string\n) => {\n const { installId: installIdFromPackageJson } = strapi.config;\n\n const response = await strapi\n .fetch(`${LICENSE_REGISTRY_URI}/api/licenses/validate`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n key,\n projectId,\n deviceId: generateInstallId(projectId, installIdFromPackageJson),\n }), // NOTE: Doing nothing on the LR with the installId\n })\n .catch(throwError);\n\n const contentType = response.headers.get('Content-Type');\n\n if (contentType?.includes('application/json')) {\n const { data, error } = await response.json();\n\n switch (response.status) {\n case 200:\n return data.license;\n case 400:\n throw new LicenseCheckError(error.message);\n case 404:\n throw new LicenseCheckError('The license used does not exists.');\n default:\n throwError();\n }\n } else {\n throwError();\n }\n};\n\nexport { readLicense, verifyLicense, fetchLicense, LicenseCheckError, LICENSE_REGISTRY_URI };\n"],"names":["DEFAULT_FEATURES","bronze","silver","gold","name","options","retentionDays","LICENSE_REGISTRY_URI","publicKey","fs","readFileSync","resolve","__dirname","LicenseCheckError","Error","message","shouldFallback","readLicense","directory","path","join","toString","error","code","verifyLicense","license","signature","base64Content","Buffer","from","split","stringifiedContent","verify","crypto","createVerify","update","end","verified","licenseInfo","JSON","parse","features","type","isTrial","Object","freeze","throwError","fetchLicense","strapi","key","projectId","installId","installIdFromPackageJson","config","response","fetch","method","headers","body","stringify","deviceId","generateInstallId","catch","contentType","get","includes","data","json","status"],"mappings":"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"}
1
+ {"version":3,"file":"license.js","sources":["../../src/ee/license.ts"],"sourcesContent":["import fs from 'fs';\nimport { join, resolve } from 'path';\nimport crypto from 'crypto';\nimport type { Core } from '@strapi/types';\n\nimport { generateInstallId } from '@strapi/utils';\n\ninterface LicenseInfo {\n type: 'bronze' | 'silver' | 'gold';\n isTrial: boolean;\n expireAt?: string;\n seats?: number;\n features?: Array<{ name: string; options?: Record<string, unknown> }>;\n subscriptionId?: string;\n planPriceId?: string;\n}\n\nconst DEFAULT_FEATURES = {\n bronze: [],\n silver: [],\n gold: [\n { name: 'sso' },\n // Set a null retention duration to allow the user to override it\n // The default of 90 days is set in the audit logs service\n { name: 'audit-logs', options: { retentionDays: null } },\n { name: 'review-workflows' },\n { name: 'cms-content-releases' },\n { name: 'cms-content-history', options: { retentionDays: 99999 } },\n { name: 'cms-advanced-preview' },\n ],\n};\n\nconst LICENSE_REGISTRY_URI = 'https://license.strapi.io';\n\nconst publicKey = fs.readFileSync(resolve(__dirname, '../../resources/key.pub'));\n\nclass LicenseCheckError extends Error {\n shouldFallback = false;\n\n constructor(message: string, shouldFallback = false) {\n super(message);\n\n this.shouldFallback = shouldFallback;\n }\n}\n\nconst readLicense = (directory: string) => {\n try {\n const path = join(directory, 'license.txt');\n return fs.readFileSync(path).toString();\n } catch (error) {\n if (typeof error === 'object' && error !== null && 'code' in error && error.code !== 'ENOENT') {\n throw Error('License file not readable, review its format and access rules.');\n }\n }\n};\n\nconst verifyLicense = (license: string) => {\n const [signature, base64Content] = Buffer.from(license, 'base64').toString().split('\\n');\n\n if (!signature || !base64Content) {\n throw new Error('Invalid license.');\n }\n\n const stringifiedContent = Buffer.from(base64Content, 'base64').toString();\n\n const verify = crypto.createVerify('RSA-SHA256');\n verify.update(stringifiedContent);\n verify.end();\n\n const verified = verify.verify(publicKey, signature, 'base64');\n\n if (!verified) {\n throw new Error('Invalid license.');\n }\n\n const licenseInfo: LicenseInfo = JSON.parse(stringifiedContent);\n\n if (!licenseInfo.features) {\n licenseInfo.features = DEFAULT_FEATURES[licenseInfo.type];\n }\n\n if (!licenseInfo.isTrial) {\n licenseInfo.isTrial = false;\n }\n\n Object.freeze(licenseInfo.features);\n return licenseInfo;\n};\n\nconst throwError = () => {\n throw new LicenseCheckError('Could not proceed to the online validation of your license.', true);\n};\n\nconst fetchLicense = async (\n { strapi }: { strapi: Core.Strapi },\n key: string,\n projectId: string\n) => {\n const { installId: installIdFromPackageJson } = strapi.config;\n\n const response = await strapi\n .fetch(`${LICENSE_REGISTRY_URI}/api/licenses/validate`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n key,\n projectId,\n deviceId: generateInstallId(projectId, installIdFromPackageJson),\n }), // NOTE: Doing nothing on the LR with the installId\n })\n .catch(throwError);\n\n const contentType = response.headers.get('Content-Type');\n\n if (contentType?.includes('application/json')) {\n const { data, error } = await response.json();\n\n switch (response.status) {\n case 200:\n return data.license;\n case 400:\n throw new LicenseCheckError(error.message);\n case 404:\n throw new LicenseCheckError('The license used does not exists.');\n default:\n throwError();\n }\n } else {\n throwError();\n }\n};\n\nexport { readLicense, verifyLicense, fetchLicense, LicenseCheckError, LICENSE_REGISTRY_URI };\n"],"names":["DEFAULT_FEATURES","bronze","silver","gold","name","options","retentionDays","LICENSE_REGISTRY_URI","publicKey","fs","readFileSync","resolve","__dirname","LicenseCheckError","Error","message","shouldFallback","readLicense","directory","path","join","toString","error","code","verifyLicense","license","signature","base64Content","Buffer","from","split","stringifiedContent","verify","crypto","createVerify","update","end","verified","licenseInfo","JSON","parse","features","type","isTrial","Object","freeze","throwError","fetchLicense","strapi","key","projectId","installId","installIdFromPackageJson","config","response","fetch","method","headers","body","stringify","deviceId","generateInstallId","catch","contentType","get","includes","data","json","status"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../src/factories.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtD,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAQ7E,KAAK,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAEvF,QAAA,MAAM,oBAAoB,oGAInB,IAAI,QACH,mBACJ,MAAM,eAAe,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAC9E,mBAIE;IACD,MAAM,EAAE,KAAK,MAAM,CAAC;CACrB,KAAG,WAAW,GAAG,KAAK,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAwB3D,CAAC;AAEF,iBAAS,iBAAiB,CACxB,IAAI,SAAS,GAAG,CAAC,WAAW,EAC5B,QAAQ,SAAS,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAEtD,GAAG,EAAE,IAAI,EACT,GAAG,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,iBAI9F;IACD,MAAM,EAAE,KAAK,MAAM,CAAC;CACrB,KAAG,QAAQ,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CActD;AAED,iBAAS,gBAAgB,CAAC,CAAC,SAAS,GAAG,CAAC,WAAW,EACjD,GAAG,EAAE,CAAC,EACN,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,GACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CA+B5B;AAED,QAAA,MAAM,mBAAmB,mCAClB,CAAC,UACE,KAAK,MAAM,KAClB,6BAEF,CAAC;AAEF,QAAA,MAAM,kBAAkB,0CAA2C,CAAC,KAAG,OAEtE,CAAC;AAEF,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,CAAC"}
1
+ {"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../src/factories.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtD,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAQ7E,KAAK,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAEvF,QAAA,MAAM,oBAAoB,GACxB,IAAI,SAAS,GAAG,CAAC,WAAW,EAC5B,WAAW,SAAS,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAE5D,KAAK,IAAI,EACT,MAAM,kBAAkB,CACtB,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAC9E,MAEO,aAEL;IACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB,KAAG,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAwB3D,CAAC;AAEF,iBAAS,iBAAiB,CACxB,IAAI,SAAS,GAAG,CAAC,WAAW,EAC5B,QAAQ,SAAS,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAEtD,GAAG,EAAE,IAAI,EACT,GAAG,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,IAEzF,aAEL;IACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB,KAAG,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CActD;AAED,iBAAS,gBAAgB,CAAC,CAAC,SAAS,GAAG,CAAC,WAAW,EACjD,GAAG,EAAE,CAAC,EACN,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,GACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CA+B5B;AAED,QAAA,MAAM,mBAAmB,GAAI,CAAC,SAAS,GAAG,CAAC,WAAW,EACpD,KAAK,CAAC,EACN,QAAQ,IAAI,CAAC,MAAM,KAClB,6BAEF,CAAC;AAEF,QAAA,MAAM,kBAAkB,GAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,KAAG,OAEtE,CAAC;AAEF,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  import * as qs from 'qs';
2
2
  import type { Core } from '@strapi/types';
3
- import Strapi, { type StrapiOptions } from './Strapi';
3
+ import { type StrapiOptions } from './Strapi';
4
+ import type { ContextDelegatedResponseErrorMethods, ContextDelegatedResponseSuccessMethods } from './services/server/koa-methods';
4
5
  export { default as compileStrapi } from './compile';
5
6
  export * as factories from './factories';
7
+ export * as ai from './ai';
6
8
  export declare const createStrapi: (options?: Partial<StrapiOptions>) => Core.Strapi;
7
9
  declare module 'koa' {
8
10
  type ParsedQuery = ReturnType<typeof qs.parse>;
@@ -16,5 +18,7 @@ declare module 'koa' {
16
18
  get query(): ParsedQuery;
17
19
  set query(obj: any);
18
20
  }
21
+ interface DefaultContextDelegatedResponse extends ContextDelegatedResponseErrorMethods, ContextDelegatedResponseSuccessMethods {
22
+ }
19
23
  }
20
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,MAAM,EAAE,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAGtD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAEzC,eAAO,MAAM,YAAY,aAAa,QAAQ,aAAa,CAAC,KAAQ,WAanE,CAAC;AAIF,OAAO,QAAQ,KAAK,CAAC;IACnB,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IAE/C,UAAiB,WAAW;QAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;QAE1B,IAAI,KAAK,IAAI,WAAW,CAAC;QACzB,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;KACrB;IAED,UAAiB,WAAW;QAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;QAE1B,IAAI,KAAK,IAAI,WAAW,CAAC;QACzB,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;KACrB;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAe,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,KAAK,EACV,oCAAoC,EACpC,sCAAsC,EACvC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,MAAM,CAAC;AAE3B,eAAO,MAAM,YAAY,GAAI,UAAS,OAAO,CAAC,aAAa,CAAM,KAAG,IAAI,CAAC,MAaxE,CAAC;AAIF,OAAO,QAAQ,KAAK,CAAC;IACnB,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IAE/C,UAAiB,WAAW;QAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;QAE1B,IAAI,KAAK,IAAI,WAAW,CAAC;QACzB,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;KACrB;IAED,UAAiB,WAAW;QAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;QAE1B,IAAI,KAAK,IAAI,WAAW,CAAC;QACzB,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;KACrB;IAED,UAAU,+BACR,SAAQ,oCAAoC,EAC1C,sCAAsC;KAAG;CAC9C"}
package/dist/index.js CHANGED
@@ -15,6 +15,7 @@ var signals = require('./utils/signals.js');
15
15
  var resolveWorkingDirs = require('./utils/resolve-working-dirs.js');
16
16
  var compile = require('./compile.js');
17
17
  var factories = require('./factories.js');
18
+ var ai = require('./ai.js');
18
19
 
19
20
  const createStrapi = (options = {})=>{
20
21
  const strapi = new Strapi({
@@ -30,5 +31,6 @@ const createStrapi = (options = {})=>{
30
31
 
31
32
  exports.compileStrapi = compile;
32
33
  exports.factories = factories;
34
+ exports.ai = ai;
33
35
  exports.createStrapi = createStrapi;
34
36
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import * as qs from 'qs';\nimport type { Core } from '@strapi/types';\n\nimport Strapi, { type StrapiOptions } from './Strapi';\nimport { destroyOnSignal, resolveWorkingDirectories, createUpdateNotifier } from './utils';\n\nexport { default as compileStrapi } from './compile';\nexport * as factories from './factories';\n\nexport const createStrapi = (options: Partial<StrapiOptions> = {}): Core.Strapi => {\n const strapi = new Strapi({\n ...options,\n ...resolveWorkingDirectories(options),\n });\n\n destroyOnSignal(strapi);\n createUpdateNotifier(strapi);\n\n // TODO: deprecate and remove in next major\n global.strapi = strapi;\n\n return strapi;\n};\n\n// Augment Koa query type based on Strapi query middleware\n\ndeclare module 'koa' {\n type ParsedQuery = ReturnType<typeof qs.parse>;\n\n export interface BaseRequest {\n _querycache?: ParsedQuery;\n\n get query(): ParsedQuery;\n set query(obj: any);\n }\n\n export interface BaseContext {\n _querycache?: ParsedQuery;\n\n get query(): ParsedQuery;\n set query(obj: any);\n }\n}\n"],"names":["createStrapi","options","strapi","Strapi","resolveWorkingDirectories","destroyOnSignal","createUpdateNotifier","global"],"mappings":";;;;;;;;;;;;;;;;;;AASO,MAAMA,YAAAA,GAAe,CAACC,OAAAA,GAAkC,EAAE,GAAA;IAC/D,MAAMC,MAAAA,GAAS,IAAIC,MAAAA,CAAO;AACxB,QAAA,GAAGF,OAAO;AACV,QAAA,GAAGG,6CAA0BH,OAAAA;AAC/B,KAAA,CAAA;IAEAI,uBAAAA,CAAgBH,MAAAA,CAAAA;IAChBI,0BAAAA,CAAqBJ,MAAAA,CAAAA;;AAGrBK,IAAAA,MAAAA,CAAOL,MAAM,GAAGA,MAAAA;IAEhB,OAAOA,MAAAA;AACT;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import * as qs from 'qs';\nimport type { Core } from '@strapi/types';\n\nimport Strapi, { type StrapiOptions } from './Strapi';\nimport { destroyOnSignal, resolveWorkingDirectories, createUpdateNotifier } from './utils';\nimport type {\n ContextDelegatedResponseErrorMethods,\n ContextDelegatedResponseSuccessMethods,\n} from './services/server/koa-methods';\n\nexport { default as compileStrapi } from './compile';\nexport * as factories from './factories';\nexport * as ai from './ai';\n\nexport const createStrapi = (options: Partial<StrapiOptions> = {}): Core.Strapi => {\n const strapi = new Strapi({\n ...options,\n ...resolveWorkingDirectories(options),\n });\n\n destroyOnSignal(strapi);\n createUpdateNotifier(strapi);\n\n // TODO: deprecate and remove in next major\n global.strapi = strapi;\n\n return strapi;\n};\n\n// Augment Koa query type based on Strapi query middleware\n\ndeclare module 'koa' {\n type ParsedQuery = ReturnType<typeof qs.parse>;\n\n export interface BaseRequest {\n _querycache?: ParsedQuery;\n\n get query(): ParsedQuery;\n set query(obj: any);\n }\n\n export interface BaseContext {\n _querycache?: ParsedQuery;\n\n get query(): ParsedQuery;\n set query(obj: any);\n }\n\n interface DefaultContextDelegatedResponse\n extends ContextDelegatedResponseErrorMethods,\n ContextDelegatedResponseSuccessMethods {}\n}\n"],"names":["createStrapi","options","strapi","Strapi","resolveWorkingDirectories","destroyOnSignal","createUpdateNotifier","global"],"mappings":";;;;;;;;;;;;;;;;;;;AAcO,MAAMA,YAAAA,GAAe,CAACC,OAAAA,GAAkC,EAAE,GAAA;IAC/D,MAAMC,MAAAA,GAAS,IAAIC,MAAAA,CAAO;AACxB,QAAA,GAAGF,OAAO;AACV,QAAA,GAAGG,6CAA0BH,OAAAA;AAC/B,KAAA,CAAA;IAEAI,uBAAAA,CAAgBH,MAAAA,CAAAA;IAChBI,0BAAAA,CAAqBJ,MAAAA,CAAAA;;AAGrBK,IAAAA,MAAAA,CAAOL,MAAM,GAAGA,MAAAA;IAEhB,OAAOA,MAAAA;AACT;;;;;;;"}
package/dist/index.mjs CHANGED
@@ -14,6 +14,8 @@ import { resolveWorkingDirectories } from './utils/resolve-working-dirs.mjs';
14
14
  export { default as compileStrapi } from './compile.mjs';
15
15
  import * as factories from './factories.mjs';
16
16
  export { factories };
17
+ import * as ai from './ai.mjs';
18
+ export { ai };
17
19
 
18
20
  const createStrapi = (options = {})=>{
19
21
  const strapi = new Strapi({
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import * as qs from 'qs';\nimport type { Core } from '@strapi/types';\n\nimport Strapi, { type StrapiOptions } from './Strapi';\nimport { destroyOnSignal, resolveWorkingDirectories, createUpdateNotifier } from './utils';\n\nexport { default as compileStrapi } from './compile';\nexport * as factories from './factories';\n\nexport const createStrapi = (options: Partial<StrapiOptions> = {}): Core.Strapi => {\n const strapi = new Strapi({\n ...options,\n ...resolveWorkingDirectories(options),\n });\n\n destroyOnSignal(strapi);\n createUpdateNotifier(strapi);\n\n // TODO: deprecate and remove in next major\n global.strapi = strapi;\n\n return strapi;\n};\n\n// Augment Koa query type based on Strapi query middleware\n\ndeclare module 'koa' {\n type ParsedQuery = ReturnType<typeof qs.parse>;\n\n export interface BaseRequest {\n _querycache?: ParsedQuery;\n\n get query(): ParsedQuery;\n set query(obj: any);\n }\n\n export interface BaseContext {\n _querycache?: ParsedQuery;\n\n get query(): ParsedQuery;\n set query(obj: any);\n }\n}\n"],"names":["createStrapi","options","strapi","Strapi","resolveWorkingDirectories","destroyOnSignal","createUpdateNotifier","global"],"mappings":";;;;;;;;;;;;;;;;;AASO,MAAMA,YAAAA,GAAe,CAACC,OAAAA,GAAkC,EAAE,GAAA;IAC/D,MAAMC,MAAAA,GAAS,IAAIC,MAAAA,CAAO;AACxB,QAAA,GAAGF,OAAO;AACV,QAAA,GAAGG,0BAA0BH,OAAAA;AAC/B,KAAA,CAAA;IAEAI,eAAAA,CAAgBH,MAAAA,CAAAA;IAChBI,oBAAAA,CAAqBJ,MAAAA,CAAAA;;AAGrBK,IAAAA,MAAAA,CAAOL,MAAM,GAAGA,MAAAA;IAEhB,OAAOA,MAAAA;AACT;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import * as qs from 'qs';\nimport type { Core } from '@strapi/types';\n\nimport Strapi, { type StrapiOptions } from './Strapi';\nimport { destroyOnSignal, resolveWorkingDirectories, createUpdateNotifier } from './utils';\nimport type {\n ContextDelegatedResponseErrorMethods,\n ContextDelegatedResponseSuccessMethods,\n} from './services/server/koa-methods';\n\nexport { default as compileStrapi } from './compile';\nexport * as factories from './factories';\nexport * as ai from './ai';\n\nexport const createStrapi = (options: Partial<StrapiOptions> = {}): Core.Strapi => {\n const strapi = new Strapi({\n ...options,\n ...resolveWorkingDirectories(options),\n });\n\n destroyOnSignal(strapi);\n createUpdateNotifier(strapi);\n\n // TODO: deprecate and remove in next major\n global.strapi = strapi;\n\n return strapi;\n};\n\n// Augment Koa query type based on Strapi query middleware\n\ndeclare module 'koa' {\n type ParsedQuery = ReturnType<typeof qs.parse>;\n\n export interface BaseRequest {\n _querycache?: ParsedQuery;\n\n get query(): ParsedQuery;\n set query(obj: any);\n }\n\n export interface BaseContext {\n _querycache?: ParsedQuery;\n\n get query(): ParsedQuery;\n set query(obj: any);\n }\n\n interface DefaultContextDelegatedResponse\n extends ContextDelegatedResponseErrorMethods,\n ContextDelegatedResponseSuccessMethods {}\n}\n"],"names":["createStrapi","options","strapi","Strapi","resolveWorkingDirectories","destroyOnSignal","createUpdateNotifier","global"],"mappings":";;;;;;;;;;;;;;;;;;;AAcO,MAAMA,YAAAA,GAAe,CAACC,OAAAA,GAAkC,EAAE,GAAA;IAC/D,MAAMC,MAAAA,GAAS,IAAIC,MAAAA,CAAO;AACxB,QAAA,GAAGF,OAAO;AACV,QAAA,GAAGG,0BAA0BH,OAAAA;AAC/B,KAAA,CAAA;IAEAI,eAAAA,CAAgBH,MAAAA,CAAAA;IAChBI,oBAAAA,CAAqBJ,MAAAA,CAAAA;;AAGrBK,IAAAA,MAAAA,CAAOL,MAAM,GAAGA,MAAAA;IAEhB,OAAOA,MAAAA;AACT;;;;"}
@@ -3,6 +3,10 @@
3
3
  var _ = require('lodash');
4
4
  var index = require('../domain/content-type/index.js');
5
5
 
6
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
+
8
+ var ___default = /*#__PURE__*/_interopDefault(_);
9
+
6
10
  async function loadAdmin(strapi) {
7
11
  strapi.get('services').add(`admin::`, strapi.admin?.services);
8
12
  strapi.get('controllers').add(`admin::`, strapi.admin?.controllers);
@@ -10,7 +14,7 @@ async function loadAdmin(strapi) {
10
14
  strapi.get('policies').add(`admin::`, strapi.admin?.policies);
11
15
  strapi.get('middlewares').add(`admin::`, strapi.admin?.middlewares);
12
16
  const userAdminConfig = strapi.config.get('admin');
13
- strapi.get('config').set('admin', _.merge(strapi.admin?.config, userAdminConfig));
17
+ strapi.get('config').set('admin', ___default.default.merge(strapi.admin?.config, userAdminConfig));
14
18
  }
15
19
  const formatContentTypes = (contentTypes)=>{
16
20
  Object.values(contentTypes).forEach((definition)=>{
@@ -1 +1 @@
1
- {"version":3,"file":"admin.js","sources":["../../src/loaders/admin.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Core, Struct } from '@strapi/types';\nimport { getGlobalId } from '../domain/content-type';\n\nexport default async function loadAdmin(strapi: Core.Strapi) {\n strapi.get('services').add(`admin::`, strapi.admin?.services);\n strapi.get('controllers').add(`admin::`, strapi.admin?.controllers);\n strapi.get('content-types').add(`admin::`, formatContentTypes(strapi.admin?.contentTypes ?? {}));\n strapi.get('policies').add(`admin::`, strapi.admin?.policies);\n strapi.get('middlewares').add(`admin::`, strapi.admin?.middlewares);\n\n const userAdminConfig = strapi.config.get('admin');\n strapi.get('config').set('admin', _.merge(strapi.admin?.config, userAdminConfig));\n}\n\nconst formatContentTypes = (contentTypes: Record<string, { schema: Struct.ContentTypeSchema }>) => {\n Object.values(contentTypes).forEach((definition) => {\n const { schema } = definition;\n\n Object.assign(schema, {\n plugin: 'admin',\n globalId: getGlobalId(schema, 'admin'),\n });\n });\n\n return contentTypes;\n};\n"],"names":["loadAdmin","strapi","get","add","admin","services","controllers","formatContentTypes","contentTypes","policies","middlewares","userAdminConfig","config","set","_","merge","Object","values","forEach","definition","schema","assign","plugin","globalId","getGlobalId"],"mappings":";;;;;AAIe,eAAeA,UAAUC,MAAmB,EAAA;IACzDA,MAAAA,CAAOC,GAAG,CAAC,UAAA,CAAA,CAAYC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAEF,MAAAA,CAAOG,KAAK,EAAEC,QAAAA,CAAAA;IACpDJ,MAAAA,CAAOC,GAAG,CAAC,aAAA,CAAA,CAAeC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAEF,MAAAA,CAAOG,KAAK,EAAEE,WAAAA,CAAAA;AACvDL,IAAAA,MAAAA,CAAOC,GAAG,CAAC,eAAA,CAAA,CAAiBC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAEI,kBAAAA,CAAmBN,MAAAA,CAAOG,KAAK,EAAEI,gBAAgB,EAAC,CAAA,CAAA;IAC7FP,MAAAA,CAAOC,GAAG,CAAC,UAAA,CAAA,CAAYC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAEF,MAAAA,CAAOG,KAAK,EAAEK,QAAAA,CAAAA;IACpDR,MAAAA,CAAOC,GAAG,CAAC,aAAA,CAAA,CAAeC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAEF,MAAAA,CAAOG,KAAK,EAAEM,WAAAA,CAAAA;AAEvD,IAAA,MAAMC,eAAAA,GAAkBV,MAAAA,CAAOW,MAAM,CAACV,GAAG,CAAC,OAAA,CAAA;AAC1CD,IAAAA,MAAAA,CAAOC,GAAG,CAAC,QAAA,CAAA,CAAUW,GAAG,CAAC,OAAA,EAASC,CAAAA,CAAEC,KAAK,CAACd,MAAAA,CAAOG,KAAK,EAAEQ,MAAAA,EAAQD,eAAAA,CAAAA,CAAAA;AAClE;AAEA,MAAMJ,qBAAqB,CAACC,YAAAA,GAAAA;AAC1BQ,IAAAA,MAAAA,CAAOC,MAAM,CAACT,YAAAA,CAAAA,CAAcU,OAAO,CAAC,CAACC,UAAAA,GAAAA;QACnC,MAAM,EAAEC,MAAM,EAAE,GAAGD,UAAAA;QAEnBH,MAAAA,CAAOK,MAAM,CAACD,MAAAA,EAAQ;YACpBE,MAAAA,EAAQ,OAAA;AACRC,YAAAA,QAAAA,EAAUC,kBAAYJ,MAAAA,EAAQ,OAAA;AAChC,SAAA,CAAA;AACF,IAAA,CAAA,CAAA;IAEA,OAAOZ,YAAAA;AACT,CAAA;;;;"}
1
+ {"version":3,"file":"admin.js","sources":["../../src/loaders/admin.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Core, Struct } from '@strapi/types';\nimport { getGlobalId } from '../domain/content-type';\n\nexport default async function loadAdmin(strapi: Core.Strapi) {\n strapi.get('services').add(`admin::`, strapi.admin?.services);\n strapi.get('controllers').add(`admin::`, strapi.admin?.controllers);\n strapi.get('content-types').add(`admin::`, formatContentTypes(strapi.admin?.contentTypes ?? {}));\n strapi.get('policies').add(`admin::`, strapi.admin?.policies);\n strapi.get('middlewares').add(`admin::`, strapi.admin?.middlewares);\n\n const userAdminConfig = strapi.config.get('admin');\n strapi.get('config').set('admin', _.merge(strapi.admin?.config, userAdminConfig));\n}\n\nconst formatContentTypes = (contentTypes: Record<string, { schema: Struct.ContentTypeSchema }>) => {\n Object.values(contentTypes).forEach((definition) => {\n const { schema } = definition;\n\n Object.assign(schema, {\n plugin: 'admin',\n globalId: getGlobalId(schema, 'admin'),\n });\n });\n\n return contentTypes;\n};\n"],"names":["loadAdmin","strapi","get","add","admin","services","controllers","formatContentTypes","contentTypes","policies","middlewares","userAdminConfig","config","set","_","merge","Object","values","forEach","definition","schema","assign","plugin","globalId","getGlobalId"],"mappings":";;;;;;;;;AAIe,eAAeA,UAAUC,MAAmB,EAAA;IACzDA,MAAAA,CAAOC,GAAG,CAAC,UAAA,CAAA,CAAYC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAEF,MAAAA,CAAOG,KAAK,EAAEC,QAAAA,CAAAA;IACpDJ,MAAAA,CAAOC,GAAG,CAAC,aAAA,CAAA,CAAeC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAEF,MAAAA,CAAOG,KAAK,EAAEE,WAAAA,CAAAA;AACvDL,IAAAA,MAAAA,CAAOC,GAAG,CAAC,eAAA,CAAA,CAAiBC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAEI,kBAAAA,CAAmBN,MAAAA,CAAOG,KAAK,EAAEI,gBAAgB,EAAC,CAAA,CAAA;IAC7FP,MAAAA,CAAOC,GAAG,CAAC,UAAA,CAAA,CAAYC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAEF,MAAAA,CAAOG,KAAK,EAAEK,QAAAA,CAAAA;IACpDR,MAAAA,CAAOC,GAAG,CAAC,aAAA,CAAA,CAAeC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAEF,MAAAA,CAAOG,KAAK,EAAEM,WAAAA,CAAAA;AAEvD,IAAA,MAAMC,eAAAA,GAAkBV,MAAAA,CAAOW,MAAM,CAACV,GAAG,CAAC,OAAA,CAAA;AAC1CD,IAAAA,MAAAA,CAAOC,GAAG,CAAC,QAAA,CAAA,CAAUW,GAAG,CAAC,OAAA,EAASC,kBAAAA,CAAEC,KAAK,CAACd,MAAAA,CAAOG,KAAK,EAAEQ,MAAAA,EAAQD,eAAAA,CAAAA,CAAAA;AAClE;AAEA,MAAMJ,qBAAqB,CAACC,YAAAA,GAAAA;AAC1BQ,IAAAA,MAAAA,CAAOC,MAAM,CAACT,YAAAA,CAAAA,CAAcU,OAAO,CAAC,CAACC,UAAAA,GAAAA;QACnC,MAAM,EAAEC,MAAM,EAAE,GAAGD,UAAAA;QAEnBH,MAAAA,CAAOK,MAAM,CAACD,MAAAA,EAAQ;YACpBE,MAAAA,EAAQ,OAAA;AACRC,YAAAA,QAAAA,EAAUC,kBAAYJ,MAAAA,EAAQ,OAAA;AAChC,SAAA,CAAA;AACF,IAAA,CAAA,CAAA;IAEA,OAAOZ,YAAAA;AACT,CAAA;;;;"}
@@ -7,22 +7,27 @@ var strapiUtils = require('@strapi/utils');
7
7
  var fp = require('lodash/fp');
8
8
  var index = require('../domain/content-type/index.js');
9
9
 
10
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
+
12
+ var fse__default = /*#__PURE__*/_interopDefault(fse);
13
+ var ___default = /*#__PURE__*/_interopDefault(_);
14
+
10
15
  const DEFAULT_CONTENT_TYPE = {
11
16
  schema: {},
12
17
  actions: {},
13
18
  lifecycles: {}
14
19
  };
15
20
  // to handle names with numbers in it we first check if it is already in kebabCase
16
- const normalizeName = (name)=>strapiUtils.strings.isKebabCase(name) ? name : _.kebabCase(name);
21
+ const normalizeName = (name)=>strapiUtils.strings.isKebabCase(name) ? name : ___default.default.kebabCase(name);
17
22
  const isDirectory = (fd)=>fd.isDirectory();
18
23
  const isDotFile = (fd)=>fd.name.startsWith('.');
19
24
  async function loadAPIs(strapi) {
20
25
  if (!fse.existsSync(strapi.dirs.dist.api)) {
21
26
  return;
22
27
  }
23
- const apisFDs = await (await fse.readdir(strapi.dirs.dist.api, {
28
+ const apisFDs = await (await fse__default.default.readdir(strapi.dirs.dist.api, {
24
29
  withFileTypes: true
25
- })).filter(isDirectory).filter(_.negate(isDotFile));
30
+ })).filter(isDirectory).filter(___default.default.negate(isDotFile));
26
31
  const apis = {};
27
32
  // only load folders
28
33
  for (const apiFD of apisFDs){
@@ -41,14 +46,14 @@ const validateContentTypesUnicity = (apis)=>{
41
46
  const names = [];
42
47
  allApisSchemas.forEach(({ schema })=>{
43
48
  if (schema.info.singularName) {
44
- const singularName = _.kebabCase(schema.info.singularName);
49
+ const singularName = ___default.default.kebabCase(schema.info.singularName);
45
50
  if (names.includes(singularName)) {
46
51
  throw new Error(`The singular name "${schema.info.singularName}" should be unique`);
47
52
  }
48
53
  names.push(singularName);
49
54
  }
50
55
  if (schema.info.pluralName) {
51
- const pluralName = _.kebabCase(schema.info.pluralName);
56
+ const pluralName = ___default.default.kebabCase(schema.info.pluralName);
52
57
  if (names.includes(pluralName)) {
53
58
  throw new Error(`The plural name "${schema.info.pluralName}" should be unique`);
54
59
  }
@@ -79,16 +84,16 @@ const loadAPI = async (apiName, dir)=>{
79
84
  };
80
85
  };
81
86
  const loadIndex = async (dir)=>{
82
- if (await fse.pathExists(path.join(dir, 'index.js'))) {
87
+ if (await fse__default.default.pathExists(path.join(dir, 'index.js'))) {
83
88
  return loadFile(path.join(dir, 'index.js'));
84
89
  }
85
90
  };
86
91
  // because this is async and its contents are dynamic, we must return it within an object to avoid a property called `then` being interpreted as a Promise
87
92
  const loadContentTypes = async (apiName, dir)=>{
88
- if (!await fse.pathExists(dir)) {
93
+ if (!await fse__default.default.pathExists(dir)) {
89
94
  return;
90
95
  }
91
- const fds = await fse.readdir(dir, {
96
+ const fds = await fse__default.default.readdir(dir, {
92
97
  withFileTypes: true
93
98
  });
94
99
  const contentTypes = {};
@@ -119,10 +124,10 @@ const loadContentTypes = async (apiName, dir)=>{
119
124
  };
120
125
  // because this is async and its contents are dynamic, we must return it within an object to avoid a property called `then` being interpreted as a Promise
121
126
  const loadDir = async (dir)=>{
122
- if (!await fse.pathExists(dir)) {
127
+ if (!await fse__default.default.pathExists(dir)) {
123
128
  return;
124
129
  }
125
- const fds = await fse.readdir(dir, {
130
+ const fds = await fse__default.default.readdir(dir, {
126
131
  withFileTypes: true
127
132
  });
128
133
  const root = {};
@@ -147,7 +152,7 @@ const loadFile = async (file)=>{
147
152
  };
148
153
  case '.json':
149
154
  return {
150
- result: await fse.readJSON(file)
155
+ result: await fse__default.default.readJSON(file)
151
156
  };
152
157
  default:
153
158
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"apis.js","sources":["../../src/loaders/apis.ts"],"sourcesContent":["import { join, extname, basename } from 'path';\nimport fse, { existsSync } from 'fs-extra';\nimport _ from 'lodash';\nimport { strings, importDefault } from '@strapi/utils';\nimport { isEmpty } from 'lodash/fp';\nimport type { Core, Struct } from '@strapi/types';\nimport { getGlobalId, type ContentTypeDefinition } from '../domain/content-type';\n\ninterface API {\n bootstrap: () => void | Promise<void>;\n destroy: () => void | Promise<void>;\n register: () => void | Promise<void>;\n config: Record<string, unknown>;\n routes: Record<string, Core.Router>;\n controllers: Record<string, Core.Controller>;\n services: Record<string, Core.Service>;\n policies: Record<string, Core.Policy>;\n middlewares: Record<string, Core.Middleware>;\n contentTypes: Record<string, { schema: Struct.ContentTypeSchema }>;\n}\n\ninterface APIs {\n [key: string]: API;\n}\n\nconst DEFAULT_CONTENT_TYPE = {\n schema: {},\n actions: {},\n lifecycles: {},\n};\n\n// to handle names with numbers in it we first check if it is already in kebabCase\nconst normalizeName = (name: string) => (strings.isKebabCase(name) ? name : _.kebabCase(name));\n\nconst isDirectory = (fd: fse.Dirent) => fd.isDirectory();\nconst isDotFile = (fd: fse.Dirent) => fd.name.startsWith('.');\n\nexport default async function loadAPIs(strapi: Core.Strapi) {\n if (!existsSync(strapi.dirs.dist.api)) {\n return;\n }\n\n const apisFDs = await (await fse.readdir(strapi.dirs.dist.api, { withFileTypes: true }))\n .filter(isDirectory)\n .filter(_.negate(isDotFile));\n\n const apis: APIs = {};\n\n // only load folders\n for (const apiFD of apisFDs) {\n const apiName = normalizeName(apiFD.name);\n const api = await loadAPI(apiName, join(strapi.dirs.dist.api, apiFD.name));\n\n // @ts-expect-error TODO verify that it's a valid api, not missing bootstrap, register, and destroy\n apis[apiName] = api;\n }\n\n validateContentTypesUnicity(apis);\n\n for (const apiName of Object.keys(apis)) {\n strapi.get('apis').add(apiName, apis[apiName]);\n }\n}\n\nconst validateContentTypesUnicity = (apis: APIs) => {\n const allApisSchemas = Object.values(apis).flatMap((api) => Object.values(api.contentTypes));\n\n const names: string[] = [];\n allApisSchemas.forEach(({ schema }) => {\n if (schema.info.singularName) {\n const singularName = _.kebabCase(schema.info.singularName);\n if (names.includes(singularName)) {\n throw new Error(`The singular name \"${schema.info.singularName}\" should be unique`);\n }\n names.push(singularName);\n }\n\n if (schema.info.pluralName) {\n const pluralName = _.kebabCase(schema.info.pluralName);\n if (names.includes(pluralName)) {\n throw new Error(`The plural name \"${schema.info.pluralName}\" should be unique`);\n }\n names.push(pluralName);\n }\n });\n};\n\nconst loadAPI = async (apiName: string, dir: string) => {\n const [index, config, routes, controllers, services, policies, middlewares, contentTypes] = (\n await Promise.all([\n loadIndex(dir),\n loadDir(join(dir, 'config')),\n loadDir(join(dir, 'routes')),\n loadDir(join(dir, 'controllers')),\n loadDir(join(dir, 'services')),\n loadDir(join(dir, 'policies')),\n loadDir(join(dir, 'middlewares')),\n loadContentTypes(apiName, join(dir, 'content-types')),\n ])\n ).map((result) => result?.result);\n\n return {\n ...(index || {}),\n config: config || {},\n routes: routes || [],\n controllers: controllers || {},\n services: services || {},\n policies: policies || {},\n middlewares: middlewares || {},\n contentTypes: contentTypes || {},\n };\n};\n\nconst loadIndex = async (dir: string) => {\n if (await fse.pathExists(join(dir, 'index.js'))) {\n return loadFile(join(dir, 'index.js'));\n }\n};\n\n// because this is async and its contents are dynamic, we must return it within an object to avoid a property called `then` being interpreted as a Promise\nconst loadContentTypes = async (apiName: string, dir: string) => {\n if (!(await fse.pathExists(dir))) {\n return;\n }\n\n const fds = await fse.readdir(dir, { withFileTypes: true });\n const contentTypes: API['contentTypes'] = {};\n\n // only load folders\n for (const fd of fds) {\n if (fd.isFile()) {\n continue;\n }\n\n const contentTypeName = normalizeName(fd.name);\n const loadedContentType = (await loadDir(join(dir, fd.name)))?.result;\n\n if (isEmpty(loadedContentType) || isEmpty(loadedContentType.schema)) {\n throw new Error(`Could not load content type found at ${dir}`);\n }\n\n const contentType = {\n ...DEFAULT_CONTENT_TYPE,\n ...loadedContentType,\n } as ContentTypeDefinition;\n\n Object.assign(contentType.schema, {\n apiName,\n collectionName: contentType.schema.collectionName || contentType.schema.info.singularName,\n globalId: getGlobalId(contentType.schema),\n });\n\n contentTypes[normalizeName(contentTypeName)] = contentType;\n }\n\n return { result: contentTypes };\n};\n\n// because this is async and its contents are dynamic, we must return it within an object to avoid a property called `then` being interpreted as a Promise\nconst loadDir = async (dir: string) => {\n if (!(await fse.pathExists(dir))) {\n return;\n }\n\n const fds = await fse.readdir(dir, { withFileTypes: true });\n\n const root: Record<string, unknown> = {};\n for (const fd of fds) {\n if (!fd.isFile() || extname(fd.name) === '.map') {\n continue;\n }\n\n const key = basename(fd.name, extname(fd.name));\n\n root[normalizeName(key)] = (await loadFile(join(dir, fd.name))).result;\n }\n\n return { result: root };\n};\n\n// because this is async and its contents are dynamic, we must return it as an array to avoid a property called `then` being interpreted as a Promise\nconst loadFile = async (file: string): Promise<{ result: unknown }> => {\n const ext = extname(file);\n\n switch (ext) {\n case '.js':\n return { result: importDefault(file) };\n case '.json':\n return { result: await fse.readJSON(file) };\n default:\n return { result: {} };\n }\n};\n"],"names":["DEFAULT_CONTENT_TYPE","schema","actions","lifecycles","normalizeName","name","strings","isKebabCase","_","kebabCase","isDirectory","fd","isDotFile","startsWith","loadAPIs","strapi","existsSync","dirs","dist","api","apisFDs","fse","readdir","withFileTypes","filter","negate","apis","apiFD","apiName","loadAPI","join","validateContentTypesUnicity","Object","keys","get","add","allApisSchemas","values","flatMap","contentTypes","names","forEach","info","singularName","includes","Error","push","pluralName","dir","index","config","routes","controllers","services","policies","middlewares","Promise","all","loadIndex","loadDir","loadContentTypes","map","result","pathExists","loadFile","fds","isFile","contentTypeName","loadedContentType","isEmpty","contentType","assign","collectionName","globalId","getGlobalId","root","extname","key","basename","file","ext","importDefault","readJSON"],"mappings":"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"}
1
+ {"version":3,"file":"apis.js","sources":["../../src/loaders/apis.ts"],"sourcesContent":["import { join, extname, basename } from 'path';\nimport fse, { existsSync } from 'fs-extra';\nimport _ from 'lodash';\nimport { strings, importDefault } from '@strapi/utils';\nimport { isEmpty } from 'lodash/fp';\nimport type { Core, Struct } from '@strapi/types';\nimport { getGlobalId, type ContentTypeDefinition } from '../domain/content-type';\n\ninterface API {\n bootstrap: () => void | Promise<void>;\n destroy: () => void | Promise<void>;\n register: () => void | Promise<void>;\n config: Record<string, unknown>;\n routes: Record<string, Core.Router>;\n controllers: Record<string, Core.Controller>;\n services: Record<string, Core.Service>;\n policies: Record<string, Core.Policy>;\n middlewares: Record<string, Core.Middleware>;\n contentTypes: Record<string, { schema: Struct.ContentTypeSchema }>;\n}\n\ninterface APIs {\n [key: string]: API;\n}\n\nconst DEFAULT_CONTENT_TYPE = {\n schema: {},\n actions: {},\n lifecycles: {},\n};\n\n// to handle names with numbers in it we first check if it is already in kebabCase\nconst normalizeName = (name: string) => (strings.isKebabCase(name) ? name : _.kebabCase(name));\n\nconst isDirectory = (fd: fse.Dirent) => fd.isDirectory();\nconst isDotFile = (fd: fse.Dirent) => fd.name.startsWith('.');\n\nexport default async function loadAPIs(strapi: Core.Strapi) {\n if (!existsSync(strapi.dirs.dist.api)) {\n return;\n }\n\n const apisFDs = await (await fse.readdir(strapi.dirs.dist.api, { withFileTypes: true }))\n .filter(isDirectory)\n .filter(_.negate(isDotFile));\n\n const apis: APIs = {};\n\n // only load folders\n for (const apiFD of apisFDs) {\n const apiName = normalizeName(apiFD.name);\n const api = await loadAPI(apiName, join(strapi.dirs.dist.api, apiFD.name));\n\n // @ts-expect-error TODO verify that it's a valid api, not missing bootstrap, register, and destroy\n apis[apiName] = api;\n }\n\n validateContentTypesUnicity(apis);\n\n for (const apiName of Object.keys(apis)) {\n strapi.get('apis').add(apiName, apis[apiName]);\n }\n}\n\nconst validateContentTypesUnicity = (apis: APIs) => {\n const allApisSchemas = Object.values(apis).flatMap((api) => Object.values(api.contentTypes));\n\n const names: string[] = [];\n allApisSchemas.forEach(({ schema }) => {\n if (schema.info.singularName) {\n const singularName = _.kebabCase(schema.info.singularName);\n if (names.includes(singularName)) {\n throw new Error(`The singular name \"${schema.info.singularName}\" should be unique`);\n }\n names.push(singularName);\n }\n\n if (schema.info.pluralName) {\n const pluralName = _.kebabCase(schema.info.pluralName);\n if (names.includes(pluralName)) {\n throw new Error(`The plural name \"${schema.info.pluralName}\" should be unique`);\n }\n names.push(pluralName);\n }\n });\n};\n\nconst loadAPI = async (apiName: string, dir: string) => {\n const [index, config, routes, controllers, services, policies, middlewares, contentTypes] = (\n await Promise.all([\n loadIndex(dir),\n loadDir(join(dir, 'config')),\n loadDir(join(dir, 'routes')),\n loadDir(join(dir, 'controllers')),\n loadDir(join(dir, 'services')),\n loadDir(join(dir, 'policies')),\n loadDir(join(dir, 'middlewares')),\n loadContentTypes(apiName, join(dir, 'content-types')),\n ])\n ).map((result) => result?.result);\n\n return {\n ...(index || {}),\n config: config || {},\n routes: routes || [],\n controllers: controllers || {},\n services: services || {},\n policies: policies || {},\n middlewares: middlewares || {},\n contentTypes: contentTypes || {},\n };\n};\n\nconst loadIndex = async (dir: string) => {\n if (await fse.pathExists(join(dir, 'index.js'))) {\n return loadFile(join(dir, 'index.js'));\n }\n};\n\n// because this is async and its contents are dynamic, we must return it within an object to avoid a property called `then` being interpreted as a Promise\nconst loadContentTypes = async (apiName: string, dir: string) => {\n if (!(await fse.pathExists(dir))) {\n return;\n }\n\n const fds = await fse.readdir(dir, { withFileTypes: true });\n const contentTypes: API['contentTypes'] = {};\n\n // only load folders\n for (const fd of fds) {\n if (fd.isFile()) {\n continue;\n }\n\n const contentTypeName = normalizeName(fd.name);\n const loadedContentType = (await loadDir(join(dir, fd.name)))?.result;\n\n if (isEmpty(loadedContentType) || isEmpty(loadedContentType.schema)) {\n throw new Error(`Could not load content type found at ${dir}`);\n }\n\n const contentType = {\n ...DEFAULT_CONTENT_TYPE,\n ...loadedContentType,\n } as ContentTypeDefinition;\n\n Object.assign(contentType.schema, {\n apiName,\n collectionName: contentType.schema.collectionName || contentType.schema.info.singularName,\n globalId: getGlobalId(contentType.schema),\n });\n\n contentTypes[normalizeName(contentTypeName)] = contentType;\n }\n\n return { result: contentTypes };\n};\n\n// because this is async and its contents are dynamic, we must return it within an object to avoid a property called `then` being interpreted as a Promise\nconst loadDir = async (dir: string) => {\n if (!(await fse.pathExists(dir))) {\n return;\n }\n\n const fds = await fse.readdir(dir, { withFileTypes: true });\n\n const root: Record<string, unknown> = {};\n for (const fd of fds) {\n if (!fd.isFile() || extname(fd.name) === '.map') {\n continue;\n }\n\n const key = basename(fd.name, extname(fd.name));\n\n root[normalizeName(key)] = (await loadFile(join(dir, fd.name))).result;\n }\n\n return { result: root };\n};\n\n// because this is async and its contents are dynamic, we must return it as an array to avoid a property called `then` being interpreted as a Promise\nconst loadFile = async (file: string): Promise<{ result: unknown }> => {\n const ext = extname(file);\n\n switch (ext) {\n case '.js':\n return { result: importDefault(file) };\n case '.json':\n return { result: await fse.readJSON(file) };\n default:\n return { result: {} };\n }\n};\n"],"names":["DEFAULT_CONTENT_TYPE","schema","actions","lifecycles","normalizeName","name","strings","isKebabCase","_","kebabCase","isDirectory","fd","isDotFile","startsWith","loadAPIs","strapi","existsSync","dirs","dist","api","apisFDs","fse","readdir","withFileTypes","filter","negate","apis","apiFD","apiName","loadAPI","join","validateContentTypesUnicity","Object","keys","get","add","allApisSchemas","values","flatMap","contentTypes","names","forEach","info","singularName","includes","Error","push","pluralName","dir","index","config","routes","controllers","services","policies","middlewares","Promise","all","loadIndex","loadDir","loadContentTypes","map","result","pathExists","loadFile","fds","isFile","contentTypeName","loadedContentType","isEmpty","contentType","assign","collectionName","globalId","getGlobalId","root","extname","key","basename","file","ext","importDefault","readJSON"],"mappings":"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"}
@@ -5,6 +5,10 @@ var _ = require('lodash');
5
5
  var fse = require('fs-extra');
6
6
  var loadFiles = require('../utils/load-files.js');
7
7
 
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var ___default = /*#__PURE__*/_interopDefault(_);
11
+
8
12
  async function loadComponents(strapi) {
9
13
  if (!await fse.pathExists(strapi.dirs.dist.components)) {
10
14
  return {};
@@ -20,12 +24,12 @@ async function loadComponents(strapi) {
20
24
  }
21
25
  const uid = `${category}.${key}`;
22
26
  acc[uid] = Object.assign(schema, {
23
- __schema__: _.cloneDeep(schema),
27
+ __schema__: ___default.default.cloneDeep(schema),
24
28
  uid,
25
29
  category,
26
30
  modelType: 'component',
27
31
  modelName: key,
28
- globalId: schema.globalId || _.upperFirst(_.camelCase(`component_${uid}`))
32
+ globalId: schema.globalId || ___default.default.upperFirst(___default.default.camelCase(`component_${uid}`))
29
33
  });
30
34
  });
31
35
  return acc;
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sources":["../../src/loaders/components.ts"],"sourcesContent":["import { join } from 'path';\nimport _ from 'lodash';\nimport { pathExists } from 'fs-extra';\nimport type { Core, Struct, UID } from '@strapi/types';\nimport { loadFiles } from '../utils/load-files';\n\ntype LoadedComponent = {\n collectionName: string;\n __filename__: string;\n __schema__: LoadedComponent;\n uid: string;\n category: string;\n modelName: string;\n globalId: string;\n info: any;\n attributes: any;\n};\n\ntype LoadedComponents = {\n [category: string]: {\n [key: string]: LoadedComponent;\n };\n};\n\ntype ComponentMap = {\n [uid in UID.Component]: Struct.ComponentSchema;\n};\n\nexport default async function loadComponents(strapi: Core.Strapi) {\n if (!(await pathExists(strapi.dirs.dist.components))) {\n return {};\n }\n\n const map = await loadFiles<LoadedComponents>(strapi.dirs.dist.components, '*/*.*(js|json)');\n\n const components = Object.keys(map).reduce((acc, category) => {\n Object.keys(map[category]).forEach((key) => {\n const schema = map[category][key];\n\n if (!schema.collectionName) {\n // NOTE: We're using the filepath from the app directory instead of the dist for information purpose\n const filePath = join(strapi.dirs.app.components, category, schema.__filename__);\n\n return strapi.stopWithError(\n `Component ${key} is missing a \"collectionName\" property.\\nVerify file ${filePath}.`\n );\n }\n\n const uid: UID.Component = `${category}.${key}`;\n\n acc[uid] = Object.assign(schema, {\n __schema__: _.cloneDeep(schema),\n uid,\n category,\n modelType: 'component' as const,\n modelName: key,\n globalId: schema.globalId || _.upperFirst(_.camelCase(`component_${uid}`)),\n });\n });\n\n return acc;\n }, {} as ComponentMap);\n\n strapi.get('components').add(components);\n}\n"],"names":["loadComponents","strapi","pathExists","dirs","dist","components","map","loadFiles","Object","keys","reduce","acc","category","forEach","key","schema","collectionName","filePath","join","app","__filename__","stopWithError","uid","assign","__schema__","_","cloneDeep","modelType","modelName","globalId","upperFirst","camelCase","get","add"],"mappings":";;;;;;;AA4Be,eAAeA,eAAeC,MAAmB,EAAA;IAC9D,IAAI,CAAE,MAAMC,cAAAA,CAAWD,MAAAA,CAAOE,IAAI,CAACC,IAAI,CAACC,UAAU,CAAA,EAAI;AACpD,QAAA,OAAO,EAAC;AACV,IAAA;IAEA,MAAMC,GAAAA,GAAM,MAAMC,mBAAAA,CAA4BN,MAAAA,CAAOE,IAAI,CAACC,IAAI,CAACC,UAAU,EAAE,gBAAA,CAAA;IAE3E,MAAMA,UAAAA,GAAaG,OAAOC,IAAI,CAACH,KAAKI,MAAM,CAAC,CAACC,GAAAA,EAAKC,QAAAA,GAAAA;QAC/CJ,MAAAA,CAAOC,IAAI,CAACH,GAAG,CAACM,SAAS,CAAA,CAAEC,OAAO,CAAC,CAACC,GAAAA,GAAAA;AAClC,YAAA,MAAMC,MAAAA,GAAST,GAAG,CAACM,QAAAA,CAAS,CAACE,GAAAA,CAAI;YAEjC,IAAI,CAACC,MAAAA,CAAOC,cAAc,EAAE;;gBAE1B,MAAMC,QAAAA,GAAWC,SAAAA,CAAKjB,MAAAA,CAAOE,IAAI,CAACgB,GAAG,CAACd,UAAU,EAAEO,QAAAA,EAAUG,MAAAA,CAAOK,YAAY,CAAA;gBAE/E,OAAOnB,MAAAA,CAAOoB,aAAa,CACzB,CAAC,UAAU,EAAEP,GAAAA,CAAI,sDAAsD,EAAEG,QAAAA,CAAS,CAAC,CAAC,CAAA;AAExF,YAAA;AAEA,YAAA,MAAMK,GAAAA,GAAqB,CAAA,EAAGV,QAAAA,CAAS,CAAC,EAAEE,GAAAA,CAAAA,CAAK;AAE/CH,YAAAA,GAAG,CAACW,GAAAA,CAAI,GAAGd,MAAAA,CAAOe,MAAM,CAACR,MAAAA,EAAQ;gBAC/BS,UAAAA,EAAYC,CAAAA,CAAEC,SAAS,CAACX,MAAAA,CAAAA;AACxBO,gBAAAA,GAAAA;AACAV,gBAAAA,QAAAA;gBACAe,SAAAA,EAAW,WAAA;gBACXC,SAAAA,EAAWd,GAAAA;AACXe,gBAAAA,QAAAA,EAAUd,MAAAA,CAAOc,QAAQ,IAAIJ,CAAAA,CAAEK,UAAU,CAACL,CAAAA,CAAEM,SAAS,CAAC,CAAC,UAAU,EAAET,GAAAA,CAAAA,CAAK,CAAA;AAC1E,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;QAEA,OAAOX,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AAEJV,IAAAA,MAAAA,CAAO+B,GAAG,CAAC,YAAA,CAAA,CAAcC,GAAG,CAAC5B,UAAAA,CAAAA;AAC/B;;;;"}
1
+ {"version":3,"file":"components.js","sources":["../../src/loaders/components.ts"],"sourcesContent":["import { join } from 'path';\nimport _ from 'lodash';\nimport { pathExists } from 'fs-extra';\nimport type { Core, Struct, UID } from '@strapi/types';\nimport { loadFiles } from '../utils/load-files';\n\ntype LoadedComponent = {\n collectionName: string;\n __filename__: string;\n __schema__: LoadedComponent;\n uid: string;\n category: string;\n modelName: string;\n globalId: string;\n info: any;\n attributes: any;\n};\n\ntype LoadedComponents = {\n [category: string]: {\n [key: string]: LoadedComponent;\n };\n};\n\ntype ComponentMap = {\n [uid in UID.Component]: Struct.ComponentSchema;\n};\n\nexport default async function loadComponents(strapi: Core.Strapi) {\n if (!(await pathExists(strapi.dirs.dist.components))) {\n return {};\n }\n\n const map = await loadFiles<LoadedComponents>(strapi.dirs.dist.components, '*/*.*(js|json)');\n\n const components = Object.keys(map).reduce((acc, category) => {\n Object.keys(map[category]).forEach((key) => {\n const schema = map[category][key];\n\n if (!schema.collectionName) {\n // NOTE: We're using the filepath from the app directory instead of the dist for information purpose\n const filePath = join(strapi.dirs.app.components, category, schema.__filename__);\n\n return strapi.stopWithError(\n `Component ${key} is missing a \"collectionName\" property.\\nVerify file ${filePath}.`\n );\n }\n\n const uid: UID.Component = `${category}.${key}`;\n\n acc[uid] = Object.assign(schema, {\n __schema__: _.cloneDeep(schema),\n uid,\n category,\n modelType: 'component' as const,\n modelName: key,\n globalId: schema.globalId || _.upperFirst(_.camelCase(`component_${uid}`)),\n });\n });\n\n return acc;\n }, {} as ComponentMap);\n\n strapi.get('components').add(components);\n}\n"],"names":["loadComponents","strapi","pathExists","dirs","dist","components","map","loadFiles","Object","keys","reduce","acc","category","forEach","key","schema","collectionName","filePath","join","app","__filename__","stopWithError","uid","assign","__schema__","_","cloneDeep","modelType","modelName","globalId","upperFirst","camelCase","get","add"],"mappings":";;;;;;;;;;;AA4Be,eAAeA,eAAeC,MAAmB,EAAA;IAC9D,IAAI,CAAE,MAAMC,cAAAA,CAAWD,MAAAA,CAAOE,IAAI,CAACC,IAAI,CAACC,UAAU,CAAA,EAAI;AACpD,QAAA,OAAO,EAAC;AACV,IAAA;IAEA,MAAMC,GAAAA,GAAM,MAAMC,mBAAAA,CAA4BN,MAAAA,CAAOE,IAAI,CAACC,IAAI,CAACC,UAAU,EAAE,gBAAA,CAAA;IAE3E,MAAMA,UAAAA,GAAaG,OAAOC,IAAI,CAACH,KAAKI,MAAM,CAAC,CAACC,GAAAA,EAAKC,QAAAA,GAAAA;QAC/CJ,MAAAA,CAAOC,IAAI,CAACH,GAAG,CAACM,SAAS,CAAA,CAAEC,OAAO,CAAC,CAACC,GAAAA,GAAAA;AAClC,YAAA,MAAMC,MAAAA,GAAST,GAAG,CAACM,QAAAA,CAAS,CAACE,GAAAA,CAAI;YAEjC,IAAI,CAACC,MAAAA,CAAOC,cAAc,EAAE;;gBAE1B,MAAMC,QAAAA,GAAWC,SAAAA,CAAKjB,MAAAA,CAAOE,IAAI,CAACgB,GAAG,CAACd,UAAU,EAAEO,QAAAA,EAAUG,MAAAA,CAAOK,YAAY,CAAA;gBAE/E,OAAOnB,MAAAA,CAAOoB,aAAa,CACzB,CAAC,UAAU,EAAEP,GAAAA,CAAI,sDAAsD,EAAEG,QAAAA,CAAS,CAAC,CAAC,CAAA;AAExF,YAAA;AAEA,YAAA,MAAMK,GAAAA,GAAqB,CAAA,EAAGV,QAAAA,CAAS,CAAC,EAAEE,GAAAA,CAAAA,CAAK;AAE/CH,YAAAA,GAAG,CAACW,GAAAA,CAAI,GAAGd,MAAAA,CAAOe,MAAM,CAACR,MAAAA,EAAQ;gBAC/BS,UAAAA,EAAYC,kBAAAA,CAAEC,SAAS,CAACX,MAAAA,CAAAA;AACxBO,gBAAAA,GAAAA;AACAV,gBAAAA,QAAAA;gBACAe,SAAAA,EAAW,WAAA;gBACXC,SAAAA,EAAWd,GAAAA;AACXe,gBAAAA,QAAAA,EAAUd,MAAAA,CAAOc,QAAQ,IAAIJ,kBAAAA,CAAEK,UAAU,CAACL,kBAAAA,CAAEM,SAAS,CAAC,CAAC,UAAU,EAAET,GAAAA,CAAAA,CAAK,CAAA;AAC1E,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;QAEA,OAAOX,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AAEJV,IAAAA,MAAAA,CAAO+B,GAAG,CAAC,YAAA,CAAA,CAAcC,GAAG,CAAC5B,UAAAA,CAAAA;AAC/B;;;;"}
@@ -5,6 +5,10 @@ var fse = require('fs-extra');
5
5
  var strapiUtils = require('@strapi/utils');
6
6
  var index = require('../middlewares/index.js');
7
7
 
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var fse__default = /*#__PURE__*/_interopDefault(fse);
11
+
8
12
  // TODO:: allow folders with index.js inside for bigger policies
9
13
  async function loadMiddlewares(strapi) {
10
14
  const localMiddlewares = await loadLocalMiddlewares(strapi);
@@ -13,11 +17,11 @@ async function loadMiddlewares(strapi) {
13
17
  }
14
18
  const loadLocalMiddlewares = async (strapi)=>{
15
19
  const dir = strapi.dirs.dist.middlewares;
16
- if (!await fse.pathExists(dir)) {
20
+ if (!await fse__default.default.pathExists(dir)) {
17
21
  return {};
18
22
  }
19
23
  const middlewares = {};
20
- const paths = await fse.readdir(dir, {
24
+ const paths = await fse__default.default.readdir(dir, {
21
25
  withFileTypes: true
22
26
  });
23
27
  for (const fd of paths){
@@ -1 +1 @@
1
- {"version":3,"file":"middlewares.js","sources":["../../src/loaders/middlewares.ts"],"sourcesContent":["import { join, extname, basename } from 'path';\nimport fse from 'fs-extra';\nimport { importDefault } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\nimport { middlewares as internalMiddlewares } from '../middlewares';\n\n// TODO:: allow folders with index.js inside for bigger policies\nexport default async function loadMiddlewares(strapi: Core.Strapi) {\n const localMiddlewares = await loadLocalMiddlewares(strapi);\n\n strapi.get('middlewares').add(`global::`, localMiddlewares);\n strapi.get('middlewares').add(`strapi::`, internalMiddlewares);\n}\n\nconst loadLocalMiddlewares = async (strapi: Core.Strapi) => {\n const dir = strapi.dirs.dist.middlewares;\n\n if (!(await fse.pathExists(dir))) {\n return {};\n }\n\n const middlewares: Record<string, Core.MiddlewareFactory> = {};\n const paths = await fse.readdir(dir, { withFileTypes: true });\n\n for (const fd of paths) {\n const { name } = fd;\n const fullPath = join(dir, name);\n\n if (fd.isFile() && extname(name) === '.js') {\n const key = basename(name, '.js');\n middlewares[key] = importDefault(fullPath);\n }\n }\n\n return middlewares;\n};\n"],"names":["loadMiddlewares","strapi","localMiddlewares","loadLocalMiddlewares","get","add","internalMiddlewares","dir","dirs","dist","middlewares","fse","pathExists","paths","readdir","withFileTypes","fd","name","fullPath","join","isFile","extname","key","basename","importDefault"],"mappings":";;;;;;;AAMA;AACe,eAAeA,gBAAgBC,MAAmB,EAAA;IAC/D,MAAMC,gBAAAA,GAAmB,MAAMC,oBAAAA,CAAqBF,MAAAA,CAAAA;IAEpDA,MAAAA,CAAOG,GAAG,CAAC,aAAA,CAAA,CAAeC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAEH,gBAAAA,CAAAA;IAC1CD,MAAAA,CAAOG,GAAG,CAAC,aAAA,CAAA,CAAeC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAEC,iBAAAA,CAAAA;AAC5C;AAEA,MAAMH,uBAAuB,OAAOF,MAAAA,GAAAA;AAClC,IAAA,MAAMM,MAAMN,MAAAA,CAAOO,IAAI,CAACC,IAAI,CAACC,WAAW;AAExC,IAAA,IAAI,CAAE,MAAMC,GAAAA,CAAIC,UAAU,CAACL,GAAAA,CAAAA,EAAO;AAChC,QAAA,OAAO,EAAC;AACV,IAAA;AAEA,IAAA,MAAMG,cAAsD,EAAC;AAC7D,IAAA,MAAMG,KAAAA,GAAQ,MAAMF,GAAAA,CAAIG,OAAO,CAACP,GAAAA,EAAK;QAAEQ,aAAAA,EAAe;AAAK,KAAA,CAAA;IAE3D,KAAK,MAAMC,MAAMH,KAAAA,CAAO;QACtB,MAAM,EAAEI,IAAI,EAAE,GAAGD,EAAAA;QACjB,MAAME,QAAAA,GAAWC,UAAKZ,GAAAA,EAAKU,IAAAA,CAAAA;AAE3B,QAAA,IAAID,EAAAA,CAAGI,MAAM,EAAA,IAAMC,YAAAA,CAAQJ,UAAU,KAAA,EAAO;YAC1C,MAAMK,GAAAA,GAAMC,cAASN,IAAAA,EAAM,KAAA,CAAA;YAC3BP,WAAW,CAACY,GAAAA,CAAI,GAAGE,yBAAAA,CAAcN,QAAAA,CAAAA;AACnC,QAAA;AACF,IAAA;IAEA,OAAOR,WAAAA;AACT,CAAA;;;;"}
1
+ {"version":3,"file":"middlewares.js","sources":["../../src/loaders/middlewares.ts"],"sourcesContent":["import { join, extname, basename } from 'path';\nimport fse from 'fs-extra';\nimport { importDefault } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\nimport { middlewares as internalMiddlewares } from '../middlewares';\n\n// TODO:: allow folders with index.js inside for bigger policies\nexport default async function loadMiddlewares(strapi: Core.Strapi) {\n const localMiddlewares = await loadLocalMiddlewares(strapi);\n\n strapi.get('middlewares').add(`global::`, localMiddlewares);\n strapi.get('middlewares').add(`strapi::`, internalMiddlewares);\n}\n\nconst loadLocalMiddlewares = async (strapi: Core.Strapi) => {\n const dir = strapi.dirs.dist.middlewares;\n\n if (!(await fse.pathExists(dir))) {\n return {};\n }\n\n const middlewares: Record<string, Core.MiddlewareFactory> = {};\n const paths = await fse.readdir(dir, { withFileTypes: true });\n\n for (const fd of paths) {\n const { name } = fd;\n const fullPath = join(dir, name);\n\n if (fd.isFile() && extname(name) === '.js') {\n const key = basename(name, '.js');\n middlewares[key] = importDefault(fullPath);\n }\n }\n\n return middlewares;\n};\n"],"names":["loadMiddlewares","strapi","localMiddlewares","loadLocalMiddlewares","get","add","internalMiddlewares","dir","dirs","dist","middlewares","fse","pathExists","paths","readdir","withFileTypes","fd","name","fullPath","join","isFile","extname","key","basename","importDefault"],"mappings":";;;;;;;;;;;AAMA;AACe,eAAeA,gBAAgBC,MAAmB,EAAA;IAC/D,MAAMC,gBAAAA,GAAmB,MAAMC,oBAAAA,CAAqBF,MAAAA,CAAAA;IAEpDA,MAAAA,CAAOG,GAAG,CAAC,aAAA,CAAA,CAAeC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAEH,gBAAAA,CAAAA;IAC1CD,MAAAA,CAAOG,GAAG,CAAC,aAAA,CAAA,CAAeC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAEC,iBAAAA,CAAAA;AAC5C;AAEA,MAAMH,uBAAuB,OAAOF,MAAAA,GAAAA;AAClC,IAAA,MAAMM,MAAMN,MAAAA,CAAOO,IAAI,CAACC,IAAI,CAACC,WAAW;AAExC,IAAA,IAAI,CAAE,MAAMC,oBAAAA,CAAIC,UAAU,CAACL,GAAAA,CAAAA,EAAO;AAChC,QAAA,OAAO,EAAC;AACV,IAAA;AAEA,IAAA,MAAMG,cAAsD,EAAC;AAC7D,IAAA,MAAMG,KAAAA,GAAQ,MAAMF,oBAAAA,CAAIG,OAAO,CAACP,GAAAA,EAAK;QAAEQ,aAAAA,EAAe;AAAK,KAAA,CAAA;IAE3D,KAAK,MAAMC,MAAMH,KAAAA,CAAO;QACtB,MAAM,EAAEI,IAAI,EAAE,GAAGD,EAAAA;QACjB,MAAME,QAAAA,GAAWC,UAAKZ,GAAAA,EAAKU,IAAAA,CAAAA;AAE3B,QAAA,IAAID,EAAAA,CAAGI,MAAM,EAAA,IAAMC,YAAAA,CAAQJ,UAAU,KAAA,EAAO;YAC1C,MAAMK,GAAAA,GAAMC,cAASN,IAAAA,EAAM,KAAA,CAAA;YAC3BP,WAAW,CAACY,GAAAA,CAAI,GAAGE,yBAAAA,CAAcN,QAAAA,CAAAA;AACnC,QAAA;AACF,IAAA;IAEA,OAAOR,WAAAA;AACT,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-enabled-plugins.d.ts","sourceRoot":"","sources":["../../../src/loaders/plugins/get-enabled-plugins.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAkF1C,eAAO,MAAM,iBAAiB,WAAkB,KAAK,MAAM;;kBAoF1D,CAAC"}
1
+ {"version":3,"file":"get-enabled-plugins.d.ts","sourceRoot":"","sources":["../../../src/loaders/plugins/get-enabled-plugins.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAkF1C,eAAO,MAAM,iBAAiB,GAAU,QAAQ,IAAI,CAAC,MAAM,EAAE;;CAA8B,iBAoF1F,CAAC"}
@@ -7,6 +7,10 @@ var fp = require('lodash/fp');
7
7
  var strapiUtils = require('@strapi/utils');
8
8
  var getUserPluginsConfig = require('./get-user-plugins-config.js');
9
9
 
10
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
+
12
+ var ___default = /*#__PURE__*/_interopDefault(_);
13
+
10
14
  /**
11
15
  * otherwise known as "core features"
12
16
  *
@@ -109,7 +113,7 @@ const getEnabledPlugins = async (strapi1, { client } = {
109
113
  }
110
114
  const declaredPlugins = {};
111
115
  const userPluginsConfig = await getUserPluginsConfig.getUserPluginsConfig();
112
- _.forEach(userPluginsConfig, (declaration, pluginName)=>{
116
+ ___default.default.forEach(userPluginsConfig, (declaration, pluginName)=>{
113
117
  validatePluginName(pluginName);
114
118
  declaredPlugins[pluginName] = {
115
119
  ...toDetailedDeclaration(declaration),
@@ -1 +1 @@
1
- {"version":3,"file":"get-enabled-plugins.js","sources":["../../../src/loaders/plugins/get-enabled-plugins.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport { dirname, join, resolve } from 'path';\nimport { statSync, existsSync } from 'fs';\nimport _ from 'lodash';\nimport { get, pickBy, defaultsDeep, map, prop, pipe } from 'lodash/fp';\nimport { strings } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\nimport { getUserPluginsConfig } from './get-user-plugins-config';\n\ninterface PluginMeta {\n enabled: boolean;\n pathToPlugin?: string;\n info: Record<string, unknown>;\n packageInfo?: Record<string, unknown>;\n}\n\ntype PluginMetas = Record<string, PluginMeta>;\n\ninterface PluginInfo {\n name: string;\n kind: string;\n}\n\ninterface PluginDeclaration {\n enabled: boolean;\n resolve: string;\n isModule: boolean;\n}\n\n/**\n * otherwise known as \"core features\"\n *\n * NOTE: These are excluded from the content manager plugin list, as they are always enabled.\n * See admin.ts server controller on the content-manager plugin for more details.\n */\nconst INTERNAL_PLUGINS = [\n '@strapi/content-manager',\n '@strapi/content-type-builder',\n '@strapi/email',\n '@strapi/upload',\n '@strapi/i18n',\n '@strapi/content-releases',\n '@strapi/review-workflows',\n];\n\nconst isStrapiPlugin = (info: PluginInfo) => get('strapi.kind', info) === 'plugin';\n\nconst validatePluginName = (pluginName: string) => {\n if (!strings.isKebabCase(pluginName)) {\n throw new Error(`Plugin name \"${pluginName}\" is not in kebab (an-example-of-kebab-case)`);\n }\n};\n\nconst toDetailedDeclaration = (declaration: boolean | PluginDeclaration) => {\n if (typeof declaration === 'boolean') {\n return { enabled: declaration };\n }\n\n const detailedDeclaration: { enabled: boolean; pathToPlugin?: string } = {\n enabled: declaration.enabled,\n };\n\n if (declaration?.resolve) {\n let pathToPlugin = '';\n\n if (declaration.isModule) {\n /**\n * we only want the node_module here, not the package.json\n */\n pathToPlugin = join(declaration.resolve, '..');\n } else {\n try {\n pathToPlugin = dirname(require.resolve(declaration.resolve));\n } catch (e) {\n pathToPlugin = resolve(strapi.dirs.app.root, declaration.resolve);\n\n if (!existsSync(pathToPlugin) || !statSync(pathToPlugin).isDirectory()) {\n throw new Error(`${declaration.resolve} couldn't be resolved`);\n }\n }\n }\n\n detailedDeclaration.pathToPlugin = pathToPlugin;\n }\n\n return detailedDeclaration;\n};\n\nexport const getEnabledPlugins = async (strapi: Core.Strapi, { client } = { client: false }) => {\n const internalPlugins: PluginMetas = {};\n\n for (const dep of INTERNAL_PLUGINS) {\n const packagePath = join(dep, 'package.json');\n\n // NOTE: internal plugins should be resolved from the strapi package\n const packageModulePath = require.resolve(packagePath, {\n paths: [require.resolve('@strapi/strapi/package.json'), process.cwd()],\n });\n\n const packageInfo = require(packageModulePath);\n\n validatePluginName(packageInfo.strapi.name);\n internalPlugins[packageInfo.strapi.name] = {\n ...toDetailedDeclaration({ enabled: true, resolve: packageModulePath, isModule: client }),\n info: packageInfo.strapi,\n packageInfo,\n };\n }\n\n const installedPlugins: PluginMetas = {};\n const dependencies = strapi.config.get('info.dependencies', {});\n\n for (const dep of Object.keys(dependencies)) {\n const packagePath = join(dep, 'package.json');\n let packageInfo;\n try {\n packageInfo = require(packagePath);\n } catch {\n continue;\n }\n\n if (isStrapiPlugin(packageInfo)) {\n validatePluginName(packageInfo.strapi.name);\n installedPlugins[packageInfo.strapi.name] = {\n ...toDetailedDeclaration({ enabled: true, resolve: packagePath, isModule: client }),\n info: {\n ...packageInfo.strapi,\n packageName: packageInfo.name,\n },\n packageInfo,\n };\n }\n }\n\n const declaredPlugins: PluginMetas = {};\n const userPluginsConfig = await getUserPluginsConfig();\n\n _.forEach(userPluginsConfig, (declaration, pluginName) => {\n validatePluginName(pluginName);\n\n declaredPlugins[pluginName] = {\n ...toDetailedDeclaration(declaration),\n info: {},\n };\n\n const { pathToPlugin } = declaredPlugins[pluginName];\n\n // for manually resolved plugins\n if (pathToPlugin) {\n const packagePath = join(pathToPlugin, 'package.json');\n const packageInfo = require(packagePath);\n\n if (isStrapiPlugin(packageInfo)) {\n declaredPlugins[pluginName].info = packageInfo.strapi || {};\n declaredPlugins[pluginName].packageInfo = packageInfo;\n }\n }\n });\n\n const declaredPluginsResolves = map(prop('pathToPlugin'), declaredPlugins);\n const installedPluginsNotAlreadyUsed = pickBy(\n (p) => !declaredPluginsResolves.includes(p.pathToPlugin),\n installedPlugins\n );\n\n const enabledPlugins = pipe(\n defaultsDeep(declaredPlugins),\n defaultsDeep(installedPluginsNotAlreadyUsed),\n pickBy((p: PluginMeta) => p.enabled)\n )(internalPlugins);\n\n return enabledPlugins;\n};\n"],"names":["INTERNAL_PLUGINS","isStrapiPlugin","info","get","validatePluginName","pluginName","strings","isKebabCase","Error","toDetailedDeclaration","declaration","enabled","detailedDeclaration","resolve","pathToPlugin","isModule","join","dirname","require","e","strapi","dirs","app","root","existsSync","statSync","isDirectory","getEnabledPlugins","client","internalPlugins","dep","packagePath","packageModulePath","paths","process","cwd","packageInfo","name","installedPlugins","dependencies","config","Object","keys","packageName","declaredPlugins","userPluginsConfig","getUserPluginsConfig","_","forEach","declaredPluginsResolves","map","prop","installedPluginsNotAlreadyUsed","pickBy","p","includes","enabledPlugins","pipe","defaultsDeep"],"mappings":"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"}
1
+ {"version":3,"file":"get-enabled-plugins.js","sources":["../../../src/loaders/plugins/get-enabled-plugins.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport { dirname, join, resolve } from 'path';\nimport { statSync, existsSync } from 'fs';\nimport _ from 'lodash';\nimport { get, pickBy, defaultsDeep, map, prop, pipe } from 'lodash/fp';\nimport { strings } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\nimport { getUserPluginsConfig } from './get-user-plugins-config';\n\ninterface PluginMeta {\n enabled: boolean;\n pathToPlugin?: string;\n info: Record<string, unknown>;\n packageInfo?: Record<string, unknown>;\n}\n\ntype PluginMetas = Record<string, PluginMeta>;\n\ninterface PluginInfo {\n name: string;\n kind: string;\n}\n\ninterface PluginDeclaration {\n enabled: boolean;\n resolve: string;\n isModule: boolean;\n}\n\n/**\n * otherwise known as \"core features\"\n *\n * NOTE: These are excluded from the content manager plugin list, as they are always enabled.\n * See admin.ts server controller on the content-manager plugin for more details.\n */\nconst INTERNAL_PLUGINS = [\n '@strapi/content-manager',\n '@strapi/content-type-builder',\n '@strapi/email',\n '@strapi/upload',\n '@strapi/i18n',\n '@strapi/content-releases',\n '@strapi/review-workflows',\n];\n\nconst isStrapiPlugin = (info: PluginInfo) => get('strapi.kind', info) === 'plugin';\n\nconst validatePluginName = (pluginName: string) => {\n if (!strings.isKebabCase(pluginName)) {\n throw new Error(`Plugin name \"${pluginName}\" is not in kebab (an-example-of-kebab-case)`);\n }\n};\n\nconst toDetailedDeclaration = (declaration: boolean | PluginDeclaration) => {\n if (typeof declaration === 'boolean') {\n return { enabled: declaration };\n }\n\n const detailedDeclaration: { enabled: boolean; pathToPlugin?: string } = {\n enabled: declaration.enabled,\n };\n\n if (declaration?.resolve) {\n let pathToPlugin = '';\n\n if (declaration.isModule) {\n /**\n * we only want the node_module here, not the package.json\n */\n pathToPlugin = join(declaration.resolve, '..');\n } else {\n try {\n pathToPlugin = dirname(require.resolve(declaration.resolve));\n } catch (e) {\n pathToPlugin = resolve(strapi.dirs.app.root, declaration.resolve);\n\n if (!existsSync(pathToPlugin) || !statSync(pathToPlugin).isDirectory()) {\n throw new Error(`${declaration.resolve} couldn't be resolved`);\n }\n }\n }\n\n detailedDeclaration.pathToPlugin = pathToPlugin;\n }\n\n return detailedDeclaration;\n};\n\nexport const getEnabledPlugins = async (strapi: Core.Strapi, { client } = { client: false }) => {\n const internalPlugins: PluginMetas = {};\n\n for (const dep of INTERNAL_PLUGINS) {\n const packagePath = join(dep, 'package.json');\n\n // NOTE: internal plugins should be resolved from the strapi package\n const packageModulePath = require.resolve(packagePath, {\n paths: [require.resolve('@strapi/strapi/package.json'), process.cwd()],\n });\n\n const packageInfo = require(packageModulePath);\n\n validatePluginName(packageInfo.strapi.name);\n internalPlugins[packageInfo.strapi.name] = {\n ...toDetailedDeclaration({ enabled: true, resolve: packageModulePath, isModule: client }),\n info: packageInfo.strapi,\n packageInfo,\n };\n }\n\n const installedPlugins: PluginMetas = {};\n const dependencies = strapi.config.get('info.dependencies', {});\n\n for (const dep of Object.keys(dependencies)) {\n const packagePath = join(dep, 'package.json');\n let packageInfo;\n try {\n packageInfo = require(packagePath);\n } catch {\n continue;\n }\n\n if (isStrapiPlugin(packageInfo)) {\n validatePluginName(packageInfo.strapi.name);\n installedPlugins[packageInfo.strapi.name] = {\n ...toDetailedDeclaration({ enabled: true, resolve: packagePath, isModule: client }),\n info: {\n ...packageInfo.strapi,\n packageName: packageInfo.name,\n },\n packageInfo,\n };\n }\n }\n\n const declaredPlugins: PluginMetas = {};\n const userPluginsConfig = await getUserPluginsConfig();\n\n _.forEach(userPluginsConfig, (declaration, pluginName) => {\n validatePluginName(pluginName);\n\n declaredPlugins[pluginName] = {\n ...toDetailedDeclaration(declaration),\n info: {},\n };\n\n const { pathToPlugin } = declaredPlugins[pluginName];\n\n // for manually resolved plugins\n if (pathToPlugin) {\n const packagePath = join(pathToPlugin, 'package.json');\n const packageInfo = require(packagePath);\n\n if (isStrapiPlugin(packageInfo)) {\n declaredPlugins[pluginName].info = packageInfo.strapi || {};\n declaredPlugins[pluginName].packageInfo = packageInfo;\n }\n }\n });\n\n const declaredPluginsResolves = map(prop('pathToPlugin'), declaredPlugins);\n const installedPluginsNotAlreadyUsed = pickBy(\n (p) => !declaredPluginsResolves.includes(p.pathToPlugin),\n installedPlugins\n );\n\n const enabledPlugins = pipe(\n defaultsDeep(declaredPlugins),\n defaultsDeep(installedPluginsNotAlreadyUsed),\n pickBy((p: PluginMeta) => p.enabled)\n )(internalPlugins);\n\n return enabledPlugins;\n};\n"],"names":["INTERNAL_PLUGINS","isStrapiPlugin","info","get","validatePluginName","pluginName","strings","isKebabCase","Error","toDetailedDeclaration","declaration","enabled","detailedDeclaration","resolve","pathToPlugin","isModule","join","dirname","require","e","strapi","dirs","app","root","existsSync","statSync","isDirectory","getEnabledPlugins","client","internalPlugins","dep","packagePath","packageModulePath","paths","process","cwd","packageInfo","name","installedPlugins","dependencies","config","Object","keys","packageName","declaredPlugins","userPluginsConfig","getUserPluginsConfig","_","forEach","declaredPluginsResolves","map","prop","installedPluginsNotAlreadyUsed","pickBy","p","includes","enabledPlugins","pipe","defaultsDeep"],"mappings":"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"}
@@ -5,6 +5,10 @@ var fse = require('fs-extra');
5
5
  var fp = require('lodash/fp');
6
6
  var loadConfigFile = require('../../utils/load-config-file.js');
7
7
 
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var fse__default = /*#__PURE__*/_interopDefault(fse);
11
+
8
12
  /**
9
13
  * Return user defined plugins' config
10
14
  * first load config from `config/plugins.js`
@@ -14,11 +18,11 @@ var loadConfigFile = require('../../utils/load-config-file.js');
14
18
  const currentEnvUserConfigPath = path.join(strapi.dirs.dist.config, 'env', process.env.NODE_ENV, 'plugins.js');
15
19
  let config = {};
16
20
  // assign global user config if exists
17
- if (await fse.pathExists(globalUserConfigPath)) {
21
+ if (await fse__default.default.pathExists(globalUserConfigPath)) {
18
22
  config = loadConfigFile.loadConfigFile(globalUserConfigPath);
19
23
  }
20
24
  // and merge user config by environment if exists
21
- if (await fse.pathExists(currentEnvUserConfigPath)) {
25
+ if (await fse__default.default.pathExists(currentEnvUserConfigPath)) {
22
26
  config = fp.merge(config, loadConfigFile.loadConfigFile(currentEnvUserConfigPath));
23
27
  }
24
28
  return config;
@@ -1 +1 @@
1
- {"version":3,"file":"get-user-plugins-config.js","sources":["../../../src/loaders/plugins/get-user-plugins-config.ts"],"sourcesContent":["import { join } from 'path';\nimport fse from 'fs-extra';\nimport { merge } from 'lodash/fp';\nimport { loadConfigFile } from '../../utils/load-config-file';\n\n/**\n * Return user defined plugins' config\n * first load config from `config/plugins.js`\n * and then merge config from `config/env/{env}/plugins.js`\n */\nexport const getUserPluginsConfig = async () => {\n const globalUserConfigPath = join(strapi.dirs.dist.config, 'plugins.js');\n const currentEnvUserConfigPath = join(\n strapi.dirs.dist.config,\n 'env',\n process.env.NODE_ENV as string,\n 'plugins.js'\n );\n let config = {};\n\n // assign global user config if exists\n if (await fse.pathExists(globalUserConfigPath)) {\n config = loadConfigFile(globalUserConfigPath);\n }\n\n // and merge user config by environment if exists\n if (await fse.pathExists(currentEnvUserConfigPath)) {\n config = merge(config, loadConfigFile(currentEnvUserConfigPath));\n }\n\n return config;\n};\n"],"names":["getUserPluginsConfig","globalUserConfigPath","join","strapi","dirs","dist","config","currentEnvUserConfigPath","process","env","NODE_ENV","fse","pathExists","loadConfigFile","merge"],"mappings":";;;;;;;AAKA;;;;UAKaA,oBAAAA,GAAuB,UAAA;IAClC,MAAMC,oBAAAA,GAAuBC,UAAKC,MAAAA,CAAOC,IAAI,CAACC,IAAI,CAACC,MAAM,EAAE,YAAA,CAAA;AAC3D,IAAA,MAAMC,wBAAAA,GAA2BL,SAAAA,CAC/BC,MAAAA,CAAOC,IAAI,CAACC,IAAI,CAACC,MAAM,EACvB,KAAA,EACAE,OAAAA,CAAQC,GAAG,CAACC,QAAQ,EACpB,YAAA,CAAA;AAEF,IAAA,IAAIJ,SAAS,EAAC;;AAGd,IAAA,IAAI,MAAMK,GAAAA,CAAIC,UAAU,CAACX,oBAAAA,CAAAA,EAAuB;AAC9CK,QAAAA,MAAAA,GAASO,6BAAAA,CAAeZ,oBAAAA,CAAAA;AAC1B,IAAA;;AAGA,IAAA,IAAI,MAAMU,GAAAA,CAAIC,UAAU,CAACL,wBAAAA,CAAAA,EAA2B;QAClDD,MAAAA,GAASQ,QAAAA,CAAMR,QAAQO,6BAAAA,CAAeN,wBAAAA,CAAAA,CAAAA;AACxC,IAAA;IAEA,OAAOD,MAAAA;AACT;;;;"}
1
+ {"version":3,"file":"get-user-plugins-config.js","sources":["../../../src/loaders/plugins/get-user-plugins-config.ts"],"sourcesContent":["import { join } from 'path';\nimport fse from 'fs-extra';\nimport { merge } from 'lodash/fp';\nimport { loadConfigFile } from '../../utils/load-config-file';\n\n/**\n * Return user defined plugins' config\n * first load config from `config/plugins.js`\n * and then merge config from `config/env/{env}/plugins.js`\n */\nexport const getUserPluginsConfig = async () => {\n const globalUserConfigPath = join(strapi.dirs.dist.config, 'plugins.js');\n const currentEnvUserConfigPath = join(\n strapi.dirs.dist.config,\n 'env',\n process.env.NODE_ENV as string,\n 'plugins.js'\n );\n let config = {};\n\n // assign global user config if exists\n if (await fse.pathExists(globalUserConfigPath)) {\n config = loadConfigFile(globalUserConfigPath);\n }\n\n // and merge user config by environment if exists\n if (await fse.pathExists(currentEnvUserConfigPath)) {\n config = merge(config, loadConfigFile(currentEnvUserConfigPath));\n }\n\n return config;\n};\n"],"names":["getUserPluginsConfig","globalUserConfigPath","join","strapi","dirs","dist","config","currentEnvUserConfigPath","process","env","NODE_ENV","fse","pathExists","loadConfigFile","merge"],"mappings":";;;;;;;;;;;AAKA;;;;UAKaA,oBAAAA,GAAuB,UAAA;IAClC,MAAMC,oBAAAA,GAAuBC,UAAKC,MAAAA,CAAOC,IAAI,CAACC,IAAI,CAACC,MAAM,EAAE,YAAA,CAAA;AAC3D,IAAA,MAAMC,wBAAAA,GAA2BL,SAAAA,CAC/BC,MAAAA,CAAOC,IAAI,CAACC,IAAI,CAACC,MAAM,EACvB,KAAA,EACAE,OAAAA,CAAQC,GAAG,CAACC,QAAQ,EACpB,YAAA,CAAA;AAEF,IAAA,IAAIJ,SAAS,EAAC;;AAGd,IAAA,IAAI,MAAMK,oBAAAA,CAAIC,UAAU,CAACX,oBAAAA,CAAAA,EAAuB;AAC9CK,QAAAA,MAAAA,GAASO,6BAAAA,CAAeZ,oBAAAA,CAAAA;AAC1B,IAAA;;AAGA,IAAA,IAAI,MAAMU,oBAAAA,CAAIC,UAAU,CAACL,wBAAAA,CAAAA,EAA2B;QAClDD,MAAAA,GAASQ,QAAAA,CAAMR,QAAQO,6BAAAA,CAAeN,wBAAAA,CAAAA,CAAAA;AACxC,IAAA;IAEA,OAAOD,MAAAA;AACT;;;;"}