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

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

Potentially problematic release.


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

Files changed (849) hide show
  1. package/dist/Strapi.d.ts +1 -0
  2. package/dist/Strapi.d.ts.map +1 -1
  3. package/dist/Strapi.js +448 -403
  4. package/dist/Strapi.js.map +1 -1
  5. package/dist/Strapi.mjs +447 -402
  6. package/dist/Strapi.mjs.map +1 -1
  7. package/dist/compile.js +23 -14
  8. package/dist/compile.js.map +1 -1
  9. package/dist/compile.mjs +22 -14
  10. package/dist/compile.mjs.map +1 -1
  11. package/dist/configuration/config-loader.js +110 -97
  12. package/dist/configuration/config-loader.js.map +1 -1
  13. package/dist/configuration/config-loader.mjs +109 -96
  14. package/dist/configuration/config-loader.mjs.map +1 -1
  15. package/dist/configuration/get-dirs.js +31 -29
  16. package/dist/configuration/get-dirs.js.map +1 -1
  17. package/dist/configuration/get-dirs.mjs +30 -30
  18. package/dist/configuration/get-dirs.mjs.map +1 -1
  19. package/dist/configuration/index.d.ts +1 -0
  20. package/dist/configuration/index.d.ts.map +1 -1
  21. package/dist/configuration/index.js +85 -73
  22. package/dist/configuration/index.js.map +1 -1
  23. package/dist/configuration/index.mjs +84 -69
  24. package/dist/configuration/index.mjs.map +1 -1
  25. package/dist/configuration/urls.d.ts.map +1 -1
  26. package/dist/configuration/urls.js +74 -61
  27. package/dist/configuration/urls.js.map +1 -1
  28. package/dist/configuration/urls.mjs +73 -62
  29. package/dist/configuration/urls.mjs.map +1 -1
  30. package/dist/constants.d.ts +3 -0
  31. package/dist/constants.d.ts.map +1 -0
  32. package/dist/constants.js +6 -0
  33. package/dist/constants.js.map +1 -0
  34. package/dist/constants.mjs +4 -0
  35. package/dist/constants.mjs.map +1 -0
  36. package/dist/container.js +27 -23
  37. package/dist/container.js.map +1 -1
  38. package/dist/container.mjs +26 -24
  39. package/dist/container.mjs.map +1 -1
  40. package/dist/core-api/controller/collection-type.js +77 -76
  41. package/dist/core-api/controller/collection-type.js.map +1 -1
  42. package/dist/core-api/controller/collection-type.mjs +76 -77
  43. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  44. package/dist/core-api/controller/index.d.ts.map +1 -1
  45. package/dist/core-api/controller/index.js +64 -48
  46. package/dist/core-api/controller/index.js.map +1 -1
  47. package/dist/core-api/controller/index.mjs +63 -49
  48. package/dist/core-api/controller/index.mjs.map +1 -1
  49. package/dist/core-api/controller/single-type.js +41 -40
  50. package/dist/core-api/controller/single-type.js.map +1 -1
  51. package/dist/core-api/controller/single-type.mjs +40 -41
  52. package/dist/core-api/controller/single-type.mjs.map +1 -1
  53. package/dist/core-api/controller/transform.d.ts +3 -2
  54. package/dist/core-api/controller/transform.d.ts.map +1 -1
  55. package/dist/core-api/controller/transform.js +83 -64
  56. package/dist/core-api/controller/transform.js.map +1 -1
  57. package/dist/core-api/controller/transform.mjs +82 -65
  58. package/dist/core-api/controller/transform.mjs.map +1 -1
  59. package/dist/core-api/routes/index.d.ts +4 -22
  60. package/dist/core-api/routes/index.d.ts.map +1 -1
  61. package/dist/core-api/routes/index.js +205 -61
  62. package/dist/core-api/routes/index.js.map +1 -1
  63. package/dist/core-api/routes/index.mjs +185 -62
  64. package/dist/core-api/routes/index.mjs.map +1 -1
  65. package/dist/core-api/routes/validation/attributes.d.ts +244 -0
  66. package/dist/core-api/routes/validation/attributes.d.ts.map +1 -0
  67. package/dist/core-api/routes/validation/attributes.js +560 -0
  68. package/dist/core-api/routes/validation/attributes.js.map +1 -0
  69. package/dist/core-api/routes/validation/attributes.mjs +521 -0
  70. package/dist/core-api/routes/validation/attributes.mjs.map +1 -0
  71. package/dist/core-api/routes/validation/common.d.ts +105 -0
  72. package/dist/core-api/routes/validation/common.d.ts.map +1 -0
  73. package/dist/core-api/routes/validation/common.js +116 -0
  74. package/dist/core-api/routes/validation/common.js.map +1 -0
  75. package/dist/core-api/routes/validation/common.mjs +95 -0
  76. package/dist/core-api/routes/validation/common.mjs.map +1 -0
  77. package/dist/core-api/routes/validation/component.d.ts +34 -0
  78. package/dist/core-api/routes/validation/component.d.ts.map +1 -0
  79. package/dist/core-api/routes/validation/component.js +45 -0
  80. package/dist/core-api/routes/validation/component.js.map +1 -0
  81. package/dist/core-api/routes/validation/component.mjs +43 -0
  82. package/dist/core-api/routes/validation/component.mjs.map +1 -0
  83. package/dist/core-api/routes/validation/constants.d.ts +8 -0
  84. package/dist/core-api/routes/validation/constants.d.ts.map +1 -0
  85. package/dist/core-api/routes/validation/constants.js +18 -0
  86. package/dist/core-api/routes/validation/constants.js.map +1 -0
  87. package/dist/core-api/routes/validation/constants.mjs +16 -0
  88. package/dist/core-api/routes/validation/constants.mjs.map +1 -0
  89. package/dist/core-api/routes/validation/content-type.d.ts +128 -0
  90. package/dist/core-api/routes/validation/content-type.d.ts.map +1 -0
  91. package/dist/core-api/routes/validation/content-type.js +201 -0
  92. package/dist/core-api/routes/validation/content-type.js.map +1 -0
  93. package/dist/core-api/routes/validation/content-type.mjs +180 -0
  94. package/dist/core-api/routes/validation/content-type.mjs.map +1 -0
  95. package/dist/core-api/routes/validation/index.d.ts +5 -0
  96. package/dist/core-api/routes/validation/index.d.ts.map +1 -0
  97. package/dist/core-api/routes/validation/mappers.d.ts +105 -0
  98. package/dist/core-api/routes/validation/mappers.d.ts.map +1 -0
  99. package/dist/core-api/routes/validation/mappers.js +273 -0
  100. package/dist/core-api/routes/validation/mappers.js.map +1 -0
  101. package/dist/core-api/routes/validation/mappers.mjs +249 -0
  102. package/dist/core-api/routes/validation/mappers.mjs.map +1 -0
  103. package/dist/core-api/routes/validation/utils.d.ts +47 -0
  104. package/dist/core-api/routes/validation/utils.d.ts.map +1 -0
  105. package/dist/core-api/routes/validation/utils.js +128 -0
  106. package/dist/core-api/routes/validation/utils.js.map +1 -0
  107. package/dist/core-api/routes/validation/utils.mjs +106 -0
  108. package/dist/core-api/routes/validation/utils.mjs.map +1 -0
  109. package/dist/core-api/service/collection-type.d.ts +2 -2
  110. package/dist/core-api/service/collection-type.js +73 -60
  111. package/dist/core-api/service/collection-type.js.map +1 -1
  112. package/dist/core-api/service/collection-type.mjs +72 -62
  113. package/dist/core-api/service/collection-type.mjs.map +1 -1
  114. package/dist/core-api/service/core-service.js +9 -8
  115. package/dist/core-api/service/core-service.js.map +1 -1
  116. package/dist/core-api/service/core-service.mjs +8 -9
  117. package/dist/core-api/service/core-service.mjs.map +1 -1
  118. package/dist/core-api/service/index.js +13 -13
  119. package/dist/core-api/service/index.js.map +1 -1
  120. package/dist/core-api/service/index.mjs +12 -14
  121. package/dist/core-api/service/index.mjs.map +1 -1
  122. package/dist/core-api/service/pagination.js +69 -43
  123. package/dist/core-api/service/pagination.js.map +1 -1
  124. package/dist/core-api/service/pagination.mjs +68 -47
  125. package/dist/core-api/service/pagination.mjs.map +1 -1
  126. package/dist/core-api/service/single-type.js +43 -39
  127. package/dist/core-api/service/single-type.js.map +1 -1
  128. package/dist/core-api/service/single-type.mjs +42 -41
  129. package/dist/core-api/service/single-type.mjs.map +1 -1
  130. package/dist/domain/content-type/index.d.ts.map +1 -1
  131. package/dist/domain/content-type/index.js +110 -99
  132. package/dist/domain/content-type/index.js.map +1 -1
  133. package/dist/domain/content-type/index.mjs +109 -99
  134. package/dist/domain/content-type/index.mjs.map +1 -1
  135. package/dist/domain/content-type/validator.js +84 -69
  136. package/dist/domain/content-type/validator.js.map +1 -1
  137. package/dist/domain/content-type/validator.mjs +83 -68
  138. package/dist/domain/content-type/validator.mjs.map +1 -1
  139. package/dist/domain/module/index.d.ts.map +1 -1
  140. package/dist/domain/module/index.js +112 -100
  141. package/dist/domain/module/index.js.map +1 -1
  142. package/dist/domain/module/index.mjs +111 -99
  143. package/dist/domain/module/index.mjs.map +1 -1
  144. package/dist/domain/module/validation.js +25 -20
  145. package/dist/domain/module/validation.js.map +1 -1
  146. package/dist/domain/module/validation.mjs +24 -21
  147. package/dist/domain/module/validation.mjs.map +1 -1
  148. package/dist/ee/index.d.ts +7 -0
  149. package/dist/ee/index.d.ts.map +1 -1
  150. package/dist/ee/index.js +197 -132
  151. package/dist/ee/index.js.map +1 -1
  152. package/dist/ee/index.mjs +196 -134
  153. package/dist/ee/index.mjs.map +1 -1
  154. package/dist/ee/license.d.ts +3 -1
  155. package/dist/ee/license.d.ts.map +1 -1
  156. package/dist/ee/license.js +105 -75
  157. package/dist/ee/license.js.map +1 -1
  158. package/dist/ee/license.mjs +103 -76
  159. package/dist/ee/license.mjs.map +1 -1
  160. package/dist/factories.d.ts +3 -1
  161. package/dist/factories.d.ts.map +1 -1
  162. package/dist/factories.js +80 -67
  163. package/dist/factories.js.map +1 -1
  164. package/dist/factories.mjs +77 -70
  165. package/dist/factories.mjs.map +1 -1
  166. package/dist/index.js +29 -26
  167. package/dist/index.js.map +1 -1
  168. package/dist/index.mjs +29 -29
  169. package/dist/index.mjs.map +1 -1
  170. package/dist/loaders/admin.d.ts.map +1 -1
  171. package/dist/loaders/admin.js +21 -20
  172. package/dist/loaders/admin.js.map +1 -1
  173. package/dist/loaders/admin.mjs +20 -20
  174. package/dist/loaders/admin.mjs.map +1 -1
  175. package/dist/loaders/apis.js +143 -120
  176. package/dist/loaders/apis.js.map +1 -1
  177. package/dist/loaders/apis.mjs +142 -119
  178. package/dist/loaders/apis.mjs.map +1 -1
  179. package/dist/loaders/components.js +33 -34
  180. package/dist/loaders/components.js.map +1 -1
  181. package/dist/loaders/components.mjs +32 -34
  182. package/dist/loaders/components.mjs.map +1 -1
  183. package/dist/loaders/index.js +22 -20
  184. package/dist/loaders/index.js.map +1 -1
  185. package/dist/loaders/index.mjs +21 -21
  186. package/dist/loaders/index.mjs.map +1 -1
  187. package/dist/loaders/middlewares.js +29 -25
  188. package/dist/loaders/middlewares.js.map +1 -1
  189. package/dist/loaders/middlewares.mjs +28 -25
  190. package/dist/loaders/middlewares.mjs.map +1 -1
  191. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  192. package/dist/loaders/plugins/get-enabled-plugins.js +125 -127
  193. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  194. package/dist/loaders/plugins/get-enabled-plugins.mjs +124 -104
  195. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  196. package/dist/loaders/plugins/get-user-plugins-config.js +25 -24
  197. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  198. package/dist/loaders/plugins/get-user-plugins-config.mjs +24 -23
  199. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  200. package/dist/loaders/plugins/index.d.ts.map +1 -1
  201. package/dist/loaders/plugins/index.js +141 -104
  202. package/dist/loaders/plugins/index.js.map +1 -1
  203. package/dist/loaders/plugins/index.mjs +121 -104
  204. package/dist/loaders/plugins/index.mjs.map +1 -1
  205. package/dist/loaders/policies.js +24 -20
  206. package/dist/loaders/policies.js.map +1 -1
  207. package/dist/loaders/policies.mjs +23 -20
  208. package/dist/loaders/policies.mjs.map +1 -1
  209. package/dist/loaders/sanitizers.js +10 -4
  210. package/dist/loaders/sanitizers.js.map +1 -1
  211. package/dist/loaders/sanitizers.mjs +9 -6
  212. package/dist/loaders/sanitizers.mjs.map +1 -1
  213. package/dist/loaders/src-index.js +35 -27
  214. package/dist/loaders/src-index.js.map +1 -1
  215. package/dist/loaders/src-index.mjs +34 -29
  216. package/dist/loaders/src-index.mjs.map +1 -1
  217. package/dist/loaders/validators.js +9 -4
  218. package/dist/loaders/validators.js.map +1 -1
  219. package/dist/loaders/validators.mjs +8 -6
  220. package/dist/loaders/validators.mjs.map +1 -1
  221. package/dist/middlewares/body.d.ts.map +1 -1
  222. package/dist/middlewares/body.js +58 -54
  223. package/dist/middlewares/body.js.map +1 -1
  224. package/dist/middlewares/body.mjs +57 -51
  225. package/dist/middlewares/body.mjs.map +1 -1
  226. package/dist/middlewares/compression.js +6 -6
  227. package/dist/middlewares/compression.js.map +1 -1
  228. package/dist/middlewares/compression.mjs +5 -5
  229. package/dist/middlewares/compression.mjs.map +1 -1
  230. package/dist/middlewares/cors.d.ts +9 -1
  231. package/dist/middlewares/cors.d.ts.map +1 -1
  232. package/dist/middlewares/cors.js +81 -48
  233. package/dist/middlewares/cors.js.map +1 -1
  234. package/dist/middlewares/cors.mjs +78 -46
  235. package/dist/middlewares/cors.mjs.map +1 -1
  236. package/dist/middlewares/errors.js +32 -30
  237. package/dist/middlewares/errors.js.map +1 -1
  238. package/dist/middlewares/errors.mjs +31 -31
  239. package/dist/middlewares/errors.mjs.map +1 -1
  240. package/dist/middlewares/favicon.js +27 -17
  241. package/dist/middlewares/favicon.js.map +1 -1
  242. package/dist/middlewares/favicon.mjs +26 -16
  243. package/dist/middlewares/favicon.mjs.map +1 -1
  244. package/dist/middlewares/index.js +32 -30
  245. package/dist/middlewares/index.js.map +1 -1
  246. package/dist/middlewares/index.mjs +31 -31
  247. package/dist/middlewares/index.mjs.map +1 -1
  248. package/dist/middlewares/ip.js +6 -6
  249. package/dist/middlewares/ip.js.map +1 -1
  250. package/dist/middlewares/ip.mjs +5 -5
  251. package/dist/middlewares/ip.mjs.map +1 -1
  252. package/dist/middlewares/logger.js +10 -9
  253. package/dist/middlewares/logger.js.map +1 -1
  254. package/dist/middlewares/logger.mjs +9 -10
  255. package/dist/middlewares/logger.mjs.map +1 -1
  256. package/dist/middlewares/powered-by.js +13 -9
  257. package/dist/middlewares/powered-by.js.map +1 -1
  258. package/dist/middlewares/powered-by.mjs +12 -10
  259. package/dist/middlewares/powered-by.mjs.map +1 -1
  260. package/dist/middlewares/public.js +33 -29
  261. package/dist/middlewares/public.js.map +1 -1
  262. package/dist/middlewares/public.mjs +32 -28
  263. package/dist/middlewares/public.mjs.map +1 -1
  264. package/dist/middlewares/query.js +35 -32
  265. package/dist/middlewares/query.js.map +1 -1
  266. package/dist/middlewares/query.mjs +34 -31
  267. package/dist/middlewares/query.mjs.map +1 -1
  268. package/dist/middlewares/response-time.js +10 -9
  269. package/dist/middlewares/response-time.js.map +1 -1
  270. package/dist/middlewares/response-time.mjs +9 -10
  271. package/dist/middlewares/response-time.mjs.map +1 -1
  272. package/dist/middlewares/responses.js +14 -12
  273. package/dist/middlewares/responses.js.map +1 -1
  274. package/dist/middlewares/responses.mjs +13 -13
  275. package/dist/middlewares/responses.mjs.map +1 -1
  276. package/dist/middlewares/security.d.ts.map +1 -1
  277. package/dist/middlewares/security.js +109 -71
  278. package/dist/middlewares/security.js.map +1 -1
  279. package/dist/middlewares/security.mjs +108 -70
  280. package/dist/middlewares/security.mjs.map +1 -1
  281. package/dist/middlewares/session.js +26 -25
  282. package/dist/middlewares/session.js.map +1 -1
  283. package/dist/middlewares/session.mjs +25 -24
  284. package/dist/middlewares/session.mjs.map +1 -1
  285. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +14 -11
  286. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  287. package/dist/migrations/database/5.0.0-discard-drafts.js +153 -35
  288. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
  289. package/dist/migrations/database/5.0.0-discard-drafts.mjs +152 -37
  290. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
  291. package/dist/migrations/draft-publish.d.ts +2 -2
  292. package/dist/migrations/draft-publish.d.ts.map +1 -1
  293. package/dist/migrations/draft-publish.js +61 -34
  294. package/dist/migrations/draft-publish.js.map +1 -1
  295. package/dist/migrations/draft-publish.mjs +60 -36
  296. package/dist/migrations/draft-publish.mjs.map +1 -1
  297. package/dist/migrations/first-published-at.d.ts +4 -0
  298. package/dist/migrations/first-published-at.d.ts.map +1 -0
  299. package/dist/migrations/first-published-at.js +51 -0
  300. package/dist/migrations/first-published-at.js.map +1 -0
  301. package/dist/migrations/first-published-at.mjs +49 -0
  302. package/dist/migrations/first-published-at.mjs.map +1 -0
  303. package/dist/migrations/i18n.d.ts +5 -0
  304. package/dist/migrations/i18n.d.ts.map +1 -0
  305. package/dist/migrations/i18n.js +71 -0
  306. package/dist/migrations/i18n.js.map +1 -0
  307. package/dist/migrations/i18n.mjs +68 -0
  308. package/dist/migrations/i18n.mjs.map +1 -0
  309. package/dist/migrations/index.d.ts +5 -0
  310. package/dist/migrations/index.d.ts.map +1 -0
  311. package/dist/migrations/index.js +34 -0
  312. package/dist/migrations/index.js.map +1 -0
  313. package/dist/migrations/index.mjs +31 -0
  314. package/dist/migrations/index.mjs.map +1 -0
  315. package/dist/package.json.js +187 -0
  316. package/dist/package.json.js.map +1 -0
  317. package/dist/package.json.mjs +164 -0
  318. package/dist/package.json.mjs.map +1 -0
  319. package/dist/providers/admin.d.ts.map +1 -1
  320. package/dist/providers/admin.js +27 -17
  321. package/dist/providers/admin.js.map +1 -1
  322. package/dist/providers/admin.mjs +26 -19
  323. package/dist/providers/admin.mjs.map +1 -1
  324. package/dist/providers/coreStore.js +13 -8
  325. package/dist/providers/coreStore.js.map +1 -1
  326. package/dist/providers/coreStore.mjs +12 -10
  327. package/dist/providers/coreStore.mjs.map +1 -1
  328. package/dist/providers/cron.js +19 -16
  329. package/dist/providers/cron.js.map +1 -1
  330. package/dist/providers/cron.mjs +18 -18
  331. package/dist/providers/cron.mjs.map +1 -1
  332. package/dist/providers/index.d.ts.map +1 -1
  333. package/dist/providers/index.js +20 -9
  334. package/dist/providers/index.js.map +1 -1
  335. package/dist/providers/index.mjs +19 -10
  336. package/dist/providers/index.mjs.map +1 -1
  337. package/dist/providers/provider.js +4 -3
  338. package/dist/providers/provider.js.map +1 -1
  339. package/dist/providers/provider.mjs +3 -4
  340. package/dist/providers/provider.mjs.map +1 -1
  341. package/dist/providers/registries.js +37 -32
  342. package/dist/providers/registries.js.map +1 -1
  343. package/dist/providers/registries.mjs +36 -34
  344. package/dist/providers/registries.mjs.map +1 -1
  345. package/dist/providers/session-manager.d.ts +3 -0
  346. package/dist/providers/session-manager.d.ts.map +1 -0
  347. package/dist/providers/session-manager.js +23 -0
  348. package/dist/providers/session-manager.js.map +1 -0
  349. package/dist/providers/session-manager.mjs +21 -0
  350. package/dist/providers/session-manager.mjs.map +1 -0
  351. package/dist/providers/telemetry.js +19 -16
  352. package/dist/providers/telemetry.js.map +1 -1
  353. package/dist/providers/telemetry.mjs +18 -18
  354. package/dist/providers/telemetry.mjs.map +1 -1
  355. package/dist/providers/webhooks.js +28 -26
  356. package/dist/providers/webhooks.js.map +1 -1
  357. package/dist/providers/webhooks.mjs +27 -28
  358. package/dist/providers/webhooks.mjs.map +1 -1
  359. package/dist/registries/apis.js +23 -20
  360. package/dist/registries/apis.js.map +1 -1
  361. package/dist/registries/apis.mjs +22 -22
  362. package/dist/registries/apis.mjs.map +1 -1
  363. package/dist/registries/components.js +35 -37
  364. package/dist/registries/components.js.map +1 -1
  365. package/dist/registries/components.mjs +34 -39
  366. package/dist/registries/components.mjs.map +1 -1
  367. package/dist/registries/content-types.js +54 -59
  368. package/dist/registries/content-types.js.map +1 -1
  369. package/dist/registries/content-types.mjs +53 -61
  370. package/dist/registries/content-types.mjs.map +1 -1
  371. package/dist/registries/controllers.js +70 -71
  372. package/dist/registries/controllers.js.map +1 -1
  373. package/dist/registries/controllers.mjs +69 -73
  374. package/dist/registries/controllers.mjs.map +1 -1
  375. package/dist/registries/custom-fields.js +75 -65
  376. package/dist/registries/custom-fields.js.map +1 -1
  377. package/dist/registries/custom-fields.mjs +74 -67
  378. package/dist/registries/custom-fields.mjs.map +1 -1
  379. package/dist/registries/hooks.js +46 -49
  380. package/dist/registries/hooks.js.map +1 -1
  381. package/dist/registries/hooks.mjs +45 -51
  382. package/dist/registries/hooks.mjs.map +1 -1
  383. package/dist/registries/middlewares.js +49 -51
  384. package/dist/registries/middlewares.js.map +1 -1
  385. package/dist/registries/middlewares.mjs +48 -53
  386. package/dist/registries/middlewares.mjs.map +1 -1
  387. package/dist/registries/models.js +14 -13
  388. package/dist/registries/models.js.map +1 -1
  389. package/dist/registries/models.mjs +13 -14
  390. package/dist/registries/models.mjs.map +1 -1
  391. package/dist/registries/modules.js +39 -36
  392. package/dist/registries/modules.js.map +1 -1
  393. package/dist/registries/modules.mjs +38 -38
  394. package/dist/registries/modules.mjs.map +1 -1
  395. package/dist/registries/namespace.js +21 -20
  396. package/dist/registries/namespace.js.map +1 -1
  397. package/dist/registries/namespace.mjs +20 -23
  398. package/dist/registries/namespace.mjs.map +1 -1
  399. package/dist/registries/plugins.js +23 -20
  400. package/dist/registries/plugins.js.map +1 -1
  401. package/dist/registries/plugins.mjs +22 -22
  402. package/dist/registries/plugins.mjs.map +1 -1
  403. package/dist/registries/policies.js +103 -96
  404. package/dist/registries/policies.js.map +1 -1
  405. package/dist/registries/policies.mjs +102 -98
  406. package/dist/registries/policies.mjs.map +1 -1
  407. package/dist/registries/sanitizers.js +23 -22
  408. package/dist/registries/sanitizers.js.map +1 -1
  409. package/dist/registries/sanitizers.mjs +22 -22
  410. package/dist/registries/sanitizers.mjs.map +1 -1
  411. package/dist/registries/services.js +71 -71
  412. package/dist/registries/services.js.map +1 -1
  413. package/dist/registries/services.mjs +70 -73
  414. package/dist/registries/services.mjs.map +1 -1
  415. package/dist/registries/validators.js +23 -22
  416. package/dist/registries/validators.js.map +1 -1
  417. package/dist/registries/validators.mjs +22 -22
  418. package/dist/registries/validators.mjs.map +1 -1
  419. package/dist/services/auth/index.js +74 -74
  420. package/dist/services/auth/index.js.map +1 -1
  421. package/dist/services/auth/index.mjs +73 -74
  422. package/dist/services/auth/index.mjs.map +1 -1
  423. package/dist/services/config.js +47 -43
  424. package/dist/services/config.js.map +1 -1
  425. package/dist/services/config.mjs +46 -44
  426. package/dist/services/config.mjs.map +1 -1
  427. package/dist/services/content-api/index.d.ts +7 -3
  428. package/dist/services/content-api/index.d.ts.map +1 -1
  429. package/dist/services/content-api/index.js +80 -79
  430. package/dist/services/content-api/index.js.map +1 -1
  431. package/dist/services/content-api/index.mjs +79 -79
  432. package/dist/services/content-api/index.mjs.map +1 -1
  433. package/dist/services/content-api/permissions/engine.js +8 -5
  434. package/dist/services/content-api/permissions/engine.js.map +1 -1
  435. package/dist/services/content-api/permissions/engine.mjs +7 -5
  436. package/dist/services/content-api/permissions/engine.mjs.map +1 -1
  437. package/dist/services/content-api/permissions/index.d.ts +6 -2
  438. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  439. package/dist/services/content-api/permissions/index.js +101 -81
  440. package/dist/services/content-api/permissions/index.js.map +1 -1
  441. package/dist/services/content-api/permissions/index.mjs +100 -81
  442. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  443. package/dist/services/content-api/permissions/providers/action.d.ts +3 -1
  444. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  445. package/dist/services/content-api/permissions/providers/action.js +17 -14
  446. package/dist/services/content-api/permissions/providers/action.js.map +1 -1
  447. package/dist/services/content-api/permissions/providers/action.mjs +16 -16
  448. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
  449. package/dist/services/content-api/permissions/providers/condition.d.ts +3 -1
  450. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  451. package/dist/services/content-api/permissions/providers/condition.js +17 -14
  452. package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
  453. package/dist/services/content-api/permissions/providers/condition.mjs +16 -16
  454. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
  455. package/dist/services/content-source-maps.d.ts +13 -0
  456. package/dist/services/content-source-maps.d.ts.map +1 -0
  457. package/dist/services/content-source-maps.js +108 -0
  458. package/dist/services/content-source-maps.js.map +1 -0
  459. package/dist/services/content-source-maps.mjs +106 -0
  460. package/dist/services/content-source-maps.mjs.map +1 -0
  461. package/dist/services/core-store.d.ts +2 -2
  462. package/dist/services/core-store.d.ts.map +1 -1
  463. package/dist/services/core-store.js +115 -95
  464. package/dist/services/core-store.js.map +1 -1
  465. package/dist/services/core-store.mjs +114 -97
  466. package/dist/services/core-store.mjs.map +1 -1
  467. package/dist/services/cron.d.ts +3 -3
  468. package/dist/services/cron.d.ts.map +1 -1
  469. package/dist/services/cron.js +74 -60
  470. package/dist/services/cron.js.map +1 -1
  471. package/dist/services/cron.mjs +73 -62
  472. package/dist/services/cron.mjs.map +1 -1
  473. package/dist/services/custom-fields.js +9 -7
  474. package/dist/services/custom-fields.js.map +1 -1
  475. package/dist/services/custom-fields.mjs +8 -9
  476. package/dist/services/custom-fields.mjs.map +1 -1
  477. package/dist/services/document-service/attributes/index.js +23 -18
  478. package/dist/services/document-service/attributes/index.js.map +1 -1
  479. package/dist/services/document-service/attributes/index.mjs +22 -19
  480. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  481. package/dist/services/document-service/attributes/transforms.js +16 -15
  482. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  483. package/dist/services/document-service/attributes/transforms.mjs +15 -15
  484. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  485. package/dist/services/document-service/common.d.ts +1 -1
  486. package/dist/services/document-service/common.d.ts.map +1 -1
  487. package/dist/services/document-service/common.js +5 -4
  488. package/dist/services/document-service/common.js.map +1 -1
  489. package/dist/services/document-service/common.mjs +4 -5
  490. package/dist/services/document-service/common.mjs.map +1 -1
  491. package/dist/services/document-service/components.d.ts +31 -1
  492. package/dist/services/document-service/components.d.ts.map +1 -1
  493. package/dist/services/document-service/components.js +363 -256
  494. package/dist/services/document-service/components.js.map +1 -1
  495. package/dist/services/document-service/components.mjs +359 -261
  496. package/dist/services/document-service/components.mjs.map +1 -1
  497. package/dist/services/document-service/draft-and-publish.d.ts +1 -1
  498. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  499. package/dist/services/document-service/draft-and-publish.js +88 -48
  500. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  501. package/dist/services/document-service/draft-and-publish.mjs +87 -54
  502. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  503. package/dist/services/document-service/entries.d.ts +2 -2
  504. package/dist/services/document-service/entries.d.ts.map +1 -1
  505. package/dist/services/document-service/entries.js +151 -92
  506. package/dist/services/document-service/entries.js.map +1 -1
  507. package/dist/services/document-service/entries.mjs +150 -93
  508. package/dist/services/document-service/entries.mjs.map +1 -1
  509. package/dist/services/document-service/events.d.ts +1 -1
  510. package/dist/services/document-service/events.d.ts.map +1 -1
  511. package/dist/services/document-service/events.js +52 -40
  512. package/dist/services/document-service/events.js.map +1 -1
  513. package/dist/services/document-service/events.mjs +51 -41
  514. package/dist/services/document-service/events.mjs.map +1 -1
  515. package/dist/services/document-service/first-published-at.d.ts +7 -0
  516. package/dist/services/document-service/first-published-at.d.ts.map +1 -0
  517. package/dist/services/document-service/first-published-at.js +31 -0
  518. package/dist/services/document-service/first-published-at.js.map +1 -0
  519. package/dist/services/document-service/first-published-at.mjs +28 -0
  520. package/dist/services/document-service/first-published-at.mjs.map +1 -0
  521. package/dist/services/document-service/index.d.ts +2 -1
  522. package/dist/services/document-service/index.d.ts.map +1 -1
  523. package/dist/services/document-service/index.js +53 -32
  524. package/dist/services/document-service/index.js.map +1 -1
  525. package/dist/services/document-service/index.mjs +52 -33
  526. package/dist/services/document-service/index.mjs.map +1 -1
  527. package/dist/services/document-service/internationalization.d.ts +6 -1
  528. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  529. package/dist/services/document-service/internationalization.js +94 -46
  530. package/dist/services/document-service/internationalization.js.map +1 -1
  531. package/dist/services/document-service/internationalization.mjs +92 -50
  532. package/dist/services/document-service/internationalization.mjs.map +1 -1
  533. package/dist/services/document-service/middlewares/errors.js +23 -19
  534. package/dist/services/document-service/middlewares/errors.js.map +1 -1
  535. package/dist/services/document-service/middlewares/errors.mjs +22 -20
  536. package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
  537. package/dist/services/document-service/middlewares/middleware-manager.js +46 -44
  538. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  539. package/dist/services/document-service/middlewares/middleware-manager.mjs +45 -45
  540. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  541. package/dist/services/document-service/params.js +11 -5
  542. package/dist/services/document-service/params.js.map +1 -1
  543. package/dist/services/document-service/params.mjs +10 -6
  544. package/dist/services/document-service/params.mjs.map +1 -1
  545. package/dist/services/document-service/repository.d.ts.map +1 -1
  546. package/dist/services/document-service/repository.js +363 -269
  547. package/dist/services/document-service/repository.js.map +1 -1
  548. package/dist/services/document-service/repository.mjs +362 -270
  549. package/dist/services/document-service/repository.mjs.map +1 -1
  550. package/dist/services/document-service/transform/data.js +22 -12
  551. package/dist/services/document-service/transform/data.js.map +1 -1
  552. package/dist/services/document-service/transform/data.mjs +21 -13
  553. package/dist/services/document-service/transform/data.mjs.map +1 -1
  554. package/dist/services/document-service/transform/fields.js +26 -17
  555. package/dist/services/document-service/transform/fields.js.map +1 -1
  556. package/dist/services/document-service/transform/fields.mjs +25 -18
  557. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  558. package/dist/services/document-service/transform/id-map.d.ts +1 -1
  559. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  560. package/dist/services/document-service/transform/id-map.js +116 -69
  561. package/dist/services/document-service/transform/id-map.js.map +1 -1
  562. package/dist/services/document-service/transform/id-map.mjs +115 -70
  563. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  564. package/dist/services/document-service/transform/id-transform.d.ts +1 -1
  565. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  566. package/dist/services/document-service/transform/id-transform.js +37 -29
  567. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  568. package/dist/services/document-service/transform/id-transform.mjs +36 -30
  569. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  570. package/dist/services/document-service/transform/populate.js +23 -18
  571. package/dist/services/document-service/transform/populate.js.map +1 -1
  572. package/dist/services/document-service/transform/populate.mjs +22 -19
  573. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  574. package/dist/services/document-service/transform/query.js +11 -6
  575. package/dist/services/document-service/transform/query.js.map +1 -1
  576. package/dist/services/document-service/transform/query.mjs +10 -7
  577. package/dist/services/document-service/transform/query.mjs.map +1 -1
  578. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +1 -1
  579. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  580. package/dist/services/document-service/transform/relations/extract/data-ids.js +71 -48
  581. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  582. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +70 -49
  583. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  584. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  585. package/dist/services/document-service/transform/relations/transform/data-ids.js +97 -63
  586. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  587. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +96 -64
  588. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  589. package/dist/services/document-service/transform/relations/transform/default-locale.js +47 -29
  590. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  591. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +46 -30
  592. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  593. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  594. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  595. package/dist/services/document-service/transform/relations/utils/dp.js +52 -26
  596. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  597. package/dist/services/document-service/transform/relations/utils/dp.mjs +51 -27
  598. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  599. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +1 -1
  600. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  601. package/dist/services/document-service/transform/relations/utils/i18n.js +20 -18
  602. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  603. package/dist/services/document-service/transform/relations/utils/i18n.mjs +19 -21
  604. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  605. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  606. package/dist/services/document-service/transform/relations/utils/map-relation.js +116 -77
  607. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  608. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +115 -79
  609. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  610. package/dist/services/document-service/utils/bidirectional-relations.d.ts +95 -0
  611. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -0
  612. package/dist/services/document-service/utils/bidirectional-relations.js +148 -0
  613. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -0
  614. package/dist/services/document-service/utils/bidirectional-relations.mjs +145 -0
  615. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -0
  616. package/dist/services/document-service/utils/clean-component-join-table.d.ts +7 -0
  617. package/dist/services/document-service/utils/clean-component-join-table.d.ts.map +1 -0
  618. package/dist/services/document-service/utils/populate.d.ts +1 -1
  619. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  620. package/dist/services/document-service/utils/populate.js +67 -41
  621. package/dist/services/document-service/utils/populate.js.map +1 -1
  622. package/dist/services/document-service/utils/populate.mjs +66 -42
  623. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  624. package/dist/services/document-service/utils/unidirectional-relations.d.ts +53 -0
  625. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -0
  626. package/dist/services/document-service/utils/unidirectional-relations.js +131 -0
  627. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -0
  628. package/dist/services/document-service/utils/unidirectional-relations.mjs +128 -0
  629. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -0
  630. package/dist/services/entity-service/index.js +230 -161
  631. package/dist/services/entity-service/index.js.map +1 -1
  632. package/dist/services/entity-service/index.mjs +229 -160
  633. package/dist/services/entity-service/index.mjs.map +1 -1
  634. package/dist/services/entity-validator/blocks-validator.js +135 -103
  635. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  636. package/dist/services/entity-validator/blocks-validator.mjs +134 -104
  637. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  638. package/dist/services/entity-validator/index.d.ts +1 -1
  639. package/dist/services/entity-validator/index.d.ts.map +1 -1
  640. package/dist/services/entity-validator/index.js +370 -362
  641. package/dist/services/entity-validator/index.js.map +1 -1
  642. package/dist/services/entity-validator/index.mjs +366 -359
  643. package/dist/services/entity-validator/index.mjs.map +1 -1
  644. package/dist/services/entity-validator/validators.d.ts +1 -0
  645. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  646. package/dist/services/entity-validator/validators.js +270 -209
  647. package/dist/services/entity-validator/validators.js.map +1 -1
  648. package/dist/services/entity-validator/validators.mjs +269 -215
  649. package/dist/services/entity-validator/validators.mjs.map +1 -1
  650. package/dist/services/errors.js +65 -65
  651. package/dist/services/errors.js.map +1 -1
  652. package/dist/services/errors.mjs +64 -66
  653. package/dist/services/errors.mjs.map +1 -1
  654. package/dist/services/event-hub.js +82 -69
  655. package/dist/services/event-hub.js.map +1 -1
  656. package/dist/services/event-hub.mjs +81 -71
  657. package/dist/services/event-hub.mjs.map +1 -1
  658. package/dist/services/features.js +19 -14
  659. package/dist/services/features.js.map +1 -1
  660. package/dist/services/features.mjs +18 -15
  661. package/dist/services/features.mjs.map +1 -1
  662. package/dist/services/fs.js +41 -40
  663. package/dist/services/fs.js.map +1 -1
  664. package/dist/services/fs.mjs +40 -39
  665. package/dist/services/fs.mjs.map +1 -1
  666. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  667. package/dist/services/metrics/admin-user-hash.js +13 -11
  668. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  669. package/dist/services/metrics/admin-user-hash.mjs +12 -10
  670. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  671. package/dist/services/metrics/index.d.ts +1 -1
  672. package/dist/services/metrics/index.d.ts.map +1 -1
  673. package/dist/services/metrics/index.js +48 -40
  674. package/dist/services/metrics/index.js.map +1 -1
  675. package/dist/services/metrics/index.mjs +47 -42
  676. package/dist/services/metrics/index.mjs.map +1 -1
  677. package/dist/services/metrics/is-truthy.js +13 -6
  678. package/dist/services/metrics/is-truthy.js.map +1 -1
  679. package/dist/services/metrics/is-truthy.mjs +12 -6
  680. package/dist/services/metrics/is-truthy.mjs.map +1 -1
  681. package/dist/services/metrics/middleware.d.ts +2 -1
  682. package/dist/services/metrics/middleware.d.ts.map +1 -1
  683. package/dist/services/metrics/middleware.js +37 -22
  684. package/dist/services/metrics/middleware.js.map +1 -1
  685. package/dist/services/metrics/middleware.mjs +36 -24
  686. package/dist/services/metrics/middleware.mjs.map +1 -1
  687. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  688. package/dist/services/metrics/rate-limiter.js +24 -19
  689. package/dist/services/metrics/rate-limiter.js.map +1 -1
  690. package/dist/services/metrics/rate-limiter.mjs +23 -21
  691. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  692. package/dist/services/metrics/sender.d.ts.map +1 -1
  693. package/dist/services/metrics/sender.js +79 -69
  694. package/dist/services/metrics/sender.js.map +1 -1
  695. package/dist/services/metrics/sender.mjs +78 -64
  696. package/dist/services/metrics/sender.mjs.map +1 -1
  697. package/dist/services/query-params.js +13 -10
  698. package/dist/services/query-params.js.map +1 -1
  699. package/dist/services/query-params.mjs +12 -12
  700. package/dist/services/query-params.mjs.map +1 -1
  701. package/dist/services/reloader.js +35 -32
  702. package/dist/services/reloader.js.map +1 -1
  703. package/dist/services/reloader.mjs +34 -33
  704. package/dist/services/reloader.mjs.map +1 -1
  705. package/dist/services/request-context.js +11 -8
  706. package/dist/services/request-context.js.map +1 -1
  707. package/dist/services/request-context.mjs +10 -10
  708. package/dist/services/request-context.mjs.map +1 -1
  709. package/dist/services/server/admin-api.js +11 -10
  710. package/dist/services/server/admin-api.js.map +1 -1
  711. package/dist/services/server/admin-api.mjs +10 -11
  712. package/dist/services/server/admin-api.mjs.map +1 -1
  713. package/dist/services/server/api.js +33 -27
  714. package/dist/services/server/api.js.map +1 -1
  715. package/dist/services/server/api.mjs +32 -26
  716. package/dist/services/server/api.mjs.map +1 -1
  717. package/dist/services/server/compose-endpoint.js +116 -105
  718. package/dist/services/server/compose-endpoint.js.map +1 -1
  719. package/dist/services/server/compose-endpoint.mjs +115 -105
  720. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  721. package/dist/services/server/content-api.js +11 -9
  722. package/dist/services/server/content-api.js.map +1 -1
  723. package/dist/services/server/content-api.mjs +10 -10
  724. package/dist/services/server/content-api.mjs.map +1 -1
  725. package/dist/services/server/http-server.js +48 -44
  726. package/dist/services/server/http-server.js.map +1 -1
  727. package/dist/services/server/http-server.mjs +47 -43
  728. package/dist/services/server/http-server.mjs.map +1 -1
  729. package/dist/services/server/index.js +85 -82
  730. package/dist/services/server/index.js.map +1 -1
  731. package/dist/services/server/index.mjs +84 -81
  732. package/dist/services/server/index.mjs.map +1 -1
  733. package/dist/services/server/koa.js +49 -47
  734. package/dist/services/server/koa.js.map +1 -1
  735. package/dist/services/server/koa.mjs +48 -44
  736. package/dist/services/server/koa.mjs.map +1 -1
  737. package/dist/services/server/middleware.js +86 -82
  738. package/dist/services/server/middleware.js.map +1 -1
  739. package/dist/services/server/middleware.mjs +85 -82
  740. package/dist/services/server/middleware.mjs.map +1 -1
  741. package/dist/services/server/policy.js +24 -17
  742. package/dist/services/server/policy.js.map +1 -1
  743. package/dist/services/server/policy.mjs +23 -18
  744. package/dist/services/server/policy.mjs.map +1 -1
  745. package/dist/services/server/register-middlewares.js +68 -61
  746. package/dist/services/server/register-middlewares.js.map +1 -1
  747. package/dist/services/server/register-middlewares.mjs +67 -63
  748. package/dist/services/server/register-middlewares.mjs.map +1 -1
  749. package/dist/services/server/register-routes.js +109 -66
  750. package/dist/services/server/register-routes.js.map +1 -1
  751. package/dist/services/server/register-routes.mjs +108 -66
  752. package/dist/services/server/register-routes.mjs.map +1 -1
  753. package/dist/services/server/routing.d.ts +10 -0
  754. package/dist/services/server/routing.d.ts.map +1 -1
  755. package/dist/services/server/routing.js +100 -81
  756. package/dist/services/server/routing.js.map +1 -1
  757. package/dist/services/server/routing.mjs +99 -81
  758. package/dist/services/server/routing.mjs.map +1 -1
  759. package/dist/services/session-manager.d.ts +167 -0
  760. package/dist/services/session-manager.d.ts.map +1 -0
  761. package/dist/services/session-manager.js +529 -0
  762. package/dist/services/session-manager.js.map +1 -0
  763. package/dist/services/session-manager.mjs +526 -0
  764. package/dist/services/session-manager.mjs.map +1 -0
  765. package/dist/services/utils/conditional-fields.d.ts +3 -0
  766. package/dist/services/utils/conditional-fields.d.ts.map +1 -0
  767. package/dist/services/utils/conditional-fields.js +22 -0
  768. package/dist/services/utils/conditional-fields.js.map +1 -0
  769. package/dist/services/utils/conditional-fields.mjs +20 -0
  770. package/dist/services/utils/conditional-fields.mjs.map +1 -0
  771. package/dist/services/utils/dynamic-zones.js +13 -14
  772. package/dist/services/utils/dynamic-zones.js.map +1 -1
  773. package/dist/services/utils/dynamic-zones.mjs +12 -16
  774. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  775. package/dist/services/webhook-runner.js +124 -122
  776. package/dist/services/webhook-runner.js.map +1 -1
  777. package/dist/services/webhook-runner.mjs +123 -121
  778. package/dist/services/webhook-runner.mjs.map +1 -1
  779. package/dist/services/webhook-store.js +132 -99
  780. package/dist/services/webhook-store.js.map +1 -1
  781. package/dist/services/webhook-store.mjs +131 -101
  782. package/dist/services/webhook-store.mjs.map +1 -1
  783. package/dist/services/worker-queue.js +44 -49
  784. package/dist/services/worker-queue.js.map +1 -1
  785. package/dist/services/worker-queue.mjs +43 -49
  786. package/dist/services/worker-queue.mjs.map +1 -1
  787. package/dist/utils/convert-custom-field-type.js +17 -20
  788. package/dist/utils/convert-custom-field-type.js.map +1 -1
  789. package/dist/utils/convert-custom-field-type.mjs +16 -21
  790. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  791. package/dist/utils/cron.js +64 -30
  792. package/dist/utils/cron.js.map +1 -1
  793. package/dist/utils/cron.mjs +63 -31
  794. package/dist/utils/cron.mjs.map +1 -1
  795. package/dist/utils/fetch.d.ts +5 -1
  796. package/dist/utils/fetch.d.ts.map +1 -1
  797. package/dist/utils/fetch.js +28 -18
  798. package/dist/utils/fetch.js.map +1 -1
  799. package/dist/utils/fetch.mjs +27 -19
  800. package/dist/utils/fetch.mjs.map +1 -1
  801. package/dist/utils/filepath-to-prop-path.js +20 -28
  802. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  803. package/dist/utils/filepath-to-prop-path.mjs +19 -26
  804. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  805. package/dist/utils/is-initialized.js +21 -12
  806. package/dist/utils/is-initialized.js.map +1 -1
  807. package/dist/utils/is-initialized.mjs +20 -13
  808. package/dist/utils/is-initialized.mjs.map +1 -1
  809. package/dist/utils/lifecycles.js +6 -5
  810. package/dist/utils/lifecycles.js.map +1 -1
  811. package/dist/utils/lifecycles.mjs +5 -6
  812. package/dist/utils/lifecycles.mjs.map +1 -1
  813. package/dist/utils/load-config-file.js +40 -38
  814. package/dist/utils/load-config-file.js.map +1 -1
  815. package/dist/utils/load-config-file.mjs +39 -36
  816. package/dist/utils/load-config-file.mjs.map +1 -1
  817. package/dist/utils/load-files.js +40 -35
  818. package/dist/utils/load-files.js.map +1 -1
  819. package/dist/utils/load-files.mjs +39 -32
  820. package/dist/utils/load-files.mjs.map +1 -1
  821. package/dist/utils/open-browser.js +8 -8
  822. package/dist/utils/open-browser.js.map +1 -1
  823. package/dist/utils/open-browser.mjs +7 -7
  824. package/dist/utils/open-browser.mjs.map +1 -1
  825. package/dist/utils/resolve-working-dirs.js +23 -10
  826. package/dist/utils/resolve-working-dirs.js.map +1 -1
  827. package/dist/utils/resolve-working-dirs.mjs +22 -9
  828. package/dist/utils/resolve-working-dirs.mjs.map +1 -1
  829. package/dist/utils/signals.js +20 -14
  830. package/dist/utils/signals.js.map +1 -1
  831. package/dist/utils/signals.mjs +19 -15
  832. package/dist/utils/signals.mjs.map +1 -1
  833. package/dist/utils/startup-logger.d.ts.map +1 -1
  834. package/dist/utils/startup-logger.js +107 -78
  835. package/dist/utils/startup-logger.js.map +1 -1
  836. package/dist/utils/startup-logger.mjs +106 -75
  837. package/dist/utils/startup-logger.mjs.map +1 -1
  838. package/dist/utils/transform-content-types-to-models.d.ts +550 -21
  839. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  840. package/dist/utils/transform-content-types-to-models.js +350 -261
  841. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  842. package/dist/utils/transform-content-types-to-models.mjs +349 -269
  843. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  844. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  845. package/dist/utils/update-notifier/index.js +68 -73
  846. package/dist/utils/update-notifier/index.js.map +1 -1
  847. package/dist/utils/update-notifier/index.mjs +67 -67
  848. package/dist/utils/update-notifier/index.mjs.map +1 -1
  849. package/package.json +36 -32
@@ -1,109 +1,119 @@
1
- import { cloneDeep } from "lodash/fp";
2
- import _ from "lodash";
3
- import { contentTypes, yup } from "@strapi/utils";
4
- import { validateContentTypeDefinition } from "./validator.mjs";
5
- const {
6
- CREATED_AT_ATTRIBUTE,
7
- UPDATED_AT_ATTRIBUTE,
8
- PUBLISHED_AT_ATTRIBUTE,
9
- CREATED_BY_ATTRIBUTE,
10
- UPDATED_BY_ATTRIBUTE
11
- } = contentTypes.constants;
12
- const createContentType = (uid, definition) => {
13
- try {
14
- validateContentTypeDefinition(definition);
15
- } catch (e) {
16
- if (e instanceof yup.ValidationError) {
17
- throw new Error(`Content Type Definition is invalid for ${uid}'.
18
- ${e.errors}`);
1
+ import { cloneDeep } from 'lodash/fp';
2
+ import _ from 'lodash';
3
+ import { contentTypes, yup } from '@strapi/utils';
4
+ import { validateContentTypeDefinition } from './validator.mjs';
5
+
6
+ const { CREATED_AT_ATTRIBUTE, UPDATED_AT_ATTRIBUTE, PUBLISHED_AT_ATTRIBUTE, FIRST_PUBLISHED_AT_ATTRIBUTE, CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE } = contentTypes.constants;
7
+ const createContentType = (uid, definition)=>{
8
+ try {
9
+ validateContentTypeDefinition(definition);
10
+ } catch (e) {
11
+ if (e instanceof yup.ValidationError) {
12
+ throw new Error(`Content Type Definition is invalid for ${uid}'.\n${e.errors}`);
13
+ }
14
+ throw e;
19
15
  }
20
- throw e;
21
- }
22
- const { schema, actions, lifecycles } = cloneDeep(definition);
23
- Object.assign(schema, {
24
- uid,
25
- modelType: "contentType",
26
- kind: schema.kind || "collectionType",
27
- __schema__: pickSchema(definition.schema),
28
- modelName: definition.schema.info.singularName,
29
- actions,
30
- lifecycles
31
- });
32
- addTimestamps(schema);
33
- addDraftAndPublish(schema);
34
- addCreatorFields(schema);
35
- return schema;
16
+ const { schema, actions, lifecycles } = cloneDeep(definition);
17
+ // general info
18
+ Object.assign(schema, {
19
+ uid,
20
+ modelType: 'contentType',
21
+ kind: schema.kind || 'collectionType',
22
+ __schema__: pickSchema(definition.schema),
23
+ modelName: definition.schema.info.singularName,
24
+ actions,
25
+ lifecycles
26
+ });
27
+ addTimestamps(schema);
28
+ // Published at is added regardless of draft and publish being enabled
29
+ // In case it is not enabled, value will be always published, and it will not contain a draft
30
+ addDraftAndPublish(schema);
31
+ addCreatorFields(schema);
32
+ addFirstPublishedAt(schema);
33
+ return schema;
36
34
  };
37
- const addTimestamps = (schema) => {
38
- Object.assign(schema.attributes, {
39
- [CREATED_AT_ATTRIBUTE]: {
40
- type: "datetime"
41
- },
42
- // TODO: handle on edit set to new date
43
- [UPDATED_AT_ATTRIBUTE]: {
44
- type: "datetime"
45
- }
46
- });
35
+ const addTimestamps = (schema)=>{
36
+ // attributes
37
+ Object.assign(schema.attributes, {
38
+ [CREATED_AT_ATTRIBUTE]: {
39
+ type: 'datetime'
40
+ },
41
+ // TODO: handle on edit set to new date
42
+ [UPDATED_AT_ATTRIBUTE]: {
43
+ type: 'datetime'
44
+ }
45
+ });
47
46
  };
48
- const addDraftAndPublish = (schema) => {
49
- if (!_.has(schema, "options.draftAndPublish")) {
50
- _.set(schema, "options.draftAndPublish", false);
51
- }
52
- schema.attributes[PUBLISHED_AT_ATTRIBUTE] = {
53
- type: "datetime",
54
- configurable: false,
55
- writable: true,
56
- visible: false,
57
- default() {
58
- return /* @__PURE__ */ new Date();
47
+ const addDraftAndPublish = (schema)=>{
48
+ if (!_.has(schema, 'options.draftAndPublish')) {
49
+ _.set(schema, 'options.draftAndPublish', false); // Disabled by default
59
50
  }
60
- };
51
+ schema.attributes[PUBLISHED_AT_ATTRIBUTE] = {
52
+ type: 'datetime',
53
+ configurable: false,
54
+ writable: true,
55
+ visible: false,
56
+ default () {
57
+ return new Date();
58
+ }
59
+ };
61
60
  };
62
- const addCreatorFields = (schema) => {
63
- const isPrivate = !_.get(schema, "options.populateCreatorFields", false);
64
- schema.attributes[CREATED_BY_ATTRIBUTE] = {
65
- type: "relation",
66
- relation: "oneToOne",
67
- target: "admin::user",
68
- configurable: false,
69
- writable: false,
70
- visible: false,
71
- useJoinTable: false,
72
- private: isPrivate
73
- };
74
- schema.attributes[UPDATED_BY_ATTRIBUTE] = {
75
- type: "relation",
76
- relation: "oneToOne",
77
- target: "admin::user",
78
- configurable: false,
79
- writable: false,
80
- visible: false,
81
- useJoinTable: false,
82
- private: isPrivate
83
- };
61
+ const addFirstPublishedAt = (schema)=>{
62
+ const isEnabled = contentTypes.hasFirstPublishedAtField(schema);
63
+ // Note: As an expertimental feature, we are okay if this data is deleted if this feature is
64
+ // switched off. Once "preserve_attributes" come into play, this will be updated.
65
+ if (isEnabled) {
66
+ strapi.log.warn(`Experimental feature enabled: firstPublishedAt on ${schema.collectionName}`);
67
+ schema.attributes[FIRST_PUBLISHED_AT_ATTRIBUTE] = {
68
+ type: 'datetime',
69
+ configurable: false,
70
+ writable: true,
71
+ visible: false,
72
+ private: !isEnabled
73
+ };
74
+ }
84
75
  };
85
- const getGlobalId = (schema, prefix) => {
86
- const modelName = schema.info.singularName;
87
- const globalId = prefix ? `${prefix}-${modelName}` : modelName;
88
- return schema.globalId || _.upperFirst(_.camelCase(globalId));
76
+ const addCreatorFields = (schema)=>{
77
+ const isPrivate = !_.get(schema, 'options.populateCreatorFields', false);
78
+ schema.attributes[CREATED_BY_ATTRIBUTE] = {
79
+ type: 'relation',
80
+ relation: 'oneToOne',
81
+ target: 'admin::user',
82
+ configurable: false,
83
+ writable: false,
84
+ visible: false,
85
+ useJoinTable: false,
86
+ private: isPrivate
87
+ };
88
+ schema.attributes[UPDATED_BY_ATTRIBUTE] = {
89
+ type: 'relation',
90
+ relation: 'oneToOne',
91
+ target: 'admin::user',
92
+ configurable: false,
93
+ writable: false,
94
+ visible: false,
95
+ useJoinTable: false,
96
+ private: isPrivate
97
+ };
89
98
  };
90
- const pickSchema = (model) => {
91
- const schema = _.cloneDeep(
92
- _.pick(model, [
93
- "connection",
94
- "collectionName",
95
- "info",
96
- "options",
97
- "pluginOptions",
98
- "attributes",
99
- "kind"
100
- ])
101
- );
102
- schema.kind = model.kind || "collectionType";
103
- return schema;
99
+ const getGlobalId = (schema, prefix)=>{
100
+ const modelName = schema.info.singularName;
101
+ const globalId = prefix ? `${prefix}-${modelName}` : modelName;
102
+ return schema.globalId || _.upperFirst(_.camelCase(globalId));
104
103
  };
105
- export {
106
- createContentType,
107
- getGlobalId
104
+ const pickSchema = (model)=>{
105
+ const schema = _.cloneDeep(_.pick(model, [
106
+ 'connection',
107
+ 'collectionName',
108
+ 'info',
109
+ 'options',
110
+ 'pluginOptions',
111
+ 'attributes',
112
+ 'kind'
113
+ ]));
114
+ schema.kind = model.kind || 'collectionType';
115
+ return schema;
108
116
  };
117
+
118
+ export { createContentType, getGlobalId };
109
119
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/domain/content-type/index.ts"],"sourcesContent":["import { cloneDeep } from 'lodash/fp';\nimport _ from 'lodash';\nimport { yup, contentTypes as contentTypesUtils } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\nimport { validateContentTypeDefinition } from './validator';\n\nexport type ContentTypeDefinition = {\n schema: Schema.ContentType;\n actions: Record<string, unknown>;\n lifecycles: Record<string, unknown>;\n};\n\nconst {\n CREATED_AT_ATTRIBUTE,\n UPDATED_AT_ATTRIBUTE,\n PUBLISHED_AT_ATTRIBUTE,\n CREATED_BY_ATTRIBUTE,\n UPDATED_BY_ATTRIBUTE,\n} = contentTypesUtils.constants;\n\nconst createContentType = (uid: string, definition: ContentTypeDefinition) => {\n try {\n validateContentTypeDefinition(definition);\n } catch (e) {\n if (e instanceof yup.ValidationError) {\n throw new Error(`Content Type Definition is invalid for ${uid}'.\\n${e.errors}`);\n }\n\n throw e;\n }\n\n const { schema, actions, lifecycles } = cloneDeep(definition);\n\n // general info\n Object.assign(schema, {\n uid,\n modelType: 'contentType',\n kind: schema.kind || 'collectionType',\n __schema__: pickSchema(definition.schema),\n modelName: definition.schema.info.singularName,\n actions,\n lifecycles,\n });\n\n addTimestamps(schema);\n\n // Published at is added regardless of draft and publish being enabled\n // In case it is not enabled, value will be always published, and it will not contain a draft\n addDraftAndPublish(schema);\n\n addCreatorFields(schema);\n\n return schema;\n};\n\nconst addTimestamps = (schema: Schema.ContentType) => {\n // attributes\n Object.assign(schema.attributes, {\n [CREATED_AT_ATTRIBUTE]: {\n type: 'datetime',\n },\n // TODO: handle on edit set to new date\n [UPDATED_AT_ATTRIBUTE]: {\n type: 'datetime',\n },\n });\n};\n\nconst addDraftAndPublish = (schema: Schema.ContentType) => {\n if (!_.has(schema, 'options.draftAndPublish')) {\n _.set(schema, 'options.draftAndPublish', false); // Disabled by default\n }\n\n schema.attributes[PUBLISHED_AT_ATTRIBUTE] = {\n type: 'datetime',\n configurable: false,\n writable: true,\n visible: false,\n default() {\n return new Date();\n },\n };\n};\n\nconst addCreatorFields = (schema: Schema.ContentType) => {\n const isPrivate = !_.get(schema, 'options.populateCreatorFields', false);\n\n schema.attributes[CREATED_BY_ATTRIBUTE] = {\n type: 'relation',\n relation: 'oneToOne',\n target: 'admin::user',\n configurable: false,\n writable: false,\n visible: false,\n useJoinTable: false,\n private: isPrivate,\n };\n\n schema.attributes[UPDATED_BY_ATTRIBUTE] = {\n type: 'relation',\n relation: 'oneToOne',\n target: 'admin::user',\n configurable: false,\n writable: false,\n visible: false,\n useJoinTable: false,\n private: isPrivate,\n };\n};\n\nconst getGlobalId = (schema: Schema.ContentType, prefix?: string) => {\n const modelName = schema.info.singularName;\n const globalId = prefix ? `${prefix}-${modelName}` : modelName;\n\n return schema.globalId || _.upperFirst(_.camelCase(globalId));\n};\n\nconst pickSchema = (model: Schema.ContentType) => {\n const schema = _.cloneDeep(\n _.pick(model, [\n 'connection',\n 'collectionName',\n 'info',\n 'options',\n 'pluginOptions',\n 'attributes',\n 'kind',\n ])\n );\n\n schema.kind = model.kind || 'collectionType';\n return schema;\n};\n\nexport { createContentType, getGlobalId };\n"],"names":["contentTypesUtils"],"mappings":";;;;AAYA,MAAM;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAIA,aAAkB;AAEhB,MAAA,oBAAoB,CAAC,KAAa,eAAsC;AACxE,MAAA;AACF,kCAA8B,UAAU;AAAA,WACjC,GAAG;AACN,QAAA,aAAa,IAAI,iBAAiB;AAC9B,YAAA,IAAI,MAAM,0CAA0C,GAAG;AAAA,EAAO,EAAE,MAAM,EAAE;AAAA,IAChF;AAEM,UAAA;AAAA,EACR;AAEA,QAAM,EAAE,QAAQ,SAAS,WAAW,IAAI,UAAU,UAAU;AAG5D,SAAO,OAAO,QAAQ;AAAA,IACpB;AAAA,IACA,WAAW;AAAA,IACX,MAAM,OAAO,QAAQ;AAAA,IACrB,YAAY,WAAW,WAAW,MAAM;AAAA,IACxC,WAAW,WAAW,OAAO,KAAK;AAAA,IAClC;AAAA,IACA;AAAA,EAAA,CACD;AAED,gBAAc,MAAM;AAIpB,qBAAmB,MAAM;AAEzB,mBAAiB,MAAM;AAEhB,SAAA;AACT;AAEA,MAAM,gBAAgB,CAAC,WAA+B;AAE7C,SAAA,OAAO,OAAO,YAAY;AAAA,IAC/B,CAAC,oBAAoB,GAAG;AAAA,MACtB,MAAM;AAAA,IACR;AAAA;AAAA,IAEA,CAAC,oBAAoB,GAAG;AAAA,MACtB,MAAM;AAAA,IACR;AAAA,EAAA,CACD;AACH;AAEA,MAAM,qBAAqB,CAAC,WAA+B;AACzD,MAAI,CAAC,EAAE,IAAI,QAAQ,yBAAyB,GAAG;AAC3C,MAAA,IAAI,QAAQ,2BAA2B,KAAK;AAAA,EAChD;AAEO,SAAA,WAAW,sBAAsB,IAAI;AAAA,IAC1C,MAAM;AAAA,IACN,cAAc;AAAA,IACd,UAAU;AAAA,IACV,SAAS;AAAA,IACT,UAAU;AACR,iCAAW,KAAK;AAAA,IAClB;AAAA,EAAA;AAEJ;AAEA,MAAM,mBAAmB,CAAC,WAA+B;AACvD,QAAM,YAAY,CAAC,EAAE,IAAI,QAAQ,iCAAiC,KAAK;AAEhE,SAAA,WAAW,oBAAoB,IAAI;AAAA,IACxC,MAAM;AAAA,IACN,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,UAAU;AAAA,IACV,SAAS;AAAA,IACT,cAAc;AAAA,IACd,SAAS;AAAA,EAAA;AAGJ,SAAA,WAAW,oBAAoB,IAAI;AAAA,IACxC,MAAM;AAAA,IACN,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,UAAU;AAAA,IACV,SAAS;AAAA,IACT,cAAc;AAAA,IACd,SAAS;AAAA,EAAA;AAEb;AAEM,MAAA,cAAc,CAAC,QAA4B,WAAoB;AAC7D,QAAA,YAAY,OAAO,KAAK;AAC9B,QAAM,WAAW,SAAS,GAAG,MAAM,IAAI,SAAS,KAAK;AAErD,SAAO,OAAO,YAAY,EAAE,WAAW,EAAE,UAAU,QAAQ,CAAC;AAC9D;AAEA,MAAM,aAAa,CAAC,UAA8B;AAChD,QAAM,SAAS,EAAE;AAAA,IACf,EAAE,KAAK,OAAO;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EAAA;AAGI,SAAA,OAAO,MAAM,QAAQ;AACrB,SAAA;AACT;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/domain/content-type/index.ts"],"sourcesContent":["import { cloneDeep } from 'lodash/fp';\nimport _ from 'lodash';\nimport { yup, contentTypes as contentTypesUtils } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\nimport { validateContentTypeDefinition } from './validator';\n\nexport type ContentTypeDefinition = {\n schema: Schema.ContentType;\n actions: Record<string, unknown>;\n lifecycles: Record<string, unknown>;\n};\n\nconst {\n CREATED_AT_ATTRIBUTE,\n UPDATED_AT_ATTRIBUTE,\n PUBLISHED_AT_ATTRIBUTE,\n FIRST_PUBLISHED_AT_ATTRIBUTE,\n CREATED_BY_ATTRIBUTE,\n UPDATED_BY_ATTRIBUTE,\n} = contentTypesUtils.constants;\n\nconst createContentType = (uid: string, definition: ContentTypeDefinition) => {\n try {\n validateContentTypeDefinition(definition);\n } catch (e) {\n if (e instanceof yup.ValidationError) {\n throw new Error(`Content Type Definition is invalid for ${uid}'.\\n${e.errors}`);\n }\n\n throw e;\n }\n\n const { schema, actions, lifecycles } = cloneDeep(definition);\n\n // general info\n Object.assign(schema, {\n uid,\n modelType: 'contentType',\n kind: schema.kind || 'collectionType',\n __schema__: pickSchema(definition.schema),\n modelName: definition.schema.info.singularName,\n actions,\n lifecycles,\n });\n\n addTimestamps(schema);\n\n // Published at is added regardless of draft and publish being enabled\n // In case it is not enabled, value will be always published, and it will not contain a draft\n addDraftAndPublish(schema);\n\n addCreatorFields(schema);\n\n addFirstPublishedAt(schema);\n\n return schema;\n};\n\nconst addTimestamps = (schema: Schema.ContentType) => {\n // attributes\n Object.assign(schema.attributes, {\n [CREATED_AT_ATTRIBUTE]: {\n type: 'datetime',\n },\n // TODO: handle on edit set to new date\n [UPDATED_AT_ATTRIBUTE]: {\n type: 'datetime',\n },\n });\n};\n\nconst addDraftAndPublish = (schema: Schema.ContentType) => {\n if (!_.has(schema, 'options.draftAndPublish')) {\n _.set(schema, 'options.draftAndPublish', false); // Disabled by default\n }\n\n schema.attributes[PUBLISHED_AT_ATTRIBUTE] = {\n type: 'datetime',\n configurable: false,\n writable: true,\n visible: false,\n default() {\n return new Date();\n },\n };\n};\n\nconst addFirstPublishedAt = (schema: Schema.ContentType) => {\n const isEnabled = contentTypesUtils.hasFirstPublishedAtField(schema);\n\n // Note: As an expertimental feature, we are okay if this data is deleted if this feature is\n // switched off. Once \"preserve_attributes\" come into play, this will be updated.\n if (isEnabled) {\n strapi.log.warn(`Experimental feature enabled: firstPublishedAt on ${schema.collectionName}`);\n schema.attributes[FIRST_PUBLISHED_AT_ATTRIBUTE] = {\n type: 'datetime',\n configurable: false,\n writable: true,\n visible: false,\n private: !isEnabled,\n };\n }\n};\n\nconst addCreatorFields = (schema: Schema.ContentType) => {\n const isPrivate = !_.get(schema, 'options.populateCreatorFields', false);\n\n schema.attributes[CREATED_BY_ATTRIBUTE] = {\n type: 'relation',\n relation: 'oneToOne',\n target: 'admin::user',\n configurable: false,\n writable: false,\n visible: false,\n useJoinTable: false,\n private: isPrivate,\n };\n\n schema.attributes[UPDATED_BY_ATTRIBUTE] = {\n type: 'relation',\n relation: 'oneToOne',\n target: 'admin::user',\n configurable: false,\n writable: false,\n visible: false,\n useJoinTable: false,\n private: isPrivate,\n };\n};\n\nconst getGlobalId = (schema: Schema.ContentType, prefix?: string) => {\n const modelName = schema.info.singularName;\n const globalId = prefix ? `${prefix}-${modelName}` : modelName;\n\n return schema.globalId || _.upperFirst(_.camelCase(globalId));\n};\n\nconst pickSchema = (model: Schema.ContentType) => {\n const schema = _.cloneDeep(\n _.pick(model, [\n 'connection',\n 'collectionName',\n 'info',\n 'options',\n 'pluginOptions',\n 'attributes',\n 'kind',\n ])\n );\n\n schema.kind = model.kind || 'collectionType';\n return schema;\n};\n\nexport { createContentType, getGlobalId };\n"],"names":["CREATED_AT_ATTRIBUTE","UPDATED_AT_ATTRIBUTE","PUBLISHED_AT_ATTRIBUTE","FIRST_PUBLISHED_AT_ATTRIBUTE","CREATED_BY_ATTRIBUTE","UPDATED_BY_ATTRIBUTE","contentTypesUtils","constants","createContentType","uid","definition","validateContentTypeDefinition","e","yup","ValidationError","Error","errors","schema","actions","lifecycles","cloneDeep","Object","assign","modelType","kind","__schema__","pickSchema","modelName","info","singularName","addTimestamps","addDraftAndPublish","addCreatorFields","addFirstPublishedAt","attributes","type","_","has","set","configurable","writable","visible","default","Date","isEnabled","hasFirstPublishedAtField","strapi","log","warn","collectionName","private","isPrivate","get","relation","target","useJoinTable","getGlobalId","prefix","globalId","upperFirst","camelCase","model","pick"],"mappings":"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"}
@@ -1,77 +1,92 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const _ = require("lodash");
4
- const strapiUtils = require("@strapi/utils");
5
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
6
- const ___default = /* @__PURE__ */ _interopDefault(_);
1
+ 'use strict';
2
+
3
+ var _ = require('lodash');
4
+ var strapiUtils = require('@strapi/utils');
5
+
7
6
  const LIFECYCLES = [
8
- "beforeCreate",
9
- "afterCreate",
10
- "beforeFindOne",
11
- "afterFindOne",
12
- "beforeFindMany",
13
- "afterFindMany",
14
- "beforeCount",
15
- "afterCount",
16
- "beforeCreateMany",
17
- "afterCreateMany",
18
- "beforeUpdate",
19
- "afterUpdate",
20
- "beforeUpdateMany",
21
- "afterUpdateMany",
22
- "beforeDelete",
23
- "afterDelete",
24
- "beforeDeleteMany",
25
- "afterDeleteMany"
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'
26
25
  ];
27
- const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;
28
- const lifecyclesShape = ___default.default.mapValues(___default.default.keyBy(LIFECYCLES), () => strapiUtils.yup.mixed().nullable().isFunction());
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());
29
39
  const contentTypeSchemaValidator = strapiUtils.yup.object().shape({
30
- schema: strapiUtils.yup.object().shape({
31
- info: strapiUtils.yup.object().shape({
32
- displayName: strapiUtils.yup.string().required(),
33
- singularName: strapiUtils.yup.string().isKebabCase().required(),
34
- pluralName: strapiUtils.yup.string().isKebabCase().required()
35
- }).required(),
36
- attributes: strapiUtils.yup.object().test({
37
- name: "valuesCollide",
38
- message: "Some values collide when normalized",
39
- test(attributes) {
40
- for (const attrName of Object.keys(attributes)) {
41
- const attr = attributes[attrName];
42
- if (attr.type === "enumeration") {
43
- const regressedValues = attr.enum.map(strapiUtils.strings.toRegressedEnumValue);
44
- if (!regressedValues.every((value) => GRAPHQL_ENUM_REGEX.test(value))) {
45
- const message = `Invalid enumeration value. Values should have at least one alphabetical character preceding the first occurence of a number. Update your enumeration '${attrName}'.`;
46
- return this.createError({ message });
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;
47
78
  }
48
- if (regressedValues.some((value) => value === "")) {
49
- return this.createError({
50
- message: `At least one value of the enumeration '${attrName}' appears to be empty. Only alphanumerical characters are taken into account.`
51
- });
52
- }
53
- const duplicates = ___default.default.uniq(
54
- regressedValues.filter(
55
- (value, index, values) => values.indexOf(value) !== index
56
- )
57
- );
58
- if (duplicates.length) {
59
- const message = `Some enumeration values of the field '${attrName}' collide when normalized: ${duplicates.join(
60
- ", "
61
- )}. Please modify your enumeration.`;
62
- return this.createError({ message });
63
- }
64
- }
65
- }
66
- return true;
67
- }
68
- })
69
- }),
70
- actions: strapiUtils.yup.object().onlyContainsFunctions(),
71
- lifecycles: strapiUtils.yup.object().shape(lifecyclesShape).noUnknown()
79
+ })
80
+ }),
81
+ actions: strapiUtils.yup.object().onlyContainsFunctions(),
82
+ lifecycles: strapiUtils.yup.object().shape(lifecyclesShape).noUnknown()
72
83
  });
73
- const validateContentTypeDefinition = (data) => {
74
- return contentTypeSchemaValidator.validateSync(data, { strict: true, abortEarly: false });
84
+ const validateContentTypeDefinition = (data)=>{
85
+ return contentTypeSchemaValidator.validateSync(data, {
86
+ strict: true,
87
+ abortEarly: false
88
+ });
75
89
  };
90
+
76
91
  exports.validateContentTypeDefinition = validateContentTypeDefinition;
77
92
  //# sourceMappingURL=validator.js.map
@@ -1 +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":["_","yup","strings"],"mappings":";;;;;;AAIA,MAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAcA,MAAM,qBAAqB;AAE3B,MAAM,kBAAkBA,WAAAA,QAAE,UAAUA,WAAA,QAAE,MAAM,UAAU,GAAG,MAAMC,YAAAA,IAAI,MAAM,EAAE,SAAS,EAAE,WAAY,CAAA;AAElG,MAAM,6BAA6BA,YAAA,IAAI,OAAO,EAAE,MAAM;AAAA,EACpD,QAAQA,YAAA,IAAI,OAAO,EAAE,MAAM;AAAA,IACzB,MAAMA,YAAA,IACH,OAAO,EACP,MAAM;AAAA,MACL,aAAaA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,MACnC,cAAcA,YAAAA,IAAI,OAAS,EAAA,YAAA,EAAc,SAAS;AAAA,MAClD,YAAYA,YAAAA,IAAI,OAAS,EAAA,YAAA,EAAc,SAAS;AAAA,IACjD,CAAA,EACA,SAAS;AAAA,IACZ,YAAYA,YAAA,IAAI,OAAO,EAAE,KAAK;AAAA,MAC5B,MAAM;AAAA,MACN,SAAS;AAAA,MACT,KAAK,YAA8C;AACjD,mBAAW,YAAY,OAAO,KAAK,UAAU,GAAG;AACxC,gBAAA,OAAO,WAAW,QAAQ;AAC5B,cAAA,KAAK,SAAS,eAAe;AAC/B,kBAAM,kBAAkB,KAAK,KAAK,IAAIC,YAAAA,QAAQ,oBAAoB;AAG9D,gBAAA,CAAC,gBAAgB,MAAM,CAAC,UAAkB,mBAAmB,KAAK,KAAK,CAAC,GAAG;AACvE,oBAAA,UAAU,yJAAyJ,QAAQ;AAEjL,qBAAO,KAAK,YAAY,EAAE,QAAS,CAAA;AAAA,YACrC;AAGA,gBAAI,gBAAgB,KAAK,CAAC,UAAkB,UAAU,EAAE,GAAG;AACzD,qBAAO,KAAK,YAAY;AAAA,gBACtB,SAAS,0CAA0C,QAAQ;AAAA,cAAA,CAC5D;AAAA,YACH;AAGA,kBAAM,aAAaF,WAAAA,QAAE;AAAA,cACnB,gBAAgB;AAAA,gBACd,CAAC,OAAe,OAAe,WAAqB,OAAO,QAAQ,KAAK,MAAM;AAAA,cAChF;AAAA,YAAA;AAGF,gBAAI,WAAW,QAAQ;AACrB,oBAAM,UAAU,yCAAyC,QAAQ,8BAA8B,WAAW;AAAA,gBACxG;AAAA,cACD,CAAA;AAED,qBAAO,KAAK,YAAY,EAAE,QAAS,CAAA;AAAA,YACrC;AAAA,UACF;AAAA,QACF;AAEO,eAAA;AAAA,MACT;AAAA,IAAA,CACD;AAAA,EAAA,CACF;AAAA,EACD,SAASC,YAAA,IAAI,OAAO,EAAE,sBAAsB;AAAA,EAC5C,YAAYA,YAAI,IAAA,OAAA,EAAS,MAAM,eAAe,EAAE,UAAU;AAC5D,CAAC;AAEK,MAAA,gCAAgC,CAAC,SAAkB;AAChD,SAAA,2BAA2B,aAAa,MAAM,EAAE,QAAQ,MAAM,YAAY,OAAO;AAC1F;;"}
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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"}
@@ -1,75 +1,90 @@
1
- import _ from "lodash";
2
- import { yup, strings } from "@strapi/utils";
1
+ import _ from 'lodash';
2
+ import { yup, strings } from '@strapi/utils';
3
+
3
4
  const LIFECYCLES = [
4
- "beforeCreate",
5
- "afterCreate",
6
- "beforeFindOne",
7
- "afterFindOne",
8
- "beforeFindMany",
9
- "afterFindMany",
10
- "beforeCount",
11
- "afterCount",
12
- "beforeCreateMany",
13
- "afterCreateMany",
14
- "beforeUpdate",
15
- "afterUpdate",
16
- "beforeUpdateMany",
17
- "afterUpdateMany",
18
- "beforeDelete",
19
- "afterDelete",
20
- "beforeDeleteMany",
21
- "afterDeleteMany"
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'
22
23
  ];
23
- const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;
24
- const lifecyclesShape = _.mapValues(_.keyBy(LIFECYCLES), () => yup.mixed().nullable().isFunction());
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());
25
37
  const contentTypeSchemaValidator = yup.object().shape({
26
- schema: yup.object().shape({
27
- info: yup.object().shape({
28
- displayName: yup.string().required(),
29
- singularName: yup.string().isKebabCase().required(),
30
- pluralName: yup.string().isKebabCase().required()
31
- }).required(),
32
- attributes: yup.object().test({
33
- name: "valuesCollide",
34
- message: "Some values collide when normalized",
35
- test(attributes) {
36
- for (const attrName of Object.keys(attributes)) {
37
- const attr = attributes[attrName];
38
- if (attr.type === "enumeration") {
39
- const regressedValues = attr.enum.map(strings.toRegressedEnumValue);
40
- if (!regressedValues.every((value) => GRAPHQL_ENUM_REGEX.test(value))) {
41
- const message = `Invalid enumeration value. Values should have at least one alphabetical character preceding the first occurence of a number. Update your enumeration '${attrName}'.`;
42
- return this.createError({ message });
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;
43
76
  }
44
- if (regressedValues.some((value) => value === "")) {
45
- return this.createError({
46
- message: `At least one value of the enumeration '${attrName}' appears to be empty. Only alphanumerical characters are taken into account.`
47
- });
48
- }
49
- const duplicates = _.uniq(
50
- regressedValues.filter(
51
- (value, index, values) => values.indexOf(value) !== index
52
- )
53
- );
54
- if (duplicates.length) {
55
- const message = `Some enumeration values of the field '${attrName}' collide when normalized: ${duplicates.join(
56
- ", "
57
- )}. Please modify your enumeration.`;
58
- return this.createError({ message });
59
- }
60
- }
61
- }
62
- return true;
63
- }
64
- })
65
- }),
66
- actions: yup.object().onlyContainsFunctions(),
67
- lifecycles: yup.object().shape(lifecyclesShape).noUnknown()
77
+ })
78
+ }),
79
+ actions: yup.object().onlyContainsFunctions(),
80
+ lifecycles: yup.object().shape(lifecyclesShape).noUnknown()
68
81
  });
69
- const validateContentTypeDefinition = (data) => {
70
- return contentTypeSchemaValidator.validateSync(data, { strict: true, abortEarly: false });
71
- };
72
- export {
73
- validateContentTypeDefinition
82
+ const validateContentTypeDefinition = (data)=>{
83
+ return contentTypeSchemaValidator.validateSync(data, {
84
+ strict: true,
85
+ abortEarly: false
86
+ });
74
87
  };
88
+
89
+ export { validateContentTypeDefinition };
75
90
  //# sourceMappingURL=validator.mjs.map