@strapi/core 0.0.0-experimental.3f7b2587c5e3d548262671895cf11d8bf8c → 0.0.0-experimental.651a6b8ded3c452fedf2a8598f08c51c214e6cf7

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 (232) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/Strapi.js +7 -3
  3. package/dist/Strapi.js.map +1 -1
  4. package/dist/Strapi.mjs +6 -2
  5. package/dist/Strapi.mjs.map +1 -1
  6. package/dist/core-api/controller/collection-type.d.ts +1 -1
  7. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  8. package/dist/core-api/controller/collection-type.js +9 -20
  9. package/dist/core-api/controller/collection-type.js.map +1 -1
  10. package/dist/core-api/controller/collection-type.mjs +8 -20
  11. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  12. package/dist/core-api/controller/index.d.ts.map +1 -1
  13. package/dist/core-api/controller/index.js +2 -2
  14. package/dist/core-api/controller/index.js.map +1 -1
  15. package/dist/core-api/controller/index.mjs +2 -2
  16. package/dist/core-api/controller/index.mjs.map +1 -1
  17. package/dist/core-api/controller/single-type.d.ts +1 -1
  18. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  19. package/dist/core-api/controller/single-type.js +6 -11
  20. package/dist/core-api/controller/single-type.js.map +1 -1
  21. package/dist/core-api/controller/single-type.mjs +5 -11
  22. package/dist/core-api/controller/single-type.mjs.map +1 -1
  23. package/dist/core-api/controller/transform.d.ts +2 -11
  24. package/dist/core-api/controller/transform.d.ts.map +1 -1
  25. package/dist/core-api/controller/transform.js +4 -18
  26. package/dist/core-api/controller/transform.js.map +1 -1
  27. package/dist/core-api/controller/transform.mjs +4 -18
  28. package/dist/core-api/controller/transform.mjs.map +1 -1
  29. package/dist/core-api/service/collection-type.d.ts +28 -5
  30. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  31. package/dist/core-api/service/collection-type.js +47 -49
  32. package/dist/core-api/service/collection-type.js.map +1 -1
  33. package/dist/core-api/service/collection-type.mjs +47 -50
  34. package/dist/core-api/service/collection-type.mjs.map +1 -1
  35. package/dist/core-api/service/core-service.d.ts +4 -0
  36. package/dist/core-api/service/core-service.d.ts.map +1 -0
  37. package/dist/core-api/service/core-service.js +12 -0
  38. package/dist/core-api/service/core-service.js.map +1 -0
  39. package/dist/core-api/service/core-service.mjs +12 -0
  40. package/dist/core-api/service/core-service.mjs.map +1 -0
  41. package/dist/core-api/service/index.js +2 -2
  42. package/dist/core-api/service/index.js.map +1 -1
  43. package/dist/core-api/service/index.mjs +4 -4
  44. package/dist/core-api/service/index.mjs.map +1 -1
  45. package/dist/core-api/service/pagination.d.ts +1 -5
  46. package/dist/core-api/service/pagination.d.ts.map +1 -1
  47. package/dist/core-api/service/pagination.js +0 -11
  48. package/dist/core-api/service/pagination.js.map +1 -1
  49. package/dist/core-api/service/pagination.mjs +0 -11
  50. package/dist/core-api/service/pagination.mjs.map +1 -1
  51. package/dist/core-api/service/single-type.d.ts +14 -8
  52. package/dist/core-api/service/single-type.d.ts.map +1 -1
  53. package/dist/core-api/service/single-type.js +36 -50
  54. package/dist/core-api/service/single-type.js.map +1 -1
  55. package/dist/core-api/service/single-type.mjs +35 -50
  56. package/dist/core-api/service/single-type.mjs.map +1 -1
  57. package/dist/factories.d.ts.map +1 -1
  58. package/dist/factories.js +2 -12
  59. package/dist/factories.js.map +1 -1
  60. package/dist/factories.mjs +2 -12
  61. package/dist/factories.mjs.map +1 -1
  62. package/dist/registries/content-types.d.ts.map +1 -1
  63. package/dist/registries/content-types.js +1 -2
  64. package/dist/registries/content-types.js.map +1 -1
  65. package/dist/registries/content-types.mjs +1 -2
  66. package/dist/registries/content-types.mjs.map +1 -1
  67. package/dist/services/document-service/common.d.ts +4 -0
  68. package/dist/services/document-service/common.d.ts.map +1 -0
  69. package/dist/services/document-service/common.js +7 -0
  70. package/dist/services/document-service/common.js.map +1 -0
  71. package/dist/services/document-service/common.mjs +7 -0
  72. package/dist/services/document-service/common.mjs.map +1 -0
  73. package/dist/services/document-service/document-engine.d.ts.map +1 -1
  74. package/dist/services/document-service/document-engine.js +117 -76
  75. package/dist/services/document-service/document-engine.js.map +1 -1
  76. package/dist/services/document-service/document-engine.mjs +112 -71
  77. package/dist/services/document-service/document-engine.mjs.map +1 -1
  78. package/dist/services/document-service/draft-and-publish.d.ts +24 -0
  79. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -0
  80. package/dist/services/document-service/draft-and-publish.js +41 -0
  81. package/dist/services/document-service/draft-and-publish.js.map +1 -0
  82. package/dist/services/document-service/draft-and-publish.mjs +41 -0
  83. package/dist/services/document-service/draft-and-publish.mjs.map +1 -0
  84. package/dist/services/document-service/{document-service.d.ts → index.d.ts} +2 -4
  85. package/dist/services/document-service/index.d.ts.map +1 -0
  86. package/dist/services/document-service/index.js +22 -0
  87. package/dist/services/document-service/index.js.map +1 -0
  88. package/dist/services/document-service/index.mjs +22 -0
  89. package/dist/services/document-service/index.mjs.map +1 -0
  90. package/dist/services/document-service/internationalization.d.ts +8 -0
  91. package/dist/services/document-service/internationalization.d.ts.map +1 -0
  92. package/dist/services/document-service/internationalization.js +54 -0
  93. package/dist/services/document-service/internationalization.js.map +1 -0
  94. package/dist/services/document-service/internationalization.mjs +54 -0
  95. package/dist/services/document-service/internationalization.mjs.map +1 -0
  96. package/dist/services/document-service/middlewares.d.ts +8 -0
  97. package/dist/services/document-service/middlewares.d.ts.map +1 -0
  98. package/dist/services/document-service/middlewares.js +46 -0
  99. package/dist/services/document-service/middlewares.js.map +1 -0
  100. package/dist/services/document-service/middlewares.mjs +46 -0
  101. package/dist/services/document-service/middlewares.mjs.map +1 -0
  102. package/dist/services/document-service/repositories/content-type.d.ts +3 -0
  103. package/dist/services/document-service/repositories/content-type.d.ts.map +1 -0
  104. package/dist/services/document-service/repositories/content-type.js +139 -0
  105. package/dist/services/document-service/repositories/content-type.js.map +1 -0
  106. package/dist/services/document-service/repositories/content-type.mjs +139 -0
  107. package/dist/services/document-service/repositories/content-type.mjs.map +1 -0
  108. package/dist/services/document-service/transform/data.d.ts +5 -0
  109. package/dist/services/document-service/transform/data.d.ts.map +1 -0
  110. package/dist/services/document-service/transform/data.js +13 -0
  111. package/dist/services/document-service/transform/data.js.map +1 -0
  112. package/dist/services/document-service/transform/data.mjs +13 -0
  113. package/dist/services/document-service/transform/data.mjs.map +1 -0
  114. package/dist/services/document-service/transform/fields.d.ts +5 -0
  115. package/dist/services/document-service/transform/fields.d.ts.map +1 -0
  116. package/dist/services/document-service/transform/fields.js +24 -0
  117. package/dist/services/document-service/transform/fields.js.map +1 -0
  118. package/dist/services/document-service/transform/fields.mjs +24 -0
  119. package/dist/services/document-service/transform/fields.mjs.map +1 -0
  120. package/dist/services/document-service/transform/id-map.d.ts +23 -0
  121. package/dist/services/document-service/transform/id-map.d.ts.map +1 -0
  122. package/dist/services/document-service/transform/id-map.js +72 -0
  123. package/dist/services/document-service/transform/id-map.js.map +1 -0
  124. package/dist/services/document-service/transform/id-map.mjs +72 -0
  125. package/dist/services/document-service/transform/id-map.mjs.map +1 -0
  126. package/dist/services/document-service/transform/id-transform.d.ts +19 -0
  127. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -0
  128. package/dist/services/document-service/transform/id-transform.js +27 -0
  129. package/dist/services/document-service/transform/id-transform.js.map +1 -0
  130. package/dist/services/document-service/transform/id-transform.mjs +27 -0
  131. package/dist/services/document-service/transform/id-transform.mjs.map +1 -0
  132. package/dist/services/document-service/transform/populate.d.ts +3 -0
  133. package/dist/services/document-service/transform/populate.d.ts.map +1 -0
  134. package/dist/services/document-service/transform/populate.js +21 -0
  135. package/dist/services/document-service/transform/populate.js.map +1 -0
  136. package/dist/services/document-service/transform/populate.mjs +21 -0
  137. package/dist/services/document-service/transform/populate.mjs.map +1 -0
  138. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +13 -0
  139. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -0
  140. package/dist/services/document-service/transform/relations/extract/data-ids.js +79 -0
  141. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -0
  142. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +79 -0
  143. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -0
  144. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts +10 -0
  145. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -0
  146. package/dist/services/document-service/transform/relations/transform/data-ids.js +117 -0
  147. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -0
  148. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +117 -0
  149. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -0
  150. package/dist/services/document-service/transform/relations/utils/data.d.ts +4 -0
  151. package/dist/services/document-service/transform/relations/utils/data.d.ts.map +1 -0
  152. package/dist/services/document-service/transform/relations/utils/data.js +12 -0
  153. package/dist/services/document-service/transform/relations/utils/data.js.map +1 -0
  154. package/dist/services/document-service/transform/relations/utils/data.mjs +12 -0
  155. package/dist/services/document-service/transform/relations/utils/data.mjs.map +1 -0
  156. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +10 -0
  157. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -0
  158. package/dist/services/document-service/transform/relations/utils/i18n.js +31 -0
  159. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -0
  160. package/dist/services/document-service/transform/relations/utils/i18n.mjs +31 -0
  161. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -0
  162. package/dist/services/document-service/transform/relations/utils/types.d.ts +12 -0
  163. package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -0
  164. package/dist/services/document-service/transform/types.d.ts +13 -0
  165. package/dist/services/document-service/transform/types.d.ts.map +1 -0
  166. package/dist/services/document-service/utils/populate.d.ts +3 -0
  167. package/dist/services/document-service/utils/populate.d.ts.map +1 -0
  168. package/dist/services/document-service/utils/populate.js +41 -0
  169. package/dist/services/document-service/utils/populate.js.map +1 -0
  170. package/dist/services/document-service/utils/populate.mjs +41 -0
  171. package/dist/services/document-service/utils/populate.mjs.map +1 -0
  172. package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
  173. package/dist/services/entity-validator/blocks-validator.js +22 -2
  174. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  175. package/dist/services/entity-validator/blocks-validator.mjs +22 -2
  176. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  177. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  178. package/dist/services/entity-validator/validators.js +7 -8
  179. package/dist/services/entity-validator/validators.js.map +1 -1
  180. package/dist/services/entity-validator/validators.mjs +7 -8
  181. package/dist/services/entity-validator/validators.mjs.map +1 -1
  182. package/dist/services/server/compose-endpoint.d.ts.map +1 -1
  183. package/dist/services/server/compose-endpoint.js +3 -0
  184. package/dist/services/server/compose-endpoint.js.map +1 -1
  185. package/dist/services/server/compose-endpoint.mjs +3 -0
  186. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  187. package/dist/services/webhook-store.js +2 -2
  188. package/dist/services/webhook-store.js.map +1 -1
  189. package/dist/services/webhook-store.mjs +2 -2
  190. package/dist/services/webhook-store.mjs.map +1 -1
  191. package/dist/utils/transform-content-types-to-models.d.ts +174 -3
  192. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  193. package/dist/utils/transform-content-types-to-models.js +80 -41
  194. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  195. package/dist/utils/transform-content-types-to-models.mjs +79 -41
  196. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  197. package/package.json +14 -14
  198. package/dist/core-api/service/get-fetch-params.d.ts +0 -7
  199. package/dist/core-api/service/get-fetch-params.d.ts.map +0 -1
  200. package/dist/core-api/service/get-fetch-params.js +0 -14
  201. package/dist/core-api/service/get-fetch-params.js.map +0 -1
  202. package/dist/core-api/service/get-fetch-params.mjs +0 -14
  203. package/dist/core-api/service/get-fetch-params.mjs.map +0 -1
  204. package/dist/services/document-service/document-service.d.ts.map +0 -1
  205. package/dist/services/document-service/document-service.js +0 -132
  206. package/dist/services/document-service/document-service.js.map +0 -1
  207. package/dist/services/document-service/document-service.mjs +0 -132
  208. package/dist/services/document-service/document-service.mjs.map +0 -1
  209. package/dist/services/document-service/middlewares/defaults/draft-and-publish.d.ts +0 -26
  210. package/dist/services/document-service/middlewares/defaults/draft-and-publish.d.ts.map +0 -1
  211. package/dist/services/document-service/middlewares/defaults/draft-and-publish.js +0 -58
  212. package/dist/services/document-service/middlewares/defaults/draft-and-publish.js.map +0 -1
  213. package/dist/services/document-service/middlewares/defaults/draft-and-publish.mjs +0 -58
  214. package/dist/services/document-service/middlewares/defaults/draft-and-publish.mjs.map +0 -1
  215. package/dist/services/document-service/middlewares/defaults/index.d.ts +0 -3
  216. package/dist/services/document-service/middlewares/defaults/index.d.ts.map +0 -1
  217. package/dist/services/document-service/middlewares/defaults/index.js +0 -82
  218. package/dist/services/document-service/middlewares/defaults/index.js.map +0 -1
  219. package/dist/services/document-service/middlewares/defaults/index.mjs +0 -82
  220. package/dist/services/document-service/middlewares/defaults/index.mjs.map +0 -1
  221. package/dist/services/document-service/middlewares/defaults/locales.d.ts +0 -18
  222. package/dist/services/document-service/middlewares/defaults/locales.d.ts.map +0 -1
  223. package/dist/services/document-service/middlewares/defaults/locales.js +0 -50
  224. package/dist/services/document-service/middlewares/defaults/locales.js.map +0 -1
  225. package/dist/services/document-service/middlewares/defaults/locales.mjs +0 -50
  226. package/dist/services/document-service/middlewares/defaults/locales.mjs.map +0 -1
  227. package/dist/services/document-service/middlewares/index.d.ts +0 -11
  228. package/dist/services/document-service/middlewares/index.d.ts.map +0 -1
  229. package/dist/services/document-service/middlewares/index.js +0 -59
  230. package/dist/services/document-service/middlewares/index.js.map +0 -1
  231. package/dist/services/document-service/middlewares/index.mjs +0 -59
  232. package/dist/services/document-service/middlewares/index.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"single-type.mjs","sources":["../../../src/core-api/service/single-type.ts"],"sourcesContent":["import { propOr } from 'lodash/fp';\nimport type { CoreApi, Schema, Common } from '@strapi/types';\nimport { errors, contentTypes as contentTypeUtils } from '@strapi/utils';\nimport { getFetchParams } from './get-fetch-params';\n\nconst {\n constants: { PUBLISHED_AT_ATTRIBUTE },\n} = contentTypeUtils;\n\nconst setPublishedAt = (data: Record<string, unknown>) => {\n data[PUBLISHED_AT_ATTRIBUTE] = propOr(new Date(), PUBLISHED_AT_ATTRIBUTE, data);\n};\n\n/**\n * Returns a single type service to handle default core-api actions\n */\nconst createSingleTypeService = ({\n contentType,\n}: {\n contentType: Schema.SingleType;\n}): CoreApi.Service.SingleType => {\n const { uid } = contentType;\n\n return <any>{\n getFetchParams,\n /**\n * Returns singleType content\n */\n find(params = {}) {\n return (\n strapi.entityService?.findMany(uid as Common.UID.SingleType, this.getFetchParams(params)) ??\n null\n );\n },\n\n /**\n * Creates or updates a singleType content\n *\n * @return {Promise}\n */\n async createOrUpdate({ data, ...params } = { data: {} }) {\n const entity = await this.find({ ...params, publicationState: 'preview' });\n\n if (!entity) {\n const count = await strapi.query(uid).count();\n if (count >= 1) {\n throw new errors.ValidationError('singleType.alreadyExists');\n }\n\n setPublishedAt(data);\n\n return strapi.entityService?.create(uid, { ...params, data });\n }\n\n return strapi.entityService?.update(uid, entity.id, { ...params, data });\n },\n\n /**\n * Deletes the singleType content\n *\n * @return {Promise}\n */\n async delete(params = {}) {\n const entity = await this.find(params);\n\n if (!entity) return;\n\n return strapi.entityService?.delete(uid, entity.id);\n },\n };\n};\n\nexport default createSingleTypeService;\n"],"names":["contentTypeUtils"],"mappings":";;;AAKA,MAAM;AAAA,EACJ,WAAW,EAAE,uBAAuB;AACtC,IAAIA;AAEJ,MAAM,iBAAiB,CAAC,SAAkC;AACxD,OAAK,sBAAsB,IAAI,2BAAW,QAAQ,wBAAwB,IAAI;AAChF;AAKA,MAAM,0BAA0B,CAAC;AAAA,EAC/B;AACF,MAEkC;AAC1B,QAAA,EAAE,IAAQ,IAAA;AAEJ,SAAA;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAIA,KAAK,SAAS,IAAI;AAEd,aAAA,OAAO,eAAe,SAAS,KAA8B,KAAK,eAAe,MAAM,CAAC,KACxF;AAAA,IAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,eAAe,EAAE,MAAM,GAAG,OAAO,IAAI,EAAE,MAAM,CAAA,KAAM;AACjD,YAAA,SAAS,MAAM,KAAK,KAAK,EAAE,GAAG,QAAQ,kBAAkB,UAAA,CAAW;AAEzE,UAAI,CAAC,QAAQ;AACX,cAAM,QAAQ,MAAM,OAAO,MAAM,GAAG,EAAE;AACtC,YAAI,SAAS,GAAG;AACR,gBAAA,IAAI,OAAO,gBAAgB,0BAA0B;AAAA,QAC7D;AAEA,uBAAe,IAAI;AAEZ,eAAA,OAAO,eAAe,OAAO,KAAK,EAAE,GAAG,QAAQ,MAAM;AAAA,MAC9D;AAEO,aAAA,OAAO,eAAe,OAAO,KAAK,OAAO,IAAI,EAAE,GAAG,QAAQ,KAAA,CAAM;AAAA,IACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,SAAS,IAAI;AACxB,YAAM,SAAS,MAAM,KAAK,KAAK,MAAM;AAErC,UAAI,CAAC;AAAQ;AAEb,aAAO,OAAO,eAAe,OAAO,KAAK,OAAO,EAAE;AAAA,IACpD;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"single-type.mjs","sources":["../../../src/core-api/service/single-type.ts"],"sourcesContent":["import type { Schema, CoreApi } from '@strapi/types';\nimport { CoreService } from './core-service';\n\nexport class SingleTypeService extends CoreService implements CoreApi.Service.SingleType {\n private contentType: Schema.SingleType;\n\n constructor(contentType: Schema.SingleType) {\n super();\n\n this.contentType = contentType;\n }\n\n async getDocumentId(opts = {}) {\n const { uid } = this.contentType;\n\n return strapi\n .documents(uid)\n .findFirst(opts)\n .then((document) => document?.documentId as string);\n }\n\n async find(params = {}) {\n const { uid } = this.contentType;\n\n return strapi.documents(uid).findFirst(this.getFetchParams(params));\n }\n\n async createOrUpdate(params = {}) {\n const { uid } = this.contentType;\n\n const fetchParams = this.getFetchParams(params);\n const documentId = await this.getDocumentId({ status: fetchParams.status });\n\n if (documentId) {\n return strapi.documents(uid).update(documentId, this.getFetchParams(params));\n }\n\n return strapi.documents(uid).create(this.getFetchParams(params));\n }\n\n async delete(params = {}) {\n const { uid } = this.contentType;\n\n const documentId = await this.getDocumentId();\n if (!documentId) return { deletedEntries: 0 };\n\n return strapi.documents(uid).delete(documentId, this.getFetchParams(params));\n }\n}\n\nconst createSingleTypeService = (contentType: Schema.SingleType): CoreApi.Service.SingleType => {\n return new SingleTypeService(contentType);\n};\n\nexport { createSingleTypeService };\n"],"names":[],"mappings":";AAGO,MAAM,0BAA0B,YAAkD;AAAA,EAC/E;AAAA,EAER,YAAY,aAAgC;AACpC;AAEN,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,MAAM,cAAc,OAAO,IAAI;AACvB,UAAA,EAAE,IAAI,IAAI,KAAK;AAEd,WAAA,OACJ,UAAU,GAAG,EACb,UAAU,IAAI,EACd,KAAK,CAAC,aAAa,UAAU,UAAoB;AAAA,EACtD;AAAA,EAEA,MAAM,KAAK,SAAS,IAAI;AAChB,UAAA,EAAE,IAAI,IAAI,KAAK;AAEd,WAAA,OAAO,UAAU,GAAG,EAAE,UAAU,KAAK,eAAe,MAAM,CAAC;AAAA,EACpE;AAAA,EAEA,MAAM,eAAe,SAAS,IAAI;AAC1B,UAAA,EAAE,IAAI,IAAI,KAAK;AAEf,UAAA,cAAc,KAAK,eAAe,MAAM;AACxC,UAAA,aAAa,MAAM,KAAK,cAAc,EAAE,QAAQ,YAAY,QAAQ;AAE1E,QAAI,YAAY;AACP,aAAA,OAAO,UAAU,GAAG,EAAE,OAAO,YAAY,KAAK,eAAe,MAAM,CAAC;AAAA,IAC7E;AAEO,WAAA,OAAO,UAAU,GAAG,EAAE,OAAO,KAAK,eAAe,MAAM,CAAC;AAAA,EACjE;AAAA,EAEA,MAAM,OAAO,SAAS,IAAI;AAClB,UAAA,EAAE,IAAI,IAAI,KAAK;AAEf,UAAA,aAAa,MAAM,KAAK;AAC9B,QAAI,CAAC;AAAmB,aAAA,EAAE,gBAAgB;AAEnC,WAAA,OAAO,UAAU,GAAG,EAAE,OAAO,YAAY,KAAK,eAAe,MAAM,CAAC;AAAA,EAC7E;AACF;AAEM,MAAA,0BAA0B,CAAC,gBAA+D;AACvF,SAAA,IAAI,kBAAkB,WAAW;AAC1C;"}
@@ -1 +1 @@
1
- {"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../src/factories.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAUpE,KAAK,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAclF,QAAA,MAAM,oBAAoB;YAOM,MAAM;yNAwBrC,CAAC;AAEF,iBAAS,iBAAiB,CACxB,IAAI,SAAS,MAAM,CAAC,GAAG,CAAC,WAAW,EACnC,QAAQ,SAAS,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAEjD,GAAG,EAAE,IAAI,EACT,GAAG,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAE9D,MAAM;MAAK,QAAQ,GAAG,QAAQ,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CActF;AAED,iBAAS,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,WAAW,EACxD,GAAG,EAAE,CAAC,EACN,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,GACnC,OAAO,CAAC,MAAM,CAAC,MAAM,CA+BvB;AAED,QAAA,MAAM,kBAAkB,kDAAiD,OAExE,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../src/factories.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAUpE,KAAK,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAElF,QAAA,MAAM,oBAAoB;YAOM,MAAM;yNAwBrC,CAAC;AAEF,iBAAS,iBAAiB,CACxB,IAAI,SAAS,MAAM,CAAC,GAAG,CAAC,WAAW,EACnC,QAAQ,SAAS,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAEjD,GAAG,EAAE,IAAI,EACT,GAAG,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAE9D,MAAM;MAAK,QAAQ,GAAG,QAAQ,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CActF;AAED,iBAAS,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,WAAW,EACxD,GAAG,EAAE,CAAC,EACN,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,GACnC,OAAO,CAAC,MAAM,CAAC,MAAM,CA+BvB;AAED,QAAA,MAAM,kBAAkB,kDAAiD,OAExE,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC"}
package/dist/factories.js CHANGED
@@ -7,19 +7,9 @@ const index$2 = require("./core-api/routes/index.js");
7
7
  const symbols = {
8
8
  CustomController: Symbol("StrapiCustomCoreController")
9
9
  };
10
- const getContentTypeProxy = (strapi2, uid) => {
11
- return new Proxy(strapi2.contentType(uid), {
12
- get(target, prop) {
13
- const contentType = strapi2.contentType(uid);
14
- if (prop in contentType) {
15
- return contentType[prop];
16
- }
17
- }
18
- });
19
- };
20
10
  const createCoreController = (uid, cfg) => {
21
11
  return ({ strapi: strapi2 }) => {
22
- const baseController = index.createController({ contentType: getContentTypeProxy(strapi2, uid) });
12
+ const baseController = index.createController({ contentType: strapi2.contentType(uid) });
23
13
  const userCtrl = typeof cfg === "function" ? cfg({ strapi: strapi2 }) : cfg ?? {};
24
14
  for (const methodName of Object.keys(baseController)) {
25
15
  if (userCtrl[methodName] === void 0) {
@@ -40,7 +30,7 @@ const createCoreController = (uid, cfg) => {
40
30
  };
41
31
  function createCoreService(uid, cfg) {
42
32
  return ({ strapi: strapi2 }) => {
43
- const baseService = index$1.createService({ contentType: getContentTypeProxy(strapi2, uid) });
33
+ const baseService = index$1.createService({ contentType: strapi2.contentType(uid) });
44
34
  const userService = typeof cfg === "function" ? cfg({ strapi: strapi2 }) : cfg ?? {};
45
35
  for (const methodName of Object.keys(baseService)) {
46
36
  if (userService[methodName] === void 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"factories.js","sources":["../src/factories.ts"],"sourcesContent":["import { pipe, omit, pick } from 'lodash/fp';\nimport type { Strapi, Common, CoreApi, Utils } from '@strapi/types';\n\nimport { createController } from './core-api/controller';\nimport { createService } from './core-api/service';\nimport { createRoutes } from './core-api/routes';\n\nconst symbols = {\n CustomController: Symbol('StrapiCustomCoreController'),\n} as const;\n\ntype WithStrapiCallback<T> = T | (<S extends { strapi: Strapi }>(params: S) => T);\n\n// Content type is proxied to allow for dynamic content type updates\nconst getContentTypeProxy = (strapi: Strapi, uid: Common.UID.ContentType) => {\n return new Proxy(strapi.contentType(uid), {\n get(target, prop) {\n const contentType = strapi.contentType(uid);\n if (prop in contentType) {\n return contentType[prop as keyof typeof contentType];\n }\n },\n });\n};\n\nconst createCoreController = <\n TUID extends Common.UID.ContentType,\n TController extends CoreApi.Controller.Extendable<TUID>\n>(\n uid: TUID,\n cfg?: WithStrapiCallback<Utils.PartialWithThis<CoreApi.Controller.Extendable<TUID> & TController>>\n) => {\n return ({ strapi }: { strapi: Strapi }): TController & CoreApi.Controller.ContentType<TUID> => {\n const baseController = createController({ contentType: getContentTypeProxy(strapi, uid) });\n\n const userCtrl = typeof cfg === 'function' ? cfg({ strapi }) : cfg ?? ({} as any);\n\n for (const methodName of Object.keys(baseController) as Array<keyof typeof baseController>) {\n if (userCtrl[methodName] === undefined) {\n userCtrl[methodName] = baseController[methodName];\n }\n }\n\n Object.setPrototypeOf(userCtrl, baseController);\n\n const isCustom = typeof cfg !== 'undefined';\n if (isCustom) {\n Object.defineProperty(userCtrl, symbols.CustomController, {\n writable: false,\n configurable: false,\n enumerable: false,\n });\n }\n\n return userCtrl;\n };\n};\n\nfunction createCoreService<\n TUID extends Common.UID.ContentType,\n TService extends CoreApi.Service.Extendable<TUID>\n>(\n uid: TUID,\n cfg?: WithStrapiCallback<Utils.PartialWithThis<CoreApi.Service.Extendable<TUID> & TService>>\n) {\n return ({ strapi }: { strapi: Strapi }): TService & CoreApi.Service.ContentType<TUID> => {\n const baseService = createService({ contentType: getContentTypeProxy(strapi, uid) });\n\n const userService = typeof cfg === 'function' ? cfg({ strapi }) : cfg ?? ({} as any);\n\n for (const methodName of Object.keys(baseService) as Array<keyof typeof baseService>) {\n if (userService[methodName] === undefined) {\n userService[methodName] = baseService[methodName];\n }\n }\n\n Object.setPrototypeOf(userService, baseService);\n return userService;\n };\n}\n\nfunction createCoreRouter<T extends Common.UID.ContentType>(\n uid: T,\n cfg?: CoreApi.Router.RouterConfig<T>\n): CoreApi.Router.Router {\n const { prefix, config = {}, only, except, type = 'content-api' } = cfg ?? {};\n let routes: CoreApi.Router.Route[];\n\n return {\n type,\n prefix,\n get routes() {\n if (!routes) {\n const contentType = strapi.contentType(uid);\n\n const defaultRoutes = createRoutes({ contentType });\n const keys = Object.keys(defaultRoutes) as Array<keyof typeof defaultRoutes>;\n\n keys.forEach((routeName) => {\n const defaultRoute = defaultRoutes[routeName];\n\n Object.assign(defaultRoute.config, config[routeName] || {});\n });\n\n const selectedRoutes = pipe(\n (routes) => (except ? omit(except, routes) : routes),\n (routes) => (only ? pick(only, routes) : routes)\n )(defaultRoutes);\n\n routes = Object.values(selectedRoutes);\n }\n\n return routes;\n },\n };\n}\n\nconst isCustomController = <T extends Common.Controller>(controller: T): boolean => {\n return symbols.CustomController in controller;\n};\n\nexport { createCoreController, createCoreService, createCoreRouter, isCustomController };\n"],"names":["strapi","createController","createService","createRoutes","pipe","routes","omit","pick"],"mappings":";;;;;;AAOA,MAAM,UAAU;AAAA,EACd,kBAAkB,OAAO,4BAA4B;AACvD;AAKA,MAAM,sBAAsB,CAACA,SAAgB,QAAgC;AAC3E,SAAO,IAAI,MAAMA,QAAO,YAAY,GAAG,GAAG;AAAA,IACxC,IAAI,QAAQ,MAAM;AACV,YAAA,cAAcA,QAAO,YAAY,GAAG;AAC1C,UAAI,QAAQ,aAAa;AACvB,eAAO,YAAY,IAAgC;AAAA,MACrD;AAAA,IACF;AAAA,EAAA,CACD;AACH;AAEM,MAAA,uBAAuB,CAI3B,KACA,QACG;AACH,SAAO,CAAC,EAAE,QAAAA,cAAqF;AACvF,UAAA,iBAAiBC,uBAAiB,EAAE,aAAa,oBAAoBD,SAAQ,GAAG,GAAG;AAEnF,UAAA,WAAW,OAAO,QAAQ,aAAa,IAAI,EAAE,QAAAA,QAAQ,CAAA,IAAI,OAAQ;AAEvE,eAAW,cAAc,OAAO,KAAK,cAAc,GAAyC;AACtF,UAAA,SAAS,UAAU,MAAM,QAAW;AAC7B,iBAAA,UAAU,IAAI,eAAe,UAAU;AAAA,MAClD;AAAA,IACF;AAEO,WAAA,eAAe,UAAU,cAAc;AAExC,UAAA,WAAW,OAAO,QAAQ;AAChC,QAAI,UAAU;AACL,aAAA,eAAe,UAAU,QAAQ,kBAAkB;AAAA,QACxD,UAAU;AAAA,QACV,cAAc;AAAA,QACd,YAAY;AAAA,MAAA,CACb;AAAA,IACH;AAEO,WAAA;AAAA,EAAA;AAEX;AAEA,SAAS,kBAIP,KACA,KACA;AACA,SAAO,CAAC,EAAE,QAAAA,cAA+E;AACjF,UAAA,cAAcE,sBAAc,EAAE,aAAa,oBAAoBF,SAAQ,GAAG,GAAG;AAE7E,UAAA,cAAc,OAAO,QAAQ,aAAa,IAAI,EAAE,QAAAA,QAAQ,CAAA,IAAI,OAAQ;AAE1E,eAAW,cAAc,OAAO,KAAK,WAAW,GAAsC;AAChF,UAAA,YAAY,UAAU,MAAM,QAAW;AAC7B,oBAAA,UAAU,IAAI,YAAY,UAAU;AAAA,MAClD;AAAA,IACF;AAEO,WAAA,eAAe,aAAa,WAAW;AACvC,WAAA;AAAA,EAAA;AAEX;AAEA,SAAS,iBACP,KACA,KACuB;AACjB,QAAA,EAAE,QAAQ,SAAS,CAAA,GAAI,MAAM,QAAQ,OAAO,cAAA,IAAkB,OAAO;AACvE,MAAA;AAEG,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA,IAAI,SAAS;AACX,UAAI,CAAC,QAAQ;AACL,cAAA,cAAc,OAAO,YAAY,GAAG;AAE1C,cAAM,gBAAgBG,QAAAA,aAAa,EAAE,YAAa,CAAA;AAC5C,cAAA,OAAO,OAAO,KAAK,aAAa;AAEjC,aAAA,QAAQ,CAAC,cAAc;AACpB,gBAAA,eAAe,cAAc,SAAS;AAE5C,iBAAO,OAAO,aAAa,QAAQ,OAAO,SAAS,KAAK,CAAA,CAAE;AAAA,QAAA,CAC3D;AAED,cAAM,iBAAiBC,EAAA;AAAA,UACrB,CAACC,YAAY,SAASC,EAAAA,KAAK,QAAQD,OAAM,IAAIA;AAAAA,UAC7C,CAACA,YAAY,OAAOE,EAAAA,KAAK,MAAMF,OAAM,IAAIA;AAAAA,UACzC,aAAa;AAEN,iBAAA,OAAO,OAAO,cAAc;AAAA,MACvC;AAEO,aAAA;AAAA,IACT;AAAA,EAAA;AAEJ;AAEM,MAAA,qBAAqB,CAA8B,eAA2B;AAClF,SAAO,QAAQ,oBAAoB;AACrC;;;;;"}
1
+ {"version":3,"file":"factories.js","sources":["../src/factories.ts"],"sourcesContent":["import { pipe, omit, pick } from 'lodash/fp';\nimport type { Strapi, Common, CoreApi, Utils } from '@strapi/types';\n\nimport { createController } from './core-api/controller';\nimport { createService } from './core-api/service';\nimport { createRoutes } from './core-api/routes';\n\nconst symbols = {\n CustomController: Symbol('StrapiCustomCoreController'),\n} as const;\n\ntype WithStrapiCallback<T> = T | (<S extends { strapi: Strapi }>(params: S) => T);\n\nconst createCoreController = <\n TUID extends Common.UID.ContentType,\n TController extends CoreApi.Controller.Extendable<TUID>\n>(\n uid: TUID,\n cfg?: WithStrapiCallback<Utils.PartialWithThis<CoreApi.Controller.Extendable<TUID> & TController>>\n) => {\n return ({ strapi }: { strapi: Strapi }): TController & CoreApi.Controller.ContentType<TUID> => {\n const baseController = createController({ contentType: strapi.contentType(uid) });\n\n const userCtrl = typeof cfg === 'function' ? cfg({ strapi }) : cfg ?? ({} as any);\n\n for (const methodName of Object.keys(baseController) as Array<keyof typeof baseController>) {\n if (userCtrl[methodName] === undefined) {\n userCtrl[methodName] = baseController[methodName];\n }\n }\n\n Object.setPrototypeOf(userCtrl, baseController);\n\n const isCustom = typeof cfg !== 'undefined';\n if (isCustom) {\n Object.defineProperty(userCtrl, symbols.CustomController, {\n writable: false,\n configurable: false,\n enumerable: false,\n });\n }\n\n return userCtrl;\n };\n};\n\nfunction createCoreService<\n TUID extends Common.UID.ContentType,\n TService extends CoreApi.Service.Extendable<TUID>\n>(\n uid: TUID,\n cfg?: WithStrapiCallback<Utils.PartialWithThis<CoreApi.Service.Extendable<TUID> & TService>>\n) {\n return ({ strapi }: { strapi: Strapi }): TService & CoreApi.Service.ContentType<TUID> => {\n const baseService = createService({ contentType: strapi.contentType(uid) });\n\n const userService = typeof cfg === 'function' ? cfg({ strapi }) : cfg ?? ({} as any);\n\n for (const methodName of Object.keys(baseService) as Array<keyof typeof baseService>) {\n if (userService[methodName] === undefined) {\n userService[methodName] = baseService[methodName];\n }\n }\n\n Object.setPrototypeOf(userService, baseService);\n return userService;\n };\n}\n\nfunction createCoreRouter<T extends Common.UID.ContentType>(\n uid: T,\n cfg?: CoreApi.Router.RouterConfig<T>\n): CoreApi.Router.Router {\n const { prefix, config = {}, only, except, type = 'content-api' } = cfg ?? {};\n let routes: CoreApi.Router.Route[];\n\n return {\n type,\n prefix,\n get routes() {\n if (!routes) {\n const contentType = strapi.contentType(uid);\n\n const defaultRoutes = createRoutes({ contentType });\n const keys = Object.keys(defaultRoutes) as Array<keyof typeof defaultRoutes>;\n\n keys.forEach((routeName) => {\n const defaultRoute = defaultRoutes[routeName];\n\n Object.assign(defaultRoute.config, config[routeName] || {});\n });\n\n const selectedRoutes = pipe(\n (routes) => (except ? omit(except, routes) : routes),\n (routes) => (only ? pick(only, routes) : routes)\n )(defaultRoutes);\n\n routes = Object.values(selectedRoutes);\n }\n\n return routes;\n },\n };\n}\n\nconst isCustomController = <T extends Common.Controller>(controller: T): boolean => {\n return symbols.CustomController in controller;\n};\n\nexport { createCoreController, createCoreService, createCoreRouter, isCustomController };\n"],"names":["strapi","createController","createService","createRoutes","pipe","routes","omit","pick"],"mappings":";;;;;;AAOA,MAAM,UAAU;AAAA,EACd,kBAAkB,OAAO,4BAA4B;AACvD;AAIM,MAAA,uBAAuB,CAI3B,KACA,QACG;AACH,SAAO,CAAC,EAAE,QAAAA,cAAqF;AACvF,UAAA,iBAAiBC,uBAAiB,EAAE,aAAaD,QAAO,YAAY,GAAG,GAAG;AAE1E,UAAA,WAAW,OAAO,QAAQ,aAAa,IAAI,EAAE,QAAAA,QAAQ,CAAA,IAAI,OAAQ;AAEvE,eAAW,cAAc,OAAO,KAAK,cAAc,GAAyC;AACtF,UAAA,SAAS,UAAU,MAAM,QAAW;AAC7B,iBAAA,UAAU,IAAI,eAAe,UAAU;AAAA,MAClD;AAAA,IACF;AAEO,WAAA,eAAe,UAAU,cAAc;AAExC,UAAA,WAAW,OAAO,QAAQ;AAChC,QAAI,UAAU;AACL,aAAA,eAAe,UAAU,QAAQ,kBAAkB;AAAA,QACxD,UAAU;AAAA,QACV,cAAc;AAAA,QACd,YAAY;AAAA,MAAA,CACb;AAAA,IACH;AAEO,WAAA;AAAA,EAAA;AAEX;AAEA,SAAS,kBAIP,KACA,KACA;AACA,SAAO,CAAC,EAAE,QAAAA,cAA+E;AACjF,UAAA,cAAcE,sBAAc,EAAE,aAAaF,QAAO,YAAY,GAAG,GAAG;AAEpE,UAAA,cAAc,OAAO,QAAQ,aAAa,IAAI,EAAE,QAAAA,QAAQ,CAAA,IAAI,OAAQ;AAE1E,eAAW,cAAc,OAAO,KAAK,WAAW,GAAsC;AAChF,UAAA,YAAY,UAAU,MAAM,QAAW;AAC7B,oBAAA,UAAU,IAAI,YAAY,UAAU;AAAA,MAClD;AAAA,IACF;AAEO,WAAA,eAAe,aAAa,WAAW;AACvC,WAAA;AAAA,EAAA;AAEX;AAEA,SAAS,iBACP,KACA,KACuB;AACjB,QAAA,EAAE,QAAQ,SAAS,CAAA,GAAI,MAAM,QAAQ,OAAO,cAAA,IAAkB,OAAO;AACvE,MAAA;AAEG,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA,IAAI,SAAS;AACX,UAAI,CAAC,QAAQ;AACL,cAAA,cAAc,OAAO,YAAY,GAAG;AAE1C,cAAM,gBAAgBG,QAAAA,aAAa,EAAE,YAAa,CAAA;AAC5C,cAAA,OAAO,OAAO,KAAK,aAAa;AAEjC,aAAA,QAAQ,CAAC,cAAc;AACpB,gBAAA,eAAe,cAAc,SAAS;AAE5C,iBAAO,OAAO,aAAa,QAAQ,OAAO,SAAS,KAAK,CAAA,CAAE;AAAA,QAAA,CAC3D;AAED,cAAM,iBAAiBC,EAAA;AAAA,UACrB,CAACC,YAAY,SAASC,EAAAA,KAAK,QAAQD,OAAM,IAAIA;AAAAA,UAC7C,CAACA,YAAY,OAAOE,EAAAA,KAAK,MAAMF,OAAM,IAAIA;AAAAA,UACzC,aAAa;AAEN,iBAAA,OAAO,OAAO,cAAc;AAAA,MACvC;AAEO,aAAA;AAAA,IACT;AAAA,EAAA;AAEJ;AAEM,MAAA,qBAAqB,CAA8B,eAA2B;AAClF,SAAO,QAAQ,oBAAoB;AACrC;;;;;"}
@@ -5,19 +5,9 @@ import { createRoutes } from "./core-api/routes/index.mjs";
5
5
  const symbols = {
6
6
  CustomController: Symbol("StrapiCustomCoreController")
7
7
  };
8
- const getContentTypeProxy = (strapi2, uid) => {
9
- return new Proxy(strapi2.contentType(uid), {
10
- get(target, prop) {
11
- const contentType = strapi2.contentType(uid);
12
- if (prop in contentType) {
13
- return contentType[prop];
14
- }
15
- }
16
- });
17
- };
18
8
  const createCoreController = (uid, cfg) => {
19
9
  return ({ strapi: strapi2 }) => {
20
- const baseController = createController({ contentType: getContentTypeProxy(strapi2, uid) });
10
+ const baseController = createController({ contentType: strapi2.contentType(uid) });
21
11
  const userCtrl = typeof cfg === "function" ? cfg({ strapi: strapi2 }) : cfg ?? {};
22
12
  for (const methodName of Object.keys(baseController)) {
23
13
  if (userCtrl[methodName] === void 0) {
@@ -38,7 +28,7 @@ const createCoreController = (uid, cfg) => {
38
28
  };
39
29
  function createCoreService(uid, cfg) {
40
30
  return ({ strapi: strapi2 }) => {
41
- const baseService = createService({ contentType: getContentTypeProxy(strapi2, uid) });
31
+ const baseService = createService({ contentType: strapi2.contentType(uid) });
42
32
  const userService = typeof cfg === "function" ? cfg({ strapi: strapi2 }) : cfg ?? {};
43
33
  for (const methodName of Object.keys(baseService)) {
44
34
  if (userService[methodName] === void 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"factories.mjs","sources":["../src/factories.ts"],"sourcesContent":["import { pipe, omit, pick } from 'lodash/fp';\nimport type { Strapi, Common, CoreApi, Utils } from '@strapi/types';\n\nimport { createController } from './core-api/controller';\nimport { createService } from './core-api/service';\nimport { createRoutes } from './core-api/routes';\n\nconst symbols = {\n CustomController: Symbol('StrapiCustomCoreController'),\n} as const;\n\ntype WithStrapiCallback<T> = T | (<S extends { strapi: Strapi }>(params: S) => T);\n\n// Content type is proxied to allow for dynamic content type updates\nconst getContentTypeProxy = (strapi: Strapi, uid: Common.UID.ContentType) => {\n return new Proxy(strapi.contentType(uid), {\n get(target, prop) {\n const contentType = strapi.contentType(uid);\n if (prop in contentType) {\n return contentType[prop as keyof typeof contentType];\n }\n },\n });\n};\n\nconst createCoreController = <\n TUID extends Common.UID.ContentType,\n TController extends CoreApi.Controller.Extendable<TUID>\n>(\n uid: TUID,\n cfg?: WithStrapiCallback<Utils.PartialWithThis<CoreApi.Controller.Extendable<TUID> & TController>>\n) => {\n return ({ strapi }: { strapi: Strapi }): TController & CoreApi.Controller.ContentType<TUID> => {\n const baseController = createController({ contentType: getContentTypeProxy(strapi, uid) });\n\n const userCtrl = typeof cfg === 'function' ? cfg({ strapi }) : cfg ?? ({} as any);\n\n for (const methodName of Object.keys(baseController) as Array<keyof typeof baseController>) {\n if (userCtrl[methodName] === undefined) {\n userCtrl[methodName] = baseController[methodName];\n }\n }\n\n Object.setPrototypeOf(userCtrl, baseController);\n\n const isCustom = typeof cfg !== 'undefined';\n if (isCustom) {\n Object.defineProperty(userCtrl, symbols.CustomController, {\n writable: false,\n configurable: false,\n enumerable: false,\n });\n }\n\n return userCtrl;\n };\n};\n\nfunction createCoreService<\n TUID extends Common.UID.ContentType,\n TService extends CoreApi.Service.Extendable<TUID>\n>(\n uid: TUID,\n cfg?: WithStrapiCallback<Utils.PartialWithThis<CoreApi.Service.Extendable<TUID> & TService>>\n) {\n return ({ strapi }: { strapi: Strapi }): TService & CoreApi.Service.ContentType<TUID> => {\n const baseService = createService({ contentType: getContentTypeProxy(strapi, uid) });\n\n const userService = typeof cfg === 'function' ? cfg({ strapi }) : cfg ?? ({} as any);\n\n for (const methodName of Object.keys(baseService) as Array<keyof typeof baseService>) {\n if (userService[methodName] === undefined) {\n userService[methodName] = baseService[methodName];\n }\n }\n\n Object.setPrototypeOf(userService, baseService);\n return userService;\n };\n}\n\nfunction createCoreRouter<T extends Common.UID.ContentType>(\n uid: T,\n cfg?: CoreApi.Router.RouterConfig<T>\n): CoreApi.Router.Router {\n const { prefix, config = {}, only, except, type = 'content-api' } = cfg ?? {};\n let routes: CoreApi.Router.Route[];\n\n return {\n type,\n prefix,\n get routes() {\n if (!routes) {\n const contentType = strapi.contentType(uid);\n\n const defaultRoutes = createRoutes({ contentType });\n const keys = Object.keys(defaultRoutes) as Array<keyof typeof defaultRoutes>;\n\n keys.forEach((routeName) => {\n const defaultRoute = defaultRoutes[routeName];\n\n Object.assign(defaultRoute.config, config[routeName] || {});\n });\n\n const selectedRoutes = pipe(\n (routes) => (except ? omit(except, routes) : routes),\n (routes) => (only ? pick(only, routes) : routes)\n )(defaultRoutes);\n\n routes = Object.values(selectedRoutes);\n }\n\n return routes;\n },\n };\n}\n\nconst isCustomController = <T extends Common.Controller>(controller: T): boolean => {\n return symbols.CustomController in controller;\n};\n\nexport { createCoreController, createCoreService, createCoreRouter, isCustomController };\n"],"names":["strapi","routes"],"mappings":";;;;AAOA,MAAM,UAAU;AAAA,EACd,kBAAkB,OAAO,4BAA4B;AACvD;AAKA,MAAM,sBAAsB,CAACA,SAAgB,QAAgC;AAC3E,SAAO,IAAI,MAAMA,QAAO,YAAY,GAAG,GAAG;AAAA,IACxC,IAAI,QAAQ,MAAM;AACV,YAAA,cAAcA,QAAO,YAAY,GAAG;AAC1C,UAAI,QAAQ,aAAa;AACvB,eAAO,YAAY,IAAgC;AAAA,MACrD;AAAA,IACF;AAAA,EAAA,CACD;AACH;AAEM,MAAA,uBAAuB,CAI3B,KACA,QACG;AACH,SAAO,CAAC,EAAE,QAAAA,cAAqF;AACvF,UAAA,iBAAiB,iBAAiB,EAAE,aAAa,oBAAoBA,SAAQ,GAAG,GAAG;AAEnF,UAAA,WAAW,OAAO,QAAQ,aAAa,IAAI,EAAE,QAAAA,QAAQ,CAAA,IAAI,OAAQ;AAEvE,eAAW,cAAc,OAAO,KAAK,cAAc,GAAyC;AACtF,UAAA,SAAS,UAAU,MAAM,QAAW;AAC7B,iBAAA,UAAU,IAAI,eAAe,UAAU;AAAA,MAClD;AAAA,IACF;AAEO,WAAA,eAAe,UAAU,cAAc;AAExC,UAAA,WAAW,OAAO,QAAQ;AAChC,QAAI,UAAU;AACL,aAAA,eAAe,UAAU,QAAQ,kBAAkB;AAAA,QACxD,UAAU;AAAA,QACV,cAAc;AAAA,QACd,YAAY;AAAA,MAAA,CACb;AAAA,IACH;AAEO,WAAA;AAAA,EAAA;AAEX;AAEA,SAAS,kBAIP,KACA,KACA;AACA,SAAO,CAAC,EAAE,QAAAA,cAA+E;AACjF,UAAA,cAAc,cAAc,EAAE,aAAa,oBAAoBA,SAAQ,GAAG,GAAG;AAE7E,UAAA,cAAc,OAAO,QAAQ,aAAa,IAAI,EAAE,QAAAA,QAAQ,CAAA,IAAI,OAAQ;AAE1E,eAAW,cAAc,OAAO,KAAK,WAAW,GAAsC;AAChF,UAAA,YAAY,UAAU,MAAM,QAAW;AAC7B,oBAAA,UAAU,IAAI,YAAY,UAAU;AAAA,MAClD;AAAA,IACF;AAEO,WAAA,eAAe,aAAa,WAAW;AACvC,WAAA;AAAA,EAAA;AAEX;AAEA,SAAS,iBACP,KACA,KACuB;AACjB,QAAA,EAAE,QAAQ,SAAS,CAAA,GAAI,MAAM,QAAQ,OAAO,cAAA,IAAkB,OAAO;AACvE,MAAA;AAEG,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA,IAAI,SAAS;AACX,UAAI,CAAC,QAAQ;AACL,cAAA,cAAc,OAAO,YAAY,GAAG;AAE1C,cAAM,gBAAgB,aAAa,EAAE,YAAa,CAAA;AAC5C,cAAA,OAAO,OAAO,KAAK,aAAa;AAEjC,aAAA,QAAQ,CAAC,cAAc;AACpB,gBAAA,eAAe,cAAc,SAAS;AAE5C,iBAAO,OAAO,aAAa,QAAQ,OAAO,SAAS,KAAK,CAAA,CAAE;AAAA,QAAA,CAC3D;AAED,cAAM,iBAAiB;AAAA,UACrB,CAACC,YAAY,SAAS,KAAK,QAAQA,OAAM,IAAIA;AAAAA,UAC7C,CAACA,YAAY,OAAO,KAAK,MAAMA,OAAM,IAAIA;AAAAA,UACzC,aAAa;AAEN,iBAAA,OAAO,OAAO,cAAc;AAAA,MACvC;AAEO,aAAA;AAAA,IACT;AAAA,EAAA;AAEJ;AAEM,MAAA,qBAAqB,CAA8B,eAA2B;AAClF,SAAO,QAAQ,oBAAoB;AACrC;"}
1
+ {"version":3,"file":"factories.mjs","sources":["../src/factories.ts"],"sourcesContent":["import { pipe, omit, pick } from 'lodash/fp';\nimport type { Strapi, Common, CoreApi, Utils } from '@strapi/types';\n\nimport { createController } from './core-api/controller';\nimport { createService } from './core-api/service';\nimport { createRoutes } from './core-api/routes';\n\nconst symbols = {\n CustomController: Symbol('StrapiCustomCoreController'),\n} as const;\n\ntype WithStrapiCallback<T> = T | (<S extends { strapi: Strapi }>(params: S) => T);\n\nconst createCoreController = <\n TUID extends Common.UID.ContentType,\n TController extends CoreApi.Controller.Extendable<TUID>\n>(\n uid: TUID,\n cfg?: WithStrapiCallback<Utils.PartialWithThis<CoreApi.Controller.Extendable<TUID> & TController>>\n) => {\n return ({ strapi }: { strapi: Strapi }): TController & CoreApi.Controller.ContentType<TUID> => {\n const baseController = createController({ contentType: strapi.contentType(uid) });\n\n const userCtrl = typeof cfg === 'function' ? cfg({ strapi }) : cfg ?? ({} as any);\n\n for (const methodName of Object.keys(baseController) as Array<keyof typeof baseController>) {\n if (userCtrl[methodName] === undefined) {\n userCtrl[methodName] = baseController[methodName];\n }\n }\n\n Object.setPrototypeOf(userCtrl, baseController);\n\n const isCustom = typeof cfg !== 'undefined';\n if (isCustom) {\n Object.defineProperty(userCtrl, symbols.CustomController, {\n writable: false,\n configurable: false,\n enumerable: false,\n });\n }\n\n return userCtrl;\n };\n};\n\nfunction createCoreService<\n TUID extends Common.UID.ContentType,\n TService extends CoreApi.Service.Extendable<TUID>\n>(\n uid: TUID,\n cfg?: WithStrapiCallback<Utils.PartialWithThis<CoreApi.Service.Extendable<TUID> & TService>>\n) {\n return ({ strapi }: { strapi: Strapi }): TService & CoreApi.Service.ContentType<TUID> => {\n const baseService = createService({ contentType: strapi.contentType(uid) });\n\n const userService = typeof cfg === 'function' ? cfg({ strapi }) : cfg ?? ({} as any);\n\n for (const methodName of Object.keys(baseService) as Array<keyof typeof baseService>) {\n if (userService[methodName] === undefined) {\n userService[methodName] = baseService[methodName];\n }\n }\n\n Object.setPrototypeOf(userService, baseService);\n return userService;\n };\n}\n\nfunction createCoreRouter<T extends Common.UID.ContentType>(\n uid: T,\n cfg?: CoreApi.Router.RouterConfig<T>\n): CoreApi.Router.Router {\n const { prefix, config = {}, only, except, type = 'content-api' } = cfg ?? {};\n let routes: CoreApi.Router.Route[];\n\n return {\n type,\n prefix,\n get routes() {\n if (!routes) {\n const contentType = strapi.contentType(uid);\n\n const defaultRoutes = createRoutes({ contentType });\n const keys = Object.keys(defaultRoutes) as Array<keyof typeof defaultRoutes>;\n\n keys.forEach((routeName) => {\n const defaultRoute = defaultRoutes[routeName];\n\n Object.assign(defaultRoute.config, config[routeName] || {});\n });\n\n const selectedRoutes = pipe(\n (routes) => (except ? omit(except, routes) : routes),\n (routes) => (only ? pick(only, routes) : routes)\n )(defaultRoutes);\n\n routes = Object.values(selectedRoutes);\n }\n\n return routes;\n },\n };\n}\n\nconst isCustomController = <T extends Common.Controller>(controller: T): boolean => {\n return symbols.CustomController in controller;\n};\n\nexport { createCoreController, createCoreService, createCoreRouter, isCustomController };\n"],"names":["strapi","routes"],"mappings":";;;;AAOA,MAAM,UAAU;AAAA,EACd,kBAAkB,OAAO,4BAA4B;AACvD;AAIM,MAAA,uBAAuB,CAI3B,KACA,QACG;AACH,SAAO,CAAC,EAAE,QAAAA,cAAqF;AACvF,UAAA,iBAAiB,iBAAiB,EAAE,aAAaA,QAAO,YAAY,GAAG,GAAG;AAE1E,UAAA,WAAW,OAAO,QAAQ,aAAa,IAAI,EAAE,QAAAA,QAAQ,CAAA,IAAI,OAAQ;AAEvE,eAAW,cAAc,OAAO,KAAK,cAAc,GAAyC;AACtF,UAAA,SAAS,UAAU,MAAM,QAAW;AAC7B,iBAAA,UAAU,IAAI,eAAe,UAAU;AAAA,MAClD;AAAA,IACF;AAEO,WAAA,eAAe,UAAU,cAAc;AAExC,UAAA,WAAW,OAAO,QAAQ;AAChC,QAAI,UAAU;AACL,aAAA,eAAe,UAAU,QAAQ,kBAAkB;AAAA,QACxD,UAAU;AAAA,QACV,cAAc;AAAA,QACd,YAAY;AAAA,MAAA,CACb;AAAA,IACH;AAEO,WAAA;AAAA,EAAA;AAEX;AAEA,SAAS,kBAIP,KACA,KACA;AACA,SAAO,CAAC,EAAE,QAAAA,cAA+E;AACjF,UAAA,cAAc,cAAc,EAAE,aAAaA,QAAO,YAAY,GAAG,GAAG;AAEpE,UAAA,cAAc,OAAO,QAAQ,aAAa,IAAI,EAAE,QAAAA,QAAQ,CAAA,IAAI,OAAQ;AAE1E,eAAW,cAAc,OAAO,KAAK,WAAW,GAAsC;AAChF,UAAA,YAAY,UAAU,MAAM,QAAW;AAC7B,oBAAA,UAAU,IAAI,YAAY,UAAU;AAAA,MAClD;AAAA,IACF;AAEO,WAAA,eAAe,aAAa,WAAW;AACvC,WAAA;AAAA,EAAA;AAEX;AAEA,SAAS,iBACP,KACA,KACuB;AACjB,QAAA,EAAE,QAAQ,SAAS,CAAA,GAAI,MAAM,QAAQ,OAAO,cAAA,IAAkB,OAAO;AACvE,MAAA;AAEG,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA,IAAI,SAAS;AACX,UAAI,CAAC,QAAQ;AACL,cAAA,cAAc,OAAO,YAAY,GAAG;AAE1C,cAAM,gBAAgB,aAAa,EAAE,YAAa,CAAA;AAC5C,cAAA,OAAO,OAAO,KAAK,aAAa;AAEjC,aAAA,QAAQ,CAAC,cAAc;AACpB,gBAAA,eAAe,cAAc,SAAS;AAE5C,iBAAO,OAAO,aAAa,QAAQ,OAAO,SAAS,KAAK,CAAA,CAAE;AAAA,QAAA,CAC3D;AAED,cAAM,iBAAiB;AAAA,UACrB,CAACC,YAAY,SAAS,KAAK,QAAQA,OAAM,IAAIA;AAAAA,UAC7C,CAACA,YAAY,OAAO,KAAK,MAAMA,OAAM,IAAIA;AAAAA,UACzC,aAAa;AAEN,iBAAA,OAAO,OAAO,cAAc;AAAA,MACvC;AAEO,aAAA;AAAA,IACT;AAAA,EAAA;AAEJ;AAEM,MAAA,qBAAqB,CAA8B,eAA2B;AAClF,SAAO,QAAQ,oBAAoB;AACrC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"content-types.d.ts","sourceRoot":"","sources":["../../src/registries/content-types.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAqB,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAGlF,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AAC/D,KAAK,mBAAmB,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,CAAC;AAcnF,QAAA,MAAM,oBAAoB;IAItB;;OAEG;;IAKH;;OAEG;aACM,OAAO,GAAG,CAAC,WAAW;IAI/B;;OAEG;sBACe,MAAM;IAIxB;;OAEG;aACM,OAAO,GAAG,CAAC,WAAW,eAAe,OAAO,WAAW;IAKhE;;OAEG;mBACY,MAAM,mBAAmB,iBAAiB;IAczD;;OAEG;kBACW,OAAO,GAAG,CAAC,WAAW,YAAY,mBAAmB;CAatE,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"content-types.d.ts","sourceRoot":"","sources":["../../src/registries/content-types.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAqB,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAGlF,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AAC/D,KAAK,mBAAmB,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,CAAC;AAcnF,QAAA,MAAM,oBAAoB;IAItB;;OAEG;;IAKH;;OAEG;aACM,OAAO,GAAG,CAAC,WAAW;IAI/B;;OAEG;sBACe,MAAM;IAIxB;;OAEG;aACM,OAAO,GAAG,CAAC,WAAW,eAAe,OAAO,WAAW;IAKhE;;OAEG;mBACY,MAAM,mBAAmB,iBAAiB;IAczD;;OAEG;kBACW,OAAO,GAAG,CAAC,WAAW,YAAY,mBAAmB;CAYtE,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -61,8 +61,7 @@ const contentTypesRegistry = () => {
61
61
  if (!currentContentType) {
62
62
  throw new Error(`Content-Type ${ctUID} doesn't exist`);
63
63
  }
64
- const newContentType = extendFn(currentContentType);
65
- contentTypes[ctUID] = newContentType;
64
+ extendFn(currentContentType);
66
65
  return this;
67
66
  }
68
67
  };
@@ -1 +1 @@
1
- {"version":3,"file":"content-types.js","sources":["../../src/registries/content-types.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Common, Schema } from '@strapi/types';\nimport { createContentType, ContentTypeDefinition } from '../domain/content-type';\nimport { addNamespace, hasNamespace } from './namespace';\n\ntype ContentTypesInput = Record<string, ContentTypeDefinition>;\ntype ContentTypeExtendFn = (contentType: Schema.ContentType) => Schema.ContentType;\n\nconst validateKeySameToSingularName = (contentTypes: ContentTypesInput) => {\n for (const ctName of Object.keys(contentTypes)) {\n const contentType = contentTypes[ctName];\n\n if (ctName !== contentType.schema.info.singularName) {\n throw new Error(\n `The key of the content-type should be the same as its singularName. Found ${ctName} and ${contentType.schema.info.singularName}.`\n );\n }\n }\n};\n\nconst contentTypesRegistry = () => {\n const contentTypes: Record<string, Schema.ContentType> = {};\n\n return {\n /**\n * Returns this list of registered contentTypes uids\n */\n keys() {\n return Object.keys(contentTypes);\n },\n\n /**\n * Returns the instance of a contentType. Instantiate the contentType if not already done\n */\n get(uid: Common.UID.ContentType) {\n return contentTypes[uid];\n },\n\n /**\n * Returns a map with all the contentTypes in a namespace\n */\n getAll(namespace: string) {\n return pickBy((_, uid) => hasNamespace(uid, namespace))(contentTypes);\n },\n\n /**\n * Registers a contentType\n */\n set(uid: Common.UID.ContentType, contentType: Schema.ContentType) {\n contentTypes[uid] = contentType;\n return this;\n },\n\n /**\n * Registers a map of contentTypes for a specific namespace\n */\n add(namespace: string, newContentTypes: ContentTypesInput) {\n validateKeySameToSingularName(newContentTypes);\n\n for (const rawCtName of Object.keys(newContentTypes)) {\n const uid = addNamespace(rawCtName, namespace);\n\n if (has(uid, contentTypes)) {\n throw new Error(`Content-type ${uid} has already been registered.`);\n }\n\n contentTypes[uid] = createContentType(uid, newContentTypes[rawCtName]);\n }\n },\n\n /**\n * Wraps a contentType to extend it\n */\n extend(ctUID: Common.UID.ContentType, extendFn: ContentTypeExtendFn) {\n const currentContentType = this.get(ctUID);\n\n if (!currentContentType) {\n throw new Error(`Content-Type ${ctUID} doesn't exist`);\n }\n\n const newContentType = extendFn(currentContentType);\n contentTypes[ctUID] = newContentType;\n\n return this;\n },\n };\n};\n\nexport default contentTypesRegistry;\n"],"names":["namespace","pickBy","_","hasNamespace","addNamespace","has","createContentType"],"mappings":";;;;AAQA,MAAM,gCAAgC,CAAC,iBAAoC;AACzE,aAAW,UAAU,OAAO,KAAK,YAAY,GAAG;AACxC,UAAA,cAAc,aAAa,MAAM;AAEvC,QAAI,WAAW,YAAY,OAAO,KAAK,cAAc;AACnD,YAAM,IAAI;AAAA,QACR,6EAA6E,MAAM,QAAQ,YAAY,OAAO,KAAK,YAAY;AAAA,MAAA;AAAA,IAEnI;AAAA,EACF;AACF;AAEA,MAAM,uBAAuB,MAAM;AACjC,QAAM,eAAmD,CAAA;AAElD,SAAA;AAAA;AAAA;AAAA;AAAA,IAIL,OAAO;AACE,aAAA,OAAO,KAAK,YAAY;AAAA,IACjC;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAA6B;AAC/B,aAAO,aAAa,GAAG;AAAA,IACzB;AAAA;AAAA;AAAA;AAAA,IAKA,OAAOA,aAAmB;AACjB,aAAAC,EAAA,OAAO,CAACC,IAAG,QAAQC,UAAAA,aAAa,KAAKH,WAAS,CAAC,EAAE,YAAY;AAAA,IACtE;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAA6B,aAAiC;AAChE,mBAAa,GAAG,IAAI;AACb,aAAA;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,IAAIA,aAAmB,iBAAoC;AACzD,oCAA8B,eAAe;AAE7C,iBAAW,aAAa,OAAO,KAAK,eAAe,GAAG;AAC9C,cAAA,MAAMI,UAAAA,aAAa,WAAWJ,WAAS;AAEzC,YAAAK,EAAA,IAAI,KAAK,YAAY,GAAG;AAC1B,gBAAM,IAAI,MAAM,gBAAgB,GAAG,+BAA+B;AAAA,QACpE;AAEA,qBAAa,GAAG,IAAIC,MAAA,kBAAkB,KAAK,gBAAgB,SAAS,CAAC;AAAA,MACvE;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,OAA+B,UAA+B;AAC7D,YAAA,qBAAqB,KAAK,IAAI,KAAK;AAEzC,UAAI,CAAC,oBAAoB;AACvB,cAAM,IAAI,MAAM,gBAAgB,KAAK,gBAAgB;AAAA,MACvD;AAEM,YAAA,iBAAiB,SAAS,kBAAkB;AAClD,mBAAa,KAAK,IAAI;AAEf,aAAA;AAAA,IACT;AAAA,EAAA;AAEJ;;"}
1
+ {"version":3,"file":"content-types.js","sources":["../../src/registries/content-types.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Common, Schema } from '@strapi/types';\nimport { createContentType, ContentTypeDefinition } from '../domain/content-type';\nimport { addNamespace, hasNamespace } from './namespace';\n\ntype ContentTypesInput = Record<string, ContentTypeDefinition>;\ntype ContentTypeExtendFn = (contentType: Schema.ContentType) => Schema.ContentType;\n\nconst validateKeySameToSingularName = (contentTypes: ContentTypesInput) => {\n for (const ctName of Object.keys(contentTypes)) {\n const contentType = contentTypes[ctName];\n\n if (ctName !== contentType.schema.info.singularName) {\n throw new Error(\n `The key of the content-type should be the same as its singularName. Found ${ctName} and ${contentType.schema.info.singularName}.`\n );\n }\n }\n};\n\nconst contentTypesRegistry = () => {\n const contentTypes: Record<string, Schema.ContentType> = {};\n\n return {\n /**\n * Returns this list of registered contentTypes uids\n */\n keys() {\n return Object.keys(contentTypes);\n },\n\n /**\n * Returns the instance of a contentType. Instantiate the contentType if not already done\n */\n get(uid: Common.UID.ContentType) {\n return contentTypes[uid];\n },\n\n /**\n * Returns a map with all the contentTypes in a namespace\n */\n getAll(namespace: string) {\n return pickBy((_, uid) => hasNamespace(uid, namespace))(contentTypes);\n },\n\n /**\n * Registers a contentType\n */\n set(uid: Common.UID.ContentType, contentType: Schema.ContentType) {\n contentTypes[uid] = contentType;\n return this;\n },\n\n /**\n * Registers a map of contentTypes for a specific namespace\n */\n add(namespace: string, newContentTypes: ContentTypesInput) {\n validateKeySameToSingularName(newContentTypes);\n\n for (const rawCtName of Object.keys(newContentTypes)) {\n const uid = addNamespace(rawCtName, namespace);\n\n if (has(uid, contentTypes)) {\n throw new Error(`Content-type ${uid} has already been registered.`);\n }\n\n contentTypes[uid] = createContentType(uid, newContentTypes[rawCtName]);\n }\n },\n\n /**\n * Wraps a contentType to extend it\n */\n extend(ctUID: Common.UID.ContentType, extendFn: ContentTypeExtendFn) {\n const currentContentType = this.get(ctUID);\n\n if (!currentContentType) {\n throw new Error(`Content-Type ${ctUID} doesn't exist`);\n }\n\n extendFn(currentContentType);\n\n return this;\n },\n };\n};\n\nexport default contentTypesRegistry;\n"],"names":["namespace","pickBy","_","hasNamespace","addNamespace","has","createContentType"],"mappings":";;;;AAQA,MAAM,gCAAgC,CAAC,iBAAoC;AACzE,aAAW,UAAU,OAAO,KAAK,YAAY,GAAG;AACxC,UAAA,cAAc,aAAa,MAAM;AAEvC,QAAI,WAAW,YAAY,OAAO,KAAK,cAAc;AACnD,YAAM,IAAI;AAAA,QACR,6EAA6E,MAAM,QAAQ,YAAY,OAAO,KAAK,YAAY;AAAA,MAAA;AAAA,IAEnI;AAAA,EACF;AACF;AAEA,MAAM,uBAAuB,MAAM;AACjC,QAAM,eAAmD,CAAA;AAElD,SAAA;AAAA;AAAA;AAAA;AAAA,IAIL,OAAO;AACE,aAAA,OAAO,KAAK,YAAY;AAAA,IACjC;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAA6B;AAC/B,aAAO,aAAa,GAAG;AAAA,IACzB;AAAA;AAAA;AAAA;AAAA,IAKA,OAAOA,aAAmB;AACjB,aAAAC,EAAA,OAAO,CAACC,IAAG,QAAQC,UAAAA,aAAa,KAAKH,WAAS,CAAC,EAAE,YAAY;AAAA,IACtE;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAA6B,aAAiC;AAChE,mBAAa,GAAG,IAAI;AACb,aAAA;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,IAAIA,aAAmB,iBAAoC;AACzD,oCAA8B,eAAe;AAE7C,iBAAW,aAAa,OAAO,KAAK,eAAe,GAAG;AAC9C,cAAA,MAAMI,UAAAA,aAAa,WAAWJ,WAAS;AAEzC,YAAAK,EAAA,IAAI,KAAK,YAAY,GAAG;AAC1B,gBAAM,IAAI,MAAM,gBAAgB,GAAG,+BAA+B;AAAA,QACpE;AAEA,qBAAa,GAAG,IAAIC,MAAA,kBAAkB,KAAK,gBAAgB,SAAS,CAAC;AAAA,MACvE;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,OAA+B,UAA+B;AAC7D,YAAA,qBAAqB,KAAK,IAAI,KAAK;AAEzC,UAAI,CAAC,oBAAoB;AACvB,cAAM,IAAI,MAAM,gBAAgB,KAAK,gBAAgB;AAAA,MACvD;AAEA,eAAS,kBAAkB;AAEpB,aAAA;AAAA,IACT;AAAA,EAAA;AAEJ;;"}
@@ -60,8 +60,7 @@ const contentTypesRegistry = () => {
60
60
  if (!currentContentType) {
61
61
  throw new Error(`Content-Type ${ctUID} doesn't exist`);
62
62
  }
63
- const newContentType = extendFn(currentContentType);
64
- contentTypes[ctUID] = newContentType;
63
+ extendFn(currentContentType);
65
64
  return this;
66
65
  }
67
66
  };
@@ -1 +1 @@
1
- {"version":3,"file":"content-types.mjs","sources":["../../src/registries/content-types.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Common, Schema } from '@strapi/types';\nimport { createContentType, ContentTypeDefinition } from '../domain/content-type';\nimport { addNamespace, hasNamespace } from './namespace';\n\ntype ContentTypesInput = Record<string, ContentTypeDefinition>;\ntype ContentTypeExtendFn = (contentType: Schema.ContentType) => Schema.ContentType;\n\nconst validateKeySameToSingularName = (contentTypes: ContentTypesInput) => {\n for (const ctName of Object.keys(contentTypes)) {\n const contentType = contentTypes[ctName];\n\n if (ctName !== contentType.schema.info.singularName) {\n throw new Error(\n `The key of the content-type should be the same as its singularName. Found ${ctName} and ${contentType.schema.info.singularName}.`\n );\n }\n }\n};\n\nconst contentTypesRegistry = () => {\n const contentTypes: Record<string, Schema.ContentType> = {};\n\n return {\n /**\n * Returns this list of registered contentTypes uids\n */\n keys() {\n return Object.keys(contentTypes);\n },\n\n /**\n * Returns the instance of a contentType. Instantiate the contentType if not already done\n */\n get(uid: Common.UID.ContentType) {\n return contentTypes[uid];\n },\n\n /**\n * Returns a map with all the contentTypes in a namespace\n */\n getAll(namespace: string) {\n return pickBy((_, uid) => hasNamespace(uid, namespace))(contentTypes);\n },\n\n /**\n * Registers a contentType\n */\n set(uid: Common.UID.ContentType, contentType: Schema.ContentType) {\n contentTypes[uid] = contentType;\n return this;\n },\n\n /**\n * Registers a map of contentTypes for a specific namespace\n */\n add(namespace: string, newContentTypes: ContentTypesInput) {\n validateKeySameToSingularName(newContentTypes);\n\n for (const rawCtName of Object.keys(newContentTypes)) {\n const uid = addNamespace(rawCtName, namespace);\n\n if (has(uid, contentTypes)) {\n throw new Error(`Content-type ${uid} has already been registered.`);\n }\n\n contentTypes[uid] = createContentType(uid, newContentTypes[rawCtName]);\n }\n },\n\n /**\n * Wraps a contentType to extend it\n */\n extend(ctUID: Common.UID.ContentType, extendFn: ContentTypeExtendFn) {\n const currentContentType = this.get(ctUID);\n\n if (!currentContentType) {\n throw new Error(`Content-Type ${ctUID} doesn't exist`);\n }\n\n const newContentType = extendFn(currentContentType);\n contentTypes[ctUID] = newContentType;\n\n return this;\n },\n };\n};\n\nexport default contentTypesRegistry;\n"],"names":[],"mappings":";;;AAQA,MAAM,gCAAgC,CAAC,iBAAoC;AACzE,aAAW,UAAU,OAAO,KAAK,YAAY,GAAG;AACxC,UAAA,cAAc,aAAa,MAAM;AAEvC,QAAI,WAAW,YAAY,OAAO,KAAK,cAAc;AACnD,YAAM,IAAI;AAAA,QACR,6EAA6E,MAAM,QAAQ,YAAY,OAAO,KAAK,YAAY;AAAA,MAAA;AAAA,IAEnI;AAAA,EACF;AACF;AAEA,MAAM,uBAAuB,MAAM;AACjC,QAAM,eAAmD,CAAA;AAElD,SAAA;AAAA;AAAA;AAAA;AAAA,IAIL,OAAO;AACE,aAAA,OAAO,KAAK,YAAY;AAAA,IACjC;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAA6B;AAC/B,aAAO,aAAa,GAAG;AAAA,IACzB;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,WAAmB;AACjB,aAAA,OAAO,CAAC,GAAG,QAAQ,aAAa,KAAK,SAAS,CAAC,EAAE,YAAY;AAAA,IACtE;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAA6B,aAAiC;AAChE,mBAAa,GAAG,IAAI;AACb,aAAA;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,WAAmB,iBAAoC;AACzD,oCAA8B,eAAe;AAE7C,iBAAW,aAAa,OAAO,KAAK,eAAe,GAAG;AAC9C,cAAA,MAAM,aAAa,WAAW,SAAS;AAEzC,YAAA,IAAI,KAAK,YAAY,GAAG;AAC1B,gBAAM,IAAI,MAAM,gBAAgB,GAAG,+BAA+B;AAAA,QACpE;AAEA,qBAAa,GAAG,IAAI,kBAAkB,KAAK,gBAAgB,SAAS,CAAC;AAAA,MACvE;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,OAA+B,UAA+B;AAC7D,YAAA,qBAAqB,KAAK,IAAI,KAAK;AAEzC,UAAI,CAAC,oBAAoB;AACvB,cAAM,IAAI,MAAM,gBAAgB,KAAK,gBAAgB;AAAA,MACvD;AAEM,YAAA,iBAAiB,SAAS,kBAAkB;AAClD,mBAAa,KAAK,IAAI;AAEf,aAAA;AAAA,IACT;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"content-types.mjs","sources":["../../src/registries/content-types.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Common, Schema } from '@strapi/types';\nimport { createContentType, ContentTypeDefinition } from '../domain/content-type';\nimport { addNamespace, hasNamespace } from './namespace';\n\ntype ContentTypesInput = Record<string, ContentTypeDefinition>;\ntype ContentTypeExtendFn = (contentType: Schema.ContentType) => Schema.ContentType;\n\nconst validateKeySameToSingularName = (contentTypes: ContentTypesInput) => {\n for (const ctName of Object.keys(contentTypes)) {\n const contentType = contentTypes[ctName];\n\n if (ctName !== contentType.schema.info.singularName) {\n throw new Error(\n `The key of the content-type should be the same as its singularName. Found ${ctName} and ${contentType.schema.info.singularName}.`\n );\n }\n }\n};\n\nconst contentTypesRegistry = () => {\n const contentTypes: Record<string, Schema.ContentType> = {};\n\n return {\n /**\n * Returns this list of registered contentTypes uids\n */\n keys() {\n return Object.keys(contentTypes);\n },\n\n /**\n * Returns the instance of a contentType. Instantiate the contentType if not already done\n */\n get(uid: Common.UID.ContentType) {\n return contentTypes[uid];\n },\n\n /**\n * Returns a map with all the contentTypes in a namespace\n */\n getAll(namespace: string) {\n return pickBy((_, uid) => hasNamespace(uid, namespace))(contentTypes);\n },\n\n /**\n * Registers a contentType\n */\n set(uid: Common.UID.ContentType, contentType: Schema.ContentType) {\n contentTypes[uid] = contentType;\n return this;\n },\n\n /**\n * Registers a map of contentTypes for a specific namespace\n */\n add(namespace: string, newContentTypes: ContentTypesInput) {\n validateKeySameToSingularName(newContentTypes);\n\n for (const rawCtName of Object.keys(newContentTypes)) {\n const uid = addNamespace(rawCtName, namespace);\n\n if (has(uid, contentTypes)) {\n throw new Error(`Content-type ${uid} has already been registered.`);\n }\n\n contentTypes[uid] = createContentType(uid, newContentTypes[rawCtName]);\n }\n },\n\n /**\n * Wraps a contentType to extend it\n */\n extend(ctUID: Common.UID.ContentType, extendFn: ContentTypeExtendFn) {\n const currentContentType = this.get(ctUID);\n\n if (!currentContentType) {\n throw new Error(`Content-Type ${ctUID} doesn't exist`);\n }\n\n extendFn(currentContentType);\n\n return this;\n },\n };\n};\n\nexport default contentTypesRegistry;\n"],"names":[],"mappings":";;;AAQA,MAAM,gCAAgC,CAAC,iBAAoC;AACzE,aAAW,UAAU,OAAO,KAAK,YAAY,GAAG;AACxC,UAAA,cAAc,aAAa,MAAM;AAEvC,QAAI,WAAW,YAAY,OAAO,KAAK,cAAc;AACnD,YAAM,IAAI;AAAA,QACR,6EAA6E,MAAM,QAAQ,YAAY,OAAO,KAAK,YAAY;AAAA,MAAA;AAAA,IAEnI;AAAA,EACF;AACF;AAEA,MAAM,uBAAuB,MAAM;AACjC,QAAM,eAAmD,CAAA;AAElD,SAAA;AAAA;AAAA;AAAA;AAAA,IAIL,OAAO;AACE,aAAA,OAAO,KAAK,YAAY;AAAA,IACjC;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAA6B;AAC/B,aAAO,aAAa,GAAG;AAAA,IACzB;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,WAAmB;AACjB,aAAA,OAAO,CAAC,GAAG,QAAQ,aAAa,KAAK,SAAS,CAAC,EAAE,YAAY;AAAA,IACtE;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAA6B,aAAiC;AAChE,mBAAa,GAAG,IAAI;AACb,aAAA;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,WAAmB,iBAAoC;AACzD,oCAA8B,eAAe;AAE7C,iBAAW,aAAa,OAAO,KAAK,eAAe,GAAG;AAC9C,cAAA,MAAM,aAAa,WAAW,SAAS;AAEzC,YAAA,IAAI,KAAK,YAAY,GAAG;AAC1B,gBAAM,IAAI,MAAM,gBAAgB,GAAG,+BAA+B;AAAA,QACpE;AAEA,qBAAa,GAAG,IAAI,kBAAkB,KAAK,gBAAgB,SAAS,CAAC;AAAA,MACvE;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,OAA+B,UAA+B;AAC7D,YAAA,qBAAqB,KAAK,IAAI,KAAK;AAEzC,UAAI,CAAC,oBAAoB;AACvB,cAAM,IAAI,MAAM,gBAAgB,KAAK,gBAAgB;AAAA,MACvD;AAEA,eAAS,kBAAkB;AAEpB,aAAA;AAAA,IACT;AAAA,EAAA;AAEJ;"}
@@ -0,0 +1,4 @@
1
+ import type { Common } from '@strapi/types';
2
+ export type RepositoryFactoryMethod = (uid: Common.UID.CollectionType) => any;
3
+ export declare const wrapInTransaction: (fn: (...args: any) => any) => (...args: any[]) => Promise<any>;
4
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,KAAK,GAAG,CAAC;AAE9E,eAAO,MAAM,iBAAiB,iBAAkB,GAAG,KAAK,GAAG,eACxC,GAAG,EAAE,iBACvB,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const wrapInTransaction = (fn) => {
4
+ return (...args) => strapi.db.transaction?.(() => fn(...args));
5
+ };
6
+ exports.wrapInTransaction = wrapInTransaction;
7
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sources":["../../../src/services/document-service/common.ts"],"sourcesContent":["import type { Common } from '@strapi/types';\n\nexport type RepositoryFactoryMethod = (uid: Common.UID.CollectionType) => any;\n\nexport const wrapInTransaction = (fn: (...args: any) => any) => {\n return (...args: any[]) => strapi.db.transaction?.(() => fn(...args));\n};\n"],"names":[],"mappings":";;AAIa,MAAA,oBAAoB,CAAC,OAA8B;AACvD,SAAA,IAAI,SAAgB,OAAO,GAAG,cAAc,MAAM,GAAG,GAAG,IAAI,CAAC;AACtE;;"}
@@ -0,0 +1,7 @@
1
+ const wrapInTransaction = (fn) => {
2
+ return (...args) => strapi.db.transaction?.(() => fn(...args));
3
+ };
4
+ export {
5
+ wrapInTransaction
6
+ };
7
+ //# sourceMappingURL=common.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.mjs","sources":["../../../src/services/document-service/common.ts"],"sourcesContent":["import type { Common } from '@strapi/types';\n\nexport type RepositoryFactoryMethod = (uid: Common.UID.CollectionType) => any;\n\nexport const wrapInTransaction = (fn: (...args: any) => any) => {\n return (...args: any[]) => strapi.db.transaction?.(() => fn(...args));\n};\n"],"names":[],"mappings":"AAIa,MAAA,oBAAoB,CAAC,OAA8B;AACvD,SAAA,IAAI,SAAgB,OAAO,GAAG,cAAc,MAAM,GAAG,GAAG,IAAI,CAAC;AACtE;"}
@@ -1 +1 @@
1
- {"version":3,"file":"document-engine.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/document-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAU,SAAS,EAAkB,MAAM,EAAE,MAAM,eAAe,CAAC;8BA2S1D;IAAE,QAAQ,MAAM,CAAC;IAAC,EAAE,EAAE,QAAQ,CAAA;CAAE,KAAG,UAAU,MAAM;AAAxE,wBAKE"}
1
+ {"version":3,"file":"document-engine.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/document-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAU,MAAM,EAAE,MAAM,eAAe,CAAC;8BAkV1C;IAAE,QAAQ,MAAM,CAAC;IAAC,EAAE,EAAE,QAAQ,CAAA;CAAE,KAAG,UAAU,MAAM;AAAxE,wBAKE"}
@@ -1,104 +1,103 @@
1
1
  "use strict";
2
2
  const strapiUtils = require("@strapi/utils");
3
3
  const _ = require("lodash/fp");
4
- const uploadFiles = require("../utils/upload-files.js");
5
4
  const components = require("../entity-service/components.js");
6
5
  const transformContentTypesToModels = require("../../utils/transform-content-types-to-models.js");
7
6
  const index$1 = require("../entity-service/attributes/index.js");
8
7
  const index = require("../entity-validator/index.js");
9
8
  const params = require("../entity-service/params.js");
9
+ const idTransform = require("./transform/id-transform.js");
10
+ const populate = require("./utils/populate.js");
11
+ const data = require("./transform/data.js");
10
12
  const { transformParamsToQuery } = strapiUtils.convertQueryParams;
11
- const createPipeline = (data, context) => {
12
- return index$1.applyTransforms(data, context);
13
+ const createPipeline = (data2, context) => {
14
+ return index$1.applyTransforms(data2, context);
13
15
  };
14
- const updatePipeline = (data, context) => {
15
- return index$1.applyTransforms(data, context);
16
+ const updatePipeline = (data2, context) => {
17
+ return index$1.applyTransforms(data2, context);
16
18
  };
17
19
  const createDocumentEngine = ({
18
20
  strapi,
19
21
  db
20
22
  }) => ({
21
- uploadFiles,
22
23
  async findMany(uid, params2) {
23
- const { kind } = strapi.getModel(uid);
24
- const query = transformParamsToQuery(uid, params2 || {});
25
- query.where = { ...params2?.lookup, ...query.where };
26
- if (kind === "singleType") {
27
- return db.query(uid).findOne(query);
28
- }
24
+ const query = await strapiUtils.pipeAsync(
25
+ (params22) => idTransform.transformParamsDocumentId(uid, params22, { isDraft: params22.status === "draft" }),
26
+ (params22) => transformParamsToQuery(uid, params22),
27
+ (query2) => _.set("where", { ...params2?.lookup, ...query2.where }, query2)
28
+ )(params2 || {});
29
29
  return db.query(uid).findMany(query);
30
30
  },
31
31
  async findFirst(uid, params2) {
32
- const query = transformParamsToQuery(uid, params2 || {});
32
+ const query = await strapiUtils.pipeAsync(
33
+ (params22) => idTransform.transformParamsDocumentId(uid, params22, { isDraft: params22.status === "draft" }),
34
+ (params22) => transformParamsToQuery(uid, params22)
35
+ )(params2 || {});
33
36
  return db.query(uid).findOne({ ...query, where: { ...params2?.lookup, ...query.where } });
34
37
  },
35
38
  async findOne(uid, documentId, params2) {
36
- const query = transformParamsToQuery(uid, params2 || {});
39
+ const query = await strapiUtils.pipeAsync(
40
+ (params22) => idTransform.transformParamsDocumentId(uid, params22, { isDraft: params22.status === "draft" }),
41
+ (params22) => transformParamsToQuery(uid, params22)
42
+ )(params2 || {});
37
43
  return db.query(uid).findOne({ ...query, where: { ...params2?.lookup, ...query.where, documentId } });
38
44
  },
39
45
  async delete(uid, documentId, params2 = {}) {
40
- const query = transformParamsToQuery(uid, params2);
46
+ const query = await strapiUtils.pipeAsync(
47
+ (params22) => transformParamsToQuery(uid, params22),
48
+ (query2) => _.set("where", { ...params2?.lookup, ...query2.where, documentId }, query2)
49
+ )(params2);
41
50
  if (params2.status === "draft") {
42
51
  throw new Error("Cannot delete a draft document");
43
52
  }
44
- const entriesToDelete = await db.query(uid).findMany({
45
- ...query,
46
- where: {
47
- ...params2.lookup,
48
- ...query?.where,
49
- documentId
50
- }
51
- });
53
+ const entriesToDelete = await db.query(uid).findMany(query);
52
54
  await strapiUtils.mapAsync(entriesToDelete, async (entryToDelete) => {
53
- const componentsToDelete = await components.getComponents(uid, entryToDelete);
54
- await db.query(uid).delete({ where: { id: entryToDelete.id } });
55
- await components.deleteComponents(uid, componentsToDelete, { loadComponents: false });
55
+ await this.deleteEntry(uid, entryToDelete.id);
56
56
  });
57
- return { versions: entriesToDelete };
57
+ return { deletedEntries: entriesToDelete.length };
58
58
  },
59
- // TODO: should we provide two separate methods?
60
- async deleteMany(uid, paramsOrIds) {
61
- let queryParams;
62
- if (_.isArray(paramsOrIds)) {
63
- queryParams = { filter: { documentID: { $in: paramsOrIds } } };
64
- } else {
65
- queryParams = paramsOrIds;
66
- }
67
- const query = transformParamsToQuery(uid, queryParams || {});
68
- return db.query(uid).deleteMany(query);
59
+ async deleteEntry(uid, entryId) {
60
+ const componentsToDelete = await components.getComponents(uid, { id: entryId });
61
+ await db.query(uid).delete({ where: { id: entryId } });
62
+ await components.deleteComponents(uid, componentsToDelete, { loadComponents: false });
69
63
  },
70
64
  async create(uid, params$1) {
71
- const { data } = params$1;
72
- if (!data) {
65
+ const { data: data2, ...restParams } = await idTransform.transformParamsDocumentId(uid, params$1, {
66
+ locale: params$1.locale,
67
+ // @ts-expect-error - published at is not always present
68
+ // User can not set publishedAt on create, but other methods in the engine can (publish)
69
+ isDraft: !params$1.data?.publishedAt
70
+ });
71
+ const query = transformParamsToQuery(uid, params.pickSelectionParams(restParams));
72
+ if (!params$1.data) {
73
73
  throw new Error("Create requires data attribute");
74
74
  }
75
- const model = strapi.getModel(uid);
76
- const validData = await index.validateEntityCreation(model, data, {
77
- isDraft: true,
75
+ const contentType = strapi.contentType(uid);
76
+ const validData = await index.validateEntityCreation(contentType, data2, {
77
+ isDraft: !data2.publishedAt,
78
78
  locale: params$1?.locale
79
79
  });
80
80
  const componentData = await components.createComponents(uid, validData);
81
81
  const entryData = createPipeline(
82
- Object.assign(components.omitComponentData(model, validData), componentData),
83
- {
84
- contentType: model
85
- }
82
+ Object.assign(components.omitComponentData(contentType, validData), componentData),
83
+ { contentType }
86
84
  );
87
- const query = transformParamsToQuery(uid, params.pickSelectionParams(params$1));
88
85
  return db.query(uid).create({ ...query, data: entryData });
89
86
  },
90
87
  // NOTE: What happens if user doesn't provide specific publications state and locale to update?
91
88
  async update(uid, documentId, params$1) {
92
- const { data } = params$1 || {};
93
- const model = strapi.getModel(uid);
94
- const query = transformParamsToQuery(uid, params.pickSelectionParams(params$1 || {}));
89
+ const { data: data2, ...restParams } = await idTransform.transformParamsDocumentId(uid, params$1 || {}, {
90
+ isDraft: true,
91
+ locale: params$1?.locale
92
+ });
93
+ const query = transformParamsToQuery(uid, params.pickSelectionParams(restParams || {}));
94
+ const model = strapi.contentType(uid);
95
95
  const entryToUpdate = await db.query(uid).findOne({ ...query, where: { ...params$1?.lookup, ...query?.where, documentId } });
96
- if (!entryToUpdate) {
96
+ if (!entryToUpdate)
97
97
  return null;
98
- }
99
98
  const validData = await index.validateEntityUpdate(
100
99
  model,
101
- data,
100
+ data2,
102
101
  {
103
102
  isDraft: true,
104
103
  // Always update the draft version
@@ -114,14 +113,19 @@ const createDocumentEngine = ({
114
113
  return db.query(uid).update({ ...query, where: { id: entryToUpdate.id }, data: entryData });
115
114
  },
116
115
  async count(uid, params2 = void 0) {
117
- const query = transformParamsToQuery(uid, params2 || {});
118
- query.where = { ...params2?.lookup, ...query.where };
116
+ const query = await strapiUtils.pipeAsync(
117
+ (params22) => transformParamsToQuery(uid, params22),
118
+ (query2) => _.set("where", { ...params2?.lookup, ...query2.where }, query2)
119
+ )(params2 || {});
119
120
  return db.query(uid).count(query);
120
121
  },
121
122
  async clone(uid, documentId, params$1) {
122
- const { data = {} } = params$1;
123
- const model = strapi.getModel(uid);
124
- const query = transformParamsToQuery(uid, params.pickSelectionParams(params$1));
123
+ const { data: data2, ...restParams } = await idTransform.transformParamsDocumentId(uid, params$1 || {}, {
124
+ isDraft: true,
125
+ locale: params$1?.locale
126
+ });
127
+ const query = transformParamsToQuery(uid, params.pickSelectionParams(restParams));
128
+ const model = strapi.contentType(uid);
125
129
  const entries = await db.query(uid).findMany({
126
130
  ...query,
127
131
  where: { ...params$1?.lookup, ...query.where, documentId }
@@ -131,11 +135,11 @@ const createDocumentEngine = ({
131
135
  }
132
136
  const newDocumentId = transformContentTypesToModels.createDocumentId();
133
137
  const versions = await strapiUtils.mapAsync(entries, async (entryToClone) => {
134
- const isDraft = strapiUtils.contentTypes.isDraft(data);
138
+ const isDraft = strapiUtils.contentTypes.isDraft(data2);
135
139
  const validData = await index.validateEntityUpdate(
136
140
  model,
137
141
  // Omit id fields, the cloned entity id will be generated by the database
138
- _.omit(["id"], data),
142
+ _.omit(["id"], data2),
139
143
  { isDraft, ...params$1?.lookup },
140
144
  entryToClone
141
145
  );
@@ -150,7 +154,7 @@ const createDocumentEngine = ({
150
154
  data: { documentId: newDocumentId, ...entityData, locale: entryToClone.locale }
151
155
  });
152
156
  });
153
- return { id: newDocumentId, versions };
157
+ return { documentId: newDocumentId, versions };
154
158
  },
155
159
  // TODO: Handle relations so they target the published version
156
160
  async publish(uid, documentId, params2) {
@@ -158,23 +162,44 @@ const createDocumentEngine = ({
158
162
  ...params2,
159
163
  lookup: { ...params2?.lookup, publishedAt: { $ne: null } }
160
164
  });
161
- const clonedDocuments = await this.clone(uid, documentId, {
162
- ...params2 || {},
163
- // @ts-expect-error - Generic type does not have publishedAt attribute by default
164
- data: { documentId, publishedAt: /* @__PURE__ */ new Date() }
165
+ const entriesToPublish = await strapi.db?.query(uid).findMany({
166
+ where: {
167
+ ...params2?.lookup,
168
+ documentId,
169
+ publishedAt: null
170
+ },
171
+ populate: populate.getDeepPopulate(uid)
165
172
  });
166
- return { versions: clonedDocuments?.versions || [] };
173
+ const publishedEntries = await strapiUtils.mapAsync(
174
+ entriesToPublish,
175
+ strapiUtils.pipeAsync(
176
+ _.set("publishedAt", /* @__PURE__ */ new Date()),
177
+ _.set("documentId", documentId),
178
+ _.omit("id"),
179
+ // Transform relations to target published versions
180
+ (entry) => {
181
+ const opts = { uid, locale: entry.locale, isDraft: false, allowMissingId: true };
182
+ return data.transformData(entry, opts);
183
+ },
184
+ // Create the published entry
185
+ (data2) => this.create(uid, { ...params2, data: data2, locale: data2.locale })
186
+ )
187
+ );
188
+ return { versions: publishedEntries };
167
189
  },
168
190
  async unpublish(uid, documentId, params2) {
169
191
  return this.delete(uid, documentId, {
170
192
  ...params2,
171
193
  lookup: { ...params2?.lookup, publishedAt: { $ne: null } }
172
- });
194
+ }).then(({ deletedEntries }) => ({ versions: deletedEntries }));
173
195
  },
174
196
  /**
175
197
  * Steps:
176
198
  * - Delete the matching draft versions (publishedAt = null)
177
199
  * - Clone the matching published versions into draft versions
200
+ *
201
+ * If the document has a published version, the draft version will be created from the published version.
202
+ * If the document has no published version, the version will be removed.
178
203
  */
179
204
  async discardDraft(uid, documentId, params2) {
180
205
  await this.delete(uid, documentId, {
@@ -182,19 +207,35 @@ const createDocumentEngine = ({
182
207
  // Delete all drafts that match query
183
208
  lookup: { ...params2?.lookup, publishedAt: null }
184
209
  });
185
- const clonedDocuments = await this.clone(uid, documentId, {
186
- ...params2 || {},
187
- // Clone only published versions
188
- lookup: { ...params2?.lookup, publishedAt: { $ne: null } },
189
- // @ts-expect-error - Generic type does not have publishedAt attribute by default
190
- data: { documentId, publishedAt: null }
210
+ const entriesToDraft = await strapi.db?.query(uid).findMany({
211
+ where: {
212
+ ...params2?.lookup,
213
+ documentId,
214
+ publishedAt: { $ne: null }
215
+ },
216
+ populate: populate.getDeepPopulate(uid)
191
217
  });
192
- return { versions: clonedDocuments?.versions || [] };
218
+ const draftEntries = await strapiUtils.mapAsync(
219
+ entriesToDraft,
220
+ strapiUtils.pipeAsync(
221
+ _.set("publishedAt", null),
222
+ _.set("documentId", documentId),
223
+ _.omit("id"),
224
+ // Transform relations to target draft versions
225
+ (entry) => {
226
+ const opts = { uid, locale: entry.locale, isDraft: true, allowMissingId: true };
227
+ return data.transformData(entry, opts);
228
+ },
229
+ // Create the draft entry
230
+ (data2) => this.create(uid, { ...params2, locale: data2.locale, data: data2 })
231
+ )
232
+ );
233
+ return { versions: draftEntries };
193
234
  }
194
235
  });
195
- const createDocumentRepository = (ctx) => {
236
+ const createDocumentEngine$1 = (ctx) => {
196
237
  const implementation = createDocumentEngine(ctx);
197
238
  return implementation;
198
239
  };
199
- module.exports = createDocumentRepository;
240
+ module.exports = createDocumentEngine$1;
200
241
  //# sourceMappingURL=document-engine.js.map