@strapi/core 0.0.0-experimental.aa680be2574ebd6a8ca7675ce7ba57512d0df8cf → 0.0.0-experimental.aa7a2469494b789539dfb9508d5dce9526d83b7d

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 (192) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/Strapi.js +4 -1
  3. package/dist/Strapi.js.map +1 -1
  4. package/dist/Strapi.mjs +4 -1
  5. package/dist/Strapi.mjs.map +1 -1
  6. package/dist/configuration/index.d.ts +4 -0
  7. package/dist/configuration/index.d.ts.map +1 -1
  8. package/dist/configuration/index.js +4 -0
  9. package/dist/configuration/index.js.map +1 -1
  10. package/dist/configuration/index.mjs +4 -0
  11. package/dist/configuration/index.mjs.map +1 -1
  12. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  13. package/dist/core-api/controller/collection-type.js +1 -1
  14. package/dist/core-api/controller/collection-type.js.map +1 -1
  15. package/dist/core-api/controller/collection-type.mjs +1 -1
  16. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  17. package/dist/core-api/controller/index.d.ts.map +1 -1
  18. package/dist/core-api/controller/index.js +2 -1
  19. package/dist/core-api/controller/index.js.map +1 -1
  20. package/dist/core-api/controller/index.mjs +2 -1
  21. package/dist/core-api/controller/index.mjs.map +1 -1
  22. package/dist/core-api/controller/single-type.js +1 -1
  23. package/dist/core-api/controller/single-type.js.map +1 -1
  24. package/dist/core-api/controller/single-type.mjs +1 -1
  25. package/dist/core-api/controller/single-type.mjs.map +1 -1
  26. package/dist/core-api/controller/transform.d.ts +3 -2
  27. package/dist/core-api/controller/transform.d.ts.map +1 -1
  28. package/dist/core-api/controller/transform.js +9 -3
  29. package/dist/core-api/controller/transform.js.map +1 -1
  30. package/dist/core-api/controller/transform.mjs +9 -3
  31. package/dist/core-api/controller/transform.mjs.map +1 -1
  32. package/dist/core-api/routes/index.d.ts +4 -22
  33. package/dist/core-api/routes/index.d.ts.map +1 -1
  34. package/dist/core-api/routes/index.js +150 -8
  35. package/dist/core-api/routes/index.js.map +1 -1
  36. package/dist/core-api/routes/index.mjs +131 -8
  37. package/dist/core-api/routes/index.mjs.map +1 -1
  38. package/dist/core-api/routes/validation/attributes.d.ts +244 -0
  39. package/dist/core-api/routes/validation/attributes.d.ts.map +1 -0
  40. package/dist/core-api/routes/validation/attributes.js +560 -0
  41. package/dist/core-api/routes/validation/attributes.js.map +1 -0
  42. package/dist/core-api/routes/validation/attributes.mjs +521 -0
  43. package/dist/core-api/routes/validation/attributes.mjs.map +1 -0
  44. package/dist/core-api/routes/validation/common.d.ts +105 -0
  45. package/dist/core-api/routes/validation/common.d.ts.map +1 -0
  46. package/dist/core-api/routes/validation/common.js +116 -0
  47. package/dist/core-api/routes/validation/common.js.map +1 -0
  48. package/dist/core-api/routes/validation/common.mjs +95 -0
  49. package/dist/core-api/routes/validation/common.mjs.map +1 -0
  50. package/dist/core-api/routes/validation/component.d.ts +34 -0
  51. package/dist/core-api/routes/validation/component.d.ts.map +1 -0
  52. package/dist/core-api/routes/validation/component.js +45 -0
  53. package/dist/core-api/routes/validation/component.js.map +1 -0
  54. package/dist/core-api/routes/validation/component.mjs +43 -0
  55. package/dist/core-api/routes/validation/component.mjs.map +1 -0
  56. package/dist/core-api/routes/validation/constants.d.ts +8 -0
  57. package/dist/core-api/routes/validation/constants.d.ts.map +1 -0
  58. package/dist/core-api/routes/validation/constants.js +18 -0
  59. package/dist/core-api/routes/validation/constants.js.map +1 -0
  60. package/dist/core-api/routes/validation/constants.mjs +16 -0
  61. package/dist/core-api/routes/validation/constants.mjs.map +1 -0
  62. package/dist/core-api/routes/validation/content-type.d.ts +128 -0
  63. package/dist/core-api/routes/validation/content-type.d.ts.map +1 -0
  64. package/dist/core-api/routes/validation/content-type.js +201 -0
  65. package/dist/core-api/routes/validation/content-type.js.map +1 -0
  66. package/dist/core-api/routes/validation/content-type.mjs +180 -0
  67. package/dist/core-api/routes/validation/content-type.mjs.map +1 -0
  68. package/dist/core-api/routes/validation/index.d.ts +5 -0
  69. package/dist/core-api/routes/validation/index.d.ts.map +1 -0
  70. package/dist/core-api/routes/validation/mappers.d.ts +105 -0
  71. package/dist/core-api/routes/validation/mappers.d.ts.map +1 -0
  72. package/dist/core-api/routes/validation/mappers.js +238 -0
  73. package/dist/core-api/routes/validation/mappers.js.map +1 -0
  74. package/dist/core-api/routes/validation/mappers.mjs +214 -0
  75. package/dist/core-api/routes/validation/mappers.mjs.map +1 -0
  76. package/dist/core-api/routes/validation/utils.d.ts +47 -0
  77. package/dist/core-api/routes/validation/utils.d.ts.map +1 -0
  78. package/dist/core-api/routes/validation/utils.js +112 -0
  79. package/dist/core-api/routes/validation/utils.js.map +1 -0
  80. package/dist/core-api/routes/validation/utils.mjs +90 -0
  81. package/dist/core-api/routes/validation/utils.mjs.map +1 -0
  82. package/dist/domain/module/index.d.ts.map +1 -1
  83. package/dist/domain/module/index.js +3 -0
  84. package/dist/domain/module/index.js.map +1 -1
  85. package/dist/domain/module/index.mjs +3 -0
  86. package/dist/domain/module/index.mjs.map +1 -1
  87. package/dist/ee/index.d.ts +6 -0
  88. package/dist/ee/index.d.ts.map +1 -1
  89. package/dist/ee/index.js +29 -3
  90. package/dist/ee/index.js.map +1 -1
  91. package/dist/ee/index.mjs +30 -4
  92. package/dist/ee/index.mjs.map +1 -1
  93. package/dist/ee/license.d.ts +3 -1
  94. package/dist/ee/license.d.ts.map +1 -1
  95. package/dist/ee/license.js +8 -2
  96. package/dist/ee/license.js.map +1 -1
  97. package/dist/ee/license.mjs +9 -4
  98. package/dist/ee/license.mjs.map +1 -1
  99. package/dist/factories.d.ts +3 -1
  100. package/dist/factories.d.ts.map +1 -1
  101. package/dist/factories.js +10 -2
  102. package/dist/factories.js.map +1 -1
  103. package/dist/factories.mjs +10 -3
  104. package/dist/factories.mjs.map +1 -1
  105. package/dist/index.js +1 -1
  106. package/dist/index.mjs +1 -1
  107. package/dist/middlewares/cors.d.ts +9 -1
  108. package/dist/middlewares/cors.d.ts.map +1 -1
  109. package/dist/middlewares/cors.js +39 -17
  110. package/dist/middlewares/cors.js.map +1 -1
  111. package/dist/middlewares/cors.mjs +39 -18
  112. package/dist/middlewares/cors.mjs.map +1 -1
  113. package/dist/package.json.js +17 -13
  114. package/dist/package.json.js.map +1 -1
  115. package/dist/package.json.mjs +17 -13
  116. package/dist/package.json.mjs.map +1 -1
  117. package/dist/services/content-source-maps.d.ts +8 -0
  118. package/dist/services/content-source-maps.d.ts.map +1 -0
  119. package/dist/services/content-source-maps.js +119 -0
  120. package/dist/services/content-source-maps.js.map +1 -0
  121. package/dist/services/content-source-maps.mjs +117 -0
  122. package/dist/services/content-source-maps.mjs.map +1 -0
  123. package/dist/services/core-store.d.ts +2 -2
  124. package/dist/services/core-store.d.ts.map +1 -1
  125. package/dist/services/core-store.js.map +1 -1
  126. package/dist/services/core-store.mjs.map +1 -1
  127. package/dist/services/document-service/entries.d.ts.map +1 -1
  128. package/dist/services/document-service/entries.js +42 -0
  129. package/dist/services/document-service/entries.js.map +1 -1
  130. package/dist/services/document-service/entries.mjs +43 -1
  131. package/dist/services/document-service/entries.mjs.map +1 -1
  132. package/dist/services/document-service/internationalization.d.ts +6 -1
  133. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  134. package/dist/services/document-service/internationalization.js +32 -0
  135. package/dist/services/document-service/internationalization.js.map +1 -1
  136. package/dist/services/document-service/internationalization.mjs +32 -1
  137. package/dist/services/document-service/internationalization.mjs.map +1 -1
  138. package/dist/services/document-service/repository.d.ts.map +1 -1
  139. package/dist/services/document-service/repository.js +5 -4
  140. package/dist/services/document-service/repository.js.map +1 -1
  141. package/dist/services/document-service/repository.mjs +6 -5
  142. package/dist/services/document-service/repository.mjs.map +1 -1
  143. package/dist/services/entity-validator/index.d.ts.map +1 -1
  144. package/dist/services/entity-validator/index.js +9 -0
  145. package/dist/services/entity-validator/index.js.map +1 -1
  146. package/dist/services/entity-validator/index.mjs +9 -0
  147. package/dist/services/entity-validator/index.mjs.map +1 -1
  148. package/dist/services/entity-validator/validators.d.ts +1 -0
  149. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  150. package/dist/services/entity-validator/validators.js +3 -0
  151. package/dist/services/entity-validator/validators.js.map +1 -1
  152. package/dist/services/entity-validator/validators.mjs +3 -0
  153. package/dist/services/entity-validator/validators.mjs.map +1 -1
  154. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  155. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  156. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  157. package/dist/services/metrics/index.d.ts +1 -1
  158. package/dist/services/metrics/index.d.ts.map +1 -1
  159. package/dist/services/metrics/index.js +9 -8
  160. package/dist/services/metrics/index.js.map +1 -1
  161. package/dist/services/metrics/index.mjs +9 -8
  162. package/dist/services/metrics/index.mjs.map +1 -1
  163. package/dist/services/metrics/sender.d.ts.map +1 -1
  164. package/dist/services/metrics/sender.js +5 -5
  165. package/dist/services/metrics/sender.js.map +1 -1
  166. package/dist/services/metrics/sender.mjs +6 -6
  167. package/dist/services/metrics/sender.mjs.map +1 -1
  168. package/dist/services/server/register-routes.js +22 -2
  169. package/dist/services/server/register-routes.js.map +1 -1
  170. package/dist/services/server/register-routes.mjs +22 -2
  171. package/dist/services/server/register-routes.mjs.map +1 -1
  172. package/dist/services/server/routing.d.ts +10 -0
  173. package/dist/services/server/routing.d.ts.map +1 -1
  174. package/dist/services/server/routing.js +7 -1
  175. package/dist/services/server/routing.js.map +1 -1
  176. package/dist/services/server/routing.mjs +7 -1
  177. package/dist/services/server/routing.mjs.map +1 -1
  178. package/dist/services/utils/conditional-fields.d.ts +3 -0
  179. package/dist/services/utils/conditional-fields.d.ts.map +1 -0
  180. package/dist/services/utils/conditional-fields.js +22 -0
  181. package/dist/services/utils/conditional-fields.js.map +1 -0
  182. package/dist/services/utils/conditional-fields.mjs +20 -0
  183. package/dist/services/utils/conditional-fields.mjs.map +1 -0
  184. package/dist/utils/fetch.d.ts +5 -1
  185. package/dist/utils/fetch.d.ts.map +1 -1
  186. package/dist/utils/fetch.js +8 -4
  187. package/dist/utils/fetch.js.map +1 -1
  188. package/dist/utils/fetch.mjs +8 -4
  189. package/dist/utils/fetch.mjs.map +1 -1
  190. package/dist/utils/transform-content-types-to-models.d.ts +197 -0
  191. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  192. package/package.json +17 -13
@@ -1 +1 @@
1
- {"version":3,"file":"collection-type.js","sources":["../../../src/core-api/controller/collection-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Core, Struct, Utils, UID } from '@strapi/types';\nimport type Koa from 'koa';\n\ninterface Options {\n contentType: Struct.CollectionTypeSchema;\n}\n\n/**\n *\n * Returns a collection type controller to handle default core-api actions\n */\nconst createCollectionTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<Core.CoreAPI.Controller.CollectionType> => {\n const uid = contentType.uid as UID.Service;\n\n // TODO: transform into a class\n return {\n /**\n * Retrieve records.\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { results, pagination } = await strapi.service(uid).find(sanitizedQuery);\n const sanitizedResults = await this.sanitizeOutput(results, ctx);\n return this.transformResponse(sanitizedResults, { pagination });\n },\n\n /**\n * Retrieve a record\n */\n async findOne(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).findOne(id, sanitizedQuery);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Create a record.\n */\n async create(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).create({\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n ctx.status = 201;\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Update a record.\n */\n async update(ctx: Koa.Context) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).update(id, {\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Destroy a record.\n */\n async delete(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n await strapi.service(uid).delete(id, sanitizedQuery);\n\n ctx.status = 204;\n },\n };\n};\n\nexport { createCollectionTypeController };\n"],"names":["createCollectionTypeController","contentType","uid","find","ctx","validateQuery","sanitizedQuery","sanitizeQuery","results","pagination","strapi","service","sanitizedResults","sanitizeOutput","transformResponse","findOne","id","params","entity","sanitizedEntity","create","body","request","isObject","data","errors","ValidationError","validateInput","sanitizedInputData","sanitizeInput","status","update","delete"],"mappings":"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"}
1
+ {"version":3,"file":"collection-type.js","sources":["../../../src/core-api/controller/collection-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Core, Struct, Utils, UID } from '@strapi/types';\nimport type Koa from 'koa';\n\ninterface Options {\n contentType: Struct.CollectionTypeSchema;\n}\n\n/**\n *\n * Returns a collection type controller to handle default core-api actions\n */\nconst createCollectionTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<Core.CoreAPI.Controller.CollectionType> => {\n const uid = contentType.uid as UID.Service;\n\n // TODO: transform into a class\n return {\n /**\n * Retrieve records.\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { results, pagination } = await strapi.service(uid).find(sanitizedQuery);\n const sanitizedResults = await this.sanitizeOutput(results, ctx);\n\n return this.transformResponse(sanitizedResults, { pagination });\n },\n\n /**\n * Retrieve a record\n */\n async findOne(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).findOne(id, sanitizedQuery);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity, {});\n },\n\n /**\n * Create a record.\n */\n async create(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).create({\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n ctx.status = 201;\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Update a record.\n */\n async update(ctx: Koa.Context) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).update(id, {\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Destroy a record.\n */\n async delete(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n await strapi.service(uid).delete(id, sanitizedQuery);\n\n ctx.status = 204;\n },\n };\n};\n\nexport { createCollectionTypeController };\n"],"names":["createCollectionTypeController","contentType","uid","find","ctx","validateQuery","sanitizedQuery","sanitizeQuery","results","pagination","strapi","service","sanitizedResults","sanitizeOutput","transformResponse","findOne","id","params","entity","sanitizedEntity","create","body","request","isObject","data","errors","ValidationError","validateInput","sanitizedInputData","sanitizeInput","status","update","delete"],"mappings":"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"}
@@ -27,7 +27,7 @@ import { errors } from '@strapi/utils';
27
27
  const sanitizedQuery = await this.sanitizeQuery(ctx);
28
28
  const entity = await strapi.service(uid).findOne(id, sanitizedQuery);
29
29
  const sanitizedEntity = await this.sanitizeOutput(entity, ctx);
30
- return this.transformResponse(sanitizedEntity);
30
+ return this.transformResponse(sanitizedEntity, {});
31
31
  },
32
32
  /**
33
33
  * Create a record.
@@ -1 +1 @@
1
- {"version":3,"file":"collection-type.mjs","sources":["../../../src/core-api/controller/collection-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Core, Struct, Utils, UID } from '@strapi/types';\nimport type Koa from 'koa';\n\ninterface Options {\n contentType: Struct.CollectionTypeSchema;\n}\n\n/**\n *\n * Returns a collection type controller to handle default core-api actions\n */\nconst createCollectionTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<Core.CoreAPI.Controller.CollectionType> => {\n const uid = contentType.uid as UID.Service;\n\n // TODO: transform into a class\n return {\n /**\n * Retrieve records.\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { results, pagination } = await strapi.service(uid).find(sanitizedQuery);\n const sanitizedResults = await this.sanitizeOutput(results, ctx);\n return this.transformResponse(sanitizedResults, { pagination });\n },\n\n /**\n * Retrieve a record\n */\n async findOne(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).findOne(id, sanitizedQuery);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Create a record.\n */\n async create(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).create({\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n ctx.status = 201;\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Update a record.\n */\n async update(ctx: Koa.Context) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).update(id, {\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Destroy a record.\n */\n async delete(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n await strapi.service(uid).delete(id, sanitizedQuery);\n\n ctx.status = 204;\n },\n };\n};\n\nexport { createCollectionTypeController };\n"],"names":["createCollectionTypeController","contentType","uid","find","ctx","validateQuery","sanitizedQuery","sanitizeQuery","results","pagination","strapi","service","sanitizedResults","sanitizeOutput","transformResponse","findOne","id","params","entity","sanitizedEntity","create","body","request","isObject","data","errors","ValidationError","validateInput","sanitizedInputData","sanitizeInput","status","update","delete"],"mappings":"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"}
1
+ {"version":3,"file":"collection-type.mjs","sources":["../../../src/core-api/controller/collection-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Core, Struct, Utils, UID } from '@strapi/types';\nimport type Koa from 'koa';\n\ninterface Options {\n contentType: Struct.CollectionTypeSchema;\n}\n\n/**\n *\n * Returns a collection type controller to handle default core-api actions\n */\nconst createCollectionTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<Core.CoreAPI.Controller.CollectionType> => {\n const uid = contentType.uid as UID.Service;\n\n // TODO: transform into a class\n return {\n /**\n * Retrieve records.\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { results, pagination } = await strapi.service(uid).find(sanitizedQuery);\n const sanitizedResults = await this.sanitizeOutput(results, ctx);\n\n return this.transformResponse(sanitizedResults, { pagination });\n },\n\n /**\n * Retrieve a record\n */\n async findOne(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).findOne(id, sanitizedQuery);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity, {});\n },\n\n /**\n * Create a record.\n */\n async create(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).create({\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n ctx.status = 201;\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Update a record.\n */\n async update(ctx: Koa.Context) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).update(id, {\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Destroy a record.\n */\n async delete(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n await strapi.service(uid).delete(id, sanitizedQuery);\n\n ctx.status = 204;\n },\n };\n};\n\nexport { createCollectionTypeController };\n"],"names":["createCollectionTypeController","contentType","uid","find","ctx","validateQuery","sanitizedQuery","sanitizeQuery","results","pagination","strapi","service","sanitizedResults","sanitizeOutput","transformResponse","findOne","id","params","entity","sanitizedEntity","create","body","request","isObject","data","errors","ValidationError","validateInput","sanitizedInputData","sanitizeInput","status","update","delete"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core-api/controller/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAalD,iBAAS,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,EAAE,IAAI,EAAE;IAC/F,WAAW,EAAE,CAAC,CAAC;CAChB,GAAG,CAAC,SAAS,MAAM,CAAC,gBAAgB,GACjC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,GAClC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;AA2D3C,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core-api/controller/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAalD,iBAAS,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,EAAE,IAAI,EAAE;IAC/F,WAAW,EAAE,CAAC,CAAC;CAChB,GAAG,CAAC,SAAS,MAAM,CAAC,gBAAgB,GACjC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,GAClC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;AA4D3C,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -16,7 +16,8 @@ function createController({ contentType }) {
16
16
  const ctx = requestContext.get();
17
17
  return transform.transformResponse(data, meta, {
18
18
  contentType,
19
- useJsonAPIFormat: ctx?.headers?.['strapi-response-format'] === 'v4'
19
+ useJsonAPIFormat: ctx?.headers?.['strapi-response-format'] === 'v4',
20
+ encodeSourceMaps: ctx?.query?.encodeSourceMaps === 'true'
20
21
  });
21
22
  },
22
23
  async sanitizeOutput (data, ctx) {
@@ -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 } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nimport { transformResponse } from './transform';\nimport { createSingleTypeController } from './single-type';\nimport { createCollectionTypeController } from './collection-type';\nimport requestCtx from '../../services/request-context';\n\nconst isSingleType = (\n contentType: Struct.ContentTypeSchema\n): contentType is Struct.SingleTypeSchema => contentTypeUtils.isSingleType(contentType);\n\nconst getAuthFromKoaContext = (ctx: Koa.Context) => prop('state.auth', ctx) ?? {};\n\nfunction createController<T extends Struct.SingleTypeSchema | Struct.CollectionTypeSchema>(opts: {\n contentType: T;\n}): T extends Struct.SingleTypeSchema\n ? Core.CoreAPI.Controller.SingleType\n : Core.CoreAPI.Controller.CollectionType;\nfunction createController({\n contentType,\n}: {\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema;\n}) {\n // TODO: replace with Base class + SingleType and CollectionType classes\n\n const proto: Core.CoreAPI.Controller.Base = {\n transformResponse(data, meta) {\n const ctx = requestCtx.get();\n return transformResponse(data, meta, {\n contentType,\n useJsonAPIFormat: ctx?.headers?.['strapi-response-format'] === 'v4',\n });\n },\n\n async sanitizeOutput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.output(data, contentType, { auth });\n },\n\n async sanitizeInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.input(data, contentType, { auth });\n },\n\n async sanitizeQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.query(ctx.query, contentType, { auth });\n },\n\n async validateQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.validate.query(ctx.query, contentType, { auth });\n },\n\n async validateInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.validate.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":["isSingleType","contentType","contentTypeUtils","getAuthFromKoaContext","ctx","prop","createController","proto","transformResponse","data","meta","requestCtx","get","useJsonAPIFormat","headers","sanitizeOutput","auth","strapi","contentAPI","sanitize","output","sanitizeInput","input","sanitizeQuery","query","validateQuery","validate","validateInput","ctrl","createSingleTypeController","createCollectionTypeController","Object","assign","create"],"mappings":";;;;;;;;;AAUA,MAAMA,YAAe,GAAA,CACnBC,WAC2CC,GAAAA,wBAAAA,CAAiBF,YAAY,CAACC,WAAAA,CAAAA;AAE3E,MAAME,wBAAwB,CAACC,GAAAA,GAAqBC,OAAK,CAAA,YAAA,EAAcD,QAAQ,EAAC;AAOhF,SAASE,gBAAAA,CAAiB,EACxBL,WAAW,EAGZ,EAAA;;AAGC,IAAA,MAAMM,KAAsC,GAAA;QAC1CC,iBAAkBC,CAAAA,CAAAA,IAAI,EAAEC,IAAI,EAAA;YAC1B,MAAMN,GAAAA,GAAMO,eAAWC,GAAG,EAAA;YAC1B,OAAOJ,2BAAAA,CAAkBC,MAAMC,IAAM,EAAA;AACnCT,gBAAAA,WAAAA;AACAY,gBAAAA,gBAAAA,EAAkBT,GAAKU,EAAAA,OAAAA,GAAU,wBAAA,CAAyB,KAAK;AACjE,aAAA,CAAA;AACF,SAAA;QAEA,MAAMC,cAAAA,CAAAA,CAAeN,IAAI,EAAEL,GAAG,EAAA;AAC5B,YAAA,MAAMY,OAAOb,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOa,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACC,MAAM,CAACX,MAAMR,WAAa,EAAA;AAAEe,gBAAAA;AAAK,aAAA,CAAA;AACrE,SAAA;QAEA,MAAMK,aAAAA,CAAAA,CAAcZ,IAAI,EAAEL,GAAG,EAAA;AAC3B,YAAA,MAAMY,OAAOb,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOa,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACG,KAAK,CAACb,MAAMR,WAAa,EAAA;AAAEe,gBAAAA;AAAK,aAAA,CAAA;AACpE,SAAA;AAEA,QAAA,MAAMO,eAAcnB,GAAG,EAAA;AACrB,YAAA,MAAMY,OAAOb,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOa,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACK,KAAK,CAACpB,GAAAA,CAAIoB,KAAK,EAAEvB,WAAa,EAAA;AAAEe,gBAAAA;AAAK,aAAA,CAAA;AACzE,SAAA;AAEA,QAAA,MAAMS,eAAcrB,GAAG,EAAA;AACrB,YAAA,MAAMY,OAAOb,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOa,MAAAA,CAAOC,UAAU,CAACQ,QAAQ,CAACF,KAAK,CAACpB,GAAAA,CAAIoB,KAAK,EAAEvB,WAAa,EAAA;AAAEe,gBAAAA;AAAK,aAAA,CAAA;AACzE,SAAA;QAEA,MAAMW,aAAAA,CAAAA,CAAclB,IAAI,EAAEL,GAAG,EAAA;AAC3B,YAAA,MAAMY,OAAOb,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOa,MAAAA,CAAOC,UAAU,CAACQ,QAAQ,CAACJ,KAAK,CAACb,MAAMR,WAAa,EAAA;AAAEe,gBAAAA;AAAK,aAAA,CAAA;AACpE;AACF,KAAA;IAEA,IAAIY,IAAAA;AAEJ,IAAA,IAAI5B,aAAaC,WAAc,CAAA,EAAA;AAC7B2B,QAAAA,IAAAA,GAAOC,qCAA2B,CAAA;AAAE5B,YAAAA;AAAY,SAAA,CAAA;KAC3C,MAAA;AACL2B,QAAAA,IAAAA,GAAOE,6CAA+B,CAAA;AAAE7B,YAAAA;AAAY,SAAA,CAAA;AACtD;AAEA,IAAA,OAAO8B,OAAOC,MAAM,CAACD,MAAOE,CAAAA,MAAM,CAAC1B,KAAQqB,CAAAA,EAAAA,IAAAA,CAAAA;AAC7C;;;;"}
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 } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nimport { transformResponse } from './transform';\nimport { createSingleTypeController } from './single-type';\nimport { createCollectionTypeController } from './collection-type';\nimport requestCtx from '../../services/request-context';\n\nconst isSingleType = (\n contentType: Struct.ContentTypeSchema\n): contentType is Struct.SingleTypeSchema => contentTypeUtils.isSingleType(contentType);\n\nconst getAuthFromKoaContext = (ctx: Koa.Context) => prop('state.auth', ctx) ?? {};\n\nfunction createController<T extends Struct.SingleTypeSchema | Struct.CollectionTypeSchema>(opts: {\n contentType: T;\n}): T extends Struct.SingleTypeSchema\n ? Core.CoreAPI.Controller.SingleType\n : Core.CoreAPI.Controller.CollectionType;\nfunction createController({\n contentType,\n}: {\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema;\n}) {\n // TODO: replace with Base class + SingleType and CollectionType classes\n\n const proto: Core.CoreAPI.Controller.Base = {\n transformResponse(data, meta) {\n const ctx = requestCtx.get();\n return transformResponse(data, meta, {\n contentType,\n useJsonAPIFormat: ctx?.headers?.['strapi-response-format'] === 'v4',\n encodeSourceMaps: ctx?.query?.encodeSourceMaps === 'true',\n });\n },\n\n async sanitizeOutput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.output(data, contentType, { auth });\n },\n\n async sanitizeInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.input(data, contentType, { auth });\n },\n\n async sanitizeQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.query(ctx.query, contentType, { auth });\n },\n\n async validateQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.validate.query(ctx.query, contentType, { auth });\n },\n\n async validateInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.validate.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":["isSingleType","contentType","contentTypeUtils","getAuthFromKoaContext","ctx","prop","createController","proto","transformResponse","data","meta","requestCtx","get","useJsonAPIFormat","headers","encodeSourceMaps","query","sanitizeOutput","auth","strapi","contentAPI","sanitize","output","sanitizeInput","input","sanitizeQuery","validateQuery","validate","validateInput","ctrl","createSingleTypeController","createCollectionTypeController","Object","assign","create"],"mappings":";;;;;;;;;AAUA,MAAMA,YAAe,GAAA,CACnBC,WAC2CC,GAAAA,wBAAAA,CAAiBF,YAAY,CAACC,WAAAA,CAAAA;AAE3E,MAAME,wBAAwB,CAACC,GAAAA,GAAqBC,OAAK,CAAA,YAAA,EAAcD,QAAQ,EAAC;AAOhF,SAASE,gBAAAA,CAAiB,EACxBL,WAAW,EAGZ,EAAA;;AAGC,IAAA,MAAMM,KAAsC,GAAA;QAC1CC,iBAAkBC,CAAAA,CAAAA,IAAI,EAAEC,IAAI,EAAA;YAC1B,MAAMN,GAAAA,GAAMO,eAAWC,GAAG,EAAA;YAC1B,OAAOJ,2BAAAA,CAAkBC,MAAMC,IAAM,EAAA;AACnCT,gBAAAA,WAAAA;AACAY,gBAAAA,gBAAAA,EAAkBT,GAAKU,EAAAA,OAAAA,GAAU,wBAAA,CAAyB,KAAK,IAAA;gBAC/DC,gBAAkBX,EAAAA,GAAAA,EAAKY,OAAOD,gBAAqB,KAAA;AACrD,aAAA,CAAA;AACF,SAAA;QAEA,MAAME,cAAAA,CAAAA,CAAeR,IAAI,EAAEL,GAAG,EAAA;AAC5B,YAAA,MAAMc,OAAOf,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOe,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACC,MAAM,CAACb,MAAMR,WAAa,EAAA;AAAEiB,gBAAAA;AAAK,aAAA,CAAA;AACrE,SAAA;QAEA,MAAMK,aAAAA,CAAAA,CAAcd,IAAI,EAAEL,GAAG,EAAA;AAC3B,YAAA,MAAMc,OAAOf,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOe,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACG,KAAK,CAACf,MAAMR,WAAa,EAAA;AAAEiB,gBAAAA;AAAK,aAAA,CAAA;AACpE,SAAA;AAEA,QAAA,MAAMO,eAAcrB,GAAG,EAAA;AACrB,YAAA,MAAMc,OAAOf,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOe,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACL,KAAK,CAACZ,GAAAA,CAAIY,KAAK,EAAEf,WAAa,EAAA;AAAEiB,gBAAAA;AAAK,aAAA,CAAA;AACzE,SAAA;AAEA,QAAA,MAAMQ,eAActB,GAAG,EAAA;AACrB,YAAA,MAAMc,OAAOf,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOe,MAAAA,CAAOC,UAAU,CAACO,QAAQ,CAACX,KAAK,CAACZ,GAAAA,CAAIY,KAAK,EAAEf,WAAa,EAAA;AAAEiB,gBAAAA;AAAK,aAAA,CAAA;AACzE,SAAA;QAEA,MAAMU,aAAAA,CAAAA,CAAcnB,IAAI,EAAEL,GAAG,EAAA;AAC3B,YAAA,MAAMc,OAAOf,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOe,MAAAA,CAAOC,UAAU,CAACO,QAAQ,CAACH,KAAK,CAACf,MAAMR,WAAa,EAAA;AAAEiB,gBAAAA;AAAK,aAAA,CAAA;AACpE;AACF,KAAA;IAEA,IAAIW,IAAAA;AAEJ,IAAA,IAAI7B,aAAaC,WAAc,CAAA,EAAA;AAC7B4B,QAAAA,IAAAA,GAAOC,qCAA2B,CAAA;AAAE7B,YAAAA;AAAY,SAAA,CAAA;KAC3C,MAAA;AACL4B,QAAAA,IAAAA,GAAOE,6CAA+B,CAAA;AAAE9B,YAAAA;AAAY,SAAA,CAAA;AACtD;AAEA,IAAA,OAAO+B,OAAOC,MAAM,CAACD,MAAOE,CAAAA,MAAM,CAAC3B,KAAQsB,CAAAA,EAAAA,IAAAA,CAAAA;AAC7C;;;;"}
@@ -14,7 +14,8 @@ function createController({ contentType }) {
14
14
  const ctx = requestCtx.get();
15
15
  return transformResponse(data, meta, {
16
16
  contentType,
17
- useJsonAPIFormat: ctx?.headers?.['strapi-response-format'] === 'v4'
17
+ useJsonAPIFormat: ctx?.headers?.['strapi-response-format'] === 'v4',
18
+ encodeSourceMaps: ctx?.query?.encodeSourceMaps === 'true'
18
19
  });
19
20
  },
20
21
  async sanitizeOutput (data, ctx) {
@@ -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 } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nimport { transformResponse } from './transform';\nimport { createSingleTypeController } from './single-type';\nimport { createCollectionTypeController } from './collection-type';\nimport requestCtx from '../../services/request-context';\n\nconst isSingleType = (\n contentType: Struct.ContentTypeSchema\n): contentType is Struct.SingleTypeSchema => contentTypeUtils.isSingleType(contentType);\n\nconst getAuthFromKoaContext = (ctx: Koa.Context) => prop('state.auth', ctx) ?? {};\n\nfunction createController<T extends Struct.SingleTypeSchema | Struct.CollectionTypeSchema>(opts: {\n contentType: T;\n}): T extends Struct.SingleTypeSchema\n ? Core.CoreAPI.Controller.SingleType\n : Core.CoreAPI.Controller.CollectionType;\nfunction createController({\n contentType,\n}: {\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema;\n}) {\n // TODO: replace with Base class + SingleType and CollectionType classes\n\n const proto: Core.CoreAPI.Controller.Base = {\n transformResponse(data, meta) {\n const ctx = requestCtx.get();\n return transformResponse(data, meta, {\n contentType,\n useJsonAPIFormat: ctx?.headers?.['strapi-response-format'] === 'v4',\n });\n },\n\n async sanitizeOutput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.output(data, contentType, { auth });\n },\n\n async sanitizeInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.input(data, contentType, { auth });\n },\n\n async sanitizeQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.query(ctx.query, contentType, { auth });\n },\n\n async validateQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.validate.query(ctx.query, contentType, { auth });\n },\n\n async validateInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.validate.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":["isSingleType","contentType","contentTypeUtils","getAuthFromKoaContext","ctx","prop","createController","proto","transformResponse","data","meta","requestCtx","get","useJsonAPIFormat","headers","sanitizeOutput","auth","strapi","contentAPI","sanitize","output","sanitizeInput","input","sanitizeQuery","query","validateQuery","validate","validateInput","ctrl","createSingleTypeController","createCollectionTypeController","Object","assign","create"],"mappings":";;;;;;;AAUA,MAAMA,YAAe,GAAA,CACnBC,WAC2CC,GAAAA,YAAAA,CAAiBF,YAAY,CAACC,WAAAA,CAAAA;AAE3E,MAAME,wBAAwB,CAACC,GAAAA,GAAqBC,IAAK,CAAA,YAAA,EAAcD,QAAQ,EAAC;AAOhF,SAASE,gBAAAA,CAAiB,EACxBL,WAAW,EAGZ,EAAA;;AAGC,IAAA,MAAMM,KAAsC,GAAA;QAC1CC,iBAAkBC,CAAAA,CAAAA,IAAI,EAAEC,IAAI,EAAA;YAC1B,MAAMN,GAAAA,GAAMO,WAAWC,GAAG,EAAA;YAC1B,OAAOJ,iBAAAA,CAAkBC,MAAMC,IAAM,EAAA;AACnCT,gBAAAA,WAAAA;AACAY,gBAAAA,gBAAAA,EAAkBT,GAAKU,EAAAA,OAAAA,GAAU,wBAAA,CAAyB,KAAK;AACjE,aAAA,CAAA;AACF,SAAA;QAEA,MAAMC,cAAAA,CAAAA,CAAeN,IAAI,EAAEL,GAAG,EAAA;AAC5B,YAAA,MAAMY,OAAOb,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOa,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACC,MAAM,CAACX,MAAMR,WAAa,EAAA;AAAEe,gBAAAA;AAAK,aAAA,CAAA;AACrE,SAAA;QAEA,MAAMK,aAAAA,CAAAA,CAAcZ,IAAI,EAAEL,GAAG,EAAA;AAC3B,YAAA,MAAMY,OAAOb,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOa,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACG,KAAK,CAACb,MAAMR,WAAa,EAAA;AAAEe,gBAAAA;AAAK,aAAA,CAAA;AACpE,SAAA;AAEA,QAAA,MAAMO,eAAcnB,GAAG,EAAA;AACrB,YAAA,MAAMY,OAAOb,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOa,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACK,KAAK,CAACpB,GAAAA,CAAIoB,KAAK,EAAEvB,WAAa,EAAA;AAAEe,gBAAAA;AAAK,aAAA,CAAA;AACzE,SAAA;AAEA,QAAA,MAAMS,eAAcrB,GAAG,EAAA;AACrB,YAAA,MAAMY,OAAOb,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOa,MAAAA,CAAOC,UAAU,CAACQ,QAAQ,CAACF,KAAK,CAACpB,GAAAA,CAAIoB,KAAK,EAAEvB,WAAa,EAAA;AAAEe,gBAAAA;AAAK,aAAA,CAAA;AACzE,SAAA;QAEA,MAAMW,aAAAA,CAAAA,CAAclB,IAAI,EAAEL,GAAG,EAAA;AAC3B,YAAA,MAAMY,OAAOb,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOa,MAAAA,CAAOC,UAAU,CAACQ,QAAQ,CAACJ,KAAK,CAACb,MAAMR,WAAa,EAAA;AAAEe,gBAAAA;AAAK,aAAA,CAAA;AACpE;AACF,KAAA;IAEA,IAAIY,IAAAA;AAEJ,IAAA,IAAI5B,aAAaC,WAAc,CAAA,EAAA;AAC7B2B,QAAAA,IAAAA,GAAOC,0BAA2B,CAAA;AAAE5B,YAAAA;AAAY,SAAA,CAAA;KAC3C,MAAA;AACL2B,QAAAA,IAAAA,GAAOE,8BAA+B,CAAA;AAAE7B,YAAAA;AAAY,SAAA,CAAA;AACtD;AAEA,IAAA,OAAO8B,OAAOC,MAAM,CAACD,MAAOE,CAAAA,MAAM,CAAC1B,KAAQqB,CAAAA,EAAAA,IAAAA,CAAAA;AAC7C;;;;"}
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 } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nimport { transformResponse } from './transform';\nimport { createSingleTypeController } from './single-type';\nimport { createCollectionTypeController } from './collection-type';\nimport requestCtx from '../../services/request-context';\n\nconst isSingleType = (\n contentType: Struct.ContentTypeSchema\n): contentType is Struct.SingleTypeSchema => contentTypeUtils.isSingleType(contentType);\n\nconst getAuthFromKoaContext = (ctx: Koa.Context) => prop('state.auth', ctx) ?? {};\n\nfunction createController<T extends Struct.SingleTypeSchema | Struct.CollectionTypeSchema>(opts: {\n contentType: T;\n}): T extends Struct.SingleTypeSchema\n ? Core.CoreAPI.Controller.SingleType\n : Core.CoreAPI.Controller.CollectionType;\nfunction createController({\n contentType,\n}: {\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema;\n}) {\n // TODO: replace with Base class + SingleType and CollectionType classes\n\n const proto: Core.CoreAPI.Controller.Base = {\n transformResponse(data, meta) {\n const ctx = requestCtx.get();\n return transformResponse(data, meta, {\n contentType,\n useJsonAPIFormat: ctx?.headers?.['strapi-response-format'] === 'v4',\n encodeSourceMaps: ctx?.query?.encodeSourceMaps === 'true',\n });\n },\n\n async sanitizeOutput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.output(data, contentType, { auth });\n },\n\n async sanitizeInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.input(data, contentType, { auth });\n },\n\n async sanitizeQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.sanitize.query(ctx.query, contentType, { auth });\n },\n\n async validateQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.validate.query(ctx.query, contentType, { auth });\n },\n\n async validateInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return strapi.contentAPI.validate.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":["isSingleType","contentType","contentTypeUtils","getAuthFromKoaContext","ctx","prop","createController","proto","transformResponse","data","meta","requestCtx","get","useJsonAPIFormat","headers","encodeSourceMaps","query","sanitizeOutput","auth","strapi","contentAPI","sanitize","output","sanitizeInput","input","sanitizeQuery","validateQuery","validate","validateInput","ctrl","createSingleTypeController","createCollectionTypeController","Object","assign","create"],"mappings":";;;;;;;AAUA,MAAMA,YAAe,GAAA,CACnBC,WAC2CC,GAAAA,YAAAA,CAAiBF,YAAY,CAACC,WAAAA,CAAAA;AAE3E,MAAME,wBAAwB,CAACC,GAAAA,GAAqBC,IAAK,CAAA,YAAA,EAAcD,QAAQ,EAAC;AAOhF,SAASE,gBAAAA,CAAiB,EACxBL,WAAW,EAGZ,EAAA;;AAGC,IAAA,MAAMM,KAAsC,GAAA;QAC1CC,iBAAkBC,CAAAA,CAAAA,IAAI,EAAEC,IAAI,EAAA;YAC1B,MAAMN,GAAAA,GAAMO,WAAWC,GAAG,EAAA;YAC1B,OAAOJ,iBAAAA,CAAkBC,MAAMC,IAAM,EAAA;AACnCT,gBAAAA,WAAAA;AACAY,gBAAAA,gBAAAA,EAAkBT,GAAKU,EAAAA,OAAAA,GAAU,wBAAA,CAAyB,KAAK,IAAA;gBAC/DC,gBAAkBX,EAAAA,GAAAA,EAAKY,OAAOD,gBAAqB,KAAA;AACrD,aAAA,CAAA;AACF,SAAA;QAEA,MAAME,cAAAA,CAAAA,CAAeR,IAAI,EAAEL,GAAG,EAAA;AAC5B,YAAA,MAAMc,OAAOf,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOe,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACC,MAAM,CAACb,MAAMR,WAAa,EAAA;AAAEiB,gBAAAA;AAAK,aAAA,CAAA;AACrE,SAAA;QAEA,MAAMK,aAAAA,CAAAA,CAAcd,IAAI,EAAEL,GAAG,EAAA;AAC3B,YAAA,MAAMc,OAAOf,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOe,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACG,KAAK,CAACf,MAAMR,WAAa,EAAA;AAAEiB,gBAAAA;AAAK,aAAA,CAAA;AACpE,SAAA;AAEA,QAAA,MAAMO,eAAcrB,GAAG,EAAA;AACrB,YAAA,MAAMc,OAAOf,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOe,MAAAA,CAAOC,UAAU,CAACC,QAAQ,CAACL,KAAK,CAACZ,GAAAA,CAAIY,KAAK,EAAEf,WAAa,EAAA;AAAEiB,gBAAAA;AAAK,aAAA,CAAA;AACzE,SAAA;AAEA,QAAA,MAAMQ,eAActB,GAAG,EAAA;AACrB,YAAA,MAAMc,OAAOf,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOe,MAAAA,CAAOC,UAAU,CAACO,QAAQ,CAACX,KAAK,CAACZ,GAAAA,CAAIY,KAAK,EAAEf,WAAa,EAAA;AAAEiB,gBAAAA;AAAK,aAAA,CAAA;AACzE,SAAA;QAEA,MAAMU,aAAAA,CAAAA,CAAcnB,IAAI,EAAEL,GAAG,EAAA;AAC3B,YAAA,MAAMc,OAAOf,qBAAsBC,CAAAA,GAAAA,CAAAA;YAEnC,OAAOe,MAAAA,CAAOC,UAAU,CAACO,QAAQ,CAACH,KAAK,CAACf,MAAMR,WAAa,EAAA;AAAEiB,gBAAAA;AAAK,aAAA,CAAA;AACpE;AACF,KAAA;IAEA,IAAIW,IAAAA;AAEJ,IAAA,IAAI7B,aAAaC,WAAc,CAAA,EAAA;AAC7B4B,QAAAA,IAAAA,GAAOC,0BAA2B,CAAA;AAAE7B,YAAAA;AAAY,SAAA,CAAA;KAC3C,MAAA;AACL4B,QAAAA,IAAAA,GAAOE,8BAA+B,CAAA;AAAE9B,YAAAA;AAAY,SAAA,CAAA;AACtD;AAEA,IAAA,OAAO+B,OAAOC,MAAM,CAACD,MAAOE,CAAAA,MAAM,CAAC3B,KAAQsB,CAAAA,EAAAA,IAAAA,CAAAA;AAC7C;;;;"}
@@ -17,7 +17,7 @@ var strapiUtils = require('@strapi/utils');
17
17
  const sanitizedQuery = await this.sanitizeQuery(ctx);
18
18
  const entity = await strapi.service(uid).find(sanitizedQuery);
19
19
  const sanitizedEntity = await this.sanitizeOutput(entity, ctx);
20
- return this.transformResponse(sanitizedEntity);
20
+ return this.transformResponse(sanitizedEntity, {});
21
21
  },
22
22
  /**
23
23
  * create or update single type content.
@@ -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 { Struct, Core, Utils, UID } from '@strapi/types';\n\ninterface Options {\n contentType: Struct.SingleTypeSchema;\n}\n\n/**\n * Returns a single type controller to handle default core-api actions\n */\nconst createSingleTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<Core.CoreAPI.Controller.SingleType> => {\n const uid = contentType.uid as 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 = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\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":["createSingleTypeController","contentType","uid","find","ctx","validateQuery","sanitizedQuery","sanitizeQuery","entity","strapi","service","sanitizedEntity","sanitizeOutput","transformResponse","update","query","body","request","isObject","data","errors","ValidationError","validateInput","sanitizedInputData","sanitizeInput","createOrUpdate","delete","status"],"mappings":";;;;;AAQA;;AAEC,IACKA,MAAAA,0BAAAA,GAA6B,CAAC,EAClCC,WAAW,EACH,GAAA;IACR,MAAMC,GAAAA,GAAMD,YAAYC,GAAG;;IAG3B,OAAO;AACL;;;QAIA,MAAMC,MAAKC,GAAG,EAAA;YACZ,MAAM,IAAI,CAACC,aAAa,CAACD,GAAAA,CAAAA;AACzB,YAAA,MAAME,cAAiB,GAAA,MAAM,IAAI,CAACC,aAAa,CAACH,GAAAA,CAAAA;AAEhD,YAAA,MAAMI,SAAS,MAAMC,MAAAA,CAAOC,OAAO,CAACR,GAAAA,CAAAA,CAAKC,IAAI,CAACG,cAAAA,CAAAA;AAE9C,YAAA,MAAMK,kBAAkB,MAAM,IAAI,CAACC,cAAc,CAACJ,MAAQJ,EAAAA,GAAAA,CAAAA;YAE1D,OAAO,IAAI,CAACS,iBAAiB,CAACF,eAAAA,CAAAA;AAChC,SAAA;AAEA;;QAGA,MAAMG,QAAOV,GAAG,EAAA;YACd,MAAM,EAAEW,KAAK,EAAEC,IAAAA,GAAO,EAAS,EAAE,GAAGZ,GAAAA,CAAIa,OAAO;AAE/C,YAAA,IAAI,CAACC,WAAAA,CAASF,IAAKG,CAAAA,IAAI,CAAG,EAAA;gBACxB,MAAM,IAAIC,kBAAOC,CAAAA,eAAe,CAAC,4CAAA,CAAA;AACnC;AAEA,YAAA,MAAM,IAAI,CAACC,aAAa,CAACN,IAAAA,CAAKG,IAAI,EAAEf,GAAAA,CAAAA;YAEpC,MAAMmB,kBAAAA,GAAqB,MAAM,IAAI,CAACC,aAAa,CAACR,IAAAA,CAAKG,IAAI,EAAEf,GAAAA,CAAAA;AAE/D,YAAA,MAAMI,SAAS,MAAMC,MAAAA,CAAOC,OAAO,CAACR,GAAAA,CAAAA,CAAKuB,cAAc,CAAC;AACtD,gBAAA,GAAGV,KAAK;gBACRI,IAAMI,EAAAA;AACR,aAAA,CAAA;AAEA,YAAA,MAAMZ,kBAAkB,MAAM,IAAI,CAACC,cAAc,CAACJ,MAAQJ,EAAAA,GAAAA,CAAAA;YAE1D,OAAO,IAAI,CAACS,iBAAiB,CAACF,eAAAA,CAAAA;AAChC,SAAA;AAEA,QAAA,MAAMe,QAAOtB,GAAG,EAAA;YACd,MAAM,EAAEW,KAAK,EAAE,GAAGX,GAAAA;AAElB,YAAA,MAAMK,MAAOC,CAAAA,OAAO,CAACR,GAAAA,CAAAA,CAAKwB,MAAM,CAACX,KAAAA,CAAAA;AAEjCX,YAAAA,GAAAA,CAAIuB,MAAM,GAAG,GAAA;AACf;AACF,KAAA;AACF;;;;"}
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 { Struct, Core, Utils, UID } from '@strapi/types';\n\ninterface Options {\n contentType: Struct.SingleTypeSchema;\n}\n\n/**\n * Returns a single type controller to handle default core-api actions\n */\nconst createSingleTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<Core.CoreAPI.Controller.SingleType> => {\n const uid = contentType.uid as 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 = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\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":["createSingleTypeController","contentType","uid","find","ctx","validateQuery","sanitizedQuery","sanitizeQuery","entity","strapi","service","sanitizedEntity","sanitizeOutput","transformResponse","update","query","body","request","isObject","data","errors","ValidationError","validateInput","sanitizedInputData","sanitizeInput","createOrUpdate","delete","status"],"mappings":";;;;;AAQA;;AAEC,IACKA,MAAAA,0BAAAA,GAA6B,CAAC,EAClCC,WAAW,EACH,GAAA;IACR,MAAMC,GAAAA,GAAMD,YAAYC,GAAG;;IAG3B,OAAO;AACL;;;QAIA,MAAMC,MAAKC,GAAG,EAAA;YACZ,MAAM,IAAI,CAACC,aAAa,CAACD,GAAAA,CAAAA;AACzB,YAAA,MAAME,cAAiB,GAAA,MAAM,IAAI,CAACC,aAAa,CAACH,GAAAA,CAAAA;AAEhD,YAAA,MAAMI,SAAS,MAAMC,MAAAA,CAAOC,OAAO,CAACR,GAAAA,CAAAA,CAAKC,IAAI,CAACG,cAAAA,CAAAA;AAE9C,YAAA,MAAMK,kBAAkB,MAAM,IAAI,CAACC,cAAc,CAACJ,MAAQJ,EAAAA,GAAAA,CAAAA;AAE1D,YAAA,OAAO,IAAI,CAACS,iBAAiB,CAACF,iBAAiB,EAAC,CAAA;AAClD,SAAA;AAEA;;QAGA,MAAMG,QAAOV,GAAG,EAAA;YACd,MAAM,EAAEW,KAAK,EAAEC,IAAAA,GAAO,EAAS,EAAE,GAAGZ,GAAAA,CAAIa,OAAO;AAE/C,YAAA,IAAI,CAACC,WAAAA,CAASF,IAAKG,CAAAA,IAAI,CAAG,EAAA;gBACxB,MAAM,IAAIC,kBAAOC,CAAAA,eAAe,CAAC,4CAAA,CAAA;AACnC;AAEA,YAAA,MAAM,IAAI,CAACC,aAAa,CAACN,IAAAA,CAAKG,IAAI,EAAEf,GAAAA,CAAAA;YAEpC,MAAMmB,kBAAAA,GAAqB,MAAM,IAAI,CAACC,aAAa,CAACR,IAAAA,CAAKG,IAAI,EAAEf,GAAAA,CAAAA;AAE/D,YAAA,MAAMI,SAAS,MAAMC,MAAAA,CAAOC,OAAO,CAACR,GAAAA,CAAAA,CAAKuB,cAAc,CAAC;AACtD,gBAAA,GAAGV,KAAK;gBACRI,IAAMI,EAAAA;AACR,aAAA,CAAA;AAEA,YAAA,MAAMZ,kBAAkB,MAAM,IAAI,CAACC,cAAc,CAACJ,MAAQJ,EAAAA,GAAAA,CAAAA;YAE1D,OAAO,IAAI,CAACS,iBAAiB,CAACF,eAAAA,CAAAA;AAChC,SAAA;AAEA,QAAA,MAAMe,QAAOtB,GAAG,EAAA;YACd,MAAM,EAAEW,KAAK,EAAE,GAAGX,GAAAA;AAElB,YAAA,MAAMK,MAAOC,CAAAA,OAAO,CAACR,GAAAA,CAAAA,CAAKwB,MAAM,CAACX,KAAAA,CAAAA;AAEjCX,YAAAA,GAAAA,CAAIuB,MAAM,GAAG,GAAA;AACf;AACF,KAAA;AACF;;;;"}
@@ -15,7 +15,7 @@ import { errors } from '@strapi/utils';
15
15
  const sanitizedQuery = await this.sanitizeQuery(ctx);
16
16
  const entity = await strapi.service(uid).find(sanitizedQuery);
17
17
  const sanitizedEntity = await this.sanitizeOutput(entity, ctx);
18
- return this.transformResponse(sanitizedEntity);
18
+ return this.transformResponse(sanitizedEntity, {});
19
19
  },
20
20
  /**
21
21
  * create or update single type content.
@@ -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 { Struct, Core, Utils, UID } from '@strapi/types';\n\ninterface Options {\n contentType: Struct.SingleTypeSchema;\n}\n\n/**\n * Returns a single type controller to handle default core-api actions\n */\nconst createSingleTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<Core.CoreAPI.Controller.SingleType> => {\n const uid = contentType.uid as 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 = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\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":["createSingleTypeController","contentType","uid","find","ctx","validateQuery","sanitizedQuery","sanitizeQuery","entity","strapi","service","sanitizedEntity","sanitizeOutput","transformResponse","update","query","body","request","isObject","data","errors","ValidationError","validateInput","sanitizedInputData","sanitizeInput","createOrUpdate","delete","status"],"mappings":";;;AAQA;;AAEC,IACKA,MAAAA,0BAAAA,GAA6B,CAAC,EAClCC,WAAW,EACH,GAAA;IACR,MAAMC,GAAAA,GAAMD,YAAYC,GAAG;;IAG3B,OAAO;AACL;;;QAIA,MAAMC,MAAKC,GAAG,EAAA;YACZ,MAAM,IAAI,CAACC,aAAa,CAACD,GAAAA,CAAAA;AACzB,YAAA,MAAME,cAAiB,GAAA,MAAM,IAAI,CAACC,aAAa,CAACH,GAAAA,CAAAA;AAEhD,YAAA,MAAMI,SAAS,MAAMC,MAAAA,CAAOC,OAAO,CAACR,GAAAA,CAAAA,CAAKC,IAAI,CAACG,cAAAA,CAAAA;AAE9C,YAAA,MAAMK,kBAAkB,MAAM,IAAI,CAACC,cAAc,CAACJ,MAAQJ,EAAAA,GAAAA,CAAAA;YAE1D,OAAO,IAAI,CAACS,iBAAiB,CAACF,eAAAA,CAAAA;AAChC,SAAA;AAEA;;QAGA,MAAMG,QAAOV,GAAG,EAAA;YACd,MAAM,EAAEW,KAAK,EAAEC,IAAAA,GAAO,EAAS,EAAE,GAAGZ,GAAAA,CAAIa,OAAO;AAE/C,YAAA,IAAI,CAACC,QAAAA,CAASF,IAAKG,CAAAA,IAAI,CAAG,EAAA;gBACxB,MAAM,IAAIC,MAAOC,CAAAA,eAAe,CAAC,4CAAA,CAAA;AACnC;AAEA,YAAA,MAAM,IAAI,CAACC,aAAa,CAACN,IAAAA,CAAKG,IAAI,EAAEf,GAAAA,CAAAA;YAEpC,MAAMmB,kBAAAA,GAAqB,MAAM,IAAI,CAACC,aAAa,CAACR,IAAAA,CAAKG,IAAI,EAAEf,GAAAA,CAAAA;AAE/D,YAAA,MAAMI,SAAS,MAAMC,MAAAA,CAAOC,OAAO,CAACR,GAAAA,CAAAA,CAAKuB,cAAc,CAAC;AACtD,gBAAA,GAAGV,KAAK;gBACRI,IAAMI,EAAAA;AACR,aAAA,CAAA;AAEA,YAAA,MAAMZ,kBAAkB,MAAM,IAAI,CAACC,cAAc,CAACJ,MAAQJ,EAAAA,GAAAA,CAAAA;YAE1D,OAAO,IAAI,CAACS,iBAAiB,CAACF,eAAAA,CAAAA;AAChC,SAAA;AAEA,QAAA,MAAMe,QAAOtB,GAAG,EAAA;YACd,MAAM,EAAEW,KAAK,EAAE,GAAGX,GAAAA;AAElB,YAAA,MAAMK,MAAOC,CAAAA,OAAO,CAACR,GAAAA,CAAAA,CAAKwB,MAAM,CAACX,KAAAA,CAAAA;AAEjCX,YAAAA,GAAAA,CAAIuB,MAAM,GAAG,GAAA;AACf;AACF,KAAA;AACF;;;;"}
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 { Struct, Core, Utils, UID } from '@strapi/types';\n\ninterface Options {\n contentType: Struct.SingleTypeSchema;\n}\n\n/**\n * Returns a single type controller to handle default core-api actions\n */\nconst createSingleTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<Core.CoreAPI.Controller.SingleType> => {\n const uid = contentType.uid as 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 = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\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":["createSingleTypeController","contentType","uid","find","ctx","validateQuery","sanitizedQuery","sanitizeQuery","entity","strapi","service","sanitizedEntity","sanitizeOutput","transformResponse","update","query","body","request","isObject","data","errors","ValidationError","validateInput","sanitizedInputData","sanitizeInput","createOrUpdate","delete","status"],"mappings":";;;AAQA;;AAEC,IACKA,MAAAA,0BAAAA,GAA6B,CAAC,EAClCC,WAAW,EACH,GAAA;IACR,MAAMC,GAAAA,GAAMD,YAAYC,GAAG;;IAG3B,OAAO;AACL;;;QAIA,MAAMC,MAAKC,GAAG,EAAA;YACZ,MAAM,IAAI,CAACC,aAAa,CAACD,GAAAA,CAAAA;AACzB,YAAA,MAAME,cAAiB,GAAA,MAAM,IAAI,CAACC,aAAa,CAACH,GAAAA,CAAAA;AAEhD,YAAA,MAAMI,SAAS,MAAMC,MAAAA,CAAOC,OAAO,CAACR,GAAAA,CAAAA,CAAKC,IAAI,CAACG,cAAAA,CAAAA;AAE9C,YAAA,MAAMK,kBAAkB,MAAM,IAAI,CAACC,cAAc,CAACJ,MAAQJ,EAAAA,GAAAA,CAAAA;AAE1D,YAAA,OAAO,IAAI,CAACS,iBAAiB,CAACF,iBAAiB,EAAC,CAAA;AAClD,SAAA;AAEA;;QAGA,MAAMG,QAAOV,GAAG,EAAA;YACd,MAAM,EAAEW,KAAK,EAAEC,IAAAA,GAAO,EAAS,EAAE,GAAGZ,GAAAA,CAAIa,OAAO;AAE/C,YAAA,IAAI,CAACC,QAAAA,CAASF,IAAKG,CAAAA,IAAI,CAAG,EAAA;gBACxB,MAAM,IAAIC,MAAOC,CAAAA,eAAe,CAAC,4CAAA,CAAA;AACnC;AAEA,YAAA,MAAM,IAAI,CAACC,aAAa,CAACN,IAAAA,CAAKG,IAAI,EAAEf,GAAAA,CAAAA;YAEpC,MAAMmB,kBAAAA,GAAqB,MAAM,IAAI,CAACC,aAAa,CAACR,IAAAA,CAAKG,IAAI,EAAEf,GAAAA,CAAAA;AAE/D,YAAA,MAAMI,SAAS,MAAMC,MAAAA,CAAOC,OAAO,CAACR,GAAAA,CAAAA,CAAKuB,cAAc,CAAC;AACtD,gBAAA,GAAGV,KAAK;gBACRI,IAAMI,EAAAA;AACR,aAAA,CAAA;AAEA,YAAA,MAAMZ,kBAAkB,MAAM,IAAI,CAACC,cAAc,CAACJ,MAAQJ,EAAAA,GAAAA,CAAAA;YAE1D,OAAO,IAAI,CAACS,iBAAiB,CAACF,eAAAA,CAAAA;AAChC,SAAA;AAEA,QAAA,MAAMe,QAAOtB,GAAG,EAAA;YACd,MAAM,EAAEW,KAAK,EAAE,GAAGX,GAAAA;AAElB,YAAA,MAAMK,MAAOC,CAAAA,OAAO,CAACR,GAAAA,CAAAA,CAAKwB,MAAM,CAACX,KAAAA,CAAAA;AAEjCX,YAAAA,GAAAA,CAAIuB,MAAM,GAAG,GAAA;AACf;AACF,KAAA;AACF;;;;"}
@@ -5,10 +5,11 @@ interface TransformOptions {
5
5
  * @deprecated this option is deprecated and will be removed in the next major version
6
6
  */
7
7
  useJsonAPIFormat?: boolean;
8
+ encodeSourceMaps?: boolean;
8
9
  }
9
- declare const transformResponse: (resource: any, meta?: unknown, opts?: TransformOptions) => {
10
+ declare const transformResponse: (resource: any, meta?: unknown, opts?: TransformOptions) => Promise<{
10
11
  data: any;
11
12
  meta: unknown;
12
- } | null | undefined;
13
+ } | null | undefined>;
13
14
  export { transformResponse };
14
15
  //# sourceMappingURL=transform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../src/core-api/controller/transform.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAO,MAAM,EAAQ,MAAM,eAAe,CAAC;AA2BvD,UAAU,gBAAgB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,eAAe,CAAC;IAChE;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,QAAA,MAAM,iBAAiB,aACX,GAAG,SACP,OAAO,SACP,gBAAgB;;;oBAgBvB,CAAC;AAkFF,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../src/core-api/controller/transform.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAO,MAAM,EAAQ,MAAM,eAAe,CAAC;AA2BvD,UAAU,gBAAgB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,eAAe,CAAC;IAChE;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,QAAA,MAAM,iBAAiB,aACX,GAAG,SACP,OAAO,SACP,gBAAgB;;;qBAwBvB,CAAC;AAkFF,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -8,8 +8,9 @@ function isEntry(property) {
8
8
  function isDZEntries(property) {
9
9
  return Array.isArray(property);
10
10
  }
11
- const transformResponse = (resource, meta = {}, opts = {
12
- useJsonAPIFormat: false
11
+ const transformResponse = async (resource, meta = {}, opts = {
12
+ useJsonAPIFormat: false,
13
+ encodeSourceMaps: false
13
14
  })=>{
14
15
  if (fp.isNil(resource)) {
15
16
  return resource;
@@ -17,8 +18,13 @@ const transformResponse = (resource, meta = {}, opts = {
17
18
  if (!fp.isPlainObject(resource) && !Array.isArray(resource)) {
18
19
  throw new Error('Entry must be an object or an array of objects');
19
20
  }
21
+ const data = opts.useJsonAPIFormat ? transformEntry(resource, opts?.contentType) : resource;
22
+ // Apply source map encoding if requested and content type is provided
23
+ if (opts.encodeSourceMaps && opts.contentType && 'uid' in opts.contentType) {
24
+ await strapi.get('content-source-maps').encodeSourceMaps(data, opts.contentType);
25
+ }
20
26
  return {
21
- data: opts.useJsonAPIFormat ? transformEntry(resource, opts?.contentType) : resource,
27
+ data,
22
28
  meta
23
29
  };
24
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","sources":["../../../src/core-api/controller/transform.ts"],"sourcesContent":["import { isNil, isPlainObject } from 'lodash/fp';\nimport type { UID, Struct, Data } from '@strapi/types';\n\ntype TransformedEntry = {\n id: string;\n documentId?: Data.DocumentID | null;\n attributes: Record<string, unknown>;\n};\n\ntype TransformedComponent = {\n id: string;\n [key: string]: unknown;\n};\n\ntype Entry = {\n id: string;\n documentId: Data.DocumentID | null;\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\ninterface TransformOptions {\n contentType?: Struct.ContentTypeSchema | Struct.ComponentSchema;\n /**\n * @deprecated this option is deprecated and will be removed in the next major version\n */\n useJsonAPIFormat?: boolean;\n}\n\nconst transformResponse = (\n resource: any,\n meta: unknown = {},\n opts: TransformOptions = {\n useJsonAPIFormat: false,\n }\n) => {\n if (isNil(resource)) {\n return resource;\n }\n\n if (!isPlainObject(resource) && !Array.isArray(resource)) {\n throw new Error('Entry must be an object or an array of objects');\n }\n\n return {\n data: opts.useJsonAPIFormat ? transformEntry(resource, opts?.contentType) : resource,\n meta,\n };\n};\n\nfunction transformComponent<T extends Entry | Entry[] | null>(\n data: T,\n component: Struct.ComponentSchema\n): T extends Entry[] ? TransformedComponent[] : T extends Entry ? TransformedComponent : null;\nfunction transformComponent(\n data: Entry | Entry[] | null,\n component: Struct.ComponentSchema\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?: Struct.Schema\n): T extends Entry[] ? TransformedEntry[] : T extends Entry ? TransformedEntry : null;\nfunction transformEntry(\n entry: Entry | Entry[] | null,\n type?: Struct.Schema\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, documentId, ...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(property, strapi.contentType(attribute.target));\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 documentId,\n attributes: attributeValues,\n };\n}\n\nexport { transformResponse };\n"],"names":["isEntry","property","isPlainObject","Array","isArray","isDZEntries","transformResponse","resource","meta","opts","useJsonAPIFormat","isNil","Error","data","transformEntry","contentType","transformComponent","component","map","datum","res","id","attributes","entry","type","singleEntry","documentId","properties","attributeValues","key","Object","keys","attribute","strapi","target","components","subProperty","__component"],"mappings":"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"}
1
+ {"version":3,"file":"transform.js","sources":["../../../src/core-api/controller/transform.ts"],"sourcesContent":["import { isNil, isPlainObject } from 'lodash/fp';\nimport type { UID, Struct, Data } from '@strapi/types';\n\ntype TransformedEntry = {\n id: string;\n documentId?: Data.DocumentID | null;\n attributes: Record<string, unknown>;\n};\n\ntype TransformedComponent = {\n id: string;\n [key: string]: unknown;\n};\n\ntype Entry = {\n id: string;\n documentId: Data.DocumentID | null;\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\ninterface TransformOptions {\n contentType?: Struct.ContentTypeSchema | Struct.ComponentSchema;\n /**\n * @deprecated this option is deprecated and will be removed in the next major version\n */\n useJsonAPIFormat?: boolean;\n encodeSourceMaps?: boolean;\n}\n\nconst transformResponse = async (\n resource: any,\n meta: unknown = {},\n opts: TransformOptions = {\n useJsonAPIFormat: false,\n encodeSourceMaps: false,\n }\n) => {\n if (isNil(resource)) {\n return resource;\n }\n\n if (!isPlainObject(resource) && !Array.isArray(resource)) {\n throw new Error('Entry must be an object or an array of objects');\n }\n\n const data = opts.useJsonAPIFormat ? transformEntry(resource, opts?.contentType) : resource;\n\n // Apply source map encoding if requested and content type is provided\n if (opts.encodeSourceMaps && opts.contentType && 'uid' in opts.contentType) {\n await strapi.get('content-source-maps').encodeSourceMaps(data, opts.contentType);\n }\n\n return {\n data,\n meta,\n };\n};\n\nfunction transformComponent<T extends Entry | Entry[] | null>(\n data: T,\n component: Struct.ComponentSchema\n): T extends Entry[] ? TransformedComponent[] : T extends Entry ? TransformedComponent : null;\nfunction transformComponent(\n data: Entry | Entry[] | null,\n component: Struct.ComponentSchema\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?: Struct.Schema\n): T extends Entry[] ? TransformedEntry[] : T extends Entry ? TransformedEntry : null;\nfunction transformEntry(\n entry: Entry | Entry[] | null,\n type?: Struct.Schema\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, documentId, ...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(property, strapi.contentType(attribute.target));\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 documentId,\n attributes: attributeValues,\n };\n}\n\nexport { transformResponse };\n"],"names":["isEntry","property","isPlainObject","Array","isArray","isDZEntries","transformResponse","resource","meta","opts","useJsonAPIFormat","encodeSourceMaps","isNil","Error","data","transformEntry","contentType","strapi","get","transformComponent","component","map","datum","res","id","attributes","entry","type","singleEntry","documentId","properties","attributeValues","key","Object","keys","attribute","target","components","subProperty","__component"],"mappings":"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"}
@@ -6,8 +6,9 @@ function isEntry(property) {
6
6
  function isDZEntries(property) {
7
7
  return Array.isArray(property);
8
8
  }
9
- const transformResponse = (resource, meta = {}, opts = {
10
- useJsonAPIFormat: false
9
+ const transformResponse = async (resource, meta = {}, opts = {
10
+ useJsonAPIFormat: false,
11
+ encodeSourceMaps: false
11
12
  })=>{
12
13
  if (isNil(resource)) {
13
14
  return resource;
@@ -15,8 +16,13 @@ const transformResponse = (resource, meta = {}, opts = {
15
16
  if (!isPlainObject(resource) && !Array.isArray(resource)) {
16
17
  throw new Error('Entry must be an object or an array of objects');
17
18
  }
19
+ const data = opts.useJsonAPIFormat ? transformEntry(resource, opts?.contentType) : resource;
20
+ // Apply source map encoding if requested and content type is provided
21
+ if (opts.encodeSourceMaps && opts.contentType && 'uid' in opts.contentType) {
22
+ await strapi.get('content-source-maps').encodeSourceMaps(data, opts.contentType);
23
+ }
18
24
  return {
19
- data: opts.useJsonAPIFormat ? transformEntry(resource, opts?.contentType) : resource,
25
+ data,
20
26
  meta
21
27
  };
22
28
  };
@@ -1 +1 @@
1
- {"version":3,"file":"transform.mjs","sources":["../../../src/core-api/controller/transform.ts"],"sourcesContent":["import { isNil, isPlainObject } from 'lodash/fp';\nimport type { UID, Struct, Data } from '@strapi/types';\n\ntype TransformedEntry = {\n id: string;\n documentId?: Data.DocumentID | null;\n attributes: Record<string, unknown>;\n};\n\ntype TransformedComponent = {\n id: string;\n [key: string]: unknown;\n};\n\ntype Entry = {\n id: string;\n documentId: Data.DocumentID | null;\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\ninterface TransformOptions {\n contentType?: Struct.ContentTypeSchema | Struct.ComponentSchema;\n /**\n * @deprecated this option is deprecated and will be removed in the next major version\n */\n useJsonAPIFormat?: boolean;\n}\n\nconst transformResponse = (\n resource: any,\n meta: unknown = {},\n opts: TransformOptions = {\n useJsonAPIFormat: false,\n }\n) => {\n if (isNil(resource)) {\n return resource;\n }\n\n if (!isPlainObject(resource) && !Array.isArray(resource)) {\n throw new Error('Entry must be an object or an array of objects');\n }\n\n return {\n data: opts.useJsonAPIFormat ? transformEntry(resource, opts?.contentType) : resource,\n meta,\n };\n};\n\nfunction transformComponent<T extends Entry | Entry[] | null>(\n data: T,\n component: Struct.ComponentSchema\n): T extends Entry[] ? TransformedComponent[] : T extends Entry ? TransformedComponent : null;\nfunction transformComponent(\n data: Entry | Entry[] | null,\n component: Struct.ComponentSchema\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?: Struct.Schema\n): T extends Entry[] ? TransformedEntry[] : T extends Entry ? TransformedEntry : null;\nfunction transformEntry(\n entry: Entry | Entry[] | null,\n type?: Struct.Schema\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, documentId, ...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(property, strapi.contentType(attribute.target));\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 documentId,\n attributes: attributeValues,\n };\n}\n\nexport { transformResponse };\n"],"names":["isEntry","property","isPlainObject","Array","isArray","isDZEntries","transformResponse","resource","meta","opts","useJsonAPIFormat","isNil","Error","data","transformEntry","contentType","transformComponent","component","map","datum","res","id","attributes","entry","type","singleEntry","documentId","properties","attributeValues","key","Object","keys","attribute","strapi","target","components","subProperty","__component"],"mappings":"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"}
1
+ {"version":3,"file":"transform.mjs","sources":["../../../src/core-api/controller/transform.ts"],"sourcesContent":["import { isNil, isPlainObject } from 'lodash/fp';\nimport type { UID, Struct, Data } from '@strapi/types';\n\ntype TransformedEntry = {\n id: string;\n documentId?: Data.DocumentID | null;\n attributes: Record<string, unknown>;\n};\n\ntype TransformedComponent = {\n id: string;\n [key: string]: unknown;\n};\n\ntype Entry = {\n id: string;\n documentId: Data.DocumentID | null;\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\ninterface TransformOptions {\n contentType?: Struct.ContentTypeSchema | Struct.ComponentSchema;\n /**\n * @deprecated this option is deprecated and will be removed in the next major version\n */\n useJsonAPIFormat?: boolean;\n encodeSourceMaps?: boolean;\n}\n\nconst transformResponse = async (\n resource: any,\n meta: unknown = {},\n opts: TransformOptions = {\n useJsonAPIFormat: false,\n encodeSourceMaps: false,\n }\n) => {\n if (isNil(resource)) {\n return resource;\n }\n\n if (!isPlainObject(resource) && !Array.isArray(resource)) {\n throw new Error('Entry must be an object or an array of objects');\n }\n\n const data = opts.useJsonAPIFormat ? transformEntry(resource, opts?.contentType) : resource;\n\n // Apply source map encoding if requested and content type is provided\n if (opts.encodeSourceMaps && opts.contentType && 'uid' in opts.contentType) {\n await strapi.get('content-source-maps').encodeSourceMaps(data, opts.contentType);\n }\n\n return {\n data,\n meta,\n };\n};\n\nfunction transformComponent<T extends Entry | Entry[] | null>(\n data: T,\n component: Struct.ComponentSchema\n): T extends Entry[] ? TransformedComponent[] : T extends Entry ? TransformedComponent : null;\nfunction transformComponent(\n data: Entry | Entry[] | null,\n component: Struct.ComponentSchema\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?: Struct.Schema\n): T extends Entry[] ? TransformedEntry[] : T extends Entry ? TransformedEntry : null;\nfunction transformEntry(\n entry: Entry | Entry[] | null,\n type?: Struct.Schema\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, documentId, ...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(property, strapi.contentType(attribute.target));\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 documentId,\n attributes: attributeValues,\n };\n}\n\nexport { transformResponse };\n"],"names":["isEntry","property","isPlainObject","Array","isArray","isDZEntries","transformResponse","resource","meta","opts","useJsonAPIFormat","encodeSourceMaps","isNil","Error","data","transformEntry","contentType","strapi","get","transformComponent","component","map","datum","res","id","attributes","entry","type","singleEntry","documentId","properties","attributeValues","key","Object","keys","attribute","target","components","subProperty","__component"],"mappings":"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"}
@@ -1,24 +1,6 @@
1
- import type { Schema } from '@strapi/types';
2
- export declare const createRoutes: ({ contentType }: {
1
+ import type { Core, Schema } from '@strapi/types';
2
+ export declare const createRoutes: ({ strapi, contentType, }: {
3
+ strapi: Core.Strapi;
3
4
  contentType: Schema.ContentType;
4
- }) => {
5
- find: {
6
- method: string;
7
- path: string;
8
- handler: string;
9
- config: {};
10
- };
11
- update: {
12
- method: string;
13
- path: string;
14
- handler: string;
15
- config: {};
16
- };
17
- delete: {
18
- method: string;
19
- path: string;
20
- handler: string;
21
- config: {};
22
- };
23
- };
5
+ }) => Record<string, Partial<Core.Route>>;
24
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core-api/routes/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,eAAO,MAAM,YAAY,oBAAqB;IAAE,WAAW,EAAE,OAAO,WAAW,CAAA;CAAE;;;;;;;;;;;;;;;;;;;CAMhF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core-api/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAQlD,eAAO,MAAM,YAAY,6BAGtB;IACD,MAAM,EAAE,KAAK,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,WAAW,CAAC;CACjC,wCAMA,CAAC"}