@strapi/core 0.0.0-experimental.8ba06b448e7b82ad8505f461edf528901aea9e1e → 0.0.0-experimental.8c28a74d1219c09f4ee67402fd3a26f182c4990a

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

Potentially problematic release.


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

Files changed (670) hide show
  1. package/dist/Strapi.js +455 -0
  2. package/dist/Strapi.js.map +1 -0
  3. package/dist/Strapi.mjs +434 -0
  4. package/dist/Strapi.mjs.map +1 -0
  5. package/dist/compile.js +27 -0
  6. package/dist/compile.js.map +1 -0
  7. package/dist/compile.mjs +25 -0
  8. package/dist/compile.mjs.map +1 -0
  9. package/dist/configuration/config-loader.js +119 -0
  10. package/dist/configuration/config-loader.js.map +1 -0
  11. package/dist/configuration/config-loader.mjs +117 -0
  12. package/dist/configuration/config-loader.mjs.map +1 -0
  13. package/dist/configuration/get-dirs.js +33 -0
  14. package/dist/configuration/get-dirs.js.map +1 -0
  15. package/dist/configuration/get-dirs.mjs +31 -0
  16. package/dist/configuration/get-dirs.mjs.map +1 -0
  17. package/dist/configuration/index.d.ts +1 -0
  18. package/dist/configuration/index.d.ts.map +1 -1
  19. package/dist/configuration/index.js +92 -0
  20. package/dist/configuration/index.js.map +1 -0
  21. package/dist/configuration/index.mjs +90 -0
  22. package/dist/configuration/index.mjs.map +1 -0
  23. package/dist/configuration/urls.d.ts.map +1 -1
  24. package/dist/configuration/urls.js +81 -0
  25. package/dist/configuration/urls.js.map +1 -0
  26. package/dist/configuration/urls.mjs +77 -0
  27. package/dist/configuration/urls.mjs.map +1 -0
  28. package/dist/container.js +34 -0
  29. package/dist/container.js.map +1 -0
  30. package/dist/container.mjs +32 -0
  31. package/dist/container.mjs.map +1 -0
  32. package/dist/core-api/controller/collection-type.js +85 -0
  33. package/dist/core-api/controller/collection-type.js.map +1 -0
  34. package/dist/core-api/controller/collection-type.mjs +83 -0
  35. package/dist/core-api/controller/collection-type.mjs.map +1 -0
  36. package/dist/core-api/controller/index.js +67 -0
  37. package/dist/core-api/controller/index.js.map +1 -0
  38. package/dist/core-api/controller/index.mjs +65 -0
  39. package/dist/core-api/controller/index.mjs.map +1 -0
  40. package/dist/core-api/controller/single-type.js +47 -0
  41. package/dist/core-api/controller/single-type.js.map +1 -0
  42. package/dist/core-api/controller/single-type.mjs +45 -0
  43. package/dist/core-api/controller/single-type.mjs.map +1 -0
  44. package/dist/core-api/controller/transform.js +85 -0
  45. package/dist/core-api/controller/transform.js.map +1 -0
  46. package/dist/core-api/controller/transform.mjs +83 -0
  47. package/dist/core-api/controller/transform.mjs.map +1 -0
  48. package/dist/core-api/routes/index.js +69 -0
  49. package/dist/core-api/routes/index.js.map +1 -0
  50. package/dist/core-api/routes/index.mjs +67 -0
  51. package/dist/core-api/routes/index.mjs.map +1 -0
  52. package/dist/core-api/service/collection-type.js +80 -0
  53. package/dist/core-api/service/collection-type.js.map +1 -0
  54. package/dist/core-api/service/collection-type.mjs +77 -0
  55. package/dist/core-api/service/collection-type.mjs.map +1 -0
  56. package/dist/core-api/service/core-service.js +13 -0
  57. package/dist/core-api/service/core-service.js.map +1 -0
  58. package/dist/core-api/service/core-service.mjs +11 -0
  59. package/dist/core-api/service/core-service.mjs.map +1 -0
  60. package/dist/core-api/service/index.js +16 -0
  61. package/dist/core-api/service/index.js.map +1 -0
  62. package/dist/core-api/service/index.mjs +14 -0
  63. package/dist/core-api/service/index.mjs.map +1 -0
  64. package/dist/core-api/service/pagination.js +78 -0
  65. package/dist/core-api/service/pagination.js.map +1 -0
  66. package/dist/core-api/service/pagination.mjs +73 -0
  67. package/dist/core-api/service/pagination.mjs.map +1 -0
  68. package/dist/core-api/service/single-type.js +50 -0
  69. package/dist/core-api/service/single-type.js.map +1 -0
  70. package/dist/core-api/service/single-type.mjs +47 -0
  71. package/dist/core-api/service/single-type.mjs.map +1 -0
  72. package/dist/domain/content-type/index.js +106 -0
  73. package/dist/domain/content-type/index.js.map +1 -0
  74. package/dist/domain/content-type/index.mjs +103 -0
  75. package/dist/domain/content-type/index.mjs.map +1 -0
  76. package/dist/domain/content-type/validator.js +92 -0
  77. package/dist/domain/content-type/validator.js.map +1 -0
  78. package/dist/domain/content-type/validator.mjs +90 -0
  79. package/dist/domain/content-type/validator.mjs.map +1 -0
  80. package/dist/domain/module/index.js +116 -0
  81. package/dist/domain/module/index.js.map +1 -0
  82. package/dist/domain/module/index.mjs +114 -0
  83. package/dist/domain/module/index.mjs.map +1 -0
  84. package/dist/domain/module/validation.js +30 -0
  85. package/dist/domain/module/validation.js.map +1 -0
  86. package/dist/domain/module/validation.mjs +28 -0
  87. package/dist/domain/module/validation.mjs.map +1 -0
  88. package/dist/ee/index.d.ts +1 -0
  89. package/dist/ee/index.d.ts.map +1 -1
  90. package/dist/ee/index.js +192 -0
  91. package/dist/ee/index.js.map +1 -0
  92. package/dist/ee/index.mjs +190 -0
  93. package/dist/ee/index.mjs.map +1 -0
  94. package/dist/ee/license.d.ts.map +1 -1
  95. package/dist/ee/license.js +116 -0
  96. package/dist/ee/license.js.map +1 -0
  97. package/dist/ee/license.mjs +111 -0
  98. package/dist/ee/license.mjs.map +1 -0
  99. package/dist/factories.js +85 -0
  100. package/dist/factories.js.map +1 -0
  101. package/dist/factories.mjs +80 -0
  102. package/dist/factories.mjs.map +1 -0
  103. package/dist/index.js +19 -10099
  104. package/dist/index.js.map +1 -1
  105. package/dist/index.mjs +17 -10076
  106. package/dist/index.mjs.map +1 -1
  107. package/dist/loaders/admin.d.ts.map +1 -1
  108. package/dist/loaders/admin.js +27 -0
  109. package/dist/loaders/admin.js.map +1 -0
  110. package/dist/loaders/admin.mjs +25 -0
  111. package/dist/loaders/admin.mjs.map +1 -0
  112. package/dist/loaders/apis.js +160 -0
  113. package/dist/loaders/apis.js.map +1 -0
  114. package/dist/loaders/apis.mjs +158 -0
  115. package/dist/loaders/apis.mjs.map +1 -0
  116. package/dist/loaders/components.js +37 -0
  117. package/dist/loaders/components.js.map +1 -0
  118. package/dist/loaders/components.mjs +35 -0
  119. package/dist/loaders/components.mjs.map +1 -0
  120. package/dist/loaders/index.js +26 -0
  121. package/dist/loaders/index.js.map +1 -0
  122. package/dist/loaders/index.mjs +24 -0
  123. package/dist/loaders/index.mjs.map +1 -0
  124. package/dist/loaders/middlewares.js +35 -0
  125. package/dist/loaders/middlewares.js.map +1 -0
  126. package/dist/loaders/middlewares.mjs +33 -0
  127. package/dist/loaders/middlewares.mjs.map +1 -0
  128. package/dist/loaders/plugins/get-enabled-plugins.js +136 -0
  129. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -0
  130. package/dist/loaders/plugins/get-enabled-plugins.mjs +134 -0
  131. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -0
  132. package/dist/loaders/plugins/get-user-plugins-config.js +28 -0
  133. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -0
  134. package/dist/loaders/plugins/get-user-plugins-config.mjs +26 -0
  135. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -0
  136. package/dist/loaders/plugins/index.js +155 -0
  137. package/dist/loaders/plugins/index.js.map +1 -0
  138. package/dist/loaders/plugins/index.mjs +134 -0
  139. package/dist/loaders/plugins/index.mjs.map +1 -0
  140. package/dist/loaders/policies.js +29 -0
  141. package/dist/loaders/policies.js.map +1 -0
  142. package/dist/loaders/policies.mjs +27 -0
  143. package/dist/loaders/policies.mjs.map +1 -0
  144. package/dist/loaders/sanitizers.js +12 -0
  145. package/dist/loaders/sanitizers.js.map +1 -0
  146. package/dist/loaders/sanitizers.mjs +10 -0
  147. package/dist/loaders/sanitizers.mjs.map +1 -0
  148. package/dist/loaders/src-index.js +41 -0
  149. package/dist/loaders/src-index.js.map +1 -0
  150. package/dist/loaders/src-index.mjs +39 -0
  151. package/dist/loaders/src-index.mjs.map +1 -0
  152. package/dist/loaders/validators.js +11 -0
  153. package/dist/loaders/validators.js.map +1 -0
  154. package/dist/loaders/validators.mjs +9 -0
  155. package/dist/loaders/validators.mjs.map +1 -0
  156. package/dist/middlewares/body.js +69 -0
  157. package/dist/middlewares/body.js.map +1 -0
  158. package/dist/middlewares/body.mjs +67 -0
  159. package/dist/middlewares/body.mjs.map +1 -0
  160. package/dist/middlewares/compression.js +8 -0
  161. package/dist/middlewares/compression.js.map +1 -0
  162. package/dist/middlewares/compression.mjs +6 -0
  163. package/dist/middlewares/compression.mjs.map +1 -0
  164. package/dist/middlewares/cors.js +64 -0
  165. package/dist/middlewares/cors.js.map +1 -0
  166. package/dist/middlewares/cors.mjs +62 -0
  167. package/dist/middlewares/cors.mjs.map +1 -0
  168. package/dist/middlewares/errors.js +35 -0
  169. package/dist/middlewares/errors.js.map +1 -0
  170. package/dist/middlewares/errors.mjs +33 -0
  171. package/dist/middlewares/errors.mjs.map +1 -0
  172. package/dist/middlewares/favicon.js +32 -0
  173. package/dist/middlewares/favicon.js.map +1 -0
  174. package/dist/middlewares/favicon.mjs +30 -0
  175. package/dist/middlewares/favicon.mjs.map +1 -0
  176. package/dist/middlewares/index.js +36 -0
  177. package/dist/middlewares/index.js.map +1 -0
  178. package/dist/middlewares/index.mjs +34 -0
  179. package/dist/middlewares/index.mjs.map +1 -0
  180. package/dist/middlewares/ip.js +8 -0
  181. package/dist/middlewares/ip.js.map +1 -0
  182. package/dist/middlewares/ip.mjs +6 -0
  183. package/dist/middlewares/ip.mjs.map +1 -0
  184. package/dist/middlewares/logger.js +13 -0
  185. package/dist/middlewares/logger.js.map +1 -0
  186. package/dist/middlewares/logger.mjs +11 -0
  187. package/dist/middlewares/logger.mjs.map +1 -0
  188. package/dist/middlewares/powered-by.js +18 -0
  189. package/dist/middlewares/powered-by.js.map +1 -0
  190. package/dist/middlewares/powered-by.mjs +16 -0
  191. package/dist/middlewares/powered-by.mjs.map +1 -0
  192. package/dist/middlewares/public.js +38 -0
  193. package/dist/middlewares/public.js.map +1 -0
  194. package/dist/middlewares/public.mjs +36 -0
  195. package/dist/middlewares/public.mjs.map +1 -0
  196. package/dist/middlewares/query.js +43 -0
  197. package/dist/middlewares/query.js.map +1 -0
  198. package/dist/middlewares/query.mjs +41 -0
  199. package/dist/middlewares/query.mjs.map +1 -0
  200. package/dist/middlewares/response-time.js +13 -0
  201. package/dist/middlewares/response-time.js.map +1 -0
  202. package/dist/middlewares/response-time.mjs +11 -0
  203. package/dist/middlewares/response-time.mjs.map +1 -0
  204. package/dist/middlewares/responses.js +17 -0
  205. package/dist/middlewares/responses.js.map +1 -0
  206. package/dist/middlewares/responses.mjs +15 -0
  207. package/dist/middlewares/responses.mjs.map +1 -0
  208. package/dist/middlewares/security.js +116 -0
  209. package/dist/middlewares/security.js.map +1 -0
  210. package/dist/middlewares/security.mjs +114 -0
  211. package/dist/middlewares/security.mjs.map +1 -0
  212. package/dist/middlewares/session.js +31 -0
  213. package/dist/middlewares/session.js.map +1 -0
  214. package/dist/middlewares/session.mjs +29 -0
  215. package/dist/middlewares/session.mjs.map +1 -0
  216. package/dist/migrations/database/5.0.0-discard-drafts.js +168 -0
  217. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -0
  218. package/dist/migrations/database/5.0.0-discard-drafts.mjs +165 -0
  219. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -0
  220. package/dist/migrations/draft-publish.js +69 -0
  221. package/dist/migrations/draft-publish.js.map +1 -0
  222. package/dist/migrations/draft-publish.mjs +66 -0
  223. package/dist/migrations/draft-publish.mjs.map +1 -0
  224. package/dist/migrations/i18n.js +71 -0
  225. package/dist/migrations/i18n.js.map +1 -0
  226. package/dist/migrations/i18n.mjs +68 -0
  227. package/dist/migrations/i18n.mjs.map +1 -0
  228. package/dist/migrations/index.js +29 -0
  229. package/dist/migrations/index.js.map +1 -0
  230. package/dist/migrations/index.mjs +26 -0
  231. package/dist/migrations/index.mjs.map +1 -0
  232. package/dist/package.json.js +182 -0
  233. package/dist/package.json.js.map +1 -0
  234. package/dist/package.json.mjs +159 -0
  235. package/dist/package.json.mjs.map +1 -0
  236. package/dist/providers/admin.js +30 -0
  237. package/dist/providers/admin.js.map +1 -0
  238. package/dist/providers/admin.mjs +28 -0
  239. package/dist/providers/admin.mjs.map +1 -0
  240. package/dist/providers/coreStore.js +16 -0
  241. package/dist/providers/coreStore.js.map +1 -0
  242. package/dist/providers/coreStore.mjs +14 -0
  243. package/dist/providers/coreStore.mjs.map +1 -0
  244. package/dist/providers/cron.js +23 -0
  245. package/dist/providers/cron.js.map +1 -0
  246. package/dist/providers/cron.mjs +21 -0
  247. package/dist/providers/cron.mjs.map +1 -0
  248. package/dist/providers/index.js +20 -0
  249. package/dist/providers/index.js.map +1 -0
  250. package/dist/providers/index.mjs +18 -0
  251. package/dist/providers/index.mjs.map +1 -0
  252. package/dist/providers/provider.js +6 -0
  253. package/dist/providers/provider.js.map +1 -0
  254. package/dist/providers/provider.mjs +4 -0
  255. package/dist/providers/provider.mjs.map +1 -0
  256. package/dist/providers/registries.js +40 -0
  257. package/dist/providers/registries.js.map +1 -0
  258. package/dist/providers/registries.mjs +38 -0
  259. package/dist/providers/registries.mjs.map +1 -0
  260. package/dist/providers/telemetry.js +22 -0
  261. package/dist/providers/telemetry.js.map +1 -0
  262. package/dist/providers/telemetry.mjs +20 -0
  263. package/dist/providers/telemetry.mjs.map +1 -0
  264. package/dist/providers/webhooks.js +32 -0
  265. package/dist/providers/webhooks.js.map +1 -0
  266. package/dist/providers/webhooks.mjs +30 -0
  267. package/dist/providers/webhooks.mjs.map +1 -0
  268. package/dist/registries/apis.js +26 -0
  269. package/dist/registries/apis.js.map +1 -0
  270. package/dist/registries/apis.mjs +24 -0
  271. package/dist/registries/apis.mjs.map +1 -0
  272. package/dist/registries/components.js +43 -0
  273. package/dist/registries/components.js.map +1 -0
  274. package/dist/registries/components.mjs +41 -0
  275. package/dist/registries/components.mjs.map +1 -0
  276. package/dist/registries/content-types.js +65 -0
  277. package/dist/registries/content-types.js.map +1 -0
  278. package/dist/registries/content-types.mjs +63 -0
  279. package/dist/registries/content-types.mjs.map +1 -0
  280. package/dist/registries/controllers.js +79 -0
  281. package/dist/registries/controllers.js.map +1 -0
  282. package/dist/registries/controllers.mjs +77 -0
  283. package/dist/registries/controllers.mjs.map +1 -0
  284. package/dist/registries/custom-fields.js +81 -0
  285. package/dist/registries/custom-fields.js.map +1 -0
  286. package/dist/registries/custom-fields.mjs +79 -0
  287. package/dist/registries/custom-fields.mjs.map +1 -0
  288. package/dist/registries/hooks.js +55 -0
  289. package/dist/registries/hooks.js.map +1 -0
  290. package/dist/registries/hooks.mjs +53 -0
  291. package/dist/registries/hooks.mjs.map +1 -0
  292. package/dist/registries/middlewares.js +58 -0
  293. package/dist/registries/middlewares.js.map +1 -0
  294. package/dist/registries/middlewares.mjs +56 -0
  295. package/dist/registries/middlewares.mjs.map +1 -0
  296. package/dist/registries/models.js +17 -0
  297. package/dist/registries/models.js.map +1 -0
  298. package/dist/registries/models.mjs +15 -0
  299. package/dist/registries/models.mjs.map +1 -0
  300. package/dist/registries/modules.js +42 -0
  301. package/dist/registries/modules.js.map +1 -0
  302. package/dist/registries/modules.mjs +40 -0
  303. package/dist/registries/modules.mjs.map +1 -0
  304. package/dist/registries/namespace.js +28 -0
  305. package/dist/registries/namespace.js.map +1 -0
  306. package/dist/registries/namespace.mjs +24 -0
  307. package/dist/registries/namespace.mjs.map +1 -0
  308. package/dist/registries/plugins.js +26 -0
  309. package/dist/registries/plugins.js.map +1 -0
  310. package/dist/registries/plugins.mjs +24 -0
  311. package/dist/registries/plugins.mjs.map +1 -0
  312. package/dist/registries/policies.js +115 -0
  313. package/dist/registries/policies.js.map +1 -0
  314. package/dist/registries/policies.mjs +113 -0
  315. package/dist/registries/policies.mjs.map +1 -0
  316. package/dist/registries/sanitizers.js +26 -0
  317. package/dist/registries/sanitizers.js.map +1 -0
  318. package/dist/registries/sanitizers.mjs +24 -0
  319. package/dist/registries/sanitizers.mjs.map +1 -0
  320. package/dist/registries/services.js +80 -0
  321. package/dist/registries/services.js.map +1 -0
  322. package/dist/registries/services.mjs +78 -0
  323. package/dist/registries/services.mjs.map +1 -0
  324. package/dist/registries/validators.js +26 -0
  325. package/dist/registries/validators.js.map +1 -0
  326. package/dist/registries/validators.mjs +24 -0
  327. package/dist/registries/validators.mjs.map +1 -0
  328. package/dist/services/auth/index.js +81 -0
  329. package/dist/services/auth/index.js.map +1 -0
  330. package/dist/services/auth/index.mjs +79 -0
  331. package/dist/services/auth/index.mjs.map +1 -0
  332. package/dist/services/config.js +51 -0
  333. package/dist/services/config.js.map +1 -0
  334. package/dist/services/config.mjs +49 -0
  335. package/dist/services/config.mjs.map +1 -0
  336. package/dist/services/content-api/index.js +86 -0
  337. package/dist/services/content-api/index.js.map +1 -0
  338. package/dist/services/content-api/index.mjs +84 -0
  339. package/dist/services/content-api/index.mjs.map +1 -0
  340. package/dist/services/content-api/permissions/engine.js +10 -0
  341. package/dist/services/content-api/permissions/engine.js.map +1 -0
  342. package/dist/services/content-api/permissions/engine.mjs +8 -0
  343. package/dist/services/content-api/permissions/engine.mjs.map +1 -0
  344. package/dist/services/content-api/permissions/index.js +107 -0
  345. package/dist/services/content-api/permissions/index.js.map +1 -0
  346. package/dist/services/content-api/permissions/index.mjs +105 -0
  347. package/dist/services/content-api/permissions/index.mjs.map +1 -0
  348. package/dist/services/content-api/permissions/providers/action.js +19 -0
  349. package/dist/services/content-api/permissions/providers/action.js.map +1 -0
  350. package/dist/services/content-api/permissions/providers/action.mjs +17 -0
  351. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -0
  352. package/dist/services/content-api/permissions/providers/condition.js +19 -0
  353. package/dist/services/content-api/permissions/providers/condition.js.map +1 -0
  354. package/dist/services/content-api/permissions/providers/condition.mjs +17 -0
  355. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -0
  356. package/dist/services/core-store.js +127 -0
  357. package/dist/services/core-store.js.map +1 -0
  358. package/dist/services/core-store.mjs +124 -0
  359. package/dist/services/core-store.mjs.map +1 -0
  360. package/dist/services/cron.js +77 -0
  361. package/dist/services/cron.js.map +1 -0
  362. package/dist/services/cron.mjs +75 -0
  363. package/dist/services/cron.mjs.map +1 -0
  364. package/dist/services/custom-fields.js +12 -0
  365. package/dist/services/custom-fields.js.map +1 -0
  366. package/dist/services/custom-fields.mjs +10 -0
  367. package/dist/services/custom-fields.mjs.map +1 -0
  368. package/dist/services/document-service/attributes/index.js +27 -0
  369. package/dist/services/document-service/attributes/index.js.map +1 -0
  370. package/dist/services/document-service/attributes/index.mjs +25 -0
  371. package/dist/services/document-service/attributes/index.mjs.map +1 -0
  372. package/dist/services/document-service/attributes/transforms.js +21 -0
  373. package/dist/services/document-service/attributes/transforms.js.map +1 -0
  374. package/dist/services/document-service/attributes/transforms.mjs +19 -0
  375. package/dist/services/document-service/attributes/transforms.mjs.map +1 -0
  376. package/dist/services/document-service/common.js +8 -0
  377. package/dist/services/document-service/common.js.map +1 -0
  378. package/dist/services/document-service/common.mjs +6 -0
  379. package/dist/services/document-service/common.mjs.map +1 -0
  380. package/dist/services/document-service/components.js +286 -0
  381. package/dist/services/document-service/components.js.map +1 -0
  382. package/dist/services/document-service/components.mjs +278 -0
  383. package/dist/services/document-service/components.mjs.map +1 -0
  384. package/dist/services/document-service/draft-and-publish.js +109 -0
  385. package/dist/services/document-service/draft-and-publish.js.map +1 -0
  386. package/dist/services/document-service/draft-and-publish.mjs +102 -0
  387. package/dist/services/document-service/draft-and-publish.mjs.map +1 -0
  388. package/dist/services/document-service/entries.js +113 -0
  389. package/dist/services/document-service/entries.js.map +1 -0
  390. package/dist/services/document-service/entries.mjs +111 -0
  391. package/dist/services/document-service/entries.mjs.map +1 -0
  392. package/dist/services/document-service/events.js +59 -0
  393. package/dist/services/document-service/events.js.map +1 -0
  394. package/dist/services/document-service/events.mjs +57 -0
  395. package/dist/services/document-service/events.mjs.map +1 -0
  396. package/dist/services/document-service/index.js +56 -0
  397. package/dist/services/document-service/index.js.map +1 -0
  398. package/dist/services/document-service/index.mjs +54 -0
  399. package/dist/services/document-service/index.mjs.map +1 -0
  400. package/dist/services/document-service/internationalization.js +79 -0
  401. package/dist/services/document-service/internationalization.js.map +1 -0
  402. package/dist/services/document-service/internationalization.mjs +74 -0
  403. package/dist/services/document-service/internationalization.mjs.map +1 -0
  404. package/dist/services/document-service/middlewares/errors.js +29 -0
  405. package/dist/services/document-service/middlewares/errors.js.map +1 -0
  406. package/dist/services/document-service/middlewares/errors.mjs +27 -0
  407. package/dist/services/document-service/middlewares/errors.mjs.map +1 -0
  408. package/dist/services/document-service/middlewares/middleware-manager.js +51 -0
  409. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -0
  410. package/dist/services/document-service/middlewares/middleware-manager.mjs +49 -0
  411. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -0
  412. package/dist/services/document-service/params.js +14 -0
  413. package/dist/services/document-service/params.js.map +1 -0
  414. package/dist/services/document-service/params.mjs +12 -0
  415. package/dist/services/document-service/params.mjs.map +1 -0
  416. package/dist/services/document-service/repository.js +364 -0
  417. package/dist/services/document-service/repository.js.map +1 -0
  418. package/dist/services/document-service/repository.mjs +362 -0
  419. package/dist/services/document-service/repository.mjs.map +1 -0
  420. package/dist/services/document-service/transform/data.js +25 -0
  421. package/dist/services/document-service/transform/data.js.map +1 -0
  422. package/dist/services/document-service/transform/data.mjs +23 -0
  423. package/dist/services/document-service/transform/data.mjs.map +1 -0
  424. package/dist/services/document-service/transform/fields.js +33 -0
  425. package/dist/services/document-service/transform/fields.js.map +1 -0
  426. package/dist/services/document-service/transform/fields.mjs +31 -0
  427. package/dist/services/document-service/transform/fields.mjs.map +1 -0
  428. package/dist/services/document-service/transform/id-map.js +125 -0
  429. package/dist/services/document-service/transform/id-map.js.map +1 -0
  430. package/dist/services/document-service/transform/id-map.mjs +123 -0
  431. package/dist/services/document-service/transform/id-map.mjs.map +1 -0
  432. package/dist/services/document-service/transform/id-transform.js +41 -0
  433. package/dist/services/document-service/transform/id-transform.js.map +1 -0
  434. package/dist/services/document-service/transform/id-transform.mjs +39 -0
  435. package/dist/services/document-service/transform/id-transform.mjs.map +1 -0
  436. package/dist/services/document-service/transform/populate.js +26 -0
  437. package/dist/services/document-service/transform/populate.js.map +1 -0
  438. package/dist/services/document-service/transform/populate.mjs +24 -0
  439. package/dist/services/document-service/transform/populate.mjs.map +1 -0
  440. package/dist/services/document-service/transform/query.js +14 -0
  441. package/dist/services/document-service/transform/query.js.map +1 -0
  442. package/dist/services/document-service/transform/query.mjs +12 -0
  443. package/dist/services/document-service/transform/query.mjs.map +1 -0
  444. package/dist/services/document-service/transform/relations/extract/data-ids.js +80 -0
  445. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -0
  446. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +78 -0
  447. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -0
  448. package/dist/services/document-service/transform/relations/transform/data-ids.js +110 -0
  449. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -0
  450. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +108 -0
  451. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -0
  452. package/dist/services/document-service/transform/relations/transform/default-locale.js +50 -0
  453. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -0
  454. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +48 -0
  455. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -0
  456. package/dist/services/document-service/transform/relations/utils/dp.js +56 -0
  457. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -0
  458. package/dist/services/document-service/transform/relations/utils/dp.mjs +54 -0
  459. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -0
  460. package/dist/services/document-service/transform/relations/utils/i18n.js +27 -0
  461. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -0
  462. package/dist/services/document-service/transform/relations/utils/i18n.mjs +23 -0
  463. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -0
  464. package/dist/services/document-service/transform/relations/utils/map-relation.js +130 -0
  465. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -0
  466. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +127 -0
  467. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -0
  468. package/dist/services/document-service/utils/bidirectional-relations.js +148 -0
  469. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -0
  470. package/dist/services/document-service/utils/bidirectional-relations.mjs +145 -0
  471. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -0
  472. package/dist/services/document-service/utils/populate.js +71 -0
  473. package/dist/services/document-service/utils/populate.js.map +1 -0
  474. package/dist/services/document-service/utils/populate.mjs +69 -0
  475. package/dist/services/document-service/utils/populate.mjs.map +1 -0
  476. package/dist/services/document-service/utils/unidirectional-relations.js +116 -0
  477. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -0
  478. package/dist/services/document-service/utils/unidirectional-relations.mjs +113 -0
  479. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -0
  480. package/dist/services/entity-service/index.js +238 -0
  481. package/dist/services/entity-service/index.js.map +1 -0
  482. package/dist/services/entity-service/index.mjs +236 -0
  483. package/dist/services/entity-service/index.mjs.map +1 -0
  484. package/dist/services/entity-validator/blocks-validator.js +160 -0
  485. package/dist/services/entity-validator/blocks-validator.js.map +1 -0
  486. package/dist/services/entity-validator/blocks-validator.mjs +158 -0
  487. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -0
  488. package/dist/services/entity-validator/index.js +384 -0
  489. package/dist/services/entity-validator/index.js.map +1 -0
  490. package/dist/services/entity-validator/index.mjs +382 -0
  491. package/dist/services/entity-validator/index.mjs.map +1 -0
  492. package/dist/services/entity-validator/validators.js +299 -0
  493. package/dist/services/entity-validator/validators.js.map +1 -0
  494. package/dist/services/entity-validator/validators.mjs +290 -0
  495. package/dist/services/entity-validator/validators.mjs.map +1 -0
  496. package/dist/services/errors.js +76 -0
  497. package/dist/services/errors.js.map +1 -0
  498. package/dist/services/errors.mjs +72 -0
  499. package/dist/services/errors.mjs.map +1 -0
  500. package/dist/services/event-hub.js +85 -0
  501. package/dist/services/event-hub.js.map +1 -0
  502. package/dist/services/event-hub.mjs +83 -0
  503. package/dist/services/event-hub.mjs.map +1 -0
  504. package/dist/services/features.js +22 -0
  505. package/dist/services/features.js.map +1 -0
  506. package/dist/services/features.mjs +20 -0
  507. package/dist/services/features.mjs.map +1 -0
  508. package/dist/services/fs.js +52 -0
  509. package/dist/services/fs.js.map +1 -0
  510. package/dist/services/fs.mjs +50 -0
  511. package/dist/services/fs.mjs.map +1 -0
  512. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  513. package/dist/services/metrics/admin-user-hash.js +16 -0
  514. package/dist/services/metrics/admin-user-hash.js.map +1 -0
  515. package/dist/services/metrics/admin-user-hash.mjs +14 -0
  516. package/dist/services/metrics/admin-user-hash.mjs.map +1 -0
  517. package/dist/services/metrics/index.js +51 -0
  518. package/dist/services/metrics/index.js.map +1 -0
  519. package/dist/services/metrics/index.mjs +49 -0
  520. package/dist/services/metrics/index.mjs.map +1 -0
  521. package/dist/services/metrics/is-truthy.js +16 -0
  522. package/dist/services/metrics/is-truthy.js.map +1 -0
  523. package/dist/services/metrics/is-truthy.mjs +14 -0
  524. package/dist/services/metrics/is-truthy.mjs.map +1 -0
  525. package/dist/services/metrics/middleware.js +40 -0
  526. package/dist/services/metrics/middleware.js.map +1 -0
  527. package/dist/services/metrics/middleware.mjs +38 -0
  528. package/dist/services/metrics/middleware.mjs.map +1 -0
  529. package/dist/services/metrics/rate-limiter.js +26 -0
  530. package/dist/services/metrics/rate-limiter.js.map +1 -0
  531. package/dist/services/metrics/rate-limiter.mjs +24 -0
  532. package/dist/services/metrics/rate-limiter.mjs.map +1 -0
  533. package/dist/services/metrics/sender.d.ts.map +1 -1
  534. package/dist/services/metrics/sender.js +85 -0
  535. package/dist/services/metrics/sender.js.map +1 -0
  536. package/dist/services/metrics/sender.mjs +83 -0
  537. package/dist/services/metrics/sender.mjs.map +1 -0
  538. package/dist/services/query-params.js +15 -0
  539. package/dist/services/query-params.js.map +1 -0
  540. package/dist/services/query-params.mjs +13 -0
  541. package/dist/services/query-params.mjs.map +1 -0
  542. package/dist/services/reloader.js +39 -0
  543. package/dist/services/reloader.js.map +1 -0
  544. package/dist/services/reloader.mjs +37 -0
  545. package/dist/services/reloader.mjs.map +1 -0
  546. package/dist/services/request-context.js +16 -0
  547. package/dist/services/request-context.js.map +1 -0
  548. package/dist/services/request-context.mjs +14 -0
  549. package/dist/services/request-context.mjs.map +1 -0
  550. package/dist/services/server/admin-api.js +14 -0
  551. package/dist/services/server/admin-api.js.map +1 -0
  552. package/dist/services/server/admin-api.mjs +12 -0
  553. package/dist/services/server/admin-api.mjs.map +1 -0
  554. package/dist/services/server/api.js +36 -0
  555. package/dist/services/server/api.js.map +1 -0
  556. package/dist/services/server/api.mjs +34 -0
  557. package/dist/services/server/api.mjs.map +1 -0
  558. package/dist/services/server/compose-endpoint.js +128 -0
  559. package/dist/services/server/compose-endpoint.js.map +1 -0
  560. package/dist/services/server/compose-endpoint.mjs +126 -0
  561. package/dist/services/server/compose-endpoint.mjs.map +1 -0
  562. package/dist/services/server/content-api.js +14 -0
  563. package/dist/services/server/content-api.js.map +1 -0
  564. package/dist/services/server/content-api.mjs +12 -0
  565. package/dist/services/server/content-api.mjs.map +1 -0
  566. package/dist/services/server/http-server.js +54 -0
  567. package/dist/services/server/http-server.js.map +1 -0
  568. package/dist/services/server/http-server.mjs +52 -0
  569. package/dist/services/server/http-server.mjs.map +1 -0
  570. package/dist/services/server/index.js +90 -0
  571. package/dist/services/server/index.js.map +1 -0
  572. package/dist/services/server/index.mjs +88 -0
  573. package/dist/services/server/index.mjs.map +1 -0
  574. package/dist/services/server/koa.js +54 -0
  575. package/dist/services/server/koa.js.map +1 -0
  576. package/dist/services/server/koa.mjs +52 -0
  577. package/dist/services/server/koa.mjs.map +1 -0
  578. package/dist/services/server/middleware.js +96 -0
  579. package/dist/services/server/middleware.js.map +1 -0
  580. package/dist/services/server/middleware.mjs +93 -0
  581. package/dist/services/server/middleware.mjs.map +1 -0
  582. package/dist/services/server/policy.js +27 -0
  583. package/dist/services/server/policy.js.map +1 -0
  584. package/dist/services/server/policy.mjs +25 -0
  585. package/dist/services/server/policy.mjs.map +1 -0
  586. package/dist/services/server/register-middlewares.js +79 -0
  587. package/dist/services/server/register-middlewares.js.map +1 -0
  588. package/dist/services/server/register-middlewares.mjs +77 -0
  589. package/dist/services/server/register-middlewares.mjs.map +1 -0
  590. package/dist/services/server/register-routes.js +99 -0
  591. package/dist/services/server/register-routes.js.map +1 -0
  592. package/dist/services/server/register-routes.mjs +97 -0
  593. package/dist/services/server/register-routes.mjs.map +1 -0
  594. package/dist/services/server/routing.js +104 -0
  595. package/dist/services/server/routing.js.map +1 -0
  596. package/dist/services/server/routing.mjs +101 -0
  597. package/dist/services/server/routing.mjs.map +1 -0
  598. package/dist/services/utils/dynamic-zones.js +16 -0
  599. package/dist/services/utils/dynamic-zones.js.map +1 -0
  600. package/dist/services/utils/dynamic-zones.mjs +14 -0
  601. package/dist/services/utils/dynamic-zones.mjs.map +1 -0
  602. package/dist/services/webhook-runner.js +135 -0
  603. package/dist/services/webhook-runner.js.map +1 -0
  604. package/dist/services/webhook-runner.mjs +133 -0
  605. package/dist/services/webhook-runner.mjs.map +1 -0
  606. package/dist/services/webhook-store.js +143 -0
  607. package/dist/services/webhook-store.js.map +1 -0
  608. package/dist/services/webhook-store.mjs +140 -0
  609. package/dist/services/webhook-store.mjs.map +1 -0
  610. package/dist/services/worker-queue.js +51 -0
  611. package/dist/services/worker-queue.js.map +1 -0
  612. package/dist/services/worker-queue.mjs +49 -0
  613. package/dist/services/worker-queue.mjs.map +1 -0
  614. package/dist/utils/convert-custom-field-type.js +21 -0
  615. package/dist/utils/convert-custom-field-type.js.map +1 -0
  616. package/dist/utils/convert-custom-field-type.mjs +19 -0
  617. package/dist/utils/convert-custom-field-type.mjs.map +1 -0
  618. package/dist/utils/cron.js +72 -0
  619. package/dist/utils/cron.js.map +1 -0
  620. package/dist/utils/cron.mjs +70 -0
  621. package/dist/utils/cron.mjs.map +1 -0
  622. package/dist/utils/fetch.js +27 -0
  623. package/dist/utils/fetch.js.map +1 -0
  624. package/dist/utils/fetch.mjs +25 -0
  625. package/dist/utils/fetch.mjs.map +1 -0
  626. package/dist/utils/filepath-to-prop-path.js +25 -0
  627. package/dist/utils/filepath-to-prop-path.js.map +1 -0
  628. package/dist/utils/filepath-to-prop-path.mjs +23 -0
  629. package/dist/utils/filepath-to-prop-path.mjs.map +1 -0
  630. package/dist/utils/is-initialized.js +25 -0
  631. package/dist/utils/is-initialized.js.map +1 -0
  632. package/dist/utils/is-initialized.mjs +23 -0
  633. package/dist/utils/is-initialized.mjs.map +1 -0
  634. package/dist/utils/lifecycles.js +10 -0
  635. package/dist/utils/lifecycles.js.map +1 -0
  636. package/dist/utils/lifecycles.mjs +8 -0
  637. package/dist/utils/lifecycles.mjs.map +1 -0
  638. package/dist/utils/load-config-file.js +47 -0
  639. package/dist/utils/load-config-file.js.map +1 -0
  640. package/dist/utils/load-config-file.mjs +45 -0
  641. package/dist/utils/load-config-file.mjs.map +1 -0
  642. package/dist/utils/load-files.js +44 -0
  643. package/dist/utils/load-files.js.map +1 -0
  644. package/dist/utils/load-files.mjs +42 -0
  645. package/dist/utils/load-files.mjs.map +1 -0
  646. package/dist/utils/open-browser.js +11 -0
  647. package/dist/utils/open-browser.js.map +1 -0
  648. package/dist/utils/open-browser.mjs +9 -0
  649. package/dist/utils/open-browser.mjs.map +1 -0
  650. package/dist/utils/resolve-working-dirs.js +26 -0
  651. package/dist/utils/resolve-working-dirs.js.map +1 -0
  652. package/dist/utils/resolve-working-dirs.mjs +24 -0
  653. package/dist/utils/resolve-working-dirs.mjs.map +1 -0
  654. package/dist/utils/signals.js +23 -0
  655. package/dist/utils/signals.js.map +1 -0
  656. package/dist/utils/signals.mjs +21 -0
  657. package/dist/utils/signals.mjs.map +1 -0
  658. package/dist/utils/startup-logger.js +110 -0
  659. package/dist/utils/startup-logger.js.map +1 -0
  660. package/dist/utils/startup-logger.mjs +108 -0
  661. package/dist/utils/startup-logger.mjs.map +1 -0
  662. package/dist/utils/transform-content-types-to-models.js +377 -0
  663. package/dist/utils/transform-content-types-to-models.js.map +1 -0
  664. package/dist/utils/transform-content-types-to-models.mjs +365 -0
  665. package/dist/utils/transform-content-types-to-models.mjs.map +1 -0
  666. package/dist/utils/update-notifier/index.js +80 -0
  667. package/dist/utils/update-notifier/index.js.map +1 -0
  668. package/dist/utils/update-notifier/index.mjs +78 -0
  669. package/dist/utils/update-notifier/index.mjs.map +1 -0
  670. package/package.json +12 -12
@@ -0,0 +1,92 @@
1
+ 'use strict';
2
+
3
+ var _ = require('lodash');
4
+ var strapiUtils = require('@strapi/utils');
5
+
6
+ const LIFECYCLES = [
7
+ 'beforeCreate',
8
+ 'afterCreate',
9
+ 'beforeFindOne',
10
+ 'afterFindOne',
11
+ 'beforeFindMany',
12
+ 'afterFindMany',
13
+ 'beforeCount',
14
+ 'afterCount',
15
+ 'beforeCreateMany',
16
+ 'afterCreateMany',
17
+ 'beforeUpdate',
18
+ 'afterUpdate',
19
+ 'beforeUpdateMany',
20
+ 'afterUpdateMany',
21
+ 'beforeDelete',
22
+ 'afterDelete',
23
+ 'beforeDeleteMany',
24
+ 'afterDeleteMany'
25
+ ];
26
+ /**
27
+ * For enumerations the least common denomiator is GraphQL, where
28
+ * values needs to match the secure name regex:
29
+ * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names
30
+ *
31
+ * Therefore we need to make sure our users only use values, which
32
+ * can be returned by GraphQL, by checking the regressed values
33
+ * agains the GraphQL regex.
34
+ *
35
+ * TODO V5: check if we can avoid this coupling by moving this logic
36
+ * into the GraphQL plugin.
37
+ */ const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;
38
+ const lifecyclesShape = _.mapValues(_.keyBy(LIFECYCLES), ()=>strapiUtils.yup.mixed().nullable().isFunction());
39
+ const contentTypeSchemaValidator = strapiUtils.yup.object().shape({
40
+ schema: strapiUtils.yup.object().shape({
41
+ info: strapiUtils.yup.object().shape({
42
+ displayName: strapiUtils.yup.string().required(),
43
+ singularName: strapiUtils.yup.string().isKebabCase().required(),
44
+ pluralName: strapiUtils.yup.string().isKebabCase().required()
45
+ }).required(),
46
+ attributes: strapiUtils.yup.object().test({
47
+ name: 'valuesCollide',
48
+ message: 'Some values collide when normalized',
49
+ test (attributes) {
50
+ for (const attrName of Object.keys(attributes)){
51
+ const attr = attributes[attrName];
52
+ if (attr.type === 'enumeration') {
53
+ const regressedValues = attr.enum.map(strapiUtils.strings.toRegressedEnumValue);
54
+ // should match the GraphQL regex
55
+ if (!regressedValues.every((value)=>GRAPHQL_ENUM_REGEX.test(value))) {
56
+ const message = `Invalid enumeration value. Values should have at least one alphabetical character preceding the first occurence of a number. Update your enumeration '${attrName}'.`;
57
+ return this.createError({
58
+ message
59
+ });
60
+ }
61
+ // should not contain empty values
62
+ if (regressedValues.some((value)=>value === '')) {
63
+ return this.createError({
64
+ message: `At least one value of the enumeration '${attrName}' appears to be empty. Only alphanumerical characters are taken into account.`
65
+ });
66
+ }
67
+ // should not collide
68
+ const duplicates = _.uniq(regressedValues.filter((value, index, values)=>values.indexOf(value) !== index));
69
+ if (duplicates.length) {
70
+ const message = `Some enumeration values of the field '${attrName}' collide when normalized: ${duplicates.join(', ')}. Please modify your enumeration.`;
71
+ return this.createError({
72
+ message
73
+ });
74
+ }
75
+ }
76
+ }
77
+ return true;
78
+ }
79
+ })
80
+ }),
81
+ actions: strapiUtils.yup.object().onlyContainsFunctions(),
82
+ lifecycles: strapiUtils.yup.object().shape(lifecyclesShape).noUnknown()
83
+ });
84
+ const validateContentTypeDefinition = (data)=>{
85
+ return contentTypeSchemaValidator.validateSync(data, {
86
+ strict: true,
87
+ abortEarly: false
88
+ });
89
+ };
90
+
91
+ exports.validateContentTypeDefinition = validateContentTypeDefinition;
92
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sources":["../../../src/domain/content-type/validator.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup, strings } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\n\nconst LIFECYCLES = [\n 'beforeCreate',\n 'afterCreate',\n 'beforeFindOne',\n 'afterFindOne',\n 'beforeFindMany',\n 'afterFindMany',\n 'beforeCount',\n 'afterCount',\n 'beforeCreateMany',\n 'afterCreateMany',\n 'beforeUpdate',\n 'afterUpdate',\n 'beforeUpdateMany',\n 'afterUpdateMany',\n 'beforeDelete',\n 'afterDelete',\n 'beforeDeleteMany',\n 'afterDeleteMany',\n] as const;\n\n/**\n * For enumerations the least common denomiator is GraphQL, where\n * values needs to match the secure name regex:\n * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names\n *\n * Therefore we need to make sure our users only use values, which\n * can be returned by GraphQL, by checking the regressed values\n * agains the GraphQL regex.\n *\n * TODO V5: check if we can avoid this coupling by moving this logic\n * into the GraphQL plugin.\n */\nconst GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;\n\nconst lifecyclesShape = _.mapValues(_.keyBy(LIFECYCLES), () => yup.mixed().nullable().isFunction());\n\nconst contentTypeSchemaValidator = yup.object().shape({\n schema: yup.object().shape({\n info: yup\n .object()\n .shape({\n displayName: yup.string().required(),\n singularName: yup.string().isKebabCase().required(),\n pluralName: yup.string().isKebabCase().required(),\n })\n .required(),\n attributes: yup.object().test({\n name: 'valuesCollide',\n message: 'Some values collide when normalized',\n test(attributes: Schema.ContentType['attributes']) {\n for (const attrName of Object.keys(attributes)) {\n const attr = attributes[attrName];\n if (attr.type === 'enumeration') {\n const regressedValues = attr.enum.map(strings.toRegressedEnumValue);\n\n // should match the GraphQL regex\n if (!regressedValues.every((value: string) => GRAPHQL_ENUM_REGEX.test(value))) {\n const message = `Invalid enumeration value. Values should have at least one alphabetical character preceding the first occurence of a number. Update your enumeration '${attrName}'.`;\n\n return this.createError({ message });\n }\n\n // should not contain empty values\n if (regressedValues.some((value: string) => value === '')) {\n return this.createError({\n message: `At least one value of the enumeration '${attrName}' appears to be empty. Only alphanumerical characters are taken into account.`,\n });\n }\n\n // should not collide\n const duplicates = _.uniq(\n regressedValues.filter(\n (value: string, index: number, values: string[]) => values.indexOf(value) !== index\n )\n );\n\n if (duplicates.length) {\n const message = `Some enumeration values of the field '${attrName}' collide when normalized: ${duplicates.join(\n ', '\n )}. Please modify your enumeration.`;\n\n return this.createError({ message });\n }\n }\n }\n\n return true;\n },\n }),\n }),\n actions: yup.object().onlyContainsFunctions(),\n lifecycles: yup.object().shape(lifecyclesShape).noUnknown(),\n});\n\nconst validateContentTypeDefinition = (data: unknown) => {\n return contentTypeSchemaValidator.validateSync(data, { strict: true, abortEarly: false });\n};\n\nexport { validateContentTypeDefinition };\n"],"names":["LIFECYCLES","GRAPHQL_ENUM_REGEX","lifecyclesShape","_","mapValues","keyBy","yup","mixed","nullable","isFunction","contentTypeSchemaValidator","object","shape","schema","info","displayName","string","required","singularName","isKebabCase","pluralName","attributes","test","name","message","attrName","Object","keys","attr","type","regressedValues","enum","map","strings","toRegressedEnumValue","every","value","createError","some","duplicates","uniq","filter","index","values","indexOf","length","join","actions","onlyContainsFunctions","lifecycles","noUnknown","validateContentTypeDefinition","data","validateSync","strict","abortEarly"],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import _ from 'lodash';
2
+ import { yup, strings } from '@strapi/utils';
3
+
4
+ const LIFECYCLES = [
5
+ 'beforeCreate',
6
+ 'afterCreate',
7
+ 'beforeFindOne',
8
+ 'afterFindOne',
9
+ 'beforeFindMany',
10
+ 'afterFindMany',
11
+ 'beforeCount',
12
+ 'afterCount',
13
+ 'beforeCreateMany',
14
+ 'afterCreateMany',
15
+ 'beforeUpdate',
16
+ 'afterUpdate',
17
+ 'beforeUpdateMany',
18
+ 'afterUpdateMany',
19
+ 'beforeDelete',
20
+ 'afterDelete',
21
+ 'beforeDeleteMany',
22
+ 'afterDeleteMany'
23
+ ];
24
+ /**
25
+ * For enumerations the least common denomiator is GraphQL, where
26
+ * values needs to match the secure name regex:
27
+ * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names
28
+ *
29
+ * Therefore we need to make sure our users only use values, which
30
+ * can be returned by GraphQL, by checking the regressed values
31
+ * agains the GraphQL regex.
32
+ *
33
+ * TODO V5: check if we can avoid this coupling by moving this logic
34
+ * into the GraphQL plugin.
35
+ */ const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;
36
+ const lifecyclesShape = _.mapValues(_.keyBy(LIFECYCLES), ()=>yup.mixed().nullable().isFunction());
37
+ const contentTypeSchemaValidator = yup.object().shape({
38
+ schema: yup.object().shape({
39
+ info: yup.object().shape({
40
+ displayName: yup.string().required(),
41
+ singularName: yup.string().isKebabCase().required(),
42
+ pluralName: yup.string().isKebabCase().required()
43
+ }).required(),
44
+ attributes: yup.object().test({
45
+ name: 'valuesCollide',
46
+ message: 'Some values collide when normalized',
47
+ test (attributes) {
48
+ for (const attrName of Object.keys(attributes)){
49
+ const attr = attributes[attrName];
50
+ if (attr.type === 'enumeration') {
51
+ const regressedValues = attr.enum.map(strings.toRegressedEnumValue);
52
+ // should match the GraphQL regex
53
+ if (!regressedValues.every((value)=>GRAPHQL_ENUM_REGEX.test(value))) {
54
+ const message = `Invalid enumeration value. Values should have at least one alphabetical character preceding the first occurence of a number. Update your enumeration '${attrName}'.`;
55
+ return this.createError({
56
+ message
57
+ });
58
+ }
59
+ // should not contain empty values
60
+ if (regressedValues.some((value)=>value === '')) {
61
+ return this.createError({
62
+ message: `At least one value of the enumeration '${attrName}' appears to be empty. Only alphanumerical characters are taken into account.`
63
+ });
64
+ }
65
+ // should not collide
66
+ const duplicates = _.uniq(regressedValues.filter((value, index, values)=>values.indexOf(value) !== index));
67
+ if (duplicates.length) {
68
+ const message = `Some enumeration values of the field '${attrName}' collide when normalized: ${duplicates.join(', ')}. Please modify your enumeration.`;
69
+ return this.createError({
70
+ message
71
+ });
72
+ }
73
+ }
74
+ }
75
+ return true;
76
+ }
77
+ })
78
+ }),
79
+ actions: yup.object().onlyContainsFunctions(),
80
+ lifecycles: yup.object().shape(lifecyclesShape).noUnknown()
81
+ });
82
+ const validateContentTypeDefinition = (data)=>{
83
+ return contentTypeSchemaValidator.validateSync(data, {
84
+ strict: true,
85
+ abortEarly: false
86
+ });
87
+ };
88
+
89
+ export { validateContentTypeDefinition };
90
+ //# sourceMappingURL=validator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.mjs","sources":["../../../src/domain/content-type/validator.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup, strings } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\n\nconst LIFECYCLES = [\n 'beforeCreate',\n 'afterCreate',\n 'beforeFindOne',\n 'afterFindOne',\n 'beforeFindMany',\n 'afterFindMany',\n 'beforeCount',\n 'afterCount',\n 'beforeCreateMany',\n 'afterCreateMany',\n 'beforeUpdate',\n 'afterUpdate',\n 'beforeUpdateMany',\n 'afterUpdateMany',\n 'beforeDelete',\n 'afterDelete',\n 'beforeDeleteMany',\n 'afterDeleteMany',\n] as const;\n\n/**\n * For enumerations the least common denomiator is GraphQL, where\n * values needs to match the secure name regex:\n * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names\n *\n * Therefore we need to make sure our users only use values, which\n * can be returned by GraphQL, by checking the regressed values\n * agains the GraphQL regex.\n *\n * TODO V5: check if we can avoid this coupling by moving this logic\n * into the GraphQL plugin.\n */\nconst GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;\n\nconst lifecyclesShape = _.mapValues(_.keyBy(LIFECYCLES), () => yup.mixed().nullable().isFunction());\n\nconst contentTypeSchemaValidator = yup.object().shape({\n schema: yup.object().shape({\n info: yup\n .object()\n .shape({\n displayName: yup.string().required(),\n singularName: yup.string().isKebabCase().required(),\n pluralName: yup.string().isKebabCase().required(),\n })\n .required(),\n attributes: yup.object().test({\n name: 'valuesCollide',\n message: 'Some values collide when normalized',\n test(attributes: Schema.ContentType['attributes']) {\n for (const attrName of Object.keys(attributes)) {\n const attr = attributes[attrName];\n if (attr.type === 'enumeration') {\n const regressedValues = attr.enum.map(strings.toRegressedEnumValue);\n\n // should match the GraphQL regex\n if (!regressedValues.every((value: string) => GRAPHQL_ENUM_REGEX.test(value))) {\n const message = `Invalid enumeration value. Values should have at least one alphabetical character preceding the first occurence of a number. Update your enumeration '${attrName}'.`;\n\n return this.createError({ message });\n }\n\n // should not contain empty values\n if (regressedValues.some((value: string) => value === '')) {\n return this.createError({\n message: `At least one value of the enumeration '${attrName}' appears to be empty. Only alphanumerical characters are taken into account.`,\n });\n }\n\n // should not collide\n const duplicates = _.uniq(\n regressedValues.filter(\n (value: string, index: number, values: string[]) => values.indexOf(value) !== index\n )\n );\n\n if (duplicates.length) {\n const message = `Some enumeration values of the field '${attrName}' collide when normalized: ${duplicates.join(\n ', '\n )}. Please modify your enumeration.`;\n\n return this.createError({ message });\n }\n }\n }\n\n return true;\n },\n }),\n }),\n actions: yup.object().onlyContainsFunctions(),\n lifecycles: yup.object().shape(lifecyclesShape).noUnknown(),\n});\n\nconst validateContentTypeDefinition = (data: unknown) => {\n return contentTypeSchemaValidator.validateSync(data, { strict: true, abortEarly: false });\n};\n\nexport { validateContentTypeDefinition };\n"],"names":["LIFECYCLES","GRAPHQL_ENUM_REGEX","lifecyclesShape","_","mapValues","keyBy","yup","mixed","nullable","isFunction","contentTypeSchemaValidator","object","shape","schema","info","displayName","string","required","singularName","isKebabCase","pluralName","attributes","test","name","message","attrName","Object","keys","attr","type","regressedValues","enum","map","strings","toRegressedEnumValue","every","value","createError","some","duplicates","uniq","filter","index","values","indexOf","length","join","actions","onlyContainsFunctions","lifecycles","noUnknown","validateContentTypeDefinition","data","validateSync","strict","abortEarly"],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ 'use strict';
2
+
3
+ var _ = require('lodash');
4
+ var strapiUtils = require('@strapi/utils');
5
+ var namespace = require('../../registries/namespace.js');
6
+ var validation = require('./validation.js');
7
+
8
+ // Removes the namespace from a map with keys prefixed with a namespace
9
+ const removeNamespacedKeys = (map, namespace$1)=>{
10
+ return _.mapKeys(map, (value, key)=>namespace.removeNamespace(key, namespace$1));
11
+ };
12
+ const defaultModule = {
13
+ config: {},
14
+ routes: [],
15
+ controllers: {},
16
+ services: {},
17
+ contentTypes: {},
18
+ policies: {},
19
+ middlewares: {}
20
+ };
21
+ const createModule = (namespace, rawModule, strapi)=>{
22
+ _.defaults(rawModule, defaultModule);
23
+ try {
24
+ validation.validateModule(rawModule);
25
+ } catch (e) {
26
+ if (e instanceof strapiUtils.yup.ValidationError) {
27
+ throw new Error(`strapi-server.js is invalid for '${namespace}'.\n${e.errors.join('\n')}`);
28
+ }
29
+ }
30
+ const called = {};
31
+ return {
32
+ async bootstrap () {
33
+ if (called.bootstrap) {
34
+ throw new Error(`Bootstrap for ${namespace} has already been called`);
35
+ }
36
+ called.bootstrap = true;
37
+ await (rawModule.bootstrap && rawModule.bootstrap({
38
+ strapi
39
+ }));
40
+ },
41
+ async register () {
42
+ if (called.register) {
43
+ throw new Error(`Register for ${namespace} has already been called`);
44
+ }
45
+ called.register = true;
46
+ await (rawModule.register && rawModule.register({
47
+ strapi
48
+ }));
49
+ },
50
+ async destroy () {
51
+ if (called.destroy) {
52
+ throw new Error(`Destroy for ${namespace} has already been called`);
53
+ }
54
+ called.destroy = true;
55
+ await (rawModule.destroy && rawModule.destroy({
56
+ strapi
57
+ }));
58
+ },
59
+ load () {
60
+ strapi.get('content-types').add(namespace, rawModule.contentTypes);
61
+ strapi.get('services').add(namespace, rawModule.services);
62
+ strapi.get('policies').add(namespace, rawModule.policies);
63
+ strapi.get('middlewares').add(namespace, rawModule.middlewares);
64
+ strapi.get('controllers').add(namespace, rawModule.controllers);
65
+ strapi.get('config').set(namespace, rawModule.config);
66
+ },
67
+ get routes () {
68
+ return rawModule.routes ?? {};
69
+ },
70
+ config (path, defaultValue) {
71
+ const pathArray = _.flatten([
72
+ namespace,
73
+ path
74
+ ]);
75
+ return strapi.get('config').get(pathArray, defaultValue);
76
+ },
77
+ contentType (ctName) {
78
+ return strapi.get('content-types').get(`${namespace}.${ctName}`);
79
+ },
80
+ get contentTypes () {
81
+ const contentTypes = strapi.get('content-types').getAll(namespace);
82
+ return removeNamespacedKeys(contentTypes, namespace);
83
+ },
84
+ service (serviceName) {
85
+ return strapi.get('services').get(`${namespace}.${serviceName}`);
86
+ },
87
+ get services () {
88
+ const services = strapi.get('services').getAll(namespace);
89
+ return removeNamespacedKeys(services, namespace);
90
+ },
91
+ policy (policyName) {
92
+ return strapi.get('policies').get(`${namespace}.${policyName}`);
93
+ },
94
+ get policies () {
95
+ const policies = strapi.get('policies').getAll(namespace);
96
+ return removeNamespacedKeys(policies, namespace);
97
+ },
98
+ middleware (middlewareName) {
99
+ return strapi.get('middlewares').get(`${namespace}.${middlewareName}`);
100
+ },
101
+ get middlewares () {
102
+ const middlewares = strapi.get('middlewares').getAll(namespace);
103
+ return removeNamespacedKeys(middlewares, namespace);
104
+ },
105
+ controller (controllerName) {
106
+ return strapi.get('controllers').get(`${namespace}.${controllerName}`);
107
+ },
108
+ get controllers () {
109
+ const controllers = strapi.get('controllers').getAll(namespace);
110
+ return removeNamespacedKeys(controllers, namespace);
111
+ }
112
+ };
113
+ };
114
+
115
+ exports.createModule = createModule;
116
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/domain/module/index.ts"],"sourcesContent":["import _, { type PropertyPath, flatten } from 'lodash';\nimport { yup } from '@strapi/utils';\nimport type { Core, UID, Struct } from '@strapi/types';\n\nimport { removeNamespace } from '../../registries/namespace';\nimport { validateModule } from './validation';\n\ninterface LifecyclesState {\n bootstrap?: boolean;\n register?: boolean;\n destroy?: boolean;\n}\n\nexport interface RawModule {\n config?: Record<string, unknown>;\n routes?: Core.Module['routes'];\n controllers?: Core.Module['controllers'];\n services?: Core.Module['services'];\n contentTypes?: Core.Module['contentTypes'];\n policies?: Core.Module['policies'];\n middlewares?: Core.Module['middlewares'];\n bootstrap?: (params: { strapi: Core.Strapi }) => Promise<void>;\n register?: (params: { strapi: Core.Strapi }) => Promise<void>;\n destroy?: (params: { strapi: Core.Strapi }) => Promise<void>;\n}\n\nexport interface Module {\n bootstrap: () => Promise<void>;\n register: () => Promise<void>;\n destroy: () => Promise<void>;\n load: () => void;\n routes: Core.Module['routes'];\n config<T = unknown>(key: PropertyPath, defaultVal?: T): T; // TODO: this mirrors ConfigProvider.get, we should use it directly\n contentType: (ctName: UID.ContentType) => Struct.ContentTypeSchema;\n contentTypes: Record<string, Struct.ContentTypeSchema>;\n service: (serviceName: UID.Service) => Core.Service;\n services: Record<string, Core.Service>;\n policy: (policyName: UID.Policy) => Core.Policy;\n policies: Record<string, Core.Policy>;\n middleware: (middlewareName: UID.Middleware) => Core.Middleware;\n middlewares: Record<string, Core.Middleware>;\n controller: (controllerName: UID.Controller) => Core.Controller;\n controllers: Record<string, Core.Controller>;\n}\n\n// Removes the namespace from a map with keys prefixed with a namespace\nconst removeNamespacedKeys = <T extends Record<string, unknown>>(map: T, namespace: string) => {\n return _.mapKeys(map, (value, key) => removeNamespace(key, namespace));\n};\n\nconst defaultModule = {\n config: {},\n routes: [],\n controllers: {},\n services: {},\n contentTypes: {},\n policies: {},\n middlewares: {},\n};\n\nexport const createModule = (\n namespace: string,\n rawModule: RawModule,\n strapi: Core.Strapi\n): Module => {\n _.defaults(rawModule, defaultModule);\n\n try {\n validateModule(rawModule);\n } catch (e) {\n if (e instanceof yup.ValidationError) {\n throw new Error(`strapi-server.js is invalid for '${namespace}'.\\n${e.errors.join('\\n')}`);\n }\n }\n\n const called: LifecyclesState = {};\n return {\n async bootstrap() {\n if (called.bootstrap) {\n throw new Error(`Bootstrap for ${namespace} has already been called`);\n }\n called.bootstrap = true;\n await (rawModule.bootstrap && rawModule.bootstrap({ strapi }));\n },\n async register() {\n if (called.register) {\n throw new Error(`Register for ${namespace} has already been called`);\n }\n called.register = true;\n await (rawModule.register && rawModule.register({ strapi }));\n },\n async destroy() {\n if (called.destroy) {\n throw new Error(`Destroy for ${namespace} has already been called`);\n }\n called.destroy = true;\n await (rawModule.destroy && rawModule.destroy({ strapi }));\n },\n load() {\n strapi.get('content-types').add(namespace, rawModule.contentTypes);\n strapi.get('services').add(namespace, rawModule.services);\n strapi.get('policies').add(namespace, rawModule.policies);\n strapi.get('middlewares').add(namespace, rawModule.middlewares);\n strapi.get('controllers').add(namespace, rawModule.controllers);\n strapi.get('config').set(namespace, rawModule.config);\n },\n get routes() {\n return rawModule.routes ?? {};\n },\n config(path: PropertyPath, defaultValue: unknown) {\n const pathArray = flatten([namespace, path]);\n return strapi.get('config').get(pathArray, defaultValue);\n },\n contentType(ctName: UID.ContentType) {\n return strapi.get('content-types').get(`${namespace}.${ctName}`);\n },\n get contentTypes() {\n const contentTypes = strapi.get('content-types').getAll(namespace);\n return removeNamespacedKeys(contentTypes, namespace);\n },\n service(serviceName: UID.Service) {\n return strapi.get('services').get(`${namespace}.${serviceName}`);\n },\n get services() {\n const services = strapi.get('services').getAll(namespace);\n return removeNamespacedKeys(services, namespace);\n },\n policy(policyName: UID.Policy) {\n return strapi.get('policies').get(`${namespace}.${policyName}`);\n },\n get policies() {\n const policies = strapi.get('policies').getAll(namespace);\n return removeNamespacedKeys(policies, namespace);\n },\n middleware(middlewareName: UID.Middleware) {\n return strapi.get('middlewares').get(`${namespace}.${middlewareName}`);\n },\n get middlewares() {\n const middlewares = strapi.get('middlewares').getAll(namespace);\n return removeNamespacedKeys(middlewares, namespace);\n },\n controller(controllerName: UID.Controller) {\n return strapi.get('controllers').get(`${namespace}.${controllerName}`);\n },\n get controllers() {\n const controllers = strapi.get('controllers').getAll(namespace);\n return removeNamespacedKeys(controllers, namespace);\n },\n };\n};\n"],"names":["removeNamespacedKeys","map","namespace","_","mapKeys","value","key","removeNamespace","defaultModule","config","routes","controllers","services","contentTypes","policies","middlewares","createModule","rawModule","strapi","defaults","validateModule","e","yup","ValidationError","Error","errors","join","called","bootstrap","register","destroy","load","get","add","set","path","defaultValue","pathArray","flatten","contentType","ctName","getAll","service","serviceName","policy","policyName","middleware","middlewareName","controller","controllerName"],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ import _, { flatten } from 'lodash';
2
+ import { yup } from '@strapi/utils';
3
+ import { removeNamespace } from '../../registries/namespace.mjs';
4
+ import { validateModule } from './validation.mjs';
5
+
6
+ // Removes the namespace from a map with keys prefixed with a namespace
7
+ const removeNamespacedKeys = (map, namespace)=>{
8
+ return _.mapKeys(map, (value, key)=>removeNamespace(key, namespace));
9
+ };
10
+ const defaultModule = {
11
+ config: {},
12
+ routes: [],
13
+ controllers: {},
14
+ services: {},
15
+ contentTypes: {},
16
+ policies: {},
17
+ middlewares: {}
18
+ };
19
+ const createModule = (namespace, rawModule, strapi)=>{
20
+ _.defaults(rawModule, defaultModule);
21
+ try {
22
+ validateModule(rawModule);
23
+ } catch (e) {
24
+ if (e instanceof yup.ValidationError) {
25
+ throw new Error(`strapi-server.js is invalid for '${namespace}'.\n${e.errors.join('\n')}`);
26
+ }
27
+ }
28
+ const called = {};
29
+ return {
30
+ async bootstrap () {
31
+ if (called.bootstrap) {
32
+ throw new Error(`Bootstrap for ${namespace} has already been called`);
33
+ }
34
+ called.bootstrap = true;
35
+ await (rawModule.bootstrap && rawModule.bootstrap({
36
+ strapi
37
+ }));
38
+ },
39
+ async register () {
40
+ if (called.register) {
41
+ throw new Error(`Register for ${namespace} has already been called`);
42
+ }
43
+ called.register = true;
44
+ await (rawModule.register && rawModule.register({
45
+ strapi
46
+ }));
47
+ },
48
+ async destroy () {
49
+ if (called.destroy) {
50
+ throw new Error(`Destroy for ${namespace} has already been called`);
51
+ }
52
+ called.destroy = true;
53
+ await (rawModule.destroy && rawModule.destroy({
54
+ strapi
55
+ }));
56
+ },
57
+ load () {
58
+ strapi.get('content-types').add(namespace, rawModule.contentTypes);
59
+ strapi.get('services').add(namespace, rawModule.services);
60
+ strapi.get('policies').add(namespace, rawModule.policies);
61
+ strapi.get('middlewares').add(namespace, rawModule.middlewares);
62
+ strapi.get('controllers').add(namespace, rawModule.controllers);
63
+ strapi.get('config').set(namespace, rawModule.config);
64
+ },
65
+ get routes () {
66
+ return rawModule.routes ?? {};
67
+ },
68
+ config (path, defaultValue) {
69
+ const pathArray = flatten([
70
+ namespace,
71
+ path
72
+ ]);
73
+ return strapi.get('config').get(pathArray, defaultValue);
74
+ },
75
+ contentType (ctName) {
76
+ return strapi.get('content-types').get(`${namespace}.${ctName}`);
77
+ },
78
+ get contentTypes () {
79
+ const contentTypes = strapi.get('content-types').getAll(namespace);
80
+ return removeNamespacedKeys(contentTypes, namespace);
81
+ },
82
+ service (serviceName) {
83
+ return strapi.get('services').get(`${namespace}.${serviceName}`);
84
+ },
85
+ get services () {
86
+ const services = strapi.get('services').getAll(namespace);
87
+ return removeNamespacedKeys(services, namespace);
88
+ },
89
+ policy (policyName) {
90
+ return strapi.get('policies').get(`${namespace}.${policyName}`);
91
+ },
92
+ get policies () {
93
+ const policies = strapi.get('policies').getAll(namespace);
94
+ return removeNamespacedKeys(policies, namespace);
95
+ },
96
+ middleware (middlewareName) {
97
+ return strapi.get('middlewares').get(`${namespace}.${middlewareName}`);
98
+ },
99
+ get middlewares () {
100
+ const middlewares = strapi.get('middlewares').getAll(namespace);
101
+ return removeNamespacedKeys(middlewares, namespace);
102
+ },
103
+ controller (controllerName) {
104
+ return strapi.get('controllers').get(`${namespace}.${controllerName}`);
105
+ },
106
+ get controllers () {
107
+ const controllers = strapi.get('controllers').getAll(namespace);
108
+ return removeNamespacedKeys(controllers, namespace);
109
+ }
110
+ };
111
+ };
112
+
113
+ export { createModule };
114
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/domain/module/index.ts"],"sourcesContent":["import _, { type PropertyPath, flatten } from 'lodash';\nimport { yup } from '@strapi/utils';\nimport type { Core, UID, Struct } from '@strapi/types';\n\nimport { removeNamespace } from '../../registries/namespace';\nimport { validateModule } from './validation';\n\ninterface LifecyclesState {\n bootstrap?: boolean;\n register?: boolean;\n destroy?: boolean;\n}\n\nexport interface RawModule {\n config?: Record<string, unknown>;\n routes?: Core.Module['routes'];\n controllers?: Core.Module['controllers'];\n services?: Core.Module['services'];\n contentTypes?: Core.Module['contentTypes'];\n policies?: Core.Module['policies'];\n middlewares?: Core.Module['middlewares'];\n bootstrap?: (params: { strapi: Core.Strapi }) => Promise<void>;\n register?: (params: { strapi: Core.Strapi }) => Promise<void>;\n destroy?: (params: { strapi: Core.Strapi }) => Promise<void>;\n}\n\nexport interface Module {\n bootstrap: () => Promise<void>;\n register: () => Promise<void>;\n destroy: () => Promise<void>;\n load: () => void;\n routes: Core.Module['routes'];\n config<T = unknown>(key: PropertyPath, defaultVal?: T): T; // TODO: this mirrors ConfigProvider.get, we should use it directly\n contentType: (ctName: UID.ContentType) => Struct.ContentTypeSchema;\n contentTypes: Record<string, Struct.ContentTypeSchema>;\n service: (serviceName: UID.Service) => Core.Service;\n services: Record<string, Core.Service>;\n policy: (policyName: UID.Policy) => Core.Policy;\n policies: Record<string, Core.Policy>;\n middleware: (middlewareName: UID.Middleware) => Core.Middleware;\n middlewares: Record<string, Core.Middleware>;\n controller: (controllerName: UID.Controller) => Core.Controller;\n controllers: Record<string, Core.Controller>;\n}\n\n// Removes the namespace from a map with keys prefixed with a namespace\nconst removeNamespacedKeys = <T extends Record<string, unknown>>(map: T, namespace: string) => {\n return _.mapKeys(map, (value, key) => removeNamespace(key, namespace));\n};\n\nconst defaultModule = {\n config: {},\n routes: [],\n controllers: {},\n services: {},\n contentTypes: {},\n policies: {},\n middlewares: {},\n};\n\nexport const createModule = (\n namespace: string,\n rawModule: RawModule,\n strapi: Core.Strapi\n): Module => {\n _.defaults(rawModule, defaultModule);\n\n try {\n validateModule(rawModule);\n } catch (e) {\n if (e instanceof yup.ValidationError) {\n throw new Error(`strapi-server.js is invalid for '${namespace}'.\\n${e.errors.join('\\n')}`);\n }\n }\n\n const called: LifecyclesState = {};\n return {\n async bootstrap() {\n if (called.bootstrap) {\n throw new Error(`Bootstrap for ${namespace} has already been called`);\n }\n called.bootstrap = true;\n await (rawModule.bootstrap && rawModule.bootstrap({ strapi }));\n },\n async register() {\n if (called.register) {\n throw new Error(`Register for ${namespace} has already been called`);\n }\n called.register = true;\n await (rawModule.register && rawModule.register({ strapi }));\n },\n async destroy() {\n if (called.destroy) {\n throw new Error(`Destroy for ${namespace} has already been called`);\n }\n called.destroy = true;\n await (rawModule.destroy && rawModule.destroy({ strapi }));\n },\n load() {\n strapi.get('content-types').add(namespace, rawModule.contentTypes);\n strapi.get('services').add(namespace, rawModule.services);\n strapi.get('policies').add(namespace, rawModule.policies);\n strapi.get('middlewares').add(namespace, rawModule.middlewares);\n strapi.get('controllers').add(namespace, rawModule.controllers);\n strapi.get('config').set(namespace, rawModule.config);\n },\n get routes() {\n return rawModule.routes ?? {};\n },\n config(path: PropertyPath, defaultValue: unknown) {\n const pathArray = flatten([namespace, path]);\n return strapi.get('config').get(pathArray, defaultValue);\n },\n contentType(ctName: UID.ContentType) {\n return strapi.get('content-types').get(`${namespace}.${ctName}`);\n },\n get contentTypes() {\n const contentTypes = strapi.get('content-types').getAll(namespace);\n return removeNamespacedKeys(contentTypes, namespace);\n },\n service(serviceName: UID.Service) {\n return strapi.get('services').get(`${namespace}.${serviceName}`);\n },\n get services() {\n const services = strapi.get('services').getAll(namespace);\n return removeNamespacedKeys(services, namespace);\n },\n policy(policyName: UID.Policy) {\n return strapi.get('policies').get(`${namespace}.${policyName}`);\n },\n get policies() {\n const policies = strapi.get('policies').getAll(namespace);\n return removeNamespacedKeys(policies, namespace);\n },\n middleware(middlewareName: UID.Middleware) {\n return strapi.get('middlewares').get(`${namespace}.${middlewareName}`);\n },\n get middlewares() {\n const middlewares = strapi.get('middlewares').getAll(namespace);\n return removeNamespacedKeys(middlewares, namespace);\n },\n controller(controllerName: UID.Controller) {\n return strapi.get('controllers').get(`${namespace}.${controllerName}`);\n },\n get controllers() {\n const controllers = strapi.get('controllers').getAll(namespace);\n return removeNamespacedKeys(controllers, namespace);\n },\n };\n};\n"],"names":["removeNamespacedKeys","map","namespace","_","mapKeys","value","key","removeNamespace","defaultModule","config","routes","controllers","services","contentTypes","policies","middlewares","createModule","rawModule","strapi","defaults","validateModule","e","yup","ValidationError","Error","errors","join","called","bootstrap","register","destroy","load","get","add","set","path","defaultValue","pathArray","flatten","contentType","ctName","getAll","service","serviceName","policy","policyName","middleware","middlewareName","controller","controllerName"],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ var strapiUtils = require('@strapi/utils');
4
+
5
+ const strapiServerSchema = strapiUtils.yup.object().shape({
6
+ bootstrap: strapiUtils.yup.mixed().isFunction(),
7
+ destroy: strapiUtils.yup.mixed().isFunction(),
8
+ register: strapiUtils.yup.mixed().isFunction(),
9
+ config: strapiUtils.yup.object(),
10
+ routes: strapiUtils.yup.lazy((value)=>{
11
+ if (Array.isArray(value)) {
12
+ return strapiUtils.yup.array();
13
+ }
14
+ return strapiUtils.yup.object();
15
+ }),
16
+ controllers: strapiUtils.yup.object(),
17
+ services: strapiUtils.yup.object(),
18
+ policies: strapiUtils.yup.object(),
19
+ middlewares: strapiUtils.yup.object(),
20
+ contentTypes: strapiUtils.yup.object()
21
+ }).noUnknown();
22
+ const validateModule = (data)=>{
23
+ return strapiServerSchema.validateSync(data, {
24
+ strict: true,
25
+ abortEarly: false
26
+ });
27
+ };
28
+
29
+ exports.validateModule = validateModule;
30
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sources":["../../../src/domain/module/validation.ts"],"sourcesContent":["import { yup } from '@strapi/utils';\n\nconst strapiServerSchema = yup\n .object()\n .shape({\n bootstrap: yup.mixed().isFunction(),\n destroy: yup.mixed().isFunction(),\n register: yup.mixed().isFunction(),\n config: yup.object(),\n routes: yup.lazy((value) => {\n if (Array.isArray(value)) {\n return yup.array();\n }\n return yup.object();\n }),\n controllers: yup.object(),\n services: yup.object(),\n policies: yup.object(),\n middlewares: yup.object(),\n contentTypes: yup.object(),\n })\n .noUnknown();\n\nconst validateModule = (data: unknown) => {\n return strapiServerSchema.validateSync(data, { strict: true, abortEarly: false });\n};\n\nexport { validateModule };\n"],"names":["strapiServerSchema","yup","object","shape","bootstrap","mixed","isFunction","destroy","register","config","routes","lazy","value","Array","isArray","array","controllers","services","policies","middlewares","contentTypes","noUnknown","validateModule","data","validateSync","strict","abortEarly"],"mappings":";;;;AAEA,MAAMA,kBAAqBC,GAAAA,eAAAA,CACxBC,MAAM,EAAA,CACNC,KAAK,CAAC;IACLC,SAAWH,EAAAA,eAAAA,CAAII,KAAK,EAAA,CAAGC,UAAU,EAAA;IACjCC,OAASN,EAAAA,eAAAA,CAAII,KAAK,EAAA,CAAGC,UAAU,EAAA;IAC/BE,QAAUP,EAAAA,eAAAA,CAAII,KAAK,EAAA,CAAGC,UAAU,EAAA;AAChCG,IAAAA,MAAAA,EAAQR,gBAAIC,MAAM,EAAA;IAClBQ,MAAQT,EAAAA,eAAAA,CAAIU,IAAI,CAAC,CAACC,KAAAA,GAAAA;QAChB,IAAIC,KAAAA,CAAMC,OAAO,CAACF,KAAQ,CAAA,EAAA;AACxB,YAAA,OAAOX,gBAAIc,KAAK,EAAA;AAClB;AACA,QAAA,OAAOd,gBAAIC,MAAM,EAAA;AACnB,KAAA,CAAA;AACAc,IAAAA,WAAAA,EAAaf,gBAAIC,MAAM,EAAA;AACvBe,IAAAA,QAAAA,EAAUhB,gBAAIC,MAAM,EAAA;AACpBgB,IAAAA,QAAAA,EAAUjB,gBAAIC,MAAM,EAAA;AACpBiB,IAAAA,WAAAA,EAAalB,gBAAIC,MAAM,EAAA;AACvBkB,IAAAA,YAAAA,EAAcnB,gBAAIC,MAAM;AAC1B,CAAA,CAAA,CACCmB,SAAS,EAAA;AAEZ,MAAMC,iBAAiB,CAACC,IAAAA,GAAAA;IACtB,OAAOvB,kBAAAA,CAAmBwB,YAAY,CAACD,IAAM,EAAA;QAAEE,MAAQ,EAAA,IAAA;QAAMC,UAAY,EAAA;AAAM,KAAA,CAAA;AACjF;;;;"}
@@ -0,0 +1,28 @@
1
+ import { yup } from '@strapi/utils';
2
+
3
+ const strapiServerSchema = yup.object().shape({
4
+ bootstrap: yup.mixed().isFunction(),
5
+ destroy: yup.mixed().isFunction(),
6
+ register: yup.mixed().isFunction(),
7
+ config: yup.object(),
8
+ routes: yup.lazy((value)=>{
9
+ if (Array.isArray(value)) {
10
+ return yup.array();
11
+ }
12
+ return yup.object();
13
+ }),
14
+ controllers: yup.object(),
15
+ services: yup.object(),
16
+ policies: yup.object(),
17
+ middlewares: yup.object(),
18
+ contentTypes: yup.object()
19
+ }).noUnknown();
20
+ const validateModule = (data)=>{
21
+ return strapiServerSchema.validateSync(data, {
22
+ strict: true,
23
+ abortEarly: false
24
+ });
25
+ };
26
+
27
+ export { validateModule };
28
+ //# sourceMappingURL=validation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.mjs","sources":["../../../src/domain/module/validation.ts"],"sourcesContent":["import { yup } from '@strapi/utils';\n\nconst strapiServerSchema = yup\n .object()\n .shape({\n bootstrap: yup.mixed().isFunction(),\n destroy: yup.mixed().isFunction(),\n register: yup.mixed().isFunction(),\n config: yup.object(),\n routes: yup.lazy((value) => {\n if (Array.isArray(value)) {\n return yup.array();\n }\n return yup.object();\n }),\n controllers: yup.object(),\n services: yup.object(),\n policies: yup.object(),\n middlewares: yup.object(),\n contentTypes: yup.object(),\n })\n .noUnknown();\n\nconst validateModule = (data: unknown) => {\n return strapiServerSchema.validateSync(data, { strict: true, abortEarly: false });\n};\n\nexport { validateModule };\n"],"names":["strapiServerSchema","yup","object","shape","bootstrap","mixed","isFunction","destroy","register","config","routes","lazy","value","Array","isArray","array","controllers","services","policies","middlewares","contentTypes","noUnknown","validateModule","data","validateSync","strict","abortEarly"],"mappings":";;AAEA,MAAMA,kBAAqBC,GAAAA,GAAAA,CACxBC,MAAM,EAAA,CACNC,KAAK,CAAC;IACLC,SAAWH,EAAAA,GAAAA,CAAII,KAAK,EAAA,CAAGC,UAAU,EAAA;IACjCC,OAASN,EAAAA,GAAAA,CAAII,KAAK,EAAA,CAAGC,UAAU,EAAA;IAC/BE,QAAUP,EAAAA,GAAAA,CAAII,KAAK,EAAA,CAAGC,UAAU,EAAA;AAChCG,IAAAA,MAAAA,EAAQR,IAAIC,MAAM,EAAA;IAClBQ,MAAQT,EAAAA,GAAAA,CAAIU,IAAI,CAAC,CAACC,KAAAA,GAAAA;QAChB,IAAIC,KAAAA,CAAMC,OAAO,CAACF,KAAQ,CAAA,EAAA;AACxB,YAAA,OAAOX,IAAIc,KAAK,EAAA;AAClB;AACA,QAAA,OAAOd,IAAIC,MAAM,EAAA;AACnB,KAAA,CAAA;AACAc,IAAAA,WAAAA,EAAaf,IAAIC,MAAM,EAAA;AACvBe,IAAAA,QAAAA,EAAUhB,IAAIC,MAAM,EAAA;AACpBgB,IAAAA,QAAAA,EAAUjB,IAAIC,MAAM,EAAA;AACpBiB,IAAAA,WAAAA,EAAalB,IAAIC,MAAM,EAAA;AACvBkB,IAAAA,YAAAA,EAAcnB,IAAIC,MAAM;AAC1B,CAAA,CAAA,CACCmB,SAAS,EAAA;AAEZ,MAAMC,iBAAiB,CAACC,IAAAA,GAAAA;IACtB,OAAOvB,kBAAAA,CAAmBwB,YAAY,CAACD,IAAM,EAAA;QAAEE,MAAQ,EAAA,IAAA;QAAMC,UAAY,EAAA;AAAM,KAAA,CAAA;AACjF;;;;"}
@@ -6,6 +6,7 @@ declare const _default: Readonly<{
6
6
  }) => Promise<void>;
7
7
  readonly isEE: boolean;
8
8
  readonly seats: number | undefined;
9
+ readonly type: string | undefined;
9
10
  features: Readonly<{
10
11
  list: () => {
11
12
  [key: string]: any;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ee/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;;;;;;;;;;;;;;;;;iCAsPb,MAAM;;;AAfnC,wBAiBG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ee/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;;;;;;;;;;;;;;;;;;iCA0Pb,MAAM;;;AAnBnC,wBAqBG"}