@strapi/core 0.0.0-experimental.3f7b2587c5e3d548262671895cf11d8bf8c9166e → 0.0.0-experimental.90ca9123352ed07e0a9cedaf4bcad1475e74137f

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 (262) 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 +2 -16
  26. package/dist/core-api/controller/transform.js.map +1 -1
  27. package/dist/core-api/controller/transform.mjs +2 -16
  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 +13 -8
  52. package/dist/core-api/service/single-type.d.ts.map +1 -1
  53. package/dist/core-api/service/single-type.js +25 -51
  54. package/dist/core-api/service/single-type.js.map +1 -1
  55. package/dist/core-api/service/single-type.mjs +24 -51
  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/collection-type.d.ts +4 -0
  68. package/dist/services/document-service/collection-type.d.ts.map +1 -0
  69. package/dist/services/document-service/collection-type.js +145 -0
  70. package/dist/services/document-service/collection-type.js.map +1 -0
  71. package/dist/services/document-service/collection-type.mjs +145 -0
  72. package/dist/services/document-service/collection-type.mjs.map +1 -0
  73. package/dist/services/document-service/common.d.ts +4 -0
  74. package/dist/services/document-service/common.d.ts.map +1 -0
  75. package/dist/services/document-service/common.js +7 -0
  76. package/dist/services/document-service/common.js.map +1 -0
  77. package/dist/services/document-service/common.mjs +7 -0
  78. package/dist/services/document-service/common.mjs.map +1 -0
  79. package/dist/services/document-service/document-engine.d.ts.map +1 -1
  80. package/dist/services/document-service/document-engine.js +130 -81
  81. package/dist/services/document-service/document-engine.js.map +1 -1
  82. package/dist/services/document-service/document-engine.mjs +125 -76
  83. package/dist/services/document-service/document-engine.mjs.map +1 -1
  84. package/dist/services/document-service/draft-and-publish.d.ts +24 -0
  85. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -0
  86. package/dist/services/document-service/draft-and-publish.js +41 -0
  87. package/dist/services/document-service/draft-and-publish.js.map +1 -0
  88. package/dist/services/document-service/draft-and-publish.mjs +41 -0
  89. package/dist/services/document-service/draft-and-publish.mjs.map +1 -0
  90. package/dist/services/document-service/{document-service.d.ts → index.d.ts} +2 -4
  91. package/dist/services/document-service/index.d.ts.map +1 -0
  92. package/dist/services/document-service/index.js +22 -0
  93. package/dist/services/document-service/index.js.map +1 -0
  94. package/dist/services/document-service/index.mjs +22 -0
  95. package/dist/services/document-service/index.mjs.map +1 -0
  96. package/dist/services/document-service/internationalization.d.ts +7 -0
  97. package/dist/services/document-service/internationalization.d.ts.map +1 -0
  98. package/dist/services/document-service/internationalization.js +40 -0
  99. package/dist/services/document-service/internationalization.js.map +1 -0
  100. package/dist/services/document-service/internationalization.mjs +40 -0
  101. package/dist/services/document-service/internationalization.mjs.map +1 -0
  102. package/dist/services/document-service/middlewares.d.ts +8 -0
  103. package/dist/services/document-service/middlewares.d.ts.map +1 -0
  104. package/dist/services/document-service/middlewares.js +46 -0
  105. package/dist/services/document-service/middlewares.js.map +1 -0
  106. package/dist/services/document-service/middlewares.mjs +46 -0
  107. package/dist/services/document-service/middlewares.mjs.map +1 -0
  108. package/dist/services/document-service/repository-factory.d.ts +3 -0
  109. package/dist/services/document-service/repository-factory.d.ts.map +1 -0
  110. package/dist/services/document-service/repository-factory.js +12 -0
  111. package/dist/services/document-service/repository-factory.js.map +1 -0
  112. package/dist/services/document-service/repository-factory.mjs +12 -0
  113. package/dist/services/document-service/repository-factory.mjs.map +1 -0
  114. package/dist/services/document-service/single-type.d.ts +4 -0
  115. package/dist/services/document-service/single-type.d.ts.map +1 -0
  116. package/dist/services/document-service/single-type.js +92 -0
  117. package/dist/services/document-service/single-type.js.map +1 -0
  118. package/dist/services/document-service/single-type.mjs +92 -0
  119. package/dist/services/document-service/single-type.mjs.map +1 -0
  120. package/dist/services/document-service/transform/data.d.ts +5 -0
  121. package/dist/services/document-service/transform/data.d.ts.map +1 -0
  122. package/dist/services/document-service/transform/data.js +13 -0
  123. package/dist/services/document-service/transform/data.js.map +1 -0
  124. package/dist/services/document-service/transform/data.mjs +13 -0
  125. package/dist/services/document-service/transform/data.mjs.map +1 -0
  126. package/dist/services/document-service/transform/fields.d.ts +5 -0
  127. package/dist/services/document-service/transform/fields.d.ts.map +1 -0
  128. package/dist/services/document-service/transform/fields.js +23 -0
  129. package/dist/services/document-service/transform/fields.js.map +1 -0
  130. package/dist/services/document-service/transform/fields.mjs +23 -0
  131. package/dist/services/document-service/transform/fields.mjs.map +1 -0
  132. package/dist/services/document-service/transform/filters.d.ts +3 -0
  133. package/dist/services/document-service/transform/filters.d.ts.map +1 -0
  134. package/dist/services/document-service/transform/filters.js +49 -0
  135. package/dist/services/document-service/transform/filters.js.map +1 -0
  136. package/dist/services/document-service/transform/filters.mjs +49 -0
  137. package/dist/services/document-service/transform/filters.mjs.map +1 -0
  138. package/dist/services/document-service/transform/id-map.d.ts +23 -0
  139. package/dist/services/document-service/transform/id-map.d.ts.map +1 -0
  140. package/dist/services/document-service/transform/id-map.js +72 -0
  141. package/dist/services/document-service/transform/id-map.js.map +1 -0
  142. package/dist/services/document-service/transform/id-map.mjs +72 -0
  143. package/dist/services/document-service/transform/id-map.mjs.map +1 -0
  144. package/dist/services/document-service/transform/id-transform.d.ts +26 -0
  145. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -0
  146. package/dist/services/document-service/transform/id-transform.js +57 -0
  147. package/dist/services/document-service/transform/id-transform.js.map +1 -0
  148. package/dist/services/document-service/transform/id-transform.mjs +57 -0
  149. package/dist/services/document-service/transform/id-transform.mjs.map +1 -0
  150. package/dist/services/document-service/transform/populate.d.ts +3 -0
  151. package/dist/services/document-service/transform/populate.d.ts.map +1 -0
  152. package/dist/services/document-service/transform/populate.js +31 -0
  153. package/dist/services/document-service/transform/populate.js.map +1 -0
  154. package/dist/services/document-service/transform/populate.mjs +31 -0
  155. package/dist/services/document-service/transform/populate.mjs.map +1 -0
  156. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +13 -0
  157. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -0
  158. package/dist/services/document-service/transform/relations/extract/data-ids.js +76 -0
  159. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -0
  160. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +76 -0
  161. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -0
  162. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts +10 -0
  163. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -0
  164. package/dist/services/document-service/transform/relations/transform/data-ids.js +115 -0
  165. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -0
  166. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +115 -0
  167. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -0
  168. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts +4 -0
  169. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts.map +1 -0
  170. package/dist/services/document-service/transform/relations/transform/output-ids.js +26 -0
  171. package/dist/services/document-service/transform/relations/transform/output-ids.js.map +1 -0
  172. package/dist/services/document-service/transform/relations/transform/output-ids.mjs +26 -0
  173. package/dist/services/document-service/transform/relations/transform/output-ids.mjs.map +1 -0
  174. package/dist/services/document-service/transform/relations/utils/data.d.ts +6 -0
  175. package/dist/services/document-service/transform/relations/utils/data.d.ts.map +1 -0
  176. package/dist/services/document-service/transform/relations/utils/data.js +12 -0
  177. package/dist/services/document-service/transform/relations/utils/data.js.map +1 -0
  178. package/dist/services/document-service/transform/relations/utils/data.mjs +12 -0
  179. package/dist/services/document-service/transform/relations/utils/data.mjs.map +1 -0
  180. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +10 -0
  181. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -0
  182. package/dist/services/document-service/transform/relations/utils/i18n.js +31 -0
  183. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -0
  184. package/dist/services/document-service/transform/relations/utils/i18n.mjs +31 -0
  185. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -0
  186. package/dist/services/document-service/transform/relations/utils/types.d.ts +8 -0
  187. package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -0
  188. package/dist/services/document-service/transform/sort.d.ts +5 -0
  189. package/dist/services/document-service/transform/sort.d.ts.map +1 -0
  190. package/dist/services/document-service/transform/sort.js +44 -0
  191. package/dist/services/document-service/transform/sort.js.map +1 -0
  192. package/dist/services/document-service/transform/sort.mjs +44 -0
  193. package/dist/services/document-service/transform/sort.mjs.map +1 -0
  194. package/dist/services/document-service/transform/types.d.ts +13 -0
  195. package/dist/services/document-service/transform/types.d.ts.map +1 -0
  196. package/dist/services/document-service/transform/utils.d.ts +9 -0
  197. package/dist/services/document-service/transform/utils.d.ts.map +1 -0
  198. package/dist/services/document-service/transform/utils.js +23 -0
  199. package/dist/services/document-service/transform/utils.js.map +1 -0
  200. package/dist/services/document-service/transform/utils.mjs +23 -0
  201. package/dist/services/document-service/transform/utils.mjs.map +1 -0
  202. package/dist/services/document-service/utils/populate.d.ts +3 -0
  203. package/dist/services/document-service/utils/populate.d.ts.map +1 -0
  204. package/dist/services/document-service/utils/populate.js +41 -0
  205. package/dist/services/document-service/utils/populate.js.map +1 -0
  206. package/dist/services/document-service/utils/populate.mjs +41 -0
  207. package/dist/services/document-service/utils/populate.mjs.map +1 -0
  208. package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
  209. package/dist/services/entity-validator/blocks-validator.js +22 -2
  210. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  211. package/dist/services/entity-validator/blocks-validator.mjs +22 -2
  212. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  213. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  214. package/dist/services/entity-validator/validators.js +7 -8
  215. package/dist/services/entity-validator/validators.js.map +1 -1
  216. package/dist/services/entity-validator/validators.mjs +7 -8
  217. package/dist/services/entity-validator/validators.mjs.map +1 -1
  218. package/dist/services/server/compose-endpoint.d.ts.map +1 -1
  219. package/dist/services/server/compose-endpoint.js +3 -0
  220. package/dist/services/server/compose-endpoint.js.map +1 -1
  221. package/dist/services/server/compose-endpoint.mjs +3 -0
  222. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  223. package/dist/services/webhook-store.js +2 -2
  224. package/dist/services/webhook-store.js.map +1 -1
  225. package/dist/services/webhook-store.mjs +2 -2
  226. package/dist/services/webhook-store.mjs.map +1 -1
  227. package/package.json +14 -14
  228. package/dist/core-api/service/get-fetch-params.d.ts +0 -7
  229. package/dist/core-api/service/get-fetch-params.d.ts.map +0 -1
  230. package/dist/core-api/service/get-fetch-params.js +0 -14
  231. package/dist/core-api/service/get-fetch-params.js.map +0 -1
  232. package/dist/core-api/service/get-fetch-params.mjs +0 -14
  233. package/dist/core-api/service/get-fetch-params.mjs.map +0 -1
  234. package/dist/services/document-service/document-service.d.ts.map +0 -1
  235. package/dist/services/document-service/document-service.js +0 -132
  236. package/dist/services/document-service/document-service.js.map +0 -1
  237. package/dist/services/document-service/document-service.mjs +0 -132
  238. package/dist/services/document-service/document-service.mjs.map +0 -1
  239. package/dist/services/document-service/middlewares/defaults/draft-and-publish.d.ts +0 -26
  240. package/dist/services/document-service/middlewares/defaults/draft-and-publish.d.ts.map +0 -1
  241. package/dist/services/document-service/middlewares/defaults/draft-and-publish.js +0 -58
  242. package/dist/services/document-service/middlewares/defaults/draft-and-publish.js.map +0 -1
  243. package/dist/services/document-service/middlewares/defaults/draft-and-publish.mjs +0 -58
  244. package/dist/services/document-service/middlewares/defaults/draft-and-publish.mjs.map +0 -1
  245. package/dist/services/document-service/middlewares/defaults/index.d.ts +0 -3
  246. package/dist/services/document-service/middlewares/defaults/index.d.ts.map +0 -1
  247. package/dist/services/document-service/middlewares/defaults/index.js +0 -82
  248. package/dist/services/document-service/middlewares/defaults/index.js.map +0 -1
  249. package/dist/services/document-service/middlewares/defaults/index.mjs +0 -82
  250. package/dist/services/document-service/middlewares/defaults/index.mjs.map +0 -1
  251. package/dist/services/document-service/middlewares/defaults/locales.d.ts +0 -18
  252. package/dist/services/document-service/middlewares/defaults/locales.d.ts.map +0 -1
  253. package/dist/services/document-service/middlewares/defaults/locales.js +0 -50
  254. package/dist/services/document-service/middlewares/defaults/locales.js.map +0 -1
  255. package/dist/services/document-service/middlewares/defaults/locales.mjs +0 -50
  256. package/dist/services/document-service/middlewares/defaults/locales.mjs.map +0 -1
  257. package/dist/services/document-service/middlewares/index.d.ts +0 -11
  258. package/dist/services/document-service/middlewares/index.d.ts.map +0 -1
  259. package/dist/services/document-service/middlewares/index.js +0 -59
  260. package/dist/services/document-service/middlewares/index.js.map +0 -1
  261. package/dist/services/document-service/middlewares/index.mjs +0 -59
  262. package/dist/services/document-service/middlewares/index.mjs.map +0 -1
@@ -37,9 +37,9 @@ function createController({
37
37
  };
38
38
  let ctrl;
39
39
  if (isSingleType(contentType)) {
40
- ctrl = singleType({ contentType });
40
+ ctrl = singleType.createSingleTypeController({ contentType });
41
41
  } else {
42
- ctrl = collectionType({ contentType });
42
+ ctrl = collectionType.createCollectionTypeController({ contentType });
43
43
  }
44
44
  return Object.assign(Object.create(proto), ctrl);
45
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/core-api/controller/index.ts"],"sourcesContent":["import { prop } from 'lodash/fp';\nimport type Koa from 'koa';\nimport { contentTypes as contentTypeUtils, sanitize, validate } from '@strapi/utils';\nimport type { CoreApi, Schema } from '@strapi/types';\n\nimport { transformResponse } from './transform';\nimport createSingleTypeController from './single-type';\nimport createCollectionTypeController from './collection-type';\n\nconst isSingleType = (contentType: Schema.ContentType): contentType is Schema.SingleType =>\n contentTypeUtils.isSingleType(contentType);\n\nconst getAuthFromKoaContext = (ctx: Koa.Context) => prop('state.auth', ctx) ?? {};\n\nfunction createController<T extends Schema.SingleType | Schema.CollectionType>(opts: {\n contentType: T;\n}): T extends Schema.SingleType ? CoreApi.Controller.SingleType : CoreApi.Controller.CollectionType;\nfunction createController({\n contentType,\n}: {\n contentType: Schema.SingleType | Schema.CollectionType;\n}) {\n const proto: CoreApi.Controller.Base = {\n transformResponse(data, meta) {\n return transformResponse(data, meta, { contentType });\n },\n\n async sanitizeOutput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.output(data, contentType, { auth });\n },\n\n async sanitizeInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.input(data, contentType, { auth });\n },\n\n async sanitizeQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.query(ctx.query, contentType, { auth });\n },\n\n async validateQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return validate.contentAPI.query(ctx.query, contentType, { auth });\n },\n\n async validateInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return validate.contentAPI.input(data, contentType, { auth });\n },\n };\n\n let ctrl;\n\n if (isSingleType(contentType)) {\n ctrl = createSingleTypeController({ contentType });\n } else {\n ctrl = createCollectionTypeController({ contentType });\n }\n\n return Object.assign(Object.create(proto), ctrl);\n}\n\nexport { createController };\n"],"names":["contentTypeUtils","prop","transformResponse","sanitize","validate","createSingleTypeController","createCollectionTypeController"],"mappings":";;;;;;;AASA,MAAM,eAAe,CAAC,gBACpBA,YAAA,aAAiB,aAAa,WAAW;AAE3C,MAAM,wBAAwB,CAAC,QAAqBC,EAAAA,KAAK,cAAc,GAAG,KAAK;AAK/E,SAAS,iBAAiB;AAAA,EACxB;AACF,GAEG;AACD,QAAM,QAAiC;AAAA,IACrC,kBAAkB,MAAM,MAAM;AAC5B,aAAOC,UAAkB,kBAAA,MAAM,MAAM,EAAE,YAAa,CAAA;AAAA,IACtD;AAAA,IAEA,MAAM,eAAe,MAAM,KAAK;AACxB,YAAA,OAAO,sBAAsB,GAAG;AAEtC,aAAOC,YAAAA,SAAS,WAAW,OAAO,MAAM,aAAa,EAAE,MAAM;AAAA,IAC/D;AAAA,IAEA,MAAM,cAAc,MAAM,KAAK;AACvB,YAAA,OAAO,sBAAsB,GAAG;AAEtC,aAAOA,YAAAA,SAAS,WAAW,MAAM,MAAM,aAAa,EAAE,MAAM;AAAA,IAC9D;AAAA,IAEA,MAAM,cAAc,KAAK;AACjB,YAAA,OAAO,sBAAsB,GAAG;AAE/B,aAAAA,YAAA,SAAS,WAAW,MAAM,IAAI,OAAO,aAAa,EAAE,MAAM;AAAA,IACnE;AAAA,IAEA,MAAM,cAAc,KAAK;AACjB,YAAA,OAAO,sBAAsB,GAAG;AAE/B,aAAAC,YAAA,SAAS,WAAW,MAAM,IAAI,OAAO,aAAa,EAAE,MAAM;AAAA,IACnE;AAAA,IAEA,MAAM,cAAc,MAAM,KAAK;AACvB,YAAA,OAAO,sBAAsB,GAAG;AAEtC,aAAOA,YAAAA,SAAS,WAAW,MAAM,MAAM,aAAa,EAAE,MAAM;AAAA,IAC9D;AAAA,EAAA;AAGE,MAAA;AAEA,MAAA,aAAa,WAAW,GAAG;AACtB,WAAAC,WAA2B,EAAE,YAAA,CAAa;AAAA,EAAA,OAC5C;AACE,WAAAC,eAA+B,EAAE,YAAA,CAAa;AAAA,EACvD;AAEA,SAAO,OAAO,OAAO,OAAO,OAAO,KAAK,GAAG,IAAI;AACjD;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/core-api/controller/index.ts"],"sourcesContent":["import { prop } from 'lodash/fp';\nimport type Koa from 'koa';\nimport { contentTypes as contentTypeUtils, sanitize, validate } from '@strapi/utils';\nimport type { CoreApi, Schema } from '@strapi/types';\n\nimport { transformResponse } from './transform';\nimport { createSingleTypeController } from './single-type';\nimport { createCollectionTypeController } from './collection-type';\n\nconst isSingleType = (contentType: Schema.ContentType): contentType is Schema.SingleType =>\n contentTypeUtils.isSingleType(contentType);\n\nconst getAuthFromKoaContext = (ctx: Koa.Context) => prop('state.auth', ctx) ?? {};\n\nfunction createController<T extends Schema.SingleType | Schema.CollectionType>(opts: {\n contentType: T;\n}): T extends Schema.SingleType ? CoreApi.Controller.SingleType : CoreApi.Controller.CollectionType;\nfunction createController({\n contentType,\n}: {\n contentType: Schema.SingleType | Schema.CollectionType;\n}) {\n // TODO: replace with Base class + SingleType and CollectionType classes\n\n const proto: CoreApi.Controller.Base = {\n transformResponse(data, meta) {\n return transformResponse(data, meta, { contentType });\n },\n\n async sanitizeOutput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.output(data, contentType, { auth });\n },\n\n async sanitizeInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.input(data, contentType, { auth });\n },\n\n async sanitizeQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.query(ctx.query, contentType, { auth });\n },\n\n async validateQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return validate.contentAPI.query(ctx.query, contentType, { auth });\n },\n\n async validateInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return validate.contentAPI.input(data, contentType, { auth });\n },\n };\n\n let ctrl;\n\n if (isSingleType(contentType)) {\n ctrl = createSingleTypeController({ contentType });\n } else {\n ctrl = createCollectionTypeController({ contentType });\n }\n\n return Object.assign(Object.create(proto), ctrl);\n}\n\nexport { createController };\n"],"names":["contentTypeUtils","prop","transformResponse","sanitize","validate","createSingleTypeController","createCollectionTypeController"],"mappings":";;;;;;;AASA,MAAM,eAAe,CAAC,gBACpBA,YAAA,aAAiB,aAAa,WAAW;AAE3C,MAAM,wBAAwB,CAAC,QAAqBC,EAAAA,KAAK,cAAc,GAAG,KAAK;AAK/E,SAAS,iBAAiB;AAAA,EACxB;AACF,GAEG;AAGD,QAAM,QAAiC;AAAA,IACrC,kBAAkB,MAAM,MAAM;AAC5B,aAAOC,UAAkB,kBAAA,MAAM,MAAM,EAAE,YAAa,CAAA;AAAA,IACtD;AAAA,IAEA,MAAM,eAAe,MAAM,KAAK;AACxB,YAAA,OAAO,sBAAsB,GAAG;AAEtC,aAAOC,YAAAA,SAAS,WAAW,OAAO,MAAM,aAAa,EAAE,MAAM;AAAA,IAC/D;AAAA,IAEA,MAAM,cAAc,MAAM,KAAK;AACvB,YAAA,OAAO,sBAAsB,GAAG;AAEtC,aAAOA,YAAAA,SAAS,WAAW,MAAM,MAAM,aAAa,EAAE,MAAM;AAAA,IAC9D;AAAA,IAEA,MAAM,cAAc,KAAK;AACjB,YAAA,OAAO,sBAAsB,GAAG;AAE/B,aAAAA,YAAA,SAAS,WAAW,MAAM,IAAI,OAAO,aAAa,EAAE,MAAM;AAAA,IACnE;AAAA,IAEA,MAAM,cAAc,KAAK;AACjB,YAAA,OAAO,sBAAsB,GAAG;AAE/B,aAAAC,YAAA,SAAS,WAAW,MAAM,IAAI,OAAO,aAAa,EAAE,MAAM;AAAA,IACnE;AAAA,IAEA,MAAM,cAAc,MAAM,KAAK;AACvB,YAAA,OAAO,sBAAsB,GAAG;AAEtC,aAAOA,YAAAA,SAAS,WAAW,MAAM,MAAM,aAAa,EAAE,MAAM;AAAA,IAC9D;AAAA,EAAA;AAGE,MAAA;AAEA,MAAA,aAAa,WAAW,GAAG;AACtB,WAAAC,WAAA,2BAA2B,EAAE,YAAA,CAAa;AAAA,EAAA,OAC5C;AACE,WAAAC,eAAA,+BAA+B,EAAE,YAAA,CAAa;AAAA,EACvD;AAEA,SAAO,OAAO,OAAO,OAAO,OAAO,KAAK,GAAG,IAAI;AACjD;;"}
@@ -1,8 +1,8 @@
1
1
  import { prop } from "lodash/fp";
2
2
  import { contentTypes, sanitize, validate } from "@strapi/utils";
3
3
  import { transformResponse } from "./transform.mjs";
4
- import createSingleTypeController from "./single-type.mjs";
5
- import createCollectionTypeController from "./collection-type.mjs";
4
+ import { createSingleTypeController } from "./single-type.mjs";
5
+ import { createCollectionTypeController } from "./collection-type.mjs";
6
6
  const isSingleType = (contentType) => contentTypes.isSingleType(contentType);
7
7
  const getAuthFromKoaContext = (ctx) => prop("state.auth", ctx) ?? {};
8
8
  function createController({
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/core-api/controller/index.ts"],"sourcesContent":["import { prop } from 'lodash/fp';\nimport type Koa from 'koa';\nimport { contentTypes as contentTypeUtils, sanitize, validate } from '@strapi/utils';\nimport type { CoreApi, Schema } from '@strapi/types';\n\nimport { transformResponse } from './transform';\nimport createSingleTypeController from './single-type';\nimport createCollectionTypeController from './collection-type';\n\nconst isSingleType = (contentType: Schema.ContentType): contentType is Schema.SingleType =>\n contentTypeUtils.isSingleType(contentType);\n\nconst getAuthFromKoaContext = (ctx: Koa.Context) => prop('state.auth', ctx) ?? {};\n\nfunction createController<T extends Schema.SingleType | Schema.CollectionType>(opts: {\n contentType: T;\n}): T extends Schema.SingleType ? CoreApi.Controller.SingleType : CoreApi.Controller.CollectionType;\nfunction createController({\n contentType,\n}: {\n contentType: Schema.SingleType | Schema.CollectionType;\n}) {\n const proto: CoreApi.Controller.Base = {\n transformResponse(data, meta) {\n return transformResponse(data, meta, { contentType });\n },\n\n async sanitizeOutput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.output(data, contentType, { auth });\n },\n\n async sanitizeInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.input(data, contentType, { auth });\n },\n\n async sanitizeQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.query(ctx.query, contentType, { auth });\n },\n\n async validateQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return validate.contentAPI.query(ctx.query, contentType, { auth });\n },\n\n async validateInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return validate.contentAPI.input(data, contentType, { auth });\n },\n };\n\n let ctrl;\n\n if (isSingleType(contentType)) {\n ctrl = createSingleTypeController({ contentType });\n } else {\n ctrl = createCollectionTypeController({ contentType });\n }\n\n return Object.assign(Object.create(proto), ctrl);\n}\n\nexport { createController };\n"],"names":["contentTypeUtils"],"mappings":";;;;;AASA,MAAM,eAAe,CAAC,gBACpBA,aAAiB,aAAa,WAAW;AAE3C,MAAM,wBAAwB,CAAC,QAAqB,KAAK,cAAc,GAAG,KAAK;AAK/E,SAAS,iBAAiB;AAAA,EACxB;AACF,GAEG;AACD,QAAM,QAAiC;AAAA,IACrC,kBAAkB,MAAM,MAAM;AAC5B,aAAO,kBAAkB,MAAM,MAAM,EAAE,YAAa,CAAA;AAAA,IACtD;AAAA,IAEA,MAAM,eAAe,MAAM,KAAK;AACxB,YAAA,OAAO,sBAAsB,GAAG;AAEtC,aAAO,SAAS,WAAW,OAAO,MAAM,aAAa,EAAE,MAAM;AAAA,IAC/D;AAAA,IAEA,MAAM,cAAc,MAAM,KAAK;AACvB,YAAA,OAAO,sBAAsB,GAAG;AAEtC,aAAO,SAAS,WAAW,MAAM,MAAM,aAAa,EAAE,MAAM;AAAA,IAC9D;AAAA,IAEA,MAAM,cAAc,KAAK;AACjB,YAAA,OAAO,sBAAsB,GAAG;AAE/B,aAAA,SAAS,WAAW,MAAM,IAAI,OAAO,aAAa,EAAE,MAAM;AAAA,IACnE;AAAA,IAEA,MAAM,cAAc,KAAK;AACjB,YAAA,OAAO,sBAAsB,GAAG;AAE/B,aAAA,SAAS,WAAW,MAAM,IAAI,OAAO,aAAa,EAAE,MAAM;AAAA,IACnE;AAAA,IAEA,MAAM,cAAc,MAAM,KAAK;AACvB,YAAA,OAAO,sBAAsB,GAAG;AAEtC,aAAO,SAAS,WAAW,MAAM,MAAM,aAAa,EAAE,MAAM;AAAA,IAC9D;AAAA,EAAA;AAGE,MAAA;AAEA,MAAA,aAAa,WAAW,GAAG;AACtB,WAAA,2BAA2B,EAAE,YAAA,CAAa;AAAA,EAAA,OAC5C;AACE,WAAA,+BAA+B,EAAE,YAAA,CAAa;AAAA,EACvD;AAEA,SAAO,OAAO,OAAO,OAAO,OAAO,KAAK,GAAG,IAAI;AACjD;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/core-api/controller/index.ts"],"sourcesContent":["import { prop } from 'lodash/fp';\nimport type Koa from 'koa';\nimport { contentTypes as contentTypeUtils, sanitize, validate } from '@strapi/utils';\nimport type { CoreApi, Schema } from '@strapi/types';\n\nimport { transformResponse } from './transform';\nimport { createSingleTypeController } from './single-type';\nimport { createCollectionTypeController } from './collection-type';\n\nconst isSingleType = (contentType: Schema.ContentType): contentType is Schema.SingleType =>\n contentTypeUtils.isSingleType(contentType);\n\nconst getAuthFromKoaContext = (ctx: Koa.Context) => prop('state.auth', ctx) ?? {};\n\nfunction createController<T extends Schema.SingleType | Schema.CollectionType>(opts: {\n contentType: T;\n}): T extends Schema.SingleType ? CoreApi.Controller.SingleType : CoreApi.Controller.CollectionType;\nfunction createController({\n contentType,\n}: {\n contentType: Schema.SingleType | Schema.CollectionType;\n}) {\n // TODO: replace with Base class + SingleType and CollectionType classes\n\n const proto: CoreApi.Controller.Base = {\n transformResponse(data, meta) {\n return transformResponse(data, meta, { contentType });\n },\n\n async sanitizeOutput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.output(data, contentType, { auth });\n },\n\n async sanitizeInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.input(data, contentType, { auth });\n },\n\n async sanitizeQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.query(ctx.query, contentType, { auth });\n },\n\n async validateQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return validate.contentAPI.query(ctx.query, contentType, { auth });\n },\n\n async validateInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return validate.contentAPI.input(data, contentType, { auth });\n },\n };\n\n let ctrl;\n\n if (isSingleType(contentType)) {\n ctrl = createSingleTypeController({ contentType });\n } else {\n ctrl = createCollectionTypeController({ contentType });\n }\n\n return Object.assign(Object.create(proto), ctrl);\n}\n\nexport { createController };\n"],"names":["contentTypeUtils"],"mappings":";;;;;AASA,MAAM,eAAe,CAAC,gBACpBA,aAAiB,aAAa,WAAW;AAE3C,MAAM,wBAAwB,CAAC,QAAqB,KAAK,cAAc,GAAG,KAAK;AAK/E,SAAS,iBAAiB;AAAA,EACxB;AACF,GAEG;AAGD,QAAM,QAAiC;AAAA,IACrC,kBAAkB,MAAM,MAAM;AAC5B,aAAO,kBAAkB,MAAM,MAAM,EAAE,YAAa,CAAA;AAAA,IACtD;AAAA,IAEA,MAAM,eAAe,MAAM,KAAK;AACxB,YAAA,OAAO,sBAAsB,GAAG;AAEtC,aAAO,SAAS,WAAW,OAAO,MAAM,aAAa,EAAE,MAAM;AAAA,IAC/D;AAAA,IAEA,MAAM,cAAc,MAAM,KAAK;AACvB,YAAA,OAAO,sBAAsB,GAAG;AAEtC,aAAO,SAAS,WAAW,MAAM,MAAM,aAAa,EAAE,MAAM;AAAA,IAC9D;AAAA,IAEA,MAAM,cAAc,KAAK;AACjB,YAAA,OAAO,sBAAsB,GAAG;AAE/B,aAAA,SAAS,WAAW,MAAM,IAAI,OAAO,aAAa,EAAE,MAAM;AAAA,IACnE;AAAA,IAEA,MAAM,cAAc,KAAK;AACjB,YAAA,OAAO,sBAAsB,GAAG;AAE/B,aAAA,SAAS,WAAW,MAAM,IAAI,OAAO,aAAa,EAAE,MAAM;AAAA,IACnE;AAAA,IAEA,MAAM,cAAc,MAAM,KAAK;AACvB,YAAA,OAAO,sBAAsB,GAAG;AAEtC,aAAO,SAAS,WAAW,MAAM,MAAM,aAAa,EAAE,MAAM;AAAA,IAC9D;AAAA,EAAA;AAGE,MAAA;AAEA,MAAA,aAAa,WAAW,GAAG;AACtB,WAAA,2BAA2B,EAAE,YAAA,CAAa;AAAA,EAAA,OAC5C;AACE,WAAA,+BAA+B,EAAE,YAAA,CAAa;AAAA,EACvD;AAEA,SAAO,OAAO,OAAO,OAAO,OAAO,KAAK,GAAG,IAAI;AACjD;"}
@@ -6,5 +6,5 @@ interface Options {
6
6
  * Returns a single type controller to handle default core-api actions
7
7
  */
8
8
  declare const createSingleTypeController: ({ contentType, }: Options) => Utils.PartialWithThis<CoreApi.Controller.SingleType>;
9
- export default createSingleTypeController;
9
+ export { createSingleTypeController };
10
10
  //# sourceMappingURL=single-type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"single-type.d.ts","sourceRoot":"","sources":["../../../src/core-api/controller/single-type.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAU,MAAM,eAAe,CAAC;AAIpE,UAAU,OAAO;IACf,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;CAChC;AAED;;GAEG;AACH,QAAA,MAAM,0BAA0B,qBAE7B,OAAO,KAAG,MAAM,eAAe,CAAC,QAAQ,UAAU,CAAC,UAAU,CAsD/D,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"single-type.d.ts","sourceRoot":"","sources":["../../../src/core-api/controller/single-type.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAU,MAAM,eAAe,CAAC;AAEpE,UAAU,OAAO;IACf,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;CAChC;AAED;;GAEG;AACH,QAAA,MAAM,0BAA0B,qBAE7B,OAAO,KAAG,MAAM,eAAe,CAAC,QAAQ,UAAU,CAAC,UAAU,CAkD/D,CAAC;AAEF,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
3
  const _ = require("lodash/fp");
3
4
  const strapiUtils = require("@strapi/utils");
4
- const transform = require("./transform.js");
5
5
  const createSingleTypeController = ({
6
6
  contentType
7
7
  }) => {
@@ -20,31 +20,26 @@ const createSingleTypeController = ({
20
20
  },
21
21
  /**
22
22
  * create or update single type content.
23
- *
24
- * @return {Object}
25
23
  */
26
24
  async update(ctx) {
27
- const { query } = ctx.request;
28
- const body = transform.parseBody(ctx);
25
+ const { query, body = {} } = ctx.request;
29
26
  if (!_.isObject(body.data)) {
30
27
  throw new strapiUtils.errors.ValidationError('Missing "data" payload in the request body');
31
28
  }
32
29
  const sanitizedInputData = await this.sanitizeInput(body.data, ctx);
33
30
  const entity = await strapi.service(uid).createOrUpdate({
34
31
  ...query,
35
- data: sanitizedInputData,
36
- files: "files" in body ? body.files : void 0
32
+ data: sanitizedInputData
37
33
  });
38
34
  const sanitizedEntity = await this.sanitizeOutput(entity, ctx);
39
35
  return this.transformResponse(sanitizedEntity);
40
36
  },
41
37
  async delete(ctx) {
42
38
  const { query } = ctx;
43
- const entity = await strapi.service(uid).delete(query);
44
- const sanitizedEntity = await this.sanitizeOutput(entity, ctx);
45
- return this.transformResponse(sanitizedEntity);
39
+ await strapi.service(uid).delete(query);
40
+ ctx.status = 204;
46
41
  }
47
42
  };
48
43
  };
49
- module.exports = createSingleTypeController;
44
+ exports.createSingleTypeController = createSingleTypeController;
50
45
  //# sourceMappingURL=single-type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"single-type.js","sources":["../../../src/core-api/controller/single-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Schema, CoreApi, Utils, Common } from '@strapi/types';\n\nimport { parseBody } from './transform';\n\ninterface Options {\n contentType: Schema.SingleType;\n}\n\n/**\n * Returns a single type controller to handle default core-api actions\n */\nconst createSingleTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<CoreApi.Controller.SingleType> => {\n const uid = contentType.uid as Common.UID.Service;\n\n return {\n /**\n * Retrieve single type content\n *\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).find(sanitizedQuery);\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * create or update single type content.\n *\n * @return {Object}\n */\n async update(ctx) {\n const { query } = ctx.request;\n const body = parseBody(ctx);\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).createOrUpdate({\n ...query,\n data: sanitizedInputData,\n files: 'files' in body ? body.files : undefined,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n async delete(ctx) {\n const { query } = ctx;\n\n const entity = await strapi.service(uid).delete(query);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n };\n};\n\nexport default createSingleTypeController;\n"],"names":["parseBody","isObject","errors"],"mappings":";;;;AAaA,MAAM,6BAA6B,CAAC;AAAA,EAClC;AACF,MAAqE;AACnE,QAAM,MAAM,YAAY;AAEjB,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,MAAM,KAAK,KAAK;AACR,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,KAAK,cAAc;AAE5D,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,KAAK;AACV,YAAA,EAAE,MAAM,IAAI,IAAI;AAChB,YAAA,OAAOA,oBAAU,GAAG;AAE1B,UAAI,CAACC,EAAA,SAAS,KAAK,IAAI,GAAG;AAClB,cAAA,IAAIC,YAAO,OAAA,gBAAgB,4CAA4C;AAAA,MAC/E;AAEA,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,eAAe;AAAA,QACtD,GAAG;AAAA,QACH,MAAM;AAAA,QACN,OAAO,WAAW,OAAO,KAAK,QAAQ;AAAA,MAAA,CACvC;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA,IAEA,MAAM,OAAO,KAAK;AACV,YAAA,EAAE,MAAU,IAAA;AAElB,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,KAAK;AACrD,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA,EAAA;AAEJ;;"}
1
+ {"version":3,"file":"single-type.js","sources":["../../../src/core-api/controller/single-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Schema, CoreApi, Utils, Common } from '@strapi/types';\n\ninterface Options {\n contentType: Schema.SingleType;\n}\n\n/**\n * Returns a single type controller to handle default core-api actions\n */\nconst createSingleTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<CoreApi.Controller.SingleType> => {\n const uid = contentType.uid as Common.UID.Service;\n\n // TODO: transform into a class\n return {\n /**\n * Retrieve single type content\n *\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).find(sanitizedQuery);\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * create or update single type content.\n */\n async update(ctx) {\n const { query, body = {} } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).createOrUpdate({\n ...query,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n async delete(ctx) {\n const { query } = ctx;\n\n await strapi.service(uid).delete(query);\n\n ctx.status = 204;\n },\n };\n};\n\nexport { createSingleTypeController };\n"],"names":["isObject","errors"],"mappings":";;;;AAWA,MAAM,6BAA6B,CAAC;AAAA,EAClC;AACF,MAAqE;AACnE,QAAM,MAAM,YAAY;AAGjB,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,MAAM,KAAK,KAAK;AACR,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,KAAK,cAAc;AAE5D,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,OAAO,KAAK;AAChB,YAAM,EAAE,OAAO,OAAO,CAAC,EAAA,IAAM,IAAI;AAEjC,UAAI,CAACA,EAAA,SAAS,KAAK,IAAI,GAAG;AAClB,cAAA,IAAIC,YAAO,OAAA,gBAAgB,4CAA4C;AAAA,MAC/E;AAEA,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,eAAe;AAAA,QACtD,GAAG;AAAA,QACH,MAAM;AAAA,MAAA,CACP;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA,IAEA,MAAM,OAAO,KAAK;AACV,YAAA,EAAE,MAAU,IAAA;AAElB,YAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,KAAK;AAEtC,UAAI,SAAS;AAAA,IACf;AAAA,EAAA;AAEJ;;"}
@@ -1,6 +1,5 @@
1
1
  import { isObject } from "lodash/fp";
2
2
  import { errors } from "@strapi/utils";
3
- import { parseBody } from "./transform.mjs";
4
3
  const createSingleTypeController = ({
5
4
  contentType
6
5
  }) => {
@@ -19,33 +18,28 @@ const createSingleTypeController = ({
19
18
  },
20
19
  /**
21
20
  * create or update single type content.
22
- *
23
- * @return {Object}
24
21
  */
25
22
  async update(ctx) {
26
- const { query } = ctx.request;
27
- const body = parseBody(ctx);
23
+ const { query, body = {} } = ctx.request;
28
24
  if (!isObject(body.data)) {
29
25
  throw new errors.ValidationError('Missing "data" payload in the request body');
30
26
  }
31
27
  const sanitizedInputData = await this.sanitizeInput(body.data, ctx);
32
28
  const entity = await strapi.service(uid).createOrUpdate({
33
29
  ...query,
34
- data: sanitizedInputData,
35
- files: "files" in body ? body.files : void 0
30
+ data: sanitizedInputData
36
31
  });
37
32
  const sanitizedEntity = await this.sanitizeOutput(entity, ctx);
38
33
  return this.transformResponse(sanitizedEntity);
39
34
  },
40
35
  async delete(ctx) {
41
36
  const { query } = ctx;
42
- const entity = await strapi.service(uid).delete(query);
43
- const sanitizedEntity = await this.sanitizeOutput(entity, ctx);
44
- return this.transformResponse(sanitizedEntity);
37
+ await strapi.service(uid).delete(query);
38
+ ctx.status = 204;
45
39
  }
46
40
  };
47
41
  };
48
42
  export {
49
- createSingleTypeController as default
43
+ createSingleTypeController
50
44
  };
51
45
  //# sourceMappingURL=single-type.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"single-type.mjs","sources":["../../../src/core-api/controller/single-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Schema, CoreApi, Utils, Common } from '@strapi/types';\n\nimport { parseBody } from './transform';\n\ninterface Options {\n contentType: Schema.SingleType;\n}\n\n/**\n * Returns a single type controller to handle default core-api actions\n */\nconst createSingleTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<CoreApi.Controller.SingleType> => {\n const uid = contentType.uid as Common.UID.Service;\n\n return {\n /**\n * Retrieve single type content\n *\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).find(sanitizedQuery);\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * create or update single type content.\n *\n * @return {Object}\n */\n async update(ctx) {\n const { query } = ctx.request;\n const body = parseBody(ctx);\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).createOrUpdate({\n ...query,\n data: sanitizedInputData,\n files: 'files' in body ? body.files : undefined,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n async delete(ctx) {\n const { query } = ctx;\n\n const entity = await strapi.service(uid).delete(query);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n };\n};\n\nexport default createSingleTypeController;\n"],"names":[],"mappings":";;;AAaA,MAAM,6BAA6B,CAAC;AAAA,EAClC;AACF,MAAqE;AACnE,QAAM,MAAM,YAAY;AAEjB,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,MAAM,KAAK,KAAK;AACR,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,KAAK,cAAc;AAE5D,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,KAAK;AACV,YAAA,EAAE,MAAM,IAAI,IAAI;AAChB,YAAA,OAAO,UAAU,GAAG;AAE1B,UAAI,CAAC,SAAS,KAAK,IAAI,GAAG;AAClB,cAAA,IAAI,OAAO,gBAAgB,4CAA4C;AAAA,MAC/E;AAEA,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,eAAe;AAAA,QACtD,GAAG;AAAA,QACH,MAAM;AAAA,QACN,OAAO,WAAW,OAAO,KAAK,QAAQ;AAAA,MAAA,CACvC;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA,IAEA,MAAM,OAAO,KAAK;AACV,YAAA,EAAE,MAAU,IAAA;AAElB,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,KAAK;AACrD,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"single-type.mjs","sources":["../../../src/core-api/controller/single-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Schema, CoreApi, Utils, Common } from '@strapi/types';\n\ninterface Options {\n contentType: Schema.SingleType;\n}\n\n/**\n * Returns a single type controller to handle default core-api actions\n */\nconst createSingleTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<CoreApi.Controller.SingleType> => {\n const uid = contentType.uid as Common.UID.Service;\n\n // TODO: transform into a class\n return {\n /**\n * Retrieve single type content\n *\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).find(sanitizedQuery);\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * create or update single type content.\n */\n async update(ctx) {\n const { query, body = {} } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).createOrUpdate({\n ...query,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n async delete(ctx) {\n const { query } = ctx;\n\n await strapi.service(uid).delete(query);\n\n ctx.status = 204;\n },\n };\n};\n\nexport { createSingleTypeController };\n"],"names":[],"mappings":";;AAWA,MAAM,6BAA6B,CAAC;AAAA,EAClC;AACF,MAAqE;AACnE,QAAM,MAAM,YAAY;AAGjB,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,MAAM,KAAK,KAAK;AACR,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,KAAK,cAAc;AAE5D,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,OAAO,KAAK;AAChB,YAAM,EAAE,OAAO,OAAO,CAAC,EAAA,IAAM,IAAI;AAEjC,UAAI,CAAC,SAAS,KAAK,IAAI,GAAG;AAClB,cAAA,IAAI,OAAO,gBAAgB,4CAA4C;AAAA,MAC/E;AAEA,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,eAAe;AAAA,QACtD,GAAG;AAAA,QACH,MAAM;AAAA,MAAA,CACP;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA,IAEA,MAAM,OAAO,KAAK;AACV,YAAA,EAAE,MAAU,IAAA;AAElB,YAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,KAAK;AAEtC,UAAI,SAAS;AAAA,IACf;AAAA,EAAA;AAEJ;"}
@@ -1,22 +1,13 @@
1
- /// <reference types="formidable" />
2
- import type Koa from 'koa';
3
1
  import type { Schema } from '@strapi/types';
4
2
  type TransformedEntry = {
5
3
  id: string;
6
- attributes: Record<string, unknown>;
7
4
  meta?: Record<string, unknown>;
8
- };
9
- declare const parseBody: (ctx: Koa.Context) => Koa.Context | {
10
- data: any;
11
- files: import("formidable").Files;
12
- } | {
13
- data: any;
14
- };
5
+ } & Record<string, unknown>;
15
6
  declare const transformResponse: (resource: any, meta?: unknown, opts?: {
16
7
  contentType?: Schema.ContentType | Schema.Component;
17
8
  }) => {
18
9
  data: TransformedEntry | TransformedEntry[] | null;
19
10
  meta: unknown;
20
11
  } | null | undefined;
21
- export { parseBody, transformResponse };
12
+ export { transformResponse };
22
13
  //# sourceMappingURL=transform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../src/core-api/controller/transform.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,EAAU,MAAM,EAAO,MAAM,eAAe,CAAC;AAEzD,KAAK,gBAAgB,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAoBF,QAAA,MAAM,SAAS,QAAS,IAAI,OAAO;;;;;CAQlC,CAAC;AAEF,QAAA,MAAM,iBAAiB,aACX,GAAG,SACP,OAAO,SACP;IAAE,WAAW,CAAC,EAAE,OAAO,WAAW,GAAG,OAAO,SAAS,CAAA;CAAE;;;oBAU9D,CAAC;AAsFF,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../src/core-api/controller/transform.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,MAAM,EAAO,MAAM,eAAe,CAAC;AAEzD,KAAK,gBAAgB,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAoB5B,QAAA,MAAM,iBAAiB,aACX,GAAG,SACP,OAAO,SACP;IAAE,WAAW,CAAC,EAAE,OAAO,WAAW,GAAG,OAAO,SAAS,CAAA;CAAE;;;oBAU9D,CAAC;AA+EF,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1,20 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const _ = require("lodash/fp");
4
- const strapiUtils = require("@strapi/utils");
5
4
  function isEntry(property) {
6
5
  return property === null || _.isPlainObject(property) || Array.isArray(property);
7
6
  }
8
7
  function isDZEntries(property) {
9
8
  return Array.isArray(property);
10
9
  }
11
- const parseBody = (ctx) => {
12
- if (ctx.is("multipart")) {
13
- return strapiUtils.parseMultipartData(ctx);
14
- }
15
- const { data } = ctx.request.body || {};
16
- return { data };
17
- };
18
10
  const transformResponse = (resource, meta = {}, opts = {}) => {
19
11
  if (_.isNil(resource)) {
20
12
  return resource;
@@ -28,12 +20,7 @@ function transformComponent(data, component) {
28
20
  if (Array.isArray(data)) {
29
21
  return data.map((datum) => transformComponent(datum, component));
30
22
  }
31
- const res = transformEntry(data, component);
32
- if (_.isNil(res)) {
33
- return res;
34
- }
35
- const { id, attributes } = res;
36
- return { id, ...attributes };
23
+ return transformEntry(data, component);
37
24
  }
38
25
  function transformEntry(entry, type) {
39
26
  if (_.isNil(entry)) {
@@ -74,11 +61,10 @@ function transformEntry(entry, type) {
74
61
  }
75
62
  return {
76
63
  id,
77
- attributes: attributeValues
64
+ ...attributeValues
78
65
  // NOTE: not necessary for now
79
66
  // meta: {},
80
67
  };
81
68
  }
82
- exports.parseBody = parseBody;
83
69
  exports.transformResponse = transformResponse;
84
70
  //# sourceMappingURL=transform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","sources":["../../../src/core-api/controller/transform.ts"],"sourcesContent":["import { isNil, isPlainObject } from 'lodash/fp';\nimport { parseMultipartData } from '@strapi/utils';\nimport type Koa from 'koa';\nimport type { Common, Schema, UID } from '@strapi/types';\n\ntype TransformedEntry = {\n id: string;\n attributes: Record<string, unknown>;\n meta?: Record<string, unknown>;\n};\n\ntype TransformedComponent = {\n id: string;\n [key: string]: unknown;\n};\n\ntype Entry = {\n id: string;\n [key: string]: Entry | Entry[] | string | number | null | boolean | Date;\n};\n\nfunction isEntry(property: unknown): property is Entry | Entry[] {\n return property === null || isPlainObject(property) || Array.isArray(property);\n}\n\nfunction isDZEntries(property: unknown): property is (Entry & { __component: UID.Component })[] {\n return Array.isArray(property);\n}\n\nconst parseBody = (ctx: Koa.Context) => {\n if (ctx.is('multipart')) {\n return parseMultipartData(ctx);\n }\n\n const { data } = ctx.request.body || {};\n\n return { data };\n};\n\nconst transformResponse = (\n resource: any,\n meta: unknown = {},\n opts: { contentType?: Schema.ContentType | Schema.Component } = {}\n) => {\n if (isNil(resource)) {\n return resource;\n }\n\n return {\n data: transformEntry(resource, opts?.contentType),\n meta,\n };\n};\n\nfunction transformComponent<T extends Entry | Entry[] | null>(\n data: T,\n component: Schema.Component\n): T extends Entry[] ? TransformedComponent[] : T extends Entry ? TransformedComponent : null;\nfunction transformComponent(\n data: Entry | Entry[] | null,\n component: Schema.Component\n): TransformedComponent | TransformedComponent[] | null {\n if (Array.isArray(data)) {\n return data.map((datum) => transformComponent(datum, component));\n }\n\n const res = transformEntry(data, component);\n\n if (isNil(res)) {\n return res;\n }\n\n const { id, attributes } = res;\n return { id, ...attributes };\n}\n\nfunction transformEntry<T extends Entry | Entry[] | null>(\n entry: T,\n type?: Schema.ContentType | Schema.Component\n): T extends Entry[] ? TransformedEntry[] : T extends Entry ? TransformedEntry : null;\nfunction transformEntry(\n entry: Entry | Entry[] | null,\n type?: Schema.ContentType | Schema.Component\n): TransformedEntry | TransformedEntry[] | null {\n if (isNil(entry)) {\n return entry;\n }\n\n if (Array.isArray(entry)) {\n return entry.map((singleEntry) => transformEntry(singleEntry, type));\n }\n\n if (!isPlainObject(entry)) {\n throw new Error('Entry must be an object');\n }\n\n const { id, ...properties } = entry;\n\n const attributeValues: Record<string, unknown> = {};\n\n for (const key of Object.keys(properties)) {\n const property = properties[key];\n const attribute = type && type.attributes[key];\n\n if (attribute && attribute.type === 'relation' && isEntry(property) && 'target' in attribute) {\n const data = transformEntry(\n property,\n strapi.contentType(attribute.target as Common.UID.ContentType)\n );\n\n attributeValues[key] = { data };\n } else if (attribute && attribute.type === 'component' && isEntry(property)) {\n attributeValues[key] = transformComponent(property, strapi.components[attribute.component]);\n } else if (attribute && attribute.type === 'dynamiczone' && isDZEntries(property)) {\n if (isNil(property)) {\n attributeValues[key] = property;\n }\n\n attributeValues[key] = property.map((subProperty) => {\n return transformComponent(subProperty, strapi.components[subProperty.__component]);\n });\n } else if (attribute && attribute.type === 'media' && isEntry(property)) {\n const data = transformEntry(property, strapi.contentType('plugin::upload.file'));\n\n attributeValues[key] = { data };\n } else {\n attributeValues[key] = property;\n }\n }\n\n return {\n id,\n attributes: attributeValues,\n // NOTE: not necessary for now\n // meta: {},\n };\n}\n\nexport { parseBody, transformResponse };\n"],"names":["isPlainObject","parseMultipartData","isNil"],"mappings":";;;;AAqBA,SAAS,QAAQ,UAAgD;AAC/D,SAAO,aAAa,QAAQA,gBAAc,QAAQ,KAAK,MAAM,QAAQ,QAAQ;AAC/E;AAEA,SAAS,YAAY,UAA2E;AACvF,SAAA,MAAM,QAAQ,QAAQ;AAC/B;AAEM,MAAA,YAAY,CAAC,QAAqB;AAClC,MAAA,IAAI,GAAG,WAAW,GAAG;AACvB,WAAOC,YAAAA,mBAAmB,GAAG;AAAA,EAC/B;AAEA,QAAM,EAAE,KAAK,IAAI,IAAI,QAAQ,QAAQ,CAAA;AAErC,SAAO,EAAE,KAAK;AAChB;AAEM,MAAA,oBAAoB,CACxB,UACA,OAAgB,CAAA,GAChB,OAAgE,CAAA,MAC7D;AACC,MAAAC,EAAAA,MAAM,QAAQ,GAAG;AACZ,WAAA;AAAA,EACT;AAEO,SAAA;AAAA,IACL,MAAM,eAAe,UAAU,MAAM,WAAW;AAAA,IAChD;AAAA,EAAA;AAEJ;AAMA,SAAS,mBACP,MACA,WACsD;AAClD,MAAA,MAAM,QAAQ,IAAI,GAAG;AACvB,WAAO,KAAK,IAAI,CAAC,UAAU,mBAAmB,OAAO,SAAS,CAAC;AAAA,EACjE;AAEM,QAAA,MAAM,eAAe,MAAM,SAAS;AAEtC,MAAAA,EAAAA,MAAM,GAAG,GAAG;AACP,WAAA;AAAA,EACT;AAEM,QAAA,EAAE,IAAI,WAAe,IAAA;AACpB,SAAA,EAAE,IAAI,GAAG;AAClB;AAMA,SAAS,eACP,OACA,MAC8C;AAC1C,MAAAA,EAAAA,MAAM,KAAK,GAAG;AACT,WAAA;AAAA,EACT;AAEI,MAAA,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,gBAAgB,eAAe,aAAa,IAAI,CAAC;AAAA,EACrE;AAEI,MAAA,CAACF,EAAAA,cAAc,KAAK,GAAG;AACnB,UAAA,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,QAAM,EAAE,IAAI,GAAG,WAAA,IAAe;AAE9B,QAAM,kBAA2C,CAAA;AAEjD,aAAW,OAAO,OAAO,KAAK,UAAU,GAAG;AACnC,UAAA,WAAW,WAAW,GAAG;AAC/B,UAAM,YAAY,QAAQ,KAAK,WAAW,GAAG;AAEzC,QAAA,aAAa,UAAU,SAAS,cAAc,QAAQ,QAAQ,KAAK,YAAY,WAAW;AAC5F,YAAM,OAAO;AAAA,QACX;AAAA,QACA,OAAO,YAAY,UAAU,MAAgC;AAAA,MAAA;AAG/C,sBAAA,GAAG,IAAI,EAAE;IAAK,WACrB,aAAa,UAAU,SAAS,eAAe,QAAQ,QAAQ,GAAG;AAC3D,sBAAA,GAAG,IAAI,mBAAmB,UAAU,OAAO,WAAW,UAAU,SAAS,CAAC;AAAA,IAAA,WACjF,aAAa,UAAU,SAAS,iBAAiB,YAAY,QAAQ,GAAG;AAC7E,UAAAE,EAAAA,MAAM,QAAQ,GAAG;AACnB,wBAAgB,GAAG,IAAI;AAAA,MACzB;AAEA,sBAAgB,GAAG,IAAI,SAAS,IAAI,CAAC,gBAAgB;AACnD,eAAO,mBAAmB,aAAa,OAAO,WAAW,YAAY,WAAW,CAAC;AAAA,MAAA,CAClF;AAAA,IAAA,WACQ,aAAa,UAAU,SAAS,WAAW,QAAQ,QAAQ,GAAG;AACvE,YAAM,OAAO,eAAe,UAAU,OAAO,YAAY,qBAAqB,CAAC;AAE/D,sBAAA,GAAG,IAAI,EAAE;IAAK,OACzB;AACL,sBAAgB,GAAG,IAAI;AAAA,IACzB;AAAA,EACF;AAEO,SAAA;AAAA,IACL;AAAA,IACA,YAAY;AAAA;AAAA;AAAA,EAAA;AAIhB;;;"}
1
+ {"version":3,"file":"transform.js","sources":["../../../src/core-api/controller/transform.ts"],"sourcesContent":["import { isNil, isPlainObject } from 'lodash/fp';\nimport type { Common, Schema, UID } from '@strapi/types';\n\ntype TransformedEntry = {\n id: string;\n meta?: Record<string, unknown>;\n} & Record<string, unknown>;\n\ntype TransformedComponent = {\n id: string;\n [key: string]: unknown;\n};\n\ntype Entry = {\n id: string;\n [key: string]: Entry | Entry[] | string | number | null | boolean | Date;\n};\n\nfunction isEntry(property: unknown): property is Entry | Entry[] {\n return property === null || isPlainObject(property) || Array.isArray(property);\n}\n\nfunction isDZEntries(property: unknown): property is (Entry & { __component: UID.Component })[] {\n return Array.isArray(property);\n}\n\nconst transformResponse = (\n resource: any,\n meta: unknown = {},\n opts: { contentType?: Schema.ContentType | Schema.Component } = {}\n) => {\n if (isNil(resource)) {\n return resource;\n }\n\n return {\n data: transformEntry(resource, opts?.contentType),\n meta,\n };\n};\n\nfunction transformComponent<T extends Entry | Entry[] | null>(\n data: T,\n component: Schema.Component\n): T extends Entry[] ? TransformedComponent[] : T extends Entry ? TransformedComponent : null;\nfunction transformComponent(\n data: Entry | Entry[] | null,\n component: Schema.Component\n): TransformedComponent | TransformedComponent[] | null {\n if (Array.isArray(data)) {\n return data.map((datum) => transformComponent(datum, component));\n }\n\n return transformEntry(data, component);\n}\n\nfunction transformEntry<T extends Entry | Entry[] | null>(\n entry: T,\n type?: Schema.ContentType | Schema.Component\n): T extends Entry[] ? TransformedEntry[] : T extends Entry ? TransformedEntry : null;\nfunction transformEntry(\n entry: Entry | Entry[] | null,\n type?: Schema.ContentType | Schema.Component\n): TransformedEntry | TransformedEntry[] | null {\n if (isNil(entry)) {\n return entry;\n }\n\n if (Array.isArray(entry)) {\n return entry.map((singleEntry) => transformEntry(singleEntry, type));\n }\n\n if (!isPlainObject(entry)) {\n throw new Error('Entry must be an object');\n }\n\n const { id, ...properties } = entry;\n\n const attributeValues: Record<string, unknown> = {};\n\n for (const key of Object.keys(properties)) {\n const property = properties[key];\n const attribute = type && type.attributes[key];\n\n if (attribute && attribute.type === 'relation' && isEntry(property) && 'target' in attribute) {\n const data = transformEntry(\n property,\n strapi.contentType(attribute.target as Common.UID.ContentType)\n );\n\n attributeValues[key] = { data };\n } else if (attribute && attribute.type === 'component' && isEntry(property)) {\n attributeValues[key] = transformComponent(property, strapi.components[attribute.component]);\n } else if (attribute && attribute.type === 'dynamiczone' && isDZEntries(property)) {\n if (isNil(property)) {\n attributeValues[key] = property;\n }\n\n attributeValues[key] = property.map((subProperty) => {\n return transformComponent(subProperty, strapi.components[subProperty.__component]);\n });\n } else if (attribute && attribute.type === 'media' && isEntry(property)) {\n const data = transformEntry(property, strapi.contentType('plugin::upload.file'));\n\n attributeValues[key] = { data };\n } else {\n attributeValues[key] = property;\n }\n }\n\n return {\n id,\n ...attributeValues,\n // NOTE: not necessary for now\n // meta: {},\n };\n}\n\nexport { transformResponse };\n"],"names":["isPlainObject","isNil"],"mappings":";;;AAkBA,SAAS,QAAQ,UAAgD;AAC/D,SAAO,aAAa,QAAQA,gBAAc,QAAQ,KAAK,MAAM,QAAQ,QAAQ;AAC/E;AAEA,SAAS,YAAY,UAA2E;AACvF,SAAA,MAAM,QAAQ,QAAQ;AAC/B;AAEM,MAAA,oBAAoB,CACxB,UACA,OAAgB,CAAA,GAChB,OAAgE,CAAA,MAC7D;AACC,MAAAC,EAAAA,MAAM,QAAQ,GAAG;AACZ,WAAA;AAAA,EACT;AAEO,SAAA;AAAA,IACL,MAAM,eAAe,UAAU,MAAM,WAAW;AAAA,IAChD;AAAA,EAAA;AAEJ;AAMA,SAAS,mBACP,MACA,WACsD;AAClD,MAAA,MAAM,QAAQ,IAAI,GAAG;AACvB,WAAO,KAAK,IAAI,CAAC,UAAU,mBAAmB,OAAO,SAAS,CAAC;AAAA,EACjE;AAEO,SAAA,eAAe,MAAM,SAAS;AACvC;AAMA,SAAS,eACP,OACA,MAC8C;AAC1C,MAAAA,EAAAA,MAAM,KAAK,GAAG;AACT,WAAA;AAAA,EACT;AAEI,MAAA,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,gBAAgB,eAAe,aAAa,IAAI,CAAC;AAAA,EACrE;AAEI,MAAA,CAACD,EAAAA,cAAc,KAAK,GAAG;AACnB,UAAA,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,QAAM,EAAE,IAAI,GAAG,WAAA,IAAe;AAE9B,QAAM,kBAA2C,CAAA;AAEjD,aAAW,OAAO,OAAO,KAAK,UAAU,GAAG;AACnC,UAAA,WAAW,WAAW,GAAG;AAC/B,UAAM,YAAY,QAAQ,KAAK,WAAW,GAAG;AAEzC,QAAA,aAAa,UAAU,SAAS,cAAc,QAAQ,QAAQ,KAAK,YAAY,WAAW;AAC5F,YAAM,OAAO;AAAA,QACX;AAAA,QACA,OAAO,YAAY,UAAU,MAAgC;AAAA,MAAA;AAG/C,sBAAA,GAAG,IAAI,EAAE;IAAK,WACrB,aAAa,UAAU,SAAS,eAAe,QAAQ,QAAQ,GAAG;AAC3D,sBAAA,GAAG,IAAI,mBAAmB,UAAU,OAAO,WAAW,UAAU,SAAS,CAAC;AAAA,IAAA,WACjF,aAAa,UAAU,SAAS,iBAAiB,YAAY,QAAQ,GAAG;AAC7E,UAAAC,EAAAA,MAAM,QAAQ,GAAG;AACnB,wBAAgB,GAAG,IAAI;AAAA,MACzB;AAEA,sBAAgB,GAAG,IAAI,SAAS,IAAI,CAAC,gBAAgB;AACnD,eAAO,mBAAmB,aAAa,OAAO,WAAW,YAAY,WAAW,CAAC;AAAA,MAAA,CAClF;AAAA,IAAA,WACQ,aAAa,UAAU,SAAS,WAAW,QAAQ,QAAQ,GAAG;AACvE,YAAM,OAAO,eAAe,UAAU,OAAO,YAAY,qBAAqB,CAAC;AAE/D,sBAAA,GAAG,IAAI,EAAE;IAAK,OACzB;AACL,sBAAgB,GAAG,IAAI;AAAA,IACzB;AAAA,EACF;AAEO,SAAA;AAAA,IACL;AAAA,IACA,GAAG;AAAA;AAAA;AAAA,EAAA;AAIP;;"}
@@ -1,18 +1,10 @@
1
1
  import { isNil, isPlainObject } from "lodash/fp";
2
- import { parseMultipartData } from "@strapi/utils";
3
2
  function isEntry(property) {
4
3
  return property === null || isPlainObject(property) || Array.isArray(property);
5
4
  }
6
5
  function isDZEntries(property) {
7
6
  return Array.isArray(property);
8
7
  }
9
- const parseBody = (ctx) => {
10
- if (ctx.is("multipart")) {
11
- return parseMultipartData(ctx);
12
- }
13
- const { data } = ctx.request.body || {};
14
- return { data };
15
- };
16
8
  const transformResponse = (resource, meta = {}, opts = {}) => {
17
9
  if (isNil(resource)) {
18
10
  return resource;
@@ -26,12 +18,7 @@ function transformComponent(data, component) {
26
18
  if (Array.isArray(data)) {
27
19
  return data.map((datum) => transformComponent(datum, component));
28
20
  }
29
- const res = transformEntry(data, component);
30
- if (isNil(res)) {
31
- return res;
32
- }
33
- const { id, attributes } = res;
34
- return { id, ...attributes };
21
+ return transformEntry(data, component);
35
22
  }
36
23
  function transformEntry(entry, type) {
37
24
  if (isNil(entry)) {
@@ -72,13 +59,12 @@ function transformEntry(entry, type) {
72
59
  }
73
60
  return {
74
61
  id,
75
- attributes: attributeValues
62
+ ...attributeValues
76
63
  // NOTE: not necessary for now
77
64
  // meta: {},
78
65
  };
79
66
  }
80
67
  export {
81
- parseBody,
82
68
  transformResponse
83
69
  };
84
70
  //# sourceMappingURL=transform.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"transform.mjs","sources":["../../../src/core-api/controller/transform.ts"],"sourcesContent":["import { isNil, isPlainObject } from 'lodash/fp';\nimport { parseMultipartData } from '@strapi/utils';\nimport type Koa from 'koa';\nimport type { Common, Schema, UID } from '@strapi/types';\n\ntype TransformedEntry = {\n id: string;\n attributes: Record<string, unknown>;\n meta?: Record<string, unknown>;\n};\n\ntype TransformedComponent = {\n id: string;\n [key: string]: unknown;\n};\n\ntype Entry = {\n id: string;\n [key: string]: Entry | Entry[] | string | number | null | boolean | Date;\n};\n\nfunction isEntry(property: unknown): property is Entry | Entry[] {\n return property === null || isPlainObject(property) || Array.isArray(property);\n}\n\nfunction isDZEntries(property: unknown): property is (Entry & { __component: UID.Component })[] {\n return Array.isArray(property);\n}\n\nconst parseBody = (ctx: Koa.Context) => {\n if (ctx.is('multipart')) {\n return parseMultipartData(ctx);\n }\n\n const { data } = ctx.request.body || {};\n\n return { data };\n};\n\nconst transformResponse = (\n resource: any,\n meta: unknown = {},\n opts: { contentType?: Schema.ContentType | Schema.Component } = {}\n) => {\n if (isNil(resource)) {\n return resource;\n }\n\n return {\n data: transformEntry(resource, opts?.contentType),\n meta,\n };\n};\n\nfunction transformComponent<T extends Entry | Entry[] | null>(\n data: T,\n component: Schema.Component\n): T extends Entry[] ? TransformedComponent[] : T extends Entry ? TransformedComponent : null;\nfunction transformComponent(\n data: Entry | Entry[] | null,\n component: Schema.Component\n): TransformedComponent | TransformedComponent[] | null {\n if (Array.isArray(data)) {\n return data.map((datum) => transformComponent(datum, component));\n }\n\n const res = transformEntry(data, component);\n\n if (isNil(res)) {\n return res;\n }\n\n const { id, attributes } = res;\n return { id, ...attributes };\n}\n\nfunction transformEntry<T extends Entry | Entry[] | null>(\n entry: T,\n type?: Schema.ContentType | Schema.Component\n): T extends Entry[] ? TransformedEntry[] : T extends Entry ? TransformedEntry : null;\nfunction transformEntry(\n entry: Entry | Entry[] | null,\n type?: Schema.ContentType | Schema.Component\n): TransformedEntry | TransformedEntry[] | null {\n if (isNil(entry)) {\n return entry;\n }\n\n if (Array.isArray(entry)) {\n return entry.map((singleEntry) => transformEntry(singleEntry, type));\n }\n\n if (!isPlainObject(entry)) {\n throw new Error('Entry must be an object');\n }\n\n const { id, ...properties } = entry;\n\n const attributeValues: Record<string, unknown> = {};\n\n for (const key of Object.keys(properties)) {\n const property = properties[key];\n const attribute = type && type.attributes[key];\n\n if (attribute && attribute.type === 'relation' && isEntry(property) && 'target' in attribute) {\n const data = transformEntry(\n property,\n strapi.contentType(attribute.target as Common.UID.ContentType)\n );\n\n attributeValues[key] = { data };\n } else if (attribute && attribute.type === 'component' && isEntry(property)) {\n attributeValues[key] = transformComponent(property, strapi.components[attribute.component]);\n } else if (attribute && attribute.type === 'dynamiczone' && isDZEntries(property)) {\n if (isNil(property)) {\n attributeValues[key] = property;\n }\n\n attributeValues[key] = property.map((subProperty) => {\n return transformComponent(subProperty, strapi.components[subProperty.__component]);\n });\n } else if (attribute && attribute.type === 'media' && isEntry(property)) {\n const data = transformEntry(property, strapi.contentType('plugin::upload.file'));\n\n attributeValues[key] = { data };\n } else {\n attributeValues[key] = property;\n }\n }\n\n return {\n id,\n attributes: attributeValues,\n // NOTE: not necessary for now\n // meta: {},\n };\n}\n\nexport { parseBody, transformResponse };\n"],"names":[],"mappings":";;AAqBA,SAAS,QAAQ,UAAgD;AAC/D,SAAO,aAAa,QAAQ,cAAc,QAAQ,KAAK,MAAM,QAAQ,QAAQ;AAC/E;AAEA,SAAS,YAAY,UAA2E;AACvF,SAAA,MAAM,QAAQ,QAAQ;AAC/B;AAEM,MAAA,YAAY,CAAC,QAAqB;AAClC,MAAA,IAAI,GAAG,WAAW,GAAG;AACvB,WAAO,mBAAmB,GAAG;AAAA,EAC/B;AAEA,QAAM,EAAE,KAAK,IAAI,IAAI,QAAQ,QAAQ,CAAA;AAErC,SAAO,EAAE,KAAK;AAChB;AAEM,MAAA,oBAAoB,CACxB,UACA,OAAgB,CAAA,GAChB,OAAgE,CAAA,MAC7D;AACC,MAAA,MAAM,QAAQ,GAAG;AACZ,WAAA;AAAA,EACT;AAEO,SAAA;AAAA,IACL,MAAM,eAAe,UAAU,MAAM,WAAW;AAAA,IAChD;AAAA,EAAA;AAEJ;AAMA,SAAS,mBACP,MACA,WACsD;AAClD,MAAA,MAAM,QAAQ,IAAI,GAAG;AACvB,WAAO,KAAK,IAAI,CAAC,UAAU,mBAAmB,OAAO,SAAS,CAAC;AAAA,EACjE;AAEM,QAAA,MAAM,eAAe,MAAM,SAAS;AAEtC,MAAA,MAAM,GAAG,GAAG;AACP,WAAA;AAAA,EACT;AAEM,QAAA,EAAE,IAAI,WAAe,IAAA;AACpB,SAAA,EAAE,IAAI,GAAG;AAClB;AAMA,SAAS,eACP,OACA,MAC8C;AAC1C,MAAA,MAAM,KAAK,GAAG;AACT,WAAA;AAAA,EACT;AAEI,MAAA,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,gBAAgB,eAAe,aAAa,IAAI,CAAC;AAAA,EACrE;AAEI,MAAA,CAAC,cAAc,KAAK,GAAG;AACnB,UAAA,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,QAAM,EAAE,IAAI,GAAG,WAAA,IAAe;AAE9B,QAAM,kBAA2C,CAAA;AAEjD,aAAW,OAAO,OAAO,KAAK,UAAU,GAAG;AACnC,UAAA,WAAW,WAAW,GAAG;AAC/B,UAAM,YAAY,QAAQ,KAAK,WAAW,GAAG;AAEzC,QAAA,aAAa,UAAU,SAAS,cAAc,QAAQ,QAAQ,KAAK,YAAY,WAAW;AAC5F,YAAM,OAAO;AAAA,QACX;AAAA,QACA,OAAO,YAAY,UAAU,MAAgC;AAAA,MAAA;AAG/C,sBAAA,GAAG,IAAI,EAAE;IAAK,WACrB,aAAa,UAAU,SAAS,eAAe,QAAQ,QAAQ,GAAG;AAC3D,sBAAA,GAAG,IAAI,mBAAmB,UAAU,OAAO,WAAW,UAAU,SAAS,CAAC;AAAA,IAAA,WACjF,aAAa,UAAU,SAAS,iBAAiB,YAAY,QAAQ,GAAG;AAC7E,UAAA,MAAM,QAAQ,GAAG;AACnB,wBAAgB,GAAG,IAAI;AAAA,MACzB;AAEA,sBAAgB,GAAG,IAAI,SAAS,IAAI,CAAC,gBAAgB;AACnD,eAAO,mBAAmB,aAAa,OAAO,WAAW,YAAY,WAAW,CAAC;AAAA,MAAA,CAClF;AAAA,IAAA,WACQ,aAAa,UAAU,SAAS,WAAW,QAAQ,QAAQ,GAAG;AACvE,YAAM,OAAO,eAAe,UAAU,OAAO,YAAY,qBAAqB,CAAC;AAE/D,sBAAA,GAAG,IAAI,EAAE;IAAK,OACzB;AACL,sBAAgB,GAAG,IAAI;AAAA,IACzB;AAAA,EACF;AAEO,SAAA;AAAA,IACL;AAAA,IACA,YAAY;AAAA;AAAA;AAAA,EAAA;AAIhB;"}
1
+ {"version":3,"file":"transform.mjs","sources":["../../../src/core-api/controller/transform.ts"],"sourcesContent":["import { isNil, isPlainObject } from 'lodash/fp';\nimport type { Common, Schema, UID } from '@strapi/types';\n\ntype TransformedEntry = {\n id: string;\n meta?: Record<string, unknown>;\n} & Record<string, unknown>;\n\ntype TransformedComponent = {\n id: string;\n [key: string]: unknown;\n};\n\ntype Entry = {\n id: string;\n [key: string]: Entry | Entry[] | string | number | null | boolean | Date;\n};\n\nfunction isEntry(property: unknown): property is Entry | Entry[] {\n return property === null || isPlainObject(property) || Array.isArray(property);\n}\n\nfunction isDZEntries(property: unknown): property is (Entry & { __component: UID.Component })[] {\n return Array.isArray(property);\n}\n\nconst transformResponse = (\n resource: any,\n meta: unknown = {},\n opts: { contentType?: Schema.ContentType | Schema.Component } = {}\n) => {\n if (isNil(resource)) {\n return resource;\n }\n\n return {\n data: transformEntry(resource, opts?.contentType),\n meta,\n };\n};\n\nfunction transformComponent<T extends Entry | Entry[] | null>(\n data: T,\n component: Schema.Component\n): T extends Entry[] ? TransformedComponent[] : T extends Entry ? TransformedComponent : null;\nfunction transformComponent(\n data: Entry | Entry[] | null,\n component: Schema.Component\n): TransformedComponent | TransformedComponent[] | null {\n if (Array.isArray(data)) {\n return data.map((datum) => transformComponent(datum, component));\n }\n\n return transformEntry(data, component);\n}\n\nfunction transformEntry<T extends Entry | Entry[] | null>(\n entry: T,\n type?: Schema.ContentType | Schema.Component\n): T extends Entry[] ? TransformedEntry[] : T extends Entry ? TransformedEntry : null;\nfunction transformEntry(\n entry: Entry | Entry[] | null,\n type?: Schema.ContentType | Schema.Component\n): TransformedEntry | TransformedEntry[] | null {\n if (isNil(entry)) {\n return entry;\n }\n\n if (Array.isArray(entry)) {\n return entry.map((singleEntry) => transformEntry(singleEntry, type));\n }\n\n if (!isPlainObject(entry)) {\n throw new Error('Entry must be an object');\n }\n\n const { id, ...properties } = entry;\n\n const attributeValues: Record<string, unknown> = {};\n\n for (const key of Object.keys(properties)) {\n const property = properties[key];\n const attribute = type && type.attributes[key];\n\n if (attribute && attribute.type === 'relation' && isEntry(property) && 'target' in attribute) {\n const data = transformEntry(\n property,\n strapi.contentType(attribute.target as Common.UID.ContentType)\n );\n\n attributeValues[key] = { data };\n } else if (attribute && attribute.type === 'component' && isEntry(property)) {\n attributeValues[key] = transformComponent(property, strapi.components[attribute.component]);\n } else if (attribute && attribute.type === 'dynamiczone' && isDZEntries(property)) {\n if (isNil(property)) {\n attributeValues[key] = property;\n }\n\n attributeValues[key] = property.map((subProperty) => {\n return transformComponent(subProperty, strapi.components[subProperty.__component]);\n });\n } else if (attribute && attribute.type === 'media' && isEntry(property)) {\n const data = transformEntry(property, strapi.contentType('plugin::upload.file'));\n\n attributeValues[key] = { data };\n } else {\n attributeValues[key] = property;\n }\n }\n\n return {\n id,\n ...attributeValues,\n // NOTE: not necessary for now\n // meta: {},\n };\n}\n\nexport { transformResponse };\n"],"names":[],"mappings":";AAkBA,SAAS,QAAQ,UAAgD;AAC/D,SAAO,aAAa,QAAQ,cAAc,QAAQ,KAAK,MAAM,QAAQ,QAAQ;AAC/E;AAEA,SAAS,YAAY,UAA2E;AACvF,SAAA,MAAM,QAAQ,QAAQ;AAC/B;AAEM,MAAA,oBAAoB,CACxB,UACA,OAAgB,CAAA,GAChB,OAAgE,CAAA,MAC7D;AACC,MAAA,MAAM,QAAQ,GAAG;AACZ,WAAA;AAAA,EACT;AAEO,SAAA;AAAA,IACL,MAAM,eAAe,UAAU,MAAM,WAAW;AAAA,IAChD;AAAA,EAAA;AAEJ;AAMA,SAAS,mBACP,MACA,WACsD;AAClD,MAAA,MAAM,QAAQ,IAAI,GAAG;AACvB,WAAO,KAAK,IAAI,CAAC,UAAU,mBAAmB,OAAO,SAAS,CAAC;AAAA,EACjE;AAEO,SAAA,eAAe,MAAM,SAAS;AACvC;AAMA,SAAS,eACP,OACA,MAC8C;AAC1C,MAAA,MAAM,KAAK,GAAG;AACT,WAAA;AAAA,EACT;AAEI,MAAA,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,gBAAgB,eAAe,aAAa,IAAI,CAAC;AAAA,EACrE;AAEI,MAAA,CAAC,cAAc,KAAK,GAAG;AACnB,UAAA,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,QAAM,EAAE,IAAI,GAAG,WAAA,IAAe;AAE9B,QAAM,kBAA2C,CAAA;AAEjD,aAAW,OAAO,OAAO,KAAK,UAAU,GAAG;AACnC,UAAA,WAAW,WAAW,GAAG;AAC/B,UAAM,YAAY,QAAQ,KAAK,WAAW,GAAG;AAEzC,QAAA,aAAa,UAAU,SAAS,cAAc,QAAQ,QAAQ,KAAK,YAAY,WAAW;AAC5F,YAAM,OAAO;AAAA,QACX;AAAA,QACA,OAAO,YAAY,UAAU,MAAgC;AAAA,MAAA;AAG/C,sBAAA,GAAG,IAAI,EAAE;IAAK,WACrB,aAAa,UAAU,SAAS,eAAe,QAAQ,QAAQ,GAAG;AAC3D,sBAAA,GAAG,IAAI,mBAAmB,UAAU,OAAO,WAAW,UAAU,SAAS,CAAC;AAAA,IAAA,WACjF,aAAa,UAAU,SAAS,iBAAiB,YAAY,QAAQ,GAAG;AAC7E,UAAA,MAAM,QAAQ,GAAG;AACnB,wBAAgB,GAAG,IAAI;AAAA,MACzB;AAEA,sBAAgB,GAAG,IAAI,SAAS,IAAI,CAAC,gBAAgB;AACnD,eAAO,mBAAmB,aAAa,OAAO,WAAW,YAAY,WAAW,CAAC;AAAA,MAAA,CAClF;AAAA,IAAA,WACQ,aAAa,UAAU,SAAS,WAAW,QAAQ,QAAQ,GAAG;AACvE,YAAM,OAAO,eAAe,UAAU,OAAO,YAAY,qBAAqB,CAAC;AAE/D,sBAAA,GAAG,IAAI,EAAE;IAAK,OACzB;AACL,sBAAgB,GAAG,IAAI;AAAA,IACzB;AAAA,EACF;AAEO,SAAA;AAAA,IACL;AAAA,IACA,GAAG;AAAA;AAAA;AAAA,EAAA;AAIP;"}
@@ -1,10 +1,33 @@
1
- import type { CoreApi, Schema } from '@strapi/types';
1
+ import type { CoreApi, Schema, Documents } from '@strapi/types';
2
+ import { CoreService } from './core-service';
3
+ export declare class CollectionTypeService extends CoreService implements CoreApi.Service.CollectionType {
4
+ private contentType;
5
+ constructor(contentType: Schema.CollectionType);
6
+ find(params?: {}): Promise<{
7
+ results: Documents.AnyDocument[];
8
+ pagination: {
9
+ page: number;
10
+ pageSize: number;
11
+ } | {
12
+ start: number;
13
+ limit: number;
14
+ };
15
+ }>;
16
+ findOne(documentId: Documents.ID, params?: {}): import("@strapi/types/dist/modules/documents/result/document-enigne").FindOne<import("@strapi/types/dist/types/core/common/uid").ContentType, any>;
17
+ create(params?: {
18
+ data: {};
19
+ }): Promise<Documents.AnyDocument>;
20
+ update(docId: Documents.ID, params?: {
21
+ data: {};
22
+ }): import("@strapi/types/dist/modules/documents/result/document-enigne").Update<import("@strapi/types/dist/types/core/common/uid").ContentType, any>;
23
+ delete(docId: Documents.ID, params?: {}): Promise<{
24
+ deletedEntries: number;
25
+ }>;
26
+ }
2
27
  /**
3
28
  *
4
29
  * Returns a collection type service to handle default core-api actions
5
30
  */
6
- declare const createCollectionTypeService: ({ contentType, }: {
7
- contentType: Schema.CollectionType;
8
- }) => CoreApi.Service.CollectionType;
9
- export default createCollectionTypeService;
31
+ declare const createCollectionTypeService: (contentType: Schema.CollectionType) => CoreApi.Service.CollectionType;
32
+ export { createCollectionTypeService };
10
33
  //# sourceMappingURL=collection-type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection-type.d.ts","sourceRoot":"","sources":["../../../src/core-api/service/collection-type.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAU,MAAM,eAAe,CAAC;AAkB7D;;;GAGG;AACH,QAAA,MAAM,2BAA2B;iBAGlB,OAAO,cAAc;MAChC,QAAQ,OAAO,CAAC,cAyDnB,CAAC;AAEF,eAAe,2BAA2B,CAAC"}
1
+ {"version":3,"file":"collection-type.d.ts","sourceRoot":"","sources":["../../../src/core-api/service/collection-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAIhE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAAa,qBAAsB,SAAQ,WAAY,YAAW,OAAO,CAAC,OAAO,CAAC,cAAc;IAC9F,OAAO,CAAC,WAAW,CAAwB;gBAE/B,WAAW,EAAE,MAAM,CAAC,cAAc;IAMxC,IAAI,CAAC,MAAM,KAAK;;;;;;;;;;IAiCtB,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,KAAK;IAQvC,MAAM,CAAC,MAAM;;KAAe;IAMlC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM;;KAAe;IAM3C,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,KAAK;;;CAK9C;AAED;;;GAGG;AAEH,QAAA,MAAM,2BAA2B,gBAClB,OAAO,cAAc,KACjC,QAAQ,OAAO,CAAC,cAElB,CAAC;AAEF,OAAO,EAAE,2BAA2B,EAAE,CAAC"}
@@ -1,58 +1,56 @@
1
1
  "use strict";
2
- const _ = require("lodash/fp");
3
- const strapiUtils = require("@strapi/utils");
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
3
  const pagination = require("./pagination.js");
5
- const getFetchParams = require("./get-fetch-params.js");
6
- const {
7
- constants: { PUBLISHED_AT_ATTRIBUTE }
8
- } = strapiUtils.contentTypes;
9
- const setPublishedAt = (data) => {
10
- data[PUBLISHED_AT_ATTRIBUTE] = _.propOr(/* @__PURE__ */ new Date(), PUBLISHED_AT_ATTRIBUTE, data);
11
- };
12
- const createCollectionTypeService = ({
13
- contentType
14
- }) => {
15
- const { uid } = contentType;
16
- return {
17
- getFetchParams: getFetchParams.getFetchParams,
18
- async find(params = {}) {
19
- const fetchParams = this.getFetchParams(params);
20
- const paginationInfo = pagination.getPaginationInfo(fetchParams);
21
- const results = await strapi.entityService?.findMany(uid, {
22
- ...fetchParams,
23
- ...pagination.convertPagedToStartLimit(paginationInfo)
24
- });
25
- if (pagination.shouldCount(fetchParams)) {
26
- const count = await strapi.entityService?.count(uid, { ...fetchParams, ...paginationInfo });
27
- if (typeof count !== "number") {
28
- throw new Error("Count should be a number");
29
- }
30
- return {
31
- results,
32
- pagination: pagination.transformPaginationResponse(paginationInfo, count)
33
- };
4
+ const coreService = require("./core-service.js");
5
+ class CollectionTypeService extends coreService.CoreService {
6
+ contentType;
7
+ constructor(contentType) {
8
+ super();
9
+ this.contentType = contentType;
10
+ }
11
+ async find(params = {}) {
12
+ const { uid } = this.contentType;
13
+ const fetchParams = this.getFetchParams(params);
14
+ const paginationInfo = pagination.getPaginationInfo(fetchParams);
15
+ const results = await strapi.documents(uid).findMany({
16
+ ...fetchParams,
17
+ ...paginationInfo
18
+ });
19
+ if (pagination.shouldCount(fetchParams)) {
20
+ const count = await strapi.documents(uid).count({ ...fetchParams, ...paginationInfo });
21
+ if (typeof count !== "number") {
22
+ throw new Error("Count should be a number");
34
23
  }
35
24
  return {
36
25
  results,
37
- pagination: paginationInfo
26
+ pagination: pagination.transformPaginationResponse(paginationInfo, count)
38
27
  };
39
- },
40
- findOne(entityId, params = {}) {
41
- return strapi.entityService?.findOne(uid, entityId, this.getFetchParams(params));
42
- },
43
- create(params = { data: {} }) {
44
- const { data } = params;
45
- setPublishedAt(data);
46
- return strapi.entityService?.create(uid, { ...params, data });
47
- },
48
- update(entityId, params = { data: {} }) {
49
- const { data } = params;
50
- return strapi.entityService?.update(uid, entityId, { ...params, data });
51
- },
52
- delete(entityId, params = {}) {
53
- return strapi.entityService?.delete(uid, entityId, params);
54
28
  }
55
- };
29
+ return {
30
+ results,
31
+ pagination: paginationInfo
32
+ };
33
+ }
34
+ findOne(documentId, params = {}) {
35
+ const { uid } = this.contentType;
36
+ return strapi.documents(uid).findOne(documentId, this.getFetchParams(params));
37
+ }
38
+ async create(params = { data: {} }) {
39
+ const { uid } = this.contentType;
40
+ return strapi.documents(uid).create(this.getFetchParams(params));
41
+ }
42
+ update(docId, params = { data: {} }) {
43
+ const { uid } = this.contentType;
44
+ return strapi.documents(uid).update(docId, this.getFetchParams(params));
45
+ }
46
+ async delete(docId, params = {}) {
47
+ const { uid } = this.contentType;
48
+ return strapi.documents(uid).delete(docId, this.getFetchParams(params));
49
+ }
50
+ }
51
+ const createCollectionTypeService = (contentType) => {
52
+ return new CollectionTypeService(contentType);
56
53
  };
57
- module.exports = createCollectionTypeService;
54
+ exports.CollectionTypeService = CollectionTypeService;
55
+ exports.createCollectionTypeService = createCollectionTypeService;
58
56
  //# sourceMappingURL=collection-type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection-type.js","sources":["../../../src/core-api/service/collection-type.ts"],"sourcesContent":["import { propOr } from 'lodash/fp';\nimport { contentTypes } from '@strapi/utils';\nimport type { CoreApi, Schema, Entity } from '@strapi/types';\n\nimport {\n getPaginationInfo,\n convertPagedToStartLimit,\n shouldCount,\n transformPaginationResponse,\n} from './pagination';\nimport { getFetchParams } from './get-fetch-params';\n\nconst {\n constants: { PUBLISHED_AT_ATTRIBUTE },\n} = contentTypes;\n\nconst setPublishedAt = (data: Record<string, unknown>) => {\n data[PUBLISHED_AT_ATTRIBUTE] = propOr(new Date(), PUBLISHED_AT_ATTRIBUTE, data);\n};\n\n/**\n *\n * Returns a collection type service to handle default core-api actions\n */\nconst createCollectionTypeService = ({\n contentType,\n}: {\n contentType: Schema.CollectionType;\n}): CoreApi.Service.CollectionType => {\n const { uid } = contentType;\n\n return <any>{\n getFetchParams,\n\n async find(params = {}) {\n const fetchParams = this.getFetchParams(params);\n\n const paginationInfo = getPaginationInfo(fetchParams);\n\n const results = await strapi.entityService?.findMany(uid, {\n ...fetchParams,\n ...convertPagedToStartLimit(paginationInfo),\n });\n\n if (shouldCount(fetchParams)) {\n const count = await strapi.entityService?.count(uid, { ...fetchParams, ...paginationInfo });\n\n if (typeof count !== 'number') {\n throw new Error('Count should be a number');\n }\n\n return {\n results,\n pagination: transformPaginationResponse(paginationInfo, count),\n };\n }\n\n return {\n results,\n pagination: paginationInfo,\n };\n },\n\n findOne(entityId: Entity.ID, params = {}) {\n return strapi.entityService?.findOne(uid, entityId, this.getFetchParams(params));\n },\n\n create(params = { data: {} }) {\n const { data } = params;\n\n setPublishedAt(data);\n\n return strapi.entityService?.create(uid, { ...params, data });\n },\n\n update(entityId: Entity.ID, params = { data: {} }) {\n const { data } = params;\n\n return strapi.entityService?.update(uid, entityId, { ...params, data });\n },\n\n delete(entityId: Entity.ID, params = {}) {\n return strapi.entityService?.delete(uid, entityId, params);\n },\n };\n};\n\nexport default createCollectionTypeService;\n"],"names":["contentTypes","propOr","getFetchParams","getPaginationInfo","convertPagedToStartLimit","shouldCount","transformPaginationResponse"],"mappings":";;;;;AAYA,MAAM;AAAA,EACJ,WAAW,EAAE,uBAAuB;AACtC,IAAIA;AAEJ,MAAM,iBAAiB,CAAC,SAAkC;AACxD,OAAK,sBAAsB,IAAIC,EAAA,2BAAW,QAAQ,wBAAwB,IAAI;AAChF;AAMA,MAAM,8BAA8B,CAAC;AAAA,EACnC;AACF,MAEsC;AAC9B,QAAA,EAAE,IAAQ,IAAA;AAEJ,SAAA;AAAA,IAAA,gBACVC,eAAA;AAAA,IAEA,MAAM,KAAK,SAAS,IAAI;AAChB,YAAA,cAAc,KAAK,eAAe,MAAM;AAExC,YAAA,iBAAiBC,6BAAkB,WAAW;AAEpD,YAAM,UAAU,MAAM,OAAO,eAAe,SAAS,KAAK;AAAA,QACxD,GAAG;AAAA,QACH,GAAGC,WAAAA,yBAAyB,cAAc;AAAA,MAAA,CAC3C;AAEG,UAAAC,WAAAA,YAAY,WAAW,GAAG;AACtB,cAAA,QAAQ,MAAM,OAAO,eAAe,MAAM,KAAK,EAAE,GAAG,aAAa,GAAG,eAAA,CAAgB;AAEtF,YAAA,OAAO,UAAU,UAAU;AACvB,gBAAA,IAAI,MAAM,0BAA0B;AAAA,QAC5C;AAEO,eAAA;AAAA,UACL;AAAA,UACA,YAAYC,WAAAA,4BAA4B,gBAAgB,KAAK;AAAA,QAAA;AAAA,MAEjE;AAEO,aAAA;AAAA,QACL;AAAA,QACA,YAAY;AAAA,MAAA;AAAA,IAEhB;AAAA,IAEA,QAAQ,UAAqB,SAAS,IAAI;AACjC,aAAA,OAAO,eAAe,QAAQ,KAAK,UAAU,KAAK,eAAe,MAAM,CAAC;AAAA,IACjF;AAAA,IAEA,OAAO,SAAS,EAAE,MAAM,MAAM;AACtB,YAAA,EAAE,KAAS,IAAA;AAEjB,qBAAe,IAAI;AAEZ,aAAA,OAAO,eAAe,OAAO,KAAK,EAAE,GAAG,QAAQ,MAAM;AAAA,IAC9D;AAAA,IAEA,OAAO,UAAqB,SAAS,EAAE,MAAM,MAAM;AAC3C,YAAA,EAAE,KAAS,IAAA;AAEV,aAAA,OAAO,eAAe,OAAO,KAAK,UAAU,EAAE,GAAG,QAAQ,KAAA,CAAM;AAAA,IACxE;AAAA,IAEA,OAAO,UAAqB,SAAS,IAAI;AACvC,aAAO,OAAO,eAAe,OAAO,KAAK,UAAU,MAAM;AAAA,IAC3D;AAAA,EAAA;AAEJ;;"}
1
+ {"version":3,"file":"collection-type.js","sources":["../../../src/core-api/service/collection-type.ts"],"sourcesContent":["import type { CoreApi, Schema, Documents } from '@strapi/types';\n\nimport { getPaginationInfo, shouldCount, transformPaginationResponse } from './pagination';\n\nimport { CoreService } from './core-service';\n\nexport class CollectionTypeService extends CoreService implements CoreApi.Service.CollectionType {\n private contentType: Schema.CollectionType;\n\n constructor(contentType: Schema.CollectionType) {\n super();\n\n this.contentType = contentType;\n }\n\n async find(params = {}) {\n const { uid } = this.contentType;\n\n const fetchParams = this.getFetchParams(params);\n\n const paginationInfo = getPaginationInfo(fetchParams);\n\n const results = await strapi.documents<Schema.CollectionType>(uid).findMany({\n ...fetchParams,\n ...paginationInfo,\n });\n\n if (shouldCount(fetchParams)) {\n const count = await strapi\n .documents<Schema.CollectionType>(uid)\n .count({ ...fetchParams, ...paginationInfo });\n\n if (typeof count !== 'number') {\n throw new Error('Count should be a number');\n }\n\n return {\n results,\n pagination: transformPaginationResponse(paginationInfo, count),\n };\n }\n\n return {\n results,\n pagination: paginationInfo,\n };\n }\n\n findOne(documentId: Documents.ID, params = {}) {\n const { uid } = this.contentType;\n\n return strapi\n .documents<Schema.CollectionType>(uid)\n .findOne(documentId, this.getFetchParams(params));\n }\n\n async create(params = { data: {} }) {\n const { uid } = this.contentType;\n\n return strapi.documents<Schema.CollectionType>(uid).create(this.getFetchParams(params));\n }\n\n update(docId: Documents.ID, params = { data: {} }) {\n const { uid } = this.contentType;\n\n return strapi.documents<Schema.CollectionType>(uid).update(docId, this.getFetchParams(params));\n }\n\n async delete(docId: Documents.ID, params = {}) {\n const { uid } = this.contentType;\n\n return strapi.documents<Schema.CollectionType>(uid).delete(docId, this.getFetchParams(params));\n }\n}\n\n/**\n *\n * Returns a collection type service to handle default core-api actions\n */\n\nconst createCollectionTypeService = (\n contentType: Schema.CollectionType\n): CoreApi.Service.CollectionType => {\n return new CollectionTypeService(contentType);\n};\n\nexport { createCollectionTypeService };\n"],"names":["CoreService","getPaginationInfo","shouldCount","transformPaginationResponse"],"mappings":";;;;AAMO,MAAM,8BAA8BA,YAAAA,YAAsD;AAAA,EACvF;AAAA,EAER,YAAY,aAAoC;AACxC;AAEN,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,MAAM,KAAK,SAAS,IAAI;AAChB,UAAA,EAAE,IAAI,IAAI,KAAK;AAEf,UAAA,cAAc,KAAK,eAAe,MAAM;AAExC,UAAA,iBAAiBC,6BAAkB,WAAW;AAEpD,UAAM,UAAU,MAAM,OAAO,UAAiC,GAAG,EAAE,SAAS;AAAA,MAC1E,GAAG;AAAA,MACH,GAAG;AAAA,IAAA,CACJ;AAEG,QAAAC,WAAAA,YAAY,WAAW,GAAG;AAC5B,YAAM,QAAQ,MAAM,OACjB,UAAiC,GAAG,EACpC,MAAM,EAAE,GAAG,aAAa,GAAG,eAAgB,CAAA;AAE1C,UAAA,OAAO,UAAU,UAAU;AACvB,cAAA,IAAI,MAAM,0BAA0B;AAAA,MAC5C;AAEO,aAAA;AAAA,QACL;AAAA,QACA,YAAYC,WAAAA,4BAA4B,gBAAgB,KAAK;AAAA,MAAA;AAAA,IAEjE;AAEO,WAAA;AAAA,MACL;AAAA,MACA,YAAY;AAAA,IAAA;AAAA,EAEhB;AAAA,EAEA,QAAQ,YAA0B,SAAS,IAAI;AACvC,UAAA,EAAE,IAAI,IAAI,KAAK;AAEd,WAAA,OACJ,UAAiC,GAAG,EACpC,QAAQ,YAAY,KAAK,eAAe,MAAM,CAAC;AAAA,EACpD;AAAA,EAEA,MAAM,OAAO,SAAS,EAAE,MAAM,MAAM;AAC5B,UAAA,EAAE,IAAI,IAAI,KAAK;AAEd,WAAA,OAAO,UAAiC,GAAG,EAAE,OAAO,KAAK,eAAe,MAAM,CAAC;AAAA,EACxF;AAAA,EAEA,OAAO,OAAqB,SAAS,EAAE,MAAM,MAAM;AAC3C,UAAA,EAAE,IAAI,IAAI,KAAK;AAEd,WAAA,OAAO,UAAiC,GAAG,EAAE,OAAO,OAAO,KAAK,eAAe,MAAM,CAAC;AAAA,EAC/F;AAAA,EAEA,MAAM,OAAO,OAAqB,SAAS,IAAI;AACvC,UAAA,EAAE,IAAI,IAAI,KAAK;AAEd,WAAA,OAAO,UAAiC,GAAG,EAAE,OAAO,OAAO,KAAK,eAAe,MAAM,CAAC;AAAA,EAC/F;AACF;AAOM,MAAA,8BAA8B,CAClC,gBACmC;AAC5B,SAAA,IAAI,sBAAsB,WAAW;AAC9C;;;"}