@strapi/core 5.49.0 → 5.50.1

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 (272) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/Strapi.js +2 -0
  3. package/dist/Strapi.js.map +1 -1
  4. package/dist/Strapi.mjs +2 -0
  5. package/dist/Strapi.mjs.map +1 -1
  6. package/dist/configuration/config-loader.d.ts.map +1 -1
  7. package/dist/configuration/get-dirs.d.ts.map +1 -1
  8. package/dist/configuration/index.d.ts +0 -3
  9. package/dist/configuration/index.d.ts.map +1 -1
  10. package/dist/configuration/index.js +0 -3
  11. package/dist/configuration/index.js.map +1 -1
  12. package/dist/configuration/index.mjs +0 -3
  13. package/dist/configuration/index.mjs.map +1 -1
  14. package/dist/configuration/server-config.d.ts +11 -0
  15. package/dist/configuration/server-config.d.ts.map +1 -0
  16. package/dist/configuration/server-config.js +16 -0
  17. package/dist/configuration/server-config.js.map +1 -0
  18. package/dist/configuration/server-config.mjs +14 -0
  19. package/dist/configuration/server-config.mjs.map +1 -0
  20. package/dist/configuration/urls.d.ts.map +1 -1
  21. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  22. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  23. package/dist/core-api/controller/transform.d.ts.map +1 -1
  24. package/dist/core-api/routes/index.d.ts.map +1 -1
  25. package/dist/core-api/routes/validation/attributes.d.ts.map +1 -1
  26. package/dist/core-api/routes/validation/component.js +3 -3
  27. package/dist/core-api/routes/validation/component.js.map +1 -1
  28. package/dist/core-api/routes/validation/component.mjs +3 -3
  29. package/dist/core-api/routes/validation/component.mjs.map +1 -1
  30. package/dist/core-api/routes/validation/mappers.d.ts.map +1 -1
  31. package/dist/core-api/routes/validation/utils.d.ts.map +1 -1
  32. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  33. package/dist/core-api/service/pagination.d.ts.map +1 -1
  34. package/dist/core-api/service/single-type.d.ts.map +1 -1
  35. package/dist/domain/content-type/index.d.ts.map +1 -1
  36. package/dist/domain/content-type/validator.d.ts.map +1 -1
  37. package/dist/domain/module/index.d.ts.map +1 -1
  38. package/dist/domain/module/validation.d.ts.map +1 -1
  39. package/dist/ee/index.d.ts +2 -1
  40. package/dist/ee/index.d.ts.map +1 -1
  41. package/dist/ee/license.d.ts.map +1 -1
  42. package/dist/factories.d.ts.map +1 -1
  43. package/dist/index.d.ts +4 -1
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js.map +1 -1
  46. package/dist/index.mjs.map +1 -1
  47. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  48. package/dist/loaders/sanitizers.d.ts.map +1 -1
  49. package/dist/loaders/src-index.d.ts.map +1 -1
  50. package/dist/loaders/validators.d.ts.map +1 -1
  51. package/dist/middlewares/body.d.ts.map +1 -1
  52. package/dist/middlewares/body.js +1 -1
  53. package/dist/middlewares/body.js.map +1 -1
  54. package/dist/middlewares/body.mjs +1 -1
  55. package/dist/middlewares/body.mjs.map +1 -1
  56. package/dist/middlewares/cors.d.ts.map +1 -1
  57. package/dist/middlewares/errors.d.ts +5 -0
  58. package/dist/middlewares/errors.d.ts.map +1 -1
  59. package/dist/middlewares/errors.js.map +1 -1
  60. package/dist/middlewares/errors.mjs.map +1 -1
  61. package/dist/middlewares/favicon.d.ts +0 -1
  62. package/dist/middlewares/favicon.d.ts.map +1 -1
  63. package/dist/migrations/draft-publish.d.ts.map +1 -1
  64. package/dist/migrations/first-published-at.d.ts.map +1 -1
  65. package/dist/migrations/i18n.d.ts.map +1 -1
  66. package/dist/migrations/index.d.ts.map +1 -1
  67. package/dist/package.json.js +17 -20
  68. package/dist/package.json.js.map +1 -1
  69. package/dist/package.json.mjs +17 -20
  70. package/dist/package.json.mjs.map +1 -1
  71. package/dist/providers/provider.d.ts.map +1 -1
  72. package/dist/registries/apis.d.ts.map +1 -1
  73. package/dist/registries/components.d.ts +1 -1
  74. package/dist/registries/components.d.ts.map +1 -1
  75. package/dist/registries/content-types.d.ts +2 -3
  76. package/dist/registries/content-types.d.ts.map +1 -1
  77. package/dist/registries/controllers.d.ts +3 -3
  78. package/dist/registries/controllers.d.ts.map +1 -1
  79. package/dist/registries/custom-fields.d.ts.map +1 -1
  80. package/dist/registries/hooks.d.ts +3 -4
  81. package/dist/registries/hooks.d.ts.map +1 -1
  82. package/dist/registries/middlewares.d.ts +2 -3
  83. package/dist/registries/middlewares.d.ts.map +1 -1
  84. package/dist/registries/models.d.ts +1 -1
  85. package/dist/registries/modules.d.ts.map +1 -1
  86. package/dist/registries/namespace.d.ts.map +1 -1
  87. package/dist/registries/plugins.d.ts.map +1 -1
  88. package/dist/registries/policies.d.ts +1 -2
  89. package/dist/registries/policies.d.ts.map +1 -1
  90. package/dist/registries/sanitizers.d.ts +2 -2
  91. package/dist/registries/services.d.ts +3 -3
  92. package/dist/registries/services.d.ts.map +1 -1
  93. package/dist/registries/validators.d.ts +2 -2
  94. package/dist/services/ai.d.ts.map +1 -1
  95. package/dist/services/config.d.ts.map +1 -1
  96. package/dist/services/content-api/index.d.ts +4 -4
  97. package/dist/services/content-api/index.d.ts.map +1 -1
  98. package/dist/services/content-api/permissions/engine.d.ts.map +1 -1
  99. package/dist/services/content-api/permissions/index.d.ts +2 -2
  100. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  101. package/dist/services/content-api/permissions/providers/action.d.ts +1 -1
  102. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  103. package/dist/services/content-api/permissions/providers/condition.d.ts +1 -1
  104. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  105. package/dist/services/content-source-maps.d.ts.map +1 -1
  106. package/dist/services/core-store.d.ts.map +1 -1
  107. package/dist/services/core-store.js +1 -1
  108. package/dist/services/core-store.js.map +1 -1
  109. package/dist/services/core-store.mjs +1 -1
  110. package/dist/services/core-store.mjs.map +1 -1
  111. package/dist/services/cron.d.ts +5 -5
  112. package/dist/services/custom-fields.d.ts.map +1 -1
  113. package/dist/services/document-service/attributes/index.d.ts +0 -1
  114. package/dist/services/document-service/attributes/index.d.ts.map +1 -1
  115. package/dist/services/document-service/common.d.ts.map +1 -1
  116. package/dist/services/document-service/components.d.ts +2 -2
  117. package/dist/services/document-service/components.d.ts.map +1 -1
  118. package/dist/services/document-service/components.js +7 -7
  119. package/dist/services/document-service/components.js.map +1 -1
  120. package/dist/services/document-service/components.mjs +7 -7
  121. package/dist/services/document-service/components.mjs.map +1 -1
  122. package/dist/services/document-service/draft-and-publish.d.ts +0 -1
  123. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  124. package/dist/services/document-service/entries.d.ts.map +1 -1
  125. package/dist/services/document-service/events.d.ts.map +1 -1
  126. package/dist/services/document-service/first-published-at.d.ts.map +1 -1
  127. package/dist/services/document-service/index.d.ts.map +1 -1
  128. package/dist/services/document-service/internationalization.d.ts +0 -1
  129. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  130. package/dist/services/document-service/middlewares/middleware-manager.d.ts.map +1 -1
  131. package/dist/services/document-service/params.d.ts +1 -1
  132. package/dist/services/document-service/params.d.ts.map +1 -1
  133. package/dist/services/document-service/publication-filter.d.ts +1 -1
  134. package/dist/services/document-service/publication-filter.d.ts.map +1 -1
  135. package/dist/services/document-service/repository.d.ts.map +1 -1
  136. package/dist/services/document-service/repository.js +12 -8
  137. package/dist/services/document-service/repository.js.map +1 -1
  138. package/dist/services/document-service/repository.mjs +12 -8
  139. package/dist/services/document-service/repository.mjs.map +1 -1
  140. package/dist/services/document-service/transform/data.d.ts.map +1 -1
  141. package/dist/services/document-service/transform/fields.d.ts.map +1 -1
  142. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  143. package/dist/services/document-service/transform/id-map.js +7 -4
  144. package/dist/services/document-service/transform/id-map.js.map +1 -1
  145. package/dist/services/document-service/transform/id-map.mjs +7 -4
  146. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  147. package/dist/services/document-service/transform/id-transform.d.ts +0 -1
  148. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  149. package/dist/services/document-service/transform/populate.d.ts.map +1 -1
  150. package/dist/services/document-service/transform/query.d.ts +0 -1
  151. package/dist/services/document-service/transform/query.d.ts.map +1 -1
  152. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  153. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  154. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts.map +1 -1
  155. package/dist/services/document-service/transform/relations/utils/data.d.ts.map +1 -1
  156. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  157. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  158. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  159. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts +0 -1
  160. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  161. package/dist/services/document-service/transform/relations/utils/xto-one.d.ts.map +1 -1
  162. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -1
  163. package/dist/services/document-service/utils/bidirectional-relations.js +7 -2
  164. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -1
  165. package/dist/services/document-service/utils/bidirectional-relations.mjs +7 -2
  166. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -1
  167. package/dist/services/document-service/utils/clean-component-join-table.d.ts.map +1 -1
  168. package/dist/services/document-service/utils/ordered-parallel.d.ts.map +1 -1
  169. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  170. package/dist/services/document-service/utils/self-referential-relations.d.ts +6 -1
  171. package/dist/services/document-service/utils/self-referential-relations.d.ts.map +1 -1
  172. package/dist/services/document-service/utils/self-referential-relations.js +120 -7
  173. package/dist/services/document-service/utils/self-referential-relations.js.map +1 -1
  174. package/dist/services/document-service/utils/self-referential-relations.mjs +120 -7
  175. package/dist/services/document-service/utils/self-referential-relations.mjs.map +1 -1
  176. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
  177. package/dist/services/entity-service/index.d.ts.map +1 -1
  178. package/dist/services/entity-service/index.js +1 -1
  179. package/dist/services/entity-service/index.js.map +1 -1
  180. package/dist/services/entity-service/index.mjs +1 -1
  181. package/dist/services/entity-service/index.mjs.map +1 -1
  182. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  183. package/dist/services/entity-validator/validators.js +4 -2
  184. package/dist/services/entity-validator/validators.js.map +1 -1
  185. package/dist/services/entity-validator/validators.mjs +4 -2
  186. package/dist/services/entity-validator/validators.mjs.map +1 -1
  187. package/dist/services/errors.d.ts.map +1 -1
  188. package/dist/services/features.d.ts.map +1 -1
  189. package/dist/services/fs.d.ts.map +1 -1
  190. package/dist/services/mcp/authentication.d.ts.map +1 -1
  191. package/dist/services/mcp/handlers/handlePost.d.ts.map +1 -1
  192. package/dist/services/mcp/index.d.ts.map +1 -1
  193. package/dist/services/mcp/internal/McpCapabilityRegistry.d.ts +2 -2
  194. package/dist/services/mcp/internal/McpServerFactory.d.ts.map +1 -1
  195. package/dist/services/mcp/internal/syncMcpSessionCapabilities.d.ts.map +1 -1
  196. package/dist/services/mcp/metrics/metrics.d.ts.map +1 -1
  197. package/dist/services/mcp/metrics/normalizeMcpCapability.d.ts.map +1 -1
  198. package/dist/services/mcp/metrics/wrapCapabilityHandlerForMetrics.d.ts.map +1 -1
  199. package/dist/services/mcp/middleware/oauthDiscoveryFallback.d.ts.map +1 -1
  200. package/dist/services/mcp/prompt-registry.d.ts.map +1 -1
  201. package/dist/services/mcp/resource-registry.d.ts.map +1 -1
  202. package/dist/services/mcp/routes.d.ts +1 -1
  203. package/dist/services/mcp/routes.d.ts.map +1 -1
  204. package/dist/services/mcp/tool-registry.d.ts.map +1 -1
  205. package/dist/services/mcp/utils/createSafeCapabilityRegistration.d.ts.map +1 -1
  206. package/dist/services/mcp/utils/safeHandlerWrapper.d.ts.map +1 -1
  207. package/dist/services/mcp/utils/sendJsonRpcError.d.ts +0 -1
  208. package/dist/services/mcp/utils/sendJsonRpcError.d.ts.map +1 -1
  209. package/dist/services/mcp/utils/withTimeout.d.ts.map +1 -1
  210. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  211. package/dist/services/metrics/index.d.ts.map +1 -1
  212. package/dist/services/metrics/is-truthy.d.ts.map +1 -1
  213. package/dist/services/metrics/middleware.d.ts.map +1 -1
  214. package/dist/services/metrics/rate-limiter.d.ts +2 -1
  215. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  216. package/dist/services/metrics/sender.d.ts.map +1 -1
  217. package/dist/services/query-params.d.ts.map +1 -1
  218. package/dist/services/reloader.d.ts.map +1 -1
  219. package/dist/services/request-context.d.ts.map +1 -1
  220. package/dist/services/server/admin-api.d.ts +3 -5
  221. package/dist/services/server/admin-api.d.ts.map +1 -1
  222. package/dist/services/server/api.d.ts +3 -4
  223. package/dist/services/server/api.d.ts.map +1 -1
  224. package/dist/services/server/compose-endpoint.d.ts.map +1 -1
  225. package/dist/services/server/content-api.d.ts +3 -5
  226. package/dist/services/server/content-api.d.ts.map +1 -1
  227. package/dist/services/server/http-server.d.ts +0 -1
  228. package/dist/services/server/http-server.d.ts.map +1 -1
  229. package/dist/services/server/index.d.ts.map +1 -1
  230. package/dist/services/server/koa-methods.d.ts +107 -0
  231. package/dist/services/server/koa-methods.d.ts.map +1 -0
  232. package/dist/services/server/koa-methods.js +24 -0
  233. package/dist/services/server/koa-methods.js.map +1 -0
  234. package/dist/services/server/koa-methods.mjs +22 -0
  235. package/dist/services/server/koa-methods.mjs.map +1 -0
  236. package/dist/services/server/koa.d.ts +0 -9
  237. package/dist/services/server/koa.d.ts.map +1 -1
  238. package/dist/services/server/koa.js +6 -9
  239. package/dist/services/server/koa.js.map +1 -1
  240. package/dist/services/server/koa.mjs +7 -9
  241. package/dist/services/server/koa.mjs.map +1 -1
  242. package/dist/services/server/middleware.d.ts.map +1 -1
  243. package/dist/services/server/openapi.d.ts.map +1 -1
  244. package/dist/services/server/policy.d.ts.map +1 -1
  245. package/dist/services/server/register-middlewares.d.ts.map +1 -1
  246. package/dist/services/server/register-routes.d.ts.map +1 -1
  247. package/dist/services/server/routing.d.ts +0 -2
  248. package/dist/services/server/routing.d.ts.map +1 -1
  249. package/dist/services/session-manager.d.ts +20 -0
  250. package/dist/services/session-manager.d.ts.map +1 -1
  251. package/dist/services/session-manager.js +57 -0
  252. package/dist/services/session-manager.js.map +1 -1
  253. package/dist/services/session-manager.mjs +57 -0
  254. package/dist/services/session-manager.mjs.map +1 -1
  255. package/dist/services/webhook-store.d.ts.map +1 -1
  256. package/dist/utils/convert-custom-field-type.d.ts.map +1 -1
  257. package/dist/utils/cron.d.ts.map +1 -1
  258. package/dist/utils/fetch.d.ts.map +1 -1
  259. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  260. package/dist/utils/is-initialized.d.ts.map +1 -1
  261. package/dist/utils/load-config-file.d.ts.map +1 -1
  262. package/dist/utils/load-files.d.ts +1 -1
  263. package/dist/utils/load-files.d.ts.map +1 -1
  264. package/dist/utils/open-browser.d.ts +0 -1
  265. package/dist/utils/open-browser.d.ts.map +1 -1
  266. package/dist/utils/resolve-working-dirs.d.ts.map +1 -1
  267. package/dist/utils/signals.d.ts.map +1 -1
  268. package/dist/utils/startup-logger.d.ts.map +1 -1
  269. package/dist/utils/transform-content-types-to-models.d.ts +3 -3
  270. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  271. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  272. package/package.json +17 -20
@@ -1 +1 @@
1
- {"version":3,"file":"core-store.js","sources":["../../src/services/core-store.ts"],"sourcesContent":["import { toString } from 'lodash/fp';\nimport type { Database, Model } from '@strapi/database';\n\nconst coreStoreModel: Model = {\n uid: 'strapi::core-store',\n singularName: 'strapi_core_store_settings',\n tableName: 'strapi_core_store_settings',\n attributes: {\n id: {\n type: 'increments',\n },\n key: {\n type: 'string',\n },\n value: {\n type: 'text',\n },\n type: {\n type: 'string',\n },\n environment: {\n type: 'string',\n },\n tag: {\n type: 'string',\n },\n },\n};\n\ntype SetParams = {\n key: string;\n value: unknown;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype GetParams = {\n key: string;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype Params = SetParams & GetParams;\n\ninterface CoreStore {\n (defaultParams: Partial<Params>): {\n get<T = unknown>(params: Partial<GetParams>): Promise<T>;\n set(params: Partial<SetParams>): Promise<void>;\n delete(params: Partial<GetParams>): Promise<void>;\n };\n get<T = unknown>(params: GetParams): Promise<T>;\n set(params: SetParams): Promise<void>;\n delete(params: GetParams): Promise<void>;\n}\n\nconst createCoreStore = ({ db }: { db: Database }) => {\n const mergeParams = (defaultParams: Partial<Params>, params: Params): Params => {\n return {\n ...defaultParams,\n ...params,\n };\n };\n\n const store: CoreStore = function (defaultParams: Partial<Params>) {\n return {\n get: (params: Params) => store.get(mergeParams(defaultParams, params)),\n set: (params: Params) => store.set(mergeParams(defaultParams, params)),\n delete: (params: Params) => store.delete(mergeParams(defaultParams, params)),\n };\n };\n\n /**\n * Get value from the core store\n */\n store.get = async (params) => {\n const { key, type = 'core', environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (!data) {\n return null;\n }\n\n if (\n data.type === 'object' ||\n data.type === 'array' ||\n data.type === 'boolean' ||\n data.type === 'string'\n ) {\n try {\n return JSON.parse(data.value);\n } catch (err) {\n return new Date(data.value);\n }\n } else if (data.type === 'number') {\n return Number(data.value);\n } else {\n return null;\n }\n };\n\n /**\n * Set value in the core store\n * @param {Object} params\n * @returns {*}\n */\n store.set = async (params) => {\n const { key, value, type, environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (data) {\n return db.query('strapi::core-store').update({\n where: { id: data.id },\n data: {\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n }\n\n return db.query('strapi::core-store').create({\n data: {\n ...where,\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n };\n\n /**\n * Deletes a value from the core store\n * @param {Object} params\n * @returns {*}\n */\n store.delete = async (params) => {\n const { key, environment, type, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n return db.query('strapi::core-store').delete({ where });\n };\n\n return store;\n};\n\nexport { coreStoreModel, createCoreStore };\n"],"names":["coreStoreModel","uid","singularName","tableName","attributes","id","type","key","value","environment","tag","createCoreStore","db","mergeParams","defaultParams","params","store","get","set","delete","name","prefix","where","data","query","findOne","JSON","parse","err","Date","Number","update","stringify","toString","create"],"mappings":"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"}
1
+ {"version":3,"file":"core-store.js","sources":["../../src/services/core-store.ts"],"sourcesContent":["import { toString } from 'lodash/fp';\nimport type { Database, Model } from '@strapi/database';\n\nconst coreStoreModel: Model = {\n uid: 'strapi::core-store',\n singularName: 'strapi_core_store_settings',\n tableName: 'strapi_core_store_settings',\n attributes: {\n id: {\n type: 'increments',\n },\n key: {\n type: 'string',\n },\n value: {\n type: 'text',\n },\n type: {\n type: 'string',\n },\n environment: {\n type: 'string',\n },\n tag: {\n type: 'string',\n },\n },\n};\n\ntype SetParams = {\n key: string;\n value: unknown;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype GetParams = {\n key: string;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype Params = SetParams & GetParams;\n\ninterface CoreStore {\n (defaultParams: Partial<Params>): {\n get<T = unknown>(params: Partial<GetParams>): Promise<T>;\n set(params: Partial<SetParams>): Promise<void>;\n delete(params: Partial<GetParams>): Promise<void>;\n };\n get<T = unknown>(params: GetParams): Promise<T>;\n set(params: SetParams): Promise<void>;\n delete(params: GetParams): Promise<void>;\n}\n\nconst createCoreStore = ({ db }: { db: Database }) => {\n const mergeParams = (defaultParams: Partial<Params>, params: Params): Params => {\n return {\n ...defaultParams,\n ...params,\n };\n };\n\n const store: CoreStore = function createScopedCoreStore(defaultParams: Partial<Params>) {\n return {\n get: (params: Params) => store.get(mergeParams(defaultParams, params)),\n set: (params: Params) => store.set(mergeParams(defaultParams, params)),\n delete: (params: Params) => store.delete(mergeParams(defaultParams, params)),\n };\n };\n\n /**\n * Get value from the core store\n */\n store.get = async (params) => {\n const { key, type = 'core', environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (!data) {\n return null;\n }\n\n if (\n data.type === 'object' ||\n data.type === 'array' ||\n data.type === 'boolean' ||\n data.type === 'string'\n ) {\n try {\n return JSON.parse(data.value);\n } catch (err) {\n return new Date(data.value);\n }\n } else if (data.type === 'number') {\n return Number(data.value);\n } else {\n return null;\n }\n };\n\n /**\n * Set value in the core store\n * @param {Object} params\n * @returns {*}\n */\n store.set = async (params) => {\n const { key, value, type, environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (data) {\n return db.query('strapi::core-store').update({\n where: { id: data.id },\n data: {\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n }\n\n return db.query('strapi::core-store').create({\n data: {\n ...where,\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n };\n\n /**\n * Deletes a value from the core store\n * @param {Object} params\n * @returns {*}\n */\n store.delete = async (params) => {\n const { key, environment, type, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n return db.query('strapi::core-store').delete({ where });\n };\n\n return store;\n};\n\nexport { coreStoreModel, createCoreStore };\n"],"names":["coreStoreModel","uid","singularName","tableName","attributes","id","type","key","value","environment","tag","createCoreStore","db","mergeParams","defaultParams","params","store","createScopedCoreStore","get","set","delete","name","prefix","where","data","query","findOne","JSON","parse","err","Date","Number","update","stringify","toString","create"],"mappings":"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"}
@@ -32,7 +32,7 @@ const createCoreStore = ({ db })=>{
32
32
  ...params
33
33
  };
34
34
  };
35
- const store = function(defaultParams) {
35
+ const store = function createScopedCoreStore(defaultParams) {
36
36
  return {
37
37
  get: (params)=>store.get(mergeParams(defaultParams, params)),
38
38
  set: (params)=>store.set(mergeParams(defaultParams, params)),
@@ -1 +1 @@
1
- {"version":3,"file":"core-store.mjs","sources":["../../src/services/core-store.ts"],"sourcesContent":["import { toString } from 'lodash/fp';\nimport type { Database, Model } from '@strapi/database';\n\nconst coreStoreModel: Model = {\n uid: 'strapi::core-store',\n singularName: 'strapi_core_store_settings',\n tableName: 'strapi_core_store_settings',\n attributes: {\n id: {\n type: 'increments',\n },\n key: {\n type: 'string',\n },\n value: {\n type: 'text',\n },\n type: {\n type: 'string',\n },\n environment: {\n type: 'string',\n },\n tag: {\n type: 'string',\n },\n },\n};\n\ntype SetParams = {\n key: string;\n value: unknown;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype GetParams = {\n key: string;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype Params = SetParams & GetParams;\n\ninterface CoreStore {\n (defaultParams: Partial<Params>): {\n get<T = unknown>(params: Partial<GetParams>): Promise<T>;\n set(params: Partial<SetParams>): Promise<void>;\n delete(params: Partial<GetParams>): Promise<void>;\n };\n get<T = unknown>(params: GetParams): Promise<T>;\n set(params: SetParams): Promise<void>;\n delete(params: GetParams): Promise<void>;\n}\n\nconst createCoreStore = ({ db }: { db: Database }) => {\n const mergeParams = (defaultParams: Partial<Params>, params: Params): Params => {\n return {\n ...defaultParams,\n ...params,\n };\n };\n\n const store: CoreStore = function (defaultParams: Partial<Params>) {\n return {\n get: (params: Params) => store.get(mergeParams(defaultParams, params)),\n set: (params: Params) => store.set(mergeParams(defaultParams, params)),\n delete: (params: Params) => store.delete(mergeParams(defaultParams, params)),\n };\n };\n\n /**\n * Get value from the core store\n */\n store.get = async (params) => {\n const { key, type = 'core', environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (!data) {\n return null;\n }\n\n if (\n data.type === 'object' ||\n data.type === 'array' ||\n data.type === 'boolean' ||\n data.type === 'string'\n ) {\n try {\n return JSON.parse(data.value);\n } catch (err) {\n return new Date(data.value);\n }\n } else if (data.type === 'number') {\n return Number(data.value);\n } else {\n return null;\n }\n };\n\n /**\n * Set value in the core store\n * @param {Object} params\n * @returns {*}\n */\n store.set = async (params) => {\n const { key, value, type, environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (data) {\n return db.query('strapi::core-store').update({\n where: { id: data.id },\n data: {\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n }\n\n return db.query('strapi::core-store').create({\n data: {\n ...where,\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n };\n\n /**\n * Deletes a value from the core store\n * @param {Object} params\n * @returns {*}\n */\n store.delete = async (params) => {\n const { key, environment, type, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n return db.query('strapi::core-store').delete({ where });\n };\n\n return store;\n};\n\nexport { coreStoreModel, createCoreStore };\n"],"names":["coreStoreModel","uid","singularName","tableName","attributes","id","type","key","value","environment","tag","createCoreStore","db","mergeParams","defaultParams","params","store","get","set","delete","name","prefix","where","data","query","findOne","JSON","parse","err","Date","Number","update","stringify","toString","create"],"mappings":"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"}
1
+ {"version":3,"file":"core-store.mjs","sources":["../../src/services/core-store.ts"],"sourcesContent":["import { toString } from 'lodash/fp';\nimport type { Database, Model } from '@strapi/database';\n\nconst coreStoreModel: Model = {\n uid: 'strapi::core-store',\n singularName: 'strapi_core_store_settings',\n tableName: 'strapi_core_store_settings',\n attributes: {\n id: {\n type: 'increments',\n },\n key: {\n type: 'string',\n },\n value: {\n type: 'text',\n },\n type: {\n type: 'string',\n },\n environment: {\n type: 'string',\n },\n tag: {\n type: 'string',\n },\n },\n};\n\ntype SetParams = {\n key: string;\n value: unknown;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype GetParams = {\n key: string;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype Params = SetParams & GetParams;\n\ninterface CoreStore {\n (defaultParams: Partial<Params>): {\n get<T = unknown>(params: Partial<GetParams>): Promise<T>;\n set(params: Partial<SetParams>): Promise<void>;\n delete(params: Partial<GetParams>): Promise<void>;\n };\n get<T = unknown>(params: GetParams): Promise<T>;\n set(params: SetParams): Promise<void>;\n delete(params: GetParams): Promise<void>;\n}\n\nconst createCoreStore = ({ db }: { db: Database }) => {\n const mergeParams = (defaultParams: Partial<Params>, params: Params): Params => {\n return {\n ...defaultParams,\n ...params,\n };\n };\n\n const store: CoreStore = function createScopedCoreStore(defaultParams: Partial<Params>) {\n return {\n get: (params: Params) => store.get(mergeParams(defaultParams, params)),\n set: (params: Params) => store.set(mergeParams(defaultParams, params)),\n delete: (params: Params) => store.delete(mergeParams(defaultParams, params)),\n };\n };\n\n /**\n * Get value from the core store\n */\n store.get = async (params) => {\n const { key, type = 'core', environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (!data) {\n return null;\n }\n\n if (\n data.type === 'object' ||\n data.type === 'array' ||\n data.type === 'boolean' ||\n data.type === 'string'\n ) {\n try {\n return JSON.parse(data.value);\n } catch (err) {\n return new Date(data.value);\n }\n } else if (data.type === 'number') {\n return Number(data.value);\n } else {\n return null;\n }\n };\n\n /**\n * Set value in the core store\n * @param {Object} params\n * @returns {*}\n */\n store.set = async (params) => {\n const { key, value, type, environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (data) {\n return db.query('strapi::core-store').update({\n where: { id: data.id },\n data: {\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n }\n\n return db.query('strapi::core-store').create({\n data: {\n ...where,\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n };\n\n /**\n * Deletes a value from the core store\n * @param {Object} params\n * @returns {*}\n */\n store.delete = async (params) => {\n const { key, environment, type, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n return db.query('strapi::core-store').delete({ where });\n };\n\n return store;\n};\n\nexport { coreStoreModel, createCoreStore };\n"],"names":["coreStoreModel","uid","singularName","tableName","attributes","id","type","key","value","environment","tag","createCoreStore","db","mergeParams","defaultParams","params","store","createScopedCoreStore","get","set","delete","name","prefix","where","data","query","findOne","JSON","parse","err","Date","Number","update","stringify","toString","create"],"mappings":"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"}
@@ -16,11 +16,11 @@ interface Tasks {
16
16
  [key: string]: Task;
17
17
  }
18
18
  declare const createCronService: () => {
19
- add(tasks?: Tasks): any;
20
- remove(name: string): any;
21
- start(): any;
22
- stop(): any;
23
- destroy(): any;
19
+ add(tasks?: Tasks): /*elided*/ any;
20
+ remove(name: string): /*elided*/ any;
21
+ start(): /*elided*/ any;
22
+ stop(): /*elided*/ any;
23
+ destroy(): /*elided*/ any;
24
24
  jobs: JobSpec[];
25
25
  };
26
26
  export default createCronService;
@@ -1 +1 @@
1
- {"version":3,"file":"custom-fields.d.ts","sourceRoot":"","sources":["../../src/services/custom-fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEnD,QAAA,MAAM,kBAAkB,WAAY,KAAK,MAAM,KAAG,QAAQ,YAAY,CAAC,YAMtE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"custom-fields.d.ts","sourceRoot":"","sources":["../../src/services/custom-fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEnD,QAAA,MAAM,kBAAkB,GAAI,QAAQ,IAAI,CAAC,MAAM,KAAG,OAAO,CAAC,YAAY,CAAC,YAMtE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,4 +1,3 @@
1
- /// <reference types="lodash" />
2
1
  import type { UID, Modules } from '@strapi/types';
3
2
  type Data = Modules.Documents.Params.Data.Input<UID.Schema>;
4
3
  declare const applyTransforms: import("lodash").CurriedFunction2<import("@strapi/types/dist/struct").ComponentSchema | import("@strapi/types/dist/struct").ContentTypeSchema, Data, Data>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/document-service/attributes/index.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAU,MAAM,eAAe,CAAC;AAK1D,KAAK,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAE5D,QAAA,MAAM,eAAe,4JAsBnB,CAAC;AAEH,OAAO,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/document-service/attributes/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAU,MAAM,eAAe,CAAC;AAK1D,KAAK,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAE5D,QAAA,MAAM,eAAe,4JAsBnB,CAAC;AAEH,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,uBAAuB,GAAG,CAAC,eAAe,SAAS,GAAG,CAAC,WAAW,EAC5E,GAAG,EAAE,eAAe,EACpB,eAAe,EAAE,OAAO,CAAC,eAAe,CAAC,eAAe,KACrD,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,iBAAiB,OAAQ,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,eACxC,GAAG,EAAE,iBACvB,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,uBAAuB,GAAG,CAAC,eAAe,SAAS,GAAG,CAAC,WAAW,EAC5E,GAAG,EAAE,eAAe,EACpB,eAAe,EAAE,OAAO,CAAC,eAAe,CAAC,eAAe,KACrD,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,iBAAiB,GAAI,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,MACjD,GAAG,MAAM,GAAG,EAAE,iBACvB,CAAC"}
@@ -17,10 +17,10 @@ declare const getComponents: <TUID extends UID.Schema>(uid: TUID, entity: {
17
17
  declare const updateComponents: <TUID extends UID.Schema, TData extends Partial<Input<TUID>>>(uid: TUID, entityToUpdate: {
18
18
  id: Modules.EntityService.Params.Attribute.ID;
19
19
  }, data: TData) => Promise<ComponentBody>;
20
- declare const deleteComponents: <TUID extends UID.Schema, TEntity extends Data.Entity<TUID, Extract<keyof Schema.Attributes<TUID>, string>>>(uid: TUID, entityToDelete: TEntity, { loadComponents }?: {
20
+ declare const deleteComponents: <TUID extends UID.Schema, TEntity extends Data.Entity<TUID>>(uid: TUID, entityToDelete: TEntity, { loadComponents }?: {
21
21
  loadComponents?: boolean | undefined;
22
22
  }) => Promise<void>;
23
- declare const deleteComponent: <TUID extends `${string}.${string}`>(uid: TUID, componentToDelete: Data.Component<TUID>) => Promise<void>;
23
+ declare const deleteComponent: <TUID extends UID.Component>(uid: TUID, componentToDelete: Data.Component<TUID>) => Promise<void>;
24
24
  declare const assignComponentData: _.CurriedFunction3<import("@strapi/types/dist/struct").ComponentSchema | import("@strapi/types/dist/struct").ContentTypeSchema, ComponentBody, Input<UID.Schema>, ComponentBody & Partial<Input<UID.Schema>>>;
25
25
  /** *************************
26
26
  Component relation handling for document operations
@@ -1 +1 @@
1
- {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/components.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,KAAK,EAAS,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAUvE,KAAK,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE1E,KAAK,gBAAgB,CAAC,IAAI,SAAS,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAC1D,IAAI,EACJ,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,aAAa,CAAC,CAC/D,CAAC;AAEF,KAAK,oBAAoB,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAClF,KAAK,wBAAwB,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAErF,KAAK,cAAc,GAAG,oBAAoB,GAAG,wBAAwB,CAAC;AAEtE,KAAK,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AAE3E,KAAK,aAAa,GAAG;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,gBAAgB,CAAC;CAClD,CAAC;AAEF,QAAA,MAAM,iBAAiB,gLAStB,CAAC;AAGF,QAAA,MAAM,gBAAgB,4DACf,IAAI,QACH,KAAK,2BA6FZ,CAAC;AAEF,QAAA,MAAM,aAAa,iCACZ,IAAI,UACD;IAAE,EAAE,EAAE,QAAQ,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAA;CAAE,KACxD,QAAQ,iBAAiB,IAAI,CAAC,CAQhC,CAAC;AAMF,QAAA,MAAM,gBAAgB,qEACf,IAAI,kBACO;IAAE,EAAE,EAAE,QAAQ,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAA;CAAE,QAC3D,KAAK,2BAyEZ,CAAC;AAiGF,QAAA,MAAM,gBAAgB,oHACf,IAAI,kBACO,OAAO;;mBAqCxB,CAAC;AA4DF,QAAA,MAAM,eAAe,4CACd,IAAI,qBACU,KAAK,SAAS,CAAC,IAAI,CAAC,kBAIxC,CAAC;AAEF,QAAA,MAAM,mBAAmB,+MAIxB,CAAC;AAEF;;6BAE6B;AAE7B;;;;;;;;;;GAUG;AACH,QAAA,MAAM,mBAAmB,oBACN,OAAO,SAAS,eACpB,MAAM,GAAG,MAAM,6BACD,CAAC,OAAO,WAAW,GAAG,OAAO,SAAS,CAAC,EAAE,SAC7D;IAAE,GAAG,CAAC,EAAE,GAAG,CAAA;CAAE,KACnB,QAAQ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,IAAI,CA0C1E,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,4BAA4B,oBACf,OAAO,SAAS,KAChC,MAAM,OAAO,WAAW,GAAG,OAAO,SAAS,CAa7C,CAAC;AAsDF;;;GAGG;AACH,QAAA,MAAM,6BAA6B,mBAErB,OAAO,MAAM,EAAE,GAAG,CAAC,SACtB,OAAO,SAAS,GAAG,OAAO,WAAW,OACvC,GAAG,KACP,QAAQ,OAAO,CAqBnB,CAAC;AAEF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,6BAA6B,EAC7B,mBAAmB,EACnB,4BAA4B,GAC7B,CAAC"}
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/components.ts"],"names":[],"mappings":"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"}
@@ -180,8 +180,8 @@ const deleteOldDZComponents = async (uid, entityToUpdate, attributeName, dynamic
180
180
  id: pickStringifiedId(v),
181
181
  __component: v.__component
182
182
  }));
183
- idsToKeep.forEach(({ id, __component })=>{
184
- if (!allIds.find((el)=>el.id === id && el.__component === __component)) {
183
+ idsToKeep.forEach(({ id, __component: componentUID })=>{
184
+ if (!allIds.find((el)=>el.id === id && el.__component === componentUID)) {
185
185
  const err = new Error(`Some of the provided components in ${attributeName} are not related to the entity`);
186
186
  Object.assign(err, {
187
187
  status: 400
@@ -189,19 +189,19 @@ const deleteOldDZComponents = async (uid, entityToUpdate, attributeName, dynamic
189
189
  throw err;
190
190
  }
191
191
  });
192
- const idsToDelete = allIds.reduce((acc, { id, __component })=>{
193
- if (!idsToKeep.find((el)=>el.id === id && el.__component === __component)) {
192
+ const idsToDelete = allIds.reduce((acc, { id, __component: componentUID })=>{
193
+ if (!idsToKeep.find((el)=>el.id === id && el.__component === componentUID)) {
194
194
  acc.push({
195
195
  id,
196
- __component
196
+ __component: componentUID
197
197
  });
198
198
  }
199
199
  return acc;
200
200
  }, []);
201
201
  if (idsToDelete.length > 0) {
202
202
  for (const idToDelete of idsToDelete){
203
- const { id, __component } = idToDelete;
204
- await deleteComponent(__component, {
203
+ const { id, __component: componentUID } = idToDelete;
204
+ await deleteComponent(componentUID, {
205
205
  id
206
206
  });
207
207
  }
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sources":["../../../src/services/document-service/components.ts"],"sourcesContent":["import _ from 'lodash';\nimport { has, omit, pipe, assign, curry } from 'lodash/fp';\nimport type { Utils, UID, Schema, Data, Modules } from '@strapi/types';\nimport { contentTypes as contentTypesUtils, async, errors } from '@strapi/utils';\nimport {\n getComponentJoinTableName,\n getComponentJoinColumnEntityName,\n getComponentJoinColumnInverseName,\n getComponentTypeColumn,\n} from '../../utils/transform-content-types-to-models';\n\n// type aliases for readability\ntype Input<T extends UID.Schema> = Modules.Documents.Params.Data.Input<T>;\n\ntype LoadedComponents<TUID extends UID.Schema> = Data.Entity<\n TUID,\n Schema.AttributeNamesByType<TUID, 'component' | 'dynamiczone'>\n>;\n\ntype SingleComponentValue = Schema.Attribute.ComponentValue<UID.Component, false>;\ntype RepeatableComponentValue = Schema.Attribute.ComponentValue<UID.Component, true>;\n\ntype ComponentValue = SingleComponentValue | RepeatableComponentValue;\n\ntype DynamicZoneValue = Schema.Attribute.DynamicZoneValue<UID.Component[]>;\n\ntype ComponentBody = {\n [key: string]: ComponentValue | DynamicZoneValue;\n};\n\nconst omitComponentData = curry(\n (schema: Schema.Schema, data: Input<UID.Schema>): Partial<Input<UID.Schema>> => {\n const { attributes } = schema;\n const componentAttributes = Object.keys(attributes).filter((attributeName) =>\n contentTypesUtils.isComponentAttribute(attributes[attributeName])\n );\n\n return omit(componentAttributes, data);\n }\n);\n\n// NOTE: we could generalize the logic to allow CRUD of relation directly in the DB layer\nconst createComponents = async <TUID extends UID.Schema, TData extends Input<TUID>>(\n uid: TUID,\n data: TData\n) => {\n const { attributes = {} } = strapi.getModel(uid);\n\n const componentBody: ComponentBody = {};\n\n const attributeNames = Object.keys(attributes);\n\n for (const attributeName of attributeNames) {\n const attribute = attributes[attributeName];\n\n if (!has(attributeName, data) || !contentTypesUtils.isComponentAttribute(attribute)) {\n continue;\n }\n\n if (attribute.type === 'component') {\n const { component: componentUID, repeatable = false } = attribute;\n\n const componentValue = data[attributeName as keyof TData];\n\n if (componentValue === null) {\n continue;\n }\n\n if (repeatable === true) {\n if (!Array.isArray(componentValue)) {\n throw new Error('Expected an array to create repeatable component');\n }\n\n const components: RepeatableComponentValue = await async.map(componentValue, (value: any) =>\n createComponent(componentUID, value)\n );\n\n componentBody[attributeName] = components.map(({ id }) => {\n return {\n id,\n __pivot: {\n field: attributeName,\n component_type: componentUID,\n },\n };\n });\n } else {\n const component = await createComponent(\n componentUID,\n componentValue as Input<UID.Component>\n );\n\n componentBody[attributeName] = {\n id: component.id,\n __pivot: {\n field: attributeName,\n component_type: componentUID,\n },\n };\n }\n\n continue;\n }\n\n if (attribute.type === 'dynamiczone') {\n const dynamiczoneValues = data[\n attributeName as keyof TData\n ] as Modules.EntityService.Params.Attribute.GetValue<Schema.Attribute.DynamicZone>;\n\n if (!Array.isArray(dynamiczoneValues)) {\n throw new Error('Expected an array to create repeatable component');\n }\n\n const createDynamicZoneComponents = async (\n value: Utils.Array.Values<typeof dynamiczoneValues>\n ) => {\n const { id } = await createComponent(value.__component, value);\n return {\n id,\n __component: value.__component,\n __pivot: {\n field: attributeName,\n },\n };\n };\n\n // MySQL/MariaDB can cause deadlocks here if concurrency higher than 1\n componentBody[attributeName] = await async.map(\n dynamiczoneValues,\n createDynamicZoneComponents\n );\n\n continue;\n }\n }\n\n return componentBody;\n};\n\nconst getComponents = async <TUID extends UID.Schema>(\n uid: TUID,\n entity: { id: Modules.EntityService.Params.Attribute.ID }\n): Promise<LoadedComponents<TUID>> => {\n const componentAttributes = contentTypesUtils.getComponentAttributes(strapi.getModel(uid));\n\n if (_.isEmpty(componentAttributes)) {\n return {} as LoadedComponents<TUID>;\n }\n\n return strapi.db.query(uid).load(entity, componentAttributes) as Promise<LoadedComponents<TUID>>;\n};\n\n/*\n delete old components\n create or update\n*/\nconst updateComponents = async <TUID extends UID.Schema, TData extends Partial<Input<TUID>>>(\n uid: TUID,\n entityToUpdate: { id: Modules.EntityService.Params.Attribute.ID },\n data: TData\n) => {\n const { attributes = {} } = strapi.getModel(uid);\n\n const componentBody: ComponentBody = {};\n\n for (const attributeName of Object.keys(attributes)) {\n const attribute = attributes[attributeName];\n\n if (!has(attributeName, data)) {\n continue;\n }\n\n if (attribute.type === 'component') {\n const { component: componentUID, repeatable = false } = attribute;\n\n const componentValue = data[attributeName as keyof TData] as ComponentValue;\n await deleteOldComponents(uid, componentUID, entityToUpdate, attributeName, componentValue);\n\n if (repeatable === true) {\n if (!Array.isArray(componentValue)) {\n throw new Error('Expected an array to create repeatable component');\n }\n\n // MySQL/MariaDB can cause deadlocks here if concurrency higher than 1\n const components: RepeatableComponentValue = await async.map(componentValue, (value: any) =>\n updateOrCreateComponent(componentUID, value)\n );\n\n componentBody[attributeName] = components.filter(_.negate(_.isNil)).map(({ id }) => {\n return {\n id,\n __pivot: {\n field: attributeName,\n component_type: componentUID,\n },\n };\n });\n } else {\n const component = await updateOrCreateComponent(componentUID, componentValue);\n componentBody[attributeName] = component && {\n id: component.id,\n __pivot: {\n field: attributeName,\n component_type: componentUID,\n },\n };\n }\n } else if (attribute.type === 'dynamiczone') {\n const dynamiczoneValues = data[attributeName as keyof TData] as DynamicZoneValue;\n\n await deleteOldDZComponents(uid, entityToUpdate, attributeName, dynamiczoneValues);\n\n if (!Array.isArray(dynamiczoneValues)) {\n throw new Error('Expected an array to create repeatable component');\n }\n\n // MySQL/MariaDB can cause deadlocks here if concurrency higher than 1\n componentBody[attributeName] = await async.map(dynamiczoneValues, async (value: any) => {\n const { id } = await updateOrCreateComponent(value.__component, value);\n\n return {\n id,\n __component: value.__component,\n __pivot: {\n field: attributeName,\n },\n };\n });\n }\n }\n\n return componentBody;\n};\n\nconst pickStringifiedId = ({\n id,\n}: {\n id: Modules.EntityService.Params.Attribute.ID;\n}): Modules.EntityService.Params.Attribute.ID & string => {\n if (typeof id === 'string') {\n return id;\n }\n\n return `${id}`;\n};\n\nconst deleteOldComponents = async <TUID extends UID.Schema>(\n uid: TUID,\n componentUID: UID.Component,\n entityToUpdate: { id: Modules.EntityService.Params.Attribute.ID },\n attributeName: string,\n componentValue: ComponentValue\n) => {\n const previousValue = (await strapi.db\n .query(uid)\n .load(entityToUpdate, attributeName)) as ComponentValue;\n const idsToKeep = _.castArray(componentValue).filter(has('id')).map(pickStringifiedId);\n const allIds = _.castArray(previousValue).filter(has('id')).map(pickStringifiedId);\n\n idsToKeep.forEach((id) => {\n if (!allIds.includes(id)) {\n throw new errors.ApplicationError(\n `Some of the provided components in ${attributeName} are not related to the entity`\n );\n }\n });\n\n const idsToDelete = _.difference(allIds, idsToKeep);\n\n if (idsToDelete.length > 0) {\n for (const idToDelete of idsToDelete) {\n await deleteComponent(componentUID, { id: idToDelete });\n }\n }\n};\n\nconst deleteOldDZComponents = async <TUID extends UID.Schema>(\n uid: TUID,\n entityToUpdate: { id: Modules.EntityService.Params.Attribute.ID },\n attributeName: string,\n dynamiczoneValues: DynamicZoneValue\n) => {\n const previousValue = (await strapi.db\n .query(uid)\n .load(entityToUpdate, attributeName)) as DynamicZoneValue;\n\n const idsToKeep = _.castArray(dynamiczoneValues)\n .filter(has('id'))\n .map((v) => ({\n id: pickStringifiedId(v),\n __component: v.__component,\n }));\n\n const allIds = _.castArray(previousValue)\n .filter(has('id'))\n .map((v) => ({\n id: pickStringifiedId(v),\n __component: v.__component,\n }));\n\n idsToKeep.forEach(({ id, __component }) => {\n if (!allIds.find((el) => el.id === id && el.__component === __component)) {\n const err = new Error(\n `Some of the provided components in ${attributeName} are not related to the entity`\n );\n\n Object.assign(err, { status: 400 });\n throw err;\n }\n });\n\n type IdsToDelete = DynamicZoneValue;\n\n const idsToDelete = allIds.reduce((acc, { id, __component }) => {\n if (!idsToKeep.find((el) => el.id === id && el.__component === __component)) {\n acc.push({ id, __component });\n }\n\n return acc;\n }, [] as IdsToDelete);\n\n if (idsToDelete.length > 0) {\n for (const idToDelete of idsToDelete) {\n const { id, __component } = idToDelete;\n await deleteComponent(__component, { id });\n }\n }\n};\n\nconst deleteComponents = async <TUID extends UID.Schema, TEntity extends Data.Entity<TUID>>(\n uid: TUID,\n entityToDelete: TEntity,\n { loadComponents = true } = {}\n) => {\n const { attributes = {} } = strapi.getModel(uid);\n\n const attributeNames = Object.keys(attributes);\n\n for (const attributeName of attributeNames) {\n const attribute = attributes[attributeName];\n\n if (attribute.type === 'component' || attribute.type === 'dynamiczone') {\n let value;\n\n if (loadComponents) {\n value = await strapi.db.query(uid).load(entityToDelete, attributeName);\n } else {\n value = entityToDelete[attributeName as keyof TEntity];\n }\n\n if (!value) {\n continue;\n }\n\n if (attribute.type === 'component') {\n const { component: componentUID } = attribute;\n await async.map(_.castArray(value), (subValue: any) =>\n deleteComponent(componentUID, subValue)\n );\n } else {\n await async.map(_.castArray(value), (subValue: any) =>\n deleteComponent(subValue.__component, subValue)\n );\n }\n\n continue;\n }\n }\n};\n\n/** *************************\n Component queries\n************************** */\n\n// components can have nested compos so this must be recursive\nconst createComponent = async <TUID extends UID.Component>(\n uid: TUID,\n data: Input<TUID>\n): Promise<Data.Component<TUID>> => {\n const schema = strapi.getModel(uid);\n\n const componentData = await createComponents(uid, data);\n\n const transform = pipe(\n // Make sure we don't save the component with a pre-defined ID\n omit('id'),\n assignComponentData(schema, componentData)\n );\n\n return strapi.db.query(uid).create({ data: transform(data) });\n};\n\n// components can have nested compos so this must be recursive\nconst updateComponent = async <TUID extends UID.Component>(\n uid: TUID,\n componentToUpdate: { id: Modules.EntityService.Params.Attribute.ID },\n data: Input<TUID>\n) => {\n const schema = strapi.getModel(uid);\n\n const componentData = await updateComponents(uid, componentToUpdate, data);\n\n return strapi.db.query(uid).update({\n where: {\n id: componentToUpdate.id,\n },\n data: assignComponentData(schema, componentData, data),\n });\n};\n\nconst updateOrCreateComponent = <TUID extends UID.Component>(\n componentUID: TUID,\n value: Input<TUID>\n) => {\n if (value === null) {\n return null;\n }\n\n // update\n if ('id' in value && typeof value.id !== 'undefined') {\n // TODO: verify the compo is associated with the entity\n return updateComponent(componentUID, { id: value.id }, value);\n }\n\n // create\n return createComponent(componentUID, value);\n};\n\nconst deleteComponent = async <TUID extends UID.Component>(\n uid: TUID,\n componentToDelete: Data.Component<TUID>\n) => {\n await deleteComponents(uid, componentToDelete);\n await strapi.db.query(uid).delete({ where: { id: componentToDelete.id } });\n};\n\nconst assignComponentData = curry(\n (schema: Schema.Schema, componentData: ComponentBody, data: Input<UID.Schema>) => {\n return pipe(omitComponentData(schema), assign(componentData))(data);\n }\n);\n\n/** *************************\n Component relation handling for document operations\n************************** */\n\n/**\n * Find the parent entry of a component instance.\n *\n * Given a component model, a specific component instance id, and the list of\n * possible parent content types (those that can embed this component),\n * this function checks each parent's *_cmps join table to see if the component\n * instance is linked to a parent entity.\n *\n * - Returns the parent uid, parent table name, and parent id if found.\n * - Returns null if no parent relationship exists.\n */\nconst findComponentParent = async (\n componentSchema: Schema.Component,\n componentId: number | string,\n parentSchemasForComponent: (Schema.ContentType | Schema.Component)[],\n opts?: { trx?: any }\n): Promise<{ uid: string; table: string; parentId: number | string } | null> => {\n if (!componentSchema?.uid) return null;\n\n const schemaBuilder = strapi.db.getSchemaConnection(opts?.trx);\n const withTrx = (qb: any) => (opts?.trx ? qb.transacting(opts.trx) : qb);\n\n for (const parent of parentSchemasForComponent) {\n if (!parent.collectionName) continue;\n\n // Use the exact same functions that create the tables\n const identifiers = strapi.db.metadata.identifiers;\n const joinTableName = getComponentJoinTableName(parent.collectionName, identifiers);\n\n try {\n const tableExists = await schemaBuilder.hasTable(joinTableName);\n if (!tableExists) continue;\n\n // Use the exact same functions that create the columns\n const entityIdColumn = getComponentJoinColumnEntityName(identifiers);\n const componentIdColumn = getComponentJoinColumnInverseName(identifiers);\n const componentTypeColumn = getComponentTypeColumn(identifiers);\n\n const parentRow = await withTrx(strapi.db.getConnection(joinTableName))\n .where({\n [componentIdColumn]: componentId,\n [componentTypeColumn]: componentSchema.uid,\n })\n .first(entityIdColumn);\n\n if (parentRow) {\n return {\n uid: parent.uid,\n table: parent.collectionName,\n parentId: parentRow[entityIdColumn],\n };\n }\n } catch {\n continue;\n }\n }\n\n return null;\n};\n\n/**\n * Finds content types that contain the given component and have draft & publish enabled.\n */\nconst getParentSchemasForComponent = (\n componentSchema: Schema.Component\n): Array<Schema.ContentType | Schema.Component> => {\n // Find direct parents in contentTypes and components\n return [...Object.values(strapi.contentTypes), ...Object.values(strapi.components)].filter(\n (schema: any) => {\n if (!schema?.attributes) return false;\n return Object.values(schema.attributes).some((attr: any) => {\n return (\n (attr.type === 'component' && attr.component === componentSchema.uid) ||\n (attr.type === 'dynamiczone' && attr.components?.includes(componentSchema.uid))\n );\n });\n }\n );\n};\n\n/**\n * Determines if a component relation should be propagated to a new document version\n * when a document with draft and publish is updated.\n */\nconst shouldPropagateComponentRelationToNewVersion = async (\n componentRelation: Record<string, any>,\n componentSchema: Schema.Component,\n parentSchemasForComponent: (Schema.ContentType | Schema.Component)[],\n trx: any\n): Promise<boolean> => {\n // Get the component ID column name using the actual component model name\n const componentIdColumn = strapi.db.metadata.identifiers.getJoinColumnAttributeIdName(\n _.snakeCase(componentSchema.modelName)\n );\n\n const componentId = componentRelation[componentIdColumn] ?? componentRelation.parentId;\n\n const parent = await findComponentParent(\n componentSchema,\n componentId,\n parentSchemasForComponent,\n { trx }\n );\n\n // Keep relation if component has no parent entry\n if (!parent?.uid) {\n return true;\n }\n\n if (strapi.components[parent.uid as UID.Component]) {\n // If the parent is a component, we need to check its parents recursively\n const parentComponentSchema = strapi.components[parent.uid as UID.Component];\n const grandParentSchemas = getParentSchemasForComponent(parentComponentSchema);\n return shouldPropagateComponentRelationToNewVersion(\n parent,\n parentComponentSchema,\n grandParentSchemas,\n trx\n );\n }\n\n const parentContentType = strapi.contentTypes[parent.uid as UID.ContentType];\n\n // Keep relation if parent doesn't have draft & publish enabled\n if (!parentContentType?.options?.draftAndPublish) {\n return true;\n }\n\n // Discard relation if parent has draft & publish enabled\n return false;\n};\n\n/**\n * Creates a filter function for component relations that can be passed to the generic\n * unidirectional relations utility\n */\nconst createComponentRelationFilter = () => {\n return async (\n relation: Record<string, any>,\n model: Schema.Component | Schema.ContentType,\n trx: any\n ): Promise<boolean> => {\n // Only apply component-specific filtering for components\n if (model.modelType !== 'component') {\n return true;\n }\n\n const componentSchema = model as Schema.Component;\n const parentSchemas = getParentSchemasForComponent(componentSchema);\n\n // Exit if no draft & publish parent types exist\n if (parentSchemas.length === 0) {\n return true;\n }\n\n return shouldPropagateComponentRelationToNewVersion(\n relation,\n componentSchema,\n parentSchemas,\n trx\n );\n };\n};\n\nexport {\n omitComponentData,\n assignComponentData,\n getComponents,\n createComponents,\n updateComponents,\n deleteComponents,\n deleteComponent,\n createComponentRelationFilter,\n findComponentParent,\n getParentSchemasForComponent,\n};\n"],"names":["omitComponentData","curry","schema","data","attributes","componentAttributes","Object","keys","filter","attributeName","contentTypesUtils","isComponentAttribute","omit","createComponents","uid","strapi","getModel","componentBody","attributeNames","attribute","has","type","component","componentUID","repeatable","componentValue","Array","isArray","Error","components","async","map","value","createComponent","id","__pivot","field","component_type","dynamiczoneValues","createDynamicZoneComponents","__component","getComponents","entity","getComponentAttributes","_","isEmpty","db","query","load","updateComponents","entityToUpdate","deleteOldComponents","updateOrCreateComponent","negate","isNil","deleteOldDZComponents","pickStringifiedId","previousValue","idsToKeep","castArray","allIds","forEach","includes","errors","ApplicationError","idsToDelete","difference","length","idToDelete","deleteComponent","v","find","el","err","assign","status","reduce","acc","push","deleteComponents","entityToDelete","loadComponents","subValue","componentData","transform","pipe","assignComponentData","create","updateComponent","componentToUpdate","update","where","componentToDelete","delete","findComponentParent","componentSchema","componentId","parentSchemasForComponent","opts","schemaBuilder","getSchemaConnection","trx","withTrx","qb","transacting","parent","collectionName","identifiers","metadata","joinTableName","getComponentJoinTableName","tableExists","hasTable","entityIdColumn","getComponentJoinColumnEntityName","componentIdColumn","getComponentJoinColumnInverseName","componentTypeColumn","getComponentTypeColumn","parentRow","getConnection","first","table","parentId","getParentSchemasForComponent","values","contentTypes","some","attr","shouldPropagateComponentRelationToNewVersion","componentRelation","getJoinColumnAttributeIdName","snakeCase","modelName","parentComponentSchema","grandParentSchemas","parentContentType","options","draftAndPublish","createComponentRelationFilter","relation","model","modelType","parentSchemas"],"mappings":"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"}
1
+ {"version":3,"file":"components.js","sources":["../../../src/services/document-service/components.ts"],"sourcesContent":["import _ from 'lodash';\nimport { has, omit, pipe, assign, curry } from 'lodash/fp';\nimport type { Utils, UID, Schema, Data, Modules } from '@strapi/types';\nimport { contentTypes as contentTypesUtils, async, errors } from '@strapi/utils';\nimport {\n getComponentJoinTableName,\n getComponentJoinColumnEntityName,\n getComponentJoinColumnInverseName,\n getComponentTypeColumn,\n} from '../../utils/transform-content-types-to-models';\n\n// type aliases for readability\ntype Input<T extends UID.Schema> = Modules.Documents.Params.Data.Input<T>;\n\ntype LoadedComponents<TUID extends UID.Schema> = Data.Entity<\n TUID,\n Schema.AttributeNamesByType<TUID, 'component' | 'dynamiczone'>\n>;\n\ntype SingleComponentValue = Schema.Attribute.ComponentValue<UID.Component, false>;\ntype RepeatableComponentValue = Schema.Attribute.ComponentValue<UID.Component, true>;\n\ntype ComponentValue = SingleComponentValue | RepeatableComponentValue;\n\ntype DynamicZoneValue = Schema.Attribute.DynamicZoneValue<UID.Component[]>;\n\ntype ComponentBody = {\n [key: string]: ComponentValue | DynamicZoneValue;\n};\n\nconst omitComponentData = curry(\n (schema: Schema.Schema, data: Input<UID.Schema>): Partial<Input<UID.Schema>> => {\n const { attributes } = schema;\n const componentAttributes = Object.keys(attributes).filter((attributeName) =>\n contentTypesUtils.isComponentAttribute(attributes[attributeName])\n );\n\n return omit(componentAttributes, data);\n }\n);\n\n// NOTE: we could generalize the logic to allow CRUD of relation directly in the DB layer\nconst createComponents = async <TUID extends UID.Schema, TData extends Input<TUID>>(\n uid: TUID,\n data: TData\n) => {\n const { attributes = {} } = strapi.getModel(uid);\n\n const componentBody: ComponentBody = {};\n\n const attributeNames = Object.keys(attributes);\n\n for (const attributeName of attributeNames) {\n const attribute = attributes[attributeName];\n\n if (!has(attributeName, data) || !contentTypesUtils.isComponentAttribute(attribute)) {\n continue;\n }\n\n if (attribute.type === 'component') {\n const { component: componentUID, repeatable = false } = attribute;\n\n const componentValue = data[attributeName as keyof TData];\n\n if (componentValue === null) {\n continue;\n }\n\n if (repeatable === true) {\n if (!Array.isArray(componentValue)) {\n throw new Error('Expected an array to create repeatable component');\n }\n\n const components: RepeatableComponentValue = await async.map(componentValue, (value: any) =>\n createComponent(componentUID, value)\n );\n\n componentBody[attributeName] = components.map(({ id }) => {\n return {\n id,\n __pivot: {\n field: attributeName,\n component_type: componentUID,\n },\n };\n });\n } else {\n const component = await createComponent(\n componentUID,\n componentValue as Input<UID.Component>\n );\n\n componentBody[attributeName] = {\n id: component.id,\n __pivot: {\n field: attributeName,\n component_type: componentUID,\n },\n };\n }\n\n continue;\n }\n\n if (attribute.type === 'dynamiczone') {\n const dynamiczoneValues = data[\n attributeName as keyof TData\n ] as Modules.EntityService.Params.Attribute.GetValue<Schema.Attribute.DynamicZone>;\n\n if (!Array.isArray(dynamiczoneValues)) {\n throw new Error('Expected an array to create repeatable component');\n }\n\n const createDynamicZoneComponents = async (\n value: Utils.Array.Values<typeof dynamiczoneValues>\n ) => {\n const { id } = await createComponent(value.__component, value);\n return {\n id,\n __component: value.__component,\n __pivot: {\n field: attributeName,\n },\n };\n };\n\n // MySQL/MariaDB can cause deadlocks here if concurrency higher than 1\n componentBody[attributeName] = await async.map(\n dynamiczoneValues,\n createDynamicZoneComponents\n );\n\n continue;\n }\n }\n\n return componentBody;\n};\n\nconst getComponents = async <TUID extends UID.Schema>(\n uid: TUID,\n entity: { id: Modules.EntityService.Params.Attribute.ID }\n): Promise<LoadedComponents<TUID>> => {\n const componentAttributes = contentTypesUtils.getComponentAttributes(strapi.getModel(uid));\n\n if (_.isEmpty(componentAttributes)) {\n return {} as LoadedComponents<TUID>;\n }\n\n return strapi.db.query(uid).load(entity, componentAttributes) as Promise<LoadedComponents<TUID>>;\n};\n\n/*\n delete old components\n create or update\n*/\nconst updateComponents = async <TUID extends UID.Schema, TData extends Partial<Input<TUID>>>(\n uid: TUID,\n entityToUpdate: { id: Modules.EntityService.Params.Attribute.ID },\n data: TData\n) => {\n const { attributes = {} } = strapi.getModel(uid);\n\n const componentBody: ComponentBody = {};\n\n for (const attributeName of Object.keys(attributes)) {\n const attribute = attributes[attributeName];\n\n if (!has(attributeName, data)) {\n continue;\n }\n\n if (attribute.type === 'component') {\n const { component: componentUID, repeatable = false } = attribute;\n\n const componentValue = data[attributeName as keyof TData] as ComponentValue;\n await deleteOldComponents(uid, componentUID, entityToUpdate, attributeName, componentValue);\n\n if (repeatable === true) {\n if (!Array.isArray(componentValue)) {\n throw new Error('Expected an array to create repeatable component');\n }\n\n // MySQL/MariaDB can cause deadlocks here if concurrency higher than 1\n const components: RepeatableComponentValue = await async.map(componentValue, (value: any) =>\n updateOrCreateComponent(componentUID, value)\n );\n\n componentBody[attributeName] = components.filter(_.negate(_.isNil)).map(({ id }) => {\n return {\n id,\n __pivot: {\n field: attributeName,\n component_type: componentUID,\n },\n };\n });\n } else {\n const component = await updateOrCreateComponent(componentUID, componentValue);\n componentBody[attributeName] = component && {\n id: component.id,\n __pivot: {\n field: attributeName,\n component_type: componentUID,\n },\n };\n }\n } else if (attribute.type === 'dynamiczone') {\n const dynamiczoneValues = data[attributeName as keyof TData] as DynamicZoneValue;\n\n await deleteOldDZComponents(uid, entityToUpdate, attributeName, dynamiczoneValues);\n\n if (!Array.isArray(dynamiczoneValues)) {\n throw new Error('Expected an array to create repeatable component');\n }\n\n // MySQL/MariaDB can cause deadlocks here if concurrency higher than 1\n componentBody[attributeName] = await async.map(dynamiczoneValues, async (value: any) => {\n const { id } = await updateOrCreateComponent(value.__component, value);\n\n return {\n id,\n __component: value.__component,\n __pivot: {\n field: attributeName,\n },\n };\n });\n }\n }\n\n return componentBody;\n};\n\nconst pickStringifiedId = ({\n id,\n}: {\n id: Modules.EntityService.Params.Attribute.ID;\n}): Modules.EntityService.Params.Attribute.ID & string => {\n if (typeof id === 'string') {\n return id;\n }\n\n return `${id}`;\n};\n\nconst deleteOldComponents = async <TUID extends UID.Schema>(\n uid: TUID,\n componentUID: UID.Component,\n entityToUpdate: { id: Modules.EntityService.Params.Attribute.ID },\n attributeName: string,\n componentValue: ComponentValue\n) => {\n const previousValue = (await strapi.db\n .query(uid)\n .load(entityToUpdate, attributeName)) as ComponentValue;\n const idsToKeep = _.castArray(componentValue).filter(has('id')).map(pickStringifiedId);\n const allIds = _.castArray(previousValue).filter(has('id')).map(pickStringifiedId);\n\n idsToKeep.forEach((id) => {\n if (!allIds.includes(id)) {\n throw new errors.ApplicationError(\n `Some of the provided components in ${attributeName} are not related to the entity`\n );\n }\n });\n\n const idsToDelete = _.difference(allIds, idsToKeep);\n\n if (idsToDelete.length > 0) {\n for (const idToDelete of idsToDelete) {\n await deleteComponent(componentUID, { id: idToDelete });\n }\n }\n};\n\nconst deleteOldDZComponents = async <TUID extends UID.Schema>(\n uid: TUID,\n entityToUpdate: { id: Modules.EntityService.Params.Attribute.ID },\n attributeName: string,\n dynamiczoneValues: DynamicZoneValue\n) => {\n const previousValue = (await strapi.db\n .query(uid)\n .load(entityToUpdate, attributeName)) as DynamicZoneValue;\n\n const idsToKeep = _.castArray(dynamiczoneValues)\n .filter(has('id'))\n .map((v) => ({\n id: pickStringifiedId(v),\n __component: v.__component,\n }));\n\n const allIds = _.castArray(previousValue)\n .filter(has('id'))\n .map((v) => ({\n id: pickStringifiedId(v),\n __component: v.__component,\n }));\n\n idsToKeep.forEach(({ id, __component: componentUID }) => {\n if (!allIds.find((el) => el.id === id && el.__component === componentUID)) {\n const err = new Error(\n `Some of the provided components in ${attributeName} are not related to the entity`\n );\n\n Object.assign(err, { status: 400 });\n throw err;\n }\n });\n\n type IdsToDelete = DynamicZoneValue;\n\n const idsToDelete = allIds.reduce((acc, { id, __component: componentUID }) => {\n if (!idsToKeep.find((el) => el.id === id && el.__component === componentUID)) {\n acc.push({ id, __component: componentUID });\n }\n\n return acc;\n }, [] as IdsToDelete);\n\n if (idsToDelete.length > 0) {\n for (const idToDelete of idsToDelete) {\n const { id, __component: componentUID } = idToDelete;\n await deleteComponent(componentUID, { id });\n }\n }\n};\n\nconst deleteComponents = async <TUID extends UID.Schema, TEntity extends Data.Entity<TUID>>(\n uid: TUID,\n entityToDelete: TEntity,\n { loadComponents = true } = {}\n) => {\n const { attributes = {} } = strapi.getModel(uid);\n\n const attributeNames = Object.keys(attributes);\n\n for (const attributeName of attributeNames) {\n const attribute = attributes[attributeName];\n\n if (attribute.type === 'component' || attribute.type === 'dynamiczone') {\n let value;\n\n if (loadComponents) {\n value = await strapi.db.query(uid).load(entityToDelete, attributeName);\n } else {\n value = entityToDelete[attributeName as keyof TEntity];\n }\n\n if (!value) {\n continue;\n }\n\n if (attribute.type === 'component') {\n const { component: componentUID } = attribute;\n await async.map(_.castArray(value), (subValue: any) =>\n deleteComponent(componentUID, subValue)\n );\n } else {\n await async.map(_.castArray(value), (subValue: any) =>\n deleteComponent(subValue.__component, subValue)\n );\n }\n\n continue;\n }\n }\n};\n\n/** *************************\n Component queries\n************************** */\n\n// components can have nested compos so this must be recursive\nconst createComponent = async <TUID extends UID.Component>(\n uid: TUID,\n data: Input<TUID>\n): Promise<Data.Component<TUID>> => {\n const schema = strapi.getModel(uid);\n\n const componentData = await createComponents(uid, data);\n\n const transform = pipe(\n // Make sure we don't save the component with a pre-defined ID\n omit('id'),\n assignComponentData(schema, componentData)\n );\n\n return strapi.db.query(uid).create({ data: transform(data) });\n};\n\n// components can have nested compos so this must be recursive\nconst updateComponent = async <TUID extends UID.Component>(\n uid: TUID,\n componentToUpdate: { id: Modules.EntityService.Params.Attribute.ID },\n data: Input<TUID>\n) => {\n const schema = strapi.getModel(uid);\n\n const componentData = await updateComponents(uid, componentToUpdate, data);\n\n return strapi.db.query(uid).update({\n where: {\n id: componentToUpdate.id,\n },\n data: assignComponentData(schema, componentData, data),\n });\n};\n\nconst updateOrCreateComponent = <TUID extends UID.Component>(\n componentUID: TUID,\n value: Input<TUID>\n) => {\n if (value === null) {\n return null;\n }\n\n // update\n if ('id' in value && typeof value.id !== 'undefined') {\n // TODO: verify the compo is associated with the entity\n return updateComponent(componentUID, { id: value.id }, value);\n }\n\n // create\n return createComponent(componentUID, value);\n};\n\nconst deleteComponent = async <TUID extends UID.Component>(\n uid: TUID,\n componentToDelete: Data.Component<TUID>\n) => {\n await deleteComponents(uid, componentToDelete);\n await strapi.db.query(uid).delete({ where: { id: componentToDelete.id } });\n};\n\nconst assignComponentData = curry(\n (schema: Schema.Schema, componentData: ComponentBody, data: Input<UID.Schema>) => {\n return pipe(omitComponentData(schema), assign(componentData))(data);\n }\n);\n\n/** *************************\n Component relation handling for document operations\n************************** */\n\n/**\n * Find the parent entry of a component instance.\n *\n * Given a component model, a specific component instance id, and the list of\n * possible parent content types (those that can embed this component),\n * this function checks each parent's *_cmps join table to see if the component\n * instance is linked to a parent entity.\n *\n * - Returns the parent uid, parent table name, and parent id if found.\n * - Returns null if no parent relationship exists.\n */\nconst findComponentParent = async (\n componentSchema: Schema.Component,\n componentId: number | string,\n parentSchemasForComponent: (Schema.ContentType | Schema.Component)[],\n opts?: { trx?: any }\n): Promise<{ uid: string; table: string; parentId: number | string } | null> => {\n if (!componentSchema?.uid) return null;\n\n const schemaBuilder = strapi.db.getSchemaConnection(opts?.trx);\n const withTrx = (qb: any) => (opts?.trx ? qb.transacting(opts.trx) : qb);\n\n for (const parent of parentSchemasForComponent) {\n if (!parent.collectionName) continue;\n\n // Use the exact same functions that create the tables\n const identifiers = strapi.db.metadata.identifiers;\n const joinTableName = getComponentJoinTableName(parent.collectionName, identifiers);\n\n try {\n const tableExists = await schemaBuilder.hasTable(joinTableName);\n if (!tableExists) continue;\n\n // Use the exact same functions that create the columns\n const entityIdColumn = getComponentJoinColumnEntityName(identifiers);\n const componentIdColumn = getComponentJoinColumnInverseName(identifiers);\n const componentTypeColumn = getComponentTypeColumn(identifiers);\n\n const parentRow = await withTrx(strapi.db.getConnection(joinTableName))\n .where({\n [componentIdColumn]: componentId,\n [componentTypeColumn]: componentSchema.uid,\n })\n .first(entityIdColumn);\n\n if (parentRow) {\n return {\n uid: parent.uid,\n table: parent.collectionName,\n parentId: parentRow[entityIdColumn],\n };\n }\n } catch {\n continue;\n }\n }\n\n return null;\n};\n\n/**\n * Finds content types that contain the given component and have draft & publish enabled.\n */\nconst getParentSchemasForComponent = (\n componentSchema: Schema.Component\n): Array<Schema.ContentType | Schema.Component> => {\n // Find direct parents in contentTypes and components\n return [...Object.values(strapi.contentTypes), ...Object.values(strapi.components)].filter(\n (schema: any) => {\n if (!schema?.attributes) return false;\n return Object.values(schema.attributes).some((attr: any) => {\n return (\n (attr.type === 'component' && attr.component === componentSchema.uid) ||\n (attr.type === 'dynamiczone' && attr.components?.includes(componentSchema.uid))\n );\n });\n }\n );\n};\n\n/**\n * Determines if a component relation should be propagated to a new document version\n * when a document with draft and publish is updated.\n */\nconst shouldPropagateComponentRelationToNewVersion = async (\n componentRelation: Record<string, any>,\n componentSchema: Schema.Component,\n parentSchemasForComponent: (Schema.ContentType | Schema.Component)[],\n trx: any\n): Promise<boolean> => {\n // Get the component ID column name using the actual component model name\n const componentIdColumn = strapi.db.metadata.identifiers.getJoinColumnAttributeIdName(\n _.snakeCase(componentSchema.modelName)\n );\n\n const componentId = componentRelation[componentIdColumn] ?? componentRelation.parentId;\n\n const parent = await findComponentParent(\n componentSchema,\n componentId,\n parentSchemasForComponent,\n { trx }\n );\n\n // Keep relation if component has no parent entry\n if (!parent?.uid) {\n return true;\n }\n\n if (strapi.components[parent.uid as UID.Component]) {\n // If the parent is a component, we need to check its parents recursively\n const parentComponentSchema = strapi.components[parent.uid as UID.Component];\n const grandParentSchemas = getParentSchemasForComponent(parentComponentSchema);\n return shouldPropagateComponentRelationToNewVersion(\n parent,\n parentComponentSchema,\n grandParentSchemas,\n trx\n );\n }\n\n const parentContentType = strapi.contentTypes[parent.uid as UID.ContentType];\n\n // Keep relation if parent doesn't have draft & publish enabled\n if (!parentContentType?.options?.draftAndPublish) {\n return true;\n }\n\n // Discard relation if parent has draft & publish enabled\n return false;\n};\n\n/**\n * Creates a filter function for component relations that can be passed to the generic\n * unidirectional relations utility\n */\nconst createComponentRelationFilter = () => {\n return async (\n relation: Record<string, any>,\n model: Schema.Component | Schema.ContentType,\n trx: any\n ): Promise<boolean> => {\n // Only apply component-specific filtering for components\n if (model.modelType !== 'component') {\n return true;\n }\n\n const componentSchema = model as Schema.Component;\n const parentSchemas = getParentSchemasForComponent(componentSchema);\n\n // Exit if no draft & publish parent types exist\n if (parentSchemas.length === 0) {\n return true;\n }\n\n return shouldPropagateComponentRelationToNewVersion(\n relation,\n componentSchema,\n parentSchemas,\n trx\n );\n };\n};\n\nexport {\n omitComponentData,\n assignComponentData,\n getComponents,\n createComponents,\n updateComponents,\n deleteComponents,\n deleteComponent,\n createComponentRelationFilter,\n findComponentParent,\n getParentSchemasForComponent,\n};\n"],"names":["omitComponentData","curry","schema","data","attributes","componentAttributes","Object","keys","filter","attributeName","contentTypesUtils","isComponentAttribute","omit","createComponents","uid","strapi","getModel","componentBody","attributeNames","attribute","has","type","component","componentUID","repeatable","componentValue","Array","isArray","Error","components","async","map","value","createComponent","id","__pivot","field","component_type","dynamiczoneValues","createDynamicZoneComponents","__component","getComponents","entity","getComponentAttributes","_","isEmpty","db","query","load","updateComponents","entityToUpdate","deleteOldComponents","updateOrCreateComponent","negate","isNil","deleteOldDZComponents","pickStringifiedId","previousValue","idsToKeep","castArray","allIds","forEach","includes","errors","ApplicationError","idsToDelete","difference","length","idToDelete","deleteComponent","v","find","el","err","assign","status","reduce","acc","push","deleteComponents","entityToDelete","loadComponents","subValue","componentData","transform","pipe","assignComponentData","create","updateComponent","componentToUpdate","update","where","componentToDelete","delete","findComponentParent","componentSchema","componentId","parentSchemasForComponent","opts","schemaBuilder","getSchemaConnection","trx","withTrx","qb","transacting","parent","collectionName","identifiers","metadata","joinTableName","getComponentJoinTableName","tableExists","hasTable","entityIdColumn","getComponentJoinColumnEntityName","componentIdColumn","getComponentJoinColumnInverseName","componentTypeColumn","getComponentTypeColumn","parentRow","getConnection","first","table","parentId","getParentSchemasForComponent","values","contentTypes","some","attr","shouldPropagateComponentRelationToNewVersion","componentRelation","getJoinColumnAttributeIdName","snakeCase","modelName","parentComponentSchema","grandParentSchemas","parentContentType","options","draftAndPublish","createComponentRelationFilter","relation","model","modelType","parentSchemas"],"mappings":"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"}
@@ -174,8 +174,8 @@ const deleteOldDZComponents = async (uid, entityToUpdate, attributeName, dynamic
174
174
  id: pickStringifiedId(v),
175
175
  __component: v.__component
176
176
  }));
177
- idsToKeep.forEach(({ id, __component })=>{
178
- if (!allIds.find((el)=>el.id === id && el.__component === __component)) {
177
+ idsToKeep.forEach(({ id, __component: componentUID })=>{
178
+ if (!allIds.find((el)=>el.id === id && el.__component === componentUID)) {
179
179
  const err = new Error(`Some of the provided components in ${attributeName} are not related to the entity`);
180
180
  Object.assign(err, {
181
181
  status: 400
@@ -183,19 +183,19 @@ const deleteOldDZComponents = async (uid, entityToUpdate, attributeName, dynamic
183
183
  throw err;
184
184
  }
185
185
  });
186
- const idsToDelete = allIds.reduce((acc, { id, __component })=>{
187
- if (!idsToKeep.find((el)=>el.id === id && el.__component === __component)) {
186
+ const idsToDelete = allIds.reduce((acc, { id, __component: componentUID })=>{
187
+ if (!idsToKeep.find((el)=>el.id === id && el.__component === componentUID)) {
188
188
  acc.push({
189
189
  id,
190
- __component
190
+ __component: componentUID
191
191
  });
192
192
  }
193
193
  return acc;
194
194
  }, []);
195
195
  if (idsToDelete.length > 0) {
196
196
  for (const idToDelete of idsToDelete){
197
- const { id, __component } = idToDelete;
198
- await deleteComponent(__component, {
197
+ const { id, __component: componentUID } = idToDelete;
198
+ await deleteComponent(componentUID, {
199
199
  id
200
200
  });
201
201
  }