@strapi/core 0.0.0-experimental.90ca9123352ed07e0a9cedaf4bcad1475e74137f → 0.0.0-experimental.931410e9ec44301eb4579640bf42aa347fb4a3b7

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 (1059) hide show
  1. package/LICENSE +18 -3
  2. package/dist/Strapi.d.ts +52 -59
  3. package/dist/Strapi.d.ts.map +1 -1
  4. package/dist/Strapi.js +436 -428
  5. package/dist/Strapi.js.map +1 -1
  6. package/dist/Strapi.mjs +427 -439
  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.d.ts.map +1 -1
  13. package/dist/configuration/config-loader.js +110 -93
  14. package/dist/configuration/config-loader.js.map +1 -1
  15. package/dist/configuration/config-loader.mjs +109 -92
  16. package/dist/configuration/config-loader.mjs.map +1 -1
  17. package/dist/configuration/get-dirs.d.ts +10 -0
  18. package/dist/configuration/get-dirs.d.ts.map +1 -0
  19. package/dist/configuration/get-dirs.js +33 -0
  20. package/dist/configuration/get-dirs.js.map +1 -0
  21. package/dist/configuration/get-dirs.mjs +31 -0
  22. package/dist/configuration/get-dirs.mjs.map +1 -0
  23. package/dist/configuration/index.d.ts +4 -7
  24. package/dist/configuration/index.d.ts.map +1 -1
  25. package/dist/configuration/index.js +85 -72
  26. package/dist/configuration/index.js.map +1 -1
  27. package/dist/configuration/index.mjs +83 -68
  28. package/dist/configuration/index.mjs.map +1 -1
  29. package/dist/configuration/urls.d.ts +8 -0
  30. package/dist/configuration/urls.d.ts.map +1 -0
  31. package/dist/configuration/urls.js +72 -0
  32. package/dist/configuration/urls.js.map +1 -0
  33. package/dist/configuration/urls.mjs +68 -0
  34. package/dist/configuration/urls.mjs.map +1 -0
  35. package/dist/container.d.ts +2 -2
  36. package/dist/container.d.ts.map +1 -1
  37. package/dist/container.js +27 -23
  38. package/dist/container.js.map +1 -1
  39. package/dist/container.mjs +26 -24
  40. package/dist/container.mjs.map +1 -1
  41. package/dist/core-api/controller/collection-type.d.ts +3 -3
  42. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  43. package/dist/core-api/controller/collection-type.js +77 -73
  44. package/dist/core-api/controller/collection-type.js.map +1 -1
  45. package/dist/core-api/controller/collection-type.mjs +76 -74
  46. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  47. package/dist/core-api/controller/index.d.ts +3 -3
  48. package/dist/core-api/controller/index.d.ts.map +1 -1
  49. package/dist/core-api/controller/index.js +63 -43
  50. package/dist/core-api/controller/index.js.map +1 -1
  51. package/dist/core-api/controller/index.mjs +62 -44
  52. package/dist/core-api/controller/index.mjs.map +1 -1
  53. package/dist/core-api/controller/single-type.d.ts +3 -3
  54. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  55. package/dist/core-api/controller/single-type.js +41 -39
  56. package/dist/core-api/controller/single-type.js.map +1 -1
  57. package/dist/core-api/controller/single-type.mjs +40 -40
  58. package/dist/core-api/controller/single-type.mjs.map +1 -1
  59. package/dist/core-api/controller/transform.d.ts +10 -9
  60. package/dist/core-api/controller/transform.d.ts.map +1 -1
  61. package/dist/core-api/controller/transform.js +73 -58
  62. package/dist/core-api/controller/transform.js.map +1 -1
  63. package/dist/core-api/controller/transform.mjs +72 -59
  64. package/dist/core-api/controller/transform.mjs.map +1 -1
  65. package/dist/core-api/routes/index.d.ts.map +1 -1
  66. package/dist/core-api/routes/index.js +64 -62
  67. package/dist/core-api/routes/index.js.map +1 -1
  68. package/dist/core-api/routes/index.mjs +62 -62
  69. package/dist/core-api/routes/index.mjs.map +1 -1
  70. package/dist/core-api/service/collection-type.d.ts +11 -17
  71. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  72. package/dist/core-api/service/collection-type.js +73 -49
  73. package/dist/core-api/service/collection-type.js.map +1 -1
  74. package/dist/core-api/service/collection-type.mjs +72 -51
  75. package/dist/core-api/service/collection-type.mjs.map +1 -1
  76. package/dist/core-api/service/core-service.js +9 -8
  77. package/dist/core-api/service/core-service.js.map +1 -1
  78. package/dist/core-api/service/core-service.mjs +8 -9
  79. package/dist/core-api/service/core-service.mjs.map +1 -1
  80. package/dist/core-api/service/index.d.ts +3 -3
  81. package/dist/core-api/service/index.d.ts.map +1 -1
  82. package/dist/core-api/service/index.js +13 -13
  83. package/dist/core-api/service/index.js.map +1 -1
  84. package/dist/core-api/service/index.mjs +12 -14
  85. package/dist/core-api/service/index.mjs.map +1 -1
  86. package/dist/core-api/service/pagination.d.ts +4 -11
  87. package/dist/core-api/service/pagination.d.ts.map +1 -1
  88. package/dist/core-api/service/pagination.js +68 -68
  89. package/dist/core-api/service/pagination.js.map +1 -1
  90. package/dist/core-api/service/pagination.mjs +66 -71
  91. package/dist/core-api/service/pagination.mjs.map +1 -1
  92. package/dist/core-api/service/single-type.d.ts +7 -6
  93. package/dist/core-api/service/single-type.d.ts.map +1 -1
  94. package/dist/core-api/service/single-type.js +44 -22
  95. package/dist/core-api/service/single-type.js.map +1 -1
  96. package/dist/core-api/service/single-type.mjs +43 -24
  97. package/dist/core-api/service/single-type.mjs.map +1 -1
  98. package/dist/domain/content-type/index.d.ts +1 -1
  99. package/dist/domain/content-type/index.d.ts.map +1 -1
  100. package/dist/domain/content-type/index.js +95 -97
  101. package/dist/domain/content-type/index.js.map +1 -1
  102. package/dist/domain/content-type/index.mjs +94 -97
  103. package/dist/domain/content-type/index.mjs.map +1 -1
  104. package/dist/domain/content-type/validator.d.ts.map +1 -1
  105. package/dist/domain/content-type/validator.js +84 -69
  106. package/dist/domain/content-type/validator.js.map +1 -1
  107. package/dist/domain/content-type/validator.mjs +83 -68
  108. package/dist/domain/content-type/validator.mjs.map +1 -1
  109. package/dist/domain/module/index.d.ts +24 -23
  110. package/dist/domain/module/index.d.ts.map +1 -1
  111. package/dist/domain/module/index.js +109 -100
  112. package/dist/domain/module/index.js.map +1 -1
  113. package/dist/domain/module/index.mjs +108 -99
  114. package/dist/domain/module/index.mjs.map +1 -1
  115. package/dist/domain/module/validation.js +25 -20
  116. package/dist/domain/module/validation.js.map +1 -1
  117. package/dist/domain/module/validation.mjs +24 -21
  118. package/dist/domain/module/validation.mjs.map +1 -1
  119. package/dist/ee/index.d.ts +5 -2
  120. package/dist/ee/index.d.ts.map +1 -1
  121. package/dist/ee/index.js +171 -132
  122. package/dist/ee/index.js.map +1 -1
  123. package/dist/ee/index.mjs +170 -134
  124. package/dist/ee/index.mjs.map +1 -1
  125. package/dist/ee/license.d.ts +2 -2
  126. package/dist/ee/license.d.ts.map +1 -1
  127. package/dist/ee/license.js +99 -74
  128. package/dist/ee/license.js.map +1 -1
  129. package/dist/ee/license.mjs +98 -75
  130. package/dist/ee/license.mjs.map +1 -1
  131. package/dist/factories.d.ts +10 -10
  132. package/dist/factories.d.ts.map +1 -1
  133. package/dist/factories.js +72 -63
  134. package/dist/factories.js.map +1 -1
  135. package/dist/factories.mjs +71 -67
  136. package/dist/factories.mjs.map +1 -1
  137. package/dist/index.d.ts +18 -2
  138. package/dist/index.d.ts.map +1 -1
  139. package/dist/index.js +32 -5
  140. package/dist/index.js.map +1 -1
  141. package/dist/index.mjs +29 -5
  142. package/dist/index.mjs.map +1 -1
  143. package/dist/loaders/admin.d.ts +2 -2
  144. package/dist/loaders/admin.d.ts.map +1 -1
  145. package/dist/loaders/admin.js +21 -21
  146. package/dist/loaders/admin.js.map +1 -1
  147. package/dist/loaders/admin.mjs +20 -21
  148. package/dist/loaders/admin.mjs.map +1 -1
  149. package/dist/loaders/apis.d.ts +2 -2
  150. package/dist/loaders/apis.d.ts.map +1 -1
  151. package/dist/loaders/apis.js +143 -120
  152. package/dist/loaders/apis.js.map +1 -1
  153. package/dist/loaders/apis.mjs +142 -119
  154. package/dist/loaders/apis.mjs.map +1 -1
  155. package/dist/loaders/components.d.ts +2 -2
  156. package/dist/loaders/components.d.ts.map +1 -1
  157. package/dist/loaders/components.js +33 -34
  158. package/dist/loaders/components.js.map +1 -1
  159. package/dist/loaders/components.mjs +32 -34
  160. package/dist/loaders/components.mjs.map +1 -1
  161. package/dist/loaders/index.d.ts +2 -2
  162. package/dist/loaders/index.d.ts.map +1 -1
  163. package/dist/loaders/index.js +22 -22
  164. package/dist/loaders/index.js.map +1 -1
  165. package/dist/loaders/index.mjs +21 -23
  166. package/dist/loaders/index.mjs.map +1 -1
  167. package/dist/loaders/middlewares.d.ts +2 -2
  168. package/dist/loaders/middlewares.d.ts.map +1 -1
  169. package/dist/loaders/middlewares.js +29 -25
  170. package/dist/loaders/middlewares.js.map +1 -1
  171. package/dist/loaders/middlewares.mjs +28 -25
  172. package/dist/loaders/middlewares.mjs.map +1 -1
  173. package/dist/loaders/plugins/get-enabled-plugins.d.ts +2 -2
  174. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  175. package/dist/loaders/plugins/get-enabled-plugins.js +125 -100
  176. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  177. package/dist/loaders/plugins/get-enabled-plugins.mjs +124 -99
  178. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  179. package/dist/loaders/plugins/get-user-plugins-config.js +25 -24
  180. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  181. package/dist/loaders/plugins/get-user-plugins-config.mjs +24 -23
  182. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  183. package/dist/loaders/plugins/index.d.ts +2 -2
  184. package/dist/loaders/plugins/index.d.ts.map +1 -1
  185. package/dist/loaders/plugins/index.js +141 -104
  186. package/dist/loaders/plugins/index.js.map +1 -1
  187. package/dist/loaders/plugins/index.mjs +121 -104
  188. package/dist/loaders/plugins/index.mjs.map +1 -1
  189. package/dist/loaders/policies.d.ts +2 -2
  190. package/dist/loaders/policies.d.ts.map +1 -1
  191. package/dist/loaders/policies.js +24 -20
  192. package/dist/loaders/policies.js.map +1 -1
  193. package/dist/loaders/policies.mjs +23 -20
  194. package/dist/loaders/policies.mjs.map +1 -1
  195. package/dist/loaders/sanitizers.d.ts +2 -2
  196. package/dist/loaders/sanitizers.d.ts.map +1 -1
  197. package/dist/loaders/sanitizers.js +10 -4
  198. package/dist/loaders/sanitizers.js.map +1 -1
  199. package/dist/loaders/sanitizers.mjs +9 -6
  200. package/dist/loaders/sanitizers.mjs.map +1 -1
  201. package/dist/loaders/src-index.d.ts +2 -2
  202. package/dist/loaders/src-index.d.ts.map +1 -1
  203. package/dist/loaders/src-index.js +35 -27
  204. package/dist/loaders/src-index.js.map +1 -1
  205. package/dist/loaders/src-index.mjs +34 -29
  206. package/dist/loaders/src-index.mjs.map +1 -1
  207. package/dist/loaders/validators.d.ts +2 -2
  208. package/dist/loaders/validators.d.ts.map +1 -1
  209. package/dist/loaders/validators.js +9 -4
  210. package/dist/loaders/validators.js.map +1 -1
  211. package/dist/loaders/validators.mjs +8 -6
  212. package/dist/loaders/validators.mjs.map +1 -1
  213. package/dist/middlewares/body.d.ts +4 -4
  214. package/dist/middlewares/body.d.ts.map +1 -1
  215. package/dist/middlewares/body.js +58 -54
  216. package/dist/middlewares/body.js.map +1 -1
  217. package/dist/middlewares/body.mjs +57 -51
  218. package/dist/middlewares/body.mjs.map +1 -1
  219. package/dist/middlewares/compression.d.ts +2 -2
  220. package/dist/middlewares/compression.d.ts.map +1 -1
  221. package/dist/middlewares/compression.js +6 -6
  222. package/dist/middlewares/compression.js.map +1 -1
  223. package/dist/middlewares/compression.mjs +5 -5
  224. package/dist/middlewares/compression.mjs.map +1 -1
  225. package/dist/middlewares/cors.d.ts +2 -2
  226. package/dist/middlewares/cors.d.ts.map +1 -1
  227. package/dist/middlewares/cors.js +59 -46
  228. package/dist/middlewares/cors.js.map +1 -1
  229. package/dist/middlewares/cors.mjs +58 -45
  230. package/dist/middlewares/cors.mjs.map +1 -1
  231. package/dist/middlewares/errors.d.ts +2 -2
  232. package/dist/middlewares/errors.d.ts.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.d.ts +2 -2
  238. package/dist/middlewares/favicon.d.ts.map +1 -1
  239. package/dist/middlewares/favicon.js +27 -17
  240. package/dist/middlewares/favicon.js.map +1 -1
  241. package/dist/middlewares/favicon.mjs +26 -16
  242. package/dist/middlewares/favicon.mjs.map +1 -1
  243. package/dist/middlewares/index.d.ts +2 -2
  244. package/dist/middlewares/index.d.ts.map +1 -1
  245. package/dist/middlewares/index.js +32 -30
  246. package/dist/middlewares/index.js.map +1 -1
  247. package/dist/middlewares/index.mjs +31 -31
  248. package/dist/middlewares/index.mjs.map +1 -1
  249. package/dist/middlewares/ip.d.ts +2 -2
  250. package/dist/middlewares/ip.d.ts.map +1 -1
  251. package/dist/middlewares/ip.js +6 -6
  252. package/dist/middlewares/ip.js.map +1 -1
  253. package/dist/middlewares/ip.mjs +5 -5
  254. package/dist/middlewares/ip.mjs.map +1 -1
  255. package/dist/middlewares/logger.d.ts +2 -2
  256. package/dist/middlewares/logger.d.ts.map +1 -1
  257. package/dist/middlewares/logger.js +10 -9
  258. package/dist/middlewares/logger.js.map +1 -1
  259. package/dist/middlewares/logger.mjs +9 -10
  260. package/dist/middlewares/logger.mjs.map +1 -1
  261. package/dist/middlewares/powered-by.d.ts +2 -2
  262. package/dist/middlewares/powered-by.d.ts.map +1 -1
  263. package/dist/middlewares/powered-by.js +13 -9
  264. package/dist/middlewares/powered-by.js.map +1 -1
  265. package/dist/middlewares/powered-by.mjs +12 -10
  266. package/dist/middlewares/powered-by.mjs.map +1 -1
  267. package/dist/middlewares/public.d.ts +2 -2
  268. package/dist/middlewares/public.d.ts.map +1 -1
  269. package/dist/middlewares/public.js +33 -29
  270. package/dist/middlewares/public.js.map +1 -1
  271. package/dist/middlewares/public.mjs +32 -28
  272. package/dist/middlewares/public.mjs.map +1 -1
  273. package/dist/middlewares/query.d.ts +2 -2
  274. package/dist/middlewares/query.d.ts.map +1 -1
  275. package/dist/middlewares/query.js +35 -32
  276. package/dist/middlewares/query.js.map +1 -1
  277. package/dist/middlewares/query.mjs +34 -31
  278. package/dist/middlewares/query.mjs.map +1 -1
  279. package/dist/middlewares/response-time.d.ts +2 -2
  280. package/dist/middlewares/response-time.d.ts.map +1 -1
  281. package/dist/middlewares/response-time.js +10 -9
  282. package/dist/middlewares/response-time.js.map +1 -1
  283. package/dist/middlewares/response-time.mjs +9 -10
  284. package/dist/middlewares/response-time.mjs.map +1 -1
  285. package/dist/middlewares/responses.d.ts +3 -3
  286. package/dist/middlewares/responses.d.ts.map +1 -1
  287. package/dist/middlewares/responses.js +14 -12
  288. package/dist/middlewares/responses.js.map +1 -1
  289. package/dist/middlewares/responses.mjs +13 -13
  290. package/dist/middlewares/responses.mjs.map +1 -1
  291. package/dist/middlewares/security.d.ts +2 -2
  292. package/dist/middlewares/security.d.ts.map +1 -1
  293. package/dist/middlewares/security.js +110 -65
  294. package/dist/middlewares/security.js.map +1 -1
  295. package/dist/middlewares/security.mjs +108 -63
  296. package/dist/middlewares/security.mjs.map +1 -1
  297. package/dist/middlewares/session.d.ts +2 -2
  298. package/dist/middlewares/session.d.ts.map +1 -1
  299. package/dist/middlewares/session.js +26 -25
  300. package/dist/middlewares/session.js.map +1 -1
  301. package/dist/middlewares/session.mjs +25 -24
  302. package/dist/middlewares/session.mjs.map +1 -1
  303. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +33 -0
  304. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -0
  305. package/dist/migrations/database/5.0.0-discard-drafts.js +168 -0
  306. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -0
  307. package/dist/migrations/database/5.0.0-discard-drafts.mjs +165 -0
  308. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -0
  309. package/dist/migrations/draft-publish.d.ts +17 -0
  310. package/dist/migrations/draft-publish.d.ts.map +1 -0
  311. package/dist/migrations/draft-publish.js +69 -0
  312. package/dist/migrations/draft-publish.js.map +1 -0
  313. package/dist/migrations/draft-publish.mjs +66 -0
  314. package/dist/migrations/draft-publish.mjs.map +1 -0
  315. package/dist/migrations/i18n.d.ts +5 -0
  316. package/dist/migrations/i18n.d.ts.map +1 -0
  317. package/dist/migrations/i18n.js +71 -0
  318. package/dist/migrations/i18n.js.map +1 -0
  319. package/dist/migrations/i18n.mjs +68 -0
  320. package/dist/migrations/i18n.mjs.map +1 -0
  321. package/dist/migrations/index.d.ts +5 -0
  322. package/dist/migrations/index.d.ts.map +1 -0
  323. package/dist/migrations/index.js +29 -0
  324. package/dist/migrations/index.js.map +1 -0
  325. package/dist/migrations/index.mjs +26 -0
  326. package/dist/migrations/index.mjs.map +1 -0
  327. package/dist/package.json.js +182 -0
  328. package/dist/package.json.js.map +1 -0
  329. package/dist/package.json.mjs +159 -0
  330. package/dist/package.json.mjs.map +1 -0
  331. package/dist/providers/admin.d.ts +3 -0
  332. package/dist/providers/admin.d.ts.map +1 -0
  333. package/dist/providers/admin.js +30 -0
  334. package/dist/providers/admin.js.map +1 -0
  335. package/dist/providers/admin.mjs +28 -0
  336. package/dist/providers/admin.mjs.map +1 -0
  337. package/dist/providers/coreStore.d.ts +3 -0
  338. package/dist/providers/coreStore.d.ts.map +1 -0
  339. package/dist/providers/coreStore.js +16 -0
  340. package/dist/providers/coreStore.js.map +1 -0
  341. package/dist/providers/coreStore.mjs +14 -0
  342. package/dist/providers/coreStore.mjs.map +1 -0
  343. package/dist/providers/cron.d.ts +3 -0
  344. package/dist/providers/cron.d.ts.map +1 -0
  345. package/dist/providers/cron.js +23 -0
  346. package/dist/providers/cron.js.map +1 -0
  347. package/dist/providers/cron.mjs +21 -0
  348. package/dist/providers/cron.mjs.map +1 -0
  349. package/dist/providers/index.d.ts +3 -0
  350. package/dist/providers/index.d.ts.map +1 -0
  351. package/dist/providers/index.js +20 -0
  352. package/dist/providers/index.js.map +1 -0
  353. package/dist/providers/index.mjs +18 -0
  354. package/dist/providers/index.mjs.map +1 -0
  355. package/dist/providers/provider.d.ts +9 -0
  356. package/dist/providers/provider.d.ts.map +1 -0
  357. package/dist/providers/provider.js +6 -0
  358. package/dist/providers/provider.js.map +1 -0
  359. package/dist/providers/provider.mjs +4 -0
  360. package/dist/providers/provider.mjs.map +1 -0
  361. package/dist/providers/registries.d.ts +3 -0
  362. package/dist/providers/registries.d.ts.map +1 -0
  363. package/dist/providers/registries.js +40 -0
  364. package/dist/providers/registries.js.map +1 -0
  365. package/dist/providers/registries.mjs +38 -0
  366. package/dist/providers/registries.mjs.map +1 -0
  367. package/dist/providers/telemetry.d.ts +3 -0
  368. package/dist/providers/telemetry.d.ts.map +1 -0
  369. package/dist/providers/telemetry.js +22 -0
  370. package/dist/providers/telemetry.js.map +1 -0
  371. package/dist/providers/telemetry.mjs +20 -0
  372. package/dist/providers/telemetry.mjs.map +1 -0
  373. package/dist/providers/webhooks.d.ts +3 -0
  374. package/dist/providers/webhooks.d.ts.map +1 -0
  375. package/dist/providers/webhooks.js +32 -0
  376. package/dist/providers/webhooks.js.map +1 -0
  377. package/dist/providers/webhooks.mjs +30 -0
  378. package/dist/providers/webhooks.mjs.map +1 -0
  379. package/dist/registries/apis.d.ts +2 -2
  380. package/dist/registries/apis.d.ts.map +1 -1
  381. package/dist/registries/apis.js +23 -20
  382. package/dist/registries/apis.js.map +1 -1
  383. package/dist/registries/apis.mjs +22 -22
  384. package/dist/registries/apis.mjs.map +1 -1
  385. package/dist/registries/components.d.ts +6 -6
  386. package/dist/registries/components.d.ts.map +1 -1
  387. package/dist/registries/components.js +35 -37
  388. package/dist/registries/components.js.map +1 -1
  389. package/dist/registries/components.mjs +34 -39
  390. package/dist/registries/components.mjs.map +1 -1
  391. package/dist/registries/content-types.d.ts +5 -5
  392. package/dist/registries/content-types.d.ts.map +1 -1
  393. package/dist/registries/content-types.js +54 -59
  394. package/dist/registries/content-types.js.map +1 -1
  395. package/dist/registries/content-types.mjs +53 -61
  396. package/dist/registries/content-types.mjs.map +1 -1
  397. package/dist/registries/controllers.d.ts +10 -10
  398. package/dist/registries/controllers.d.ts.map +1 -1
  399. package/dist/registries/controllers.js +70 -71
  400. package/dist/registries/controllers.js.map +1 -1
  401. package/dist/registries/controllers.mjs +69 -73
  402. package/dist/registries/controllers.mjs.map +1 -1
  403. package/dist/registries/custom-fields.d.ts +3 -3
  404. package/dist/registries/custom-fields.d.ts.map +1 -1
  405. package/dist/registries/custom-fields.js +75 -65
  406. package/dist/registries/custom-fields.js.map +1 -1
  407. package/dist/registries/custom-fields.mjs +74 -67
  408. package/dist/registries/custom-fields.mjs.map +1 -1
  409. package/dist/registries/hooks.js +46 -49
  410. package/dist/registries/hooks.js.map +1 -1
  411. package/dist/registries/hooks.mjs +45 -51
  412. package/dist/registries/hooks.mjs.map +1 -1
  413. package/dist/registries/index.d.ts +0 -1
  414. package/dist/registries/index.d.ts.map +1 -1
  415. package/dist/registries/middlewares.d.ts +6 -6
  416. package/dist/registries/middlewares.d.ts.map +1 -1
  417. package/dist/registries/middlewares.js +49 -51
  418. package/dist/registries/middlewares.js.map +1 -1
  419. package/dist/registries/middlewares.mjs +48 -53
  420. package/dist/registries/middlewares.mjs.map +1 -1
  421. package/dist/registries/models.js +14 -13
  422. package/dist/registries/models.js.map +1 -1
  423. package/dist/registries/models.mjs +13 -14
  424. package/dist/registries/models.mjs.map +1 -1
  425. package/dist/registries/modules.d.ts +2 -2
  426. package/dist/registries/modules.d.ts.map +1 -1
  427. package/dist/registries/modules.js +39 -36
  428. package/dist/registries/modules.js.map +1 -1
  429. package/dist/registries/modules.mjs +38 -38
  430. package/dist/registries/modules.mjs.map +1 -1
  431. package/dist/registries/namespace.js +21 -20
  432. package/dist/registries/namespace.js.map +1 -1
  433. package/dist/registries/namespace.mjs +20 -23
  434. package/dist/registries/namespace.mjs.map +1 -1
  435. package/dist/registries/plugins.d.ts +5 -5
  436. package/dist/registries/plugins.d.ts.map +1 -1
  437. package/dist/registries/plugins.js +23 -20
  438. package/dist/registries/plugins.js.map +1 -1
  439. package/dist/registries/plugins.mjs +22 -22
  440. package/dist/registries/plugins.mjs.map +1 -1
  441. package/dist/registries/policies.d.ts +22 -10
  442. package/dist/registries/policies.d.ts.map +1 -1
  443. package/dist/registries/policies.js +107 -54
  444. package/dist/registries/policies.js.map +1 -1
  445. package/dist/registries/policies.mjs +106 -56
  446. package/dist/registries/policies.mjs.map +1 -1
  447. package/dist/registries/sanitizers.js +23 -22
  448. package/dist/registries/sanitizers.js.map +1 -1
  449. package/dist/registries/sanitizers.mjs +22 -22
  450. package/dist/registries/sanitizers.mjs.map +1 -1
  451. package/dist/registries/services.d.ts +8 -8
  452. package/dist/registries/services.d.ts.map +1 -1
  453. package/dist/registries/services.js +71 -71
  454. package/dist/registries/services.js.map +1 -1
  455. package/dist/registries/services.mjs +70 -73
  456. package/dist/registries/services.mjs.map +1 -1
  457. package/dist/registries/validators.js +23 -22
  458. package/dist/registries/validators.js.map +1 -1
  459. package/dist/registries/validators.mjs +22 -22
  460. package/dist/registries/validators.mjs.map +1 -1
  461. package/dist/services/auth/index.d.ts +4 -4
  462. package/dist/services/auth/index.d.ts.map +1 -1
  463. package/dist/services/auth/index.js +74 -74
  464. package/dist/services/auth/index.js.map +1 -1
  465. package/dist/services/auth/index.mjs +73 -74
  466. package/dist/services/auth/index.mjs.map +1 -1
  467. package/dist/services/config.d.ts +3 -0
  468. package/dist/services/config.d.ts.map +1 -0
  469. package/dist/services/config.js +51 -0
  470. package/dist/services/config.js.map +1 -0
  471. package/dist/services/config.mjs +49 -0
  472. package/dist/services/config.mjs.map +1 -0
  473. package/dist/services/content-api/index.d.ts +31 -15
  474. package/dist/services/content-api/index.d.ts.map +1 -1
  475. package/dist/services/content-api/index.js +80 -53
  476. package/dist/services/content-api/index.js.map +1 -1
  477. package/dist/services/content-api/index.mjs +79 -53
  478. package/dist/services/content-api/index.mjs.map +1 -1
  479. package/dist/services/content-api/permissions/engine.js +8 -5
  480. package/dist/services/content-api/permissions/engine.js.map +1 -1
  481. package/dist/services/content-api/permissions/engine.mjs +7 -5
  482. package/dist/services/content-api/permissions/engine.mjs.map +1 -1
  483. package/dist/services/content-api/permissions/index.d.ts +13 -15
  484. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  485. package/dist/services/content-api/permissions/index.js +101 -81
  486. package/dist/services/content-api/permissions/index.js.map +1 -1
  487. package/dist/services/content-api/permissions/index.mjs +100 -81
  488. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  489. package/dist/services/content-api/permissions/providers/action.d.ts +5 -6
  490. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  491. package/dist/services/content-api/permissions/providers/action.js +17 -14
  492. package/dist/services/content-api/permissions/providers/action.js.map +1 -1
  493. package/dist/services/content-api/permissions/providers/action.mjs +16 -16
  494. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
  495. package/dist/services/content-api/permissions/providers/condition.d.ts +5 -6
  496. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  497. package/dist/services/content-api/permissions/providers/condition.js +17 -14
  498. package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
  499. package/dist/services/content-api/permissions/providers/condition.mjs +16 -16
  500. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
  501. package/dist/services/core-store.d.ts.map +1 -1
  502. package/dist/services/core-store.js +115 -95
  503. package/dist/services/core-store.js.map +1 -1
  504. package/dist/services/core-store.mjs +114 -97
  505. package/dist/services/core-store.mjs.map +1 -1
  506. package/dist/services/cron.d.ts +5 -5
  507. package/dist/services/cron.d.ts.map +1 -1
  508. package/dist/services/cron.js +74 -60
  509. package/dist/services/cron.js.map +1 -1
  510. package/dist/services/cron.mjs +73 -62
  511. package/dist/services/cron.mjs.map +1 -1
  512. package/dist/services/custom-fields.d.ts +2 -2
  513. package/dist/services/custom-fields.d.ts.map +1 -1
  514. package/dist/services/custom-fields.js +9 -7
  515. package/dist/services/custom-fields.js.map +1 -1
  516. package/dist/services/custom-fields.mjs +8 -9
  517. package/dist/services/custom-fields.mjs.map +1 -1
  518. package/dist/services/document-service/attributes/index.d.ts +6 -0
  519. package/dist/services/document-service/attributes/index.d.ts.map +1 -0
  520. package/dist/services/document-service/attributes/index.js +27 -0
  521. package/dist/services/document-service/attributes/index.js.map +1 -0
  522. package/dist/services/document-service/attributes/index.mjs +25 -0
  523. package/dist/services/document-service/attributes/index.mjs.map +1 -0
  524. package/dist/services/document-service/attributes/transforms.d.ts +10 -0
  525. package/dist/services/document-service/attributes/transforms.d.ts.map +1 -0
  526. package/dist/services/document-service/attributes/transforms.js +21 -0
  527. package/dist/services/document-service/attributes/transforms.js.map +1 -0
  528. package/dist/services/document-service/attributes/transforms.mjs +19 -0
  529. package/dist/services/document-service/attributes/transforms.mjs.map +1 -0
  530. package/dist/services/document-service/common.d.ts +2 -2
  531. package/dist/services/document-service/common.d.ts.map +1 -1
  532. package/dist/services/document-service/common.js +5 -4
  533. package/dist/services/document-service/common.js.map +1 -1
  534. package/dist/services/document-service/common.mjs +4 -5
  535. package/dist/services/document-service/common.mjs.map +1 -1
  536. package/dist/services/document-service/components.d.ts +25 -1
  537. package/dist/services/document-service/components.d.ts.map +1 -1
  538. package/dist/services/document-service/components.js +286 -0
  539. package/dist/services/document-service/components.js.map +1 -0
  540. package/dist/services/document-service/components.mjs +278 -0
  541. package/dist/services/document-service/components.mjs.map +1 -0
  542. package/dist/services/document-service/draft-and-publish.d.ts +9 -23
  543. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  544. package/dist/services/document-service/draft-and-publish.js +104 -36
  545. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  546. package/dist/services/document-service/draft-and-publish.mjs +96 -35
  547. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  548. package/dist/services/document-service/entries.d.ts +10 -0
  549. package/dist/services/document-service/entries.d.ts.map +1 -0
  550. package/dist/services/document-service/entries.js +113 -0
  551. package/dist/services/document-service/entries.js.map +1 -0
  552. package/dist/services/document-service/entries.mjs +111 -0
  553. package/dist/services/document-service/entries.mjs.map +1 -0
  554. package/dist/services/document-service/events.d.ts +25 -0
  555. package/dist/services/document-service/events.d.ts.map +1 -0
  556. package/dist/services/document-service/events.js +59 -0
  557. package/dist/services/document-service/events.js.map +1 -0
  558. package/dist/services/document-service/events.mjs +57 -0
  559. package/dist/services/document-service/events.mjs.map +1 -0
  560. package/dist/services/document-service/index.d.ts +3 -4
  561. package/dist/services/document-service/index.d.ts.map +1 -1
  562. package/dist/services/document-service/index.js +53 -19
  563. package/dist/services/document-service/index.js.map +1 -1
  564. package/dist/services/document-service/index.mjs +52 -20
  565. package/dist/services/document-service/index.mjs.map +1 -1
  566. package/dist/services/document-service/internationalization.d.ts +6 -5
  567. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  568. package/dist/services/document-service/internationalization.js +68 -29
  569. package/dist/services/document-service/internationalization.js.map +1 -1
  570. package/dist/services/document-service/internationalization.mjs +63 -29
  571. package/dist/services/document-service/internationalization.mjs.map +1 -1
  572. package/dist/services/document-service/middlewares/errors.d.ts +6 -0
  573. package/dist/services/document-service/middlewares/errors.d.ts.map +1 -0
  574. package/dist/services/document-service/middlewares/errors.js +29 -0
  575. package/dist/services/document-service/middlewares/errors.js.map +1 -0
  576. package/dist/services/document-service/middlewares/errors.mjs +27 -0
  577. package/dist/services/document-service/middlewares/errors.mjs.map +1 -0
  578. package/dist/services/document-service/middlewares/index.d.ts +3 -0
  579. package/dist/services/document-service/middlewares/index.d.ts.map +1 -0
  580. package/dist/services/document-service/middlewares/middleware-manager.d.ts +10 -0
  581. package/dist/services/document-service/middlewares/middleware-manager.d.ts.map +1 -0
  582. package/dist/services/document-service/middlewares/middleware-manager.js +51 -0
  583. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -0
  584. package/dist/services/document-service/middlewares/middleware-manager.mjs +49 -0
  585. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -0
  586. package/dist/services/document-service/params.d.ts +3 -1
  587. package/dist/services/document-service/params.d.ts.map +1 -1
  588. package/dist/services/document-service/params.js +14 -0
  589. package/dist/services/document-service/params.js.map +1 -0
  590. package/dist/services/document-service/params.mjs +12 -0
  591. package/dist/services/document-service/params.mjs.map +1 -0
  592. package/dist/services/document-service/repository.d.ts +3 -0
  593. package/dist/services/document-service/repository.d.ts.map +1 -0
  594. package/dist/services/document-service/repository.js +364 -0
  595. package/dist/services/document-service/repository.js.map +1 -0
  596. package/dist/services/document-service/repository.mjs +362 -0
  597. package/dist/services/document-service/repository.mjs.map +1 -0
  598. package/dist/services/document-service/transform/data.d.ts.map +1 -1
  599. package/dist/services/document-service/transform/data.js +22 -10
  600. package/dist/services/document-service/transform/data.js.map +1 -1
  601. package/dist/services/document-service/transform/data.mjs +21 -11
  602. package/dist/services/document-service/transform/data.mjs.map +1 -1
  603. package/dist/services/document-service/transform/fields.d.ts +2 -2
  604. package/dist/services/document-service/transform/fields.d.ts.map +1 -1
  605. package/dist/services/document-service/transform/fields.js +29 -19
  606. package/dist/services/document-service/transform/fields.js.map +1 -1
  607. package/dist/services/document-service/transform/fields.mjs +28 -20
  608. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  609. package/dist/services/document-service/transform/id-map.d.ts +4 -4
  610. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  611. package/dist/services/document-service/transform/id-map.js +117 -64
  612. package/dist/services/document-service/transform/id-map.js.map +1 -1
  613. package/dist/services/document-service/transform/id-map.mjs +116 -65
  614. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  615. package/dist/services/document-service/transform/id-transform.d.ts +4 -25
  616. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  617. package/dist/services/document-service/transform/id-transform.js +39 -55
  618. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  619. package/dist/services/document-service/transform/id-transform.mjs +37 -55
  620. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  621. package/dist/services/document-service/transform/populate.d.ts +5 -2
  622. package/dist/services/document-service/transform/populate.d.ts.map +1 -1
  623. package/dist/services/document-service/transform/populate.js +23 -28
  624. package/dist/services/document-service/transform/populate.js.map +1 -1
  625. package/dist/services/document-service/transform/populate.mjs +22 -29
  626. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  627. package/dist/services/document-service/transform/query.d.ts +5 -0
  628. package/dist/services/document-service/transform/query.d.ts.map +1 -0
  629. package/dist/services/document-service/transform/query.js +14 -0
  630. package/dist/services/document-service/transform/query.js.map +1 -0
  631. package/dist/services/document-service/transform/query.mjs +12 -0
  632. package/dist/services/document-service/transform/query.mjs.map +1 -0
  633. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +8 -7
  634. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  635. package/dist/services/document-service/transform/relations/extract/data-ids.js +75 -71
  636. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  637. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +74 -72
  638. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  639. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts +9 -5
  640. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  641. package/dist/services/document-service/transform/relations/transform/data-ids.js +105 -110
  642. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  643. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +104 -111
  644. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  645. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts +9 -0
  646. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts.map +1 -0
  647. package/dist/services/document-service/transform/relations/transform/default-locale.js +50 -0
  648. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -0
  649. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +48 -0
  650. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -0
  651. package/dist/services/document-service/transform/relations/utils/data.d.ts +2 -4
  652. package/dist/services/document-service/transform/relations/utils/data.d.ts.map +1 -1
  653. package/dist/services/document-service/transform/relations/utils/dp.d.ts +10 -0
  654. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -0
  655. package/dist/services/document-service/transform/relations/utils/dp.js +56 -0
  656. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -0
  657. package/dist/services/document-service/transform/relations/utils/dp.mjs +54 -0
  658. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -0
  659. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +8 -8
  660. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  661. package/dist/services/document-service/transform/relations/utils/i18n.js +19 -23
  662. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  663. package/dist/services/document-service/transform/relations/utils/i18n.mjs +18 -26
  664. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  665. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts +6 -0
  666. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -0
  667. package/dist/services/document-service/transform/relations/utils/map-relation.js +130 -0
  668. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -0
  669. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +127 -0
  670. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -0
  671. package/dist/services/document-service/transform/relations/utils/types.d.ts +15 -2
  672. package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -1
  673. package/dist/services/document-service/transform/types.d.ts +4 -4
  674. package/dist/services/document-service/transform/types.d.ts.map +1 -1
  675. package/dist/services/document-service/utils/bidirectional-relations.d.ts +95 -0
  676. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -0
  677. package/dist/services/document-service/utils/bidirectional-relations.js +148 -0
  678. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -0
  679. package/dist/services/document-service/utils/bidirectional-relations.mjs +145 -0
  680. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -0
  681. package/dist/services/document-service/utils/populate.d.ts +9 -2
  682. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  683. package/dist/services/document-service/utils/populate.js +67 -37
  684. package/dist/services/document-service/utils/populate.js.map +1 -1
  685. package/dist/services/document-service/utils/populate.mjs +66 -38
  686. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  687. package/dist/services/document-service/utils/unidirectional-relations.d.ts +36 -0
  688. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -0
  689. package/dist/services/document-service/utils/unidirectional-relations.js +116 -0
  690. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -0
  691. package/dist/services/document-service/utils/unidirectional-relations.mjs +113 -0
  692. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -0
  693. package/dist/services/entity-service/index.d.ts +4 -6
  694. package/dist/services/entity-service/index.d.ts.map +1 -1
  695. package/dist/services/entity-service/index.js +229 -319
  696. package/dist/services/entity-service/index.js.map +1 -1
  697. package/dist/services/entity-service/index.mjs +228 -318
  698. package/dist/services/entity-service/index.mjs.map +1 -1
  699. package/dist/services/entity-validator/blocks-validator.d.ts +1 -2
  700. package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
  701. package/dist/services/entity-validator/blocks-validator.js +137 -104
  702. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  703. package/dist/services/entity-validator/blocks-validator.mjs +135 -105
  704. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  705. package/dist/services/entity-validator/index.d.ts +16 -2
  706. package/dist/services/entity-validator/index.d.ts.map +1 -1
  707. package/dist/services/entity-validator/index.js +362 -300
  708. package/dist/services/entity-validator/index.js.map +1 -1
  709. package/dist/services/entity-validator/index.mjs +358 -297
  710. package/dist/services/entity-validator/index.mjs.map +1 -1
  711. package/dist/services/entity-validator/validators.d.ts +36 -25
  712. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  713. package/dist/services/entity-validator/validators.js +283 -105
  714. package/dist/services/entity-validator/validators.js.map +1 -1
  715. package/dist/services/entity-validator/validators.mjs +274 -103
  716. package/dist/services/entity-validator/validators.mjs.map +1 -1
  717. package/dist/services/errors.js +65 -65
  718. package/dist/services/errors.js.map +1 -1
  719. package/dist/services/errors.mjs +64 -66
  720. package/dist/services/errors.mjs.map +1 -1
  721. package/dist/services/event-hub.d.ts +1 -0
  722. package/dist/services/event-hub.d.ts.map +1 -1
  723. package/dist/services/event-hub.js +82 -64
  724. package/dist/services/event-hub.js.map +1 -1
  725. package/dist/services/event-hub.mjs +81 -66
  726. package/dist/services/event-hub.mjs.map +1 -1
  727. package/dist/services/features.d.ts +3 -3
  728. package/dist/services/features.d.ts.map +1 -1
  729. package/dist/services/features.js +19 -14
  730. package/dist/services/features.js.map +1 -1
  731. package/dist/services/features.mjs +18 -15
  732. package/dist/services/features.mjs.map +1 -1
  733. package/dist/services/fs.d.ts +2 -2
  734. package/dist/services/fs.d.ts.map +1 -1
  735. package/dist/services/fs.js +41 -40
  736. package/dist/services/fs.js.map +1 -1
  737. package/dist/services/fs.mjs +40 -39
  738. package/dist/services/fs.mjs.map +1 -1
  739. package/dist/services/metrics/admin-user-hash.d.ts +2 -2
  740. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  741. package/dist/services/metrics/admin-user-hash.js +13 -11
  742. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  743. package/dist/services/metrics/admin-user-hash.mjs +12 -10
  744. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  745. package/dist/services/metrics/index.d.ts +2 -2
  746. package/dist/services/metrics/index.d.ts.map +1 -1
  747. package/dist/services/metrics/index.js +46 -40
  748. package/dist/services/metrics/index.js.map +1 -1
  749. package/dist/services/metrics/index.mjs +45 -42
  750. package/dist/services/metrics/index.mjs.map +1 -1
  751. package/dist/services/metrics/is-truthy.js +13 -6
  752. package/dist/services/metrics/is-truthy.js.map +1 -1
  753. package/dist/services/metrics/is-truthy.mjs +12 -6
  754. package/dist/services/metrics/is-truthy.mjs.map +1 -1
  755. package/dist/services/metrics/middleware.d.ts +2 -2
  756. package/dist/services/metrics/middleware.d.ts.map +1 -1
  757. package/dist/services/metrics/middleware.js +37 -22
  758. package/dist/services/metrics/middleware.js.map +1 -1
  759. package/dist/services/metrics/middleware.mjs +36 -24
  760. package/dist/services/metrics/middleware.mjs.map +1 -1
  761. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  762. package/dist/services/metrics/rate-limiter.js +24 -19
  763. package/dist/services/metrics/rate-limiter.js.map +1 -1
  764. package/dist/services/metrics/rate-limiter.mjs +23 -21
  765. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  766. package/dist/services/metrics/sender.d.ts +3 -3
  767. package/dist/services/metrics/sender.d.ts.map +1 -1
  768. package/dist/services/metrics/sender.js +78 -69
  769. package/dist/services/metrics/sender.js.map +1 -1
  770. package/dist/services/metrics/sender.mjs +77 -64
  771. package/dist/services/metrics/sender.mjs.map +1 -1
  772. package/dist/services/query-params.d.ts +7 -0
  773. package/dist/services/query-params.d.ts.map +1 -0
  774. package/dist/services/query-params.js +15 -0
  775. package/dist/services/query-params.js.map +1 -0
  776. package/dist/services/query-params.mjs +13 -0
  777. package/dist/services/query-params.mjs.map +1 -0
  778. package/dist/services/reloader.d.ts +7 -0
  779. package/dist/services/reloader.d.ts.map +1 -0
  780. package/dist/services/reloader.js +39 -0
  781. package/dist/services/reloader.js.map +1 -0
  782. package/dist/services/reloader.mjs +37 -0
  783. package/dist/services/reloader.mjs.map +1 -0
  784. package/dist/services/request-context.js +11 -8
  785. package/dist/services/request-context.js.map +1 -1
  786. package/dist/services/request-context.mjs +10 -10
  787. package/dist/services/request-context.mjs.map +1 -1
  788. package/dist/services/server/admin-api.d.ts +3 -3
  789. package/dist/services/server/admin-api.d.ts.map +1 -1
  790. package/dist/services/server/admin-api.js +11 -10
  791. package/dist/services/server/admin-api.js.map +1 -1
  792. package/dist/services/server/admin-api.mjs +10 -11
  793. package/dist/services/server/admin-api.mjs.map +1 -1
  794. package/dist/services/server/api.d.ts +3 -3
  795. package/dist/services/server/api.d.ts.map +1 -1
  796. package/dist/services/server/api.js +33 -27
  797. package/dist/services/server/api.js.map +1 -1
  798. package/dist/services/server/api.mjs +32 -26
  799. package/dist/services/server/api.mjs.map +1 -1
  800. package/dist/services/server/compose-endpoint.d.ts +2 -2
  801. package/dist/services/server/compose-endpoint.d.ts.map +1 -1
  802. package/dist/services/server/compose-endpoint.js +116 -106
  803. package/dist/services/server/compose-endpoint.js.map +1 -1
  804. package/dist/services/server/compose-endpoint.mjs +115 -106
  805. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  806. package/dist/services/server/content-api.d.ts +3 -3
  807. package/dist/services/server/content-api.d.ts.map +1 -1
  808. package/dist/services/server/content-api.js +11 -9
  809. package/dist/services/server/content-api.js.map +1 -1
  810. package/dist/services/server/content-api.mjs +10 -10
  811. package/dist/services/server/content-api.mjs.map +1 -1
  812. package/dist/services/server/http-server.d.ts +2 -2
  813. package/dist/services/server/http-server.d.ts.map +1 -1
  814. package/dist/services/server/http-server.js +48 -44
  815. package/dist/services/server/http-server.js.map +1 -1
  816. package/dist/services/server/http-server.mjs +47 -43
  817. package/dist/services/server/http-server.mjs.map +1 -1
  818. package/dist/services/server/index.d.ts +2 -2
  819. package/dist/services/server/index.d.ts.map +1 -1
  820. package/dist/services/server/index.js +85 -83
  821. package/dist/services/server/index.js.map +1 -1
  822. package/dist/services/server/index.mjs +84 -82
  823. package/dist/services/server/index.mjs.map +1 -1
  824. package/dist/services/server/koa.d.ts.map +1 -1
  825. package/dist/services/server/koa.js +49 -47
  826. package/dist/services/server/koa.js.map +1 -1
  827. package/dist/services/server/koa.mjs +48 -44
  828. package/dist/services/server/koa.mjs.map +1 -1
  829. package/dist/services/server/middleware.d.ts +4 -4
  830. package/dist/services/server/middleware.d.ts.map +1 -1
  831. package/dist/services/server/middleware.js +86 -82
  832. package/dist/services/server/middleware.js.map +1 -1
  833. package/dist/services/server/middleware.mjs +85 -82
  834. package/dist/services/server/middleware.mjs.map +1 -1
  835. package/dist/services/server/policy.d.ts +3 -3
  836. package/dist/services/server/policy.d.ts.map +1 -1
  837. package/dist/services/server/policy.js +25 -18
  838. package/dist/services/server/policy.js.map +1 -1
  839. package/dist/services/server/policy.mjs +23 -18
  840. package/dist/services/server/policy.mjs.map +1 -1
  841. package/dist/services/server/register-middlewares.d.ts +2 -2
  842. package/dist/services/server/register-middlewares.d.ts.map +1 -1
  843. package/dist/services/server/register-middlewares.js +68 -61
  844. package/dist/services/server/register-middlewares.js.map +1 -1
  845. package/dist/services/server/register-middlewares.mjs +67 -63
  846. package/dist/services/server/register-middlewares.mjs.map +1 -1
  847. package/dist/services/server/register-routes.d.ts +2 -2
  848. package/dist/services/server/register-routes.d.ts.map +1 -1
  849. package/dist/services/server/register-routes.js +90 -67
  850. package/dist/services/server/register-routes.js.map +1 -1
  851. package/dist/services/server/register-routes.mjs +89 -67
  852. package/dist/services/server/register-routes.mjs.map +1 -1
  853. package/dist/services/server/routing.d.ts +5 -5
  854. package/dist/services/server/routing.d.ts.map +1 -1
  855. package/dist/services/server/routing.js +94 -81
  856. package/dist/services/server/routing.js.map +1 -1
  857. package/dist/services/server/routing.mjs +93 -81
  858. package/dist/services/server/routing.mjs.map +1 -1
  859. package/dist/services/utils/dynamic-zones.d.ts.map +1 -1
  860. package/dist/services/utils/dynamic-zones.js +13 -13
  861. package/dist/services/utils/dynamic-zones.js.map +1 -1
  862. package/dist/services/utils/dynamic-zones.mjs +12 -15
  863. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  864. package/dist/services/webhook-runner.d.ts +2 -1
  865. package/dist/services/webhook-runner.d.ts.map +1 -1
  866. package/dist/services/webhook-runner.js +124 -122
  867. package/dist/services/webhook-runner.js.map +1 -1
  868. package/dist/services/webhook-runner.mjs +123 -121
  869. package/dist/services/webhook-runner.mjs.map +1 -1
  870. package/dist/services/webhook-store.d.ts +2 -8
  871. package/dist/services/webhook-store.d.ts.map +1 -1
  872. package/dist/services/webhook-store.js +132 -93
  873. package/dist/services/webhook-store.js.map +1 -1
  874. package/dist/services/webhook-store.mjs +131 -95
  875. package/dist/services/webhook-store.mjs.map +1 -1
  876. package/dist/services/worker-queue.js +44 -49
  877. package/dist/services/worker-queue.js.map +1 -1
  878. package/dist/services/worker-queue.mjs +43 -49
  879. package/dist/services/worker-queue.mjs.map +1 -1
  880. package/dist/utils/convert-custom-field-type.d.ts +2 -2
  881. package/dist/utils/convert-custom-field-type.d.ts.map +1 -1
  882. package/dist/utils/convert-custom-field-type.js +17 -20
  883. package/dist/utils/convert-custom-field-type.js.map +1 -1
  884. package/dist/utils/convert-custom-field-type.mjs +16 -21
  885. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  886. package/dist/utils/cron.js +64 -30
  887. package/dist/utils/cron.js.map +1 -1
  888. package/dist/utils/cron.mjs +63 -31
  889. package/dist/utils/cron.mjs.map +1 -1
  890. package/dist/utils/fetch.d.ts +3 -3
  891. package/dist/utils/fetch.d.ts.map +1 -1
  892. package/dist/utils/fetch.js +24 -17
  893. package/dist/utils/fetch.js.map +1 -1
  894. package/dist/utils/fetch.mjs +23 -18
  895. package/dist/utils/fetch.mjs.map +1 -1
  896. package/dist/utils/filepath-to-prop-path.d.ts +1 -1
  897. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  898. package/dist/utils/filepath-to-prop-path.js +22 -9
  899. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  900. package/dist/utils/filepath-to-prop-path.mjs +20 -7
  901. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  902. package/dist/utils/index.d.ts +2 -1
  903. package/dist/utils/index.d.ts.map +1 -1
  904. package/dist/utils/is-initialized.d.ts +2 -2
  905. package/dist/utils/is-initialized.d.ts.map +1 -1
  906. package/dist/utils/is-initialized.js +21 -12
  907. package/dist/utils/is-initialized.js.map +1 -1
  908. package/dist/utils/is-initialized.mjs +20 -13
  909. package/dist/utils/is-initialized.mjs.map +1 -1
  910. package/dist/utils/lifecycles.js +6 -5
  911. package/dist/utils/lifecycles.js.map +1 -1
  912. package/dist/utils/lifecycles.mjs +5 -6
  913. package/dist/utils/lifecycles.mjs.map +1 -1
  914. package/dist/utils/load-config-file.js +40 -38
  915. package/dist/utils/load-config-file.js.map +1 -1
  916. package/dist/utils/load-config-file.mjs +39 -36
  917. package/dist/utils/load-config-file.mjs.map +1 -1
  918. package/dist/utils/load-files.d.ts.map +1 -1
  919. package/dist/utils/load-files.js +40 -35
  920. package/dist/utils/load-files.js.map +1 -1
  921. package/dist/utils/load-files.mjs +39 -32
  922. package/dist/utils/load-files.mjs.map +1 -1
  923. package/dist/utils/open-browser.d.ts +2 -2
  924. package/dist/utils/open-browser.d.ts.map +1 -1
  925. package/dist/utils/open-browser.js +8 -8
  926. package/dist/utils/open-browser.js.map +1 -1
  927. package/dist/utils/open-browser.mjs +7 -7
  928. package/dist/utils/open-browser.mjs.map +1 -1
  929. package/dist/utils/resolve-working-dirs.d.ts +19 -0
  930. package/dist/utils/resolve-working-dirs.d.ts.map +1 -0
  931. package/dist/utils/resolve-working-dirs.js +26 -0
  932. package/dist/utils/resolve-working-dirs.js.map +1 -0
  933. package/dist/utils/resolve-working-dirs.mjs +24 -0
  934. package/dist/utils/resolve-working-dirs.mjs.map +1 -0
  935. package/dist/utils/signals.d.ts +2 -2
  936. package/dist/utils/signals.d.ts.map +1 -1
  937. package/dist/utils/signals.js +20 -14
  938. package/dist/utils/signals.js.map +1 -1
  939. package/dist/utils/signals.mjs +19 -15
  940. package/dist/utils/signals.mjs.map +1 -1
  941. package/dist/utils/startup-logger.d.ts +2 -2
  942. package/dist/utils/startup-logger.d.ts.map +1 -1
  943. package/dist/utils/startup-logger.js +107 -78
  944. package/dist/utils/startup-logger.js.map +1 -1
  945. package/dist/utils/startup-logger.mjs +106 -75
  946. package/dist/utils/startup-logger.mjs.map +1 -1
  947. package/dist/utils/transform-content-types-to-models.d.ts +461 -3
  948. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  949. package/dist/utils/transform-content-types-to-models.js +362 -183
  950. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  951. package/dist/utils/transform-content-types-to-models.mjs +351 -182
  952. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  953. package/dist/utils/update-notifier/index.d.ts +2 -7
  954. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  955. package/dist/utils/update-notifier/index.js +66 -74
  956. package/dist/utils/update-notifier/index.js.map +1 -1
  957. package/dist/utils/update-notifier/index.mjs +65 -68
  958. package/dist/utils/update-notifier/index.mjs.map +1 -1
  959. package/package.json +43 -40
  960. package/dist/registries/config.d.ts +0 -4
  961. package/dist/registries/config.d.ts.map +0 -1
  962. package/dist/registries/config.js +0 -23
  963. package/dist/registries/config.js.map +0 -1
  964. package/dist/registries/config.mjs +0 -22
  965. package/dist/registries/config.mjs.map +0 -1
  966. package/dist/services/document-service/collection-type.d.ts +0 -4
  967. package/dist/services/document-service/collection-type.d.ts.map +0 -1
  968. package/dist/services/document-service/collection-type.js +0 -145
  969. package/dist/services/document-service/collection-type.js.map +0 -1
  970. package/dist/services/document-service/collection-type.mjs +0 -145
  971. package/dist/services/document-service/collection-type.mjs.map +0 -1
  972. package/dist/services/document-service/document-engine.d.ts +0 -8
  973. package/dist/services/document-service/document-engine.d.ts.map +0 -1
  974. package/dist/services/document-service/document-engine.js +0 -249
  975. package/dist/services/document-service/document-engine.js.map +0 -1
  976. package/dist/services/document-service/document-engine.mjs +0 -250
  977. package/dist/services/document-service/document-engine.mjs.map +0 -1
  978. package/dist/services/document-service/middlewares.d.ts +0 -8
  979. package/dist/services/document-service/middlewares.d.ts.map +0 -1
  980. package/dist/services/document-service/middlewares.js +0 -46
  981. package/dist/services/document-service/middlewares.js.map +0 -1
  982. package/dist/services/document-service/middlewares.mjs +0 -46
  983. package/dist/services/document-service/middlewares.mjs.map +0 -1
  984. package/dist/services/document-service/repository-factory.d.ts +0 -3
  985. package/dist/services/document-service/repository-factory.d.ts.map +0 -1
  986. package/dist/services/document-service/repository-factory.js +0 -12
  987. package/dist/services/document-service/repository-factory.js.map +0 -1
  988. package/dist/services/document-service/repository-factory.mjs +0 -12
  989. package/dist/services/document-service/repository-factory.mjs.map +0 -1
  990. package/dist/services/document-service/single-type.d.ts +0 -4
  991. package/dist/services/document-service/single-type.d.ts.map +0 -1
  992. package/dist/services/document-service/single-type.js +0 -92
  993. package/dist/services/document-service/single-type.js.map +0 -1
  994. package/dist/services/document-service/single-type.mjs +0 -92
  995. package/dist/services/document-service/single-type.mjs.map +0 -1
  996. package/dist/services/document-service/transform/filters.d.ts +0 -3
  997. package/dist/services/document-service/transform/filters.d.ts.map +0 -1
  998. package/dist/services/document-service/transform/filters.js +0 -49
  999. package/dist/services/document-service/transform/filters.js.map +0 -1
  1000. package/dist/services/document-service/transform/filters.mjs +0 -49
  1001. package/dist/services/document-service/transform/filters.mjs.map +0 -1
  1002. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts +0 -4
  1003. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts.map +0 -1
  1004. package/dist/services/document-service/transform/relations/transform/output-ids.js +0 -26
  1005. package/dist/services/document-service/transform/relations/transform/output-ids.js.map +0 -1
  1006. package/dist/services/document-service/transform/relations/transform/output-ids.mjs +0 -26
  1007. package/dist/services/document-service/transform/relations/transform/output-ids.mjs.map +0 -1
  1008. package/dist/services/document-service/transform/relations/utils/data.js +0 -12
  1009. package/dist/services/document-service/transform/relations/utils/data.js.map +0 -1
  1010. package/dist/services/document-service/transform/relations/utils/data.mjs +0 -12
  1011. package/dist/services/document-service/transform/relations/utils/data.mjs.map +0 -1
  1012. package/dist/services/document-service/transform/sort.d.ts +0 -5
  1013. package/dist/services/document-service/transform/sort.d.ts.map +0 -1
  1014. package/dist/services/document-service/transform/sort.js +0 -44
  1015. package/dist/services/document-service/transform/sort.js.map +0 -1
  1016. package/dist/services/document-service/transform/sort.mjs +0 -44
  1017. package/dist/services/document-service/transform/sort.mjs.map +0 -1
  1018. package/dist/services/document-service/transform/utils.d.ts +0 -9
  1019. package/dist/services/document-service/transform/utils.d.ts.map +0 -1
  1020. package/dist/services/document-service/transform/utils.js +0 -23
  1021. package/dist/services/document-service/transform/utils.js.map +0 -1
  1022. package/dist/services/document-service/transform/utils.mjs +0 -23
  1023. package/dist/services/document-service/transform/utils.mjs.map +0 -1
  1024. package/dist/services/entity-service/attributes/index.d.ts +0 -6
  1025. package/dist/services/entity-service/attributes/index.d.ts.map +0 -1
  1026. package/dist/services/entity-service/attributes/index.js +0 -22
  1027. package/dist/services/entity-service/attributes/index.js.map +0 -1
  1028. package/dist/services/entity-service/attributes/index.mjs +0 -22
  1029. package/dist/services/entity-service/attributes/index.mjs.map +0 -1
  1030. package/dist/services/entity-service/attributes/transforms.d.ts +0 -10
  1031. package/dist/services/entity-service/attributes/transforms.d.ts.map +0 -1
  1032. package/dist/services/entity-service/attributes/transforms.js +0 -20
  1033. package/dist/services/entity-service/attributes/transforms.js.map +0 -1
  1034. package/dist/services/entity-service/attributes/transforms.mjs +0 -19
  1035. package/dist/services/entity-service/attributes/transforms.mjs.map +0 -1
  1036. package/dist/services/entity-service/components.d.ts +0 -23
  1037. package/dist/services/entity-service/components.d.ts.map +0 -1
  1038. package/dist/services/entity-service/components.js +0 -384
  1039. package/dist/services/entity-service/components.js.map +0 -1
  1040. package/dist/services/entity-service/components.mjs +0 -382
  1041. package/dist/services/entity-service/components.mjs.map +0 -1
  1042. package/dist/services/entity-service/params.d.ts +0 -8
  1043. package/dist/services/entity-service/params.d.ts.map +0 -1
  1044. package/dist/services/entity-service/params.js +0 -8
  1045. package/dist/services/entity-service/params.js.map +0 -1
  1046. package/dist/services/entity-service/params.mjs +0 -8
  1047. package/dist/services/entity-service/params.mjs.map +0 -1
  1048. package/dist/services/utils/upload-files.d.ts +0 -8
  1049. package/dist/services/utils/upload-files.d.ts.map +0 -1
  1050. package/dist/services/utils/upload-files.js +0 -64
  1051. package/dist/services/utils/upload-files.js.map +0 -1
  1052. package/dist/services/utils/upload-files.mjs +0 -63
  1053. package/dist/services/utils/upload-files.mjs.map +0 -1
  1054. package/dist/utils/get-dirs.d.ts +0 -9
  1055. package/dist/utils/get-dirs.d.ts.map +0 -1
  1056. package/dist/utils/get-dirs.js +0 -30
  1057. package/dist/utils/get-dirs.js.map +0 -1
  1058. package/dist/utils/get-dirs.mjs +0 -30
  1059. package/dist/utils/get-dirs.mjs.map +0 -1
@@ -1,121 +1,299 @@
1
- "use strict";
2
- const _ = require("lodash");
3
- const strapiUtils = require("@strapi/utils");
4
- const blocksValidator = require("./blocks-validator.js");
5
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
6
- const ___default = /* @__PURE__ */ _interopDefault(_);
7
- const strapiUtils__default = /* @__PURE__ */ _interopDefault(strapiUtils);
8
- const { yup } = strapiUtils__default.default;
9
- const addMinLengthValidator = (validator, {
10
- attr
11
- }, { isDraft }) => {
12
- return attr.minLength && ___default.default.isInteger(attr.minLength) && !isDraft ? validator.min(attr.minLength) : validator;
1
+ 'use strict';
2
+
3
+ var _ = require('lodash');
4
+ var strapiUtils = require('@strapi/utils');
5
+ var blocksValidator = require('./blocks-validator.js');
6
+
7
+ /* Validator utils */ /**
8
+ * Adds minLength validator
9
+ */ const addMinLengthValidator = (validator, { attr }, { isDraft })=>{
10
+ return attr.minLength && _.isInteger(attr.minLength) && !isDraft ? validator.min(attr.minLength) : validator;
13
11
  };
14
- const addMaxLengthValidator = (validator, {
15
- attr
16
- }) => {
17
- return attr.maxLength && ___default.default.isInteger(attr.maxLength) ? validator.max(attr.maxLength) : validator;
12
+ /**
13
+ * Adds maxLength validator
14
+ * @returns {StringSchema}
15
+ */ const addMaxLengthValidator = (validator, { attr })=>{
16
+ return attr.maxLength && _.isInteger(attr.maxLength) ? validator.max(attr.maxLength) : validator;
18
17
  };
19
- const addMinIntegerValidator = (validator, {
20
- attr
21
- }) => ___default.default.isNumber(attr.min) ? validator.min(___default.default.toInteger(attr.min)) : validator;
22
- const addMaxIntegerValidator = (validator, {
23
- attr
24
- }) => ___default.default.isNumber(attr.max) ? validator.max(___default.default.toInteger(attr.max)) : validator;
25
- const addMinFloatValidator = (validator, {
26
- attr
27
- }) => ___default.default.isNumber(attr.min) ? validator.min(attr.min) : validator;
28
- const addMaxFloatValidator = (validator, {
29
- attr
30
- }) => ___default.default.isNumber(attr.max) ? validator.max(attr.max) : validator;
31
- const addStringRegexValidator = (validator, {
32
- attr
33
- }) => {
34
- return "regex" in attr && !___default.default.isUndefined(attr.regex) ? validator.matches(new RegExp(attr.regex), { excludeEmptyString: !attr.required }) : validator;
18
+ /**
19
+ * Adds min integer validator
20
+ * @returns {NumberSchema}
21
+ */ const addMinIntegerValidator = (validator, { attr }, { isDraft })=>_.isNumber(attr.min) && !isDraft ? validator.min(_.toInteger(attr.min)) : validator;
22
+ /**
23
+ * Adds max integer validator
24
+ */ const addMaxIntegerValidator = (validator, { attr })=>_.isNumber(attr.max) ? validator.max(_.toInteger(attr.max)) : validator;
25
+ /**
26
+ * Adds min float/decimal validator
27
+ */ const addMinFloatValidator = (validator, { attr }, { isDraft })=>_.isNumber(attr.min) && !isDraft ? validator.min(attr.min) : validator;
28
+ /**
29
+ * Adds max float/decimal validator
30
+ */ const addMaxFloatValidator = (validator, { attr })=>_.isNumber(attr.max) ? validator.max(attr.max) : validator;
31
+ /**
32
+ * Adds regex validator
33
+ */ const addStringRegexValidator = (validator, { attr }, { isDraft })=>{
34
+ return 'regex' in attr && !_.isUndefined(attr.regex) && !isDraft ? validator.matches(new RegExp(attr.regex), {
35
+ excludeEmptyString: !attr.required
36
+ }) : validator;
35
37
  };
36
- const addUniqueValidator = (validator, { attr, model, updatedAttribute, entity }, options) => {
37
- if (attr.type !== "uid" && !attr.unique) {
38
- return validator;
39
- }
40
- return validator.test("unique", "This attribute must be unique", async (value) => {
41
- const isPublish = options.isDraft === false;
42
- if (___default.default.isNil(value)) {
43
- return true;
38
+ const addUniqueValidator = (validator, { attr, model, updatedAttribute, entity, componentContext }, options)=>{
39
+ if (attr.type !== 'uid' && !attr.unique) {
40
+ return validator;
44
41
  }
45
- if (!isPublish && value === entity?.[updatedAttribute.name]) {
46
- return true;
47
- }
48
- const record = await strapi.db.query(model.uid).findOne({
49
- where: {
50
- locale: options.locale,
51
- publishedAt: options.isDraft ? null : { $notNull: true },
52
- [updatedAttribute.name]: value,
53
- ...entity?.id ? { id: { $ne: entity.id } } : {}
54
- }
42
+ const validateUniqueFieldWithinComponent = async (value)=>{
43
+ if (!componentContext) {
44
+ return false;
45
+ }
46
+ // If we are validating a unique field within a repeatable component,
47
+ // we first need to ensure that the repeatable in the current entity is
48
+ // valid against itself.
49
+ const hasRepeatableData = componentContext.repeatableData.length > 0;
50
+ if (hasRepeatableData) {
51
+ const { name: updatedName, value: updatedValue } = updatedAttribute;
52
+ // Construct the full path to the unique field within the component.
53
+ const pathToCheck = [
54
+ ...componentContext.pathToComponent.slice(1),
55
+ updatedName
56
+ ].join('.');
57
+ // Extract the values from the repeatable data using the constructed path
58
+ const values = componentContext.repeatableData.map((item)=>{
59
+ return pathToCheck.split('.').reduce((acc, key)=>acc[key], item);
60
+ });
61
+ // Check if the value is repeated in the current entity
62
+ const isUpdatedAttributeRepeatedInThisEntity = values.filter((value)=>value === updatedValue).length > 1;
63
+ if (isUpdatedAttributeRepeatedInThisEntity) {
64
+ return false;
65
+ }
66
+ }
67
+ /**
68
+ * When `componentContext` is present it means we are dealing with a unique
69
+ * field within a component.
70
+ *
71
+ * The unique validation must consider the specific context of the
72
+ * component, which will always be contained within a parent content type
73
+ * and may also be nested within another component.
74
+ *
75
+ * We construct a query that takes into account the parent's model UID,
76
+ * dimensions (such as draft and publish state/locale) and excludes the current
77
+ * content type entity by its ID if provided.
78
+ */ const { model: parentModel, options: parentOptions, id: excludeId } = componentContext.parentContent;
79
+ const whereConditions = {};
80
+ const isParentDraft = parentOptions && parentOptions.isDraft;
81
+ whereConditions.publishedAt = isParentDraft ? null : {
82
+ $notNull: true
83
+ };
84
+ if (parentOptions?.locale) {
85
+ whereConditions.locale = parentOptions.locale;
86
+ }
87
+ if (excludeId && !Number.isNaN(excludeId)) {
88
+ whereConditions.id = {
89
+ $ne: excludeId
90
+ };
91
+ }
92
+ const queryUid = parentModel.uid;
93
+ const queryWhere = {
94
+ ...componentContext.pathToComponent.reduceRight((acc, key)=>({
95
+ [key]: acc
96
+ }), {
97
+ [updatedAttribute.name]: value
98
+ }),
99
+ ...whereConditions
100
+ };
101
+ // The validation should pass if there is no other record found from the query
102
+ return !await strapi.db.query(queryUid).findOne({
103
+ where: queryWhere
104
+ });
105
+ };
106
+ const validateUniqueFieldWithinDynamicZoneComponent = async (startOfPath)=>{
107
+ if (!componentContext) {
108
+ return false;
109
+ }
110
+ const targetComponentUID = model.uid;
111
+ // Ensure that the value is unique within the dynamic zone in this entity.
112
+ const countOfValueInThisEntity = (componentContext?.fullDynamicZoneContent ?? []).reduce((acc, component)=>{
113
+ if (component.__component !== targetComponentUID) {
114
+ return acc;
115
+ }
116
+ const updatedValue = component[updatedAttribute.name];
117
+ return updatedValue === updatedAttribute.value ? acc + 1 : acc;
118
+ }, 0);
119
+ if (countOfValueInThisEntity > 1) {
120
+ // If the value is repeated in the current entity, the validation fails.
121
+ return false;
122
+ }
123
+ // Populate the dynamic zone for any components that share the same value
124
+ // as the updated attribute.
125
+ const query = {
126
+ select: [
127
+ 'id'
128
+ ],
129
+ where: {},
130
+ populate: {
131
+ [startOfPath]: {
132
+ on: {
133
+ [targetComponentUID]: {
134
+ select: [
135
+ 'id'
136
+ ],
137
+ where: {
138
+ [updatedAttribute.name]: updatedAttribute.value
139
+ }
140
+ }
141
+ }
142
+ }
143
+ }
144
+ };
145
+ const { options, id } = componentContext.parentContent;
146
+ if (options?.isDraft !== undefined) {
147
+ query.where.published_at = options.isDraft ? {
148
+ $eq: null
149
+ } : {
150
+ $ne: null
151
+ };
152
+ }
153
+ if (id) {
154
+ query.where.id = {
155
+ $ne: id
156
+ };
157
+ }
158
+ if (options?.locale) {
159
+ query.where.locale = options.locale;
160
+ }
161
+ const parentModelQueryResult = await strapi.db.query(componentContext.parentContent.model.uid).findMany(query);
162
+ // Filter the results to only include results that have components in the
163
+ // dynamic zone that match the target component type.
164
+ const filteredResults = parentModelQueryResult.filter((result)=>Array.isArray(result[startOfPath]) && result[startOfPath].length).flatMap((result)=>result[startOfPath]).filter((dynamicZoneComponent)=>dynamicZoneComponent.__component === targetComponentUID);
165
+ if (filteredResults.length >= 1) {
166
+ return false;
167
+ }
168
+ return true;
169
+ };
170
+ return validator.test('unique', 'This attribute must be unique', async (value)=>{
171
+ /**
172
+ * If the attribute value is `null` or an empty string we want to skip the unique validation.
173
+ * Otherwise it'll only accept a single entry with that value in the database.
174
+ */ if (_.isNil(value) || value === '') {
175
+ return true;
176
+ }
177
+ /**
178
+ * We don't validate any unique constraint for draft entries.
179
+ */ if (options.isDraft) {
180
+ return true;
181
+ }
182
+ const hasPathToComponent = componentContext && componentContext.pathToComponent.length > 0;
183
+ if (hasPathToComponent) {
184
+ // Detect if we are validating within a dynamiczone by checking if the first
185
+ // path is a dynamiczone attribute in the parent content type.
186
+ const startOfPath = componentContext.pathToComponent[0];
187
+ const testingDZ = componentContext.parentContent.model.attributes[startOfPath].type === 'dynamiczone';
188
+ if (testingDZ) {
189
+ return validateUniqueFieldWithinDynamicZoneComponent(startOfPath);
190
+ }
191
+ return validateUniqueFieldWithinComponent(value);
192
+ }
193
+ /**
194
+ * Here we are validating a scalar unique field from the content type's schema.
195
+ * We construct a query to check if the value is unique
196
+ * considering dimensions (e.g. locale, publication state) and excluding the current entity by its ID if available.
197
+ */ const scalarAttributeWhere = {
198
+ [updatedAttribute.name]: value,
199
+ publishedAt: {
200
+ $notNull: true
201
+ }
202
+ };
203
+ if (options?.locale) {
204
+ scalarAttributeWhere.locale = options.locale;
205
+ }
206
+ if (entity?.id) {
207
+ scalarAttributeWhere.id = {
208
+ $ne: entity.id
209
+ };
210
+ }
211
+ // The validation should pass if there is no other record found from the query
212
+ return !await strapi.db.query(model.uid).findOne({
213
+ where: scalarAttributeWhere,
214
+ select: [
215
+ 'id'
216
+ ]
217
+ });
55
218
  });
56
- return !record;
57
- });
58
219
  };
59
- const stringValidator = (metas, options) => {
60
- let schema = yup.string().transform((val, originalVal) => originalVal);
61
- schema = addMinLengthValidator(schema, metas, options);
62
- schema = addMaxLengthValidator(schema, metas);
63
- schema = addStringRegexValidator(schema, metas);
64
- schema = addUniqueValidator(schema, metas, options);
65
- return schema;
220
+ /* Type validators */ const stringValidator = (metas, options)=>{
221
+ let schema = strapiUtils.yup.string().transform((val, originalVal)=>originalVal);
222
+ schema = addMinLengthValidator(schema, metas, options);
223
+ schema = addMaxLengthValidator(schema, metas);
224
+ schema = addStringRegexValidator(schema, metas, options);
225
+ schema = addUniqueValidator(schema, metas, options);
226
+ return schema;
66
227
  };
67
- const emailValidator = (metas, options) => {
68
- const schema = stringValidator(metas, options);
69
- return schema.email().min(1, "${path} cannot be empty");
228
+ const emailValidator = (metas, options)=>{
229
+ const schema = stringValidator(metas, options);
230
+ if (options.isDraft) {
231
+ return schema;
232
+ }
233
+ return schema.email().min(1, // eslint-disable-next-line no-template-curly-in-string
234
+ '${path} cannot be empty');
70
235
  };
71
- const uidValidator = (metas, options) => {
72
- const schema = stringValidator(metas, options);
73
- return schema.matches(/^[A-Za-z0-9-_.~]*$/);
236
+ const uidValidator = (metas, options)=>{
237
+ const schema = stringValidator(metas, options);
238
+ if (options.isDraft) {
239
+ return schema;
240
+ }
241
+ return schema.matches(/^[A-Za-z0-9-_.~]*$/);
74
242
  };
75
- const enumerationValidator = ({ attr }) => {
76
- return yup.string().oneOf((Array.isArray(attr.enum) ? attr.enum : [attr.enum]).concat(null));
243
+ const enumerationValidator = ({ attr })=>{
244
+ return strapiUtils.yup.string().oneOf((Array.isArray(attr.enum) ? attr.enum : [
245
+ attr.enum
246
+ ]).concat(null));
77
247
  };
78
- const integerValidator = (metas, options) => {
79
- let schema = yup.number().integer();
80
- schema = addMinIntegerValidator(schema, metas);
81
- schema = addMaxIntegerValidator(schema, metas);
82
- schema = addUniqueValidator(schema, metas, options);
83
- return schema;
248
+ const integerValidator = (metas, options)=>{
249
+ let schema = strapiUtils.yup.number().integer();
250
+ schema = addMinIntegerValidator(schema, metas, options);
251
+ schema = addMaxIntegerValidator(schema, metas);
252
+ schema = addUniqueValidator(schema, metas, options);
253
+ return schema;
84
254
  };
85
- const floatValidator = (metas, options) => {
86
- let schema = yup.number();
87
- schema = addMinFloatValidator(schema, metas);
88
- schema = addMaxFloatValidator(schema, metas);
89
- schema = addUniqueValidator(schema, metas, options);
90
- return schema;
255
+ const floatValidator = (metas, options)=>{
256
+ let schema = strapiUtils.yup.number();
257
+ schema = addMinFloatValidator(schema, metas, options);
258
+ schema = addMaxFloatValidator(schema, metas);
259
+ schema = addUniqueValidator(schema, metas, options);
260
+ return schema;
91
261
  };
92
- const bigintegerValidator = (metas, options) => {
93
- const schema = yup.mixed();
94
- return addUniqueValidator(schema, metas, options);
262
+ const bigintegerValidator = (metas, options)=>{
263
+ const schema = strapiUtils.yup.mixed();
264
+ return addUniqueValidator(schema, metas, options);
95
265
  };
96
- const datesValidator = (metas, options) => {
97
- const schema = yup.mixed();
98
- return addUniqueValidator(schema, metas, options);
266
+ const datesValidator = (metas, options)=>{
267
+ const schema = strapiUtils.yup.mixed();
268
+ return addUniqueValidator(schema, metas, options);
99
269
  };
100
- const validators = {
101
- string: stringValidator,
102
- text: stringValidator,
103
- richtext: stringValidator,
104
- password: stringValidator,
105
- email: emailValidator,
106
- enumeration: enumerationValidator,
107
- boolean: () => yup.boolean(),
108
- uid: uidValidator,
109
- json: () => yup.mixed(),
110
- integer: integerValidator,
111
- biginteger: bigintegerValidator,
112
- float: floatValidator,
113
- decimal: floatValidator,
114
- date: datesValidator,
115
- time: datesValidator,
116
- datetime: datesValidator,
117
- timestamp: datesValidator,
118
- blocks: blocksValidator
270
+ const Validators = {
271
+ string: stringValidator,
272
+ text: stringValidator,
273
+ richtext: stringValidator,
274
+ password: stringValidator,
275
+ email: emailValidator,
276
+ enumeration: enumerationValidator,
277
+ boolean: ()=>strapiUtils.yup.boolean(),
278
+ uid: uidValidator,
279
+ json: ()=>strapiUtils.yup.mixed(),
280
+ integer: integerValidator,
281
+ biginteger: bigintegerValidator,
282
+ float: floatValidator,
283
+ decimal: floatValidator,
284
+ date: datesValidator,
285
+ time: datesValidator,
286
+ datetime: datesValidator,
287
+ timestamp: datesValidator,
288
+ blocks: blocksValidator.blocksValidator
119
289
  };
120
- module.exports = validators;
290
+
291
+ exports.Validators = Validators;
292
+ exports.bigintegerValidator = bigintegerValidator;
293
+ exports.datesValidator = datesValidator;
294
+ exports.emailValidator = emailValidator;
295
+ exports.enumerationValidator = enumerationValidator;
296
+ exports.floatValidator = floatValidator;
297
+ exports.integerValidator = integerValidator;
298
+ exports.uidValidator = uidValidator;
121
299
  //# sourceMappingURL=validators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validators.js","sources":["../../../src/services/entity-validator/validators.ts"],"sourcesContent":["import _ from 'lodash';\nimport strapiUtils from '@strapi/utils';\nimport type { Attribute, Schema } from '@strapi/types';\nimport blocksValidator from './blocks-validator';\n\nconst { yup } = strapiUtils;\n\ninterface ValidatorMetas<TAttribute extends Attribute.Any> {\n attr: TAttribute;\n model: Schema.ContentType;\n updatedAttribute: { name: string; value: unknown };\n entity: Record<string, unknown> | null;\n}\n\ninterface ValidatorOptions {\n isDraft: boolean;\n locale?: string;\n}\n\n/* Validator utils */\n\n/**\n * Adds minLength validator\n */\nconst addMinLengthValidator = (\n validator: strapiUtils.yup.StringSchema,\n {\n attr,\n }: {\n attr:\n | Attribute.String\n | Attribute.Text\n | Attribute.RichText\n | Attribute.Password\n | Attribute.Email\n | Attribute.UID;\n },\n { isDraft }: ValidatorOptions\n) => {\n return attr.minLength && _.isInteger(attr.minLength) && !isDraft\n ? validator.min(attr.minLength)\n : validator;\n};\n\n/**\n * Adds maxLength validator\n * @returns {StringSchema}\n */\nconst addMaxLengthValidator = (\n validator: strapiUtils.yup.StringSchema,\n {\n attr,\n }: {\n attr:\n | Attribute.String\n | Attribute.Text\n | Attribute.RichText\n | Attribute.Password\n | Attribute.Email\n | Attribute.UID;\n }\n) => {\n return attr.maxLength && _.isInteger(attr.maxLength) ? validator.max(attr.maxLength) : validator;\n};\n\n/**\n * Adds min integer validator\n * @returns {NumberSchema}\n */\nconst addMinIntegerValidator = (\n validator: strapiUtils.yup.NumberSchema,\n {\n attr,\n }: {\n attr: Attribute.Integer | Attribute.BigInteger;\n }\n) => (_.isNumber(attr.min) ? validator.min(_.toInteger(attr.min)) : validator);\n\n/**\n * Adds max integer validator\n */\nconst addMaxIntegerValidator = (\n validator: strapiUtils.yup.NumberSchema,\n {\n attr,\n }: {\n attr: Attribute.Integer | Attribute.BigInteger;\n }\n) => (_.isNumber(attr.max) ? validator.max(_.toInteger(attr.max)) : validator);\n\n/**\n * Adds min float/decimal validator\n */\nconst addMinFloatValidator = (\n validator: strapiUtils.yup.NumberSchema,\n {\n attr,\n }: {\n attr: Attribute.Decimal | Attribute.Float;\n }\n) => (_.isNumber(attr.min) ? validator.min(attr.min) : validator);\n\n/**\n * Adds max float/decimal validator\n */\nconst addMaxFloatValidator = (\n validator: strapiUtils.yup.NumberSchema,\n {\n attr,\n }: {\n attr: Attribute.Decimal | Attribute.Float;\n }\n) => (_.isNumber(attr.max) ? validator.max(attr.max) : validator);\n\n/**\n * Adds regex validator\n */\nconst addStringRegexValidator = (\n validator: strapiUtils.yup.StringSchema,\n {\n attr,\n }: {\n attr:\n | Attribute.String\n | Attribute.Text\n | Attribute.RichText\n | Attribute.Password\n | Attribute.Email\n | Attribute.UID;\n }\n) => {\n return 'regex' in attr && !_.isUndefined(attr.regex)\n ? validator.matches(new RegExp(attr.regex), { excludeEmptyString: !attr.required })\n : validator;\n};\n\n/**\n * Adds unique validator\n */\nconst addUniqueValidator = <T extends strapiUtils.yup.AnySchema>(\n validator: T,\n { attr, model, updatedAttribute, entity }: ValidatorMetas<Attribute.Any & Attribute.UniqueOption>,\n options: ValidatorOptions\n): T => {\n if (attr.type !== 'uid' && !attr.unique) {\n return validator;\n }\n\n return validator.test('unique', 'This attribute must be unique', async (value) => {\n const isPublish = options.isDraft === false;\n\n /**\n * If the attribute value is `null` we want to skip the unique validation.\n * Otherwise it'll only accept a single `null` entry in the database.\n */\n if (_.isNil(value)) {\n return true;\n }\n\n /**\n * If we are updating a draft and the value is unchanged we skip the unique verification. This will\n * prevent the validator to be triggered in case the user activated the\n * unique constraint after already creating multiple entries with\n * the same attribute value for that field.\n */\n if (!isPublish && value === entity?.[updatedAttribute.name]) {\n return true;\n }\n\n /**\n * At this point we know that we are creating a new entry, publishing an entry or that the unique field value has changed\n * We check if there is an entry of this content type in the same locale, publication state and with the same unique field value\n */\n const record = await strapi.db.query(model.uid).findOne({\n where: {\n locale: options.locale,\n publishedAt: options.isDraft ? null : { $notNull: true },\n [updatedAttribute.name]: value,\n ...(entity?.id ? { id: { $ne: entity.id } } : {}),\n },\n });\n\n return !record;\n });\n};\n\n/* Type validators */\n\nconst stringValidator = (\n metas: ValidatorMetas<\n | Attribute.String\n | Attribute.Text\n | Attribute.RichText\n | Attribute.Password\n | Attribute.Email\n | Attribute.UID\n >,\n options: ValidatorOptions\n) => {\n let schema = yup.string().transform((val, originalVal) => originalVal);\n\n schema = addMinLengthValidator(schema, metas, options);\n schema = addMaxLengthValidator(schema, metas);\n schema = addStringRegexValidator(schema, metas);\n schema = addUniqueValidator(schema, metas, options);\n\n return schema;\n};\n\nconst emailValidator = (metas: ValidatorMetas<Attribute.Email>, options: ValidatorOptions) => {\n const schema = stringValidator(metas, options);\n return schema.email().min(1, '${path} cannot be empty');\n};\n\nconst uidValidator = (metas: ValidatorMetas<Attribute.UID>, options: ValidatorOptions) => {\n const schema = stringValidator(metas, options);\n\n return schema.matches(/^[A-Za-z0-9-_.~]*$/);\n};\n\nconst enumerationValidator = ({ attr }: { attr: Attribute.Enumeration }) => {\n return yup\n .string()\n .oneOf((Array.isArray(attr.enum) ? attr.enum : [attr.enum]).concat(null as any));\n};\n\nconst integerValidator = (\n metas: ValidatorMetas<Attribute.Integer | Attribute.BigInteger>,\n options: ValidatorOptions\n) => {\n let schema = yup.number().integer();\n\n schema = addMinIntegerValidator(schema, metas);\n schema = addMaxIntegerValidator(schema, metas);\n schema = addUniqueValidator(schema, metas, options);\n\n return schema;\n};\n\nconst floatValidator = (\n metas: ValidatorMetas<Attribute.Decimal | Attribute.Float>,\n options: ValidatorOptions\n) => {\n let schema = yup.number();\n schema = addMinFloatValidator(schema, metas);\n schema = addMaxFloatValidator(schema, metas);\n schema = addUniqueValidator(schema, metas, options);\n\n return schema;\n};\n\nconst bigintegerValidator = (\n metas: ValidatorMetas<Attribute.BigInteger>,\n options: ValidatorOptions\n) => {\n const schema = yup.mixed();\n return addUniqueValidator(schema, metas, options);\n};\n\nconst datesValidator = (\n metas: ValidatorMetas<Attribute.Date | Attribute.DateTime | Attribute.Time | Attribute.Timestamp>,\n options: ValidatorOptions\n) => {\n const schema = yup.mixed();\n return addUniqueValidator(schema, metas, options);\n};\n\nexport default {\n string: stringValidator,\n text: stringValidator,\n richtext: stringValidator,\n password: stringValidator,\n email: emailValidator,\n enumeration: enumerationValidator,\n boolean: () => yup.boolean(),\n uid: uidValidator,\n json: () => yup.mixed(),\n integer: integerValidator,\n biginteger: bigintegerValidator,\n float: floatValidator,\n decimal: floatValidator,\n date: datesValidator,\n time: datesValidator,\n datetime: datesValidator,\n timestamp: datesValidator,\n blocks: blocksValidator,\n};\n"],"names":["strapiUtils","_"],"mappings":"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"}
1
+ {"version":3,"file":"validators.js","sources":["../../../src/services/entity-validator/validators.ts"],"sourcesContent":["/**\n * Validators check if the entry data meets specific criteria before saving or publishing.\n * (e.g., length, range, format).\n *\n * Drafts have limited validations (mainly max constraints),\n * while published content undergoes full validation.\n *\n * The system also takes locales into account when validating data.\n * E.g, unique fields must be unique within the same locale.\n */\nimport _ from 'lodash';\nimport { yup } from '@strapi/utils';\nimport type { Schema, Struct, Modules } from '@strapi/types';\nimport { blocksValidator } from './blocks-validator';\n\nimport type { ComponentContext } from '.';\n\nexport interface ValidatorMetas<\n TAttribute extends Schema.Attribute.AnyAttribute = Schema.Attribute.AnyAttribute,\n TValue extends Schema.Attribute.Value<TAttribute> = Schema.Attribute.Value<TAttribute>,\n> {\n attr: TAttribute;\n model: Struct.Schema;\n updatedAttribute: {\n name: string;\n value: TValue;\n };\n componentContext?: ComponentContext;\n entity?: Modules.EntityValidator.Entity;\n}\n\ninterface ValidatorOptions {\n isDraft: boolean;\n locale?: string;\n}\n\n/* Validator utils */\n\n/**\n * Adds minLength validator\n */\nconst addMinLengthValidator = (\n validator: yup.StringSchema,\n {\n attr,\n }: {\n attr:\n | Schema.Attribute.String\n | Schema.Attribute.Text\n | Schema.Attribute.RichText\n | Schema.Attribute.Password\n | Schema.Attribute.Email\n | Schema.Attribute.UID;\n },\n { isDraft }: ValidatorOptions\n) => {\n return attr.minLength && _.isInteger(attr.minLength) && !isDraft\n ? validator.min(attr.minLength)\n : validator;\n};\n\n/**\n * Adds maxLength validator\n * @returns {StringSchema}\n */\nconst addMaxLengthValidator = (\n validator: yup.StringSchema,\n {\n attr,\n }: {\n attr:\n | Schema.Attribute.String\n | Schema.Attribute.Text\n | Schema.Attribute.RichText\n | Schema.Attribute.Password\n | Schema.Attribute.Email\n | Schema.Attribute.UID;\n }\n) => {\n return attr.maxLength && _.isInteger(attr.maxLength) ? validator.max(attr.maxLength) : validator;\n};\n\n/**\n * Adds min integer validator\n * @returns {NumberSchema}\n */\nconst addMinIntegerValidator = (\n validator: yup.NumberSchema,\n {\n attr,\n }: {\n attr: Schema.Attribute.Integer | Schema.Attribute.BigInteger;\n },\n { isDraft }: ValidatorOptions\n) => (_.isNumber(attr.min) && !isDraft ? validator.min(_.toInteger(attr.min)) : validator);\n\n/**\n * Adds max integer validator\n */\nconst addMaxIntegerValidator = (\n validator: yup.NumberSchema,\n {\n attr,\n }: {\n attr: Schema.Attribute.Integer | Schema.Attribute.BigInteger;\n }\n) => (_.isNumber(attr.max) ? validator.max(_.toInteger(attr.max)) : validator);\n\n/**\n * Adds min float/decimal validator\n */\nconst addMinFloatValidator = (\n validator: yup.NumberSchema,\n {\n attr,\n }: {\n attr: Schema.Attribute.Decimal | Schema.Attribute.Float;\n },\n { isDraft }: ValidatorOptions\n) => (_.isNumber(attr.min) && !isDraft ? validator.min(attr.min) : validator);\n\n/**\n * Adds max float/decimal validator\n */\nconst addMaxFloatValidator = (\n validator: yup.NumberSchema,\n {\n attr,\n }: {\n attr: Schema.Attribute.Decimal | Schema.Attribute.Float;\n }\n) => (_.isNumber(attr.max) ? validator.max(attr.max) : validator);\n\n/**\n * Adds regex validator\n */\nconst addStringRegexValidator = (\n validator: yup.StringSchema,\n {\n attr,\n }: {\n attr:\n | Schema.Attribute.String\n | Schema.Attribute.Text\n | Schema.Attribute.RichText\n | Schema.Attribute.Password\n | Schema.Attribute.Email\n | Schema.Attribute.UID;\n },\n { isDraft }: ValidatorOptions\n) => {\n return 'regex' in attr && !_.isUndefined(attr.regex) && !isDraft\n ? validator.matches(new RegExp(attr.regex), { excludeEmptyString: !attr.required })\n : validator;\n};\n\nconst addUniqueValidator = <T extends yup.AnySchema>(\n validator: T,\n {\n attr,\n model,\n updatedAttribute,\n entity,\n componentContext,\n }: ValidatorMetas<Schema.Attribute.AnyAttribute & Schema.Attribute.UniqueOption>,\n options: ValidatorOptions\n): T => {\n if (attr.type !== 'uid' && !attr.unique) {\n return validator;\n }\n\n const validateUniqueFieldWithinComponent = async (value: any): Promise<boolean> => {\n if (!componentContext) {\n return false;\n }\n\n // If we are validating a unique field within a repeatable component,\n // we first need to ensure that the repeatable in the current entity is\n // valid against itself.\n const hasRepeatableData = componentContext.repeatableData.length > 0;\n if (hasRepeatableData) {\n const { name: updatedName, value: updatedValue } = updatedAttribute;\n // Construct the full path to the unique field within the component.\n const pathToCheck = [...componentContext.pathToComponent.slice(1), updatedName].join('.');\n\n // Extract the values from the repeatable data using the constructed path\n const values = componentContext.repeatableData.map((item) => {\n return pathToCheck.split('.').reduce((acc, key) => acc[key], item as any);\n });\n\n // Check if the value is repeated in the current entity\n const isUpdatedAttributeRepeatedInThisEntity =\n values.filter((value) => value === updatedValue).length > 1;\n\n if (isUpdatedAttributeRepeatedInThisEntity) {\n return false;\n }\n }\n\n /**\n * When `componentContext` is present it means we are dealing with a unique\n * field within a component.\n *\n * The unique validation must consider the specific context of the\n * component, which will always be contained within a parent content type\n * and may also be nested within another component.\n *\n * We construct a query that takes into account the parent's model UID,\n * dimensions (such as draft and publish state/locale) and excludes the current\n * content type entity by its ID if provided.\n */\n const {\n model: parentModel,\n options: parentOptions,\n id: excludeId,\n } = componentContext.parentContent;\n\n const whereConditions: Record<string, any> = {};\n const isParentDraft = parentOptions && parentOptions.isDraft;\n\n whereConditions.publishedAt = isParentDraft ? null : { $notNull: true };\n\n if (parentOptions?.locale) {\n whereConditions.locale = parentOptions.locale;\n }\n\n if (excludeId && !Number.isNaN(excludeId)) {\n whereConditions.id = { $ne: excludeId };\n }\n\n const queryUid = parentModel.uid;\n const queryWhere = {\n ...componentContext.pathToComponent.reduceRight((acc, key) => ({ [key]: acc }), {\n [updatedAttribute.name]: value,\n }),\n\n ...whereConditions,\n };\n\n // The validation should pass if there is no other record found from the query\n return !(await strapi.db.query(queryUid).findOne({ where: queryWhere }));\n };\n\n const validateUniqueFieldWithinDynamicZoneComponent = async (\n startOfPath: string\n ): Promise<boolean> => {\n if (!componentContext) {\n return false;\n }\n\n const targetComponentUID = model.uid;\n // Ensure that the value is unique within the dynamic zone in this entity.\n const countOfValueInThisEntity = (componentContext?.fullDynamicZoneContent ?? []).reduce(\n (acc, component) => {\n if (component.__component !== targetComponentUID) {\n return acc;\n }\n\n const updatedValue = component[updatedAttribute.name];\n return updatedValue === updatedAttribute.value ? acc + 1 : acc;\n },\n 0\n );\n\n if (countOfValueInThisEntity > 1) {\n // If the value is repeated in the current entity, the validation fails.\n return false;\n }\n\n // Build a query for the parent content type to find all entities in the\n // same locale and publication state\n type QueryType = {\n select: string[];\n where: {\n published_at?: { $eq: null } | { $ne: null };\n id?: { $ne: number };\n locale?: string;\n };\n populate: {\n [key: string]: {\n on: {\n [key: string]: {\n select: string[];\n where: { [key: string]: string | number | boolean };\n };\n };\n };\n };\n };\n\n // Populate the dynamic zone for any components that share the same value\n // as the updated attribute.\n const query: QueryType = {\n select: ['id'],\n where: {},\n populate: {\n [startOfPath]: {\n on: {\n [targetComponentUID]: {\n select: ['id'],\n where: { [updatedAttribute.name]: updatedAttribute.value },\n },\n },\n },\n },\n };\n\n const { options, id } = componentContext.parentContent;\n\n if (options?.isDraft !== undefined) {\n query.where.published_at = options.isDraft ? { $eq: null } : { $ne: null };\n }\n\n if (id) {\n query.where.id = { $ne: id };\n }\n\n if (options?.locale) {\n query.where.locale = options.locale;\n }\n\n const parentModelQueryResult = await strapi.db\n .query(componentContext.parentContent.model.uid)\n .findMany(query);\n\n // Filter the results to only include results that have components in the\n // dynamic zone that match the target component type.\n const filteredResults = parentModelQueryResult\n .filter((result) => Array.isArray(result[startOfPath]) && result[startOfPath].length)\n .flatMap((result) => result[startOfPath])\n .filter((dynamicZoneComponent) => dynamicZoneComponent.__component === targetComponentUID);\n\n if (filteredResults.length >= 1) {\n return false;\n }\n\n return true;\n };\n\n return validator.test('unique', 'This attribute must be unique', async (value) => {\n /**\n * If the attribute value is `null` or an empty string we want to skip the unique validation.\n * Otherwise it'll only accept a single entry with that value in the database.\n */\n if (_.isNil(value) || value === '') {\n return true;\n }\n\n /**\n * We don't validate any unique constraint for draft entries.\n */\n if (options.isDraft) {\n return true;\n }\n\n const hasPathToComponent = componentContext && componentContext.pathToComponent.length > 0;\n if (hasPathToComponent) {\n // Detect if we are validating within a dynamiczone by checking if the first\n // path is a dynamiczone attribute in the parent content type.\n const startOfPath = componentContext.pathToComponent[0];\n const testingDZ =\n componentContext.parentContent.model.attributes[startOfPath].type === 'dynamiczone';\n\n if (testingDZ) {\n return validateUniqueFieldWithinDynamicZoneComponent(startOfPath);\n }\n\n return validateUniqueFieldWithinComponent(value);\n }\n\n /**\n * Here we are validating a scalar unique field from the content type's schema.\n * We construct a query to check if the value is unique\n * considering dimensions (e.g. locale, publication state) and excluding the current entity by its ID if available.\n */\n const scalarAttributeWhere: Record<string, any> = {\n [updatedAttribute.name]: value,\n publishedAt: { $notNull: true },\n };\n\n if (options?.locale) {\n scalarAttributeWhere.locale = options.locale;\n }\n\n if (entity?.id) {\n scalarAttributeWhere.id = { $ne: entity.id };\n }\n\n // The validation should pass if there is no other record found from the query\n return !(await strapi.db\n .query(model.uid)\n .findOne({ where: scalarAttributeWhere, select: ['id'] }));\n });\n};\n\n/* Type validators */\n\nconst stringValidator = (\n metas: ValidatorMetas<\n | Schema.Attribute.String\n | Schema.Attribute.Text\n | Schema.Attribute.RichText\n | Schema.Attribute.Password\n | Schema.Attribute.Email\n | Schema.Attribute.UID\n >,\n options: ValidatorOptions\n) => {\n let schema = yup.string().transform((val, originalVal) => originalVal);\n\n schema = addMinLengthValidator(schema, metas, options);\n schema = addMaxLengthValidator(schema, metas);\n schema = addStringRegexValidator(schema, metas, options);\n schema = addUniqueValidator(schema, metas, options);\n\n return schema;\n};\n\nexport const emailValidator = (\n metas: ValidatorMetas<Schema.Attribute.Email>,\n options: ValidatorOptions\n) => {\n const schema = stringValidator(metas, options);\n\n if (options.isDraft) {\n return schema;\n }\n\n return schema.email().min(\n 1,\n // eslint-disable-next-line no-template-curly-in-string\n '${path} cannot be empty'\n );\n};\n\nexport const uidValidator = (\n metas: ValidatorMetas<Schema.Attribute.UID>,\n options: ValidatorOptions\n) => {\n const schema = stringValidator(metas, options);\n\n if (options.isDraft) {\n return schema;\n }\n\n return schema.matches(/^[A-Za-z0-9-_.~]*$/);\n};\n\nexport const enumerationValidator = ({ attr }: { attr: Schema.Attribute.Enumeration }) => {\n return yup\n .string()\n .oneOf((Array.isArray(attr.enum) ? attr.enum : [attr.enum]).concat(null as any));\n};\n\nexport const integerValidator = (\n metas: ValidatorMetas<Schema.Attribute.Integer | Schema.Attribute.BigInteger>,\n options: ValidatorOptions\n) => {\n let schema = yup.number().integer();\n\n schema = addMinIntegerValidator(schema, metas, options);\n schema = addMaxIntegerValidator(schema, metas);\n schema = addUniqueValidator(schema, metas, options);\n\n return schema;\n};\n\nexport const floatValidator = (\n metas: ValidatorMetas<Schema.Attribute.Decimal | Schema.Attribute.Float>,\n options: ValidatorOptions\n) => {\n let schema = yup.number();\n\n schema = addMinFloatValidator(schema, metas, options);\n schema = addMaxFloatValidator(schema, metas);\n schema = addUniqueValidator(schema, metas, options);\n\n return schema;\n};\n\nexport const bigintegerValidator = (\n metas: ValidatorMetas<Schema.Attribute.BigInteger>,\n options: ValidatorOptions\n) => {\n const schema = yup.mixed();\n return addUniqueValidator(schema, metas, options);\n};\n\nexport const datesValidator = (\n metas: ValidatorMetas<\n | Schema.Attribute.Date\n | Schema.Attribute.DateTime\n | Schema.Attribute.Time\n | Schema.Attribute.Timestamp\n >,\n options: ValidatorOptions\n) => {\n const schema = yup.mixed();\n return addUniqueValidator(schema, metas, options);\n};\n\nexport const Validators = {\n string: stringValidator,\n text: stringValidator,\n richtext: stringValidator,\n password: stringValidator,\n email: emailValidator,\n enumeration: enumerationValidator,\n boolean: () => yup.boolean(),\n uid: uidValidator,\n json: () => yup.mixed(),\n integer: integerValidator,\n biginteger: bigintegerValidator,\n float: floatValidator,\n decimal: floatValidator,\n date: datesValidator,\n time: datesValidator,\n datetime: datesValidator,\n timestamp: datesValidator,\n blocks: blocksValidator,\n};\n"],"names":["addMinLengthValidator","validator","attr","isDraft","minLength","_","isInteger","min","addMaxLengthValidator","maxLength","max","addMinIntegerValidator","isNumber","toInteger","addMaxIntegerValidator","addMinFloatValidator","addMaxFloatValidator","addStringRegexValidator","isUndefined","regex","matches","RegExp","excludeEmptyString","required","addUniqueValidator","model","updatedAttribute","entity","componentContext","options","type","unique","validateUniqueFieldWithinComponent","value","hasRepeatableData","repeatableData","length","name","updatedName","updatedValue","pathToCheck","pathToComponent","slice","join","values","map","item","split","reduce","acc","key","isUpdatedAttributeRepeatedInThisEntity","filter","parentModel","parentOptions","id","excludeId","parentContent","whereConditions","isParentDraft","publishedAt","$notNull","locale","Number","isNaN","$ne","queryUid","uid","queryWhere","reduceRight","strapi","db","query","findOne","where","validateUniqueFieldWithinDynamicZoneComponent","startOfPath","targetComponentUID","countOfValueInThisEntity","fullDynamicZoneContent","component","__component","select","populate","on","undefined","published_at","$eq","parentModelQueryResult","findMany","filteredResults","result","Array","isArray","flatMap","dynamicZoneComponent","test","isNil","hasPathToComponent","testingDZ","attributes","scalarAttributeWhere","stringValidator","metas","schema","yup","string","transform","val","originalVal","emailValidator","email","uidValidator","enumerationValidator","oneOf","enum","concat","integerValidator","number","integer","floatValidator","bigintegerValidator","mixed","datesValidator","Validators","text","richtext","password","enumeration","boolean","json","biginteger","float","decimal","date","time","datetime","timestamp","blocks","blocksValidator"],"mappings":"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"}