@strapi/core 0.0.0-experimental.d362bf200f5f9359a4bbd4a549603de5ee1f04ca → 0.0.0-experimental.d4b8dd9e74eefeba4fc0574502c919ba4d091e1e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (873) hide show
  1. package/LICENSE +18 -3
  2. package/dist/Strapi.d.ts +37 -46
  3. package/dist/Strapi.d.ts.map +1 -1
  4. package/dist/Strapi.js +437 -446
  5. package/dist/Strapi.js.map +1 -1
  6. package/dist/Strapi.mjs +428 -457
  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 +5 -7
  24. package/dist/configuration/index.d.ts.map +1 -1
  25. package/dist/configuration/index.js +86 -72
  26. package/dist/configuration/index.js.map +1 -1
  27. package/dist/configuration/index.mjs +84 -68
  28. package/dist/configuration/index.mjs.map +1 -1
  29. package/dist/configuration/urls.d.ts.map +1 -1
  30. package/dist/configuration/urls.js +74 -61
  31. package/dist/configuration/urls.js.map +1 -1
  32. package/dist/configuration/urls.mjs +73 -62
  33. package/dist/configuration/urls.mjs.map +1 -1
  34. package/dist/container.js +27 -23
  35. package/dist/container.js.map +1 -1
  36. package/dist/container.mjs +26 -24
  37. package/dist/container.mjs.map +1 -1
  38. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  39. package/dist/core-api/controller/collection-type.js +77 -73
  40. package/dist/core-api/controller/collection-type.js.map +1 -1
  41. package/dist/core-api/controller/collection-type.mjs +76 -74
  42. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  43. package/dist/core-api/controller/index.js +63 -48
  44. package/dist/core-api/controller/index.js.map +1 -1
  45. package/dist/core-api/controller/index.mjs +62 -49
  46. package/dist/core-api/controller/index.mjs.map +1 -1
  47. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  48. package/dist/core-api/controller/single-type.js +41 -39
  49. package/dist/core-api/controller/single-type.js.map +1 -1
  50. package/dist/core-api/controller/single-type.mjs +40 -40
  51. package/dist/core-api/controller/single-type.mjs.map +1 -1
  52. package/dist/core-api/controller/transform.js +72 -63
  53. package/dist/core-api/controller/transform.js.map +1 -1
  54. package/dist/core-api/controller/transform.mjs +71 -64
  55. package/dist/core-api/controller/transform.mjs.map +1 -1
  56. package/dist/core-api/routes/index.d.ts.map +1 -1
  57. package/dist/core-api/routes/index.js +64 -62
  58. package/dist/core-api/routes/index.js.map +1 -1
  59. package/dist/core-api/routes/index.mjs +62 -62
  60. package/dist/core-api/routes/index.mjs.map +1 -1
  61. package/dist/core-api/service/collection-type.d.ts +3 -9
  62. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  63. package/dist/core-api/service/collection-type.js +73 -49
  64. package/dist/core-api/service/collection-type.js.map +1 -1
  65. package/dist/core-api/service/collection-type.mjs +72 -51
  66. package/dist/core-api/service/collection-type.mjs.map +1 -1
  67. package/dist/core-api/service/core-service.js +9 -8
  68. package/dist/core-api/service/core-service.js.map +1 -1
  69. package/dist/core-api/service/core-service.mjs +8 -9
  70. package/dist/core-api/service/core-service.mjs.map +1 -1
  71. package/dist/core-api/service/index.js +13 -13
  72. package/dist/core-api/service/index.js.map +1 -1
  73. package/dist/core-api/service/index.mjs +12 -14
  74. package/dist/core-api/service/index.mjs.map +1 -1
  75. package/dist/core-api/service/pagination.d.ts +4 -11
  76. package/dist/core-api/service/pagination.d.ts.map +1 -1
  77. package/dist/core-api/service/pagination.js +68 -68
  78. package/dist/core-api/service/pagination.js.map +1 -1
  79. package/dist/core-api/service/pagination.mjs +66 -71
  80. package/dist/core-api/service/pagination.mjs.map +1 -1
  81. package/dist/core-api/service/single-type.d.ts.map +1 -1
  82. package/dist/core-api/service/single-type.js +43 -32
  83. package/dist/core-api/service/single-type.js.map +1 -1
  84. package/dist/core-api/service/single-type.mjs +42 -34
  85. package/dist/core-api/service/single-type.mjs.map +1 -1
  86. package/dist/domain/content-type/index.js +95 -100
  87. package/dist/domain/content-type/index.js.map +1 -1
  88. package/dist/domain/content-type/index.mjs +94 -100
  89. package/dist/domain/content-type/index.mjs.map +1 -1
  90. package/dist/domain/content-type/validator.js +84 -69
  91. package/dist/domain/content-type/validator.js.map +1 -1
  92. package/dist/domain/content-type/validator.mjs +83 -68
  93. package/dist/domain/content-type/validator.mjs.map +1 -1
  94. package/dist/domain/module/index.js +109 -100
  95. package/dist/domain/module/index.js.map +1 -1
  96. package/dist/domain/module/index.mjs +108 -99
  97. package/dist/domain/module/index.mjs.map +1 -1
  98. package/dist/domain/module/validation.js +25 -20
  99. package/dist/domain/module/validation.js.map +1 -1
  100. package/dist/domain/module/validation.mjs +24 -21
  101. package/dist/domain/module/validation.mjs.map +1 -1
  102. package/dist/ee/index.d.ts +9 -0
  103. package/dist/ee/index.d.ts.map +1 -1
  104. package/dist/ee/index.js +197 -132
  105. package/dist/ee/index.js.map +1 -1
  106. package/dist/ee/index.mjs +196 -134
  107. package/dist/ee/index.mjs.map +1 -1
  108. package/dist/ee/license.d.ts +3 -1
  109. package/dist/ee/license.d.ts.map +1 -1
  110. package/dist/ee/license.js +105 -74
  111. package/dist/ee/license.js.map +1 -1
  112. package/dist/ee/license.mjs +103 -75
  113. package/dist/ee/license.mjs.map +1 -1
  114. package/dist/factories.d.ts +2 -2
  115. package/dist/factories.d.ts.map +1 -1
  116. package/dist/factories.js +72 -67
  117. package/dist/factories.js.map +1 -1
  118. package/dist/factories.mjs +71 -71
  119. package/dist/factories.mjs.map +1 -1
  120. package/dist/index.d.ts +18 -2
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/index.js +32 -5
  123. package/dist/index.js.map +1 -1
  124. package/dist/index.mjs +29 -5
  125. package/dist/index.mjs.map +1 -1
  126. package/dist/loaders/admin.d.ts.map +1 -1
  127. package/dist/loaders/admin.js +21 -21
  128. package/dist/loaders/admin.js.map +1 -1
  129. package/dist/loaders/admin.mjs +20 -21
  130. package/dist/loaders/admin.mjs.map +1 -1
  131. package/dist/loaders/apis.d.ts.map +1 -1
  132. package/dist/loaders/apis.js +143 -120
  133. package/dist/loaders/apis.js.map +1 -1
  134. package/dist/loaders/apis.mjs +142 -119
  135. package/dist/loaders/apis.mjs.map +1 -1
  136. package/dist/loaders/components.js +33 -34
  137. package/dist/loaders/components.js.map +1 -1
  138. package/dist/loaders/components.mjs +32 -34
  139. package/dist/loaders/components.mjs.map +1 -1
  140. package/dist/loaders/index.d.ts.map +1 -1
  141. package/dist/loaders/index.js +22 -22
  142. package/dist/loaders/index.js.map +1 -1
  143. package/dist/loaders/index.mjs +21 -23
  144. package/dist/loaders/index.mjs.map +1 -1
  145. package/dist/loaders/middlewares.js +29 -25
  146. package/dist/loaders/middlewares.js.map +1 -1
  147. package/dist/loaders/middlewares.mjs +28 -25
  148. package/dist/loaders/middlewares.mjs.map +1 -1
  149. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  150. package/dist/loaders/plugins/get-enabled-plugins.js +125 -101
  151. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  152. package/dist/loaders/plugins/get-enabled-plugins.mjs +124 -100
  153. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  154. package/dist/loaders/plugins/get-user-plugins-config.js +25 -24
  155. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  156. package/dist/loaders/plugins/get-user-plugins-config.mjs +24 -23
  157. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  158. package/dist/loaders/plugins/index.d.ts.map +1 -1
  159. package/dist/loaders/plugins/index.js +141 -104
  160. package/dist/loaders/plugins/index.js.map +1 -1
  161. package/dist/loaders/plugins/index.mjs +121 -104
  162. package/dist/loaders/plugins/index.mjs.map +1 -1
  163. package/dist/loaders/policies.js +24 -20
  164. package/dist/loaders/policies.js.map +1 -1
  165. package/dist/loaders/policies.mjs +23 -20
  166. package/dist/loaders/policies.mjs.map +1 -1
  167. package/dist/loaders/sanitizers.js +10 -4
  168. package/dist/loaders/sanitizers.js.map +1 -1
  169. package/dist/loaders/sanitizers.mjs +9 -6
  170. package/dist/loaders/sanitizers.mjs.map +1 -1
  171. package/dist/loaders/src-index.js +35 -27
  172. package/dist/loaders/src-index.js.map +1 -1
  173. package/dist/loaders/src-index.mjs +34 -29
  174. package/dist/loaders/src-index.mjs.map +1 -1
  175. package/dist/loaders/validators.js +9 -4
  176. package/dist/loaders/validators.js.map +1 -1
  177. package/dist/loaders/validators.mjs +8 -6
  178. package/dist/loaders/validators.mjs.map +1 -1
  179. package/dist/middlewares/body.d.ts +2 -2
  180. package/dist/middlewares/body.d.ts.map +1 -1
  181. package/dist/middlewares/body.js +58 -54
  182. package/dist/middlewares/body.js.map +1 -1
  183. package/dist/middlewares/body.mjs +57 -51
  184. package/dist/middlewares/body.mjs.map +1 -1
  185. package/dist/middlewares/compression.js +6 -6
  186. package/dist/middlewares/compression.js.map +1 -1
  187. package/dist/middlewares/compression.mjs +5 -5
  188. package/dist/middlewares/compression.mjs.map +1 -1
  189. package/dist/middlewares/cors.d.ts.map +1 -1
  190. package/dist/middlewares/cors.js +59 -46
  191. package/dist/middlewares/cors.js.map +1 -1
  192. package/dist/middlewares/cors.mjs +58 -45
  193. package/dist/middlewares/cors.mjs.map +1 -1
  194. package/dist/middlewares/errors.js +32 -30
  195. package/dist/middlewares/errors.js.map +1 -1
  196. package/dist/middlewares/errors.mjs +31 -31
  197. package/dist/middlewares/errors.mjs.map +1 -1
  198. package/dist/middlewares/favicon.js +27 -17
  199. package/dist/middlewares/favicon.js.map +1 -1
  200. package/dist/middlewares/favicon.mjs +26 -16
  201. package/dist/middlewares/favicon.mjs.map +1 -1
  202. package/dist/middlewares/index.js +32 -30
  203. package/dist/middlewares/index.js.map +1 -1
  204. package/dist/middlewares/index.mjs +31 -31
  205. package/dist/middlewares/index.mjs.map +1 -1
  206. package/dist/middlewares/ip.js +6 -6
  207. package/dist/middlewares/ip.js.map +1 -1
  208. package/dist/middlewares/ip.mjs +5 -5
  209. package/dist/middlewares/ip.mjs.map +1 -1
  210. package/dist/middlewares/logger.js +10 -9
  211. package/dist/middlewares/logger.js.map +1 -1
  212. package/dist/middlewares/logger.mjs +9 -10
  213. package/dist/middlewares/logger.mjs.map +1 -1
  214. package/dist/middlewares/powered-by.js +13 -9
  215. package/dist/middlewares/powered-by.js.map +1 -1
  216. package/dist/middlewares/powered-by.mjs +12 -10
  217. package/dist/middlewares/powered-by.mjs.map +1 -1
  218. package/dist/middlewares/public.js +33 -29
  219. package/dist/middlewares/public.js.map +1 -1
  220. package/dist/middlewares/public.mjs +32 -28
  221. package/dist/middlewares/public.mjs.map +1 -1
  222. package/dist/middlewares/query.d.ts.map +1 -1
  223. package/dist/middlewares/query.js +35 -32
  224. package/dist/middlewares/query.js.map +1 -1
  225. package/dist/middlewares/query.mjs +34 -31
  226. package/dist/middlewares/query.mjs.map +1 -1
  227. package/dist/middlewares/response-time.js +10 -9
  228. package/dist/middlewares/response-time.js.map +1 -1
  229. package/dist/middlewares/response-time.mjs +9 -10
  230. package/dist/middlewares/response-time.mjs.map +1 -1
  231. package/dist/middlewares/responses.js +14 -12
  232. package/dist/middlewares/responses.js.map +1 -1
  233. package/dist/middlewares/responses.mjs +13 -13
  234. package/dist/middlewares/responses.mjs.map +1 -1
  235. package/dist/middlewares/security.d.ts.map +1 -1
  236. package/dist/middlewares/security.js +110 -65
  237. package/dist/middlewares/security.js.map +1 -1
  238. package/dist/middlewares/security.mjs +108 -63
  239. package/dist/middlewares/security.mjs.map +1 -1
  240. package/dist/middlewares/session.js +26 -25
  241. package/dist/middlewares/session.js.map +1 -1
  242. package/dist/middlewares/session.mjs +25 -24
  243. package/dist/middlewares/session.mjs.map +1 -1
  244. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +33 -0
  245. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -0
  246. package/dist/migrations/database/5.0.0-discard-drafts.js +168 -0
  247. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -0
  248. package/dist/migrations/database/5.0.0-discard-drafts.mjs +165 -0
  249. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -0
  250. package/dist/migrations/draft-publish.d.ts +2 -2
  251. package/dist/migrations/draft-publish.d.ts.map +1 -1
  252. package/dist/migrations/draft-publish.js +59 -49
  253. package/dist/migrations/draft-publish.js.map +1 -1
  254. package/dist/migrations/draft-publish.mjs +58 -51
  255. package/dist/migrations/draft-publish.mjs.map +1 -1
  256. package/dist/migrations/i18n.d.ts +5 -0
  257. package/dist/migrations/i18n.d.ts.map +1 -0
  258. package/dist/migrations/i18n.js +71 -0
  259. package/dist/migrations/i18n.js.map +1 -0
  260. package/dist/migrations/i18n.mjs +68 -0
  261. package/dist/migrations/i18n.mjs.map +1 -0
  262. package/dist/migrations/index.d.ts +5 -0
  263. package/dist/migrations/index.d.ts.map +1 -0
  264. package/dist/migrations/index.js +29 -0
  265. package/dist/migrations/index.js.map +1 -0
  266. package/dist/migrations/index.mjs +26 -0
  267. package/dist/migrations/index.mjs.map +1 -0
  268. package/dist/package.json.js +184 -0
  269. package/dist/package.json.js.map +1 -0
  270. package/dist/package.json.mjs +161 -0
  271. package/dist/package.json.mjs.map +1 -0
  272. package/dist/providers/admin.d.ts +3 -0
  273. package/dist/providers/admin.d.ts.map +1 -0
  274. package/dist/providers/admin.js +30 -0
  275. package/dist/providers/admin.js.map +1 -0
  276. package/dist/providers/admin.mjs +28 -0
  277. package/dist/providers/admin.mjs.map +1 -0
  278. package/dist/providers/coreStore.d.ts +3 -0
  279. package/dist/providers/coreStore.d.ts.map +1 -0
  280. package/dist/providers/coreStore.js +16 -0
  281. package/dist/providers/coreStore.js.map +1 -0
  282. package/dist/providers/coreStore.mjs +14 -0
  283. package/dist/providers/coreStore.mjs.map +1 -0
  284. package/dist/providers/cron.d.ts +3 -0
  285. package/dist/providers/cron.d.ts.map +1 -0
  286. package/dist/providers/cron.js +23 -0
  287. package/dist/providers/cron.js.map +1 -0
  288. package/dist/providers/cron.mjs +21 -0
  289. package/dist/providers/cron.mjs.map +1 -0
  290. package/dist/providers/index.d.ts +3 -0
  291. package/dist/providers/index.d.ts.map +1 -0
  292. package/dist/providers/index.js +20 -0
  293. package/dist/providers/index.js.map +1 -0
  294. package/dist/providers/index.mjs +18 -0
  295. package/dist/providers/index.mjs.map +1 -0
  296. package/dist/providers/provider.d.ts +9 -0
  297. package/dist/providers/provider.d.ts.map +1 -0
  298. package/dist/providers/provider.js +6 -0
  299. package/dist/providers/provider.js.map +1 -0
  300. package/dist/providers/provider.mjs +4 -0
  301. package/dist/providers/provider.mjs.map +1 -0
  302. package/dist/providers/registries.d.ts +3 -0
  303. package/dist/providers/registries.d.ts.map +1 -0
  304. package/dist/providers/registries.js +40 -0
  305. package/dist/providers/registries.js.map +1 -0
  306. package/dist/providers/registries.mjs +38 -0
  307. package/dist/providers/registries.mjs.map +1 -0
  308. package/dist/providers/telemetry.d.ts +3 -0
  309. package/dist/providers/telemetry.d.ts.map +1 -0
  310. package/dist/providers/telemetry.js +22 -0
  311. package/dist/providers/telemetry.js.map +1 -0
  312. package/dist/providers/telemetry.mjs +20 -0
  313. package/dist/providers/telemetry.mjs.map +1 -0
  314. package/dist/providers/webhooks.d.ts +3 -0
  315. package/dist/providers/webhooks.d.ts.map +1 -0
  316. package/dist/providers/webhooks.js +32 -0
  317. package/dist/providers/webhooks.js.map +1 -0
  318. package/dist/providers/webhooks.mjs +30 -0
  319. package/dist/providers/webhooks.mjs.map +1 -0
  320. package/dist/registries/apis.js +23 -20
  321. package/dist/registries/apis.js.map +1 -1
  322. package/dist/registries/apis.mjs +22 -22
  323. package/dist/registries/apis.mjs.map +1 -1
  324. package/dist/registries/components.js +35 -37
  325. package/dist/registries/components.js.map +1 -1
  326. package/dist/registries/components.mjs +34 -39
  327. package/dist/registries/components.mjs.map +1 -1
  328. package/dist/registries/content-types.js +54 -59
  329. package/dist/registries/content-types.js.map +1 -1
  330. package/dist/registries/content-types.mjs +53 -61
  331. package/dist/registries/content-types.mjs.map +1 -1
  332. package/dist/registries/controllers.js +70 -71
  333. package/dist/registries/controllers.js.map +1 -1
  334. package/dist/registries/controllers.mjs +69 -73
  335. package/dist/registries/controllers.mjs.map +1 -1
  336. package/dist/registries/custom-fields.js +75 -65
  337. package/dist/registries/custom-fields.js.map +1 -1
  338. package/dist/registries/custom-fields.mjs +74 -67
  339. package/dist/registries/custom-fields.mjs.map +1 -1
  340. package/dist/registries/hooks.js +46 -49
  341. package/dist/registries/hooks.js.map +1 -1
  342. package/dist/registries/hooks.mjs +45 -51
  343. package/dist/registries/hooks.mjs.map +1 -1
  344. package/dist/registries/index.d.ts +0 -1
  345. package/dist/registries/index.d.ts.map +1 -1
  346. package/dist/registries/middlewares.js +49 -51
  347. package/dist/registries/middlewares.js.map +1 -1
  348. package/dist/registries/middlewares.mjs +48 -53
  349. package/dist/registries/middlewares.mjs.map +1 -1
  350. package/dist/registries/models.js +14 -13
  351. package/dist/registries/models.js.map +1 -1
  352. package/dist/registries/models.mjs +13 -14
  353. package/dist/registries/models.mjs.map +1 -1
  354. package/dist/registries/modules.js +39 -36
  355. package/dist/registries/modules.js.map +1 -1
  356. package/dist/registries/modules.mjs +38 -38
  357. package/dist/registries/modules.mjs.map +1 -1
  358. package/dist/registries/namespace.js +21 -20
  359. package/dist/registries/namespace.js.map +1 -1
  360. package/dist/registries/namespace.mjs +20 -23
  361. package/dist/registries/namespace.mjs.map +1 -1
  362. package/dist/registries/plugins.js +23 -20
  363. package/dist/registries/plugins.js.map +1 -1
  364. package/dist/registries/plugins.mjs +22 -22
  365. package/dist/registries/plugins.mjs.map +1 -1
  366. package/dist/registries/policies.d.ts +1 -1
  367. package/dist/registries/policies.d.ts.map +1 -1
  368. package/dist/registries/policies.js +103 -96
  369. package/dist/registries/policies.js.map +1 -1
  370. package/dist/registries/policies.mjs +102 -98
  371. package/dist/registries/policies.mjs.map +1 -1
  372. package/dist/registries/sanitizers.js +23 -22
  373. package/dist/registries/sanitizers.js.map +1 -1
  374. package/dist/registries/sanitizers.mjs +22 -22
  375. package/dist/registries/sanitizers.mjs.map +1 -1
  376. package/dist/registries/services.js +71 -71
  377. package/dist/registries/services.js.map +1 -1
  378. package/dist/registries/services.mjs +70 -73
  379. package/dist/registries/services.mjs.map +1 -1
  380. package/dist/registries/validators.js +23 -22
  381. package/dist/registries/validators.js.map +1 -1
  382. package/dist/registries/validators.mjs +22 -22
  383. package/dist/registries/validators.mjs.map +1 -1
  384. package/dist/services/auth/index.js +74 -74
  385. package/dist/services/auth/index.js.map +1 -1
  386. package/dist/services/auth/index.mjs +73 -74
  387. package/dist/services/auth/index.mjs.map +1 -1
  388. package/dist/services/config.d.ts +3 -0
  389. package/dist/services/config.d.ts.map +1 -0
  390. package/dist/services/config.js +51 -0
  391. package/dist/services/config.js.map +1 -0
  392. package/dist/services/config.mjs +49 -0
  393. package/dist/services/config.mjs.map +1 -0
  394. package/dist/services/content-api/index.d.ts +10 -12
  395. package/dist/services/content-api/index.d.ts.map +1 -1
  396. package/dist/services/content-api/index.js +80 -79
  397. package/dist/services/content-api/index.js.map +1 -1
  398. package/dist/services/content-api/index.mjs +79 -79
  399. package/dist/services/content-api/index.mjs.map +1 -1
  400. package/dist/services/content-api/permissions/engine.js +8 -5
  401. package/dist/services/content-api/permissions/engine.js.map +1 -1
  402. package/dist/services/content-api/permissions/engine.mjs +7 -5
  403. package/dist/services/content-api/permissions/engine.mjs.map +1 -1
  404. package/dist/services/content-api/permissions/index.d.ts +10 -12
  405. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  406. package/dist/services/content-api/permissions/index.js +101 -81
  407. package/dist/services/content-api/permissions/index.js.map +1 -1
  408. package/dist/services/content-api/permissions/index.mjs +100 -81
  409. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  410. package/dist/services/content-api/permissions/providers/action.d.ts +5 -6
  411. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  412. package/dist/services/content-api/permissions/providers/action.js +17 -14
  413. package/dist/services/content-api/permissions/providers/action.js.map +1 -1
  414. package/dist/services/content-api/permissions/providers/action.mjs +16 -16
  415. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
  416. package/dist/services/content-api/permissions/providers/condition.d.ts +5 -6
  417. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  418. package/dist/services/content-api/permissions/providers/condition.js +17 -14
  419. package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
  420. package/dist/services/content-api/permissions/providers/condition.mjs +16 -16
  421. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
  422. package/dist/services/core-store.d.ts +2 -2
  423. package/dist/services/core-store.d.ts.map +1 -1
  424. package/dist/services/core-store.js +115 -95
  425. package/dist/services/core-store.js.map +1 -1
  426. package/dist/services/core-store.mjs +114 -97
  427. package/dist/services/core-store.mjs.map +1 -1
  428. package/dist/services/cron.d.ts +3 -3
  429. package/dist/services/cron.d.ts.map +1 -1
  430. package/dist/services/cron.js +74 -60
  431. package/dist/services/cron.js.map +1 -1
  432. package/dist/services/cron.mjs +73 -62
  433. package/dist/services/cron.mjs.map +1 -1
  434. package/dist/services/custom-fields.js +9 -7
  435. package/dist/services/custom-fields.js.map +1 -1
  436. package/dist/services/custom-fields.mjs +8 -9
  437. package/dist/services/custom-fields.mjs.map +1 -1
  438. package/dist/services/document-service/attributes/index.d.ts +6 -0
  439. package/dist/services/document-service/attributes/index.d.ts.map +1 -0
  440. package/dist/services/document-service/attributes/index.js +27 -0
  441. package/dist/services/document-service/attributes/index.js.map +1 -0
  442. package/dist/services/document-service/attributes/index.mjs +25 -0
  443. package/dist/services/document-service/attributes/index.mjs.map +1 -0
  444. package/dist/services/document-service/attributes/transforms.d.ts.map +1 -0
  445. package/dist/services/document-service/attributes/transforms.js +21 -0
  446. package/dist/services/document-service/attributes/transforms.js.map +1 -0
  447. package/dist/services/document-service/attributes/transforms.mjs +19 -0
  448. package/dist/services/document-service/attributes/transforms.mjs.map +1 -0
  449. package/dist/services/document-service/common.d.ts +1 -1
  450. package/dist/services/document-service/common.d.ts.map +1 -1
  451. package/dist/services/document-service/common.js +5 -4
  452. package/dist/services/document-service/common.js.map +1 -1
  453. package/dist/services/document-service/common.mjs +4 -5
  454. package/dist/services/document-service/common.mjs.map +1 -1
  455. package/dist/services/document-service/components.d.ts +25 -1
  456. package/dist/services/document-service/components.d.ts.map +1 -1
  457. package/dist/services/document-service/components.js +286 -0
  458. package/dist/services/document-service/components.js.map +1 -0
  459. package/dist/services/document-service/components.mjs +278 -0
  460. package/dist/services/document-service/components.mjs.map +1 -0
  461. package/dist/services/document-service/draft-and-publish.d.ts +1 -1
  462. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  463. package/dist/services/document-service/draft-and-publish.js +94 -54
  464. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  465. package/dist/services/document-service/draft-and-publish.mjs +87 -54
  466. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  467. package/dist/services/document-service/entries.d.ts +10 -0
  468. package/dist/services/document-service/entries.d.ts.map +1 -0
  469. package/dist/services/document-service/entries.js +155 -0
  470. package/dist/services/document-service/entries.js.map +1 -0
  471. package/dist/services/document-service/entries.mjs +153 -0
  472. package/dist/services/document-service/entries.mjs.map +1 -0
  473. package/dist/services/document-service/events.d.ts +25 -0
  474. package/dist/services/document-service/events.d.ts.map +1 -0
  475. package/dist/services/document-service/events.js +59 -0
  476. package/dist/services/document-service/events.js.map +1 -0
  477. package/dist/services/document-service/events.mjs +57 -0
  478. package/dist/services/document-service/events.mjs.map +1 -0
  479. package/dist/services/document-service/index.d.ts +2 -3
  480. package/dist/services/document-service/index.d.ts.map +1 -1
  481. package/dist/services/document-service/index.js +53 -21
  482. package/dist/services/document-service/index.js.map +1 -1
  483. package/dist/services/document-service/index.mjs +52 -22
  484. package/dist/services/document-service/index.mjs.map +1 -1
  485. package/dist/services/document-service/internationalization.d.ts +6 -1
  486. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  487. package/dist/services/document-service/internationalization.js +98 -41
  488. package/dist/services/document-service/internationalization.js.map +1 -1
  489. package/dist/services/document-service/internationalization.mjs +92 -41
  490. package/dist/services/document-service/internationalization.mjs.map +1 -1
  491. package/dist/services/document-service/middlewares/errors.js +23 -19
  492. package/dist/services/document-service/middlewares/errors.js.map +1 -1
  493. package/dist/services/document-service/middlewares/errors.mjs +22 -20
  494. package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
  495. package/dist/services/document-service/middlewares/middleware-manager.d.ts +5 -2
  496. package/dist/services/document-service/middlewares/middleware-manager.d.ts.map +1 -1
  497. package/dist/services/document-service/middlewares/middleware-manager.js +46 -41
  498. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  499. package/dist/services/document-service/middlewares/middleware-manager.mjs +45 -42
  500. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  501. package/dist/services/document-service/params.d.ts +3 -1
  502. package/dist/services/document-service/params.d.ts.map +1 -1
  503. package/dist/services/document-service/params.js +14 -0
  504. package/dist/services/document-service/params.js.map +1 -0
  505. package/dist/services/document-service/params.mjs +12 -0
  506. package/dist/services/document-service/params.mjs.map +1 -0
  507. package/dist/services/document-service/repository.d.ts.map +1 -1
  508. package/dist/services/document-service/repository.js +355 -287
  509. package/dist/services/document-service/repository.js.map +1 -1
  510. package/dist/services/document-service/repository.mjs +354 -288
  511. package/dist/services/document-service/repository.mjs.map +1 -1
  512. package/dist/services/document-service/transform/data.d.ts.map +1 -1
  513. package/dist/services/document-service/transform/data.js +22 -10
  514. package/dist/services/document-service/transform/data.js.map +1 -1
  515. package/dist/services/document-service/transform/data.mjs +21 -11
  516. package/dist/services/document-service/transform/data.mjs.map +1 -1
  517. package/dist/services/document-service/transform/fields.js +26 -17
  518. package/dist/services/document-service/transform/fields.js.map +1 -1
  519. package/dist/services/document-service/transform/fields.mjs +25 -18
  520. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  521. package/dist/services/document-service/transform/id-map.d.ts +1 -1
  522. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  523. package/dist/services/document-service/transform/id-map.js +116 -69
  524. package/dist/services/document-service/transform/id-map.js.map +1 -1
  525. package/dist/services/document-service/transform/id-map.mjs +115 -70
  526. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  527. package/dist/services/document-service/transform/id-transform.d.ts +1 -1
  528. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  529. package/dist/services/document-service/transform/id-transform.js +38 -30
  530. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  531. package/dist/services/document-service/transform/id-transform.mjs +36 -30
  532. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  533. package/dist/services/document-service/transform/populate.js +23 -18
  534. package/dist/services/document-service/transform/populate.js.map +1 -1
  535. package/dist/services/document-service/transform/populate.mjs +22 -19
  536. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  537. package/dist/services/document-service/transform/query.d.ts +5 -0
  538. package/dist/services/document-service/transform/query.d.ts.map +1 -0
  539. package/dist/services/document-service/transform/query.js +14 -0
  540. package/dist/services/document-service/transform/query.js.map +1 -0
  541. package/dist/services/document-service/transform/query.mjs +12 -0
  542. package/dist/services/document-service/transform/query.mjs.map +1 -0
  543. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +8 -7
  544. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  545. package/dist/services/document-service/transform/relations/extract/data-ids.js +75 -85
  546. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  547. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +74 -86
  548. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  549. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts +7 -3
  550. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  551. package/dist/services/document-service/transform/relations/transform/data-ids.js +103 -134
  552. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  553. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +102 -135
  554. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  555. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts +9 -0
  556. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts.map +1 -0
  557. package/dist/services/document-service/transform/relations/transform/default-locale.js +50 -0
  558. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -0
  559. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +48 -0
  560. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -0
  561. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  562. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  563. package/dist/services/document-service/transform/relations/utils/dp.js +52 -26
  564. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  565. package/dist/services/document-service/transform/relations/utils/dp.mjs +51 -27
  566. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  567. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +3 -3
  568. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  569. package/dist/services/document-service/transform/relations/utils/i18n.js +19 -23
  570. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  571. package/dist/services/document-service/transform/relations/utils/i18n.mjs +18 -26
  572. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  573. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts +6 -0
  574. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -0
  575. package/dist/services/document-service/transform/relations/utils/map-relation.js +130 -0
  576. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -0
  577. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +127 -0
  578. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -0
  579. package/dist/services/document-service/transform/relations/utils/types.d.ts +6 -0
  580. package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -1
  581. package/dist/services/document-service/utils/bidirectional-relations.d.ts +95 -0
  582. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -0
  583. package/dist/services/document-service/utils/bidirectional-relations.js +148 -0
  584. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -0
  585. package/dist/services/document-service/utils/bidirectional-relations.mjs +145 -0
  586. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -0
  587. package/dist/services/document-service/utils/populate.d.ts +1 -1
  588. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  589. package/dist/services/document-service/utils/populate.js +67 -37
  590. package/dist/services/document-service/utils/populate.js.map +1 -1
  591. package/dist/services/document-service/utils/populate.mjs +66 -38
  592. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  593. package/dist/services/document-service/utils/unidirectional-relations.d.ts +36 -0
  594. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -0
  595. package/dist/services/document-service/utils/unidirectional-relations.js +116 -0
  596. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -0
  597. package/dist/services/document-service/utils/unidirectional-relations.mjs +113 -0
  598. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -0
  599. package/dist/services/entity-service/index.d.ts.map +1 -1
  600. package/dist/services/entity-service/index.js +230 -154
  601. package/dist/services/entity-service/index.js.map +1 -1
  602. package/dist/services/entity-service/index.mjs +229 -153
  603. package/dist/services/entity-service/index.mjs.map +1 -1
  604. package/dist/services/entity-validator/blocks-validator.d.ts +1 -2
  605. package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
  606. package/dist/services/entity-validator/blocks-validator.js +137 -104
  607. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  608. package/dist/services/entity-validator/blocks-validator.mjs +135 -105
  609. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  610. package/dist/services/entity-validator/index.d.ts +15 -1
  611. package/dist/services/entity-validator/index.d.ts.map +1 -1
  612. package/dist/services/entity-validator/index.js +371 -305
  613. package/dist/services/entity-validator/index.js.map +1 -1
  614. package/dist/services/entity-validator/index.mjs +367 -302
  615. package/dist/services/entity-validator/index.mjs.map +1 -1
  616. package/dist/services/entity-validator/validators.d.ts +37 -25
  617. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  618. package/dist/services/entity-validator/validators.js +286 -110
  619. package/dist/services/entity-validator/validators.js.map +1 -1
  620. package/dist/services/entity-validator/validators.mjs +277 -108
  621. package/dist/services/entity-validator/validators.mjs.map +1 -1
  622. package/dist/services/errors.js +65 -65
  623. package/dist/services/errors.js.map +1 -1
  624. package/dist/services/errors.mjs +64 -66
  625. package/dist/services/errors.mjs.map +1 -1
  626. package/dist/services/event-hub.d.ts +1 -0
  627. package/dist/services/event-hub.d.ts.map +1 -1
  628. package/dist/services/event-hub.js +82 -64
  629. package/dist/services/event-hub.js.map +1 -1
  630. package/dist/services/event-hub.mjs +81 -66
  631. package/dist/services/event-hub.mjs.map +1 -1
  632. package/dist/services/features.js +19 -14
  633. package/dist/services/features.js.map +1 -1
  634. package/dist/services/features.mjs +18 -15
  635. package/dist/services/features.mjs.map +1 -1
  636. package/dist/services/fs.js +41 -40
  637. package/dist/services/fs.js.map +1 -1
  638. package/dist/services/fs.mjs +40 -39
  639. package/dist/services/fs.mjs.map +1 -1
  640. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  641. package/dist/services/metrics/admin-user-hash.js +13 -11
  642. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  643. package/dist/services/metrics/admin-user-hash.mjs +12 -10
  644. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  645. package/dist/services/metrics/index.js +46 -40
  646. package/dist/services/metrics/index.js.map +1 -1
  647. package/dist/services/metrics/index.mjs +45 -42
  648. package/dist/services/metrics/index.mjs.map +1 -1
  649. package/dist/services/metrics/is-truthy.js +13 -6
  650. package/dist/services/metrics/is-truthy.js.map +1 -1
  651. package/dist/services/metrics/is-truthy.mjs +12 -6
  652. package/dist/services/metrics/is-truthy.mjs.map +1 -1
  653. package/dist/services/metrics/middleware.d.ts.map +1 -1
  654. package/dist/services/metrics/middleware.js +37 -22
  655. package/dist/services/metrics/middleware.js.map +1 -1
  656. package/dist/services/metrics/middleware.mjs +36 -24
  657. package/dist/services/metrics/middleware.mjs.map +1 -1
  658. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  659. package/dist/services/metrics/rate-limiter.js +24 -19
  660. package/dist/services/metrics/rate-limiter.js.map +1 -1
  661. package/dist/services/metrics/rate-limiter.mjs +23 -21
  662. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  663. package/dist/services/metrics/sender.d.ts.map +1 -1
  664. package/dist/services/metrics/sender.js +78 -69
  665. package/dist/services/metrics/sender.js.map +1 -1
  666. package/dist/services/metrics/sender.mjs +77 -64
  667. package/dist/services/metrics/sender.mjs.map +1 -1
  668. package/dist/services/query-params.js +13 -10
  669. package/dist/services/query-params.js.map +1 -1
  670. package/dist/services/query-params.mjs +12 -12
  671. package/dist/services/query-params.mjs.map +1 -1
  672. package/dist/services/reloader.d.ts +7 -0
  673. package/dist/services/reloader.d.ts.map +1 -0
  674. package/dist/services/reloader.js +39 -0
  675. package/dist/services/reloader.js.map +1 -0
  676. package/dist/services/reloader.mjs +37 -0
  677. package/dist/services/reloader.mjs.map +1 -0
  678. package/dist/services/request-context.js +11 -8
  679. package/dist/services/request-context.js.map +1 -1
  680. package/dist/services/request-context.mjs +10 -10
  681. package/dist/services/request-context.mjs.map +1 -1
  682. package/dist/services/server/admin-api.js +11 -10
  683. package/dist/services/server/admin-api.js.map +1 -1
  684. package/dist/services/server/admin-api.mjs +10 -11
  685. package/dist/services/server/admin-api.mjs.map +1 -1
  686. package/dist/services/server/api.js +33 -27
  687. package/dist/services/server/api.js.map +1 -1
  688. package/dist/services/server/api.mjs +32 -26
  689. package/dist/services/server/api.mjs.map +1 -1
  690. package/dist/services/server/compose-endpoint.d.ts.map +1 -1
  691. package/dist/services/server/compose-endpoint.js +116 -105
  692. package/dist/services/server/compose-endpoint.js.map +1 -1
  693. package/dist/services/server/compose-endpoint.mjs +115 -105
  694. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  695. package/dist/services/server/content-api.js +11 -9
  696. package/dist/services/server/content-api.js.map +1 -1
  697. package/dist/services/server/content-api.mjs +10 -10
  698. package/dist/services/server/content-api.mjs.map +1 -1
  699. package/dist/services/server/http-server.js +48 -44
  700. package/dist/services/server/http-server.js.map +1 -1
  701. package/dist/services/server/http-server.mjs +47 -43
  702. package/dist/services/server/http-server.mjs.map +1 -1
  703. package/dist/services/server/index.js +85 -82
  704. package/dist/services/server/index.js.map +1 -1
  705. package/dist/services/server/index.mjs +84 -81
  706. package/dist/services/server/index.mjs.map +1 -1
  707. package/dist/services/server/koa.d.ts.map +1 -1
  708. package/dist/services/server/koa.js +49 -47
  709. package/dist/services/server/koa.js.map +1 -1
  710. package/dist/services/server/koa.mjs +48 -44
  711. package/dist/services/server/koa.mjs.map +1 -1
  712. package/dist/services/server/middleware.js +86 -82
  713. package/dist/services/server/middleware.js.map +1 -1
  714. package/dist/services/server/middleware.mjs +85 -82
  715. package/dist/services/server/middleware.mjs.map +1 -1
  716. package/dist/services/server/policy.js +24 -17
  717. package/dist/services/server/policy.js.map +1 -1
  718. package/dist/services/server/policy.mjs +23 -18
  719. package/dist/services/server/policy.mjs.map +1 -1
  720. package/dist/services/server/register-middlewares.js +68 -61
  721. package/dist/services/server/register-middlewares.js.map +1 -1
  722. package/dist/services/server/register-middlewares.mjs +67 -63
  723. package/dist/services/server/register-middlewares.mjs.map +1 -1
  724. package/dist/services/server/register-routes.js +90 -67
  725. package/dist/services/server/register-routes.js.map +1 -1
  726. package/dist/services/server/register-routes.mjs +89 -67
  727. package/dist/services/server/register-routes.mjs.map +1 -1
  728. package/dist/services/server/routing.d.ts +1 -1
  729. package/dist/services/server/routing.js +94 -81
  730. package/dist/services/server/routing.js.map +1 -1
  731. package/dist/services/server/routing.mjs +93 -81
  732. package/dist/services/server/routing.mjs.map +1 -1
  733. package/dist/services/utils/conditional-fields.d.ts +3 -0
  734. package/dist/services/utils/conditional-fields.d.ts.map +1 -0
  735. package/dist/services/utils/conditional-fields.js +22 -0
  736. package/dist/services/utils/conditional-fields.js.map +1 -0
  737. package/dist/services/utils/conditional-fields.mjs +20 -0
  738. package/dist/services/utils/conditional-fields.mjs.map +1 -0
  739. package/dist/services/utils/dynamic-zones.js +13 -14
  740. package/dist/services/utils/dynamic-zones.js.map +1 -1
  741. package/dist/services/utils/dynamic-zones.mjs +12 -16
  742. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  743. package/dist/services/webhook-runner.d.ts +2 -1
  744. package/dist/services/webhook-runner.d.ts.map +1 -1
  745. package/dist/services/webhook-runner.js +124 -122
  746. package/dist/services/webhook-runner.js.map +1 -1
  747. package/dist/services/webhook-runner.mjs +123 -121
  748. package/dist/services/webhook-runner.mjs.map +1 -1
  749. package/dist/services/webhook-store.d.ts +2 -8
  750. package/dist/services/webhook-store.d.ts.map +1 -1
  751. package/dist/services/webhook-store.js +132 -93
  752. package/dist/services/webhook-store.js.map +1 -1
  753. package/dist/services/webhook-store.mjs +131 -95
  754. package/dist/services/webhook-store.mjs.map +1 -1
  755. package/dist/services/worker-queue.js +44 -49
  756. package/dist/services/worker-queue.js.map +1 -1
  757. package/dist/services/worker-queue.mjs +43 -49
  758. package/dist/services/worker-queue.mjs.map +1 -1
  759. package/dist/utils/convert-custom-field-type.js +17 -20
  760. package/dist/utils/convert-custom-field-type.js.map +1 -1
  761. package/dist/utils/convert-custom-field-type.mjs +16 -21
  762. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  763. package/dist/utils/cron.js +64 -30
  764. package/dist/utils/cron.js.map +1 -1
  765. package/dist/utils/cron.mjs +63 -31
  766. package/dist/utils/cron.mjs.map +1 -1
  767. package/dist/utils/fetch.d.ts +5 -1
  768. package/dist/utils/fetch.d.ts.map +1 -1
  769. package/dist/utils/fetch.js +28 -17
  770. package/dist/utils/fetch.js.map +1 -1
  771. package/dist/utils/fetch.mjs +27 -18
  772. package/dist/utils/fetch.mjs.map +1 -1
  773. package/dist/utils/filepath-to-prop-path.d.ts +1 -1
  774. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  775. package/dist/utils/filepath-to-prop-path.js +22 -9
  776. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  777. package/dist/utils/filepath-to-prop-path.mjs +20 -7
  778. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  779. package/dist/utils/index.d.ts +2 -1
  780. package/dist/utils/index.d.ts.map +1 -1
  781. package/dist/utils/is-initialized.js +21 -12
  782. package/dist/utils/is-initialized.js.map +1 -1
  783. package/dist/utils/is-initialized.mjs +20 -13
  784. package/dist/utils/is-initialized.mjs.map +1 -1
  785. package/dist/utils/lifecycles.js +6 -5
  786. package/dist/utils/lifecycles.js.map +1 -1
  787. package/dist/utils/lifecycles.mjs +5 -6
  788. package/dist/utils/lifecycles.mjs.map +1 -1
  789. package/dist/utils/load-config-file.js +40 -38
  790. package/dist/utils/load-config-file.js.map +1 -1
  791. package/dist/utils/load-config-file.mjs +39 -36
  792. package/dist/utils/load-config-file.mjs.map +1 -1
  793. package/dist/utils/load-files.d.ts.map +1 -1
  794. package/dist/utils/load-files.js +40 -35
  795. package/dist/utils/load-files.js.map +1 -1
  796. package/dist/utils/load-files.mjs +39 -32
  797. package/dist/utils/load-files.mjs.map +1 -1
  798. package/dist/utils/open-browser.js +8 -8
  799. package/dist/utils/open-browser.js.map +1 -1
  800. package/dist/utils/open-browser.mjs +7 -7
  801. package/dist/utils/open-browser.mjs.map +1 -1
  802. package/dist/utils/resolve-working-dirs.d.ts +19 -0
  803. package/dist/utils/resolve-working-dirs.d.ts.map +1 -0
  804. package/dist/utils/resolve-working-dirs.js +26 -0
  805. package/dist/utils/resolve-working-dirs.js.map +1 -0
  806. package/dist/utils/resolve-working-dirs.mjs +24 -0
  807. package/dist/utils/resolve-working-dirs.mjs.map +1 -0
  808. package/dist/utils/signals.js +20 -14
  809. package/dist/utils/signals.js.map +1 -1
  810. package/dist/utils/signals.mjs +19 -15
  811. package/dist/utils/signals.mjs.map +1 -1
  812. package/dist/utils/startup-logger.d.ts.map +1 -1
  813. package/dist/utils/startup-logger.js +107 -78
  814. package/dist/utils/startup-logger.js.map +1 -1
  815. package/dist/utils/startup-logger.mjs +106 -75
  816. package/dist/utils/startup-logger.mjs.map +1 -1
  817. package/dist/utils/transform-content-types-to-models.d.ts +572 -38
  818. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  819. package/dist/utils/transform-content-types-to-models.js +357 -217
  820. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  821. package/dist/utils/transform-content-types-to-models.mjs +351 -220
  822. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  823. package/dist/utils/update-notifier/index.d.ts +1 -6
  824. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  825. package/dist/utils/update-notifier/index.js +66 -74
  826. package/dist/utils/update-notifier/index.js.map +1 -1
  827. package/dist/utils/update-notifier/index.mjs +65 -68
  828. package/dist/utils/update-notifier/index.mjs.map +1 -1
  829. package/package.json +44 -39
  830. package/dist/registries/config.d.ts +0 -4
  831. package/dist/registries/config.d.ts.map +0 -1
  832. package/dist/registries/config.js +0 -43
  833. package/dist/registries/config.js.map +0 -1
  834. package/dist/registries/config.mjs +0 -44
  835. package/dist/registries/config.mjs.map +0 -1
  836. package/dist/services/document-service/document-engine.d.ts +0 -2
  837. package/dist/services/document-service/document-engine.d.ts.map +0 -1
  838. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts +0 -2
  839. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts.map +0 -1
  840. package/dist/services/document-service/transform/relations/utils/data.js +0 -12
  841. package/dist/services/document-service/transform/relations/utils/data.js.map +0 -1
  842. package/dist/services/document-service/transform/relations/utils/data.mjs +0 -12
  843. package/dist/services/document-service/transform/relations/utils/data.mjs.map +0 -1
  844. package/dist/services/entity-service/attributes/index.d.ts +0 -6
  845. package/dist/services/entity-service/attributes/index.d.ts.map +0 -1
  846. package/dist/services/entity-service/attributes/index.js +0 -22
  847. package/dist/services/entity-service/attributes/index.js.map +0 -1
  848. package/dist/services/entity-service/attributes/index.mjs +0 -22
  849. package/dist/services/entity-service/attributes/index.mjs.map +0 -1
  850. package/dist/services/entity-service/attributes/transforms.d.ts.map +0 -1
  851. package/dist/services/entity-service/attributes/transforms.js +0 -20
  852. package/dist/services/entity-service/attributes/transforms.js.map +0 -1
  853. package/dist/services/entity-service/attributes/transforms.mjs +0 -19
  854. package/dist/services/entity-service/attributes/transforms.mjs.map +0 -1
  855. package/dist/services/entity-service/components.d.ts +0 -95
  856. package/dist/services/entity-service/components.d.ts.map +0 -1
  857. package/dist/services/entity-service/components.js +0 -298
  858. package/dist/services/entity-service/components.js.map +0 -1
  859. package/dist/services/entity-service/components.mjs +0 -296
  860. package/dist/services/entity-service/components.mjs.map +0 -1
  861. package/dist/services/entity-service/params.d.ts +0 -8
  862. package/dist/services/entity-service/params.d.ts.map +0 -1
  863. package/dist/services/entity-service/params.js +0 -8
  864. package/dist/services/entity-service/params.js.map +0 -1
  865. package/dist/services/entity-service/params.mjs +0 -8
  866. package/dist/services/entity-service/params.mjs.map +0 -1
  867. package/dist/utils/get-dirs.d.ts +0 -9
  868. package/dist/utils/get-dirs.d.ts.map +0 -1
  869. package/dist/utils/get-dirs.js +0 -30
  870. package/dist/utils/get-dirs.js.map +0 -1
  871. package/dist/utils/get-dirs.mjs +0 -30
  872. package/dist/utils/get-dirs.mjs.map +0 -1
  873. /package/dist/services/{entity-service → document-service}/attributes/transforms.d.ts +0 -0
@@ -0,0 +1,113 @@
1
+ import { omit, keyBy } from 'lodash/fp';
2
+
3
+ /**
4
+ * Loads lingering relations that need to be updated when overriding a published or draft entry.
5
+ * This is necessary because the relations are uni-directional and the target entry is not aware of the source entry.
6
+ * This is not the case for bi-directional relations, where the target entry is also linked to the source entry.
7
+ */ const load = async (uid, { oldVersions, newVersions })=>{
8
+ const updates = [];
9
+ // Iterate all components and content types to find relations that need to be updated
10
+ await strapi.db.transaction(async ({ trx })=>{
11
+ const contentTypes = Object.values(strapi.contentTypes);
12
+ const components = Object.values(strapi.components);
13
+ for (const model of [
14
+ ...contentTypes,
15
+ ...components
16
+ ]){
17
+ const dbModel = strapi.db.metadata.get(model.uid);
18
+ for (const attribute of Object.values(dbModel.attributes)){
19
+ /**
20
+ * Only consider unidirectional relations
21
+ */ if (attribute.type !== 'relation' || attribute.target !== uid || attribute.inversedBy || attribute.mappedBy) {
22
+ continue;
23
+ }
24
+ // TODO: joinColumn relations
25
+ const joinTable = attribute.joinTable;
26
+ if (!joinTable) {
27
+ continue;
28
+ }
29
+ const { name: sourceColumnName } = joinTable.joinColumn;
30
+ const { name: targetColumnName } = joinTable.inverseJoinColumn;
31
+ /**
32
+ * Load all relations that need to be updated
33
+ */ // NOTE: when the model has draft and publish, we can assume relation are only draft to draft & published to published
34
+ const ids = oldVersions.map((entry)=>entry.id);
35
+ const oldVersionsRelations = await strapi.db.getConnection().select('*').from(joinTable.name).whereIn(targetColumnName, ids).transacting(trx);
36
+ if (oldVersionsRelations.length > 0) {
37
+ updates.push({
38
+ joinTable,
39
+ relations: oldVersionsRelations
40
+ });
41
+ }
42
+ /**
43
+ * if publishing
44
+ * if published version exists
45
+ * updated published versions links
46
+ * else
47
+ * create link to newly published version
48
+ *
49
+ * if discarding
50
+ * if published version link exists & not draft version link
51
+ * create link to new draft version
52
+ */ if (!model.options?.draftAndPublish) {
53
+ const ids = newVersions.map((entry)=>entry.id);
54
+ const newVersionsRelations = await strapi.db.getConnection().select('*').from(joinTable.name).whereIn(targetColumnName, ids).transacting(trx);
55
+ if (newVersionsRelations.length > 0) {
56
+ // when publishing a draft that doesn't have a published version yet,
57
+ // copy the links to the draft over to the published version
58
+ // when discarding a published version, if no drafts exists
59
+ const discardToAdd = newVersionsRelations.filter((relation)=>{
60
+ const matchingOldVerion = oldVersionsRelations.find((oldRelation)=>{
61
+ return oldRelation[sourceColumnName] === relation[sourceColumnName];
62
+ });
63
+ return !matchingOldVerion;
64
+ }).map(omit('id'));
65
+ updates.push({
66
+ joinTable,
67
+ relations: discardToAdd
68
+ });
69
+ }
70
+ }
71
+ }
72
+ }
73
+ });
74
+ return updates;
75
+ };
76
+ /**
77
+ * Updates uni directional relations to target the right entries when overriding published or draft entries.
78
+ *
79
+ * @param oldEntries The old entries that are being overridden
80
+ * @param newEntries The new entries that are overriding the old ones
81
+ * @param oldRelations The relations that were previously loaded with `load` @see load
82
+ */ const sync = async (oldEntries, newEntries, oldRelations)=>{
83
+ /**
84
+ * Create a map of old entry ids to new entry ids
85
+ *
86
+ * Will be used to update the relation target ids
87
+ */ const newEntryByLocale = keyBy('locale', newEntries);
88
+ const oldEntriesMap = oldEntries.reduce((acc, entry)=>{
89
+ const newEntry = newEntryByLocale[entry.locale];
90
+ if (!newEntry) return acc;
91
+ acc[entry.id] = newEntry.id;
92
+ return acc;
93
+ }, {});
94
+ await strapi.db.transaction(async ({ trx })=>{
95
+ // Iterate old relations that are deleted and insert the new ones
96
+ for (const { joinTable, relations } of oldRelations){
97
+ // Update old ids with the new ones
98
+ const column = joinTable.inverseJoinColumn.name;
99
+ const newRelations = relations.map((relation)=>{
100
+ const newId = oldEntriesMap[relation[column]];
101
+ return {
102
+ ...relation,
103
+ [column]: newId
104
+ };
105
+ });
106
+ // Insert those relations into the join table
107
+ await trx.batchInsert(joinTable.name, newRelations, 1000);
108
+ }
109
+ });
110
+ };
111
+
112
+ export { load, sync };
113
+ //# sourceMappingURL=unidirectional-relations.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unidirectional-relations.mjs","sources":["../../../../src/services/document-service/utils/unidirectional-relations.ts"],"sourcesContent":["/* eslint-disable no-continue */\nimport { keyBy, omit } from 'lodash/fp';\n\nimport type { UID, Schema } from '@strapi/types';\n\ninterface LoadContext {\n oldVersions: { id: string; locale: string }[];\n newVersions: { id: string; locale: string }[];\n}\n\n/**\n * Loads lingering relations that need to be updated when overriding a published or draft entry.\n * This is necessary because the relations are uni-directional and the target entry is not aware of the source entry.\n * This is not the case for bi-directional relations, where the target entry is also linked to the source entry.\n */\nconst load = async (uid: UID.ContentType, { oldVersions, newVersions }: LoadContext) => {\n const updates = [] as any;\n\n // Iterate all components and content types to find relations that need to be updated\n await strapi.db.transaction(async ({ trx }) => {\n const contentTypes = Object.values(strapi.contentTypes) as Schema.ContentType[];\n const components = Object.values(strapi.components) as Schema.Component[];\n\n for (const model of [...contentTypes, ...components]) {\n const dbModel = strapi.db.metadata.get(model.uid);\n\n for (const attribute of Object.values(dbModel.attributes) as any) {\n /**\n * Only consider unidirectional relations\n */\n if (\n attribute.type !== 'relation' ||\n attribute.target !== uid ||\n attribute.inversedBy ||\n attribute.mappedBy\n ) {\n continue;\n }\n\n // TODO: joinColumn relations\n const joinTable = attribute.joinTable;\n if (!joinTable) {\n continue;\n }\n\n const { name: sourceColumnName } = joinTable.joinColumn;\n const { name: targetColumnName } = joinTable.inverseJoinColumn;\n\n /**\n * Load all relations that need to be updated\n */\n // NOTE: when the model has draft and publish, we can assume relation are only draft to draft & published to published\n const ids = oldVersions.map((entry) => entry.id);\n\n const oldVersionsRelations = await strapi.db\n .getConnection()\n .select('*')\n .from(joinTable.name)\n .whereIn(targetColumnName, ids)\n .transacting(trx);\n\n if (oldVersionsRelations.length > 0) {\n updates.push({ joinTable, relations: oldVersionsRelations });\n }\n\n /**\n * if publishing\n * if published version exists\n * updated published versions links\n * else\n * create link to newly published version\n *\n * if discarding\n * if published version link exists & not draft version link\n * create link to new draft version\n */\n\n if (!model.options?.draftAndPublish) {\n const ids = newVersions.map((entry) => entry.id);\n\n const newVersionsRelations = await strapi.db\n .getConnection()\n .select('*')\n .from(joinTable.name)\n .whereIn(targetColumnName, ids)\n .transacting(trx);\n\n if (newVersionsRelations.length > 0) {\n // when publishing a draft that doesn't have a published version yet,\n // copy the links to the draft over to the published version\n // when discarding a published version, if no drafts exists\n const discardToAdd = newVersionsRelations\n .filter((relation) => {\n const matchingOldVerion = oldVersionsRelations.find((oldRelation) => {\n return oldRelation[sourceColumnName] === relation[sourceColumnName];\n });\n\n return !matchingOldVerion;\n })\n .map(omit('id'));\n\n updates.push({ joinTable, relations: discardToAdd });\n }\n }\n }\n }\n });\n\n return updates;\n};\n\n/**\n * Updates uni directional relations to target the right entries when overriding published or draft entries.\n *\n * @param oldEntries The old entries that are being overridden\n * @param newEntries The new entries that are overriding the old ones\n * @param oldRelations The relations that were previously loaded with `load` @see load\n */\nconst sync = async (\n oldEntries: { id: string; locale: string }[],\n newEntries: { id: string; locale: string }[],\n oldRelations: { joinTable: any; relations: any[] }[]\n) => {\n /**\n * Create a map of old entry ids to new entry ids\n *\n * Will be used to update the relation target ids\n */\n const newEntryByLocale = keyBy('locale', newEntries);\n const oldEntriesMap = oldEntries.reduce(\n (acc, entry) => {\n const newEntry = newEntryByLocale[entry.locale];\n if (!newEntry) return acc;\n acc[entry.id] = newEntry.id;\n return acc;\n },\n {} as Record<string, string>\n );\n\n await strapi.db.transaction(async ({ trx }) => {\n // Iterate old relations that are deleted and insert the new ones\n for (const { joinTable, relations } of oldRelations) {\n // Update old ids with the new ones\n const column = joinTable.inverseJoinColumn.name;\n\n const newRelations = relations.map((relation) => {\n const newId = oldEntriesMap[relation[column]];\n return { ...relation, [column]: newId };\n });\n\n // Insert those relations into the join table\n await trx.batchInsert(joinTable.name, newRelations, 1000);\n }\n });\n};\n\nexport { load, sync };\n"],"names":["load","uid","oldVersions","newVersions","updates","strapi","db","transaction","trx","contentTypes","Object","values","components","model","dbModel","metadata","get","attribute","attributes","type","target","inversedBy","mappedBy","joinTable","name","sourceColumnName","joinColumn","targetColumnName","inverseJoinColumn","ids","map","entry","id","oldVersionsRelations","getConnection","select","from","whereIn","transacting","length","push","relations","options","draftAndPublish","newVersionsRelations","discardToAdd","filter","relation","matchingOldVerion","find","oldRelation","omit","sync","oldEntries","newEntries","oldRelations","newEntryByLocale","keyBy","oldEntriesMap","reduce","acc","newEntry","locale","column","newRelations","newId","batchInsert"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/entity-service/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAS,MAAM,eAAe,CAAC;AAE1D,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG;IACxB,QAAQ,CACN,SAAS,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,aAAa,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC,aAAa,GAAG;QAC7F,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,GACA,IAAI,CAAC;CACT,CAAC;8BAgLmB;IACnB,QAAQ,KAAK,MAAM,CAAC;IACpB,EAAE,EAAE,QAAQ,CAAC;CACd,KAAG,YAAY,QAAQ,aAAa,CAAC,aAAa,CAAC;AAHpD,wBAoDE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/entity-service/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAS,MAAM,eAAe,CAAC;AAE1D,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG;IACxB,QAAQ,CACN,SAAS,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,aAAa,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC,aAAa,GAAG;QAC7F,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,GACA,IAAI,CAAC;CACT,CAAC;8BAuLmB;IACnB,MAAM,EAAE,KAAK,MAAM,CAAC;IACpB,EAAE,EAAE,QAAQ,CAAC;CACd,KAAG,YAAY,QAAQ,aAAa,CAAC,aAAa,CAAC;AAHpD,wBAoDE"}
@@ -1,162 +1,238 @@
1
- "use strict";
2
- const _ = require("lodash");
3
- const delegate = require("delegates");
4
- const database = require("@strapi/database");
5
- const strapiUtils = require("@strapi/utils");
6
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
7
- const ___default = /* @__PURE__ */ _interopDefault(_);
8
- const delegate__default = /* @__PURE__ */ _interopDefault(delegate);
9
- const transformLoadParamsToQuery = (uid, field, params, pagination = {}) => {
10
- const query = strapi.get("query-params").transform(uid, { populate: { [field]: params } });
11
- const res = {
12
- ...query.populate[field],
13
- ...pagination
14
- };
15
- return res;
1
+ 'use strict';
2
+
3
+ var _ = require('lodash');
4
+ var delegate = require('delegates');
5
+ var database = require('@strapi/database');
6
+ var strapiUtils = require('@strapi/utils');
7
+
8
+ const transformLoadParamsToQuery = (uid, field, params, pagination = {})=>{
9
+ const query = strapi.get('query-params').transform(uid, {
10
+ populate: {
11
+ [field]: params
12
+ }
13
+ });
14
+ const res = {
15
+ ...query.populate[field],
16
+ ...pagination
17
+ };
18
+ return res;
16
19
  };
17
20
  const databaseErrorsToTransform = [
18
- database.errors.InvalidTimeError,
19
- database.errors.InvalidDateTimeError,
20
- database.errors.InvalidDateError,
21
- database.errors.InvalidRelationError
21
+ database.errors.InvalidTimeError,
22
+ database.errors.InvalidDateTimeError,
23
+ database.errors.InvalidDateError,
24
+ database.errors.InvalidRelationError
22
25
  ];
23
- const createDefaultImplementation = ({
24
- strapi: strapi2,
25
- db
26
- }) => ({
27
- async wrapParams(options = {}) {
28
- return options;
29
- },
30
- async wrapResult(result = {}) {
31
- return result;
32
- },
33
- async findMany(uid, opts) {
34
- const { kind } = strapi2.getModel(uid);
35
- const wrappedParams = await this.wrapParams(opts, { uid, action: "findMany" });
36
- if (kind === "singleType") {
37
- const entity = strapi2.documents(uid).findFirst(wrappedParams);
38
- return this.wrapResult(entity, { uid, action: "findOne" });
39
- }
40
- const entities = await strapi2.documents(uid).findMany(wrappedParams);
41
- return this.wrapResult(entities, { uid, action: "findMany" });
42
- },
43
- async findPage(uid, opts) {
44
- const wrappedParams = await this.wrapParams(opts, { uid, action: "findPage" });
45
- const query = strapi2.get("query-params").transform(uid, wrappedParams);
46
- const entities = await db.query(uid).findPage(query);
47
- return this.wrapResult(entities, { uid, action: "findMany" });
48
- },
49
- async findOne(uid, entityId, opts) {
50
- const wrappedParams = await this.wrapParams(opts, { uid, action: "findOne" });
51
- const res = await db.query(uid).findOne({ where: { id: entityId } });
52
- if (!res) {
53
- return this.wrapResult(null, { uid, action: "findOne" });
54
- }
55
- const entity = await strapi2.documents(uid).findOne(res.documentId, wrappedParams);
56
- return this.wrapResult(entity, { uid, action: "findOne" });
57
- },
58
- async count(uid, opts) {
59
- const wrappedParams = await this.wrapParams(opts, { uid, action: "count" });
60
- return strapi2.documents(uid).count(wrappedParams);
61
- },
62
- async create(uid, params) {
63
- const wrappedParams = await this.wrapParams(params, { uid, action: "create" });
64
- const { data } = wrappedParams;
65
- if (!data) {
66
- throw new Error("cannot create");
67
- }
68
- const shouldPublish = !strapiUtils.contentTypes.isDraft(data, strapi2.getModel(uid));
69
- const entity = await strapi2.documents(uid).create({
70
- ...wrappedParams,
71
- status: shouldPublish ? "published" : "draft"
72
- });
73
- return this.wrapResult(entity, { uid, action: "create" });
74
- },
75
- async update(uid, entityId, opts) {
76
- const wrappedParams = await this.wrapParams(opts, {
77
- uid,
78
- action: "update"
79
- });
80
- const entityToUpdate = await db.query(uid).findOne({ where: { id: entityId } });
81
- if (!entityToUpdate) {
82
- return this.wrapResult(null, { uid, action: "update" });
83
- }
84
- const shouldPublish = !strapiUtils.contentTypes.isDraft(entityToUpdate, strapi2.getModel(uid));
85
- const entity = strapi2.documents(uid).update(entityToUpdate.documentId, {
86
- ...wrappedParams,
87
- status: shouldPublish ? "published" : "draft"
26
+ const createDefaultImplementation = ({ strapi: strapi1, db })=>({
27
+ async wrapParams (options = {}) {
28
+ return options;
29
+ },
30
+ async wrapResult (result = {}) {
31
+ return result;
32
+ },
33
+ async findMany (uid, opts) {
34
+ const { kind } = strapi1.getModel(uid);
35
+ const wrappedParams = await this.wrapParams(opts, {
36
+ uid,
37
+ action: 'findMany'
38
+ });
39
+ if (kind === 'singleType') {
40
+ const entity = strapi1.documents(uid).findFirst(wrappedParams);
41
+ return this.wrapResult(entity, {
42
+ uid,
43
+ action: 'findOne'
44
+ });
45
+ }
46
+ const entities = await strapi1.documents(uid).findMany(wrappedParams);
47
+ return this.wrapResult(entities, {
48
+ uid,
49
+ action: 'findMany'
50
+ });
51
+ },
52
+ async findPage (uid, opts) {
53
+ const wrappedParams = await this.wrapParams(opts, {
54
+ uid,
55
+ action: 'findPage'
56
+ });
57
+ const query = strapi1.get('query-params').transform(uid, wrappedParams);
58
+ const entities = await db.query(uid).findPage(query);
59
+ return this.wrapResult(entities, {
60
+ uid,
61
+ action: 'findMany'
62
+ });
63
+ },
64
+ async findOne (uid, entityId, opts) {
65
+ const wrappedParams = await this.wrapParams(opts, {
66
+ uid,
67
+ action: 'findOne'
68
+ });
69
+ const res = await db.query(uid).findOne({
70
+ where: {
71
+ id: entityId
72
+ }
73
+ });
74
+ if (!res) {
75
+ return this.wrapResult(null, {
76
+ uid,
77
+ action: 'findOne'
78
+ });
79
+ }
80
+ const entity = await strapi1.documents(uid).findOne({
81
+ ...wrappedParams,
82
+ documentId: res.documentId
83
+ });
84
+ return this.wrapResult(entity, {
85
+ uid,
86
+ action: 'findOne'
87
+ });
88
+ },
89
+ async count (uid, opts) {
90
+ const wrappedParams = await this.wrapParams(opts, {
91
+ uid,
92
+ action: 'count'
93
+ });
94
+ return strapi1.documents(uid).count(wrappedParams);
95
+ },
96
+ async create (uid, params) {
97
+ const wrappedParams = await this.wrapParams(params, {
98
+ uid,
99
+ action: 'create'
100
+ });
101
+ const { data } = wrappedParams;
102
+ if (!data) {
103
+ throw new Error('cannot create');
104
+ }
105
+ const shouldPublish = !strapiUtils.contentTypes.isDraft(data, strapi1.getModel(uid));
106
+ const entity = await strapi1.documents(uid).create({
107
+ ...wrappedParams,
108
+ status: shouldPublish ? 'published' : 'draft'
109
+ });
110
+ return this.wrapResult(entity, {
111
+ uid,
112
+ action: 'create'
113
+ });
114
+ },
115
+ async update (uid, entityId, opts) {
116
+ const wrappedParams = await this.wrapParams(opts, {
117
+ uid,
118
+ action: 'update'
119
+ });
120
+ const entityToUpdate = await db.query(uid).findOne({
121
+ where: {
122
+ id: entityId
123
+ }
124
+ });
125
+ if (!entityToUpdate) {
126
+ return this.wrapResult(null, {
127
+ uid,
128
+ action: 'update'
129
+ });
130
+ }
131
+ const shouldPublish = !strapiUtils.contentTypes.isDraft(entityToUpdate, strapi1.getModel(uid));
132
+ const entity = strapi1.documents(uid).update({
133
+ ...wrappedParams,
134
+ status: shouldPublish ? 'published' : 'draft',
135
+ documentId: entityToUpdate.documentId
136
+ });
137
+ return this.wrapResult(entity, {
138
+ uid,
139
+ action: 'update'
140
+ });
141
+ },
142
+ async delete (uid, entityId, opts) {
143
+ const wrappedParams = await this.wrapParams(opts, {
144
+ uid,
145
+ action: 'delete'
146
+ });
147
+ const entityToDelete = await db.query(uid).findOne({
148
+ where: {
149
+ id: entityId
150
+ }
151
+ });
152
+ if (!entityToDelete) {
153
+ return this.wrapResult(null, {
154
+ uid,
155
+ action: 'delete'
156
+ });
157
+ }
158
+ await strapi1.documents(uid).delete({
159
+ ...wrappedParams,
160
+ documentId: entityToDelete.documentId
161
+ });
162
+ return this.wrapResult(entityToDelete, {
163
+ uid,
164
+ action: 'delete'
165
+ });
166
+ },
167
+ async load (uid, entity, field, params) {
168
+ if (!_.isString(field)) {
169
+ throw new Error(`Invalid load. Expected "${field}" to be a string`);
170
+ }
171
+ const loadedEntity = await db.query(uid).load(entity, field, transformLoadParamsToQuery(uid, field, params ?? {}));
172
+ return this.wrapResult(loadedEntity, {
173
+ uid,
174
+ field,
175
+ action: 'load'
176
+ });
177
+ },
178
+ async loadPages (uid, entity, field, params, pagination = {}) {
179
+ if (!_.isString(field)) {
180
+ throw new Error(`Invalid load. Expected "${field}" to be a string`);
181
+ }
182
+ const { attributes } = strapi1.getModel(uid);
183
+ const attribute = attributes[field];
184
+ if (!strapiUtils.relations.isAnyToMany(attribute)) {
185
+ throw new Error(`Invalid load. Expected "${field}" to be an anyToMany relational attribute`);
186
+ }
187
+ const query = transformLoadParamsToQuery(uid, field, params ?? {}, pagination);
188
+ const loadedPage = await db.query(uid).loadPages(entity, field, query);
189
+ return {
190
+ ...loadedPage,
191
+ results: await this.wrapResult(loadedPage.results, {
192
+ uid,
193
+ field,
194
+ action: 'load'
195
+ })
196
+ };
197
+ }
88
198
  });
89
- return this.wrapResult(entity, { uid, action: "update" });
90
- },
91
- async delete(uid, entityId, opts) {
92
- const wrappedParams = await this.wrapParams(opts, { uid, action: "delete" });
93
- const entityToDelete = await db.query(uid).findOne({ where: { id: entityId } });
94
- if (!entityToDelete) {
95
- return this.wrapResult(null, { uid, action: "delete" });
96
- }
97
- await strapi2.documents(uid).delete(entityToDelete.documentId, wrappedParams);
98
- return this.wrapResult(entityToDelete, { uid, action: "delete" });
99
- },
100
- async load(uid, entity, field, params) {
101
- if (!___default.default.isString(field)) {
102
- throw new Error(`Invalid load. Expected "${field}" to be a string`);
103
- }
104
- const loadedEntity = await db.query(uid).load(entity, field, transformLoadParamsToQuery(uid, field, params ?? {}));
105
- return this.wrapResult(loadedEntity, { uid, field, action: "load" });
106
- },
107
- async loadPages(uid, entity, field, params, pagination = {}) {
108
- if (!___default.default.isString(field)) {
109
- throw new Error(`Invalid load. Expected "${field}" to be a string`);
110
- }
111
- const { attributes } = strapi2.getModel(uid);
112
- const attribute = attributes[field];
113
- if (!strapiUtils.relations.isAnyToMany(attribute)) {
114
- throw new Error(`Invalid load. Expected "${field}" to be an anyToMany relational attribute`);
115
- }
116
- const query = transformLoadParamsToQuery(uid, field, params ?? {}, pagination);
117
- const loadedPage = await db.query(uid).loadPages(entity, field, query);
118
- return {
119
- ...loadedPage,
120
- results: await this.wrapResult(loadedPage.results, { uid, field, action: "load" })
121
- };
122
- }
123
- });
124
- const createEntityService = (ctx) => {
125
- const implementation = createDefaultImplementation(ctx);
126
- const service = {
127
- implementation,
128
- decorate(decorator) {
129
- if (typeof decorator !== "function") {
130
- throw new Error(`Decorator must be a function, received ${typeof decorator}`);
131
- }
132
- this.implementation = { ...this.implementation, ...decorator(this.implementation) };
133
- return this;
134
- }
135
- };
136
- const delegator = delegate__default.default(service, "implementation");
137
- Object.keys(service.implementation).forEach((key) => delegator.method(key));
138
- service.decorate((oldService) => {
139
- const newService = ___default.default.mapValues(
140
- oldService,
141
- (method, methodName) => async function(...args) {
142
- try {
143
- return await oldService[methodName].call(this, ...args);
144
- } catch (error) {
145
- if (databaseErrorsToTransform.some(
146
- (errorToTransform) => error instanceof errorToTransform
147
- )) {
148
- if (error instanceof Error) {
149
- throw new strapiUtils.errors.ValidationError(error.message);
199
+ var createEntityService = ((ctx)=>{
200
+ const implementation = createDefaultImplementation(ctx);
201
+ const service = {
202
+ implementation,
203
+ decorate (decorator) {
204
+ if (typeof decorator !== 'function') {
205
+ throw new Error(`Decorator must be a function, received ${typeof decorator}`);
150
206
  }
151
- throw error;
152
- }
153
- throw error;
207
+ this.implementation = {
208
+ ...this.implementation,
209
+ ...decorator(this.implementation)
210
+ };
211
+ return this;
154
212
  }
155
- }
156
- );
157
- return newService;
158
- });
159
- return service;
160
- };
213
+ };
214
+ const delegator = delegate(service, 'implementation');
215
+ // delegate every method in implementation
216
+ Object.keys(service.implementation).forEach((key)=>delegator.method(key));
217
+ // wrap methods to handle Database Errors
218
+ service.decorate((oldService)=>{
219
+ const newService = _.mapValues(oldService, (method, methodName)=>async function(...args) {
220
+ try {
221
+ return await oldService[methodName].call(this, ...args);
222
+ } catch (error) {
223
+ if (databaseErrorsToTransform.some((errorToTransform)=>error instanceof errorToTransform)) {
224
+ if (error instanceof Error) {
225
+ throw new strapiUtils.errors.ValidationError(error.message);
226
+ }
227
+ throw error;
228
+ }
229
+ throw error;
230
+ }
231
+ });
232
+ return newService;
233
+ });
234
+ return service;
235
+ });
236
+
161
237
  module.exports = createEntityService;
162
238
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/services/entity-service/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport delegate from 'delegates';\nimport { errors as databaseErrors } from '@strapi/database';\nimport {\n contentTypes as contentTypesUtils,\n errors,\n relations as relationUtils,\n} from '@strapi/utils';\nimport type { Database } from '@strapi/database';\nimport type { Core, Modules, Utils } from '@strapi/types';\n\ntype Decoratable<T> = T & {\n decorate(\n decorator: (old: Modules.EntityService.EntityService) => Modules.EntityService.EntityService & {\n [key: string]: unknown;\n }\n ): void;\n};\n\nconst transformLoadParamsToQuery = (\n uid: string,\n field: string,\n params: Record<string, unknown>,\n pagination = {}\n) => {\n const query = strapi\n .get('query-params')\n .transform(uid, { populate: { [field]: params } as any }) as any;\n\n const res = {\n ...query.populate[field],\n ...pagination,\n };\n\n return res;\n};\n\nconst databaseErrorsToTransform = [\n databaseErrors.InvalidTimeError,\n databaseErrors.InvalidDateTimeError,\n databaseErrors.InvalidDateError,\n databaseErrors.InvalidRelationError,\n];\n\nconst createDefaultImplementation = ({\n strapi,\n db,\n}: {\n strapi: Core.Strapi;\n db: Database;\n}): Modules.EntityService.EntityService => ({\n async wrapParams(options: any = {}) {\n return options;\n },\n\n async wrapResult(result: any = {}) {\n return result;\n },\n\n async findMany(uid, opts) {\n const { kind } = strapi.getModel(uid);\n\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findMany' });\n\n if (kind === 'singleType') {\n const entity = strapi.documents!(uid).findFirst(wrappedParams);\n return this.wrapResult(entity, { uid, action: 'findOne' });\n }\n\n const entities = await strapi.documents!(uid).findMany(wrappedParams);\n return this.wrapResult(entities, { uid, action: 'findMany' });\n },\n\n async findPage(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findPage' });\n\n const query = strapi.get('query-params').transform(uid, wrappedParams);\n\n const entities = await db.query(uid).findPage(query);\n return this.wrapResult(entities, { uid, action: 'findMany' });\n },\n\n async findOne(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findOne' });\n\n const res = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!res) {\n return this.wrapResult(null, { uid, action: 'findOne' });\n }\n\n const entity = await strapi.documents!(uid).findOne(res.documentId, wrappedParams);\n return this.wrapResult(entity, { uid, action: 'findOne' });\n },\n\n async count(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'count' });\n\n return strapi.documents!(uid).count(wrappedParams);\n },\n\n async create(uid, params) {\n const wrappedParams = await this.wrapParams<\n Modules.EntityService.Params.Pick<typeof uid, 'data' | 'fields' | 'populate'>\n >(params, { uid, action: 'create' });\n const { data } = wrappedParams;\n\n if (!data) {\n throw new Error('cannot create');\n }\n\n const shouldPublish = !contentTypesUtils.isDraft(data, strapi.getModel(uid));\n\n const entity = await strapi.documents!(uid).create({\n ...(wrappedParams as any),\n status: shouldPublish ? 'published' : 'draft',\n });\n\n return this.wrapResult(entity, { uid, action: 'create' });\n },\n\n async update(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams<\n Modules.EntityService.Params.Pick<typeof uid, 'data:partial' | 'fields' | 'populate'>\n >(opts, {\n uid,\n action: 'update',\n });\n const entityToUpdate = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!entityToUpdate) {\n return this.wrapResult(null, { uid, action: 'update' });\n }\n\n const shouldPublish = !contentTypesUtils.isDraft(entityToUpdate, strapi.getModel(uid));\n\n const entity = strapi.documents!(uid).update(entityToUpdate.documentId, {\n ...(wrappedParams as any),\n status: shouldPublish ? 'published' : 'draft',\n });\n\n return this.wrapResult(entity, { uid, action: 'update' });\n },\n\n async delete(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'delete' });\n\n const entityToDelete = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!entityToDelete) {\n return this.wrapResult(null, { uid, action: 'delete' });\n }\n\n await strapi.documents!(uid).delete(entityToDelete.documentId, wrappedParams);\n\n return this.wrapResult(entityToDelete, { uid, action: 'delete' });\n },\n\n async load(uid, entity, field, params) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const loadedEntity = await db\n .query(uid)\n .load(entity, field, transformLoadParamsToQuery(uid, field, params ?? {}));\n\n return this.wrapResult(loadedEntity, { uid, field, action: 'load' });\n },\n\n async loadPages(uid, entity, field, params, pagination = {}) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const { attributes } = strapi.getModel(uid);\n const attribute = attributes[field];\n\n if (!relationUtils.isAnyToMany(attribute)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be an anyToMany relational attribute`);\n }\n\n const query = transformLoadParamsToQuery(uid, field, params ?? {}, pagination);\n\n const loadedPage = await db.query(uid).loadPages(entity, field, query);\n\n return {\n ...loadedPage,\n results: await this.wrapResult(loadedPage.results, { uid, field, action: 'load' }),\n };\n },\n});\n\nexport default (ctx: {\n strapi: Core.Strapi;\n db: Database;\n}): Decoratable<Modules.EntityService.EntityService> => {\n const implementation = createDefaultImplementation(ctx);\n\n const service = {\n implementation,\n decorate<T extends object>(decorator: (current: typeof implementation) => T) {\n if (typeof decorator !== 'function') {\n throw new Error(`Decorator must be a function, received ${typeof decorator}`);\n }\n\n this.implementation = { ...this.implementation, ...decorator(this.implementation) };\n return this;\n },\n };\n\n const delegator = delegate(service, 'implementation');\n\n // delegate every method in implementation\n Object.keys(service.implementation).forEach((key) => delegator.method(key));\n\n // wrap methods to handle Database Errors\n service.decorate((oldService: Modules.EntityService.EntityService) => {\n const newService = _.mapValues(\n oldService,\n (method, methodName: keyof Modules.EntityService.EntityService) =>\n async function (this: Modules.EntityService.EntityService, ...args: []) {\n try {\n return await (oldService[methodName] as Utils.Function.AnyPromise).call(this, ...args);\n } catch (error) {\n if (\n databaseErrorsToTransform.some(\n (errorToTransform) => error instanceof errorToTransform\n )\n ) {\n if (error instanceof Error) {\n throw new errors.ValidationError(error.message);\n }\n\n throw error;\n }\n throw error;\n }\n }\n );\n\n return newService;\n });\n\n return service as unknown as Decoratable<Modules.EntityService.EntityService>;\n};\n"],"names":["databaseErrors","strapi","contentTypesUtils","_","relationUtils","delegate","errors"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/services/entity-service/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport delegate from 'delegates';\nimport { errors as databaseErrors } from '@strapi/database';\nimport {\n contentTypes as contentTypesUtils,\n errors,\n relations as relationUtils,\n} from '@strapi/utils';\nimport type { Database } from '@strapi/database';\nimport type { Core, Modules, Utils } from '@strapi/types';\n\ntype Decoratable<T> = T & {\n decorate(\n decorator: (old: Modules.EntityService.EntityService) => Modules.EntityService.EntityService & {\n [key: string]: unknown;\n }\n ): void;\n};\n\nconst transformLoadParamsToQuery = (\n uid: string,\n field: string,\n params: Record<string, unknown>,\n pagination = {}\n) => {\n const query = strapi\n .get('query-params')\n .transform(uid, { populate: { [field]: params } as any }) as any;\n\n const res = {\n ...query.populate[field],\n ...pagination,\n };\n\n return res;\n};\n\nconst databaseErrorsToTransform = [\n databaseErrors.InvalidTimeError,\n databaseErrors.InvalidDateTimeError,\n databaseErrors.InvalidDateError,\n databaseErrors.InvalidRelationError,\n];\n\nconst createDefaultImplementation = ({\n strapi,\n db,\n}: {\n strapi: Core.Strapi;\n db: Database;\n}): Modules.EntityService.EntityService => ({\n async wrapParams(options: any = {}) {\n return options;\n },\n\n async wrapResult(result: any = {}) {\n return result;\n },\n\n async findMany(uid, opts) {\n const { kind } = strapi.getModel(uid);\n\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findMany' });\n\n if (kind === 'singleType') {\n const entity = strapi.documents!(uid).findFirst(wrappedParams);\n return this.wrapResult(entity, { uid, action: 'findOne' });\n }\n\n const entities = await strapi.documents!(uid).findMany(wrappedParams);\n return this.wrapResult(entities, { uid, action: 'findMany' });\n },\n\n async findPage(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findPage' });\n\n const query = strapi.get('query-params').transform(uid, wrappedParams);\n\n const entities = await db.query(uid).findPage(query);\n return this.wrapResult(entities, { uid, action: 'findMany' });\n },\n\n async findOne(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findOne' });\n\n const res = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!res) {\n return this.wrapResult(null, { uid, action: 'findOne' });\n }\n\n const entity = await strapi.documents!(uid).findOne({\n ...wrappedParams,\n documentId: res.documentId,\n });\n return this.wrapResult(entity, { uid, action: 'findOne' });\n },\n\n async count(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'count' });\n\n return strapi.documents!(uid).count(wrappedParams);\n },\n\n async create(uid, params) {\n const wrappedParams = await this.wrapParams<\n Modules.EntityService.Params.Pick<typeof uid, 'data' | 'fields' | 'populate'>\n >(params, { uid, action: 'create' });\n const { data } = wrappedParams;\n\n if (!data) {\n throw new Error('cannot create');\n }\n\n const shouldPublish = !contentTypesUtils.isDraft(data, strapi.getModel(uid));\n\n const entity = await strapi.documents!(uid).create({\n ...(wrappedParams as any),\n status: shouldPublish ? 'published' : 'draft',\n });\n\n return this.wrapResult(entity, { uid, action: 'create' });\n },\n\n async update(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams<\n Modules.EntityService.Params.Pick<typeof uid, 'data:partial' | 'fields' | 'populate'>\n >(opts, {\n uid,\n action: 'update',\n });\n const entityToUpdate = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!entityToUpdate) {\n return this.wrapResult(null, { uid, action: 'update' });\n }\n\n const shouldPublish = !contentTypesUtils.isDraft(entityToUpdate, strapi.getModel(uid));\n\n const entity = strapi.documents!(uid).update({\n ...(wrappedParams as any),\n status: shouldPublish ? 'published' : 'draft',\n documentId: entityToUpdate.documentId,\n });\n\n return this.wrapResult(entity, { uid, action: 'update' });\n },\n\n async delete(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'delete' });\n\n const entityToDelete = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!entityToDelete) {\n return this.wrapResult(null, { uid, action: 'delete' });\n }\n\n await strapi.documents!(uid).delete({\n ...wrappedParams,\n documentId: entityToDelete.documentId,\n });\n\n return this.wrapResult(entityToDelete, { uid, action: 'delete' });\n },\n\n async load(uid, entity, field, params) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const loadedEntity = await db\n .query(uid)\n .load(entity, field, transformLoadParamsToQuery(uid, field, params ?? {}));\n\n return this.wrapResult(loadedEntity, { uid, field, action: 'load' });\n },\n\n async loadPages(uid, entity, field, params, pagination = {}) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const { attributes } = strapi.getModel(uid);\n const attribute = attributes[field];\n\n if (!relationUtils.isAnyToMany(attribute)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be an anyToMany relational attribute`);\n }\n\n const query = transformLoadParamsToQuery(uid, field, params ?? {}, pagination);\n\n const loadedPage = await db.query(uid).loadPages(entity, field, query);\n\n return {\n ...loadedPage,\n results: await this.wrapResult(loadedPage.results, { uid, field, action: 'load' }),\n };\n },\n});\n\nexport default (ctx: {\n strapi: Core.Strapi;\n db: Database;\n}): Decoratable<Modules.EntityService.EntityService> => {\n const implementation = createDefaultImplementation(ctx);\n\n const service = {\n implementation,\n decorate<T extends object>(decorator: (current: typeof implementation) => T) {\n if (typeof decorator !== 'function') {\n throw new Error(`Decorator must be a function, received ${typeof decorator}`);\n }\n\n this.implementation = { ...this.implementation, ...decorator(this.implementation) };\n return this;\n },\n };\n\n const delegator = delegate(service, 'implementation');\n\n // delegate every method in implementation\n Object.keys(service.implementation).forEach((key) => delegator.method(key));\n\n // wrap methods to handle Database Errors\n service.decorate((oldService: Modules.EntityService.EntityService) => {\n const newService = _.mapValues(\n oldService,\n (method, methodName: keyof Modules.EntityService.EntityService) =>\n async function (this: Modules.EntityService.EntityService, ...args: []) {\n try {\n return await (oldService[methodName] as Utils.Function.AnyPromise).call(this, ...args);\n } catch (error) {\n if (\n databaseErrorsToTransform.some(\n (errorToTransform) => error instanceof errorToTransform\n )\n ) {\n if (error instanceof Error) {\n throw new errors.ValidationError(error.message);\n }\n\n throw error;\n }\n throw error;\n }\n }\n );\n\n return newService;\n });\n\n return service as unknown as Decoratable<Modules.EntityService.EntityService>;\n};\n"],"names":["transformLoadParamsToQuery","uid","field","params","pagination","query","strapi","get","transform","populate","res","databaseErrorsToTransform","databaseErrors","InvalidTimeError","InvalidDateTimeError","InvalidDateError","InvalidRelationError","createDefaultImplementation","db","wrapParams","options","wrapResult","result","findMany","opts","kind","getModel","wrappedParams","action","entity","documents","findFirst","entities","findPage","findOne","entityId","where","id","documentId","count","create","data","Error","shouldPublish","contentTypesUtils","isDraft","status","update","entityToUpdate","delete","entityToDelete","load","_","isString","loadedEntity","loadPages","attributes","attribute","relationUtils","isAnyToMany","loadedPage","results","ctx","implementation","service","decorate","decorator","delegator","delegate","Object","keys","forEach","key","method","oldService","newService","mapValues","methodName","args","call","error","some","errorToTransform","errors","ValidationError","message"],"mappings":"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"}