@strapi/core 0.0.0-experimental.80cf2c74a2003f3c0602abc81888dd9f36dc68a3 → 0.0.0-experimental.826f263c58b6886b849d3f03b81f7a530bc51c91

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 (414) hide show
  1. package/dist/Strapi.d.ts +34 -45
  2. package/dist/Strapi.d.ts.map +1 -1
  3. package/dist/Strapi.js +142 -217
  4. package/dist/Strapi.js.map +1 -1
  5. package/dist/Strapi.mjs +132 -208
  6. package/dist/Strapi.mjs.map +1 -1
  7. package/dist/configuration/config-loader.d.ts.map +1 -1
  8. package/dist/configuration/config-loader.js +9 -5
  9. package/dist/configuration/config-loader.js.map +1 -1
  10. package/dist/configuration/config-loader.mjs +9 -5
  11. package/dist/configuration/config-loader.mjs.map +1 -1
  12. package/dist/configuration/get-dirs.d.ts +10 -0
  13. package/dist/configuration/get-dirs.d.ts.map +1 -0
  14. package/dist/{utils → configuration}/get-dirs.js +3 -2
  15. package/dist/configuration/get-dirs.js.map +1 -0
  16. package/dist/{utils → configuration}/get-dirs.mjs +3 -2
  17. package/dist/configuration/get-dirs.mjs.map +1 -0
  18. package/dist/configuration/index.d.ts +4 -7
  19. package/dist/configuration/index.d.ts.map +1 -1
  20. package/dist/configuration/index.js +6 -4
  21. package/dist/configuration/index.js.map +1 -1
  22. package/dist/configuration/index.mjs +5 -4
  23. package/dist/configuration/index.mjs.map +1 -1
  24. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  25. package/dist/core-api/controller/collection-type.js +3 -0
  26. package/dist/core-api/controller/collection-type.js.map +1 -1
  27. package/dist/core-api/controller/collection-type.mjs +3 -0
  28. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  29. package/dist/core-api/controller/index.js +5 -5
  30. package/dist/core-api/controller/index.js.map +1 -1
  31. package/dist/core-api/controller/index.mjs +6 -6
  32. package/dist/core-api/controller/index.mjs.map +1 -1
  33. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  34. package/dist/core-api/controller/single-type.js +1 -0
  35. package/dist/core-api/controller/single-type.js.map +1 -1
  36. package/dist/core-api/controller/single-type.mjs +1 -0
  37. package/dist/core-api/controller/single-type.mjs.map +1 -1
  38. package/dist/core-api/routes/index.d.ts.map +1 -1
  39. package/dist/core-api/service/collection-type.d.ts +5 -11
  40. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  41. package/dist/core-api/service/collection-type.js +18 -7
  42. package/dist/core-api/service/collection-type.js.map +1 -1
  43. package/dist/core-api/service/collection-type.mjs +19 -8
  44. package/dist/core-api/service/collection-type.mjs.map +1 -1
  45. package/dist/core-api/service/pagination.d.ts +4 -11
  46. package/dist/core-api/service/pagination.d.ts.map +1 -1
  47. package/dist/core-api/service/pagination.js +14 -40
  48. package/dist/core-api/service/pagination.js.map +1 -1
  49. package/dist/core-api/service/pagination.mjs +16 -42
  50. package/dist/core-api/service/pagination.mjs.map +1 -1
  51. package/dist/core-api/service/single-type.d.ts.map +1 -1
  52. package/dist/core-api/service/single-type.js +9 -2
  53. package/dist/core-api/service/single-type.js.map +1 -1
  54. package/dist/core-api/service/single-type.mjs +9 -2
  55. package/dist/core-api/service/single-type.mjs.map +1 -1
  56. package/dist/ee/index.d.ts +2 -0
  57. package/dist/ee/index.d.ts.map +1 -1
  58. package/dist/ee/index.js.map +1 -1
  59. package/dist/ee/index.mjs.map +1 -1
  60. package/dist/ee/license.d.ts.map +1 -1
  61. package/dist/ee/license.js +2 -1
  62. package/dist/ee/license.js.map +1 -1
  63. package/dist/ee/license.mjs +2 -1
  64. package/dist/ee/license.mjs.map +1 -1
  65. package/dist/factories.d.ts +2 -2
  66. package/dist/factories.d.ts.map +1 -1
  67. package/dist/factories.js.map +1 -1
  68. package/dist/factories.mjs.map +1 -1
  69. package/dist/index.d.ts +4 -2
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +25 -1
  72. package/dist/index.js.map +1 -1
  73. package/dist/index.mjs +27 -3
  74. package/dist/index.mjs.map +1 -1
  75. package/dist/loaders/admin.js +0 -1
  76. package/dist/loaders/admin.js.map +1 -1
  77. package/dist/loaders/admin.mjs +0 -1
  78. package/dist/loaders/admin.mjs.map +1 -1
  79. package/dist/loaders/apis.d.ts.map +1 -1
  80. package/dist/loaders/apis.js +10 -10
  81. package/dist/loaders/apis.js.map +1 -1
  82. package/dist/loaders/apis.mjs +10 -10
  83. package/dist/loaders/apis.mjs.map +1 -1
  84. package/dist/loaders/index.d.ts.map +1 -1
  85. package/dist/loaders/index.js +0 -2
  86. package/dist/loaders/index.js.map +1 -1
  87. package/dist/loaders/index.mjs +0 -2
  88. package/dist/loaders/index.mjs.map +1 -1
  89. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  90. package/dist/loaders/plugins/get-enabled-plugins.js +7 -6
  91. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  92. package/dist/loaders/plugins/get-enabled-plugins.mjs +7 -6
  93. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  94. package/dist/middlewares/body.d.ts +2 -2
  95. package/dist/middlewares/body.d.ts.map +1 -1
  96. package/dist/middlewares/body.js +4 -4
  97. package/dist/middlewares/body.js.map +1 -1
  98. package/dist/middlewares/body.mjs +4 -4
  99. package/dist/middlewares/body.mjs.map +1 -1
  100. package/dist/middlewares/public.js +1 -1
  101. package/dist/middlewares/public.js.map +1 -1
  102. package/dist/middlewares/public.mjs +1 -1
  103. package/dist/middlewares/public.mjs.map +1 -1
  104. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +30 -0
  105. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -0
  106. package/dist/migrations/database/5.0.0-discard-drafts.js +50 -0
  107. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -0
  108. package/dist/migrations/database/5.0.0-discard-drafts.mjs +50 -0
  109. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -0
  110. package/dist/migrations/draft-publish.d.ts.map +1 -1
  111. package/dist/migrations/draft-publish.js +14 -31
  112. package/dist/migrations/draft-publish.js.map +1 -1
  113. package/dist/migrations/draft-publish.mjs +15 -32
  114. package/dist/migrations/draft-publish.mjs.map +1 -1
  115. package/dist/providers/admin.d.ts +3 -0
  116. package/dist/providers/admin.d.ts.map +1 -0
  117. package/dist/providers/admin.js +20 -0
  118. package/dist/providers/admin.js.map +1 -0
  119. package/dist/providers/admin.mjs +21 -0
  120. package/dist/providers/admin.mjs.map +1 -0
  121. package/dist/providers/coreStore.d.ts +3 -0
  122. package/dist/providers/coreStore.d.ts.map +1 -0
  123. package/dist/providers/coreStore.js +11 -0
  124. package/dist/providers/coreStore.js.map +1 -0
  125. package/dist/providers/coreStore.mjs +12 -0
  126. package/dist/providers/coreStore.mjs.map +1 -0
  127. package/dist/providers/cron.d.ts +3 -0
  128. package/dist/providers/cron.d.ts.map +1 -0
  129. package/dist/providers/cron.js +20 -0
  130. package/dist/providers/cron.js.map +1 -0
  131. package/dist/providers/cron.mjs +21 -0
  132. package/dist/providers/cron.mjs.map +1 -0
  133. package/dist/providers/index.d.ts +3 -0
  134. package/dist/providers/index.d.ts.map +1 -0
  135. package/dist/providers/index.js +11 -0
  136. package/dist/providers/index.js.map +1 -0
  137. package/dist/providers/index.mjs +11 -0
  138. package/dist/providers/index.mjs.map +1 -0
  139. package/dist/providers/provider.d.ts +9 -0
  140. package/dist/providers/provider.d.ts.map +1 -0
  141. package/dist/providers/provider.js +5 -0
  142. package/dist/providers/provider.js.map +1 -0
  143. package/dist/providers/provider.mjs +5 -0
  144. package/dist/providers/provider.mjs.map +1 -0
  145. package/dist/providers/registries.d.ts +3 -0
  146. package/dist/providers/registries.d.ts.map +1 -0
  147. package/dist/providers/registries.js +35 -0
  148. package/dist/providers/registries.js.map +1 -0
  149. package/dist/providers/registries.mjs +36 -0
  150. package/dist/providers/registries.mjs.map +1 -0
  151. package/dist/providers/telemetry.d.ts +3 -0
  152. package/dist/providers/telemetry.d.ts.map +1 -0
  153. package/dist/providers/telemetry.js +19 -0
  154. package/dist/providers/telemetry.js.map +1 -0
  155. package/dist/providers/telemetry.mjs +20 -0
  156. package/dist/providers/telemetry.mjs.map +1 -0
  157. package/dist/providers/webhooks.d.ts +3 -0
  158. package/dist/providers/webhooks.d.ts.map +1 -0
  159. package/dist/providers/webhooks.js +30 -0
  160. package/dist/providers/webhooks.js.map +1 -0
  161. package/dist/providers/webhooks.mjs +31 -0
  162. package/dist/providers/webhooks.mjs.map +1 -0
  163. package/dist/registries/index.d.ts +0 -1
  164. package/dist/registries/index.d.ts.map +1 -1
  165. package/dist/registries/policies.d.ts +22 -10
  166. package/dist/registries/policies.d.ts.map +1 -1
  167. package/dist/registries/policies.js +64 -18
  168. package/dist/registries/policies.js.map +1 -1
  169. package/dist/registries/policies.mjs +65 -19
  170. package/dist/registries/policies.mjs.map +1 -1
  171. package/dist/services/config.d.ts +3 -0
  172. package/dist/services/config.d.ts.map +1 -0
  173. package/dist/{registries → services}/config.js +11 -7
  174. package/dist/services/config.js.map +1 -0
  175. package/dist/{registries → services}/config.mjs +10 -7
  176. package/dist/services/config.mjs.map +1 -0
  177. package/dist/services/content-api/index.d.ts +18 -0
  178. package/dist/services/content-api/index.d.ts.map +1 -1
  179. package/dist/services/content-api/index.js +28 -2
  180. package/dist/services/content-api/index.js.map +1 -1
  181. package/dist/services/content-api/index.mjs +28 -2
  182. package/dist/services/content-api/index.mjs.map +1 -1
  183. package/dist/services/content-api/permissions/index.js +1 -1
  184. package/dist/services/content-api/permissions/index.js.map +1 -1
  185. package/dist/services/content-api/permissions/index.mjs +1 -1
  186. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  187. package/dist/services/core-store.d.ts.map +1 -1
  188. package/dist/services/document-service/attributes/index.d.ts +6 -0
  189. package/dist/services/document-service/attributes/index.d.ts.map +1 -0
  190. package/dist/services/{entity-service → document-service}/attributes/index.js +5 -5
  191. package/dist/services/document-service/attributes/index.js.map +1 -0
  192. package/dist/services/{entity-service → document-service}/attributes/index.mjs +5 -5
  193. package/dist/services/document-service/attributes/index.mjs.map +1 -0
  194. package/dist/services/document-service/attributes/transforms.d.ts.map +1 -0
  195. package/dist/services/document-service/attributes/transforms.js.map +1 -0
  196. package/dist/services/document-service/attributes/transforms.mjs.map +1 -0
  197. package/dist/services/document-service/common.d.ts +1 -1
  198. package/dist/services/document-service/common.d.ts.map +1 -1
  199. package/dist/services/document-service/common.js.map +1 -1
  200. package/dist/services/document-service/common.mjs.map +1 -1
  201. package/dist/services/document-service/components.d.ts +25 -1
  202. package/dist/services/document-service/components.d.ts.map +1 -1
  203. package/dist/services/{entity-service → document-service}/components.js +35 -45
  204. package/dist/services/document-service/components.js.map +1 -0
  205. package/dist/services/{entity-service → document-service}/components.mjs +36 -46
  206. package/dist/services/document-service/components.mjs.map +1 -0
  207. package/dist/services/document-service/entries.d.ts +10 -0
  208. package/dist/services/document-service/entries.d.ts.map +1 -0
  209. package/dist/services/document-service/entries.js +96 -0
  210. package/dist/services/document-service/entries.js.map +1 -0
  211. package/dist/services/document-service/entries.mjs +96 -0
  212. package/dist/services/document-service/entries.mjs.map +1 -0
  213. package/dist/services/document-service/events.d.ts +25 -0
  214. package/dist/services/document-service/events.d.ts.map +1 -0
  215. package/dist/services/document-service/events.js +47 -0
  216. package/dist/services/document-service/events.js.map +1 -0
  217. package/dist/services/document-service/events.mjs +47 -0
  218. package/dist/services/document-service/events.mjs.map +1 -0
  219. package/dist/services/document-service/index.d.ts +0 -2
  220. package/dist/services/document-service/index.d.ts.map +1 -1
  221. package/dist/services/document-service/index.js +13 -2
  222. package/dist/services/document-service/index.js.map +1 -1
  223. package/dist/services/document-service/index.mjs +13 -2
  224. package/dist/services/document-service/index.mjs.map +1 -1
  225. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  226. package/dist/services/document-service/internationalization.js +14 -5
  227. package/dist/services/document-service/internationalization.js.map +1 -1
  228. package/dist/services/document-service/internationalization.mjs +14 -5
  229. package/dist/services/document-service/internationalization.mjs.map +1 -1
  230. package/dist/services/document-service/middlewares/middleware-manager.d.ts +5 -2
  231. package/dist/services/document-service/middlewares/middleware-manager.d.ts.map +1 -1
  232. package/dist/services/document-service/middlewares/middleware-manager.js +8 -5
  233. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  234. package/dist/services/document-service/middlewares/middleware-manager.mjs +8 -5
  235. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  236. package/dist/services/document-service/params.d.ts +3 -1
  237. package/dist/services/document-service/params.d.ts.map +1 -1
  238. package/dist/services/document-service/params.js.map +1 -0
  239. package/dist/services/document-service/params.mjs.map +1 -0
  240. package/dist/services/document-service/repository.d.ts.map +1 -1
  241. package/dist/services/document-service/repository.js +135 -154
  242. package/dist/services/document-service/repository.js.map +1 -1
  243. package/dist/services/document-service/repository.mjs +118 -137
  244. package/dist/services/document-service/repository.mjs.map +1 -1
  245. package/dist/services/document-service/transform/data.d.ts.map +1 -1
  246. package/dist/services/document-service/transform/data.js +4 -2
  247. package/dist/services/document-service/transform/data.js.map +1 -1
  248. package/dist/services/document-service/transform/data.mjs +4 -2
  249. package/dist/services/document-service/transform/data.mjs.map +1 -1
  250. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  251. package/dist/services/document-service/transform/populate.js +1 -1
  252. package/dist/services/document-service/transform/populate.js.map +1 -1
  253. package/dist/services/document-service/transform/populate.mjs +1 -1
  254. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  255. package/dist/services/document-service/transform/query.d.ts +5 -0
  256. package/dist/services/document-service/transform/query.d.ts.map +1 -0
  257. package/dist/services/document-service/transform/query.js +9 -0
  258. package/dist/services/document-service/transform/query.js.map +1 -0
  259. package/dist/services/document-service/transform/query.mjs +9 -0
  260. package/dist/services/document-service/transform/query.mjs.map +1 -0
  261. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +8 -7
  262. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  263. package/dist/services/document-service/transform/relations/extract/data-ids.js +44 -77
  264. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  265. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +44 -77
  266. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  267. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts +7 -3
  268. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  269. package/dist/services/document-service/transform/relations/transform/data-ids.js +60 -125
  270. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  271. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +61 -126
  272. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  273. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts +9 -0
  274. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts.map +1 -0
  275. package/dist/services/document-service/transform/relations/transform/default-locale.js +32 -0
  276. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -0
  277. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +32 -0
  278. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -0
  279. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +2 -2
  280. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  281. package/dist/services/document-service/transform/relations/utils/i18n.js +3 -9
  282. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  283. package/dist/services/document-service/transform/relations/utils/i18n.mjs +3 -9
  284. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  285. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts +6 -0
  286. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -0
  287. package/dist/services/document-service/transform/relations/utils/map-relation.js +91 -0
  288. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -0
  289. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +91 -0
  290. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -0
  291. package/dist/services/document-service/transform/relations/utils/types.d.ts +6 -0
  292. package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -1
  293. package/dist/services/entity-service/index.d.ts.map +1 -1
  294. package/dist/services/entity-service/index.js +22 -16
  295. package/dist/services/entity-service/index.js.map +1 -1
  296. package/dist/services/entity-service/index.mjs +23 -17
  297. package/dist/services/entity-service/index.mjs.map +1 -1
  298. package/dist/services/entity-validator/index.d.ts.map +1 -1
  299. package/dist/services/entity-validator/index.js +93 -87
  300. package/dist/services/entity-validator/index.js.map +1 -1
  301. package/dist/services/entity-validator/index.mjs +93 -87
  302. package/dist/services/entity-validator/index.mjs.map +1 -1
  303. package/dist/services/event-hub.d.ts +1 -0
  304. package/dist/services/event-hub.d.ts.map +1 -1
  305. package/dist/services/event-hub.js +9 -4
  306. package/dist/services/event-hub.js.map +1 -1
  307. package/dist/services/event-hub.mjs +9 -4
  308. package/dist/services/event-hub.mjs.map +1 -1
  309. package/dist/services/metrics/middleware.d.ts.map +1 -1
  310. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  311. package/dist/services/metrics/rate-limiter.js.map +1 -1
  312. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  313. package/dist/services/query-params.d.ts +7 -0
  314. package/dist/services/query-params.d.ts.map +1 -0
  315. package/dist/services/query-params.js +12 -0
  316. package/dist/services/query-params.js.map +1 -0
  317. package/dist/services/query-params.mjs +13 -0
  318. package/dist/services/query-params.mjs.map +1 -0
  319. package/dist/services/reloader.d.ts +7 -0
  320. package/dist/services/reloader.d.ts.map +1 -0
  321. package/dist/services/reloader.js +36 -0
  322. package/dist/services/reloader.js.map +1 -0
  323. package/dist/services/reloader.mjs +36 -0
  324. package/dist/services/reloader.mjs.map +1 -0
  325. package/dist/services/server/compose-endpoint.d.ts.map +1 -1
  326. package/dist/services/server/compose-endpoint.js +1 -2
  327. package/dist/services/server/compose-endpoint.js.map +1 -1
  328. package/dist/services/server/compose-endpoint.mjs +2 -3
  329. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  330. package/dist/services/server/koa.d.ts.map +1 -1
  331. package/dist/services/server/koa.js +1 -1
  332. package/dist/services/server/koa.js.map +1 -1
  333. package/dist/services/server/koa.mjs +1 -1
  334. package/dist/services/server/koa.mjs.map +1 -1
  335. package/dist/services/server/policy.d.ts +2 -2
  336. package/dist/services/server/policy.d.ts.map +1 -1
  337. package/dist/services/server/policy.js +4 -4
  338. package/dist/services/server/policy.js.map +1 -1
  339. package/dist/services/server/policy.mjs +4 -4
  340. package/dist/services/server/policy.mjs.map +1 -1
  341. package/dist/services/server/register-routes.js +3 -3
  342. package/dist/services/server/register-routes.js.map +1 -1
  343. package/dist/services/server/register-routes.mjs +3 -3
  344. package/dist/services/server/register-routes.mjs.map +1 -1
  345. package/dist/services/server/routing.d.ts +1 -1
  346. package/dist/services/webhook-runner.d.ts +2 -1
  347. package/dist/services/webhook-runner.d.ts.map +1 -1
  348. package/dist/services/webhook-runner.js.map +1 -1
  349. package/dist/services/webhook-runner.mjs.map +1 -1
  350. package/dist/services/webhook-store.d.ts +2 -8
  351. package/dist/services/webhook-store.d.ts.map +1 -1
  352. package/dist/services/webhook-store.js +14 -8
  353. package/dist/services/webhook-store.js.map +1 -1
  354. package/dist/services/webhook-store.mjs +14 -8
  355. package/dist/services/webhook-store.mjs.map +1 -1
  356. package/dist/utils/index.d.ts +2 -1
  357. package/dist/utils/index.d.ts.map +1 -1
  358. package/dist/utils/load-files.d.ts.map +1 -1
  359. package/dist/utils/resolve-working-dirs.d.ts +19 -0
  360. package/dist/utils/resolve-working-dirs.d.ts.map +1 -0
  361. package/dist/utils/resolve-working-dirs.js +13 -0
  362. package/dist/utils/resolve-working-dirs.js.map +1 -0
  363. package/dist/utils/resolve-working-dirs.mjs +11 -0
  364. package/dist/utils/resolve-working-dirs.mjs.map +1 -0
  365. package/dist/utils/startup-logger.d.ts.map +1 -1
  366. package/dist/utils/transform-content-types-to-models.d.ts +15 -15
  367. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  368. package/dist/utils/transform-content-types-to-models.js +77 -85
  369. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  370. package/dist/utils/transform-content-types-to-models.mjs +77 -85
  371. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  372. package/dist/utils/update-notifier/index.d.ts +1 -6
  373. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  374. package/dist/utils/update-notifier/index.js +11 -14
  375. package/dist/utils/update-notifier/index.js.map +1 -1
  376. package/dist/utils/update-notifier/index.mjs +11 -14
  377. package/dist/utils/update-notifier/index.mjs.map +1 -1
  378. package/package.json +28 -26
  379. package/dist/registries/config.d.ts +0 -4
  380. package/dist/registries/config.d.ts.map +0 -1
  381. package/dist/registries/config.js.map +0 -1
  382. package/dist/registries/config.mjs.map +0 -1
  383. package/dist/services/document-service/document-engine.d.ts +0 -2
  384. package/dist/services/document-service/document-engine.d.ts.map +0 -1
  385. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts +0 -2
  386. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts.map +0 -1
  387. package/dist/services/document-service/transform/relations/utils/data.js +0 -12
  388. package/dist/services/document-service/transform/relations/utils/data.js.map +0 -1
  389. package/dist/services/document-service/transform/relations/utils/data.mjs +0 -12
  390. package/dist/services/document-service/transform/relations/utils/data.mjs.map +0 -1
  391. package/dist/services/entity-service/attributes/index.d.ts +0 -6
  392. package/dist/services/entity-service/attributes/index.d.ts.map +0 -1
  393. package/dist/services/entity-service/attributes/index.js.map +0 -1
  394. package/dist/services/entity-service/attributes/index.mjs.map +0 -1
  395. package/dist/services/entity-service/attributes/transforms.d.ts.map +0 -1
  396. package/dist/services/entity-service/attributes/transforms.js.map +0 -1
  397. package/dist/services/entity-service/attributes/transforms.mjs.map +0 -1
  398. package/dist/services/entity-service/components.d.ts +0 -95
  399. package/dist/services/entity-service/components.d.ts.map +0 -1
  400. package/dist/services/entity-service/components.js.map +0 -1
  401. package/dist/services/entity-service/components.mjs.map +0 -1
  402. package/dist/services/entity-service/params.d.ts +0 -8
  403. package/dist/services/entity-service/params.d.ts.map +0 -1
  404. package/dist/services/entity-service/params.js.map +0 -1
  405. package/dist/services/entity-service/params.mjs.map +0 -1
  406. package/dist/utils/get-dirs.d.ts +0 -9
  407. package/dist/utils/get-dirs.d.ts.map +0 -1
  408. package/dist/utils/get-dirs.js.map +0 -1
  409. package/dist/utils/get-dirs.mjs.map +0 -1
  410. /package/dist/services/{entity-service → document-service}/attributes/transforms.d.ts +0 -0
  411. /package/dist/services/{entity-service → document-service}/attributes/transforms.js +0 -0
  412. /package/dist/services/{entity-service → document-service}/attributes/transforms.mjs +0 -0
  413. /package/dist/services/{entity-service → document-service}/params.js +0 -0
  414. /package/dist/services/{entity-service → document-service}/params.mjs +0 -0
@@ -1,4 +1,4 @@
1
- import { type Model, type MetadataOptions } from '@strapi/database';
1
+ import { type Model, type Identifiers } from '@strapi/database';
2
2
  import type { Struct, Schema } from '@strapi/types';
3
3
  import { createId } from '@paralleldrive/cuid2';
4
4
  /**
@@ -13,14 +13,14 @@ import { createId } from '@paralleldrive/cuid2';
13
13
  * 'collection4f3a_cmps' maps to the unshortened 'collectionname_cmps' rather than 'collectionname_components'
14
14
  * Therefore, we only use the identifiers helpers in cases where we do not do any of our own shortening
15
15
  */
16
- export declare const getComponentJoinTableName: (collectionName: string, options: MetadataOptions) => string;
17
- export declare const getDzJoinTableName: (collectionName: string, options: MetadataOptions) => string;
18
- export declare const getComponentJoinColumnEntityName: (options: MetadataOptions) => string;
19
- export declare const getComponentJoinColumnInverseName: (options: MetadataOptions) => string;
20
- export declare const getComponentTypeColumn: (options: MetadataOptions) => string;
21
- export declare const getComponentFkIndexName: (contentType: string, options: MetadataOptions) => string;
16
+ export declare const getComponentJoinTableName: (collectionName: string, identifiers: Identifiers) => string;
17
+ export declare const getDzJoinTableName: (collectionName: string, identifiers: Identifiers) => string;
18
+ export declare const getComponentJoinColumnEntityName: (identifiers: Identifiers) => string;
19
+ export declare const getComponentJoinColumnInverseName: (identifiers: Identifiers) => string;
20
+ export declare const getComponentTypeColumn: (identifiers: Identifiers) => string;
21
+ export declare const getComponentFkIndexName: (contentType: string, identifiers: Identifiers) => string;
22
22
  export type LoadedContentTypeModel = Struct.ContentTypeSchema & Required<Pick<Struct.ContentTypeSchema, 'collectionName' | 'uid' | 'modelName'>>;
23
- export declare const transformAttribute: (name: string, attribute: Schema.Attribute.AnyAttribute, contentType: LoadedContentTypeModel, options: MetadataOptions) => (Schema.Attribute.OfType<"biginteger"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<string> & Schema.Attribute.MinMaxOption<string> & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption & Schema.Attribute.UniqueOption) | (Schema.Attribute.OfType<"boolean"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<boolean> & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption) | (Schema.Attribute.OfType<"blocks"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption) | (Schema.Attribute.OfType<"datetime"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<Schema.Attribute.DateTimeValue> & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.UniqueOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption) | (Schema.Attribute.OfType<"date"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<Schema.Attribute.DateValue> & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.UniqueOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption) | (Schema.Attribute.OfType<"decimal"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<number> & Schema.Attribute.MinMaxOption<number> & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption & Schema.Attribute.UniqueOption) | (Schema.Attribute.OfType<"email"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<string> & Schema.Attribute.MinMaxLengthOption & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.UniqueOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption) | (Schema.Attribute.OfType<"enumeration"> & Schema.Attribute.EnumerationProperties<string[]> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<string> & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption) | (Schema.Attribute.OfType<"float"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<number> & Schema.Attribute.MinMaxOption<number> & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption & Schema.Attribute.UniqueOption) | (Schema.Attribute.OfType<"integer"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<number> & Schema.Attribute.MinMaxOption<number> & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption & Schema.Attribute.UniqueOption) | (Schema.Attribute.OfType<"json"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.RequiredOption & Schema.Attribute.PrivateOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption & Schema.Attribute.DefaultOption<import("@strapi/types/dist/utils").JSONPrimitive>) | (Schema.Attribute.OfType<"password"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<string> & Schema.Attribute.MinMaxLengthOption & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption) | (Schema.Attribute.OfType<"relation"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.PrivateOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption & Schema.Attribute.RequiredOption & {
23
+ export declare const transformAttribute: (name: string, attribute: Schema.Attribute.AnyAttribute, contentType: LoadedContentTypeModel, identifiers: Identifiers) => (Schema.Attribute.OfType<"biginteger"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<string> & Schema.Attribute.MinMaxOption<string> & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption & Schema.Attribute.UniqueOption) | (Schema.Attribute.OfType<"boolean"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<boolean> & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption) | (Schema.Attribute.OfType<"blocks"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption) | (Schema.Attribute.OfType<"datetime"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<Schema.Attribute.DateTimeValue> & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.UniqueOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption) | (Schema.Attribute.OfType<"date"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<Schema.Attribute.DateValue> & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.UniqueOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption) | (Schema.Attribute.OfType<"decimal"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<number> & Schema.Attribute.MinMaxOption<number> & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption & Schema.Attribute.UniqueOption) | (Schema.Attribute.OfType<"email"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<string> & Schema.Attribute.MinMaxLengthOption & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.UniqueOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption) | (Schema.Attribute.OfType<"enumeration"> & Schema.Attribute.EnumerationProperties<string[]> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<string> & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption) | (Schema.Attribute.OfType<"float"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<number> & Schema.Attribute.MinMaxOption<number> & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption & Schema.Attribute.UniqueOption) | (Schema.Attribute.OfType<"integer"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<number> & Schema.Attribute.MinMaxOption<number> & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption & Schema.Attribute.UniqueOption) | (Schema.Attribute.OfType<"json"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.RequiredOption & Schema.Attribute.PrivateOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption & Schema.Attribute.DefaultOption<import("@strapi/types/dist/utils").JSONPrimitive>) | (Schema.Attribute.OfType<"password"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.DefaultOption<string> & Schema.Attribute.MinMaxLengthOption & Schema.Attribute.PrivateOption & Schema.Attribute.RequiredOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption) | (Schema.Attribute.OfType<"relation"> & Schema.Attribute.ConfigurableOption & Schema.Attribute.PrivateOption & Schema.Attribute.WritableOption & Schema.Attribute.VisibleOption & Schema.Attribute.RequiredOption & {
24
24
  useJoinTable?: boolean | undefined;
25
25
  } & {
26
26
  relation: "morphToOne";
@@ -74,16 +74,16 @@ export declare const transformAttribute: (name: string, attribute: Schema.Attrib
74
74
  name: string;
75
75
  joinColumn: {
76
76
  name: string;
77
- referencedColumn: string;
77
+ referencedColumn: "id";
78
78
  };
79
79
  inverseJoinColumn: {
80
80
  name: string;
81
- referencedColumn: string;
81
+ referencedColumn: "id";
82
82
  };
83
83
  on: {
84
84
  field: string;
85
85
  };
86
- orderColumnName: string;
86
+ orderColumnName: "order";
87
87
  orderBy: {
88
88
  order: string;
89
89
  };
@@ -98,12 +98,12 @@ export declare const transformAttribute: (name: string, attribute: Schema.Attrib
98
98
  name: string;
99
99
  joinColumn: {
100
100
  name: string;
101
- referencedColumn: string;
101
+ referencedColumn: "id";
102
102
  };
103
103
  morphColumn: {
104
104
  idColumn: {
105
105
  name: string;
106
- referencedColumn: string;
106
+ referencedColumn: "id";
107
107
  };
108
108
  typeColumn: {
109
109
  name: string;
@@ -123,10 +123,10 @@ export declare const transformAttribute: (name: string, attribute: Schema.Attrib
123
123
  target?: undefined;
124
124
  morphBy?: undefined;
125
125
  };
126
- export declare const transformAttributes: (contentType: LoadedContentTypeModel, options: MetadataOptions) => {};
126
+ export declare const transformAttributes: (contentType: LoadedContentTypeModel, identifiers: Identifiers) => {};
127
127
  export declare const hasComponentsOrDz: (contentType: LoadedContentTypeModel) => contentType is Struct.ContentTypeSchema & Required<Pick<Struct.ContentTypeSchema, "uid" | "collectionName" | "modelName">> & {
128
128
  type: 'dynamiczone' | 'component';
129
129
  };
130
130
  export declare const createDocumentId: typeof createId;
131
- export declare const transformContentTypesToModels: (contentTypes: LoadedContentTypeModel[], options: MetadataOptions) => Model[];
131
+ export declare const transformContentTypesToModels: (contentTypes: LoadedContentTypeModel[], identifiers: Identifiers) => Model[];
132
132
  //# sourceMappingURL=transform-content-types-to-models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transform-content-types-to-models.d.ts","sourceRoot":"","sources":["../../src/utils/transform-content-types-to-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAS,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAMhD;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,yBAAyB,mBAAoB,MAAM,WAAW,eAAe,WAQzF,CAAC;AAEF,eAAO,MAAM,kBAAkB,mBAAoB,MAAM,WAAW,eAAe,WAQlF,CAAC;AAEF,eAAO,MAAM,gCAAgC,YAAa,eAAe,WAQxE,CAAC;AAEF,eAAO,MAAM,iCAAiC,YAAa,eAAe,WAQzE,CAAC;AAEF,eAAO,MAAM,sBAAsB,YAAa,eAAe,WAE9D,CAAC;AAEF,eAAO,MAAM,uBAAuB,gBAAiB,MAAM,WAAW,eAAe,WASpF,CAAC;AAIF,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,iBAAiB,GAC3D,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC;AAGnF,eAAO,MAAM,kBAAkB,SACvB,MAAM,aACD,OAAO,SAAS,CAAC,YAAY,eAC3B,sBAAsB,WAC1B,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqFzB,CAAC;AAEF,eAAO,MAAM,mBAAmB,gBACjB,sBAAsB,WAC1B,eAAe,OAazB,CAAC;AAEF,eAAO,MAAM,iBAAiB,gBACf,sBAAsB;UACc,aAAa,GAAG,WAAW;CAI7E,CAAC;AAEF,eAAO,MAAM,gBAAgB,iBAAW,CAAC;AAgFzC,eAAO,MAAM,6BAA6B,iBAC1B,sBAAsB,EAAE,WAC7B,eAAe,KACvB,KAAK,EAiDP,CAAC"}
1
+ {"version":3,"file":"transform-content-types-to-models.d.ts","sourceRoot":"","sources":["../../src/utils/transform-content-types-to-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIhD;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,yBAAyB,mBAAoB,MAAM,eAAe,WAAW,WAKzF,CAAC;AAEF,eAAO,MAAM,kBAAkB,mBAAoB,MAAM,eAAe,WAAW,WAKlF,CAAC;AAEF,eAAO,MAAM,gCAAgC,gBAAiB,WAAW,WAKxE,CAAC;AAEF,eAAO,MAAM,iCAAiC,gBAAiB,WAAW,WAKzE,CAAC;AAEF,eAAO,MAAM,sBAAsB,gBAAiB,WAAW,WAE9D,CAAC;AAEF,eAAO,MAAM,uBAAuB,gBAAiB,MAAM,eAAe,WAAW,WAMpF,CAAC;AAIF,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,iBAAiB,GAC3D,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC;AAGnF,eAAO,MAAM,kBAAkB,SACvB,MAAM,aACD,OAAO,SAAS,CAAC,YAAY,eAC3B,sBAAsB,eACtB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+FzB,CAAC;AAEF,eAAO,MAAM,mBAAmB,gBACjB,sBAAsB,eACtB,WAAW,OAazB,CAAC;AAEF,eAAO,MAAM,iBAAiB,gBACf,sBAAsB;UACc,aAAa,GAAG,WAAW;CAI7E,CAAC;AAEF,eAAO,MAAM,gBAAgB,iBAAW,CAAC;AAgFzC,eAAO,MAAM,6BAA6B,iBAC1B,sBAAsB,EAAE,eACzB,WAAW,KACvB,KAAK,EAiDP,CAAC"}
@@ -1,64 +1,46 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const database = require("@strapi/database");
4
3
  const cuid2 = require("@paralleldrive/cuid2");
5
4
  const assert = require("node:assert");
6
5
  const _ = require("lodash/fp");
7
6
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
8
7
  const assert__default = /* @__PURE__ */ _interopDefault(assert);
9
8
  const ___default = /* @__PURE__ */ _interopDefault(_);
10
- const { identifiers } = database.utils;
11
- const getComponentJoinTableName = (collectionName, options) => {
12
- return identifiers.getNameFromTokens(
13
- [
14
- { name: collectionName, compressible: true },
15
- { name: "components", shortName: "cmps", compressible: false }
16
- ],
17
- options
18
- );
9
+ const getComponentJoinTableName = (collectionName, identifiers) => {
10
+ return identifiers.getNameFromTokens([
11
+ { name: collectionName, compressible: true },
12
+ { name: "components", shortName: "cmps", compressible: false }
13
+ ]);
19
14
  };
20
- const getDzJoinTableName = (collectionName, options) => {
21
- return identifiers.getNameFromTokens(
22
- [
23
- { name: collectionName, compressible: true },
24
- { name: "components", shortName: "cmps", compressible: false }
25
- ],
26
- options
27
- );
15
+ const getDzJoinTableName = (collectionName, identifiers) => {
16
+ return identifiers.getNameFromTokens([
17
+ { name: collectionName, compressible: true },
18
+ { name: "components", shortName: "cmps", compressible: false }
19
+ ]);
28
20
  };
29
- const getComponentJoinColumnEntityName = (options) => {
30
- return identifiers.getNameFromTokens(
31
- [
32
- { name: "entity", compressible: false },
33
- { name: "id", compressible: false }
34
- ],
35
- options
36
- );
21
+ const getComponentJoinColumnEntityName = (identifiers) => {
22
+ return identifiers.getNameFromTokens([
23
+ { name: "entity", compressible: false },
24
+ { name: "id", compressible: false }
25
+ ]);
37
26
  };
38
- const getComponentJoinColumnInverseName = (options) => {
39
- return identifiers.getNameFromTokens(
40
- [
41
- { name: "component", shortName: "cmp", compressible: false },
42
- { name: "id", compressible: false }
43
- ],
44
- options
45
- );
27
+ const getComponentJoinColumnInverseName = (identifiers) => {
28
+ return identifiers.getNameFromTokens([
29
+ { name: "component", shortName: "cmp", compressible: false },
30
+ { name: "id", compressible: false }
31
+ ]);
46
32
  };
47
- const getComponentTypeColumn = (options) => {
48
- return identifiers.getNameFromTokens([{ name: "component_type", compressible: false }], options);
33
+ const getComponentTypeColumn = (identifiers) => {
34
+ return identifiers.getNameFromTokens([{ name: "component_type", compressible: false }]);
49
35
  };
50
- const getComponentFkIndexName = (contentType, options) => {
51
- return identifiers.getNameFromTokens(
52
- [
53
- { name: contentType, compressible: true },
54
- { name: "entity", compressible: false },
55
- { name: "fk", compressible: false }
56
- ],
57
- options
58
- );
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
+ ]);
59
42
  };
60
- const { ID_COLUMN: id, FIELD_COLUMN: field, ORDER_COLUMN: order } = identifiers;
61
- const transformAttribute = (name, attribute, contentType, options) => {
43
+ const transformAttribute = (name, attribute, contentType, identifiers) => {
62
44
  switch (attribute.type) {
63
45
  case "media": {
64
46
  return {
@@ -69,10 +51,10 @@ const transformAttribute = (name, attribute, contentType, options) => {
69
51
  };
70
52
  }
71
53
  case "component": {
72
- const joinTableName = getComponentJoinTableName(contentType.collectionName, options);
73
- const joinColumnEntityName = getComponentJoinColumnEntityName(options);
74
- const joinColumnInverseName = getComponentJoinColumnInverseName(options);
75
- const compTypeColumn = getComponentTypeColumn(options);
54
+ const joinTableName = getComponentJoinTableName(contentType.collectionName, identifiers);
55
+ const joinColumnEntityName = getComponentJoinColumnEntityName(identifiers);
56
+ const joinColumnInverseName = getComponentJoinColumnInverseName(identifiers);
57
+ const compTypeColumn = getComponentTypeColumn(identifiers);
76
58
  return {
77
59
  type: "relation",
78
60
  relation: attribute.repeatable === true ? "oneToMany" : "oneToOne",
@@ -83,28 +65,33 @@ const transformAttribute = (name, attribute, contentType, options) => {
83
65
  name: joinTableName,
84
66
  joinColumn: {
85
67
  name: joinColumnEntityName,
86
- referencedColumn: id
68
+ referencedColumn: identifiers.ID_COLUMN
87
69
  },
88
70
  inverseJoinColumn: {
89
71
  name: joinColumnInverseName,
90
- referencedColumn: id
72
+ referencedColumn: identifiers.ID_COLUMN
91
73
  },
92
74
  on: {
93
75
  field: name
94
76
  },
95
- orderColumnName: order,
77
+ orderColumnName: identifiers.ORDER_COLUMN,
96
78
  orderBy: {
97
79
  order: "asc"
98
80
  },
99
- pivotColumns: [joinColumnEntityName, joinColumnInverseName, field, compTypeColumn]
81
+ pivotColumns: [
82
+ joinColumnEntityName,
83
+ joinColumnInverseName,
84
+ identifiers.FIELD_COLUMN,
85
+ compTypeColumn
86
+ ]
100
87
  }
101
88
  };
102
89
  }
103
90
  case "dynamiczone": {
104
- const joinTableName = getDzJoinTableName(contentType.collectionName, options);
105
- const joinColumnEntityName = getComponentJoinColumnEntityName(options);
106
- const joinColumnInverseName = getComponentJoinColumnInverseName(options);
107
- const compTypeColumn = getComponentTypeColumn(options);
91
+ const joinTableName = getDzJoinTableName(contentType.collectionName, identifiers);
92
+ const joinColumnEntityName = getComponentJoinColumnEntityName(identifiers);
93
+ const joinColumnInverseName = getComponentJoinColumnInverseName(identifiers);
94
+ const compTypeColumn = getComponentTypeColumn(identifiers);
108
95
  return {
109
96
  type: "relation",
110
97
  relation: "morphToMany",
@@ -114,12 +101,12 @@ const transformAttribute = (name, attribute, contentType, options) => {
114
101
  name: joinTableName,
115
102
  joinColumn: {
116
103
  name: joinColumnEntityName,
117
- referencedColumn: id
104
+ referencedColumn: identifiers.ID_COLUMN
118
105
  },
119
106
  morphColumn: {
120
107
  idColumn: {
121
108
  name: joinColumnInverseName,
122
- referencedColumn: id
109
+ referencedColumn: identifiers.ID_COLUMN
123
110
  },
124
111
  typeColumn: {
125
112
  name: compTypeColumn
@@ -132,7 +119,12 @@ const transformAttribute = (name, attribute, contentType, options) => {
132
119
  orderBy: {
133
120
  order: "asc"
134
121
  },
135
- pivotColumns: [joinColumnEntityName, joinColumnInverseName, field, compTypeColumn]
122
+ pivotColumns: [
123
+ joinColumnEntityName,
124
+ joinColumnInverseName,
125
+ identifiers.FIELD_COLUMN,
126
+ compTypeColumn
127
+ ]
136
128
  }
137
129
  };
138
130
  }
@@ -141,7 +133,7 @@ const transformAttribute = (name, attribute, contentType, options) => {
141
133
  }
142
134
  }
143
135
  };
144
- const transformAttributes = (contentType, options) => {
136
+ const transformAttributes = (contentType, identifiers) => {
145
137
  return Object.keys(contentType.attributes || {}).reduce((attrs, attrName) => {
146
138
  return {
147
139
  ...attrs,
@@ -149,7 +141,7 @@ const transformAttributes = (contentType, options) => {
149
141
  attrName,
150
142
  contentType.attributes[attrName],
151
143
  contentType,
152
- options
144
+ identifiers
153
145
  )
154
146
  };
155
147
  }, {});
@@ -160,19 +152,19 @@ const hasComponentsOrDz = (contentType) => {
160
152
  );
161
153
  };
162
154
  const createDocumentId = cuid2.createId;
163
- const createCompoLinkModel = (contentType, options) => {
164
- const name = getComponentJoinTableName(contentType.collectionName, options);
165
- const entityId = getComponentJoinColumnEntityName(options);
166
- const componentId = getComponentJoinColumnInverseName(options);
167
- const compTypeColumn = getComponentTypeColumn(options);
168
- const fkIndex = getComponentFkIndexName(contentType.collectionName, options);
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);
169
161
  return {
170
162
  // TODO: make sure there can't be any conflicts with a prefix
171
163
  singularName: name,
172
164
  uid: name,
173
165
  tableName: name,
174
166
  attributes: {
175
- [id]: {
167
+ [identifiers.ID_COLUMN]: {
176
168
  type: "increments"
177
169
  },
178
170
  [entityId]: {
@@ -190,10 +182,10 @@ const createCompoLinkModel = (contentType, options) => {
190
182
  [compTypeColumn]: {
191
183
  type: "string"
192
184
  },
193
- [field]: {
185
+ [identifiers.FIELD_COLUMN]: {
194
186
  type: "string"
195
187
  },
196
- [order]: {
188
+ [identifiers.ORDER_COLUMN]: {
197
189
  type: "float",
198
190
  column: {
199
191
  unsigned: true,
@@ -203,11 +195,11 @@ const createCompoLinkModel = (contentType, options) => {
203
195
  },
204
196
  indexes: [
205
197
  {
206
- name: identifiers.getIndexName([contentType.collectionName, field], options),
207
- columns: [field]
198
+ name: identifiers.getIndexName([contentType.collectionName, identifiers.FIELD_COLUMN]),
199
+ columns: [identifiers.FIELD_COLUMN]
208
200
  },
209
201
  {
210
- name: identifiers.getIndexName([contentType.collectionName, compTypeColumn], options),
202
+ name: identifiers.getIndexName([contentType.collectionName, compTypeColumn]),
211
203
  columns: [compTypeColumn]
212
204
  },
213
205
  {
@@ -216,8 +208,8 @@ const createCompoLinkModel = (contentType, options) => {
216
208
  },
217
209
  {
218
210
  // NOTE: since we don't include attribute names, we need to be careful not to create another unique index
219
- name: identifiers.getUniqueIndexName([contentType.collectionName], options),
220
- columns: [entityId, componentId, field, compTypeColumn],
211
+ name: identifiers.getUniqueIndexName([contentType.collectionName]),
212
+ columns: [entityId, componentId, identifiers.FIELD_COLUMN, compTypeColumn],
221
213
  type: "unique"
222
214
  }
223
215
  ],
@@ -225,21 +217,21 @@ const createCompoLinkModel = (contentType, options) => {
225
217
  {
226
218
  name: fkIndex,
227
219
  columns: [entityId],
228
- referencedColumns: [id],
229
- referencedTable: identifiers.getTableName(contentType.collectionName, options),
220
+ referencedColumns: [identifiers.ID_COLUMN],
221
+ referencedTable: identifiers.getTableName(contentType.collectionName),
230
222
  onDelete: "CASCADE"
231
223
  }
232
224
  ]
233
225
  };
234
226
  };
235
- const transformContentTypesToModels = (contentTypes, options) => {
227
+ const transformContentTypesToModels = (contentTypes, identifiers) => {
236
228
  const models = [];
237
229
  contentTypes.forEach((contentType) => {
238
230
  assert__default.default(contentType.collectionName, 'Content type "collectionName" is required');
239
231
  assert__default.default(contentType.modelName, 'Content type "modelName" is required');
240
232
  assert__default.default(contentType.uid, 'Content type "uid" is required');
241
233
  const documentIdAttribute = contentType.modelType === "contentType" ? { documentId: { type: "string", default: createDocumentId } } : {};
242
- const reservedAttributeNames = ["document_id", id];
234
+ const reservedAttributeNames = ["document_id", identifiers.ID_COLUMN];
243
235
  Object.keys(contentType.attributes || {}).forEach((attributeName) => {
244
236
  const snakeCasedAttributeName = ___default.default.snakeCase(attributeName);
245
237
  if (reservedAttributeNames.includes(snakeCasedAttributeName)) {
@@ -249,7 +241,7 @@ const transformContentTypesToModels = (contentTypes, options) => {
249
241
  }
250
242
  });
251
243
  if (hasComponentsOrDz(contentType)) {
252
- const compoLinkModel = createCompoLinkModel(contentType, options);
244
+ const compoLinkModel = createCompoLinkModel(contentType, identifiers);
253
245
  models.push(compoLinkModel);
254
246
  }
255
247
  const model = {
@@ -258,11 +250,11 @@ const transformContentTypesToModels = (contentTypes, options) => {
258
250
  tableName: contentType.collectionName,
259
251
  // This gets shortened in metadata.loadModels(), so we don't shorten here or it will happen twice
260
252
  attributes: {
261
- [id]: {
253
+ [identifiers.ID_COLUMN]: {
262
254
  type: "increments"
263
255
  },
264
256
  ...documentIdAttribute,
265
- ...transformAttributes(contentType, options)
257
+ ...transformAttributes(contentType, identifiers)
266
258
  }
267
259
  };
268
260
  models.push(model);
@@ -1 +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, type MetadataOptions } 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\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 * 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, options: MetadataOptions) => {\n return identifiers.getNameFromTokens(\n [\n { name: collectionName, compressible: true },\n { name: 'components', shortName: 'cmps', compressible: false },\n ],\n options\n );\n};\n\nexport const getDzJoinTableName = (collectionName: string, options: MetadataOptions) => {\n return identifiers.getNameFromTokens(\n [\n { name: collectionName, compressible: true },\n { name: 'components', shortName: 'cmps', compressible: false },\n ],\n options\n );\n};\n\nexport const getComponentJoinColumnEntityName = (options: MetadataOptions) => {\n return identifiers.getNameFromTokens(\n [\n { name: 'entity', compressible: false },\n { name: 'id', compressible: false },\n ],\n options\n );\n};\n\nexport const getComponentJoinColumnInverseName = (options: MetadataOptions) => {\n return identifiers.getNameFromTokens(\n [\n { name: 'component', shortName: 'cmp', compressible: false },\n { name: 'id', compressible: false },\n ],\n options\n );\n};\n\nexport const getComponentTypeColumn = (options: MetadataOptions) => {\n return identifiers.getNameFromTokens([{ name: 'component_type', compressible: false }], options);\n};\n\nexport const getComponentFkIndexName = (contentType: string, options: MetadataOptions) => {\n return identifiers.getNameFromTokens(\n [\n { name: contentType, compressible: true },\n { name: 'entity', compressible: false },\n { name: 'fk', compressible: false },\n ],\n options\n );\n};\n\nconst { 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 options: MetadataOptions\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, options);\n const joinColumnEntityName = getComponentJoinColumnEntityName(options);\n const joinColumnInverseName = getComponentJoinColumnInverseName(options);\n const compTypeColumn = getComponentTypeColumn(options);\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, compTypeColumn],\n },\n };\n }\n case 'dynamiczone': {\n const joinTableName = getDzJoinTableName(contentType.collectionName, options);\n const joinColumnEntityName = getComponentJoinColumnEntityName(options);\n const joinColumnInverseName = getComponentJoinColumnInverseName(options);\n const compTypeColumn = getComponentTypeColumn(options);\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: compTypeColumn,\n },\n typeField: '__component',\n },\n on: {\n field: name,\n },\n orderBy: {\n order: 'asc',\n },\n pivotColumns: [joinColumnEntityName, joinColumnInverseName, field, compTypeColumn],\n },\n };\n }\n default: {\n return attribute;\n }\n }\n};\n\nexport const transformAttributes = (\n contentType: LoadedContentTypeModel,\n options: MetadataOptions\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 options\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 options: MetadataOptions\n): Model => {\n const name = getComponentJoinTableName(contentType.collectionName, options);\n\n const entityId = getComponentJoinColumnEntityName(options);\n const componentId = getComponentJoinColumnInverseName(options);\n const compTypeColumn = getComponentTypeColumn(options);\n const fkIndex = getComponentFkIndexName(contentType.collectionName, options);\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 [compTypeColumn]: {\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], options),\n columns: [field],\n },\n {\n name: identifiers.getIndexName([contentType.collectionName, compTypeColumn], options),\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], options),\n columns: [entityId, componentId, field, compTypeColumn],\n type: 'unique',\n },\n ],\n foreignKeys: [\n {\n name: fkIndex,\n columns: [entityId],\n referencedColumns: [id],\n referencedTable: identifiers.getTableName(contentType.collectionName, options),\n onDelete: 'CASCADE',\n },\n ],\n };\n};\n\nexport const transformContentTypesToModels = (\n contentTypes: LoadedContentTypeModel[],\n options: MetadataOptions\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', 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, options);\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 [id]: {\n type: 'increments',\n },\n ...documentIdAttribute,\n ...transformAttributes(contentType, options),\n },\n };\n\n models.push(model);\n });\n\n return models;\n};\n"],"names":["utils","createId","assert","_"],"mappings":"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"}
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 models.push(model);\n });\n\n return models;\n};\n"],"names":["createId","assert","_"],"mappings":"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"}