@strapi/core 0.0.0-experimental.020096d91bef5bab5a6c32b4216da5aeb9383d33

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

Potentially problematic release.


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

Files changed (886) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +1 -0
  3. package/dist/Strapi.d.ts +98 -0
  4. package/dist/Strapi.d.ts.map +1 -0
  5. package/dist/Strapi.js +447 -0
  6. package/dist/Strapi.js.map +1 -0
  7. package/dist/Strapi.mjs +446 -0
  8. package/dist/Strapi.mjs.map +1 -0
  9. package/dist/compile.d.ts +10 -0
  10. package/dist/compile.d.ts.map +1 -0
  11. package/dist/compile.js +18 -0
  12. package/dist/compile.js.map +1 -0
  13. package/dist/compile.mjs +17 -0
  14. package/dist/compile.mjs.map +1 -0
  15. package/dist/configuration/config-loader.d.ts +3 -0
  16. package/dist/configuration/config-loader.d.ts.map +1 -0
  17. package/dist/configuration/config-loader.js +102 -0
  18. package/dist/configuration/config-loader.js.map +1 -0
  19. package/dist/configuration/config-loader.mjs +100 -0
  20. package/dist/configuration/config-loader.mjs.map +1 -0
  21. package/dist/configuration/index.d.ts +51 -0
  22. package/dist/configuration/index.d.ts.map +1 -0
  23. package/dist/configuration/index.js +78 -0
  24. package/dist/configuration/index.js.map +1 -0
  25. package/dist/configuration/index.mjs +74 -0
  26. package/dist/configuration/index.mjs.map +1 -0
  27. package/dist/configuration/urls.d.ts +8 -0
  28. package/dist/configuration/urls.d.ts.map +1 -0
  29. package/dist/configuration/urls.js +68 -0
  30. package/dist/configuration/urls.js.map +1 -0
  31. package/dist/configuration/urls.mjs +66 -0
  32. package/dist/configuration/urls.mjs.map +1 -0
  33. package/dist/container.d.ts +8 -0
  34. package/dist/container.d.ts.map +1 -0
  35. package/dist/container.js +30 -0
  36. package/dist/container.js.map +1 -0
  37. package/dist/container.mjs +30 -0
  38. package/dist/container.mjs.map +1 -0
  39. package/dist/core-api/controller/collection-type.d.ts +11 -0
  40. package/dist/core-api/controller/collection-type.d.ts.map +1 -0
  41. package/dist/core-api/controller/collection-type.js +81 -0
  42. package/dist/core-api/controller/collection-type.js.map +1 -0
  43. package/dist/core-api/controller/collection-type.mjs +81 -0
  44. package/dist/core-api/controller/collection-type.mjs.map +1 -0
  45. package/dist/core-api/controller/index.d.ts +6 -0
  46. package/dist/core-api/controller/index.d.ts.map +1 -0
  47. package/dist/core-api/controller/index.js +52 -0
  48. package/dist/core-api/controller/index.js.map +1 -0
  49. package/dist/core-api/controller/index.mjs +52 -0
  50. package/dist/core-api/controller/index.mjs.map +1 -0
  51. package/dist/core-api/controller/single-type.d.ts +10 -0
  52. package/dist/core-api/controller/single-type.d.ts.map +1 -0
  53. package/dist/core-api/controller/single-type.js +45 -0
  54. package/dist/core-api/controller/single-type.js.map +1 -0
  55. package/dist/core-api/controller/single-type.mjs +45 -0
  56. package/dist/core-api/controller/single-type.mjs.map +1 -0
  57. package/dist/core-api/controller/transform.d.ts +14 -0
  58. package/dist/core-api/controller/transform.d.ts.map +1 -0
  59. package/dist/core-api/controller/transform.js +79 -0
  60. package/dist/core-api/controller/transform.js.map +1 -0
  61. package/dist/core-api/controller/transform.mjs +79 -0
  62. package/dist/core-api/controller/transform.mjs.map +1 -0
  63. package/dist/core-api/routes/index.d.ts +24 -0
  64. package/dist/core-api/routes/index.d.ts.map +1 -0
  65. package/dist/core-api/routes/index.js +67 -0
  66. package/dist/core-api/routes/index.js.map +1 -0
  67. package/dist/core-api/routes/index.mjs +67 -0
  68. package/dist/core-api/routes/index.mjs.map +1 -0
  69. package/dist/core-api/service/collection-type.d.ts +33 -0
  70. package/dist/core-api/service/collection-type.d.ts.map +1 -0
  71. package/dist/core-api/service/collection-type.js +56 -0
  72. package/dist/core-api/service/collection-type.js.map +1 -0
  73. package/dist/core-api/service/collection-type.mjs +56 -0
  74. package/dist/core-api/service/collection-type.mjs.map +1 -0
  75. package/dist/core-api/service/core-service.d.ts +4 -0
  76. package/dist/core-api/service/core-service.d.ts.map +1 -0
  77. package/dist/core-api/service/core-service.js +12 -0
  78. package/dist/core-api/service/core-service.js.map +1 -0
  79. package/dist/core-api/service/core-service.mjs +12 -0
  80. package/dist/core-api/service/core-service.mjs.map +1 -0
  81. package/dist/core-api/service/index.d.ts +9 -0
  82. package/dist/core-api/service/index.d.ts.map +1 -0
  83. package/dist/core-api/service/index.js +16 -0
  84. package/dist/core-api/service/index.js.map +1 -0
  85. package/dist/core-api/service/index.mjs +16 -0
  86. package/dist/core-api/service/index.mjs.map +1 -0
  87. package/dist/core-api/service/pagination.d.ts +37 -0
  88. package/dist/core-api/service/pagination.d.ts.map +1 -0
  89. package/dist/core-api/service/pagination.js +78 -0
  90. package/dist/core-api/service/pagination.js.map +1 -0
  91. package/dist/core-api/service/pagination.mjs +78 -0
  92. package/dist/core-api/service/pagination.mjs.map +1 -0
  93. package/dist/core-api/service/single-type.d.ts +15 -0
  94. package/dist/core-api/service/single-type.d.ts.map +1 -0
  95. package/dist/core-api/service/single-type.js +39 -0
  96. package/dist/core-api/service/single-type.js.map +1 -0
  97. package/dist/core-api/service/single-type.mjs +39 -0
  98. package/dist/core-api/service/single-type.mjs.map +1 -0
  99. package/dist/domain/content-type/index.d.ts +10 -0
  100. package/dist/domain/content-type/index.d.ts.map +1 -0
  101. package/dist/domain/content-type/index.js +111 -0
  102. package/dist/domain/content-type/index.js.map +1 -0
  103. package/dist/domain/content-type/index.mjs +109 -0
  104. package/dist/domain/content-type/index.mjs.map +1 -0
  105. package/dist/domain/content-type/validator.d.ts +23 -0
  106. package/dist/domain/content-type/validator.d.ts.map +1 -0
  107. package/dist/domain/content-type/validator.js +77 -0
  108. package/dist/domain/content-type/validator.js.map +1 -0
  109. package/dist/domain/content-type/validator.mjs +75 -0
  110. package/dist/domain/content-type/validator.mjs.map +1 -0
  111. package/dist/domain/module/index.d.ts +39 -0
  112. package/dist/domain/module/index.d.ts.map +1 -0
  113. package/dist/domain/module/index.js +106 -0
  114. package/dist/domain/module/index.js.map +1 -0
  115. package/dist/domain/module/index.mjs +104 -0
  116. package/dist/domain/module/index.mjs.map +1 -0
  117. package/dist/domain/module/validation.d.ts +15 -0
  118. package/dist/domain/module/validation.d.ts.map +1 -0
  119. package/dist/domain/module/validation.js +25 -0
  120. package/dist/domain/module/validation.js.map +1 -0
  121. package/dist/domain/module/validation.mjs +25 -0
  122. package/dist/domain/module/validation.mjs.map +1 -0
  123. package/dist/ee/index.d.ts +20 -0
  124. package/dist/ee/index.d.ts.map +1 -0
  125. package/dist/ee/index.js +153 -0
  126. package/dist/ee/index.js.map +1 -0
  127. package/dist/ee/index.mjs +154 -0
  128. package/dist/ee/index.mjs.map +1 -0
  129. package/dist/ee/license.d.ts +21 -0
  130. package/dist/ee/license.d.ts.map +1 -0
  131. package/dist/ee/license.js +90 -0
  132. package/dist/ee/license.js.map +1 -0
  133. package/dist/ee/license.mjs +87 -0
  134. package/dist/ee/license.mjs.map +1 -0
  135. package/dist/factories.d.ts +14 -0
  136. package/dist/factories.d.ts.map +1 -0
  137. package/dist/factories.js +76 -0
  138. package/dist/factories.js.map +1 -0
  139. package/dist/factories.mjs +76 -0
  140. package/dist/factories.mjs.map +1 -0
  141. package/dist/index.d.ts +4 -0
  142. package/dist/index.d.ts.map +1 -0
  143. package/dist/index.js +7 -0
  144. package/dist/index.js.map +1 -0
  145. package/dist/index.mjs +7 -0
  146. package/dist/index.mjs.map +1 -0
  147. package/dist/loaders/admin.d.ts +3 -0
  148. package/dist/loaders/admin.d.ts.map +1 -0
  149. package/dist/loaders/admin.js +27 -0
  150. package/dist/loaders/admin.js.map +1 -0
  151. package/dist/loaders/admin.mjs +26 -0
  152. package/dist/loaders/admin.mjs.map +1 -0
  153. package/dist/loaders/apis.d.ts +3 -0
  154. package/dist/loaders/apis.d.ts.map +1 -0
  155. package/dist/loaders/apis.js +137 -0
  156. package/dist/loaders/apis.js.map +1 -0
  157. package/dist/loaders/apis.mjs +135 -0
  158. package/dist/loaders/apis.mjs.map +1 -0
  159. package/dist/loaders/components.d.ts +3 -0
  160. package/dist/loaders/components.d.ts.map +1 -0
  161. package/dist/loaders/components.js +38 -0
  162. package/dist/loaders/components.js.map +1 -0
  163. package/dist/loaders/components.mjs +37 -0
  164. package/dist/loaders/components.mjs.map +1 -0
  165. package/dist/loaders/index.d.ts +3 -0
  166. package/dist/loaders/index.d.ts.map +1 -0
  167. package/dist/loaders/index.js +26 -0
  168. package/dist/loaders/index.js.map +1 -0
  169. package/dist/loaders/index.mjs +26 -0
  170. package/dist/loaders/index.mjs.map +1 -0
  171. package/dist/loaders/middlewares.d.ts +3 -0
  172. package/dist/loaders/middlewares.d.ts.map +1 -0
  173. package/dist/loaders/middlewares.js +31 -0
  174. package/dist/loaders/middlewares.js.map +1 -0
  175. package/dist/loaders/middlewares.mjs +30 -0
  176. package/dist/loaders/middlewares.mjs.map +1 -0
  177. package/dist/loaders/plugins/get-enabled-plugins.d.ts +5 -0
  178. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -0
  179. package/dist/loaders/plugins/get-enabled-plugins.js +111 -0
  180. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -0
  181. package/dist/loaders/plugins/get-enabled-plugins.mjs +109 -0
  182. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -0
  183. package/dist/loaders/plugins/get-user-plugins-config.d.ts +7 -0
  184. package/dist/loaders/plugins/get-user-plugins-config.d.ts.map +1 -0
  185. package/dist/loaders/plugins/get-user-plugins-config.js +27 -0
  186. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -0
  187. package/dist/loaders/plugins/get-user-plugins-config.mjs +25 -0
  188. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -0
  189. package/dist/loaders/plugins/index.d.ts +3 -0
  190. package/dist/loaders/plugins/index.d.ts.map +1 -0
  191. package/dist/loaders/plugins/index.js +118 -0
  192. package/dist/loaders/plugins/index.js.map +1 -0
  193. package/dist/loaders/plugins/index.mjs +117 -0
  194. package/dist/loaders/plugins/index.mjs.map +1 -0
  195. package/dist/loaders/policies.d.ts +3 -0
  196. package/dist/loaders/policies.d.ts.map +1 -0
  197. package/dist/loaders/policies.js +25 -0
  198. package/dist/loaders/policies.js.map +1 -0
  199. package/dist/loaders/policies.mjs +24 -0
  200. package/dist/loaders/policies.mjs.map +1 -0
  201. package/dist/loaders/sanitizers.d.ts +4 -0
  202. package/dist/loaders/sanitizers.d.ts.map +1 -0
  203. package/dist/loaders/sanitizers.js +6 -0
  204. package/dist/loaders/sanitizers.js.map +1 -0
  205. package/dist/loaders/sanitizers.mjs +7 -0
  206. package/dist/loaders/sanitizers.mjs.map +1 -0
  207. package/dist/loaders/src-index.d.ts +4 -0
  208. package/dist/loaders/src-index.d.ts.map +1 -0
  209. package/dist/loaders/src-index.js +33 -0
  210. package/dist/loaders/src-index.js.map +1 -0
  211. package/dist/loaders/src-index.mjs +34 -0
  212. package/dist/loaders/src-index.mjs.map +1 -0
  213. package/dist/loaders/validators.d.ts +4 -0
  214. package/dist/loaders/validators.d.ts.map +1 -0
  215. package/dist/loaders/validators.js +6 -0
  216. package/dist/loaders/validators.js.map +1 -0
  217. package/dist/loaders/validators.mjs +7 -0
  218. package/dist/loaders/validators.mjs.map +1 -0
  219. package/dist/middlewares/body.d.ts +6 -0
  220. package/dist/middlewares/body.d.ts.map +1 -0
  221. package/dist/middlewares/body.js +65 -0
  222. package/dist/middlewares/body.js.map +1 -0
  223. package/dist/middlewares/body.mjs +61 -0
  224. package/dist/middlewares/body.mjs.map +1 -0
  225. package/dist/middlewares/compression.d.ts +5 -0
  226. package/dist/middlewares/compression.d.ts.map +1 -0
  227. package/dist/middlewares/compression.js +8 -0
  228. package/dist/middlewares/compression.js.map +1 -0
  229. package/dist/middlewares/compression.mjs +6 -0
  230. package/dist/middlewares/compression.mjs.map +1 -0
  231. package/dist/middlewares/cors.d.ts +13 -0
  232. package/dist/middlewares/cors.d.ts.map +1 -0
  233. package/dist/middlewares/cors.js +51 -0
  234. package/dist/middlewares/cors.js.map +1 -0
  235. package/dist/middlewares/cors.mjs +49 -0
  236. package/dist/middlewares/cors.mjs.map +1 -0
  237. package/dist/middlewares/errors.d.ts +4 -0
  238. package/dist/middlewares/errors.d.ts.map +1 -0
  239. package/dist/middlewares/errors.js +33 -0
  240. package/dist/middlewares/errors.js.map +1 -0
  241. package/dist/middlewares/errors.mjs +33 -0
  242. package/dist/middlewares/errors.mjs.map +1 -0
  243. package/dist/middlewares/favicon.d.ts +6 -0
  244. package/dist/middlewares/favicon.d.ts.map +1 -0
  245. package/dist/middlewares/favicon.js +22 -0
  246. package/dist/middlewares/favicon.js.map +1 -0
  247. package/dist/middlewares/favicon.mjs +20 -0
  248. package/dist/middlewares/favicon.mjs.map +1 -0
  249. package/dist/middlewares/index.d.ts +3 -0
  250. package/dist/middlewares/index.d.ts.map +1 -0
  251. package/dist/middlewares/index.js +34 -0
  252. package/dist/middlewares/index.js.map +1 -0
  253. package/dist/middlewares/index.mjs +34 -0
  254. package/dist/middlewares/index.mjs.map +1 -0
  255. package/dist/middlewares/ip.d.ts +5 -0
  256. package/dist/middlewares/ip.d.ts.map +1 -0
  257. package/dist/middlewares/ip.js +8 -0
  258. package/dist/middlewares/ip.js.map +1 -0
  259. package/dist/middlewares/ip.mjs +6 -0
  260. package/dist/middlewares/ip.mjs.map +1 -0
  261. package/dist/middlewares/logger.d.ts +3 -0
  262. package/dist/middlewares/logger.d.ts.map +1 -0
  263. package/dist/middlewares/logger.js +12 -0
  264. package/dist/middlewares/logger.js.map +1 -0
  265. package/dist/middlewares/logger.mjs +12 -0
  266. package/dist/middlewares/logger.mjs.map +1 -0
  267. package/dist/middlewares/powered-by.d.ts +6 -0
  268. package/dist/middlewares/powered-by.d.ts.map +1 -0
  269. package/dist/middlewares/powered-by.js +14 -0
  270. package/dist/middlewares/powered-by.js.map +1 -0
  271. package/dist/middlewares/powered-by.mjs +14 -0
  272. package/dist/middlewares/powered-by.mjs.map +1 -0
  273. package/dist/middlewares/public.d.ts +3 -0
  274. package/dist/middlewares/public.d.ts.map +1 -0
  275. package/dist/middlewares/public.js +34 -0
  276. package/dist/middlewares/public.js.map +1 -0
  277. package/dist/middlewares/public.mjs +32 -0
  278. package/dist/middlewares/public.mjs.map +1 -0
  279. package/dist/middlewares/query.d.ts +3 -0
  280. package/dist/middlewares/query.d.ts.map +1 -0
  281. package/dist/middlewares/query.js +40 -0
  282. package/dist/middlewares/query.js.map +1 -0
  283. package/dist/middlewares/query.mjs +38 -0
  284. package/dist/middlewares/query.mjs.map +1 -0
  285. package/dist/middlewares/response-time.d.ts +3 -0
  286. package/dist/middlewares/response-time.d.ts.map +1 -0
  287. package/dist/middlewares/response-time.js +12 -0
  288. package/dist/middlewares/response-time.js.map +1 -0
  289. package/dist/middlewares/response-time.mjs +12 -0
  290. package/dist/middlewares/response-time.mjs.map +1 -0
  291. package/dist/middlewares/responses.d.ts +6 -0
  292. package/dist/middlewares/responses.d.ts.map +1 -0
  293. package/dist/middlewares/responses.js +15 -0
  294. package/dist/middlewares/responses.js.map +1 -0
  295. package/dist/middlewares/responses.mjs +15 -0
  296. package/dist/middlewares/responses.mjs.map +1 -0
  297. package/dist/middlewares/security.d.ts +5 -0
  298. package/dist/middlewares/security.d.ts.map +1 -0
  299. package/dist/middlewares/security.js +71 -0
  300. package/dist/middlewares/security.js.map +1 -0
  301. package/dist/middlewares/security.mjs +69 -0
  302. package/dist/middlewares/security.mjs.map +1 -0
  303. package/dist/middlewares/session.d.ts +4 -0
  304. package/dist/middlewares/session.d.ts.map +1 -0
  305. package/dist/middlewares/session.js +30 -0
  306. package/dist/middlewares/session.js.map +1 -0
  307. package/dist/middlewares/session.mjs +28 -0
  308. package/dist/middlewares/session.mjs.map +1 -0
  309. package/dist/registries/apis.d.ts +8 -0
  310. package/dist/registries/apis.d.ts.map +1 -0
  311. package/dist/registries/apis.js +23 -0
  312. package/dist/registries/apis.js.map +1 -0
  313. package/dist/registries/apis.mjs +24 -0
  314. package/dist/registries/apis.mjs.map +1 -0
  315. package/dist/registries/components.d.ts +25 -0
  316. package/dist/registries/components.d.ts.map +1 -0
  317. package/dist/registries/components.js +45 -0
  318. package/dist/registries/components.js.map +1 -0
  319. package/dist/registries/components.mjs +46 -0
  320. package/dist/registries/components.mjs.map +1 -0
  321. package/dist/registries/config.d.ts +4 -0
  322. package/dist/registries/config.d.ts.map +1 -0
  323. package/dist/registries/config.js +31 -0
  324. package/dist/registries/config.js.map +1 -0
  325. package/dist/registries/config.mjs +32 -0
  326. package/dist/registries/config.mjs.map +1 -0
  327. package/dist/registries/content-types.d.ts +33 -0
  328. package/dist/registries/content-types.d.ts.map +1 -0
  329. package/dist/registries/content-types.js +70 -0
  330. package/dist/registries/content-types.js.map +1 -0
  331. package/dist/registries/content-types.mjs +71 -0
  332. package/dist/registries/content-types.mjs.map +1 -0
  333. package/dist/registries/controllers.d.ts +35 -0
  334. package/dist/registries/controllers.d.ts.map +1 -0
  335. package/dist/registries/controllers.js +80 -0
  336. package/dist/registries/controllers.js.map +1 -0
  337. package/dist/registries/controllers.mjs +81 -0
  338. package/dist/registries/controllers.mjs.map +1 -0
  339. package/dist/registries/custom-fields.d.ts +8 -0
  340. package/dist/registries/custom-fields.d.ts.map +1 -0
  341. package/dist/registries/custom-fields.js +71 -0
  342. package/dist/registries/custom-fields.js.map +1 -0
  343. package/dist/registries/custom-fields.mjs +72 -0
  344. package/dist/registries/custom-fields.mjs.map +1 -0
  345. package/dist/registries/hooks.d.ts +44 -0
  346. package/dist/registries/hooks.d.ts.map +1 -0
  347. package/dist/registries/hooks.js +58 -0
  348. package/dist/registries/hooks.js.map +1 -0
  349. package/dist/registries/hooks.mjs +59 -0
  350. package/dist/registries/hooks.mjs.map +1 -0
  351. package/dist/registries/index.d.ts +16 -0
  352. package/dist/registries/index.d.ts.map +1 -0
  353. package/dist/registries/middlewares.d.ts +31 -0
  354. package/dist/registries/middlewares.d.ts.map +1 -0
  355. package/dist/registries/middlewares.js +60 -0
  356. package/dist/registries/middlewares.js.map +1 -0
  357. package/dist/registries/middlewares.mjs +61 -0
  358. package/dist/registries/middlewares.mjs.map +1 -0
  359. package/dist/registries/models.d.ts +6 -0
  360. package/dist/registries/models.d.ts.map +1 -0
  361. package/dist/registries/models.js +16 -0
  362. package/dist/registries/models.js.map +1 -0
  363. package/dist/registries/models.mjs +16 -0
  364. package/dist/registries/models.mjs.map +1 -0
  365. package/dist/registries/modules.d.ts +15 -0
  366. package/dist/registries/modules.d.ts.map +1 -0
  367. package/dist/registries/modules.js +39 -0
  368. package/dist/registries/modules.js.map +1 -0
  369. package/dist/registries/modules.mjs +40 -0
  370. package/dist/registries/modules.mjs.map +1 -0
  371. package/dist/registries/namespace.d.ts +5 -0
  372. package/dist/registries/namespace.d.ts.map +1 -0
  373. package/dist/registries/namespace.js +27 -0
  374. package/dist/registries/namespace.js.map +1 -0
  375. package/dist/registries/namespace.mjs +27 -0
  376. package/dist/registries/namespace.mjs.map +1 -0
  377. package/dist/registries/plugins.d.ts +9 -0
  378. package/dist/registries/plugins.d.ts.map +1 -0
  379. package/dist/registries/plugins.js +23 -0
  380. package/dist/registries/plugins.js.map +1 -0
  381. package/dist/registries/plugins.mjs +24 -0
  382. package/dist/registries/plugins.mjs.map +1 -0
  383. package/dist/registries/policies.d.ts +34 -0
  384. package/dist/registries/policies.d.ts.map +1 -0
  385. package/dist/registries/policies.js +62 -0
  386. package/dist/registries/policies.js.map +1 -0
  387. package/dist/registries/policies.mjs +63 -0
  388. package/dist/registries/policies.mjs.map +1 -0
  389. package/dist/registries/sanitizers.d.ts +10 -0
  390. package/dist/registries/sanitizers.d.ts.map +1 -0
  391. package/dist/registries/sanitizers.js +25 -0
  392. package/dist/registries/sanitizers.js.map +1 -0
  393. package/dist/registries/sanitizers.mjs +24 -0
  394. package/dist/registries/sanitizers.mjs.map +1 -0
  395. package/dist/registries/services.d.ts +35 -0
  396. package/dist/registries/services.d.ts.map +1 -0
  397. package/dist/registries/services.js +80 -0
  398. package/dist/registries/services.js.map +1 -0
  399. package/dist/registries/services.mjs +81 -0
  400. package/dist/registries/services.mjs.map +1 -0
  401. package/dist/registries/validators.d.ts +10 -0
  402. package/dist/registries/validators.d.ts.map +1 -0
  403. package/dist/registries/validators.js +25 -0
  404. package/dist/registries/validators.js.map +1 -0
  405. package/dist/registries/validators.mjs +24 -0
  406. package/dist/registries/validators.mjs.map +1 -0
  407. package/dist/services/auth/index.d.ts +26 -0
  408. package/dist/services/auth/index.d.ts.map +1 -0
  409. package/dist/services/auth/index.js +81 -0
  410. package/dist/services/auth/index.js.map +1 -0
  411. package/dist/services/auth/index.mjs +80 -0
  412. package/dist/services/auth/index.mjs.map +1 -0
  413. package/dist/services/content-api/index.d.ts +54 -0
  414. package/dist/services/content-api/index.d.ts.map +1 -0
  415. package/dist/services/content-api/index.js +59 -0
  416. package/dist/services/content-api/index.js.map +1 -0
  417. package/dist/services/content-api/index.mjs +58 -0
  418. package/dist/services/content-api/index.mjs.map +1 -0
  419. package/dist/services/content-api/permissions/engine.d.ts +5 -0
  420. package/dist/services/content-api/permissions/engine.d.ts.map +1 -0
  421. package/dist/services/content-api/permissions/engine.js +7 -0
  422. package/dist/services/content-api/permissions/engine.js.map +1 -0
  423. package/dist/services/content-api/permissions/engine.mjs +6 -0
  424. package/dist/services/content-api/permissions/engine.mjs.map +1 -0
  425. package/dist/services/content-api/permissions/index.d.ts +52 -0
  426. package/dist/services/content-api/permissions/index.d.ts.map +1 -0
  427. package/dist/services/content-api/permissions/index.js +87 -0
  428. package/dist/services/content-api/permissions/index.js.map +1 -0
  429. package/dist/services/content-api/permissions/index.mjs +86 -0
  430. package/dist/services/content-api/permissions/index.mjs.map +1 -0
  431. package/dist/services/content-api/permissions/providers/action.d.ts +20 -0
  432. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -0
  433. package/dist/services/content-api/permissions/providers/action.js +16 -0
  434. package/dist/services/content-api/permissions/providers/action.js.map +1 -0
  435. package/dist/services/content-api/permissions/providers/action.mjs +17 -0
  436. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -0
  437. package/dist/services/content-api/permissions/providers/condition.d.ts +24 -0
  438. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -0
  439. package/dist/services/content-api/permissions/providers/condition.js +16 -0
  440. package/dist/services/content-api/permissions/providers/condition.js.map +1 -0
  441. package/dist/services/content-api/permissions/providers/condition.mjs +17 -0
  442. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -0
  443. package/dist/services/content-api/permissions/providers/index.d.ts +3 -0
  444. package/dist/services/content-api/permissions/providers/index.d.ts.map +1 -0
  445. package/dist/services/core-store.d.ts +33 -0
  446. package/dist/services/core-store.d.ts.map +1 -0
  447. package/dist/services/core-store.js +107 -0
  448. package/dist/services/core-store.js.map +1 -0
  449. package/dist/services/core-store.mjs +107 -0
  450. package/dist/services/core-store.mjs.map +1 -0
  451. package/dist/services/cron.d.ts +27 -0
  452. package/dist/services/cron.d.ts.map +1 -0
  453. package/dist/services/cron.js +63 -0
  454. package/dist/services/cron.js.map +1 -0
  455. package/dist/services/cron.mjs +64 -0
  456. package/dist/services/cron.mjs.map +1 -0
  457. package/dist/services/custom-fields.d.ts +4 -0
  458. package/dist/services/custom-fields.d.ts.map +1 -0
  459. package/dist/services/custom-fields.js +10 -0
  460. package/dist/services/custom-fields.js.map +1 -0
  461. package/dist/services/custom-fields.mjs +11 -0
  462. package/dist/services/custom-fields.mjs.map +1 -0
  463. package/dist/services/document-service/common.d.ts +4 -0
  464. package/dist/services/document-service/common.d.ts.map +1 -0
  465. package/dist/services/document-service/common.js +7 -0
  466. package/dist/services/document-service/common.js.map +1 -0
  467. package/dist/services/document-service/common.mjs +7 -0
  468. package/dist/services/document-service/common.mjs.map +1 -0
  469. package/dist/services/document-service/components.d.ts +2 -0
  470. package/dist/services/document-service/components.d.ts.map +1 -0
  471. package/dist/services/document-service/draft-and-publish.d.ts +10 -0
  472. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -0
  473. package/dist/services/document-service/draft-and-publish.js +69 -0
  474. package/dist/services/document-service/draft-and-publish.js.map +1 -0
  475. package/dist/services/document-service/draft-and-publish.mjs +69 -0
  476. package/dist/services/document-service/draft-and-publish.mjs.map +1 -0
  477. package/dist/services/document-service/index.d.ts +19 -0
  478. package/dist/services/document-service/index.d.ts.map +1 -0
  479. package/dist/services/document-service/index.js +22 -0
  480. package/dist/services/document-service/index.js.map +1 -0
  481. package/dist/services/document-service/index.mjs +22 -0
  482. package/dist/services/document-service/index.mjs.map +1 -0
  483. package/dist/services/document-service/internationalization.d.ts +8 -0
  484. package/dist/services/document-service/internationalization.d.ts.map +1 -0
  485. package/dist/services/document-service/internationalization.js +54 -0
  486. package/dist/services/document-service/internationalization.js.map +1 -0
  487. package/dist/services/document-service/internationalization.mjs +54 -0
  488. package/dist/services/document-service/internationalization.mjs.map +1 -0
  489. package/dist/services/document-service/middlewares.d.ts +8 -0
  490. package/dist/services/document-service/middlewares.d.ts.map +1 -0
  491. package/dist/services/document-service/middlewares.js +46 -0
  492. package/dist/services/document-service/middlewares.js.map +1 -0
  493. package/dist/services/document-service/middlewares.mjs +46 -0
  494. package/dist/services/document-service/middlewares.mjs.map +1 -0
  495. package/dist/services/document-service/params.d.ts +2 -0
  496. package/dist/services/document-service/params.d.ts.map +1 -0
  497. package/dist/services/document-service/repository.d.ts +3 -0
  498. package/dist/services/document-service/repository.d.ts.map +1 -0
  499. package/dist/services/document-service/repository.js +304 -0
  500. package/dist/services/document-service/repository.js.map +1 -0
  501. package/dist/services/document-service/repository.mjs +304 -0
  502. package/dist/services/document-service/repository.mjs.map +1 -0
  503. package/dist/services/document-service/transform/data.d.ts +5 -0
  504. package/dist/services/document-service/transform/data.d.ts.map +1 -0
  505. package/dist/services/document-service/transform/data.js +13 -0
  506. package/dist/services/document-service/transform/data.js.map +1 -0
  507. package/dist/services/document-service/transform/data.mjs +13 -0
  508. package/dist/services/document-service/transform/data.mjs.map +1 -0
  509. package/dist/services/document-service/transform/fields.d.ts +5 -0
  510. package/dist/services/document-service/transform/fields.d.ts.map +1 -0
  511. package/dist/services/document-service/transform/fields.js +24 -0
  512. package/dist/services/document-service/transform/fields.js.map +1 -0
  513. package/dist/services/document-service/transform/fields.mjs +24 -0
  514. package/dist/services/document-service/transform/fields.mjs.map +1 -0
  515. package/dist/services/document-service/transform/filters.d.ts +3 -0
  516. package/dist/services/document-service/transform/filters.d.ts.map +1 -0
  517. package/dist/services/document-service/transform/id-map.d.ts +23 -0
  518. package/dist/services/document-service/transform/id-map.d.ts.map +1 -0
  519. package/dist/services/document-service/transform/id-map.js +78 -0
  520. package/dist/services/document-service/transform/id-map.js.map +1 -0
  521. package/dist/services/document-service/transform/id-map.mjs +78 -0
  522. package/dist/services/document-service/transform/id-map.mjs.map +1 -0
  523. package/dist/services/document-service/transform/id-transform.d.ts +5 -0
  524. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -0
  525. package/dist/services/document-service/transform/id-transform.js +33 -0
  526. package/dist/services/document-service/transform/id-transform.js.map +1 -0
  527. package/dist/services/document-service/transform/id-transform.mjs +33 -0
  528. package/dist/services/document-service/transform/id-transform.mjs.map +1 -0
  529. package/dist/services/document-service/transform/populate.d.ts +6 -0
  530. package/dist/services/document-service/transform/populate.d.ts.map +1 -0
  531. package/dist/services/document-service/transform/populate.js +21 -0
  532. package/dist/services/document-service/transform/populate.js.map +1 -0
  533. package/dist/services/document-service/transform/populate.mjs +21 -0
  534. package/dist/services/document-service/transform/populate.mjs.map +1 -0
  535. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +13 -0
  536. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -0
  537. package/dist/services/document-service/transform/relations/extract/data-ids.js +90 -0
  538. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -0
  539. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +90 -0
  540. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -0
  541. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts +10 -0
  542. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -0
  543. package/dist/services/document-service/transform/relations/transform/data-ids.js +141 -0
  544. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -0
  545. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +141 -0
  546. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -0
  547. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts +4 -0
  548. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts.map +1 -0
  549. package/dist/services/document-service/transform/relations/utils/data.d.ts +4 -0
  550. package/dist/services/document-service/transform/relations/utils/data.d.ts.map +1 -0
  551. package/dist/services/document-service/transform/relations/utils/data.js +12 -0
  552. package/dist/services/document-service/transform/relations/utils/data.js.map +1 -0
  553. package/dist/services/document-service/transform/relations/utils/data.mjs +12 -0
  554. package/dist/services/document-service/transform/relations/utils/data.mjs.map +1 -0
  555. package/dist/services/document-service/transform/relations/utils/dp.d.ts +10 -0
  556. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -0
  557. package/dist/services/document-service/transform/relations/utils/dp.js +25 -0
  558. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -0
  559. package/dist/services/document-service/transform/relations/utils/dp.mjs +25 -0
  560. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -0
  561. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +10 -0
  562. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -0
  563. package/dist/services/document-service/transform/relations/utils/i18n.js +31 -0
  564. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -0
  565. package/dist/services/document-service/transform/relations/utils/i18n.mjs +31 -0
  566. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -0
  567. package/dist/services/document-service/transform/relations/utils/types.d.ts +15 -0
  568. package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -0
  569. package/dist/services/document-service/transform/sort.d.ts +5 -0
  570. package/dist/services/document-service/transform/sort.d.ts.map +1 -0
  571. package/dist/services/document-service/transform/types.d.ts +13 -0
  572. package/dist/services/document-service/transform/types.d.ts.map +1 -0
  573. package/dist/services/document-service/transform/utils.d.ts +9 -0
  574. package/dist/services/document-service/transform/utils.d.ts.map +1 -0
  575. package/dist/services/document-service/utils/populate.d.ts +3 -0
  576. package/dist/services/document-service/utils/populate.d.ts.map +1 -0
  577. package/dist/services/document-service/utils/populate.js +41 -0
  578. package/dist/services/document-service/utils/populate.js.map +1 -0
  579. package/dist/services/document-service/utils/populate.mjs +41 -0
  580. package/dist/services/document-service/utils/populate.mjs.map +1 -0
  581. package/dist/services/entity-service/attributes/index.d.ts +6 -0
  582. package/dist/services/entity-service/attributes/index.d.ts.map +1 -0
  583. package/dist/services/entity-service/attributes/index.js +22 -0
  584. package/dist/services/entity-service/attributes/index.js.map +1 -0
  585. package/dist/services/entity-service/attributes/index.mjs +22 -0
  586. package/dist/services/entity-service/attributes/index.mjs.map +1 -0
  587. package/dist/services/entity-service/attributes/transforms.d.ts +10 -0
  588. package/dist/services/entity-service/attributes/transforms.d.ts.map +1 -0
  589. package/dist/services/entity-service/attributes/transforms.js +20 -0
  590. package/dist/services/entity-service/attributes/transforms.js.map +1 -0
  591. package/dist/services/entity-service/attributes/transforms.mjs +19 -0
  592. package/dist/services/entity-service/attributes/transforms.mjs.map +1 -0
  593. package/dist/services/entity-service/components.d.ts +23 -0
  594. package/dist/services/entity-service/components.d.ts.map +1 -0
  595. package/dist/services/entity-service/components.js +384 -0
  596. package/dist/services/entity-service/components.js.map +1 -0
  597. package/dist/services/entity-service/components.mjs +382 -0
  598. package/dist/services/entity-service/components.mjs.map +1 -0
  599. package/dist/services/entity-service/index.d.ts +15 -0
  600. package/dist/services/entity-service/index.d.ts.map +1 -0
  601. package/dist/services/entity-service/index.js +328 -0
  602. package/dist/services/entity-service/index.js.map +1 -0
  603. package/dist/services/entity-service/index.mjs +326 -0
  604. package/dist/services/entity-service/index.mjs.map +1 -0
  605. package/dist/services/entity-service/params.d.ts +8 -0
  606. package/dist/services/entity-service/params.d.ts.map +1 -0
  607. package/dist/services/entity-service/params.js +8 -0
  608. package/dist/services/entity-service/params.js.map +1 -0
  609. package/dist/services/entity-service/params.mjs +8 -0
  610. package/dist/services/entity-service/params.mjs.map +1 -0
  611. package/dist/services/entity-validator/blocks-validator.d.ts +4 -0
  612. package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -0
  613. package/dist/services/entity-validator/blocks-validator.js +127 -0
  614. package/dist/services/entity-validator/blocks-validator.js.map +1 -0
  615. package/dist/services/entity-validator/blocks-validator.mjs +128 -0
  616. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -0
  617. package/dist/services/entity-validator/index.d.ts +8 -0
  618. package/dist/services/entity-validator/index.d.ts.map +1 -0
  619. package/dist/services/entity-validator/index.js +322 -0
  620. package/dist/services/entity-validator/index.js.map +1 -0
  621. package/dist/services/entity-validator/index.mjs +321 -0
  622. package/dist/services/entity-validator/index.mjs.map +1 -0
  623. package/dist/services/entity-validator/validators.d.ts +39 -0
  624. package/dist/services/entity-validator/validators.d.ts.map +1 -0
  625. package/dist/services/entity-validator/validators.js +121 -0
  626. package/dist/services/entity-validator/validators.js.map +1 -0
  627. package/dist/services/entity-validator/validators.mjs +119 -0
  628. package/dist/services/entity-validator/validators.mjs.map +1 -0
  629. package/dist/services/errors.d.ts +40 -0
  630. package/dist/services/errors.d.ts.map +1 -0
  631. package/dist/services/errors.js +76 -0
  632. package/dist/services/errors.js.map +1 -0
  633. package/dist/services/errors.mjs +74 -0
  634. package/dist/services/errors.mjs.map +1 -0
  635. package/dist/services/event-hub.d.ts +19 -0
  636. package/dist/services/event-hub.d.ts.map +1 -0
  637. package/dist/services/event-hub.js +67 -0
  638. package/dist/services/event-hub.js.map +1 -0
  639. package/dist/services/event-hub.mjs +68 -0
  640. package/dist/services/event-hub.mjs.map +1 -0
  641. package/dist/services/features.d.ts +10 -0
  642. package/dist/services/features.d.ts.map +1 -0
  643. package/dist/services/features.js +17 -0
  644. package/dist/services/features.js.map +1 -0
  645. package/dist/services/features.mjs +17 -0
  646. package/dist/services/features.mjs.map +1 -0
  647. package/dist/services/fs.d.ts +13 -0
  648. package/dist/services/fs.d.ts.map +1 -0
  649. package/dist/services/fs.js +51 -0
  650. package/dist/services/fs.js.map +1 -0
  651. package/dist/services/fs.mjs +49 -0
  652. package/dist/services/fs.mjs.map +1 -0
  653. package/dist/services/metrics/admin-user-hash.d.ts +7 -0
  654. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -0
  655. package/dist/services/metrics/admin-user-hash.js +14 -0
  656. package/dist/services/metrics/admin-user-hash.js.map +1 -0
  657. package/dist/services/metrics/admin-user-hash.mjs +12 -0
  658. package/dist/services/metrics/admin-user-hash.mjs.map +1 -0
  659. package/dist/services/metrics/index.d.ts +14 -0
  660. package/dist/services/metrics/index.d.ts.map +1 -0
  661. package/dist/services/metrics/index.js +45 -0
  662. package/dist/services/metrics/index.js.map +1 -0
  663. package/dist/services/metrics/index.mjs +46 -0
  664. package/dist/services/metrics/index.mjs.map +1 -0
  665. package/dist/services/metrics/is-truthy.d.ts +3 -0
  666. package/dist/services/metrics/is-truthy.d.ts.map +1 -0
  667. package/dist/services/metrics/is-truthy.js +9 -0
  668. package/dist/services/metrics/is-truthy.js.map +1 -0
  669. package/dist/services/metrics/is-truthy.mjs +8 -0
  670. package/dist/services/metrics/is-truthy.mjs.map +1 -0
  671. package/dist/services/metrics/middleware.d.ts +7 -0
  672. package/dist/services/metrics/middleware.d.ts.map +1 -0
  673. package/dist/services/metrics/middleware.js +25 -0
  674. package/dist/services/metrics/middleware.js.map +1 -0
  675. package/dist/services/metrics/middleware.mjs +26 -0
  676. package/dist/services/metrics/middleware.mjs.map +1 -0
  677. package/dist/services/metrics/rate-limiter.d.ts +7 -0
  678. package/dist/services/metrics/rate-limiter.d.ts.map +1 -0
  679. package/dist/services/metrics/rate-limiter.js +21 -0
  680. package/dist/services/metrics/rate-limiter.js.map +1 -0
  681. package/dist/services/metrics/rate-limiter.mjs +22 -0
  682. package/dist/services/metrics/rate-limiter.mjs.map +1 -0
  683. package/dist/services/metrics/sender.d.ts +13 -0
  684. package/dist/services/metrics/sender.d.ts.map +1 -0
  685. package/dist/services/metrics/sender.js +76 -0
  686. package/dist/services/metrics/sender.js.map +1 -0
  687. package/dist/services/metrics/sender.mjs +70 -0
  688. package/dist/services/metrics/sender.mjs.map +1 -0
  689. package/dist/services/request-context.d.ts +7 -0
  690. package/dist/services/request-context.d.ts.map +1 -0
  691. package/dist/services/request-context.js +13 -0
  692. package/dist/services/request-context.js.map +1 -0
  693. package/dist/services/request-context.mjs +14 -0
  694. package/dist/services/request-context.mjs.map +1 -0
  695. package/dist/services/server/admin-api.d.ts +11 -0
  696. package/dist/services/server/admin-api.d.ts.map +1 -0
  697. package/dist/services/server/admin-api.js +13 -0
  698. package/dist/services/server/admin-api.js.map +1 -0
  699. package/dist/services/server/admin-api.mjs +13 -0
  700. package/dist/services/server/admin-api.mjs.map +1 -0
  701. package/dist/services/server/api.d.ts +15 -0
  702. package/dist/services/server/api.d.ts.map +1 -0
  703. package/dist/services/server/api.js +30 -0
  704. package/dist/services/server/api.js.map +1 -0
  705. package/dist/services/server/api.mjs +28 -0
  706. package/dist/services/server/api.mjs.map +1 -0
  707. package/dist/services/server/compose-endpoint.d.ts +7 -0
  708. package/dist/services/server/compose-endpoint.d.ts.map +1 -0
  709. package/dist/services/server/compose-endpoint.js +118 -0
  710. package/dist/services/server/compose-endpoint.js.map +1 -0
  711. package/dist/services/server/compose-endpoint.mjs +117 -0
  712. package/dist/services/server/compose-endpoint.mjs.map +1 -0
  713. package/dist/services/server/content-api.d.ts +11 -0
  714. package/dist/services/server/content-api.d.ts.map +1 -0
  715. package/dist/services/server/content-api.js +12 -0
  716. package/dist/services/server/content-api.js.map +1 -0
  717. package/dist/services/server/content-api.mjs +12 -0
  718. package/dist/services/server/content-api.mjs.map +1 -0
  719. package/dist/services/server/http-server.d.ts +10 -0
  720. package/dist/services/server/http-server.d.ts.map +1 -0
  721. package/dist/services/server/http-server.js +50 -0
  722. package/dist/services/server/http-server.js.map +1 -0
  723. package/dist/services/server/http-server.mjs +48 -0
  724. package/dist/services/server/http-server.mjs.map +1 -0
  725. package/dist/services/server/index.d.ts +4 -0
  726. package/dist/services/server/index.d.ts.map +1 -0
  727. package/dist/services/server/index.js +88 -0
  728. package/dist/services/server/index.js.map +1 -0
  729. package/dist/services/server/index.mjs +86 -0
  730. package/dist/services/server/index.mjs.map +1 -0
  731. package/dist/services/server/koa.d.ts +16 -0
  732. package/dist/services/server/koa.d.ts.map +1 -0
  733. package/dist/services/server/koa.js +52 -0
  734. package/dist/services/server/koa.js.map +1 -0
  735. package/dist/services/server/koa.mjs +48 -0
  736. package/dist/services/server/koa.mjs.map +1 -0
  737. package/dist/services/server/middleware.d.ts +11 -0
  738. package/dist/services/server/middleware.d.ts.map +1 -0
  739. package/dist/services/server/middleware.js +92 -0
  740. package/dist/services/server/middleware.js.map +1 -0
  741. package/dist/services/server/middleware.mjs +90 -0
  742. package/dist/services/server/middleware.mjs.map +1 -0
  743. package/dist/services/server/policy.d.ts +4 -0
  744. package/dist/services/server/policy.d.ts.map +1 -0
  745. package/dist/services/server/policy.js +20 -0
  746. package/dist/services/server/policy.js.map +1 -0
  747. package/dist/services/server/policy.mjs +20 -0
  748. package/dist/services/server/policy.mjs.map +1 -0
  749. package/dist/services/server/register-middlewares.d.ts +7 -0
  750. package/dist/services/server/register-middlewares.d.ts.map +1 -0
  751. package/dist/services/server/register-middlewares.js +72 -0
  752. package/dist/services/server/register-middlewares.js.map +1 -0
  753. package/dist/services/server/register-middlewares.mjs +73 -0
  754. package/dist/services/server/register-middlewares.mjs.map +1 -0
  755. package/dist/services/server/register-routes.d.ts +7 -0
  756. package/dist/services/server/register-routes.d.ts.map +1 -0
  757. package/dist/services/server/register-routes.js +76 -0
  758. package/dist/services/server/register-routes.js.map +1 -0
  759. package/dist/services/server/register-routes.mjs +75 -0
  760. package/dist/services/server/register-routes.mjs.map +1 -0
  761. package/dist/services/server/routing.d.ts +34 -0
  762. package/dist/services/server/routing.d.ts.map +1 -0
  763. package/dist/services/server/routing.js +91 -0
  764. package/dist/services/server/routing.js.map +1 -0
  765. package/dist/services/server/routing.mjs +89 -0
  766. package/dist/services/server/routing.mjs.map +1 -0
  767. package/dist/services/utils/dynamic-zones.d.ts +3 -0
  768. package/dist/services/utils/dynamic-zones.d.ts.map +1 -0
  769. package/dist/services/utils/dynamic-zones.js +16 -0
  770. package/dist/services/utils/dynamic-zones.js.map +1 -0
  771. package/dist/services/utils/dynamic-zones.mjs +17 -0
  772. package/dist/services/utils/dynamic-zones.mjs.map +1 -0
  773. package/dist/services/utils/upload-files.d.ts +8 -0
  774. package/dist/services/utils/upload-files.d.ts.map +1 -0
  775. package/dist/services/utils/upload-files.js +64 -0
  776. package/dist/services/utils/upload-files.js.map +1 -0
  777. package/dist/services/utils/upload-files.mjs +63 -0
  778. package/dist/services/utils/upload-files.mjs.map +1 -0
  779. package/dist/services/webhook-runner.d.ts +49 -0
  780. package/dist/services/webhook-runner.d.ts.map +1 -0
  781. package/dist/services/webhook-runner.js +133 -0
  782. package/dist/services/webhook-runner.js.map +1 -0
  783. package/dist/services/webhook-runner.mjs +131 -0
  784. package/dist/services/webhook-runner.mjs.map +1 -0
  785. package/dist/services/webhook-store.d.ts +30 -0
  786. package/dist/services/webhook-store.d.ts.map +1 -0
  787. package/dist/services/webhook-store.js +104 -0
  788. package/dist/services/webhook-store.js.map +1 -0
  789. package/dist/services/webhook-store.mjs +104 -0
  790. package/dist/services/webhook-store.mjs.map +1 -0
  791. package/dist/services/worker-queue.d.ts +20 -0
  792. package/dist/services/worker-queue.d.ts.map +1 -0
  793. package/dist/services/worker-queue.js +56 -0
  794. package/dist/services/worker-queue.js.map +1 -0
  795. package/dist/services/worker-queue.mjs +55 -0
  796. package/dist/services/worker-queue.mjs.map +1 -0
  797. package/dist/utils/convert-custom-field-type.d.ts +3 -0
  798. package/dist/utils/convert-custom-field-type.d.ts.map +1 -0
  799. package/dist/utils/convert-custom-field-type.js +24 -0
  800. package/dist/utils/convert-custom-field-type.js.map +1 -0
  801. package/dist/utils/convert-custom-field-type.mjs +24 -0
  802. package/dist/utils/convert-custom-field-type.mjs.map +1 -0
  803. package/dist/utils/cron.d.ts +8 -0
  804. package/dist/utils/cron.d.ts.map +1 -0
  805. package/dist/utils/cron.js +38 -0
  806. package/dist/utils/cron.js.map +1 -0
  807. package/dist/utils/cron.mjs +38 -0
  808. package/dist/utils/cron.mjs.map +1 -0
  809. package/dist/utils/ee.d.ts +2 -0
  810. package/dist/utils/ee.d.ts.map +1 -0
  811. package/dist/utils/fetch.d.ts +4 -0
  812. package/dist/utils/fetch.d.ts.map +1 -0
  813. package/dist/utils/fetch.js +20 -0
  814. package/dist/utils/fetch.js.map +1 -0
  815. package/dist/utils/fetch.mjs +20 -0
  816. package/dist/utils/fetch.mjs.map +1 -0
  817. package/dist/utils/filepath-to-prop-path.d.ts +5 -0
  818. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -0
  819. package/dist/utils/filepath-to-prop-path.js +12 -0
  820. package/dist/utils/filepath-to-prop-path.js.map +1 -0
  821. package/dist/utils/filepath-to-prop-path.mjs +10 -0
  822. package/dist/utils/filepath-to-prop-path.mjs.map +1 -0
  823. package/dist/utils/get-dirs.d.ts +9 -0
  824. package/dist/utils/get-dirs.d.ts.map +1 -0
  825. package/dist/utils/get-dirs.js +30 -0
  826. package/dist/utils/get-dirs.js.map +1 -0
  827. package/dist/utils/get-dirs.mjs +30 -0
  828. package/dist/utils/get-dirs.mjs.map +1 -0
  829. package/dist/utils/index.d.ts +12 -0
  830. package/dist/utils/index.d.ts.map +1 -0
  831. package/dist/utils/is-initialized.d.ts +6 -0
  832. package/dist/utils/is-initialized.d.ts.map +1 -0
  833. package/dist/utils/is-initialized.js +16 -0
  834. package/dist/utils/is-initialized.js.map +1 -0
  835. package/dist/utils/is-initialized.mjs +16 -0
  836. package/dist/utils/is-initialized.mjs.map +1 -0
  837. package/dist/utils/lifecycles.d.ts +6 -0
  838. package/dist/utils/lifecycles.d.ts.map +1 -0
  839. package/dist/utils/lifecycles.js +9 -0
  840. package/dist/utils/lifecycles.js.map +1 -0
  841. package/dist/utils/lifecycles.mjs +9 -0
  842. package/dist/utils/lifecycles.mjs.map +1 -0
  843. package/dist/utils/load-config-file.d.ts +2 -0
  844. package/dist/utils/load-config-file.d.ts.map +1 -0
  845. package/dist/utils/load-config-file.js +45 -0
  846. package/dist/utils/load-config-file.js.map +1 -0
  847. package/dist/utils/load-config-file.mjs +42 -0
  848. package/dist/utils/load-config-file.mjs.map +1 -0
  849. package/dist/utils/load-files.d.ts +11 -0
  850. package/dist/utils/load-files.d.ts.map +1 -0
  851. package/dist/utils/load-files.js +39 -0
  852. package/dist/utils/load-files.js.map +1 -0
  853. package/dist/utils/load-files.mjs +35 -0
  854. package/dist/utils/load-files.mjs.map +1 -0
  855. package/dist/utils/open-browser.d.ts +4 -0
  856. package/dist/utils/open-browser.d.ts.map +1 -0
  857. package/dist/utils/open-browser.js +11 -0
  858. package/dist/utils/open-browser.js.map +1 -0
  859. package/dist/utils/open-browser.mjs +9 -0
  860. package/dist/utils/open-browser.mjs.map +1 -0
  861. package/dist/utils/signals.d.ts +3 -0
  862. package/dist/utils/signals.d.ts.map +1 -0
  863. package/dist/utils/signals.js +17 -0
  864. package/dist/utils/signals.js.map +1 -0
  865. package/dist/utils/signals.mjs +17 -0
  866. package/dist/utils/signals.mjs.map +1 -0
  867. package/dist/utils/startup-logger.d.ts +10 -0
  868. package/dist/utils/startup-logger.d.ts.map +1 -0
  869. package/dist/utils/startup-logger.js +81 -0
  870. package/dist/utils/startup-logger.js.map +1 -0
  871. package/dist/utils/startup-logger.mjs +77 -0
  872. package/dist/utils/startup-logger.mjs.map +1 -0
  873. package/dist/utils/transform-content-types-to-models.d.ts +177 -0
  874. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -0
  875. package/dist/utils/transform-content-types-to-models.js +237 -0
  876. package/dist/utils/transform-content-types-to-models.js.map +1 -0
  877. package/dist/utils/transform-content-types-to-models.mjs +234 -0
  878. package/dist/utils/transform-content-types-to-models.mjs.map +1 -0
  879. package/dist/utils/update-notifier/index.d.ts +8 -0
  880. package/dist/utils/update-notifier/index.d.ts.map +1 -0
  881. package/dist/utils/update-notifier/index.js +88 -0
  882. package/dist/utils/update-notifier/index.js.map +1 -0
  883. package/dist/utils/update-notifier/index.mjs +81 -0
  884. package/dist/utils/update-notifier/index.mjs.map +1 -0
  885. package/package.json +134 -0
  886. package/resources/key.pub +9 -0
@@ -0,0 +1,237 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const database = require("@strapi/database");
4
+ const cuid2 = require("@paralleldrive/cuid2");
5
+ const assert = require("node:assert");
6
+ const _ = require("lodash/fp");
7
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
8
+ const assert__default = /* @__PURE__ */ _interopDefault(assert);
9
+ const ___default = /* @__PURE__ */ _interopDefault(_);
10
+ const { identifiers } = database.utils;
11
+ const COMPONENT_JOIN_TABLE_SUFFIX = "components";
12
+ const DZ_JOIN_TABLE_SUFFIX = "components";
13
+ const COMPONENT_INVERSE_COLUMN_NAME = "component";
14
+ const COMPONENT_TYPE_COLUMN = "component_type";
15
+ const ENTITY = "entity";
16
+ const getComponentJoinTableName = (collectionName) => identifiers.getTableName(collectionName, { suffix: COMPONENT_JOIN_TABLE_SUFFIX });
17
+ const getDzJoinTableName = (collectionName) => identifiers.getTableName(collectionName, { suffix: DZ_JOIN_TABLE_SUFFIX });
18
+ const { ID_COLUMN: id, FIELD_COLUMN: field, ORDER_COLUMN: order } = identifiers;
19
+ const transformAttribute = (name, attribute, contentType) => {
20
+ switch (attribute.type) {
21
+ case "media": {
22
+ return {
23
+ type: "relation",
24
+ relation: attribute.multiple === true ? "morphMany" : "morphOne",
25
+ target: "plugin::upload.file",
26
+ morphBy: "related"
27
+ };
28
+ }
29
+ case "component": {
30
+ const joinTableName = getComponentJoinTableName(contentType.collectionName);
31
+ const joinColumnEntityName = identifiers.getJoinColumnAttributeIdName(ENTITY);
32
+ const joinColumnInverseName = identifiers.getJoinColumnAttributeIdName(
33
+ COMPONENT_INVERSE_COLUMN_NAME
34
+ );
35
+ return {
36
+ type: "relation",
37
+ relation: attribute.repeatable === true ? "oneToMany" : "oneToOne",
38
+ target: attribute.component,
39
+ // We need the join table name to be deterministic,
40
+ // We need to allow passing the join table name as an option
41
+ joinTable: {
42
+ name: joinTableName,
43
+ joinColumn: {
44
+ name: joinColumnEntityName,
45
+ referencedColumn: id
46
+ },
47
+ inverseJoinColumn: {
48
+ name: joinColumnInverseName,
49
+ referencedColumn: id
50
+ },
51
+ on: {
52
+ field: name
53
+ },
54
+ orderColumnName: order,
55
+ orderBy: {
56
+ order: "asc"
57
+ },
58
+ pivotColumns: [joinColumnEntityName, joinColumnInverseName, field, COMPONENT_TYPE_COLUMN]
59
+ }
60
+ };
61
+ }
62
+ case "dynamiczone": {
63
+ const joinTableName = getDzJoinTableName(contentType.collectionName);
64
+ const joinColumnEntityName = identifiers.getJoinColumnAttributeIdName(ENTITY);
65
+ const joinColumnInverseName = identifiers.getJoinColumnAttributeIdName(
66
+ COMPONENT_INVERSE_COLUMN_NAME
67
+ );
68
+ return {
69
+ type: "relation",
70
+ relation: "morphToMany",
71
+ // TODO: handle restrictions at some point
72
+ // target: attribute.components,
73
+ joinTable: {
74
+ name: joinTableName,
75
+ joinColumn: {
76
+ name: joinColumnEntityName,
77
+ referencedColumn: id
78
+ },
79
+ morphColumn: {
80
+ idColumn: {
81
+ name: joinColumnInverseName,
82
+ referencedColumn: id
83
+ },
84
+ typeColumn: {
85
+ name: COMPONENT_TYPE_COLUMN
86
+ },
87
+ typeField: "__component"
88
+ },
89
+ on: {
90
+ field: name
91
+ },
92
+ orderBy: {
93
+ order: "asc"
94
+ },
95
+ pivotColumns: [joinColumnEntityName, joinColumnInverseName, field, COMPONENT_TYPE_COLUMN]
96
+ }
97
+ };
98
+ }
99
+ default: {
100
+ return attribute;
101
+ }
102
+ }
103
+ };
104
+ const transformAttributes = (contentType) => {
105
+ return Object.keys(contentType.attributes || {}).reduce((attrs, attrName) => {
106
+ return {
107
+ ...attrs,
108
+ [attrName]: transformAttribute(attrName, contentType.attributes[attrName], contentType)
109
+ };
110
+ }, {});
111
+ };
112
+ const hasComponentsOrDz = (contentType) => {
113
+ return Object.values(contentType.attributes || {}).some(
114
+ ({ type }) => type === "dynamiczone" || type === "component"
115
+ );
116
+ };
117
+ const createDocumentId = cuid2.createId;
118
+ const createCompoLinkModel = (contentType) => {
119
+ const name = getComponentJoinTableName(contentType.collectionName);
120
+ const entityId = identifiers.getJoinColumnAttributeIdName(ENTITY);
121
+ const componentId = identifiers.getJoinColumnAttributeIdName(COMPONENT_INVERSE_COLUMN_NAME);
122
+ const fkIndex = identifiers.getFkIndexName([contentType.collectionName, ENTITY]);
123
+ return {
124
+ // TODO: make sure there can't be any conflicts with a prefix
125
+ singularName: name,
126
+ uid: name,
127
+ tableName: name,
128
+ attributes: {
129
+ [id]: {
130
+ type: "increments"
131
+ },
132
+ [entityId]: {
133
+ type: "integer",
134
+ column: {
135
+ unsigned: true
136
+ }
137
+ },
138
+ [componentId]: {
139
+ type: "integer",
140
+ column: {
141
+ unsigned: true
142
+ }
143
+ },
144
+ [COMPONENT_TYPE_COLUMN]: {
145
+ type: "string"
146
+ },
147
+ [field]: {
148
+ type: "string"
149
+ },
150
+ [order]: {
151
+ type: "float",
152
+ column: {
153
+ unsigned: true,
154
+ defaultTo: null
155
+ }
156
+ }
157
+ },
158
+ indexes: [
159
+ {
160
+ name: identifiers.getIndexName([contentType.collectionName, field]),
161
+ columns: [field]
162
+ },
163
+ {
164
+ name: identifiers.getIndexName([contentType.collectionName, COMPONENT_TYPE_COLUMN]),
165
+ columns: [COMPONENT_TYPE_COLUMN]
166
+ },
167
+ {
168
+ name: fkIndex,
169
+ columns: [entityId]
170
+ },
171
+ {
172
+ // NOTE: since we don't include attribute names, we need to be careful not to create another unique index
173
+ name: identifiers.getUniqueIndexName([contentType.collectionName]),
174
+ columns: [entityId, componentId, field, COMPONENT_TYPE_COLUMN],
175
+ type: "unique"
176
+ }
177
+ ],
178
+ foreignKeys: [
179
+ {
180
+ name: fkIndex,
181
+ columns: [entityId],
182
+ referencedColumns: [id],
183
+ referencedTable: identifiers.getTableName(contentType.collectionName),
184
+ onDelete: "CASCADE"
185
+ }
186
+ ]
187
+ };
188
+ };
189
+ const transformContentTypesToModels = (contentTypes) => {
190
+ const models = [];
191
+ contentTypes.forEach((contentType) => {
192
+ assert__default.default(contentType.collectionName, 'Content type "collectionName" is required');
193
+ assert__default.default(contentType.modelName, 'Content type "modelName" is required');
194
+ assert__default.default(contentType.uid, 'Content type "uid" is required');
195
+ const documentIdAttribute = contentType.modelType === "contentType" ? { documentId: { type: "string", default: createDocumentId } } : {};
196
+ const reservedAttributeNames = ["document_id", id];
197
+ Object.keys(contentType.attributes || {}).forEach((attributeName) => {
198
+ const snakeCasedAttributeName = ___default.default.snakeCase(attributeName);
199
+ if (reservedAttributeNames.includes(snakeCasedAttributeName)) {
200
+ throw new Error(
201
+ `The attribute "${attributeName}" is reserved and cannot be used in a model. Please rename "${contentType.modelName}" attribute "${attributeName}" to something else.`
202
+ );
203
+ }
204
+ });
205
+ if (hasComponentsOrDz(contentType)) {
206
+ const compoLinkModel = createCompoLinkModel(contentType);
207
+ models.push(compoLinkModel);
208
+ }
209
+ const model = {
210
+ uid: contentType.uid,
211
+ singularName: contentType.modelName,
212
+ tableName: identifiers.getTableName(contentType.collectionName),
213
+ attributes: {
214
+ [id]: {
215
+ type: "increments"
216
+ },
217
+ ...documentIdAttribute,
218
+ ...transformAttributes(contentType)
219
+ }
220
+ };
221
+ models.push(model);
222
+ });
223
+ return models;
224
+ };
225
+ exports.COMPONENT_INVERSE_COLUMN_NAME = COMPONENT_INVERSE_COLUMN_NAME;
226
+ exports.COMPONENT_JOIN_TABLE_SUFFIX = COMPONENT_JOIN_TABLE_SUFFIX;
227
+ exports.COMPONENT_TYPE_COLUMN = COMPONENT_TYPE_COLUMN;
228
+ exports.DZ_JOIN_TABLE_SUFFIX = DZ_JOIN_TABLE_SUFFIX;
229
+ exports.ENTITY = ENTITY;
230
+ exports.createDocumentId = createDocumentId;
231
+ exports.getComponentJoinTableName = getComponentJoinTableName;
232
+ exports.getDzJoinTableName = getDzJoinTableName;
233
+ exports.hasComponentsOrDz = hasComponentsOrDz;
234
+ exports.transformAttribute = transformAttribute;
235
+ exports.transformAttributes = transformAttributes;
236
+ exports.transformContentTypesToModels = transformContentTypesToModels;
237
+ //# sourceMappingURL=transform-content-types-to-models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform-content-types-to-models.js","sources":["../../src/utils/transform-content-types-to-models.ts"],"sourcesContent":["import { type Model, utils } from '@strapi/database';\nimport { Schema, Attribute } from '@strapi/types';\nimport { createId } from '@paralleldrive/cuid2';\nimport assert from 'node:assert';\nimport _ from 'lodash/fp';\n\nconst { identifiers } = utils;\n\n/**\n * Because strapi/database models don't know about things like components or dynamic zones, we use this file to convert them\n * to a relations format that it recognizes\n *\n * Therefore we have to keep an additional set of helpers/extensions to the database naming methods\n */\n\nexport const COMPONENT_JOIN_TABLE_SUFFIX = 'components';\nexport const DZ_JOIN_TABLE_SUFFIX = 'components';\nexport const COMPONENT_INVERSE_COLUMN_NAME = 'component';\nexport const COMPONENT_TYPE_COLUMN = 'component_type';\nexport const ENTITY = 'entity';\n\nexport const getComponentJoinTableName = (collectionName: string) =>\n identifiers.getTableName(collectionName, { suffix: COMPONENT_JOIN_TABLE_SUFFIX });\n\nexport const getDzJoinTableName = (collectionName: string) =>\n identifiers.getTableName(collectionName, { suffix: DZ_JOIN_TABLE_SUFFIX });\n\nconst { ID_COLUMN: id, FIELD_COLUMN: field, ORDER_COLUMN: order } = identifiers;\n\nexport type LoadedContentTypeModel = Schema.ContentType &\n Required<Pick<Schema.ContentType, 'collectionName' | 'uid' | 'modelName'>>;\n\n// Transforms an attribute (particularly for relation types) into the format that strapi/database accepts\nexport const transformAttribute = (\n name: string,\n attribute: Attribute.Any,\n contentType: LoadedContentTypeModel\n) => {\n switch (attribute.type) {\n case 'media': {\n return {\n type: 'relation',\n relation: attribute.multiple === true ? 'morphMany' : 'morphOne',\n target: 'plugin::upload.file',\n morphBy: 'related',\n };\n }\n case 'component': {\n const joinTableName = getComponentJoinTableName(contentType.collectionName);\n const joinColumnEntityName = identifiers.getJoinColumnAttributeIdName(ENTITY);\n const joinColumnInverseName = identifiers.getJoinColumnAttributeIdName(\n COMPONENT_INVERSE_COLUMN_NAME\n );\n\n return {\n type: 'relation',\n relation: attribute.repeatable === true ? 'oneToMany' : 'oneToOne',\n target: attribute.component,\n\n // We need the join table name to be deterministic,\n // We need to allow passing the join table name as an option\n joinTable: {\n name: joinTableName,\n joinColumn: {\n name: joinColumnEntityName,\n referencedColumn: id,\n },\n inverseJoinColumn: {\n name: joinColumnInverseName,\n referencedColumn: id,\n },\n on: {\n field: name,\n },\n orderColumnName: order,\n orderBy: {\n order: 'asc',\n },\n pivotColumns: [joinColumnEntityName, joinColumnInverseName, field, COMPONENT_TYPE_COLUMN],\n },\n };\n }\n case 'dynamiczone': {\n const joinTableName = getDzJoinTableName(contentType.collectionName);\n const joinColumnEntityName = identifiers.getJoinColumnAttributeIdName(ENTITY);\n const joinColumnInverseName = identifiers.getJoinColumnAttributeIdName(\n COMPONENT_INVERSE_COLUMN_NAME\n );\n\n return {\n type: 'relation',\n relation: 'morphToMany',\n // TODO: handle restrictions at some point\n // target: attribute.components,\n joinTable: {\n name: joinTableName,\n joinColumn: {\n name: joinColumnEntityName,\n referencedColumn: id,\n },\n morphColumn: {\n idColumn: {\n name: joinColumnInverseName,\n referencedColumn: id,\n },\n typeColumn: {\n name: COMPONENT_TYPE_COLUMN,\n },\n typeField: '__component',\n },\n on: {\n field: name,\n },\n orderBy: {\n order: 'asc',\n },\n pivotColumns: [joinColumnEntityName, joinColumnInverseName, field, COMPONENT_TYPE_COLUMN],\n },\n };\n }\n default: {\n return attribute;\n }\n }\n};\n\nexport const transformAttributes = (contentType: LoadedContentTypeModel) => {\n return Object.keys(contentType.attributes! || {}).reduce((attrs, attrName) => {\n return {\n ...attrs,\n [attrName]: transformAttribute(attrName, contentType.attributes[attrName]!, contentType),\n };\n }, {});\n};\n\nexport const hasComponentsOrDz = (\n contentType: LoadedContentTypeModel\n): contentType is LoadedContentTypeModel & { type: 'dynamiczone' | 'component' } => {\n return Object.values(contentType.attributes || {}).some(\n ({ type }) => type === 'dynamiczone' || type === 'component'\n );\n};\n\nexport const createDocumentId = createId;\n\n// Creates the\nconst createCompoLinkModel = (contentType: LoadedContentTypeModel): Model => {\n const name = getComponentJoinTableName(contentType.collectionName);\n\n const entityId = identifiers.getJoinColumnAttributeIdName(ENTITY);\n const componentId = identifiers.getJoinColumnAttributeIdName(COMPONENT_INVERSE_COLUMN_NAME);\n const fkIndex = identifiers.getFkIndexName([contentType.collectionName, ENTITY]);\n\n return {\n // TODO: make sure there can't be any conflicts with a prefix\n singularName: name,\n uid: name,\n tableName: name,\n attributes: {\n [id]: {\n type: 'increments',\n },\n [entityId]: {\n type: 'integer',\n column: {\n unsigned: true,\n },\n },\n [componentId]: {\n type: 'integer',\n column: {\n unsigned: true,\n },\n },\n [COMPONENT_TYPE_COLUMN]: {\n type: 'string',\n },\n [field]: {\n type: 'string',\n },\n [order]: {\n type: 'float',\n column: {\n unsigned: true,\n defaultTo: null,\n },\n },\n },\n indexes: [\n {\n name: identifiers.getIndexName([contentType.collectionName, field]),\n columns: [field],\n },\n {\n name: identifiers.getIndexName([contentType.collectionName, COMPONENT_TYPE_COLUMN]),\n columns: [COMPONENT_TYPE_COLUMN],\n },\n {\n name: fkIndex,\n columns: [entityId],\n },\n {\n // NOTE: since we don't include attribute names, we need to be careful not to create another unique index\n name: identifiers.getUniqueIndexName([contentType.collectionName]),\n columns: [entityId, componentId, field, COMPONENT_TYPE_COLUMN],\n type: 'unique',\n },\n ],\n foreignKeys: [\n {\n name: fkIndex,\n columns: [entityId],\n referencedColumns: [id],\n referencedTable: identifiers.getTableName(contentType.collectionName),\n onDelete: 'CASCADE',\n },\n ],\n };\n};\n\nexport const transformContentTypesToModels = (contentTypes: LoadedContentTypeModel[]): Model[] => {\n const models: Model[] = [];\n\n contentTypes.forEach((contentType) => {\n assert(contentType.collectionName, 'Content type \"collectionName\" is required');\n assert(contentType.modelName, 'Content type \"modelName\" is required');\n assert(contentType.uid, 'Content type \"uid\" is required');\n\n // Add document id to content types\n // as it is not documented\n const documentIdAttribute: Record<string, Attribute.Any> =\n contentType.modelType === 'contentType'\n ? { documentId: { type: 'string', default: createDocumentId } }\n : {};\n\n // TODO: this needs to be combined with getReservedNames, we should not be maintaining two lists\n // Prevent user from creating a documentId attribute\n const reservedAttributeNames = ['document_id', id];\n Object.keys(contentType.attributes || {}).forEach((attributeName) => {\n const snakeCasedAttributeName = _.snakeCase(attributeName);\n if (reservedAttributeNames.includes(snakeCasedAttributeName)) {\n throw new Error(\n `The attribute \"${attributeName}\" is reserved and cannot be used in a model. Please rename \"${contentType.modelName}\" attribute \"${attributeName}\" to something else.`\n );\n }\n });\n\n if (hasComponentsOrDz(contentType)) {\n const compoLinkModel = createCompoLinkModel(contentType);\n models.push(compoLinkModel);\n }\n\n const model: Model = {\n uid: contentType.uid,\n singularName: contentType.modelName,\n tableName: identifiers.getTableName(contentType.collectionName),\n attributes: {\n [id]: {\n type: 'increments',\n },\n ...documentIdAttribute,\n ...transformAttributes(contentType),\n },\n };\n\n models.push(model);\n });\n\n return models;\n};\n"],"names":["utils","createId","assert","_"],"mappings":"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"}
@@ -0,0 +1,234 @@
1
+ import { utils } from "@strapi/database";
2
+ import { createId } from "@paralleldrive/cuid2";
3
+ import assert from "node:assert";
4
+ import _ from "lodash/fp";
5
+ const { identifiers } = utils;
6
+ const COMPONENT_JOIN_TABLE_SUFFIX = "components";
7
+ const DZ_JOIN_TABLE_SUFFIX = "components";
8
+ const COMPONENT_INVERSE_COLUMN_NAME = "component";
9
+ const COMPONENT_TYPE_COLUMN = "component_type";
10
+ const ENTITY = "entity";
11
+ const getComponentJoinTableName = (collectionName) => identifiers.getTableName(collectionName, { suffix: COMPONENT_JOIN_TABLE_SUFFIX });
12
+ const getDzJoinTableName = (collectionName) => identifiers.getTableName(collectionName, { suffix: DZ_JOIN_TABLE_SUFFIX });
13
+ const { ID_COLUMN: id, FIELD_COLUMN: field, ORDER_COLUMN: order } = identifiers;
14
+ const transformAttribute = (name, attribute, contentType) => {
15
+ switch (attribute.type) {
16
+ case "media": {
17
+ return {
18
+ type: "relation",
19
+ relation: attribute.multiple === true ? "morphMany" : "morphOne",
20
+ target: "plugin::upload.file",
21
+ morphBy: "related"
22
+ };
23
+ }
24
+ case "component": {
25
+ const joinTableName = getComponentJoinTableName(contentType.collectionName);
26
+ const joinColumnEntityName = identifiers.getJoinColumnAttributeIdName(ENTITY);
27
+ const joinColumnInverseName = identifiers.getJoinColumnAttributeIdName(
28
+ COMPONENT_INVERSE_COLUMN_NAME
29
+ );
30
+ return {
31
+ type: "relation",
32
+ relation: attribute.repeatable === true ? "oneToMany" : "oneToOne",
33
+ target: attribute.component,
34
+ // We need the join table name to be deterministic,
35
+ // We need to allow passing the join table name as an option
36
+ joinTable: {
37
+ name: joinTableName,
38
+ joinColumn: {
39
+ name: joinColumnEntityName,
40
+ referencedColumn: id
41
+ },
42
+ inverseJoinColumn: {
43
+ name: joinColumnInverseName,
44
+ referencedColumn: id
45
+ },
46
+ on: {
47
+ field: name
48
+ },
49
+ orderColumnName: order,
50
+ orderBy: {
51
+ order: "asc"
52
+ },
53
+ pivotColumns: [joinColumnEntityName, joinColumnInverseName, field, COMPONENT_TYPE_COLUMN]
54
+ }
55
+ };
56
+ }
57
+ case "dynamiczone": {
58
+ const joinTableName = getDzJoinTableName(contentType.collectionName);
59
+ const joinColumnEntityName = identifiers.getJoinColumnAttributeIdName(ENTITY);
60
+ const joinColumnInverseName = identifiers.getJoinColumnAttributeIdName(
61
+ COMPONENT_INVERSE_COLUMN_NAME
62
+ );
63
+ return {
64
+ type: "relation",
65
+ relation: "morphToMany",
66
+ // TODO: handle restrictions at some point
67
+ // target: attribute.components,
68
+ joinTable: {
69
+ name: joinTableName,
70
+ joinColumn: {
71
+ name: joinColumnEntityName,
72
+ referencedColumn: id
73
+ },
74
+ morphColumn: {
75
+ idColumn: {
76
+ name: joinColumnInverseName,
77
+ referencedColumn: id
78
+ },
79
+ typeColumn: {
80
+ name: COMPONENT_TYPE_COLUMN
81
+ },
82
+ typeField: "__component"
83
+ },
84
+ on: {
85
+ field: name
86
+ },
87
+ orderBy: {
88
+ order: "asc"
89
+ },
90
+ pivotColumns: [joinColumnEntityName, joinColumnInverseName, field, COMPONENT_TYPE_COLUMN]
91
+ }
92
+ };
93
+ }
94
+ default: {
95
+ return attribute;
96
+ }
97
+ }
98
+ };
99
+ const transformAttributes = (contentType) => {
100
+ return Object.keys(contentType.attributes || {}).reduce((attrs, attrName) => {
101
+ return {
102
+ ...attrs,
103
+ [attrName]: transformAttribute(attrName, contentType.attributes[attrName], contentType)
104
+ };
105
+ }, {});
106
+ };
107
+ const hasComponentsOrDz = (contentType) => {
108
+ return Object.values(contentType.attributes || {}).some(
109
+ ({ type }) => type === "dynamiczone" || type === "component"
110
+ );
111
+ };
112
+ const createDocumentId = createId;
113
+ const createCompoLinkModel = (contentType) => {
114
+ const name = getComponentJoinTableName(contentType.collectionName);
115
+ const entityId = identifiers.getJoinColumnAttributeIdName(ENTITY);
116
+ const componentId = identifiers.getJoinColumnAttributeIdName(COMPONENT_INVERSE_COLUMN_NAME);
117
+ const fkIndex = identifiers.getFkIndexName([contentType.collectionName, ENTITY]);
118
+ return {
119
+ // TODO: make sure there can't be any conflicts with a prefix
120
+ singularName: name,
121
+ uid: name,
122
+ tableName: name,
123
+ attributes: {
124
+ [id]: {
125
+ type: "increments"
126
+ },
127
+ [entityId]: {
128
+ type: "integer",
129
+ column: {
130
+ unsigned: true
131
+ }
132
+ },
133
+ [componentId]: {
134
+ type: "integer",
135
+ column: {
136
+ unsigned: true
137
+ }
138
+ },
139
+ [COMPONENT_TYPE_COLUMN]: {
140
+ type: "string"
141
+ },
142
+ [field]: {
143
+ type: "string"
144
+ },
145
+ [order]: {
146
+ type: "float",
147
+ column: {
148
+ unsigned: true,
149
+ defaultTo: null
150
+ }
151
+ }
152
+ },
153
+ indexes: [
154
+ {
155
+ name: identifiers.getIndexName([contentType.collectionName, field]),
156
+ columns: [field]
157
+ },
158
+ {
159
+ name: identifiers.getIndexName([contentType.collectionName, COMPONENT_TYPE_COLUMN]),
160
+ columns: [COMPONENT_TYPE_COLUMN]
161
+ },
162
+ {
163
+ name: fkIndex,
164
+ columns: [entityId]
165
+ },
166
+ {
167
+ // NOTE: since we don't include attribute names, we need to be careful not to create another unique index
168
+ name: identifiers.getUniqueIndexName([contentType.collectionName]),
169
+ columns: [entityId, componentId, field, COMPONENT_TYPE_COLUMN],
170
+ type: "unique"
171
+ }
172
+ ],
173
+ foreignKeys: [
174
+ {
175
+ name: fkIndex,
176
+ columns: [entityId],
177
+ referencedColumns: [id],
178
+ referencedTable: identifiers.getTableName(contentType.collectionName),
179
+ onDelete: "CASCADE"
180
+ }
181
+ ]
182
+ };
183
+ };
184
+ const transformContentTypesToModels = (contentTypes) => {
185
+ const models = [];
186
+ contentTypes.forEach((contentType) => {
187
+ assert(contentType.collectionName, 'Content type "collectionName" is required');
188
+ assert(contentType.modelName, 'Content type "modelName" is required');
189
+ assert(contentType.uid, 'Content type "uid" is required');
190
+ const documentIdAttribute = contentType.modelType === "contentType" ? { documentId: { type: "string", default: createDocumentId } } : {};
191
+ const reservedAttributeNames = ["document_id", id];
192
+ Object.keys(contentType.attributes || {}).forEach((attributeName) => {
193
+ const snakeCasedAttributeName = _.snakeCase(attributeName);
194
+ if (reservedAttributeNames.includes(snakeCasedAttributeName)) {
195
+ throw new Error(
196
+ `The attribute "${attributeName}" is reserved and cannot be used in a model. Please rename "${contentType.modelName}" attribute "${attributeName}" to something else.`
197
+ );
198
+ }
199
+ });
200
+ if (hasComponentsOrDz(contentType)) {
201
+ const compoLinkModel = createCompoLinkModel(contentType);
202
+ models.push(compoLinkModel);
203
+ }
204
+ const model = {
205
+ uid: contentType.uid,
206
+ singularName: contentType.modelName,
207
+ tableName: identifiers.getTableName(contentType.collectionName),
208
+ attributes: {
209
+ [id]: {
210
+ type: "increments"
211
+ },
212
+ ...documentIdAttribute,
213
+ ...transformAttributes(contentType)
214
+ }
215
+ };
216
+ models.push(model);
217
+ });
218
+ return models;
219
+ };
220
+ export {
221
+ COMPONENT_INVERSE_COLUMN_NAME,
222
+ COMPONENT_JOIN_TABLE_SUFFIX,
223
+ COMPONENT_TYPE_COLUMN,
224
+ DZ_JOIN_TABLE_SUFFIX,
225
+ ENTITY,
226
+ createDocumentId,
227
+ getComponentJoinTableName,
228
+ getDzJoinTableName,
229
+ hasComponentsOrDz,
230
+ transformAttribute,
231
+ transformAttributes,
232
+ transformContentTypesToModels
233
+ };
234
+ //# sourceMappingURL=transform-content-types-to-models.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform-content-types-to-models.mjs","sources":["../../src/utils/transform-content-types-to-models.ts"],"sourcesContent":["import { type Model, utils } from '@strapi/database';\nimport { Schema, Attribute } from '@strapi/types';\nimport { createId } from '@paralleldrive/cuid2';\nimport assert from 'node:assert';\nimport _ from 'lodash/fp';\n\nconst { identifiers } = utils;\n\n/**\n * Because strapi/database models don't know about things like components or dynamic zones, we use this file to convert them\n * to a relations format that it recognizes\n *\n * Therefore we have to keep an additional set of helpers/extensions to the database naming methods\n */\n\nexport const COMPONENT_JOIN_TABLE_SUFFIX = 'components';\nexport const DZ_JOIN_TABLE_SUFFIX = 'components';\nexport const COMPONENT_INVERSE_COLUMN_NAME = 'component';\nexport const COMPONENT_TYPE_COLUMN = 'component_type';\nexport const ENTITY = 'entity';\n\nexport const getComponentJoinTableName = (collectionName: string) =>\n identifiers.getTableName(collectionName, { suffix: COMPONENT_JOIN_TABLE_SUFFIX });\n\nexport const getDzJoinTableName = (collectionName: string) =>\n identifiers.getTableName(collectionName, { suffix: DZ_JOIN_TABLE_SUFFIX });\n\nconst { ID_COLUMN: id, FIELD_COLUMN: field, ORDER_COLUMN: order } = identifiers;\n\nexport type LoadedContentTypeModel = Schema.ContentType &\n Required<Pick<Schema.ContentType, 'collectionName' | 'uid' | 'modelName'>>;\n\n// Transforms an attribute (particularly for relation types) into the format that strapi/database accepts\nexport const transformAttribute = (\n name: string,\n attribute: Attribute.Any,\n contentType: LoadedContentTypeModel\n) => {\n switch (attribute.type) {\n case 'media': {\n return {\n type: 'relation',\n relation: attribute.multiple === true ? 'morphMany' : 'morphOne',\n target: 'plugin::upload.file',\n morphBy: 'related',\n };\n }\n case 'component': {\n const joinTableName = getComponentJoinTableName(contentType.collectionName);\n const joinColumnEntityName = identifiers.getJoinColumnAttributeIdName(ENTITY);\n const joinColumnInverseName = identifiers.getJoinColumnAttributeIdName(\n COMPONENT_INVERSE_COLUMN_NAME\n );\n\n return {\n type: 'relation',\n relation: attribute.repeatable === true ? 'oneToMany' : 'oneToOne',\n target: attribute.component,\n\n // We need the join table name to be deterministic,\n // We need to allow passing the join table name as an option\n joinTable: {\n name: joinTableName,\n joinColumn: {\n name: joinColumnEntityName,\n referencedColumn: id,\n },\n inverseJoinColumn: {\n name: joinColumnInverseName,\n referencedColumn: id,\n },\n on: {\n field: name,\n },\n orderColumnName: order,\n orderBy: {\n order: 'asc',\n },\n pivotColumns: [joinColumnEntityName, joinColumnInverseName, field, COMPONENT_TYPE_COLUMN],\n },\n };\n }\n case 'dynamiczone': {\n const joinTableName = getDzJoinTableName(contentType.collectionName);\n const joinColumnEntityName = identifiers.getJoinColumnAttributeIdName(ENTITY);\n const joinColumnInverseName = identifiers.getJoinColumnAttributeIdName(\n COMPONENT_INVERSE_COLUMN_NAME\n );\n\n return {\n type: 'relation',\n relation: 'morphToMany',\n // TODO: handle restrictions at some point\n // target: attribute.components,\n joinTable: {\n name: joinTableName,\n joinColumn: {\n name: joinColumnEntityName,\n referencedColumn: id,\n },\n morphColumn: {\n idColumn: {\n name: joinColumnInverseName,\n referencedColumn: id,\n },\n typeColumn: {\n name: COMPONENT_TYPE_COLUMN,\n },\n typeField: '__component',\n },\n on: {\n field: name,\n },\n orderBy: {\n order: 'asc',\n },\n pivotColumns: [joinColumnEntityName, joinColumnInverseName, field, COMPONENT_TYPE_COLUMN],\n },\n };\n }\n default: {\n return attribute;\n }\n }\n};\n\nexport const transformAttributes = (contentType: LoadedContentTypeModel) => {\n return Object.keys(contentType.attributes! || {}).reduce((attrs, attrName) => {\n return {\n ...attrs,\n [attrName]: transformAttribute(attrName, contentType.attributes[attrName]!, contentType),\n };\n }, {});\n};\n\nexport const hasComponentsOrDz = (\n contentType: LoadedContentTypeModel\n): contentType is LoadedContentTypeModel & { type: 'dynamiczone' | 'component' } => {\n return Object.values(contentType.attributes || {}).some(\n ({ type }) => type === 'dynamiczone' || type === 'component'\n );\n};\n\nexport const createDocumentId = createId;\n\n// Creates the\nconst createCompoLinkModel = (contentType: LoadedContentTypeModel): Model => {\n const name = getComponentJoinTableName(contentType.collectionName);\n\n const entityId = identifiers.getJoinColumnAttributeIdName(ENTITY);\n const componentId = identifiers.getJoinColumnAttributeIdName(COMPONENT_INVERSE_COLUMN_NAME);\n const fkIndex = identifiers.getFkIndexName([contentType.collectionName, ENTITY]);\n\n return {\n // TODO: make sure there can't be any conflicts with a prefix\n singularName: name,\n uid: name,\n tableName: name,\n attributes: {\n [id]: {\n type: 'increments',\n },\n [entityId]: {\n type: 'integer',\n column: {\n unsigned: true,\n },\n },\n [componentId]: {\n type: 'integer',\n column: {\n unsigned: true,\n },\n },\n [COMPONENT_TYPE_COLUMN]: {\n type: 'string',\n },\n [field]: {\n type: 'string',\n },\n [order]: {\n type: 'float',\n column: {\n unsigned: true,\n defaultTo: null,\n },\n },\n },\n indexes: [\n {\n name: identifiers.getIndexName([contentType.collectionName, field]),\n columns: [field],\n },\n {\n name: identifiers.getIndexName([contentType.collectionName, COMPONENT_TYPE_COLUMN]),\n columns: [COMPONENT_TYPE_COLUMN],\n },\n {\n name: fkIndex,\n columns: [entityId],\n },\n {\n // NOTE: since we don't include attribute names, we need to be careful not to create another unique index\n name: identifiers.getUniqueIndexName([contentType.collectionName]),\n columns: [entityId, componentId, field, COMPONENT_TYPE_COLUMN],\n type: 'unique',\n },\n ],\n foreignKeys: [\n {\n name: fkIndex,\n columns: [entityId],\n referencedColumns: [id],\n referencedTable: identifiers.getTableName(contentType.collectionName),\n onDelete: 'CASCADE',\n },\n ],\n };\n};\n\nexport const transformContentTypesToModels = (contentTypes: LoadedContentTypeModel[]): Model[] => {\n const models: Model[] = [];\n\n contentTypes.forEach((contentType) => {\n assert(contentType.collectionName, 'Content type \"collectionName\" is required');\n assert(contentType.modelName, 'Content type \"modelName\" is required');\n assert(contentType.uid, 'Content type \"uid\" is required');\n\n // Add document id to content types\n // as it is not documented\n const documentIdAttribute: Record<string, Attribute.Any> =\n contentType.modelType === 'contentType'\n ? { documentId: { type: 'string', default: createDocumentId } }\n : {};\n\n // TODO: this needs to be combined with getReservedNames, we should not be maintaining two lists\n // Prevent user from creating a documentId attribute\n const reservedAttributeNames = ['document_id', id];\n Object.keys(contentType.attributes || {}).forEach((attributeName) => {\n const snakeCasedAttributeName = _.snakeCase(attributeName);\n if (reservedAttributeNames.includes(snakeCasedAttributeName)) {\n throw new Error(\n `The attribute \"${attributeName}\" is reserved and cannot be used in a model. Please rename \"${contentType.modelName}\" attribute \"${attributeName}\" to something else.`\n );\n }\n });\n\n if (hasComponentsOrDz(contentType)) {\n const compoLinkModel = createCompoLinkModel(contentType);\n models.push(compoLinkModel);\n }\n\n const model: Model = {\n uid: contentType.uid,\n singularName: contentType.modelName,\n tableName: identifiers.getTableName(contentType.collectionName),\n attributes: {\n [id]: {\n type: 'increments',\n },\n ...documentIdAttribute,\n ...transformAttributes(contentType),\n },\n };\n\n models.push(model);\n });\n\n return models;\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Strapi } from '@strapi/types';
2
+ export declare const createUpdateNotifier: (strapi: Strapi) => {
3
+ notify({ checkInterval, notifInterval }?: {
4
+ checkInterval?: number | undefined;
5
+ notifInterval?: number | undefined;
6
+ }): void;
7
+ };
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/update-notifier/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AA0B5C,eAAO,MAAM,oBAAoB,WAAY,MAAM;;;;;CAqElD,CAAC"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const path = require("path");
4
+ const packageJson = require("package-json");
5
+ const Configstore = require("configstore");
6
+ const semver = require("semver");
7
+ const boxen = require("boxen");
8
+ const chalk = require("chalk");
9
+ const strapiUtils = require("@strapi/utils");
10
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
11
+ const path__default = /* @__PURE__ */ _interopDefault(path);
12
+ const packageJson__default = /* @__PURE__ */ _interopDefault(packageJson);
13
+ const Configstore__default = /* @__PURE__ */ _interopDefault(Configstore);
14
+ const semver__default = /* @__PURE__ */ _interopDefault(semver);
15
+ const boxen__default = /* @__PURE__ */ _interopDefault(boxen);
16
+ const chalk__default = /* @__PURE__ */ _interopDefault(chalk);
17
+ const pkg = require("../../../package.json");
18
+ const CHECK_INTERVAL = 1e3 * 60 * 60 * 24 * 1;
19
+ const NOTIF_INTERVAL = 1e3 * 60 * 60 * 24 * 7;
20
+ const boxenOptions = {
21
+ padding: 1,
22
+ margin: 1,
23
+ align: "center",
24
+ borderColor: "yellow",
25
+ borderStyle: "round"
26
+ };
27
+ const getUpdateMessage = (newVersion, currentVersion) => {
28
+ const currentVersionLog = chalk__default.default.dim(currentVersion);
29
+ const newVersionLog = chalk__default.default.green(newVersion);
30
+ const releaseLink = chalk__default.default.bold("https://github.com/strapi/strapi/releases");
31
+ return `
32
+ A new version of Strapi is available ${currentVersionLog} → ${newVersionLog}
33
+ Check out the new releases at: ${releaseLink}
34
+ `.trim();
35
+ };
36
+ const createUpdateNotifier = (strapi) => {
37
+ let config;
38
+ try {
39
+ config = new Configstore__default.default(
40
+ pkg.name,
41
+ {},
42
+ { configPath: path__default.default.join(strapi.dirs.app.root, ".strapi-updater.json") }
43
+ );
44
+ } catch {
45
+ }
46
+ const checkUpdate = async (checkInterval) => {
47
+ const now = Date.now();
48
+ const lastUpdateCheck = config.get("lastUpdateCheck") || 0;
49
+ if (lastUpdateCheck + checkInterval > now) {
50
+ return;
51
+ }
52
+ try {
53
+ const res = await packageJson__default.default(pkg.name);
54
+ if (res.version) {
55
+ config.set("latest", res.version);
56
+ config.set("lastUpdateCheck", now);
57
+ }
58
+ } catch {
59
+ }
60
+ };
61
+ const display = (notifInterval) => {
62
+ const now = Date.now();
63
+ const latestVersion = config.get("latest");
64
+ const lastNotification = config.get("lastNotification") || 0;
65
+ if (!process.stdout.isTTY || lastNotification + notifInterval > now || !semver__default.default.valid(latestVersion) || !semver__default.default.valid(pkg.version) || semver__default.default.lte(latestVersion, pkg.version)) {
66
+ return;
67
+ }
68
+ const message = boxen__default.default(getUpdateMessage(latestVersion, pkg.version), boxenOptions);
69
+ config.set("lastNotification", now);
70
+ console.log(message);
71
+ };
72
+ return {
73
+ notify({ checkInterval = CHECK_INTERVAL, notifInterval = NOTIF_INTERVAL } = {}) {
74
+ if (strapiUtils.env.bool("STRAPI_DISABLE_UPDATE_NOTIFICATION", false)) {
75
+ strapi.log.warn(
76
+ "STRAPI_DISABLE_UPDATE_NOTIFICATION is no longer supported. Instead, set logger.updates.enabled to false in your server configuration."
77
+ );
78
+ }
79
+ if (!strapi.config.get("server.logger.updates.enabled") || !config) {
80
+ return;
81
+ }
82
+ display(notifInterval);
83
+ checkUpdate(checkInterval);
84
+ }
85
+ };
86
+ };
87
+ exports.createUpdateNotifier = createUpdateNotifier;
88
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/utils/update-notifier/index.ts"],"sourcesContent":["import path from 'path';\nimport packageJson from 'package-json';\nimport Configstore from 'configstore';\nimport semver from 'semver';\nimport boxen from 'boxen';\nimport chalk from 'chalk';\nimport { env } from '@strapi/utils';\nimport type { Strapi } from '@strapi/types';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst pkg = require('../../../package.json');\n\nconst CHECK_INTERVAL = 1000 * 60 * 60 * 24 * 1; // 1 day\nconst NOTIF_INTERVAL = 1000 * 60 * 60 * 24 * 7; // 1 week\nconst boxenOptions: boxen.Options = {\n padding: 1,\n margin: 1,\n align: 'center',\n borderColor: 'yellow',\n borderStyle: 'round',\n};\n\nconst getUpdateMessage = (newVersion: string, currentVersion: string) => {\n const currentVersionLog = chalk.dim(currentVersion);\n const newVersionLog = chalk.green(newVersion);\n const releaseLink = chalk.bold('https://github.com/strapi/strapi/releases');\n\n return `\nA new version of Strapi is available ${currentVersionLog} → ${newVersionLog}\nCheck out the new releases at: ${releaseLink}\n`.trim();\n};\n\nexport const createUpdateNotifier = (strapi: Strapi) => {\n let config: InstanceType<typeof Configstore>;\n\n try {\n config = new Configstore(\n pkg.name,\n {},\n { configPath: path.join(strapi.dirs.app.root, '.strapi-updater.json') }\n );\n } catch {\n // we don't have write access to the file system\n // we silence the error\n }\n\n const checkUpdate = async (checkInterval: number) => {\n const now = Date.now();\n const lastUpdateCheck = config.get('lastUpdateCheck') || 0;\n if (lastUpdateCheck + checkInterval > now) {\n return;\n }\n\n try {\n const res = await packageJson(pkg.name);\n if (res.version) {\n config.set('latest', res.version);\n config.set('lastUpdateCheck', now);\n }\n } catch {\n // silence error if offline\n }\n };\n\n const display = (notifInterval: number) => {\n const now = Date.now();\n const latestVersion = config.get('latest');\n const lastNotification = config.get('lastNotification') || 0;\n\n if (\n !process.stdout.isTTY ||\n lastNotification + notifInterval > now ||\n !semver.valid(latestVersion) ||\n !semver.valid(pkg.version) ||\n semver.lte(latestVersion, pkg.version)\n ) {\n return;\n }\n\n const message = boxen(getUpdateMessage(latestVersion, pkg.version), boxenOptions);\n config.set('lastNotification', now);\n console.log(message);\n };\n\n return {\n notify({ checkInterval = CHECK_INTERVAL, notifInterval = NOTIF_INTERVAL } = {}) {\n // TODO v6: Remove this warning\n if (env.bool('STRAPI_DISABLE_UPDATE_NOTIFICATION', false)) {\n strapi.log.warn(\n 'STRAPI_DISABLE_UPDATE_NOTIFICATION is no longer supported. Instead, set logger.updates.enabled to false in your server configuration.'\n );\n }\n\n if (!strapi.config.get('server.logger.updates.enabled') || !config) {\n return;\n }\n\n display(notifInterval);\n checkUpdate(checkInterval); // doesn't need to await\n },\n };\n};\n"],"names":["chalk","Configstore","path","packageJson","semver","boxen","env"],"mappings":";;;;;;;;;;;;;;;;AAUA,MAAM,MAAM,QAAQ,uBAAuB;AAE3C,MAAM,iBAAiB,MAAO,KAAK,KAAK,KAAK;AAC7C,MAAM,iBAAiB,MAAO,KAAK,KAAK,KAAK;AAC7C,MAAM,eAA8B;AAAA,EAClC,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,aAAa;AAAA,EACb,aAAa;AACf;AAEA,MAAM,mBAAmB,CAAC,YAAoB,mBAA2B;AACjE,QAAA,oBAAoBA,eAAAA,QAAM,IAAI,cAAc;AAC5C,QAAA,gBAAgBA,eAAAA,QAAM,MAAM,UAAU;AACtC,QAAA,cAAcA,eAAAA,QAAM,KAAK,2CAA2C;AAEnE,SAAA;AAAA,uCAC8B,iBAAiB,MAAM,aAAa;AAAA,iCAC1C,WAAW;AAAA,EAC1C,KAAK;AACP;AAEa,MAAA,uBAAuB,CAAC,WAAmB;AAClD,MAAA;AAEA,MAAA;AACF,aAAS,IAAIC,qBAAA;AAAA,MACX,IAAI;AAAA,MACJ,CAAC;AAAA,MACD,EAAE,YAAYC,cAAK,QAAA,KAAK,OAAO,KAAK,IAAI,MAAM,sBAAsB,EAAE;AAAA,IAAA;AAAA,EACxE,QACM;AAAA,EAGR;AAEM,QAAA,cAAc,OAAO,kBAA0B;AAC7C,UAAA,MAAM,KAAK;AACjB,UAAM,kBAAkB,OAAO,IAAI,iBAAiB,KAAK;AACrD,QAAA,kBAAkB,gBAAgB,KAAK;AACzC;AAAA,IACF;AAEI,QAAA;AACF,YAAM,MAAM,MAAMC,qBAAAA,QAAY,IAAI,IAAI;AACtC,UAAI,IAAI,SAAS;AACR,eAAA,IAAI,UAAU,IAAI,OAAO;AACzB,eAAA,IAAI,mBAAmB,GAAG;AAAA,MACnC;AAAA,IAAA,QACM;AAAA,IAER;AAAA,EAAA;AAGI,QAAA,UAAU,CAAC,kBAA0B;AACnC,UAAA,MAAM,KAAK;AACX,UAAA,gBAAgB,OAAO,IAAI,QAAQ;AACzC,UAAM,mBAAmB,OAAO,IAAI,kBAAkB,KAAK;AAGzD,QAAA,CAAC,QAAQ,OAAO,SAChB,mBAAmB,gBAAgB,OACnC,CAACC,wBAAO,MAAM,aAAa,KAC3B,CAACA,wBAAO,MAAM,IAAI,OAAO,KACzBA,wBAAO,IAAI,eAAe,IAAI,OAAO,GACrC;AACA;AAAA,IACF;AAEA,UAAM,UAAUC,eAAM,QAAA,iBAAiB,eAAe,IAAI,OAAO,GAAG,YAAY;AACzE,WAAA,IAAI,oBAAoB,GAAG;AAClC,YAAQ,IAAI,OAAO;AAAA,EAAA;AAGd,SAAA;AAAA,IACL,OAAO,EAAE,gBAAgB,gBAAgB,gBAAgB,eAAe,IAAI,IAAI;AAE9E,UAAIC,gBAAI,KAAK,sCAAsC,KAAK,GAAG;AACzD,eAAO,IAAI;AAAA,UACT;AAAA,QAAA;AAAA,MAEJ;AAEA,UAAI,CAAC,OAAO,OAAO,IAAI,+BAA+B,KAAK,CAAC,QAAQ;AAClE;AAAA,MACF;AAEA,cAAQ,aAAa;AACrB,kBAAY,aAAa;AAAA,IAC3B;AAAA,EAAA;AAEJ;;"}