@strapi/core 0.0.0-experimental.9df68962083938acba06546a7901c68a63266aec → 0.0.0-experimental.9f12de545908a77b10196617c93b8db59a9151c1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (719) hide show
  1. package/LICENSE +18 -3
  2. package/dist/Strapi.d.ts +3 -1
  3. package/dist/Strapi.d.ts.map +1 -1
  4. package/dist/configuration/index.d.ts.map +1 -1
  5. package/dist/core-api/service/collection-type.d.ts +2 -2
  6. package/dist/ee/index.d.ts.map +1 -1
  7. package/dist/index.d.ts +14 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +9954 -27
  10. package/dist/index.js.map +1 -1
  11. package/dist/index.mjs +9932 -29
  12. package/dist/index.mjs.map +1 -1
  13. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  14. package/dist/loaders/plugins/index.d.ts.map +1 -1
  15. package/dist/middlewares/body.d.ts.map +1 -1
  16. package/dist/middlewares/cors.d.ts.map +1 -1
  17. package/dist/middlewares/query.d.ts.map +1 -1
  18. package/dist/middlewares/security.d.ts.map +1 -1
  19. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +14 -11
  20. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  21. package/dist/migrations/draft-publish.d.ts +2 -2
  22. package/dist/migrations/draft-publish.d.ts.map +1 -1
  23. package/dist/migrations/i18n.d.ts +5 -0
  24. package/dist/migrations/i18n.d.ts.map +1 -0
  25. package/dist/migrations/index.d.ts +5 -0
  26. package/dist/migrations/index.d.ts.map +1 -0
  27. package/dist/providers/admin.d.ts.map +1 -1
  28. package/dist/registries/policies.d.ts +1 -1
  29. package/dist/registries/policies.d.ts.map +1 -1
  30. package/dist/services/content-api/index.d.ts +10 -12
  31. package/dist/services/content-api/index.d.ts.map +1 -1
  32. package/dist/services/content-api/permissions/index.d.ts +10 -12
  33. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  34. package/dist/services/content-api/permissions/providers/action.d.ts +5 -6
  35. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  36. package/dist/services/content-api/permissions/providers/condition.d.ts +5 -6
  37. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  38. package/dist/services/cron.d.ts +3 -3
  39. package/dist/services/cron.d.ts.map +1 -1
  40. package/dist/services/document-service/common.d.ts +1 -1
  41. package/dist/services/document-service/common.d.ts.map +1 -1
  42. package/dist/services/document-service/components.d.ts.map +1 -1
  43. package/dist/services/document-service/draft-and-publish.d.ts +1 -1
  44. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  45. package/dist/services/document-service/entries.d.ts +2 -2
  46. package/dist/services/document-service/entries.d.ts.map +1 -1
  47. package/dist/services/document-service/events.d.ts +1 -1
  48. package/dist/services/document-service/events.d.ts.map +1 -1
  49. package/dist/services/document-service/index.d.ts +2 -1
  50. package/dist/services/document-service/index.d.ts.map +1 -1
  51. package/dist/services/document-service/repository.d.ts.map +1 -1
  52. package/dist/services/document-service/transform/id-map.d.ts +1 -1
  53. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  54. package/dist/services/document-service/transform/id-transform.d.ts +1 -1
  55. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  56. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +1 -1
  57. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  58. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  59. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  60. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  61. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +1 -1
  62. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  63. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  64. package/dist/services/document-service/utils/populate.d.ts +1 -1
  65. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  66. package/dist/services/document-service/utils/unidirectional-relations.d.ts +36 -0
  67. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -0
  68. package/dist/services/entity-validator/blocks-validator.d.ts +1 -2
  69. package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
  70. package/dist/services/entity-validator/index.d.ts +15 -1
  71. package/dist/services/entity-validator/index.d.ts.map +1 -1
  72. package/dist/services/entity-validator/validators.d.ts +36 -25
  73. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  74. package/dist/services/metrics/middleware.d.ts.map +1 -1
  75. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  76. package/dist/utils/fetch.d.ts.map +1 -1
  77. package/dist/utils/filepath-to-prop-path.d.ts +1 -1
  78. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  79. package/dist/utils/startup-logger.d.ts.map +1 -1
  80. package/dist/utils/transform-content-types-to-models.d.ts +355 -23
  81. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  82. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  83. package/package.json +31 -30
  84. package/dist/Strapi.js +0 -388
  85. package/dist/Strapi.js.map +0 -1
  86. package/dist/Strapi.mjs +0 -386
  87. package/dist/Strapi.mjs.map +0 -1
  88. package/dist/compile.js +0 -18
  89. package/dist/compile.js.map +0 -1
  90. package/dist/compile.mjs +0 -17
  91. package/dist/compile.mjs.map +0 -1
  92. package/dist/configuration/config-loader.js +0 -106
  93. package/dist/configuration/config-loader.js.map +0 -1
  94. package/dist/configuration/config-loader.mjs +0 -104
  95. package/dist/configuration/config-loader.mjs.map +0 -1
  96. package/dist/configuration/get-dirs.js +0 -31
  97. package/dist/configuration/get-dirs.js.map +0 -1
  98. package/dist/configuration/get-dirs.mjs +0 -31
  99. package/dist/configuration/get-dirs.mjs.map +0 -1
  100. package/dist/configuration/index.js +0 -80
  101. package/dist/configuration/index.js.map +0 -1
  102. package/dist/configuration/index.mjs +0 -75
  103. package/dist/configuration/index.mjs.map +0 -1
  104. package/dist/configuration/urls.js +0 -68
  105. package/dist/configuration/urls.js.map +0 -1
  106. package/dist/configuration/urls.mjs +0 -66
  107. package/dist/configuration/urls.mjs.map +0 -1
  108. package/dist/container.js +0 -30
  109. package/dist/container.js.map +0 -1
  110. package/dist/container.mjs +0 -30
  111. package/dist/container.mjs.map +0 -1
  112. package/dist/core-api/controller/collection-type.js +0 -84
  113. package/dist/core-api/controller/collection-type.js.map +0 -1
  114. package/dist/core-api/controller/collection-type.mjs +0 -84
  115. package/dist/core-api/controller/collection-type.mjs.map +0 -1
  116. package/dist/core-api/controller/index.js +0 -52
  117. package/dist/core-api/controller/index.js.map +0 -1
  118. package/dist/core-api/controller/index.mjs +0 -52
  119. package/dist/core-api/controller/index.mjs.map +0 -1
  120. package/dist/core-api/controller/single-type.js +0 -46
  121. package/dist/core-api/controller/single-type.js.map +0 -1
  122. package/dist/core-api/controller/single-type.mjs +0 -46
  123. package/dist/core-api/controller/single-type.mjs.map +0 -1
  124. package/dist/core-api/controller/transform.js +0 -76
  125. package/dist/core-api/controller/transform.js.map +0 -1
  126. package/dist/core-api/controller/transform.mjs +0 -76
  127. package/dist/core-api/controller/transform.mjs.map +0 -1
  128. package/dist/core-api/routes/index.js +0 -67
  129. package/dist/core-api/routes/index.js.map +0 -1
  130. package/dist/core-api/routes/index.mjs +0 -67
  131. package/dist/core-api/routes/index.mjs.map +0 -1
  132. package/dist/core-api/service/collection-type.js +0 -67
  133. package/dist/core-api/service/collection-type.js.map +0 -1
  134. package/dist/core-api/service/collection-type.mjs +0 -67
  135. package/dist/core-api/service/collection-type.mjs.map +0 -1
  136. package/dist/core-api/service/core-service.js +0 -12
  137. package/dist/core-api/service/core-service.js.map +0 -1
  138. package/dist/core-api/service/core-service.mjs +0 -12
  139. package/dist/core-api/service/core-service.mjs.map +0 -1
  140. package/dist/core-api/service/index.js +0 -16
  141. package/dist/core-api/service/index.js.map +0 -1
  142. package/dist/core-api/service/index.mjs +0 -16
  143. package/dist/core-api/service/index.mjs.map +0 -1
  144. package/dist/core-api/service/pagination.js +0 -52
  145. package/dist/core-api/service/pagination.js.map +0 -1
  146. package/dist/core-api/service/pagination.mjs +0 -52
  147. package/dist/core-api/service/pagination.mjs.map +0 -1
  148. package/dist/core-api/service/single-type.js +0 -46
  149. package/dist/core-api/service/single-type.js.map +0 -1
  150. package/dist/core-api/service/single-type.mjs +0 -46
  151. package/dist/core-api/service/single-type.mjs.map +0 -1
  152. package/dist/domain/content-type/index.js +0 -111
  153. package/dist/domain/content-type/index.js.map +0 -1
  154. package/dist/domain/content-type/index.mjs +0 -109
  155. package/dist/domain/content-type/index.mjs.map +0 -1
  156. package/dist/domain/content-type/validator.js +0 -77
  157. package/dist/domain/content-type/validator.js.map +0 -1
  158. package/dist/domain/content-type/validator.mjs +0 -75
  159. package/dist/domain/content-type/validator.mjs.map +0 -1
  160. package/dist/domain/module/index.js +0 -107
  161. package/dist/domain/module/index.js.map +0 -1
  162. package/dist/domain/module/index.mjs +0 -105
  163. package/dist/domain/module/index.mjs.map +0 -1
  164. package/dist/domain/module/validation.js +0 -25
  165. package/dist/domain/module/validation.js.map +0 -1
  166. package/dist/domain/module/validation.mjs +0 -25
  167. package/dist/domain/module/validation.mjs.map +0 -1
  168. package/dist/ee/index.js +0 -153
  169. package/dist/ee/index.js.map +0 -1
  170. package/dist/ee/index.mjs +0 -154
  171. package/dist/ee/index.mjs.map +0 -1
  172. package/dist/ee/license.js +0 -91
  173. package/dist/ee/license.js.map +0 -1
  174. package/dist/ee/license.mjs +0 -88
  175. package/dist/ee/license.mjs.map +0 -1
  176. package/dist/factories.js +0 -80
  177. package/dist/factories.js.map +0 -1
  178. package/dist/factories.mjs +0 -80
  179. package/dist/factories.mjs.map +0 -1
  180. package/dist/loaders/admin.js +0 -26
  181. package/dist/loaders/admin.js.map +0 -1
  182. package/dist/loaders/admin.mjs +0 -25
  183. package/dist/loaders/admin.mjs.map +0 -1
  184. package/dist/loaders/apis.js +0 -137
  185. package/dist/loaders/apis.js.map +0 -1
  186. package/dist/loaders/apis.mjs +0 -135
  187. package/dist/loaders/apis.mjs.map +0 -1
  188. package/dist/loaders/components.js +0 -38
  189. package/dist/loaders/components.js.map +0 -1
  190. package/dist/loaders/components.mjs +0 -37
  191. package/dist/loaders/components.mjs.map +0 -1
  192. package/dist/loaders/index.js +0 -24
  193. package/dist/loaders/index.js.map +0 -1
  194. package/dist/loaders/index.mjs +0 -24
  195. package/dist/loaders/index.mjs.map +0 -1
  196. package/dist/loaders/middlewares.js +0 -31
  197. package/dist/loaders/middlewares.js.map +0 -1
  198. package/dist/loaders/middlewares.mjs +0 -30
  199. package/dist/loaders/middlewares.mjs.map +0 -1
  200. package/dist/loaders/plugins/get-enabled-plugins.js +0 -113
  201. package/dist/loaders/plugins/get-enabled-plugins.js.map +0 -1
  202. package/dist/loaders/plugins/get-enabled-plugins.mjs +0 -111
  203. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +0 -1
  204. package/dist/loaders/plugins/get-user-plugins-config.js +0 -27
  205. package/dist/loaders/plugins/get-user-plugins-config.js.map +0 -1
  206. package/dist/loaders/plugins/get-user-plugins-config.mjs +0 -25
  207. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +0 -1
  208. package/dist/loaders/plugins/index.js +0 -118
  209. package/dist/loaders/plugins/index.js.map +0 -1
  210. package/dist/loaders/plugins/index.mjs +0 -117
  211. package/dist/loaders/plugins/index.mjs.map +0 -1
  212. package/dist/loaders/policies.js +0 -25
  213. package/dist/loaders/policies.js.map +0 -1
  214. package/dist/loaders/policies.mjs +0 -24
  215. package/dist/loaders/policies.mjs.map +0 -1
  216. package/dist/loaders/sanitizers.js +0 -6
  217. package/dist/loaders/sanitizers.js.map +0 -1
  218. package/dist/loaders/sanitizers.mjs +0 -7
  219. package/dist/loaders/sanitizers.mjs.map +0 -1
  220. package/dist/loaders/src-index.js +0 -33
  221. package/dist/loaders/src-index.js.map +0 -1
  222. package/dist/loaders/src-index.mjs +0 -34
  223. package/dist/loaders/src-index.mjs.map +0 -1
  224. package/dist/loaders/validators.js +0 -6
  225. package/dist/loaders/validators.js.map +0 -1
  226. package/dist/loaders/validators.mjs +0 -7
  227. package/dist/loaders/validators.mjs.map +0 -1
  228. package/dist/middlewares/body.js +0 -65
  229. package/dist/middlewares/body.js.map +0 -1
  230. package/dist/middlewares/body.mjs +0 -61
  231. package/dist/middlewares/body.mjs.map +0 -1
  232. package/dist/middlewares/compression.js +0 -8
  233. package/dist/middlewares/compression.js.map +0 -1
  234. package/dist/middlewares/compression.mjs +0 -6
  235. package/dist/middlewares/compression.mjs.map +0 -1
  236. package/dist/middlewares/cors.js +0 -49
  237. package/dist/middlewares/cors.js.map +0 -1
  238. package/dist/middlewares/cors.mjs +0 -47
  239. package/dist/middlewares/cors.mjs.map +0 -1
  240. package/dist/middlewares/errors.js +0 -33
  241. package/dist/middlewares/errors.js.map +0 -1
  242. package/dist/middlewares/errors.mjs +0 -33
  243. package/dist/middlewares/errors.mjs.map +0 -1
  244. package/dist/middlewares/favicon.js +0 -22
  245. package/dist/middlewares/favicon.js.map +0 -1
  246. package/dist/middlewares/favicon.mjs +0 -20
  247. package/dist/middlewares/favicon.mjs.map +0 -1
  248. package/dist/middlewares/index.js +0 -34
  249. package/dist/middlewares/index.js.map +0 -1
  250. package/dist/middlewares/index.mjs +0 -34
  251. package/dist/middlewares/index.mjs.map +0 -1
  252. package/dist/middlewares/ip.js +0 -8
  253. package/dist/middlewares/ip.js.map +0 -1
  254. package/dist/middlewares/ip.mjs +0 -6
  255. package/dist/middlewares/ip.mjs.map +0 -1
  256. package/dist/middlewares/logger.js +0 -12
  257. package/dist/middlewares/logger.js.map +0 -1
  258. package/dist/middlewares/logger.mjs +0 -12
  259. package/dist/middlewares/logger.mjs.map +0 -1
  260. package/dist/middlewares/powered-by.js +0 -14
  261. package/dist/middlewares/powered-by.js.map +0 -1
  262. package/dist/middlewares/powered-by.mjs +0 -14
  263. package/dist/middlewares/powered-by.mjs.map +0 -1
  264. package/dist/middlewares/public.js +0 -34
  265. package/dist/middlewares/public.js.map +0 -1
  266. package/dist/middlewares/public.mjs +0 -32
  267. package/dist/middlewares/public.mjs.map +0 -1
  268. package/dist/middlewares/query.js +0 -40
  269. package/dist/middlewares/query.js.map +0 -1
  270. package/dist/middlewares/query.mjs +0 -38
  271. package/dist/middlewares/query.mjs.map +0 -1
  272. package/dist/middlewares/response-time.js +0 -12
  273. package/dist/middlewares/response-time.js.map +0 -1
  274. package/dist/middlewares/response-time.mjs +0 -12
  275. package/dist/middlewares/response-time.mjs.map +0 -1
  276. package/dist/middlewares/responses.js +0 -15
  277. package/dist/middlewares/responses.js.map +0 -1
  278. package/dist/middlewares/responses.mjs +0 -15
  279. package/dist/middlewares/responses.mjs.map +0 -1
  280. package/dist/middlewares/security.js +0 -78
  281. package/dist/middlewares/security.js.map +0 -1
  282. package/dist/middlewares/security.mjs +0 -76
  283. package/dist/middlewares/security.mjs.map +0 -1
  284. package/dist/middlewares/session.js +0 -30
  285. package/dist/middlewares/session.js.map +0 -1
  286. package/dist/middlewares/session.mjs +0 -28
  287. package/dist/middlewares/session.mjs.map +0 -1
  288. package/dist/migrations/database/5.0.0-discard-drafts.js +0 -50
  289. package/dist/migrations/database/5.0.0-discard-drafts.js.map +0 -1
  290. package/dist/migrations/database/5.0.0-discard-drafts.mjs +0 -50
  291. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +0 -1
  292. package/dist/migrations/draft-publish.js +0 -42
  293. package/dist/migrations/draft-publish.js.map +0 -1
  294. package/dist/migrations/draft-publish.mjs +0 -42
  295. package/dist/migrations/draft-publish.mjs.map +0 -1
  296. package/dist/providers/admin.js +0 -20
  297. package/dist/providers/admin.js.map +0 -1
  298. package/dist/providers/admin.mjs +0 -21
  299. package/dist/providers/admin.mjs.map +0 -1
  300. package/dist/providers/coreStore.js +0 -11
  301. package/dist/providers/coreStore.js.map +0 -1
  302. package/dist/providers/coreStore.mjs +0 -12
  303. package/dist/providers/coreStore.mjs.map +0 -1
  304. package/dist/providers/cron.js +0 -20
  305. package/dist/providers/cron.js.map +0 -1
  306. package/dist/providers/cron.mjs +0 -21
  307. package/dist/providers/cron.mjs.map +0 -1
  308. package/dist/providers/index.js +0 -11
  309. package/dist/providers/index.js.map +0 -1
  310. package/dist/providers/index.mjs +0 -11
  311. package/dist/providers/index.mjs.map +0 -1
  312. package/dist/providers/provider.js +0 -5
  313. package/dist/providers/provider.js.map +0 -1
  314. package/dist/providers/provider.mjs +0 -5
  315. package/dist/providers/provider.mjs.map +0 -1
  316. package/dist/providers/registries.js +0 -35
  317. package/dist/providers/registries.js.map +0 -1
  318. package/dist/providers/registries.mjs +0 -36
  319. package/dist/providers/registries.mjs.map +0 -1
  320. package/dist/providers/telemetry.js +0 -19
  321. package/dist/providers/telemetry.js.map +0 -1
  322. package/dist/providers/telemetry.mjs +0 -20
  323. package/dist/providers/telemetry.mjs.map +0 -1
  324. package/dist/providers/webhooks.js +0 -30
  325. package/dist/providers/webhooks.js.map +0 -1
  326. package/dist/providers/webhooks.mjs +0 -31
  327. package/dist/providers/webhooks.mjs.map +0 -1
  328. package/dist/registries/apis.js +0 -23
  329. package/dist/registries/apis.js.map +0 -1
  330. package/dist/registries/apis.mjs +0 -24
  331. package/dist/registries/apis.mjs.map +0 -1
  332. package/dist/registries/components.js +0 -45
  333. package/dist/registries/components.js.map +0 -1
  334. package/dist/registries/components.mjs +0 -46
  335. package/dist/registries/components.mjs.map +0 -1
  336. package/dist/registries/content-types.js +0 -70
  337. package/dist/registries/content-types.js.map +0 -1
  338. package/dist/registries/content-types.mjs +0 -71
  339. package/dist/registries/content-types.mjs.map +0 -1
  340. package/dist/registries/controllers.js +0 -80
  341. package/dist/registries/controllers.js.map +0 -1
  342. package/dist/registries/controllers.mjs +0 -81
  343. package/dist/registries/controllers.mjs.map +0 -1
  344. package/dist/registries/custom-fields.js +0 -71
  345. package/dist/registries/custom-fields.js.map +0 -1
  346. package/dist/registries/custom-fields.mjs +0 -72
  347. package/dist/registries/custom-fields.mjs.map +0 -1
  348. package/dist/registries/hooks.js +0 -58
  349. package/dist/registries/hooks.js.map +0 -1
  350. package/dist/registries/hooks.mjs +0 -59
  351. package/dist/registries/hooks.mjs.map +0 -1
  352. package/dist/registries/middlewares.js +0 -60
  353. package/dist/registries/middlewares.js.map +0 -1
  354. package/dist/registries/middlewares.mjs +0 -61
  355. package/dist/registries/middlewares.mjs.map +0 -1
  356. package/dist/registries/models.js +0 -16
  357. package/dist/registries/models.js.map +0 -1
  358. package/dist/registries/models.mjs +0 -16
  359. package/dist/registries/models.mjs.map +0 -1
  360. package/dist/registries/modules.js +0 -39
  361. package/dist/registries/modules.js.map +0 -1
  362. package/dist/registries/modules.mjs +0 -40
  363. package/dist/registries/modules.mjs.map +0 -1
  364. package/dist/registries/namespace.js +0 -27
  365. package/dist/registries/namespace.js.map +0 -1
  366. package/dist/registries/namespace.mjs +0 -27
  367. package/dist/registries/namespace.mjs.map +0 -1
  368. package/dist/registries/plugins.js +0 -23
  369. package/dist/registries/plugins.js.map +0 -1
  370. package/dist/registries/plugins.mjs +0 -24
  371. package/dist/registries/plugins.mjs.map +0 -1
  372. package/dist/registries/policies.js +0 -108
  373. package/dist/registries/policies.js.map +0 -1
  374. package/dist/registries/policies.mjs +0 -109
  375. package/dist/registries/policies.mjs.map +0 -1
  376. package/dist/registries/sanitizers.js +0 -25
  377. package/dist/registries/sanitizers.js.map +0 -1
  378. package/dist/registries/sanitizers.mjs +0 -24
  379. package/dist/registries/sanitizers.mjs.map +0 -1
  380. package/dist/registries/services.js +0 -80
  381. package/dist/registries/services.js.map +0 -1
  382. package/dist/registries/services.mjs +0 -81
  383. package/dist/registries/services.mjs.map +0 -1
  384. package/dist/registries/validators.js +0 -25
  385. package/dist/registries/validators.js.map +0 -1
  386. package/dist/registries/validators.mjs +0 -24
  387. package/dist/registries/validators.mjs.map +0 -1
  388. package/dist/services/auth/index.js +0 -81
  389. package/dist/services/auth/index.js.map +0 -1
  390. package/dist/services/auth/index.mjs +0 -80
  391. package/dist/services/auth/index.mjs.map +0 -1
  392. package/dist/services/config.js +0 -47
  393. package/dist/services/config.js.map +0 -1
  394. package/dist/services/config.mjs +0 -47
  395. package/dist/services/config.mjs.map +0 -1
  396. package/dist/services/content-api/index.js +0 -85
  397. package/dist/services/content-api/index.js.map +0 -1
  398. package/dist/services/content-api/index.mjs +0 -84
  399. package/dist/services/content-api/index.mjs.map +0 -1
  400. package/dist/services/content-api/permissions/engine.js +0 -7
  401. package/dist/services/content-api/permissions/engine.js.map +0 -1
  402. package/dist/services/content-api/permissions/engine.mjs +0 -6
  403. package/dist/services/content-api/permissions/engine.mjs.map +0 -1
  404. package/dist/services/content-api/permissions/index.js +0 -87
  405. package/dist/services/content-api/permissions/index.js.map +0 -1
  406. package/dist/services/content-api/permissions/index.mjs +0 -86
  407. package/dist/services/content-api/permissions/index.mjs.map +0 -1
  408. package/dist/services/content-api/permissions/providers/action.js +0 -16
  409. package/dist/services/content-api/permissions/providers/action.js.map +0 -1
  410. package/dist/services/content-api/permissions/providers/action.mjs +0 -17
  411. package/dist/services/content-api/permissions/providers/action.mjs.map +0 -1
  412. package/dist/services/content-api/permissions/providers/condition.js +0 -16
  413. package/dist/services/content-api/permissions/providers/condition.js.map +0 -1
  414. package/dist/services/content-api/permissions/providers/condition.mjs +0 -17
  415. package/dist/services/content-api/permissions/providers/condition.mjs.map +0 -1
  416. package/dist/services/core-store.js +0 -107
  417. package/dist/services/core-store.js.map +0 -1
  418. package/dist/services/core-store.mjs +0 -107
  419. package/dist/services/core-store.mjs.map +0 -1
  420. package/dist/services/cron.js +0 -63
  421. package/dist/services/cron.js.map +0 -1
  422. package/dist/services/cron.mjs +0 -64
  423. package/dist/services/cron.mjs.map +0 -1
  424. package/dist/services/custom-fields.js +0 -10
  425. package/dist/services/custom-fields.js.map +0 -1
  426. package/dist/services/custom-fields.mjs +0 -11
  427. package/dist/services/custom-fields.mjs.map +0 -1
  428. package/dist/services/document-service/attributes/index.js +0 -22
  429. package/dist/services/document-service/attributes/index.js.map +0 -1
  430. package/dist/services/document-service/attributes/index.mjs +0 -22
  431. package/dist/services/document-service/attributes/index.mjs.map +0 -1
  432. package/dist/services/document-service/attributes/transforms.js +0 -20
  433. package/dist/services/document-service/attributes/transforms.js.map +0 -1
  434. package/dist/services/document-service/attributes/transforms.mjs +0 -19
  435. package/dist/services/document-service/attributes/transforms.mjs.map +0 -1
  436. package/dist/services/document-service/common.js +0 -7
  437. package/dist/services/document-service/common.js.map +0 -1
  438. package/dist/services/document-service/common.mjs +0 -7
  439. package/dist/services/document-service/common.mjs.map +0 -1
  440. package/dist/services/document-service/components.js +0 -288
  441. package/dist/services/document-service/components.js.map +0 -1
  442. package/dist/services/document-service/components.mjs +0 -286
  443. package/dist/services/document-service/components.mjs.map +0 -1
  444. package/dist/services/document-service/draft-and-publish.js +0 -69
  445. package/dist/services/document-service/draft-and-publish.js.map +0 -1
  446. package/dist/services/document-service/draft-and-publish.mjs +0 -69
  447. package/dist/services/document-service/draft-and-publish.mjs.map +0 -1
  448. package/dist/services/document-service/entries.js +0 -96
  449. package/dist/services/document-service/entries.js.map +0 -1
  450. package/dist/services/document-service/entries.mjs +0 -96
  451. package/dist/services/document-service/entries.mjs.map +0 -1
  452. package/dist/services/document-service/events.js +0 -47
  453. package/dist/services/document-service/events.js.map +0 -1
  454. package/dist/services/document-service/events.mjs +0 -47
  455. package/dist/services/document-service/events.mjs.map +0 -1
  456. package/dist/services/document-service/index.js +0 -35
  457. package/dist/services/document-service/index.js.map +0 -1
  458. package/dist/services/document-service/index.mjs +0 -35
  459. package/dist/services/document-service/index.mjs.map +0 -1
  460. package/dist/services/document-service/internationalization.js +0 -63
  461. package/dist/services/document-service/internationalization.js.map +0 -1
  462. package/dist/services/document-service/internationalization.mjs +0 -63
  463. package/dist/services/document-service/internationalization.mjs.map +0 -1
  464. package/dist/services/document-service/middlewares/errors.js +0 -25
  465. package/dist/services/document-service/middlewares/errors.js.map +0 -1
  466. package/dist/services/document-service/middlewares/errors.mjs +0 -25
  467. package/dist/services/document-service/middlewares/errors.mjs.map +0 -1
  468. package/dist/services/document-service/middlewares/middleware-manager.js +0 -49
  469. package/dist/services/document-service/middlewares/middleware-manager.js.map +0 -1
  470. package/dist/services/document-service/middlewares/middleware-manager.mjs +0 -49
  471. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +0 -1
  472. package/dist/services/document-service/params.js +0 -8
  473. package/dist/services/document-service/params.js.map +0 -1
  474. package/dist/services/document-service/params.mjs +0 -8
  475. package/dist/services/document-service/params.mjs.map +0 -1
  476. package/dist/services/document-service/repository.js +0 -278
  477. package/dist/services/document-service/repository.js.map +0 -1
  478. package/dist/services/document-service/repository.mjs +0 -278
  479. package/dist/services/document-service/repository.mjs.map +0 -1
  480. package/dist/services/document-service/transform/data.js +0 -15
  481. package/dist/services/document-service/transform/data.js.map +0 -1
  482. package/dist/services/document-service/transform/data.mjs +0 -15
  483. package/dist/services/document-service/transform/data.mjs.map +0 -1
  484. package/dist/services/document-service/transform/fields.js +0 -24
  485. package/dist/services/document-service/transform/fields.js.map +0 -1
  486. package/dist/services/document-service/transform/fields.mjs +0 -24
  487. package/dist/services/document-service/transform/fields.mjs.map +0 -1
  488. package/dist/services/document-service/transform/id-map.js +0 -78
  489. package/dist/services/document-service/transform/id-map.js.map +0 -1
  490. package/dist/services/document-service/transform/id-map.mjs +0 -78
  491. package/dist/services/document-service/transform/id-map.mjs.map +0 -1
  492. package/dist/services/document-service/transform/id-transform.js +0 -33
  493. package/dist/services/document-service/transform/id-transform.js.map +0 -1
  494. package/dist/services/document-service/transform/id-transform.mjs +0 -33
  495. package/dist/services/document-service/transform/id-transform.mjs.map +0 -1
  496. package/dist/services/document-service/transform/populate.js +0 -21
  497. package/dist/services/document-service/transform/populate.js.map +0 -1
  498. package/dist/services/document-service/transform/populate.mjs +0 -21
  499. package/dist/services/document-service/transform/populate.mjs.map +0 -1
  500. package/dist/services/document-service/transform/query.js +0 -9
  501. package/dist/services/document-service/transform/query.js.map +0 -1
  502. package/dist/services/document-service/transform/query.mjs +0 -9
  503. package/dist/services/document-service/transform/query.mjs.map +0 -1
  504. package/dist/services/document-service/transform/relations/extract/data-ids.js +0 -57
  505. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +0 -1
  506. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +0 -57
  507. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +0 -1
  508. package/dist/services/document-service/transform/relations/transform/data-ids.js +0 -76
  509. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +0 -1
  510. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +0 -76
  511. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +0 -1
  512. package/dist/services/document-service/transform/relations/transform/default-locale.js +0 -32
  513. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +0 -1
  514. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +0 -32
  515. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +0 -1
  516. package/dist/services/document-service/transform/relations/utils/dp.js +0 -30
  517. package/dist/services/document-service/transform/relations/utils/dp.js.map +0 -1
  518. package/dist/services/document-service/transform/relations/utils/dp.mjs +0 -30
  519. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +0 -1
  520. package/dist/services/document-service/transform/relations/utils/i18n.js +0 -25
  521. package/dist/services/document-service/transform/relations/utils/i18n.js.map +0 -1
  522. package/dist/services/document-service/transform/relations/utils/i18n.mjs +0 -25
  523. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +0 -1
  524. package/dist/services/document-service/transform/relations/utils/map-relation.js +0 -91
  525. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +0 -1
  526. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +0 -91
  527. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +0 -1
  528. package/dist/services/document-service/utils/populate.js +0 -41
  529. package/dist/services/document-service/utils/populate.js.map +0 -1
  530. package/dist/services/document-service/utils/populate.mjs +0 -41
  531. package/dist/services/document-service/utils/populate.mjs.map +0 -1
  532. package/dist/services/entity-service/index.js +0 -169
  533. package/dist/services/entity-service/index.js.map +0 -1
  534. package/dist/services/entity-service/index.mjs +0 -167
  535. package/dist/services/entity-service/index.mjs.map +0 -1
  536. package/dist/services/entity-validator/blocks-validator.js +0 -127
  537. package/dist/services/entity-validator/blocks-validator.js.map +0 -1
  538. package/dist/services/entity-validator/blocks-validator.mjs +0 -128
  539. package/dist/services/entity-validator/blocks-validator.mjs.map +0 -1
  540. package/dist/services/entity-validator/index.js +0 -333
  541. package/dist/services/entity-validator/index.js.map +0 -1
  542. package/dist/services/entity-validator/index.mjs +0 -332
  543. package/dist/services/entity-validator/index.mjs.map +0 -1
  544. package/dist/services/entity-validator/validators.js +0 -126
  545. package/dist/services/entity-validator/validators.js.map +0 -1
  546. package/dist/services/entity-validator/validators.mjs +0 -124
  547. package/dist/services/entity-validator/validators.mjs.map +0 -1
  548. package/dist/services/errors.js +0 -76
  549. package/dist/services/errors.js.map +0 -1
  550. package/dist/services/errors.mjs +0 -74
  551. package/dist/services/errors.mjs.map +0 -1
  552. package/dist/services/event-hub.js +0 -72
  553. package/dist/services/event-hub.js.map +0 -1
  554. package/dist/services/event-hub.mjs +0 -73
  555. package/dist/services/event-hub.mjs.map +0 -1
  556. package/dist/services/features.js +0 -17
  557. package/dist/services/features.js.map +0 -1
  558. package/dist/services/features.mjs +0 -17
  559. package/dist/services/features.mjs.map +0 -1
  560. package/dist/services/fs.js +0 -51
  561. package/dist/services/fs.js.map +0 -1
  562. package/dist/services/fs.mjs +0 -49
  563. package/dist/services/fs.mjs.map +0 -1
  564. package/dist/services/metrics/admin-user-hash.js +0 -14
  565. package/dist/services/metrics/admin-user-hash.js.map +0 -1
  566. package/dist/services/metrics/admin-user-hash.mjs +0 -12
  567. package/dist/services/metrics/admin-user-hash.mjs.map +0 -1
  568. package/dist/services/metrics/index.js +0 -45
  569. package/dist/services/metrics/index.js.map +0 -1
  570. package/dist/services/metrics/index.mjs +0 -46
  571. package/dist/services/metrics/index.mjs.map +0 -1
  572. package/dist/services/metrics/is-truthy.js +0 -9
  573. package/dist/services/metrics/is-truthy.js.map +0 -1
  574. package/dist/services/metrics/is-truthy.mjs +0 -8
  575. package/dist/services/metrics/is-truthy.mjs.map +0 -1
  576. package/dist/services/metrics/middleware.js +0 -25
  577. package/dist/services/metrics/middleware.js.map +0 -1
  578. package/dist/services/metrics/middleware.mjs +0 -26
  579. package/dist/services/metrics/middleware.mjs.map +0 -1
  580. package/dist/services/metrics/rate-limiter.js +0 -21
  581. package/dist/services/metrics/rate-limiter.js.map +0 -1
  582. package/dist/services/metrics/rate-limiter.mjs +0 -22
  583. package/dist/services/metrics/rate-limiter.mjs.map +0 -1
  584. package/dist/services/metrics/sender.js +0 -76
  585. package/dist/services/metrics/sender.js.map +0 -1
  586. package/dist/services/metrics/sender.mjs +0 -70
  587. package/dist/services/metrics/sender.mjs.map +0 -1
  588. package/dist/services/query-params.js +0 -12
  589. package/dist/services/query-params.js.map +0 -1
  590. package/dist/services/query-params.mjs +0 -13
  591. package/dist/services/query-params.mjs.map +0 -1
  592. package/dist/services/reloader.js +0 -36
  593. package/dist/services/reloader.js.map +0 -1
  594. package/dist/services/reloader.mjs +0 -36
  595. package/dist/services/reloader.mjs.map +0 -1
  596. package/dist/services/request-context.js +0 -13
  597. package/dist/services/request-context.js.map +0 -1
  598. package/dist/services/request-context.mjs +0 -14
  599. package/dist/services/request-context.mjs.map +0 -1
  600. package/dist/services/server/admin-api.js +0 -13
  601. package/dist/services/server/admin-api.js.map +0 -1
  602. package/dist/services/server/admin-api.mjs +0 -13
  603. package/dist/services/server/admin-api.mjs.map +0 -1
  604. package/dist/services/server/api.js +0 -30
  605. package/dist/services/server/api.js.map +0 -1
  606. package/dist/services/server/api.mjs +0 -28
  607. package/dist/services/server/api.mjs.map +0 -1
  608. package/dist/services/server/compose-endpoint.js +0 -117
  609. package/dist/services/server/compose-endpoint.js.map +0 -1
  610. package/dist/services/server/compose-endpoint.mjs +0 -116
  611. package/dist/services/server/compose-endpoint.mjs.map +0 -1
  612. package/dist/services/server/content-api.js +0 -12
  613. package/dist/services/server/content-api.js.map +0 -1
  614. package/dist/services/server/content-api.mjs +0 -12
  615. package/dist/services/server/content-api.mjs.map +0 -1
  616. package/dist/services/server/http-server.js +0 -50
  617. package/dist/services/server/http-server.js.map +0 -1
  618. package/dist/services/server/http-server.mjs +0 -48
  619. package/dist/services/server/http-server.mjs.map +0 -1
  620. package/dist/services/server/index.js +0 -87
  621. package/dist/services/server/index.js.map +0 -1
  622. package/dist/services/server/index.mjs +0 -85
  623. package/dist/services/server/index.mjs.map +0 -1
  624. package/dist/services/server/koa.js +0 -52
  625. package/dist/services/server/koa.js.map +0 -1
  626. package/dist/services/server/koa.mjs +0 -48
  627. package/dist/services/server/koa.mjs.map +0 -1
  628. package/dist/services/server/middleware.js +0 -92
  629. package/dist/services/server/middleware.js.map +0 -1
  630. package/dist/services/server/middleware.mjs +0 -90
  631. package/dist/services/server/middleware.mjs.map +0 -1
  632. package/dist/services/server/policy.js +0 -20
  633. package/dist/services/server/policy.js.map +0 -1
  634. package/dist/services/server/policy.mjs +0 -20
  635. package/dist/services/server/policy.mjs.map +0 -1
  636. package/dist/services/server/register-middlewares.js +0 -72
  637. package/dist/services/server/register-middlewares.js.map +0 -1
  638. package/dist/services/server/register-middlewares.mjs +0 -73
  639. package/dist/services/server/register-middlewares.mjs.map +0 -1
  640. package/dist/services/server/register-routes.js +0 -76
  641. package/dist/services/server/register-routes.js.map +0 -1
  642. package/dist/services/server/register-routes.mjs +0 -75
  643. package/dist/services/server/register-routes.mjs.map +0 -1
  644. package/dist/services/server/routing.js +0 -91
  645. package/dist/services/server/routing.js.map +0 -1
  646. package/dist/services/server/routing.mjs +0 -89
  647. package/dist/services/server/routing.mjs.map +0 -1
  648. package/dist/services/utils/dynamic-zones.js +0 -17
  649. package/dist/services/utils/dynamic-zones.js.map +0 -1
  650. package/dist/services/utils/dynamic-zones.mjs +0 -18
  651. package/dist/services/utils/dynamic-zones.mjs.map +0 -1
  652. package/dist/services/webhook-runner.js +0 -133
  653. package/dist/services/webhook-runner.js.map +0 -1
  654. package/dist/services/webhook-runner.mjs +0 -131
  655. package/dist/services/webhook-runner.mjs.map +0 -1
  656. package/dist/services/webhook-store.js +0 -110
  657. package/dist/services/webhook-store.js.map +0 -1
  658. package/dist/services/webhook-store.mjs +0 -110
  659. package/dist/services/webhook-store.mjs.map +0 -1
  660. package/dist/services/worker-queue.js +0 -56
  661. package/dist/services/worker-queue.js.map +0 -1
  662. package/dist/services/worker-queue.mjs +0 -55
  663. package/dist/services/worker-queue.mjs.map +0 -1
  664. package/dist/utils/convert-custom-field-type.js +0 -24
  665. package/dist/utils/convert-custom-field-type.js.map +0 -1
  666. package/dist/utils/convert-custom-field-type.mjs +0 -24
  667. package/dist/utils/convert-custom-field-type.mjs.map +0 -1
  668. package/dist/utils/cron.js +0 -38
  669. package/dist/utils/cron.js.map +0 -1
  670. package/dist/utils/cron.mjs +0 -38
  671. package/dist/utils/cron.mjs.map +0 -1
  672. package/dist/utils/fetch.js +0 -20
  673. package/dist/utils/fetch.js.map +0 -1
  674. package/dist/utils/fetch.mjs +0 -20
  675. package/dist/utils/fetch.mjs.map +0 -1
  676. package/dist/utils/filepath-to-prop-path.js +0 -12
  677. package/dist/utils/filepath-to-prop-path.js.map +0 -1
  678. package/dist/utils/filepath-to-prop-path.mjs +0 -10
  679. package/dist/utils/filepath-to-prop-path.mjs.map +0 -1
  680. package/dist/utils/is-initialized.js +0 -16
  681. package/dist/utils/is-initialized.js.map +0 -1
  682. package/dist/utils/is-initialized.mjs +0 -16
  683. package/dist/utils/is-initialized.mjs.map +0 -1
  684. package/dist/utils/lifecycles.js +0 -9
  685. package/dist/utils/lifecycles.js.map +0 -1
  686. package/dist/utils/lifecycles.mjs +0 -9
  687. package/dist/utils/lifecycles.mjs.map +0 -1
  688. package/dist/utils/load-config-file.js +0 -45
  689. package/dist/utils/load-config-file.js.map +0 -1
  690. package/dist/utils/load-config-file.mjs +0 -42
  691. package/dist/utils/load-config-file.mjs.map +0 -1
  692. package/dist/utils/load-files.js +0 -39
  693. package/dist/utils/load-files.js.map +0 -1
  694. package/dist/utils/load-files.mjs +0 -35
  695. package/dist/utils/load-files.mjs.map +0 -1
  696. package/dist/utils/open-browser.js +0 -11
  697. package/dist/utils/open-browser.js.map +0 -1
  698. package/dist/utils/open-browser.mjs +0 -9
  699. package/dist/utils/open-browser.mjs.map +0 -1
  700. package/dist/utils/resolve-working-dirs.js +0 -13
  701. package/dist/utils/resolve-working-dirs.js.map +0 -1
  702. package/dist/utils/resolve-working-dirs.mjs +0 -11
  703. package/dist/utils/resolve-working-dirs.mjs.map +0 -1
  704. package/dist/utils/signals.js +0 -17
  705. package/dist/utils/signals.js.map +0 -1
  706. package/dist/utils/signals.mjs +0 -17
  707. package/dist/utils/signals.mjs.map +0 -1
  708. package/dist/utils/startup-logger.js +0 -81
  709. package/dist/utils/startup-logger.js.map +0 -1
  710. package/dist/utils/startup-logger.mjs +0 -77
  711. package/dist/utils/startup-logger.mjs.map +0 -1
  712. package/dist/utils/transform-content-types-to-models.js +0 -285
  713. package/dist/utils/transform-content-types-to-models.js.map +0 -1
  714. package/dist/utils/transform-content-types-to-models.mjs +0 -282
  715. package/dist/utils/transform-content-types-to-models.mjs.map +0 -1
  716. package/dist/utils/update-notifier/index.js +0 -85
  717. package/dist/utils/update-notifier/index.js.map +0 -1
  718. package/dist/utils/update-notifier/index.mjs +0 -78
  719. package/dist/utils/update-notifier/index.mjs.map +0 -1
@@ -1,285 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const cuid2 = require("@paralleldrive/cuid2");
4
- const assert = require("node:assert");
5
- const _ = require("lodash/fp");
6
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
7
- const assert__default = /* @__PURE__ */ _interopDefault(assert);
8
- const ___default = /* @__PURE__ */ _interopDefault(_);
9
- const getComponentJoinTableName = (collectionName, identifiers) => {
10
- return identifiers.getNameFromTokens([
11
- { name: collectionName, compressible: true },
12
- { name: "components", shortName: "cmps", compressible: false }
13
- ]);
14
- };
15
- const getDzJoinTableName = (collectionName, identifiers) => {
16
- return identifiers.getNameFromTokens([
17
- { name: collectionName, compressible: true },
18
- { name: "components", shortName: "cmps", compressible: false }
19
- ]);
20
- };
21
- const getComponentJoinColumnEntityName = (identifiers) => {
22
- return identifiers.getNameFromTokens([
23
- { name: "entity", compressible: false },
24
- { name: "id", compressible: false }
25
- ]);
26
- };
27
- const getComponentJoinColumnInverseName = (identifiers) => {
28
- return identifiers.getNameFromTokens([
29
- { name: "component", shortName: "cmp", compressible: false },
30
- { name: "id", compressible: false }
31
- ]);
32
- };
33
- const getComponentTypeColumn = (identifiers) => {
34
- return identifiers.getNameFromTokens([{ name: "component_type", compressible: false }]);
35
- };
36
- const getComponentFkIndexName = (contentType, identifiers) => {
37
- return identifiers.getNameFromTokens([
38
- { name: contentType, compressible: true },
39
- { name: "entity", compressible: false },
40
- { name: "fk", compressible: false }
41
- ]);
42
- };
43
- const transformAttribute = (name, attribute, contentType, identifiers) => {
44
- switch (attribute.type) {
45
- case "media": {
46
- return {
47
- type: "relation",
48
- relation: attribute.multiple === true ? "morphMany" : "morphOne",
49
- target: "plugin::upload.file",
50
- morphBy: "related"
51
- };
52
- }
53
- case "component": {
54
- const joinTableName = getComponentJoinTableName(contentType.collectionName, identifiers);
55
- const joinColumnEntityName = getComponentJoinColumnEntityName(identifiers);
56
- const joinColumnInverseName = getComponentJoinColumnInverseName(identifiers);
57
- const compTypeColumn = getComponentTypeColumn(identifiers);
58
- return {
59
- type: "relation",
60
- relation: attribute.repeatable === true ? "oneToMany" : "oneToOne",
61
- target: attribute.component,
62
- // We need the join table name to be deterministic,
63
- // We need to allow passing the join table name as an option
64
- joinTable: {
65
- name: joinTableName,
66
- joinColumn: {
67
- name: joinColumnEntityName,
68
- referencedColumn: identifiers.ID_COLUMN
69
- },
70
- inverseJoinColumn: {
71
- name: joinColumnInverseName,
72
- referencedColumn: identifiers.ID_COLUMN
73
- },
74
- on: {
75
- field: name
76
- },
77
- orderColumnName: identifiers.ORDER_COLUMN,
78
- orderBy: {
79
- order: "asc"
80
- },
81
- pivotColumns: [
82
- joinColumnEntityName,
83
- joinColumnInverseName,
84
- identifiers.FIELD_COLUMN,
85
- compTypeColumn
86
- ]
87
- }
88
- };
89
- }
90
- case "dynamiczone": {
91
- const joinTableName = getDzJoinTableName(contentType.collectionName, identifiers);
92
- const joinColumnEntityName = getComponentJoinColumnEntityName(identifiers);
93
- const joinColumnInverseName = getComponentJoinColumnInverseName(identifiers);
94
- const compTypeColumn = getComponentTypeColumn(identifiers);
95
- return {
96
- type: "relation",
97
- relation: "morphToMany",
98
- // TODO: handle restrictions at some point
99
- // target: attribute.components,
100
- joinTable: {
101
- name: joinTableName,
102
- joinColumn: {
103
- name: joinColumnEntityName,
104
- referencedColumn: identifiers.ID_COLUMN
105
- },
106
- morphColumn: {
107
- idColumn: {
108
- name: joinColumnInverseName,
109
- referencedColumn: identifiers.ID_COLUMN
110
- },
111
- typeColumn: {
112
- name: compTypeColumn
113
- },
114
- typeField: "__component"
115
- },
116
- on: {
117
- field: name
118
- },
119
- orderBy: {
120
- order: "asc"
121
- },
122
- pivotColumns: [
123
- joinColumnEntityName,
124
- joinColumnInverseName,
125
- identifiers.FIELD_COLUMN,
126
- compTypeColumn
127
- ]
128
- }
129
- };
130
- }
131
- default: {
132
- return attribute;
133
- }
134
- }
135
- };
136
- const transformAttributes = (contentType, identifiers) => {
137
- return Object.keys(contentType.attributes || {}).reduce((attrs, attrName) => {
138
- return {
139
- ...attrs,
140
- [attrName]: transformAttribute(
141
- attrName,
142
- contentType.attributes[attrName],
143
- contentType,
144
- identifiers
145
- )
146
- };
147
- }, {});
148
- };
149
- const hasComponentsOrDz = (contentType) => {
150
- return Object.values(contentType.attributes || {}).some(
151
- ({ type }) => type === "dynamiczone" || type === "component"
152
- );
153
- };
154
- const createDocumentId = cuid2.createId;
155
- const createCompoLinkModel = (contentType, identifiers) => {
156
- const name = getComponentJoinTableName(contentType.collectionName, identifiers);
157
- const entityId = getComponentJoinColumnEntityName(identifiers);
158
- const componentId = getComponentJoinColumnInverseName(identifiers);
159
- const compTypeColumn = getComponentTypeColumn(identifiers);
160
- const fkIndex = getComponentFkIndexName(contentType.collectionName, identifiers);
161
- return {
162
- // TODO: make sure there can't be any conflicts with a prefix
163
- singularName: name,
164
- uid: name,
165
- tableName: name,
166
- attributes: {
167
- [identifiers.ID_COLUMN]: {
168
- type: "increments"
169
- },
170
- [entityId]: {
171
- type: "integer",
172
- column: {
173
- unsigned: true
174
- }
175
- },
176
- [componentId]: {
177
- type: "integer",
178
- column: {
179
- unsigned: true
180
- }
181
- },
182
- [compTypeColumn]: {
183
- type: "string"
184
- },
185
- [identifiers.FIELD_COLUMN]: {
186
- type: "string"
187
- },
188
- [identifiers.ORDER_COLUMN]: {
189
- type: "float",
190
- column: {
191
- unsigned: true,
192
- defaultTo: null
193
- }
194
- }
195
- },
196
- indexes: [
197
- {
198
- name: identifiers.getIndexName([contentType.collectionName, identifiers.FIELD_COLUMN]),
199
- columns: [identifiers.FIELD_COLUMN]
200
- },
201
- {
202
- name: identifiers.getIndexName([contentType.collectionName, compTypeColumn]),
203
- columns: [compTypeColumn]
204
- },
205
- {
206
- name: fkIndex,
207
- columns: [entityId]
208
- },
209
- {
210
- // NOTE: since we don't include attribute names, we need to be careful not to create another unique index
211
- name: identifiers.getUniqueIndexName([contentType.collectionName]),
212
- columns: [entityId, componentId, identifiers.FIELD_COLUMN, compTypeColumn],
213
- type: "unique"
214
- }
215
- ],
216
- foreignKeys: [
217
- {
218
- name: fkIndex,
219
- columns: [entityId],
220
- referencedColumns: [identifiers.ID_COLUMN],
221
- referencedTable: identifiers.getTableName(contentType.collectionName),
222
- onDelete: "CASCADE"
223
- }
224
- ]
225
- };
226
- };
227
- const transformContentTypesToModels = (contentTypes, identifiers) => {
228
- const models = [];
229
- contentTypes.forEach((contentType) => {
230
- assert__default.default(contentType.collectionName, 'Content type "collectionName" is required');
231
- assert__default.default(contentType.modelName, 'Content type "modelName" is required');
232
- assert__default.default(contentType.uid, 'Content type "uid" is required');
233
- const documentIdAttribute = contentType.modelType === "contentType" ? { documentId: { type: "string", default: createDocumentId } } : {};
234
- const reservedAttributeNames = ["document_id", identifiers.ID_COLUMN];
235
- Object.keys(contentType.attributes || {}).forEach((attributeName) => {
236
- const snakeCasedAttributeName = ___default.default.snakeCase(attributeName);
237
- if (reservedAttributeNames.includes(snakeCasedAttributeName)) {
238
- throw new Error(
239
- `The attribute "${attributeName}" is reserved and cannot be used in a model. Please rename "${contentType.modelName}" attribute "${attributeName}" to something else.`
240
- );
241
- }
242
- });
243
- if (hasComponentsOrDz(contentType)) {
244
- const compoLinkModel = createCompoLinkModel(contentType, identifiers);
245
- models.push(compoLinkModel);
246
- }
247
- const model = {
248
- uid: contentType.uid,
249
- singularName: contentType.modelName,
250
- tableName: contentType.collectionName,
251
- // This gets shortened in metadata.loadModels(), so we don't shorten here or it will happen twice
252
- attributes: {
253
- [identifiers.ID_COLUMN]: {
254
- type: "increments"
255
- },
256
- ...documentIdAttribute,
257
- ...transformAttributes(contentType, identifiers)
258
- }
259
- };
260
- if (contentType.modelType === "contentType") {
261
- model.indexes = [
262
- ...model.indexes || [],
263
- {
264
- name: identifiers.getIndexName([contentType.collectionName, "documents"]),
265
- // Filter attributes that are not in the schema
266
- columns: ["documentId", "locale", "publishedAt"].filter((n) => model.attributes[n]).map((name) => identifiers.getColumnName(___default.default.snakeCase(name)))
267
- }
268
- ];
269
- }
270
- models.push(model);
271
- });
272
- return models;
273
- };
274
- exports.createDocumentId = createDocumentId;
275
- exports.getComponentFkIndexName = getComponentFkIndexName;
276
- exports.getComponentJoinColumnEntityName = getComponentJoinColumnEntityName;
277
- exports.getComponentJoinColumnInverseName = getComponentJoinColumnInverseName;
278
- exports.getComponentJoinTableName = getComponentJoinTableName;
279
- exports.getComponentTypeColumn = getComponentTypeColumn;
280
- exports.getDzJoinTableName = getDzJoinTableName;
281
- exports.hasComponentsOrDz = hasComponentsOrDz;
282
- exports.transformAttribute = transformAttribute;
283
- exports.transformAttributes = transformAttributes;
284
- exports.transformContentTypesToModels = transformContentTypesToModels;
285
- //# sourceMappingURL=transform-content-types-to-models.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transform-content-types-to-models.js","sources":["../../src/utils/transform-content-types-to-models.ts"],"sourcesContent":["import { type Model, type Identifiers } from '@strapi/database';\nimport type { Struct, Schema } from '@strapi/types';\nimport { createId } from '@paralleldrive/cuid2';\nimport assert from 'node:assert';\nimport _ from 'lodash/fp';\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 * IMPORTANT!\n * If we use short versions of anything, we MUST call getNameFromTokens directly; attempting to shorten them ourselves\n * prevents the unshortened name map from being filled properly, so for example it will think that the short name\n * 'collection4f3a_cmps' maps to the unshortened 'collectionname_cmps' rather than 'collectionname_components'\n * Therefore, we only use the identifiers helpers in cases where we do not do any of our own shortening\n */\n\nexport const getComponentJoinTableName = (collectionName: string, identifiers: Identifiers) => {\n return identifiers.getNameFromTokens([\n { name: collectionName, compressible: true },\n { name: 'components', shortName: 'cmps', compressible: false },\n ]);\n};\n\nexport const getDzJoinTableName = (collectionName: string, identifiers: Identifiers) => {\n return identifiers.getNameFromTokens([\n { name: collectionName, compressible: true },\n { name: 'components', shortName: 'cmps', compressible: false },\n ]);\n};\n\nexport const getComponentJoinColumnEntityName = (identifiers: Identifiers) => {\n return identifiers.getNameFromTokens([\n { name: 'entity', compressible: false },\n { name: 'id', compressible: false },\n ]);\n};\n\nexport const getComponentJoinColumnInverseName = (identifiers: Identifiers) => {\n return identifiers.getNameFromTokens([\n { name: 'component', shortName: 'cmp', compressible: false },\n { name: 'id', compressible: false },\n ]);\n};\n\nexport const getComponentTypeColumn = (identifiers: Identifiers) => {\n return identifiers.getNameFromTokens([{ name: 'component_type', compressible: false }]);\n};\n\nexport const getComponentFkIndexName = (contentType: string, identifiers: Identifiers) => {\n return identifiers.getNameFromTokens([\n { name: contentType, compressible: true },\n { name: 'entity', compressible: false },\n { name: 'fk', compressible: false },\n ]);\n};\n\n// const { ID_COLUMN: id, FIELD_COLUMN: field, ORDER_COLUMN: order } = identifiers;\n\nexport type LoadedContentTypeModel = Struct.ContentTypeSchema &\n Required<Pick<Struct.ContentTypeSchema, '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: Schema.Attribute.AnyAttribute,\n contentType: LoadedContentTypeModel,\n identifiers: Identifiers\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, identifiers);\n const joinColumnEntityName = getComponentJoinColumnEntityName(identifiers);\n const joinColumnInverseName = getComponentJoinColumnInverseName(identifiers);\n const compTypeColumn = getComponentTypeColumn(identifiers);\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: identifiers.ID_COLUMN,\n },\n inverseJoinColumn: {\n name: joinColumnInverseName,\n referencedColumn: identifiers.ID_COLUMN,\n },\n on: {\n field: name,\n },\n orderColumnName: identifiers.ORDER_COLUMN,\n orderBy: {\n order: 'asc',\n },\n pivotColumns: [\n joinColumnEntityName,\n joinColumnInverseName,\n identifiers.FIELD_COLUMN,\n compTypeColumn,\n ],\n },\n };\n }\n case 'dynamiczone': {\n const joinTableName = getDzJoinTableName(contentType.collectionName, identifiers);\n const joinColumnEntityName = getComponentJoinColumnEntityName(identifiers);\n const joinColumnInverseName = getComponentJoinColumnInverseName(identifiers);\n const compTypeColumn = getComponentTypeColumn(identifiers);\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: identifiers.ID_COLUMN,\n },\n morphColumn: {\n idColumn: {\n name: joinColumnInverseName,\n referencedColumn: identifiers.ID_COLUMN,\n },\n typeColumn: {\n name: compTypeColumn,\n },\n typeField: '__component',\n },\n on: {\n field: name,\n },\n orderBy: {\n order: 'asc',\n },\n pivotColumns: [\n joinColumnEntityName,\n joinColumnInverseName,\n identifiers.FIELD_COLUMN,\n compTypeColumn,\n ],\n },\n };\n }\n default: {\n return attribute;\n }\n }\n};\n\nexport const transformAttributes = (\n contentType: LoadedContentTypeModel,\n identifiers: Identifiers\n) => {\n return Object.keys(contentType.attributes! || {}).reduce((attrs, attrName) => {\n return {\n ...attrs,\n [attrName]: transformAttribute(\n attrName,\n contentType.attributes[attrName]!,\n contentType,\n identifiers\n ),\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: string }) => type === 'dynamiczone' || type === 'component') as any\n );\n};\n\nexport const createDocumentId = createId;\n\nconst createCompoLinkModel = (\n contentType: LoadedContentTypeModel,\n identifiers: Identifiers\n): Model => {\n const name = getComponentJoinTableName(contentType.collectionName, identifiers);\n\n const entityId = getComponentJoinColumnEntityName(identifiers);\n const componentId = getComponentJoinColumnInverseName(identifiers);\n const compTypeColumn = getComponentTypeColumn(identifiers);\n const fkIndex = getComponentFkIndexName(contentType.collectionName, identifiers);\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 [identifiers.ID_COLUMN]: {\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 [compTypeColumn]: {\n type: 'string',\n },\n [identifiers.FIELD_COLUMN]: {\n type: 'string',\n },\n [identifiers.ORDER_COLUMN]: {\n type: 'float',\n column: {\n unsigned: true,\n defaultTo: null,\n },\n },\n },\n indexes: [\n {\n name: identifiers.getIndexName([contentType.collectionName, identifiers.FIELD_COLUMN]),\n columns: [identifiers.FIELD_COLUMN],\n },\n {\n name: identifiers.getIndexName([contentType.collectionName, compTypeColumn]),\n columns: [compTypeColumn],\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, identifiers.FIELD_COLUMN, compTypeColumn],\n type: 'unique',\n },\n ],\n foreignKeys: [\n {\n name: fkIndex,\n columns: [entityId],\n referencedColumns: [identifiers.ID_COLUMN],\n referencedTable: identifiers.getTableName(contentType.collectionName),\n onDelete: 'CASCADE',\n },\n ],\n };\n};\n\nexport const transformContentTypesToModels = (\n contentTypes: LoadedContentTypeModel[],\n identifiers: Identifiers\n): 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, Schema.Attribute.AnyAttribute> =\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', identifiers.ID_COLUMN];\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, identifiers);\n models.push(compoLinkModel);\n }\n\n const model: Model = {\n uid: contentType.uid,\n singularName: contentType.modelName,\n tableName: contentType.collectionName, // This gets shortened in metadata.loadModels(), so we don't shorten here or it will happen twice\n attributes: {\n [identifiers.ID_COLUMN]: {\n type: 'increments',\n },\n ...documentIdAttribute,\n ...transformAttributes(contentType, identifiers),\n },\n };\n\n // Add indexes to model\n if (contentType.modelType === 'contentType') {\n model.indexes = [\n ...(model.indexes || []),\n {\n name: identifiers.getIndexName([contentType.collectionName, 'documents']),\n // Filter attributes that are not in the schema\n columns: ['documentId', 'locale', 'publishedAt']\n .filter((n) => model.attributes[n])\n .map((name) => identifiers.getColumnName(_.snakeCase(name))),\n },\n ];\n }\n\n models.push(model);\n });\n\n return models;\n};\n"],"names":["createId","assert","_"],"mappings":";;;;;;;;AAmBa,MAAA,4BAA4B,CAAC,gBAAwB,gBAA6B;AAC7F,SAAO,YAAY,kBAAkB;AAAA,IACnC,EAAE,MAAM,gBAAgB,cAAc,KAAK;AAAA,IAC3C,EAAE,MAAM,cAAc,WAAW,QAAQ,cAAc,MAAM;AAAA,EAAA,CAC9D;AACH;AAEa,MAAA,qBAAqB,CAAC,gBAAwB,gBAA6B;AACtF,SAAO,YAAY,kBAAkB;AAAA,IACnC,EAAE,MAAM,gBAAgB,cAAc,KAAK;AAAA,IAC3C,EAAE,MAAM,cAAc,WAAW,QAAQ,cAAc,MAAM;AAAA,EAAA,CAC9D;AACH;AAEa,MAAA,mCAAmC,CAAC,gBAA6B;AAC5E,SAAO,YAAY,kBAAkB;AAAA,IACnC,EAAE,MAAM,UAAU,cAAc,MAAM;AAAA,IACtC,EAAE,MAAM,MAAM,cAAc,MAAM;AAAA,EAAA,CACnC;AACH;AAEa,MAAA,oCAAoC,CAAC,gBAA6B;AAC7E,SAAO,YAAY,kBAAkB;AAAA,IACnC,EAAE,MAAM,aAAa,WAAW,OAAO,cAAc,MAAM;AAAA,IAC3D,EAAE,MAAM,MAAM,cAAc,MAAM;AAAA,EAAA,CACnC;AACH;AAEa,MAAA,yBAAyB,CAAC,gBAA6B;AAC3D,SAAA,YAAY,kBAAkB,CAAC,EAAE,MAAM,kBAAkB,cAAc,MAAO,CAAA,CAAC;AACxF;AAEa,MAAA,0BAA0B,CAAC,aAAqB,gBAA6B;AACxF,SAAO,YAAY,kBAAkB;AAAA,IACnC,EAAE,MAAM,aAAa,cAAc,KAAK;AAAA,IACxC,EAAE,MAAM,UAAU,cAAc,MAAM;AAAA,IACtC,EAAE,MAAM,MAAM,cAAc,MAAM;AAAA,EAAA,CACnC;AACH;AAQO,MAAM,qBAAqB,CAChC,MACA,WACA,aACA,gBACG;AACH,UAAQ,UAAU,MAAM;AAAA,IACtB,KAAK,SAAS;AACL,aAAA;AAAA,QACL,MAAM;AAAA,QACN,UAAU,UAAU,aAAa,OAAO,cAAc;AAAA,QACtD,QAAQ;AAAA,QACR,SAAS;AAAA,MAAA;AAAA,IAEb;AAAA,IACA,KAAK,aAAa;AAChB,YAAM,gBAAgB,0BAA0B,YAAY,gBAAgB,WAAW;AACjF,YAAA,uBAAuB,iCAAiC,WAAW;AACnE,YAAA,wBAAwB,kCAAkC,WAAW;AACrE,YAAA,iBAAiB,uBAAuB,WAAW;AAClD,aAAA;AAAA,QACL,MAAM;AAAA,QACN,UAAU,UAAU,eAAe,OAAO,cAAc;AAAA,QACxD,QAAQ,UAAU;AAAA;AAAA;AAAA,QAIlB,WAAW;AAAA,UACT,MAAM;AAAA,UACN,YAAY;AAAA,YACV,MAAM;AAAA,YACN,kBAAkB,YAAY;AAAA,UAChC;AAAA,UACA,mBAAmB;AAAA,YACjB,MAAM;AAAA,YACN,kBAAkB,YAAY;AAAA,UAChC;AAAA,UACA,IAAI;AAAA,YACF,OAAO;AAAA,UACT;AAAA,UACA,iBAAiB,YAAY;AAAA,UAC7B,SAAS;AAAA,YACP,OAAO;AAAA,UACT;AAAA,UACA,cAAc;AAAA,YACZ;AAAA,YACA;AAAA,YACA,YAAY;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAAA,MAAA;AAAA,IAEJ;AAAA,IACA,KAAK,eAAe;AAClB,YAAM,gBAAgB,mBAAmB,YAAY,gBAAgB,WAAW;AAC1E,YAAA,uBAAuB,iCAAiC,WAAW;AACnE,YAAA,wBAAwB,kCAAkC,WAAW;AACrE,YAAA,iBAAiB,uBAAuB,WAAW;AAElD,aAAA;AAAA,QACL,MAAM;AAAA,QACN,UAAU;AAAA;AAAA;AAAA,QAGV,WAAW;AAAA,UACT,MAAM;AAAA,UACN,YAAY;AAAA,YACV,MAAM;AAAA,YACN,kBAAkB,YAAY;AAAA,UAChC;AAAA,UACA,aAAa;AAAA,YACX,UAAU;AAAA,cACR,MAAM;AAAA,cACN,kBAAkB,YAAY;AAAA,YAChC;AAAA,YACA,YAAY;AAAA,cACV,MAAM;AAAA,YACR;AAAA,YACA,WAAW;AAAA,UACb;AAAA,UACA,IAAI;AAAA,YACF,OAAO;AAAA,UACT;AAAA,UACA,SAAS;AAAA,YACP,OAAO;AAAA,UACT;AAAA,UACA,cAAc;AAAA,YACZ;AAAA,YACA;AAAA,YACA,YAAY;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAAA,MAAA;AAAA,IAEJ;AAAA,IACA,SAAS;AACA,aAAA;AAAA,IACT;AAAA,EACF;AACF;AAEa,MAAA,sBAAsB,CACjC,aACA,gBACG;AACI,SAAA,OAAO,KAAK,YAAY,cAAe,CAAE,CAAA,EAAE,OAAO,CAAC,OAAO,aAAa;AACrE,WAAA;AAAA,MACL,GAAG;AAAA,MACH,CAAC,QAAQ,GAAG;AAAA,QACV;AAAA,QACA,YAAY,WAAW,QAAQ;AAAA,QAC/B;AAAA,QACA;AAAA,MACF;AAAA,IAAA;AAAA,EAEJ,GAAG,CAAE,CAAA;AACP;AAEa,MAAA,oBAAoB,CAC/B,gBACkF;AAClF,SAAO,OAAO,OAAO,YAAY,cAAc,CAAA,CAAE,EAAE;AAAA,IAChD,CAAC,EAAE,KAA6B,MAAA,SAAS,iBAAiB,SAAS;AAAA,EAAA;AAExE;AAEO,MAAM,mBAAmBA,MAAA;AAEhC,MAAM,uBAAuB,CAC3B,aACA,gBACU;AACV,QAAM,OAAO,0BAA0B,YAAY,gBAAgB,WAAW;AAExE,QAAA,WAAW,iCAAiC,WAAW;AACvD,QAAA,cAAc,kCAAkC,WAAW;AAC3D,QAAA,iBAAiB,uBAAuB,WAAW;AACzD,QAAM,UAAU,wBAAwB,YAAY,gBAAgB,WAAW;AAExE,SAAA;AAAA;AAAA,IAEL,cAAc;AAAA,IACd,KAAK;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,MACV,CAAC,YAAY,SAAS,GAAG;AAAA,QACvB,MAAM;AAAA,MACR;AAAA,MACA,CAAC,QAAQ,GAAG;AAAA,QACV,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,MACA,CAAC,WAAW,GAAG;AAAA,QACb,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,MACA,CAAC,cAAc,GAAG;AAAA,QAChB,MAAM;AAAA,MACR;AAAA,MACA,CAAC,YAAY,YAAY,GAAG;AAAA,QAC1B,MAAM;AAAA,MACR;AAAA,MACA,CAAC,YAAY,YAAY,GAAG;AAAA,QAC1B,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,UAAU;AAAA,UACV,WAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP;AAAA,QACE,MAAM,YAAY,aAAa,CAAC,YAAY,gBAAgB,YAAY,YAAY,CAAC;AAAA,QACrF,SAAS,CAAC,YAAY,YAAY;AAAA,MACpC;AAAA,MACA;AAAA,QACE,MAAM,YAAY,aAAa,CAAC,YAAY,gBAAgB,cAAc,CAAC;AAAA,QAC3E,SAAS,CAAC,cAAc;AAAA,MAC1B;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,SAAS,CAAC,QAAQ;AAAA,MACpB;AAAA,MACA;AAAA;AAAA,QAEE,MAAM,YAAY,mBAAmB,CAAC,YAAY,cAAc,CAAC;AAAA,QACjE,SAAS,CAAC,UAAU,aAAa,YAAY,cAAc,cAAc;AAAA,QACzE,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX;AAAA,QACE,MAAM;AAAA,QACN,SAAS,CAAC,QAAQ;AAAA,QAClB,mBAAmB,CAAC,YAAY,SAAS;AAAA,QACzC,iBAAiB,YAAY,aAAa,YAAY,cAAc;AAAA,QACpE,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EAAA;AAEJ;AAEa,MAAA,gCAAgC,CAC3C,cACA,gBACY;AACZ,QAAM,SAAkB,CAAA;AAEX,eAAA,QAAQ,CAAC,gBAAgB;AAC7BC,oBAAAA,QAAA,YAAY,gBAAgB,2CAA2C;AACvEA,oBAAAA,QAAA,YAAY,WAAW,sCAAsC;AAC7DA,oBAAAA,QAAA,YAAY,KAAK,gCAAgC;AAIxD,UAAM,sBACJ,YAAY,cAAc,gBACtB,EAAE,YAAY,EAAE,MAAM,UAAU,SAAS,iBAAiB,EAAA,IAC1D,CAAA;AAIN,UAAM,yBAAyB,CAAC,eAAe,YAAY,SAAS;AAC7D,WAAA,KAAK,YAAY,cAAc,CAAA,CAAE,EAAE,QAAQ,CAAC,kBAAkB;AAC7D,YAAA,0BAA0BC,WAAAA,QAAE,UAAU,aAAa;AACrD,UAAA,uBAAuB,SAAS,uBAAuB,GAAG;AAC5D,cAAM,IAAI;AAAA,UACR,kBAAkB,aAAa,+DAA+D,YAAY,SAAS,gBAAgB,aAAa;AAAA,QAAA;AAAA,MAEpJ;AAAA,IAAA,CACD;AAEG,QAAA,kBAAkB,WAAW,GAAG;AAC5B,YAAA,iBAAiB,qBAAqB,aAAa,WAAW;AACpE,aAAO,KAAK,cAAc;AAAA,IAC5B;AAEA,UAAM,QAAe;AAAA,MACnB,KAAK,YAAY;AAAA,MACjB,cAAc,YAAY;AAAA,MAC1B,WAAW,YAAY;AAAA;AAAA,MACvB,YAAY;AAAA,QACV,CAAC,YAAY,SAAS,GAAG;AAAA,UACvB,MAAM;AAAA,QACR;AAAA,QACA,GAAG;AAAA,QACH,GAAG,oBAAoB,aAAa,WAAW;AAAA,MACjD;AAAA,IAAA;AAIE,QAAA,YAAY,cAAc,eAAe;AAC3C,YAAM,UAAU;AAAA,QACd,GAAI,MAAM,WAAW,CAAC;AAAA,QACtB;AAAA,UACE,MAAM,YAAY,aAAa,CAAC,YAAY,gBAAgB,WAAW,CAAC;AAAA;AAAA,UAExE,SAAS,CAAC,cAAc,UAAU,aAAa,EAC5C,OAAO,CAAC,MAAM,MAAM,WAAW,CAAC,CAAC,EACjC,IAAI,CAAC,SAAS,YAAY,cAAcA,mBAAE,UAAU,IAAI,CAAC,CAAC;AAAA,QAC/D;AAAA,MAAA;AAAA,IAEJ;AAEA,WAAO,KAAK,KAAK;AAAA,EAAA,CAClB;AAEM,SAAA;AACT;;;;;;;;;;;;"}
@@ -1,282 +0,0 @@
1
- import { createId } from "@paralleldrive/cuid2";
2
- import assert from "node:assert";
3
- import _ from "lodash/fp";
4
- const getComponentJoinTableName = (collectionName, identifiers) => {
5
- return identifiers.getNameFromTokens([
6
- { name: collectionName, compressible: true },
7
- { name: "components", shortName: "cmps", compressible: false }
8
- ]);
9
- };
10
- const getDzJoinTableName = (collectionName, identifiers) => {
11
- return identifiers.getNameFromTokens([
12
- { name: collectionName, compressible: true },
13
- { name: "components", shortName: "cmps", compressible: false }
14
- ]);
15
- };
16
- const getComponentJoinColumnEntityName = (identifiers) => {
17
- return identifiers.getNameFromTokens([
18
- { name: "entity", compressible: false },
19
- { name: "id", compressible: false }
20
- ]);
21
- };
22
- const getComponentJoinColumnInverseName = (identifiers) => {
23
- return identifiers.getNameFromTokens([
24
- { name: "component", shortName: "cmp", compressible: false },
25
- { name: "id", compressible: false }
26
- ]);
27
- };
28
- const getComponentTypeColumn = (identifiers) => {
29
- return identifiers.getNameFromTokens([{ name: "component_type", compressible: false }]);
30
- };
31
- const getComponentFkIndexName = (contentType, identifiers) => {
32
- return identifiers.getNameFromTokens([
33
- { name: contentType, compressible: true },
34
- { name: "entity", compressible: false },
35
- { name: "fk", compressible: false }
36
- ]);
37
- };
38
- const transformAttribute = (name, attribute, contentType, identifiers) => {
39
- switch (attribute.type) {
40
- case "media": {
41
- return {
42
- type: "relation",
43
- relation: attribute.multiple === true ? "morphMany" : "morphOne",
44
- target: "plugin::upload.file",
45
- morphBy: "related"
46
- };
47
- }
48
- case "component": {
49
- const joinTableName = getComponentJoinTableName(contentType.collectionName, identifiers);
50
- const joinColumnEntityName = getComponentJoinColumnEntityName(identifiers);
51
- const joinColumnInverseName = getComponentJoinColumnInverseName(identifiers);
52
- const compTypeColumn = getComponentTypeColumn(identifiers);
53
- return {
54
- type: "relation",
55
- relation: attribute.repeatable === true ? "oneToMany" : "oneToOne",
56
- target: attribute.component,
57
- // We need the join table name to be deterministic,
58
- // We need to allow passing the join table name as an option
59
- joinTable: {
60
- name: joinTableName,
61
- joinColumn: {
62
- name: joinColumnEntityName,
63
- referencedColumn: identifiers.ID_COLUMN
64
- },
65
- inverseJoinColumn: {
66
- name: joinColumnInverseName,
67
- referencedColumn: identifiers.ID_COLUMN
68
- },
69
- on: {
70
- field: name
71
- },
72
- orderColumnName: identifiers.ORDER_COLUMN,
73
- orderBy: {
74
- order: "asc"
75
- },
76
- pivotColumns: [
77
- joinColumnEntityName,
78
- joinColumnInverseName,
79
- identifiers.FIELD_COLUMN,
80
- compTypeColumn
81
- ]
82
- }
83
- };
84
- }
85
- case "dynamiczone": {
86
- const joinTableName = getDzJoinTableName(contentType.collectionName, identifiers);
87
- const joinColumnEntityName = getComponentJoinColumnEntityName(identifiers);
88
- const joinColumnInverseName = getComponentJoinColumnInverseName(identifiers);
89
- const compTypeColumn = getComponentTypeColumn(identifiers);
90
- return {
91
- type: "relation",
92
- relation: "morphToMany",
93
- // TODO: handle restrictions at some point
94
- // target: attribute.components,
95
- joinTable: {
96
- name: joinTableName,
97
- joinColumn: {
98
- name: joinColumnEntityName,
99
- referencedColumn: identifiers.ID_COLUMN
100
- },
101
- morphColumn: {
102
- idColumn: {
103
- name: joinColumnInverseName,
104
- referencedColumn: identifiers.ID_COLUMN
105
- },
106
- typeColumn: {
107
- name: compTypeColumn
108
- },
109
- typeField: "__component"
110
- },
111
- on: {
112
- field: name
113
- },
114
- orderBy: {
115
- order: "asc"
116
- },
117
- pivotColumns: [
118
- joinColumnEntityName,
119
- joinColumnInverseName,
120
- identifiers.FIELD_COLUMN,
121
- compTypeColumn
122
- ]
123
- }
124
- };
125
- }
126
- default: {
127
- return attribute;
128
- }
129
- }
130
- };
131
- const transformAttributes = (contentType, identifiers) => {
132
- return Object.keys(contentType.attributes || {}).reduce((attrs, attrName) => {
133
- return {
134
- ...attrs,
135
- [attrName]: transformAttribute(
136
- attrName,
137
- contentType.attributes[attrName],
138
- contentType,
139
- identifiers
140
- )
141
- };
142
- }, {});
143
- };
144
- const hasComponentsOrDz = (contentType) => {
145
- return Object.values(contentType.attributes || {}).some(
146
- ({ type }) => type === "dynamiczone" || type === "component"
147
- );
148
- };
149
- const createDocumentId = createId;
150
- const createCompoLinkModel = (contentType, identifiers) => {
151
- const name = getComponentJoinTableName(contentType.collectionName, identifiers);
152
- const entityId = getComponentJoinColumnEntityName(identifiers);
153
- const componentId = getComponentJoinColumnInverseName(identifiers);
154
- const compTypeColumn = getComponentTypeColumn(identifiers);
155
- const fkIndex = getComponentFkIndexName(contentType.collectionName, identifiers);
156
- return {
157
- // TODO: make sure there can't be any conflicts with a prefix
158
- singularName: name,
159
- uid: name,
160
- tableName: name,
161
- attributes: {
162
- [identifiers.ID_COLUMN]: {
163
- type: "increments"
164
- },
165
- [entityId]: {
166
- type: "integer",
167
- column: {
168
- unsigned: true
169
- }
170
- },
171
- [componentId]: {
172
- type: "integer",
173
- column: {
174
- unsigned: true
175
- }
176
- },
177
- [compTypeColumn]: {
178
- type: "string"
179
- },
180
- [identifiers.FIELD_COLUMN]: {
181
- type: "string"
182
- },
183
- [identifiers.ORDER_COLUMN]: {
184
- type: "float",
185
- column: {
186
- unsigned: true,
187
- defaultTo: null
188
- }
189
- }
190
- },
191
- indexes: [
192
- {
193
- name: identifiers.getIndexName([contentType.collectionName, identifiers.FIELD_COLUMN]),
194
- columns: [identifiers.FIELD_COLUMN]
195
- },
196
- {
197
- name: identifiers.getIndexName([contentType.collectionName, compTypeColumn]),
198
- columns: [compTypeColumn]
199
- },
200
- {
201
- name: fkIndex,
202
- columns: [entityId]
203
- },
204
- {
205
- // NOTE: since we don't include attribute names, we need to be careful not to create another unique index
206
- name: identifiers.getUniqueIndexName([contentType.collectionName]),
207
- columns: [entityId, componentId, identifiers.FIELD_COLUMN, compTypeColumn],
208
- type: "unique"
209
- }
210
- ],
211
- foreignKeys: [
212
- {
213
- name: fkIndex,
214
- columns: [entityId],
215
- referencedColumns: [identifiers.ID_COLUMN],
216
- referencedTable: identifiers.getTableName(contentType.collectionName),
217
- onDelete: "CASCADE"
218
- }
219
- ]
220
- };
221
- };
222
- const transformContentTypesToModels = (contentTypes, identifiers) => {
223
- const models = [];
224
- contentTypes.forEach((contentType) => {
225
- assert(contentType.collectionName, 'Content type "collectionName" is required');
226
- assert(contentType.modelName, 'Content type "modelName" is required');
227
- assert(contentType.uid, 'Content type "uid" is required');
228
- const documentIdAttribute = contentType.modelType === "contentType" ? { documentId: { type: "string", default: createDocumentId } } : {};
229
- const reservedAttributeNames = ["document_id", identifiers.ID_COLUMN];
230
- Object.keys(contentType.attributes || {}).forEach((attributeName) => {
231
- const snakeCasedAttributeName = _.snakeCase(attributeName);
232
- if (reservedAttributeNames.includes(snakeCasedAttributeName)) {
233
- throw new Error(
234
- `The attribute "${attributeName}" is reserved and cannot be used in a model. Please rename "${contentType.modelName}" attribute "${attributeName}" to something else.`
235
- );
236
- }
237
- });
238
- if (hasComponentsOrDz(contentType)) {
239
- const compoLinkModel = createCompoLinkModel(contentType, identifiers);
240
- models.push(compoLinkModel);
241
- }
242
- const model = {
243
- uid: contentType.uid,
244
- singularName: contentType.modelName,
245
- tableName: contentType.collectionName,
246
- // This gets shortened in metadata.loadModels(), so we don't shorten here or it will happen twice
247
- attributes: {
248
- [identifiers.ID_COLUMN]: {
249
- type: "increments"
250
- },
251
- ...documentIdAttribute,
252
- ...transformAttributes(contentType, identifiers)
253
- }
254
- };
255
- if (contentType.modelType === "contentType") {
256
- model.indexes = [
257
- ...model.indexes || [],
258
- {
259
- name: identifiers.getIndexName([contentType.collectionName, "documents"]),
260
- // Filter attributes that are not in the schema
261
- columns: ["documentId", "locale", "publishedAt"].filter((n) => model.attributes[n]).map((name) => identifiers.getColumnName(_.snakeCase(name)))
262
- }
263
- ];
264
- }
265
- models.push(model);
266
- });
267
- return models;
268
- };
269
- export {
270
- createDocumentId,
271
- getComponentFkIndexName,
272
- getComponentJoinColumnEntityName,
273
- getComponentJoinColumnInverseName,
274
- getComponentJoinTableName,
275
- getComponentTypeColumn,
276
- getDzJoinTableName,
277
- hasComponentsOrDz,
278
- transformAttribute,
279
- transformAttributes,
280
- transformContentTypesToModels
281
- };
282
- //# sourceMappingURL=transform-content-types-to-models.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transform-content-types-to-models.mjs","sources":["../../src/utils/transform-content-types-to-models.ts"],"sourcesContent":["import { type Model, type Identifiers } from '@strapi/database';\nimport type { Struct, Schema } from '@strapi/types';\nimport { createId } from '@paralleldrive/cuid2';\nimport assert from 'node:assert';\nimport _ from 'lodash/fp';\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 * IMPORTANT!\n * If we use short versions of anything, we MUST call getNameFromTokens directly; attempting to shorten them ourselves\n * prevents the unshortened name map from being filled properly, so for example it will think that the short name\n * 'collection4f3a_cmps' maps to the unshortened 'collectionname_cmps' rather than 'collectionname_components'\n * Therefore, we only use the identifiers helpers in cases where we do not do any of our own shortening\n */\n\nexport const getComponentJoinTableName = (collectionName: string, identifiers: Identifiers) => {\n return identifiers.getNameFromTokens([\n { name: collectionName, compressible: true },\n { name: 'components', shortName: 'cmps', compressible: false },\n ]);\n};\n\nexport const getDzJoinTableName = (collectionName: string, identifiers: Identifiers) => {\n return identifiers.getNameFromTokens([\n { name: collectionName, compressible: true },\n { name: 'components', shortName: 'cmps', compressible: false },\n ]);\n};\n\nexport const getComponentJoinColumnEntityName = (identifiers: Identifiers) => {\n return identifiers.getNameFromTokens([\n { name: 'entity', compressible: false },\n { name: 'id', compressible: false },\n ]);\n};\n\nexport const getComponentJoinColumnInverseName = (identifiers: Identifiers) => {\n return identifiers.getNameFromTokens([\n { name: 'component', shortName: 'cmp', compressible: false },\n { name: 'id', compressible: false },\n ]);\n};\n\nexport const getComponentTypeColumn = (identifiers: Identifiers) => {\n return identifiers.getNameFromTokens([{ name: 'component_type', compressible: false }]);\n};\n\nexport const getComponentFkIndexName = (contentType: string, identifiers: Identifiers) => {\n return identifiers.getNameFromTokens([\n { name: contentType, compressible: true },\n { name: 'entity', compressible: false },\n { name: 'fk', compressible: false },\n ]);\n};\n\n// const { ID_COLUMN: id, FIELD_COLUMN: field, ORDER_COLUMN: order } = identifiers;\n\nexport type LoadedContentTypeModel = Struct.ContentTypeSchema &\n Required<Pick<Struct.ContentTypeSchema, '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: Schema.Attribute.AnyAttribute,\n contentType: LoadedContentTypeModel,\n identifiers: Identifiers\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, identifiers);\n const joinColumnEntityName = getComponentJoinColumnEntityName(identifiers);\n const joinColumnInverseName = getComponentJoinColumnInverseName(identifiers);\n const compTypeColumn = getComponentTypeColumn(identifiers);\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: identifiers.ID_COLUMN,\n },\n inverseJoinColumn: {\n name: joinColumnInverseName,\n referencedColumn: identifiers.ID_COLUMN,\n },\n on: {\n field: name,\n },\n orderColumnName: identifiers.ORDER_COLUMN,\n orderBy: {\n order: 'asc',\n },\n pivotColumns: [\n joinColumnEntityName,\n joinColumnInverseName,\n identifiers.FIELD_COLUMN,\n compTypeColumn,\n ],\n },\n };\n }\n case 'dynamiczone': {\n const joinTableName = getDzJoinTableName(contentType.collectionName, identifiers);\n const joinColumnEntityName = getComponentJoinColumnEntityName(identifiers);\n const joinColumnInverseName = getComponentJoinColumnInverseName(identifiers);\n const compTypeColumn = getComponentTypeColumn(identifiers);\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: identifiers.ID_COLUMN,\n },\n morphColumn: {\n idColumn: {\n name: joinColumnInverseName,\n referencedColumn: identifiers.ID_COLUMN,\n },\n typeColumn: {\n name: compTypeColumn,\n },\n typeField: '__component',\n },\n on: {\n field: name,\n },\n orderBy: {\n order: 'asc',\n },\n pivotColumns: [\n joinColumnEntityName,\n joinColumnInverseName,\n identifiers.FIELD_COLUMN,\n compTypeColumn,\n ],\n },\n };\n }\n default: {\n return attribute;\n }\n }\n};\n\nexport const transformAttributes = (\n contentType: LoadedContentTypeModel,\n identifiers: Identifiers\n) => {\n return Object.keys(contentType.attributes! || {}).reduce((attrs, attrName) => {\n return {\n ...attrs,\n [attrName]: transformAttribute(\n attrName,\n contentType.attributes[attrName]!,\n contentType,\n identifiers\n ),\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: string }) => type === 'dynamiczone' || type === 'component') as any\n );\n};\n\nexport const createDocumentId = createId;\n\nconst createCompoLinkModel = (\n contentType: LoadedContentTypeModel,\n identifiers: Identifiers\n): Model => {\n const name = getComponentJoinTableName(contentType.collectionName, identifiers);\n\n const entityId = getComponentJoinColumnEntityName(identifiers);\n const componentId = getComponentJoinColumnInverseName(identifiers);\n const compTypeColumn = getComponentTypeColumn(identifiers);\n const fkIndex = getComponentFkIndexName(contentType.collectionName, identifiers);\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 [identifiers.ID_COLUMN]: {\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 [compTypeColumn]: {\n type: 'string',\n },\n [identifiers.FIELD_COLUMN]: {\n type: 'string',\n },\n [identifiers.ORDER_COLUMN]: {\n type: 'float',\n column: {\n unsigned: true,\n defaultTo: null,\n },\n },\n },\n indexes: [\n {\n name: identifiers.getIndexName([contentType.collectionName, identifiers.FIELD_COLUMN]),\n columns: [identifiers.FIELD_COLUMN],\n },\n {\n name: identifiers.getIndexName([contentType.collectionName, compTypeColumn]),\n columns: [compTypeColumn],\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, identifiers.FIELD_COLUMN, compTypeColumn],\n type: 'unique',\n },\n ],\n foreignKeys: [\n {\n name: fkIndex,\n columns: [entityId],\n referencedColumns: [identifiers.ID_COLUMN],\n referencedTable: identifiers.getTableName(contentType.collectionName),\n onDelete: 'CASCADE',\n },\n ],\n };\n};\n\nexport const transformContentTypesToModels = (\n contentTypes: LoadedContentTypeModel[],\n identifiers: Identifiers\n): 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, Schema.Attribute.AnyAttribute> =\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', identifiers.ID_COLUMN];\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, identifiers);\n models.push(compoLinkModel);\n }\n\n const model: Model = {\n uid: contentType.uid,\n singularName: contentType.modelName,\n tableName: contentType.collectionName, // This gets shortened in metadata.loadModels(), so we don't shorten here or it will happen twice\n attributes: {\n [identifiers.ID_COLUMN]: {\n type: 'increments',\n },\n ...documentIdAttribute,\n ...transformAttributes(contentType, identifiers),\n },\n };\n\n // Add indexes to model\n if (contentType.modelType === 'contentType') {\n model.indexes = [\n ...(model.indexes || []),\n {\n name: identifiers.getIndexName([contentType.collectionName, 'documents']),\n // Filter attributes that are not in the schema\n columns: ['documentId', 'locale', 'publishedAt']\n .filter((n) => model.attributes[n])\n .map((name) => identifiers.getColumnName(_.snakeCase(name))),\n },\n ];\n }\n\n models.push(model);\n });\n\n return models;\n};\n"],"names":[],"mappings":"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"}