@strapi/core 0.0.0-experimental.d954d57341a6623992a0d211daaec8e245c3517d → 0.0.0-experimental.d9724d67b33363354d7171a9f2265e1c42485e13

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 (837) hide show
  1. package/LICENSE +18 -3
  2. package/dist/Strapi.d.ts +3 -1
  3. package/dist/Strapi.d.ts.map +1 -1
  4. package/dist/Strapi.js +440 -369
  5. package/dist/Strapi.js.map +1 -1
  6. package/dist/Strapi.mjs +429 -377
  7. package/dist/Strapi.mjs.map +1 -1
  8. package/dist/compile.js +23 -14
  9. package/dist/compile.js.map +1 -1
  10. package/dist/compile.mjs +22 -14
  11. package/dist/compile.mjs.map +1 -1
  12. package/dist/configuration/config-loader.js +110 -97
  13. package/dist/configuration/config-loader.js.map +1 -1
  14. package/dist/configuration/config-loader.mjs +109 -96
  15. package/dist/configuration/config-loader.mjs.map +1 -1
  16. package/dist/configuration/get-dirs.js +31 -29
  17. package/dist/configuration/get-dirs.js.map +1 -1
  18. package/dist/configuration/get-dirs.mjs +30 -30
  19. package/dist/configuration/get-dirs.mjs.map +1 -1
  20. package/dist/configuration/index.d.ts +1 -0
  21. package/dist/configuration/index.d.ts.map +1 -1
  22. package/dist/configuration/index.js +85 -73
  23. package/dist/configuration/index.js.map +1 -1
  24. package/dist/configuration/index.mjs +84 -69
  25. package/dist/configuration/index.mjs.map +1 -1
  26. package/dist/configuration/urls.d.ts.map +1 -1
  27. package/dist/configuration/urls.js +74 -61
  28. package/dist/configuration/urls.js.map +1 -1
  29. package/dist/configuration/urls.mjs +73 -62
  30. package/dist/configuration/urls.mjs.map +1 -1
  31. package/dist/container.js +27 -23
  32. package/dist/container.js.map +1 -1
  33. package/dist/container.mjs +26 -24
  34. package/dist/container.mjs.map +1 -1
  35. package/dist/core-api/controller/collection-type.js +77 -76
  36. package/dist/core-api/controller/collection-type.js.map +1 -1
  37. package/dist/core-api/controller/collection-type.mjs +76 -77
  38. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  39. package/dist/core-api/controller/index.d.ts.map +1 -1
  40. package/dist/core-api/controller/index.js +64 -48
  41. package/dist/core-api/controller/index.js.map +1 -1
  42. package/dist/core-api/controller/index.mjs +63 -49
  43. package/dist/core-api/controller/index.mjs.map +1 -1
  44. package/dist/core-api/controller/single-type.js +41 -40
  45. package/dist/core-api/controller/single-type.js.map +1 -1
  46. package/dist/core-api/controller/single-type.mjs +40 -41
  47. package/dist/core-api/controller/single-type.mjs.map +1 -1
  48. package/dist/core-api/controller/transform.d.ts +3 -2
  49. package/dist/core-api/controller/transform.d.ts.map +1 -1
  50. package/dist/core-api/controller/transform.js +83 -64
  51. package/dist/core-api/controller/transform.js.map +1 -1
  52. package/dist/core-api/controller/transform.mjs +82 -65
  53. package/dist/core-api/controller/transform.mjs.map +1 -1
  54. package/dist/core-api/routes/index.d.ts +4 -22
  55. package/dist/core-api/routes/index.d.ts.map +1 -1
  56. package/dist/core-api/routes/index.js +205 -61
  57. package/dist/core-api/routes/index.js.map +1 -1
  58. package/dist/core-api/routes/index.mjs +185 -62
  59. package/dist/core-api/routes/index.mjs.map +1 -1
  60. package/dist/core-api/routes/validation/attributes.d.ts +244 -0
  61. package/dist/core-api/routes/validation/attributes.d.ts.map +1 -0
  62. package/dist/core-api/routes/validation/attributes.js +560 -0
  63. package/dist/core-api/routes/validation/attributes.js.map +1 -0
  64. package/dist/core-api/routes/validation/attributes.mjs +521 -0
  65. package/dist/core-api/routes/validation/attributes.mjs.map +1 -0
  66. package/dist/core-api/routes/validation/common.d.ts +105 -0
  67. package/dist/core-api/routes/validation/common.d.ts.map +1 -0
  68. package/dist/core-api/routes/validation/common.js +116 -0
  69. package/dist/core-api/routes/validation/common.js.map +1 -0
  70. package/dist/core-api/routes/validation/common.mjs +95 -0
  71. package/dist/core-api/routes/validation/common.mjs.map +1 -0
  72. package/dist/core-api/routes/validation/component.d.ts +34 -0
  73. package/dist/core-api/routes/validation/component.d.ts.map +1 -0
  74. package/dist/core-api/routes/validation/component.js +45 -0
  75. package/dist/core-api/routes/validation/component.js.map +1 -0
  76. package/dist/core-api/routes/validation/component.mjs +43 -0
  77. package/dist/core-api/routes/validation/component.mjs.map +1 -0
  78. package/dist/core-api/routes/validation/constants.d.ts +8 -0
  79. package/dist/core-api/routes/validation/constants.d.ts.map +1 -0
  80. package/dist/core-api/routes/validation/constants.js +18 -0
  81. package/dist/core-api/routes/validation/constants.js.map +1 -0
  82. package/dist/core-api/routes/validation/constants.mjs +16 -0
  83. package/dist/core-api/routes/validation/constants.mjs.map +1 -0
  84. package/dist/core-api/routes/validation/content-type.d.ts +128 -0
  85. package/dist/core-api/routes/validation/content-type.d.ts.map +1 -0
  86. package/dist/core-api/routes/validation/content-type.js +201 -0
  87. package/dist/core-api/routes/validation/content-type.js.map +1 -0
  88. package/dist/core-api/routes/validation/content-type.mjs +180 -0
  89. package/dist/core-api/routes/validation/content-type.mjs.map +1 -0
  90. package/dist/core-api/routes/validation/index.d.ts +5 -0
  91. package/dist/core-api/routes/validation/index.d.ts.map +1 -0
  92. package/dist/core-api/routes/validation/mappers.d.ts +105 -0
  93. package/dist/core-api/routes/validation/mappers.d.ts.map +1 -0
  94. package/dist/core-api/routes/validation/mappers.js +273 -0
  95. package/dist/core-api/routes/validation/mappers.js.map +1 -0
  96. package/dist/core-api/routes/validation/mappers.mjs +249 -0
  97. package/dist/core-api/routes/validation/mappers.mjs.map +1 -0
  98. package/dist/core-api/routes/validation/utils.d.ts +47 -0
  99. package/dist/core-api/routes/validation/utils.d.ts.map +1 -0
  100. package/dist/core-api/routes/validation/utils.js +128 -0
  101. package/dist/core-api/routes/validation/utils.js.map +1 -0
  102. package/dist/core-api/routes/validation/utils.mjs +106 -0
  103. package/dist/core-api/routes/validation/utils.mjs.map +1 -0
  104. package/dist/core-api/service/collection-type.d.ts +2 -2
  105. package/dist/core-api/service/collection-type.js +73 -60
  106. package/dist/core-api/service/collection-type.js.map +1 -1
  107. package/dist/core-api/service/collection-type.mjs +72 -62
  108. package/dist/core-api/service/collection-type.mjs.map +1 -1
  109. package/dist/core-api/service/core-service.js +9 -8
  110. package/dist/core-api/service/core-service.js.map +1 -1
  111. package/dist/core-api/service/core-service.mjs +8 -9
  112. package/dist/core-api/service/core-service.mjs.map +1 -1
  113. package/dist/core-api/service/index.js +13 -13
  114. package/dist/core-api/service/index.js.map +1 -1
  115. package/dist/core-api/service/index.mjs +12 -14
  116. package/dist/core-api/service/index.mjs.map +1 -1
  117. package/dist/core-api/service/pagination.js +69 -43
  118. package/dist/core-api/service/pagination.js.map +1 -1
  119. package/dist/core-api/service/pagination.mjs +68 -47
  120. package/dist/core-api/service/pagination.mjs.map +1 -1
  121. package/dist/core-api/service/single-type.js +43 -39
  122. package/dist/core-api/service/single-type.js.map +1 -1
  123. package/dist/core-api/service/single-type.mjs +42 -41
  124. package/dist/core-api/service/single-type.mjs.map +1 -1
  125. package/dist/domain/content-type/index.d.ts.map +1 -1
  126. package/dist/domain/content-type/index.js +110 -99
  127. package/dist/domain/content-type/index.js.map +1 -1
  128. package/dist/domain/content-type/index.mjs +109 -99
  129. package/dist/domain/content-type/index.mjs.map +1 -1
  130. package/dist/domain/content-type/validator.js +84 -69
  131. package/dist/domain/content-type/validator.js.map +1 -1
  132. package/dist/domain/content-type/validator.mjs +83 -68
  133. package/dist/domain/content-type/validator.mjs.map +1 -1
  134. package/dist/domain/module/index.d.ts.map +1 -1
  135. package/dist/domain/module/index.js +112 -100
  136. package/dist/domain/module/index.js.map +1 -1
  137. package/dist/domain/module/index.mjs +111 -99
  138. package/dist/domain/module/index.mjs.map +1 -1
  139. package/dist/domain/module/validation.js +25 -20
  140. package/dist/domain/module/validation.js.map +1 -1
  141. package/dist/domain/module/validation.mjs +24 -21
  142. package/dist/domain/module/validation.mjs.map +1 -1
  143. package/dist/ee/index.d.ts +7 -0
  144. package/dist/ee/index.d.ts.map +1 -1
  145. package/dist/ee/index.js +197 -132
  146. package/dist/ee/index.js.map +1 -1
  147. package/dist/ee/index.mjs +196 -134
  148. package/dist/ee/index.mjs.map +1 -1
  149. package/dist/ee/license.d.ts +3 -1
  150. package/dist/ee/license.d.ts.map +1 -1
  151. package/dist/ee/license.js +105 -75
  152. package/dist/ee/license.js.map +1 -1
  153. package/dist/ee/license.mjs +103 -76
  154. package/dist/ee/license.mjs.map +1 -1
  155. package/dist/factories.d.ts +3 -1
  156. package/dist/factories.d.ts.map +1 -1
  157. package/dist/factories.js +80 -67
  158. package/dist/factories.js.map +1 -1
  159. package/dist/factories.mjs +77 -70
  160. package/dist/factories.mjs.map +1 -1
  161. package/dist/index.d.ts +14 -0
  162. package/dist/index.d.ts.map +1 -1
  163. package/dist/index.js +29 -26
  164. package/dist/index.js.map +1 -1
  165. package/dist/index.mjs +29 -29
  166. package/dist/index.mjs.map +1 -1
  167. package/dist/loaders/admin.d.ts.map +1 -1
  168. package/dist/loaders/admin.js +21 -20
  169. package/dist/loaders/admin.js.map +1 -1
  170. package/dist/loaders/admin.mjs +20 -20
  171. package/dist/loaders/admin.mjs.map +1 -1
  172. package/dist/loaders/apis.js +143 -120
  173. package/dist/loaders/apis.js.map +1 -1
  174. package/dist/loaders/apis.mjs +142 -119
  175. package/dist/loaders/apis.mjs.map +1 -1
  176. package/dist/loaders/components.js +33 -34
  177. package/dist/loaders/components.js.map +1 -1
  178. package/dist/loaders/components.mjs +32 -34
  179. package/dist/loaders/components.mjs.map +1 -1
  180. package/dist/loaders/index.js +22 -20
  181. package/dist/loaders/index.js.map +1 -1
  182. package/dist/loaders/index.mjs +21 -21
  183. package/dist/loaders/index.mjs.map +1 -1
  184. package/dist/loaders/middlewares.js +29 -25
  185. package/dist/loaders/middlewares.js.map +1 -1
  186. package/dist/loaders/middlewares.mjs +28 -25
  187. package/dist/loaders/middlewares.mjs.map +1 -1
  188. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  189. package/dist/loaders/plugins/get-enabled-plugins.js +125 -102
  190. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  191. package/dist/loaders/plugins/get-enabled-plugins.mjs +124 -101
  192. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  193. package/dist/loaders/plugins/get-user-plugins-config.js +25 -24
  194. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  195. package/dist/loaders/plugins/get-user-plugins-config.mjs +24 -23
  196. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  197. package/dist/loaders/plugins/index.d.ts.map +1 -1
  198. package/dist/loaders/plugins/index.js +141 -104
  199. package/dist/loaders/plugins/index.js.map +1 -1
  200. package/dist/loaders/plugins/index.mjs +121 -104
  201. package/dist/loaders/plugins/index.mjs.map +1 -1
  202. package/dist/loaders/policies.js +24 -20
  203. package/dist/loaders/policies.js.map +1 -1
  204. package/dist/loaders/policies.mjs +23 -20
  205. package/dist/loaders/policies.mjs.map +1 -1
  206. package/dist/loaders/sanitizers.js +10 -4
  207. package/dist/loaders/sanitizers.js.map +1 -1
  208. package/dist/loaders/sanitizers.mjs +9 -6
  209. package/dist/loaders/sanitizers.mjs.map +1 -1
  210. package/dist/loaders/src-index.js +35 -27
  211. package/dist/loaders/src-index.js.map +1 -1
  212. package/dist/loaders/src-index.mjs +34 -29
  213. package/dist/loaders/src-index.mjs.map +1 -1
  214. package/dist/loaders/validators.js +9 -4
  215. package/dist/loaders/validators.js.map +1 -1
  216. package/dist/loaders/validators.mjs +8 -6
  217. package/dist/loaders/validators.mjs.map +1 -1
  218. package/dist/middlewares/body.d.ts.map +1 -1
  219. package/dist/middlewares/body.js +58 -54
  220. package/dist/middlewares/body.js.map +1 -1
  221. package/dist/middlewares/body.mjs +57 -51
  222. package/dist/middlewares/body.mjs.map +1 -1
  223. package/dist/middlewares/compression.js +6 -6
  224. package/dist/middlewares/compression.js.map +1 -1
  225. package/dist/middlewares/compression.mjs +5 -5
  226. package/dist/middlewares/compression.mjs.map +1 -1
  227. package/dist/middlewares/cors.d.ts +9 -1
  228. package/dist/middlewares/cors.d.ts.map +1 -1
  229. package/dist/middlewares/cors.js +81 -44
  230. package/dist/middlewares/cors.js.map +1 -1
  231. package/dist/middlewares/cors.mjs +78 -42
  232. package/dist/middlewares/cors.mjs.map +1 -1
  233. package/dist/middlewares/errors.js +32 -30
  234. package/dist/middlewares/errors.js.map +1 -1
  235. package/dist/middlewares/errors.mjs +31 -31
  236. package/dist/middlewares/errors.mjs.map +1 -1
  237. package/dist/middlewares/favicon.js +27 -17
  238. package/dist/middlewares/favicon.js.map +1 -1
  239. package/dist/middlewares/favicon.mjs +26 -16
  240. package/dist/middlewares/favicon.mjs.map +1 -1
  241. package/dist/middlewares/index.js +32 -30
  242. package/dist/middlewares/index.js.map +1 -1
  243. package/dist/middlewares/index.mjs +31 -31
  244. package/dist/middlewares/index.mjs.map +1 -1
  245. package/dist/middlewares/ip.js +6 -6
  246. package/dist/middlewares/ip.js.map +1 -1
  247. package/dist/middlewares/ip.mjs +5 -5
  248. package/dist/middlewares/ip.mjs.map +1 -1
  249. package/dist/middlewares/logger.js +10 -9
  250. package/dist/middlewares/logger.js.map +1 -1
  251. package/dist/middlewares/logger.mjs +9 -10
  252. package/dist/middlewares/logger.mjs.map +1 -1
  253. package/dist/middlewares/powered-by.js +13 -9
  254. package/dist/middlewares/powered-by.js.map +1 -1
  255. package/dist/middlewares/powered-by.mjs +12 -10
  256. package/dist/middlewares/powered-by.mjs.map +1 -1
  257. package/dist/middlewares/public.js +33 -29
  258. package/dist/middlewares/public.js.map +1 -1
  259. package/dist/middlewares/public.mjs +32 -28
  260. package/dist/middlewares/public.mjs.map +1 -1
  261. package/dist/middlewares/query.d.ts.map +1 -1
  262. package/dist/middlewares/query.js +35 -32
  263. package/dist/middlewares/query.js.map +1 -1
  264. package/dist/middlewares/query.mjs +34 -31
  265. package/dist/middlewares/query.mjs.map +1 -1
  266. package/dist/middlewares/response-time.js +10 -9
  267. package/dist/middlewares/response-time.js.map +1 -1
  268. package/dist/middlewares/response-time.mjs +9 -10
  269. package/dist/middlewares/response-time.mjs.map +1 -1
  270. package/dist/middlewares/responses.js +14 -12
  271. package/dist/middlewares/responses.js.map +1 -1
  272. package/dist/middlewares/responses.mjs +13 -13
  273. package/dist/middlewares/responses.mjs.map +1 -1
  274. package/dist/middlewares/security.d.ts.map +1 -1
  275. package/dist/middlewares/security.js +110 -65
  276. package/dist/middlewares/security.js.map +1 -1
  277. package/dist/middlewares/security.mjs +108 -63
  278. package/dist/middlewares/security.mjs.map +1 -1
  279. package/dist/middlewares/session.js +26 -25
  280. package/dist/middlewares/session.js.map +1 -1
  281. package/dist/middlewares/session.mjs +25 -24
  282. package/dist/middlewares/session.mjs.map +1 -1
  283. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +14 -11
  284. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  285. package/dist/migrations/database/5.0.0-discard-drafts.js +153 -35
  286. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
  287. package/dist/migrations/database/5.0.0-discard-drafts.mjs +152 -37
  288. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
  289. package/dist/migrations/draft-publish.d.ts +2 -2
  290. package/dist/migrations/draft-publish.d.ts.map +1 -1
  291. package/dist/migrations/draft-publish.js +61 -34
  292. package/dist/migrations/draft-publish.js.map +1 -1
  293. package/dist/migrations/draft-publish.mjs +60 -36
  294. package/dist/migrations/draft-publish.mjs.map +1 -1
  295. package/dist/migrations/first-published-at.d.ts +4 -0
  296. package/dist/migrations/first-published-at.d.ts.map +1 -0
  297. package/dist/migrations/first-published-at.js +51 -0
  298. package/dist/migrations/first-published-at.js.map +1 -0
  299. package/dist/migrations/first-published-at.mjs +49 -0
  300. package/dist/migrations/first-published-at.mjs.map +1 -0
  301. package/dist/migrations/i18n.d.ts +5 -0
  302. package/dist/migrations/i18n.d.ts.map +1 -0
  303. package/dist/migrations/i18n.js +71 -0
  304. package/dist/migrations/i18n.js.map +1 -0
  305. package/dist/migrations/i18n.mjs +68 -0
  306. package/dist/migrations/i18n.mjs.map +1 -0
  307. package/dist/migrations/index.d.ts +5 -0
  308. package/dist/migrations/index.d.ts.map +1 -0
  309. package/dist/migrations/index.js +34 -0
  310. package/dist/migrations/index.js.map +1 -0
  311. package/dist/migrations/index.mjs +31 -0
  312. package/dist/migrations/index.mjs.map +1 -0
  313. package/dist/package.json.js +186 -0
  314. package/dist/package.json.js.map +1 -0
  315. package/dist/package.json.mjs +163 -0
  316. package/dist/package.json.mjs.map +1 -0
  317. package/dist/providers/admin.d.ts.map +1 -1
  318. package/dist/providers/admin.js +27 -17
  319. package/dist/providers/admin.js.map +1 -1
  320. package/dist/providers/admin.mjs +26 -19
  321. package/dist/providers/admin.mjs.map +1 -1
  322. package/dist/providers/coreStore.js +13 -8
  323. package/dist/providers/coreStore.js.map +1 -1
  324. package/dist/providers/coreStore.mjs +12 -10
  325. package/dist/providers/coreStore.mjs.map +1 -1
  326. package/dist/providers/cron.js +19 -16
  327. package/dist/providers/cron.js.map +1 -1
  328. package/dist/providers/cron.mjs +18 -18
  329. package/dist/providers/cron.mjs.map +1 -1
  330. package/dist/providers/index.js +18 -9
  331. package/dist/providers/index.js.map +1 -1
  332. package/dist/providers/index.mjs +17 -10
  333. package/dist/providers/index.mjs.map +1 -1
  334. package/dist/providers/provider.js +4 -3
  335. package/dist/providers/provider.js.map +1 -1
  336. package/dist/providers/provider.mjs +3 -4
  337. package/dist/providers/provider.mjs.map +1 -1
  338. package/dist/providers/registries.js +37 -32
  339. package/dist/providers/registries.js.map +1 -1
  340. package/dist/providers/registries.mjs +36 -34
  341. package/dist/providers/registries.mjs.map +1 -1
  342. package/dist/providers/telemetry.js +19 -16
  343. package/dist/providers/telemetry.js.map +1 -1
  344. package/dist/providers/telemetry.mjs +18 -18
  345. package/dist/providers/telemetry.mjs.map +1 -1
  346. package/dist/providers/webhooks.js +28 -26
  347. package/dist/providers/webhooks.js.map +1 -1
  348. package/dist/providers/webhooks.mjs +27 -28
  349. package/dist/providers/webhooks.mjs.map +1 -1
  350. package/dist/registries/apis.js +23 -20
  351. package/dist/registries/apis.js.map +1 -1
  352. package/dist/registries/apis.mjs +22 -22
  353. package/dist/registries/apis.mjs.map +1 -1
  354. package/dist/registries/components.js +35 -37
  355. package/dist/registries/components.js.map +1 -1
  356. package/dist/registries/components.mjs +34 -39
  357. package/dist/registries/components.mjs.map +1 -1
  358. package/dist/registries/content-types.js +54 -59
  359. package/dist/registries/content-types.js.map +1 -1
  360. package/dist/registries/content-types.mjs +53 -61
  361. package/dist/registries/content-types.mjs.map +1 -1
  362. package/dist/registries/controllers.js +70 -71
  363. package/dist/registries/controllers.js.map +1 -1
  364. package/dist/registries/controllers.mjs +69 -73
  365. package/dist/registries/controllers.mjs.map +1 -1
  366. package/dist/registries/custom-fields.js +75 -65
  367. package/dist/registries/custom-fields.js.map +1 -1
  368. package/dist/registries/custom-fields.mjs +74 -67
  369. package/dist/registries/custom-fields.mjs.map +1 -1
  370. package/dist/registries/hooks.js +46 -49
  371. package/dist/registries/hooks.js.map +1 -1
  372. package/dist/registries/hooks.mjs +45 -51
  373. package/dist/registries/hooks.mjs.map +1 -1
  374. package/dist/registries/middlewares.js +49 -51
  375. package/dist/registries/middlewares.js.map +1 -1
  376. package/dist/registries/middlewares.mjs +48 -53
  377. package/dist/registries/middlewares.mjs.map +1 -1
  378. package/dist/registries/models.js +14 -13
  379. package/dist/registries/models.js.map +1 -1
  380. package/dist/registries/models.mjs +13 -14
  381. package/dist/registries/models.mjs.map +1 -1
  382. package/dist/registries/modules.js +39 -36
  383. package/dist/registries/modules.js.map +1 -1
  384. package/dist/registries/modules.mjs +38 -38
  385. package/dist/registries/modules.mjs.map +1 -1
  386. package/dist/registries/namespace.js +21 -20
  387. package/dist/registries/namespace.js.map +1 -1
  388. package/dist/registries/namespace.mjs +20 -23
  389. package/dist/registries/namespace.mjs.map +1 -1
  390. package/dist/registries/plugins.js +23 -20
  391. package/dist/registries/plugins.js.map +1 -1
  392. package/dist/registries/plugins.mjs +22 -22
  393. package/dist/registries/plugins.mjs.map +1 -1
  394. package/dist/registries/policies.d.ts +1 -1
  395. package/dist/registries/policies.d.ts.map +1 -1
  396. package/dist/registries/policies.js +103 -96
  397. package/dist/registries/policies.js.map +1 -1
  398. package/dist/registries/policies.mjs +102 -98
  399. package/dist/registries/policies.mjs.map +1 -1
  400. package/dist/registries/sanitizers.js +23 -22
  401. package/dist/registries/sanitizers.js.map +1 -1
  402. package/dist/registries/sanitizers.mjs +22 -22
  403. package/dist/registries/sanitizers.mjs.map +1 -1
  404. package/dist/registries/services.js +71 -71
  405. package/dist/registries/services.js.map +1 -1
  406. package/dist/registries/services.mjs +70 -73
  407. package/dist/registries/services.mjs.map +1 -1
  408. package/dist/registries/validators.js +23 -22
  409. package/dist/registries/validators.js.map +1 -1
  410. package/dist/registries/validators.mjs +22 -22
  411. package/dist/registries/validators.mjs.map +1 -1
  412. package/dist/services/auth/index.js +74 -74
  413. package/dist/services/auth/index.js.map +1 -1
  414. package/dist/services/auth/index.mjs +73 -74
  415. package/dist/services/auth/index.mjs.map +1 -1
  416. package/dist/services/config.js +47 -43
  417. package/dist/services/config.js.map +1 -1
  418. package/dist/services/config.mjs +46 -44
  419. package/dist/services/config.mjs.map +1 -1
  420. package/dist/services/content-api/index.d.ts +11 -13
  421. package/dist/services/content-api/index.d.ts.map +1 -1
  422. package/dist/services/content-api/index.js +80 -79
  423. package/dist/services/content-api/index.js.map +1 -1
  424. package/dist/services/content-api/index.mjs +79 -79
  425. package/dist/services/content-api/index.mjs.map +1 -1
  426. package/dist/services/content-api/permissions/engine.js +8 -5
  427. package/dist/services/content-api/permissions/engine.js.map +1 -1
  428. package/dist/services/content-api/permissions/engine.mjs +7 -5
  429. package/dist/services/content-api/permissions/engine.mjs.map +1 -1
  430. package/dist/services/content-api/permissions/index.d.ts +10 -12
  431. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  432. package/dist/services/content-api/permissions/index.js +101 -81
  433. package/dist/services/content-api/permissions/index.js.map +1 -1
  434. package/dist/services/content-api/permissions/index.mjs +100 -81
  435. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  436. package/dist/services/content-api/permissions/providers/action.d.ts +5 -6
  437. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  438. package/dist/services/content-api/permissions/providers/action.js +17 -14
  439. package/dist/services/content-api/permissions/providers/action.js.map +1 -1
  440. package/dist/services/content-api/permissions/providers/action.mjs +16 -16
  441. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
  442. package/dist/services/content-api/permissions/providers/condition.d.ts +5 -6
  443. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  444. package/dist/services/content-api/permissions/providers/condition.js +17 -14
  445. package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
  446. package/dist/services/content-api/permissions/providers/condition.mjs +16 -16
  447. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
  448. package/dist/services/content-source-maps.d.ts +13 -0
  449. package/dist/services/content-source-maps.d.ts.map +1 -0
  450. package/dist/services/content-source-maps.js +108 -0
  451. package/dist/services/content-source-maps.js.map +1 -0
  452. package/dist/services/content-source-maps.mjs +106 -0
  453. package/dist/services/content-source-maps.mjs.map +1 -0
  454. package/dist/services/core-store.d.ts +2 -2
  455. package/dist/services/core-store.d.ts.map +1 -1
  456. package/dist/services/core-store.js +115 -95
  457. package/dist/services/core-store.js.map +1 -1
  458. package/dist/services/core-store.mjs +114 -97
  459. package/dist/services/core-store.mjs.map +1 -1
  460. package/dist/services/cron.d.ts +3 -3
  461. package/dist/services/cron.d.ts.map +1 -1
  462. package/dist/services/cron.js +74 -60
  463. package/dist/services/cron.js.map +1 -1
  464. package/dist/services/cron.mjs +73 -62
  465. package/dist/services/cron.mjs.map +1 -1
  466. package/dist/services/custom-fields.js +9 -7
  467. package/dist/services/custom-fields.js.map +1 -1
  468. package/dist/services/custom-fields.mjs +8 -9
  469. package/dist/services/custom-fields.mjs.map +1 -1
  470. package/dist/services/document-service/attributes/index.js +23 -18
  471. package/dist/services/document-service/attributes/index.js.map +1 -1
  472. package/dist/services/document-service/attributes/index.mjs +22 -19
  473. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  474. package/dist/services/document-service/attributes/transforms.js +16 -15
  475. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  476. package/dist/services/document-service/attributes/transforms.mjs +15 -15
  477. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  478. package/dist/services/document-service/common.d.ts +1 -1
  479. package/dist/services/document-service/common.d.ts.map +1 -1
  480. package/dist/services/document-service/common.js +5 -4
  481. package/dist/services/document-service/common.js.map +1 -1
  482. package/dist/services/document-service/common.mjs +4 -5
  483. package/dist/services/document-service/common.mjs.map +1 -1
  484. package/dist/services/document-service/components.d.ts +6 -1
  485. package/dist/services/document-service/components.d.ts.map +1 -1
  486. package/dist/services/document-service/components.js +352 -257
  487. package/dist/services/document-service/components.js.map +1 -1
  488. package/dist/services/document-service/components.mjs +349 -261
  489. package/dist/services/document-service/components.mjs.map +1 -1
  490. package/dist/services/document-service/draft-and-publish.d.ts +1 -1
  491. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  492. package/dist/services/document-service/draft-and-publish.js +94 -54
  493. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  494. package/dist/services/document-service/draft-and-publish.mjs +87 -54
  495. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  496. package/dist/services/document-service/entries.d.ts +2 -2
  497. package/dist/services/document-service/entries.d.ts.map +1 -1
  498. package/dist/services/document-service/entries.js +151 -92
  499. package/dist/services/document-service/entries.js.map +1 -1
  500. package/dist/services/document-service/entries.mjs +150 -93
  501. package/dist/services/document-service/entries.mjs.map +1 -1
  502. package/dist/services/document-service/events.d.ts +1 -1
  503. package/dist/services/document-service/events.d.ts.map +1 -1
  504. package/dist/services/document-service/events.js +52 -40
  505. package/dist/services/document-service/events.js.map +1 -1
  506. package/dist/services/document-service/events.mjs +51 -41
  507. package/dist/services/document-service/events.mjs.map +1 -1
  508. package/dist/services/document-service/first-published-at.d.ts +7 -0
  509. package/dist/services/document-service/first-published-at.d.ts.map +1 -0
  510. package/dist/services/document-service/first-published-at.js +31 -0
  511. package/dist/services/document-service/first-published-at.js.map +1 -0
  512. package/dist/services/document-service/first-published-at.mjs +28 -0
  513. package/dist/services/document-service/first-published-at.mjs.map +1 -0
  514. package/dist/services/document-service/index.d.ts +2 -1
  515. package/dist/services/document-service/index.d.ts.map +1 -1
  516. package/dist/services/document-service/index.js +53 -32
  517. package/dist/services/document-service/index.js.map +1 -1
  518. package/dist/services/document-service/index.mjs +52 -33
  519. package/dist/services/document-service/index.mjs.map +1 -1
  520. package/dist/services/document-service/internationalization.d.ts +6 -1
  521. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  522. package/dist/services/document-service/internationalization.js +98 -50
  523. package/dist/services/document-service/internationalization.js.map +1 -1
  524. package/dist/services/document-service/internationalization.mjs +92 -50
  525. package/dist/services/document-service/internationalization.mjs.map +1 -1
  526. package/dist/services/document-service/middlewares/errors.js +23 -19
  527. package/dist/services/document-service/middlewares/errors.js.map +1 -1
  528. package/dist/services/document-service/middlewares/errors.mjs +22 -20
  529. package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
  530. package/dist/services/document-service/middlewares/middleware-manager.js +46 -44
  531. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  532. package/dist/services/document-service/middlewares/middleware-manager.mjs +45 -45
  533. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  534. package/dist/services/document-service/params.js +11 -5
  535. package/dist/services/document-service/params.js.map +1 -1
  536. package/dist/services/document-service/params.mjs +10 -6
  537. package/dist/services/document-service/params.mjs.map +1 -1
  538. package/dist/services/document-service/repository.d.ts.map +1 -1
  539. package/dist/services/document-service/repository.js +363 -269
  540. package/dist/services/document-service/repository.js.map +1 -1
  541. package/dist/services/document-service/repository.mjs +362 -270
  542. package/dist/services/document-service/repository.mjs.map +1 -1
  543. package/dist/services/document-service/transform/data.js +22 -12
  544. package/dist/services/document-service/transform/data.js.map +1 -1
  545. package/dist/services/document-service/transform/data.mjs +21 -13
  546. package/dist/services/document-service/transform/data.mjs.map +1 -1
  547. package/dist/services/document-service/transform/fields.js +26 -17
  548. package/dist/services/document-service/transform/fields.js.map +1 -1
  549. package/dist/services/document-service/transform/fields.mjs +25 -18
  550. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  551. package/dist/services/document-service/transform/id-map.d.ts +1 -1
  552. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  553. package/dist/services/document-service/transform/id-map.js +116 -69
  554. package/dist/services/document-service/transform/id-map.js.map +1 -1
  555. package/dist/services/document-service/transform/id-map.mjs +115 -70
  556. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  557. package/dist/services/document-service/transform/id-transform.d.ts +1 -1
  558. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  559. package/dist/services/document-service/transform/id-transform.js +38 -30
  560. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  561. package/dist/services/document-service/transform/id-transform.mjs +36 -30
  562. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  563. package/dist/services/document-service/transform/populate.js +23 -18
  564. package/dist/services/document-service/transform/populate.js.map +1 -1
  565. package/dist/services/document-service/transform/populate.mjs +22 -19
  566. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  567. package/dist/services/document-service/transform/query.js +11 -6
  568. package/dist/services/document-service/transform/query.js.map +1 -1
  569. package/dist/services/document-service/transform/query.mjs +10 -7
  570. package/dist/services/document-service/transform/query.mjs.map +1 -1
  571. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +1 -1
  572. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  573. package/dist/services/document-service/transform/relations/extract/data-ids.js +71 -48
  574. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  575. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +70 -49
  576. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  577. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  578. package/dist/services/document-service/transform/relations/transform/data-ids.js +97 -63
  579. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  580. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +96 -64
  581. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  582. package/dist/services/document-service/transform/relations/transform/default-locale.js +47 -29
  583. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  584. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +46 -30
  585. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  586. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  587. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  588. package/dist/services/document-service/transform/relations/utils/dp.js +52 -26
  589. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  590. package/dist/services/document-service/transform/relations/utils/dp.mjs +51 -27
  591. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  592. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +1 -1
  593. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  594. package/dist/services/document-service/transform/relations/utils/i18n.js +20 -18
  595. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  596. package/dist/services/document-service/transform/relations/utils/i18n.mjs +19 -21
  597. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  598. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  599. package/dist/services/document-service/transform/relations/utils/map-relation.js +118 -79
  600. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  601. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +115 -79
  602. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  603. package/dist/services/document-service/utils/bidirectional-relations.d.ts +95 -0
  604. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -0
  605. package/dist/services/document-service/utils/bidirectional-relations.js +148 -0
  606. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -0
  607. package/dist/services/document-service/utils/bidirectional-relations.mjs +145 -0
  608. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -0
  609. package/dist/services/document-service/utils/populate.d.ts +1 -1
  610. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  611. package/dist/services/document-service/utils/populate.js +67 -37
  612. package/dist/services/document-service/utils/populate.js.map +1 -1
  613. package/dist/services/document-service/utils/populate.mjs +66 -38
  614. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  615. package/dist/services/document-service/utils/unidirectional-relations.d.ts +53 -0
  616. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -0
  617. package/dist/services/document-service/utils/unidirectional-relations.js +131 -0
  618. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -0
  619. package/dist/services/document-service/utils/unidirectional-relations.mjs +128 -0
  620. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -0
  621. package/dist/services/entity-service/index.js +230 -161
  622. package/dist/services/entity-service/index.js.map +1 -1
  623. package/dist/services/entity-service/index.mjs +229 -160
  624. package/dist/services/entity-service/index.mjs.map +1 -1
  625. package/dist/services/entity-validator/blocks-validator.d.ts +1 -2
  626. package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
  627. package/dist/services/entity-validator/blocks-validator.js +137 -104
  628. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  629. package/dist/services/entity-validator/blocks-validator.mjs +135 -105
  630. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  631. package/dist/services/entity-validator/index.d.ts +15 -1
  632. package/dist/services/entity-validator/index.d.ts.map +1 -1
  633. package/dist/services/entity-validator/index.js +370 -310
  634. package/dist/services/entity-validator/index.js.map +1 -1
  635. package/dist/services/entity-validator/index.mjs +366 -307
  636. package/dist/services/entity-validator/index.mjs.map +1 -1
  637. package/dist/services/entity-validator/validators.d.ts +37 -25
  638. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  639. package/dist/services/entity-validator/validators.js +286 -110
  640. package/dist/services/entity-validator/validators.js.map +1 -1
  641. package/dist/services/entity-validator/validators.mjs +277 -108
  642. package/dist/services/entity-validator/validators.mjs.map +1 -1
  643. package/dist/services/errors.js +65 -65
  644. package/dist/services/errors.js.map +1 -1
  645. package/dist/services/errors.mjs +64 -66
  646. package/dist/services/errors.mjs.map +1 -1
  647. package/dist/services/event-hub.js +82 -69
  648. package/dist/services/event-hub.js.map +1 -1
  649. package/dist/services/event-hub.mjs +81 -71
  650. package/dist/services/event-hub.mjs.map +1 -1
  651. package/dist/services/features.js +19 -14
  652. package/dist/services/features.js.map +1 -1
  653. package/dist/services/features.mjs +18 -15
  654. package/dist/services/features.mjs.map +1 -1
  655. package/dist/services/fs.js +41 -40
  656. package/dist/services/fs.js.map +1 -1
  657. package/dist/services/fs.mjs +40 -39
  658. package/dist/services/fs.mjs.map +1 -1
  659. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  660. package/dist/services/metrics/admin-user-hash.js +13 -11
  661. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  662. package/dist/services/metrics/admin-user-hash.mjs +12 -10
  663. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  664. package/dist/services/metrics/index.d.ts +1 -1
  665. package/dist/services/metrics/index.d.ts.map +1 -1
  666. package/dist/services/metrics/index.js +47 -40
  667. package/dist/services/metrics/index.js.map +1 -1
  668. package/dist/services/metrics/index.mjs +46 -42
  669. package/dist/services/metrics/index.mjs.map +1 -1
  670. package/dist/services/metrics/is-truthy.js +13 -6
  671. package/dist/services/metrics/is-truthy.js.map +1 -1
  672. package/dist/services/metrics/is-truthy.mjs +12 -6
  673. package/dist/services/metrics/is-truthy.mjs.map +1 -1
  674. package/dist/services/metrics/middleware.d.ts.map +1 -1
  675. package/dist/services/metrics/middleware.js +37 -22
  676. package/dist/services/metrics/middleware.js.map +1 -1
  677. package/dist/services/metrics/middleware.mjs +36 -24
  678. package/dist/services/metrics/middleware.mjs.map +1 -1
  679. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  680. package/dist/services/metrics/rate-limiter.js +24 -19
  681. package/dist/services/metrics/rate-limiter.js.map +1 -1
  682. package/dist/services/metrics/rate-limiter.mjs +23 -21
  683. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  684. package/dist/services/metrics/sender.d.ts.map +1 -1
  685. package/dist/services/metrics/sender.js +78 -69
  686. package/dist/services/metrics/sender.js.map +1 -1
  687. package/dist/services/metrics/sender.mjs +77 -64
  688. package/dist/services/metrics/sender.mjs.map +1 -1
  689. package/dist/services/query-params.js +13 -10
  690. package/dist/services/query-params.js.map +1 -1
  691. package/dist/services/query-params.mjs +12 -12
  692. package/dist/services/query-params.mjs.map +1 -1
  693. package/dist/services/reloader.js +35 -32
  694. package/dist/services/reloader.js.map +1 -1
  695. package/dist/services/reloader.mjs +34 -33
  696. package/dist/services/reloader.mjs.map +1 -1
  697. package/dist/services/request-context.js +11 -8
  698. package/dist/services/request-context.js.map +1 -1
  699. package/dist/services/request-context.mjs +10 -10
  700. package/dist/services/request-context.mjs.map +1 -1
  701. package/dist/services/server/admin-api.js +11 -10
  702. package/dist/services/server/admin-api.js.map +1 -1
  703. package/dist/services/server/admin-api.mjs +10 -11
  704. package/dist/services/server/admin-api.mjs.map +1 -1
  705. package/dist/services/server/api.js +33 -27
  706. package/dist/services/server/api.js.map +1 -1
  707. package/dist/services/server/api.mjs +32 -26
  708. package/dist/services/server/api.mjs.map +1 -1
  709. package/dist/services/server/compose-endpoint.js +116 -105
  710. package/dist/services/server/compose-endpoint.js.map +1 -1
  711. package/dist/services/server/compose-endpoint.mjs +115 -105
  712. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  713. package/dist/services/server/content-api.js +11 -9
  714. package/dist/services/server/content-api.js.map +1 -1
  715. package/dist/services/server/content-api.mjs +10 -10
  716. package/dist/services/server/content-api.mjs.map +1 -1
  717. package/dist/services/server/http-server.js +48 -44
  718. package/dist/services/server/http-server.js.map +1 -1
  719. package/dist/services/server/http-server.mjs +47 -43
  720. package/dist/services/server/http-server.mjs.map +1 -1
  721. package/dist/services/server/index.js +85 -82
  722. package/dist/services/server/index.js.map +1 -1
  723. package/dist/services/server/index.mjs +84 -81
  724. package/dist/services/server/index.mjs.map +1 -1
  725. package/dist/services/server/koa.js +49 -47
  726. package/dist/services/server/koa.js.map +1 -1
  727. package/dist/services/server/koa.mjs +48 -44
  728. package/dist/services/server/koa.mjs.map +1 -1
  729. package/dist/services/server/middleware.js +86 -82
  730. package/dist/services/server/middleware.js.map +1 -1
  731. package/dist/services/server/middleware.mjs +85 -82
  732. package/dist/services/server/middleware.mjs.map +1 -1
  733. package/dist/services/server/policy.js +24 -17
  734. package/dist/services/server/policy.js.map +1 -1
  735. package/dist/services/server/policy.mjs +23 -18
  736. package/dist/services/server/policy.mjs.map +1 -1
  737. package/dist/services/server/register-middlewares.js +68 -61
  738. package/dist/services/server/register-middlewares.js.map +1 -1
  739. package/dist/services/server/register-middlewares.mjs +67 -63
  740. package/dist/services/server/register-middlewares.mjs.map +1 -1
  741. package/dist/services/server/register-routes.js +109 -66
  742. package/dist/services/server/register-routes.js.map +1 -1
  743. package/dist/services/server/register-routes.mjs +108 -66
  744. package/dist/services/server/register-routes.mjs.map +1 -1
  745. package/dist/services/server/routing.d.ts +10 -0
  746. package/dist/services/server/routing.d.ts.map +1 -1
  747. package/dist/services/server/routing.js +100 -81
  748. package/dist/services/server/routing.js.map +1 -1
  749. package/dist/services/server/routing.mjs +99 -81
  750. package/dist/services/server/routing.mjs.map +1 -1
  751. package/dist/services/utils/conditional-fields.d.ts +3 -0
  752. package/dist/services/utils/conditional-fields.d.ts.map +1 -0
  753. package/dist/services/utils/conditional-fields.js +22 -0
  754. package/dist/services/utils/conditional-fields.js.map +1 -0
  755. package/dist/services/utils/conditional-fields.mjs +20 -0
  756. package/dist/services/utils/conditional-fields.mjs.map +1 -0
  757. package/dist/services/utils/dynamic-zones.js +13 -14
  758. package/dist/services/utils/dynamic-zones.js.map +1 -1
  759. package/dist/services/utils/dynamic-zones.mjs +12 -16
  760. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  761. package/dist/services/webhook-runner.js +124 -122
  762. package/dist/services/webhook-runner.js.map +1 -1
  763. package/dist/services/webhook-runner.mjs +123 -121
  764. package/dist/services/webhook-runner.mjs.map +1 -1
  765. package/dist/services/webhook-store.js +132 -99
  766. package/dist/services/webhook-store.js.map +1 -1
  767. package/dist/services/webhook-store.mjs +131 -101
  768. package/dist/services/webhook-store.mjs.map +1 -1
  769. package/dist/services/worker-queue.js +44 -49
  770. package/dist/services/worker-queue.js.map +1 -1
  771. package/dist/services/worker-queue.mjs +43 -49
  772. package/dist/services/worker-queue.mjs.map +1 -1
  773. package/dist/utils/convert-custom-field-type.js +17 -20
  774. package/dist/utils/convert-custom-field-type.js.map +1 -1
  775. package/dist/utils/convert-custom-field-type.mjs +16 -21
  776. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  777. package/dist/utils/cron.js +64 -30
  778. package/dist/utils/cron.js.map +1 -1
  779. package/dist/utils/cron.mjs +63 -31
  780. package/dist/utils/cron.mjs.map +1 -1
  781. package/dist/utils/fetch.d.ts +5 -1
  782. package/dist/utils/fetch.d.ts.map +1 -1
  783. package/dist/utils/fetch.js +28 -17
  784. package/dist/utils/fetch.js.map +1 -1
  785. package/dist/utils/fetch.mjs +27 -18
  786. package/dist/utils/fetch.mjs.map +1 -1
  787. package/dist/utils/filepath-to-prop-path.d.ts +1 -1
  788. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  789. package/dist/utils/filepath-to-prop-path.js +22 -9
  790. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  791. package/dist/utils/filepath-to-prop-path.mjs +20 -7
  792. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  793. package/dist/utils/is-initialized.js +21 -12
  794. package/dist/utils/is-initialized.js.map +1 -1
  795. package/dist/utils/is-initialized.mjs +20 -13
  796. package/dist/utils/is-initialized.mjs.map +1 -1
  797. package/dist/utils/lifecycles.js +6 -5
  798. package/dist/utils/lifecycles.js.map +1 -1
  799. package/dist/utils/lifecycles.mjs +5 -6
  800. package/dist/utils/lifecycles.mjs.map +1 -1
  801. package/dist/utils/load-config-file.js +40 -38
  802. package/dist/utils/load-config-file.js.map +1 -1
  803. package/dist/utils/load-config-file.mjs +39 -36
  804. package/dist/utils/load-config-file.mjs.map +1 -1
  805. package/dist/utils/load-files.js +40 -35
  806. package/dist/utils/load-files.js.map +1 -1
  807. package/dist/utils/load-files.mjs +39 -32
  808. package/dist/utils/load-files.mjs.map +1 -1
  809. package/dist/utils/open-browser.js +8 -8
  810. package/dist/utils/open-browser.js.map +1 -1
  811. package/dist/utils/open-browser.mjs +7 -7
  812. package/dist/utils/open-browser.mjs.map +1 -1
  813. package/dist/utils/resolve-working-dirs.js +23 -10
  814. package/dist/utils/resolve-working-dirs.js.map +1 -1
  815. package/dist/utils/resolve-working-dirs.mjs +22 -9
  816. package/dist/utils/resolve-working-dirs.mjs.map +1 -1
  817. package/dist/utils/signals.js +20 -14
  818. package/dist/utils/signals.js.map +1 -1
  819. package/dist/utils/signals.mjs +19 -15
  820. package/dist/utils/signals.mjs.map +1 -1
  821. package/dist/utils/startup-logger.d.ts.map +1 -1
  822. package/dist/utils/startup-logger.js +107 -78
  823. package/dist/utils/startup-logger.js.map +1 -1
  824. package/dist/utils/startup-logger.mjs +106 -75
  825. package/dist/utils/startup-logger.mjs.map +1 -1
  826. package/dist/utils/transform-content-types-to-models.d.ts +552 -23
  827. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  828. package/dist/utils/transform-content-types-to-models.js +350 -248
  829. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  830. package/dist/utils/transform-content-types-to-models.mjs +349 -256
  831. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  832. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  833. package/dist/utils/update-notifier/index.js +68 -73
  834. package/dist/utils/update-notifier/index.js.map +1 -1
  835. package/dist/utils/update-notifier/index.mjs +67 -67
  836. package/dist/utils/update-notifier/index.mjs.map +1 -1
  837. package/package.json +37 -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