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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of @strapi/core might be problematic. Click here for more details.

Files changed (232) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/Strapi.js +7 -3
  3. package/dist/Strapi.js.map +1 -1
  4. package/dist/Strapi.mjs +6 -2
  5. package/dist/Strapi.mjs.map +1 -1
  6. package/dist/core-api/controller/collection-type.d.ts +1 -1
  7. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  8. package/dist/core-api/controller/collection-type.js +9 -20
  9. package/dist/core-api/controller/collection-type.js.map +1 -1
  10. package/dist/core-api/controller/collection-type.mjs +8 -20
  11. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  12. package/dist/core-api/controller/index.d.ts.map +1 -1
  13. package/dist/core-api/controller/index.js +2 -2
  14. package/dist/core-api/controller/index.js.map +1 -1
  15. package/dist/core-api/controller/index.mjs +2 -2
  16. package/dist/core-api/controller/index.mjs.map +1 -1
  17. package/dist/core-api/controller/single-type.d.ts +1 -1
  18. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  19. package/dist/core-api/controller/single-type.js +6 -11
  20. package/dist/core-api/controller/single-type.js.map +1 -1
  21. package/dist/core-api/controller/single-type.mjs +5 -11
  22. package/dist/core-api/controller/single-type.mjs.map +1 -1
  23. package/dist/core-api/controller/transform.d.ts +2 -11
  24. package/dist/core-api/controller/transform.d.ts.map +1 -1
  25. package/dist/core-api/controller/transform.js +4 -18
  26. package/dist/core-api/controller/transform.js.map +1 -1
  27. package/dist/core-api/controller/transform.mjs +4 -18
  28. package/dist/core-api/controller/transform.mjs.map +1 -1
  29. package/dist/core-api/service/collection-type.d.ts +28 -5
  30. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  31. package/dist/core-api/service/collection-type.js +47 -49
  32. package/dist/core-api/service/collection-type.js.map +1 -1
  33. package/dist/core-api/service/collection-type.mjs +47 -50
  34. package/dist/core-api/service/collection-type.mjs.map +1 -1
  35. package/dist/core-api/service/core-service.d.ts +4 -0
  36. package/dist/core-api/service/core-service.d.ts.map +1 -0
  37. package/dist/core-api/service/core-service.js +12 -0
  38. package/dist/core-api/service/core-service.js.map +1 -0
  39. package/dist/core-api/service/core-service.mjs +12 -0
  40. package/dist/core-api/service/core-service.mjs.map +1 -0
  41. package/dist/core-api/service/index.js +2 -2
  42. package/dist/core-api/service/index.js.map +1 -1
  43. package/dist/core-api/service/index.mjs +4 -4
  44. package/dist/core-api/service/index.mjs.map +1 -1
  45. package/dist/core-api/service/pagination.d.ts +1 -5
  46. package/dist/core-api/service/pagination.d.ts.map +1 -1
  47. package/dist/core-api/service/pagination.js +0 -11
  48. package/dist/core-api/service/pagination.js.map +1 -1
  49. package/dist/core-api/service/pagination.mjs +0 -11
  50. package/dist/core-api/service/pagination.mjs.map +1 -1
  51. package/dist/core-api/service/single-type.d.ts +14 -8
  52. package/dist/core-api/service/single-type.d.ts.map +1 -1
  53. package/dist/core-api/service/single-type.js +36 -50
  54. package/dist/core-api/service/single-type.js.map +1 -1
  55. package/dist/core-api/service/single-type.mjs +35 -50
  56. package/dist/core-api/service/single-type.mjs.map +1 -1
  57. package/dist/factories.d.ts.map +1 -1
  58. package/dist/factories.js +2 -12
  59. package/dist/factories.js.map +1 -1
  60. package/dist/factories.mjs +2 -12
  61. package/dist/factories.mjs.map +1 -1
  62. package/dist/registries/content-types.d.ts.map +1 -1
  63. package/dist/registries/content-types.js +1 -2
  64. package/dist/registries/content-types.js.map +1 -1
  65. package/dist/registries/content-types.mjs +1 -2
  66. package/dist/registries/content-types.mjs.map +1 -1
  67. package/dist/services/document-service/common.d.ts +4 -0
  68. package/dist/services/document-service/common.d.ts.map +1 -0
  69. package/dist/services/document-service/common.js +7 -0
  70. package/dist/services/document-service/common.js.map +1 -0
  71. package/dist/services/document-service/common.mjs +7 -0
  72. package/dist/services/document-service/common.mjs.map +1 -0
  73. package/dist/services/document-service/document-engine.d.ts.map +1 -1
  74. package/dist/services/document-service/document-engine.js +117 -76
  75. package/dist/services/document-service/document-engine.js.map +1 -1
  76. package/dist/services/document-service/document-engine.mjs +112 -71
  77. package/dist/services/document-service/document-engine.mjs.map +1 -1
  78. package/dist/services/document-service/draft-and-publish.d.ts +24 -0
  79. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -0
  80. package/dist/services/document-service/draft-and-publish.js +41 -0
  81. package/dist/services/document-service/draft-and-publish.js.map +1 -0
  82. package/dist/services/document-service/draft-and-publish.mjs +41 -0
  83. package/dist/services/document-service/draft-and-publish.mjs.map +1 -0
  84. package/dist/services/document-service/{document-service.d.ts → index.d.ts} +2 -4
  85. package/dist/services/document-service/index.d.ts.map +1 -0
  86. package/dist/services/document-service/index.js +22 -0
  87. package/dist/services/document-service/index.js.map +1 -0
  88. package/dist/services/document-service/index.mjs +22 -0
  89. package/dist/services/document-service/index.mjs.map +1 -0
  90. package/dist/services/document-service/internationalization.d.ts +8 -0
  91. package/dist/services/document-service/internationalization.d.ts.map +1 -0
  92. package/dist/services/document-service/internationalization.js +54 -0
  93. package/dist/services/document-service/internationalization.js.map +1 -0
  94. package/dist/services/document-service/internationalization.mjs +54 -0
  95. package/dist/services/document-service/internationalization.mjs.map +1 -0
  96. package/dist/services/document-service/middlewares.d.ts +8 -0
  97. package/dist/services/document-service/middlewares.d.ts.map +1 -0
  98. package/dist/services/document-service/middlewares.js +46 -0
  99. package/dist/services/document-service/middlewares.js.map +1 -0
  100. package/dist/services/document-service/middlewares.mjs +46 -0
  101. package/dist/services/document-service/middlewares.mjs.map +1 -0
  102. package/dist/services/document-service/repositories/content-type.d.ts +3 -0
  103. package/dist/services/document-service/repositories/content-type.d.ts.map +1 -0
  104. package/dist/services/document-service/repositories/content-type.js +139 -0
  105. package/dist/services/document-service/repositories/content-type.js.map +1 -0
  106. package/dist/services/document-service/repositories/content-type.mjs +139 -0
  107. package/dist/services/document-service/repositories/content-type.mjs.map +1 -0
  108. package/dist/services/document-service/transform/data.d.ts +5 -0
  109. package/dist/services/document-service/transform/data.d.ts.map +1 -0
  110. package/dist/services/document-service/transform/data.js +13 -0
  111. package/dist/services/document-service/transform/data.js.map +1 -0
  112. package/dist/services/document-service/transform/data.mjs +13 -0
  113. package/dist/services/document-service/transform/data.mjs.map +1 -0
  114. package/dist/services/document-service/transform/fields.d.ts +5 -0
  115. package/dist/services/document-service/transform/fields.d.ts.map +1 -0
  116. package/dist/services/document-service/transform/fields.js +24 -0
  117. package/dist/services/document-service/transform/fields.js.map +1 -0
  118. package/dist/services/document-service/transform/fields.mjs +24 -0
  119. package/dist/services/document-service/transform/fields.mjs.map +1 -0
  120. package/dist/services/document-service/transform/id-map.d.ts +23 -0
  121. package/dist/services/document-service/transform/id-map.d.ts.map +1 -0
  122. package/dist/services/document-service/transform/id-map.js +72 -0
  123. package/dist/services/document-service/transform/id-map.js.map +1 -0
  124. package/dist/services/document-service/transform/id-map.mjs +72 -0
  125. package/dist/services/document-service/transform/id-map.mjs.map +1 -0
  126. package/dist/services/document-service/transform/id-transform.d.ts +19 -0
  127. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -0
  128. package/dist/services/document-service/transform/id-transform.js +27 -0
  129. package/dist/services/document-service/transform/id-transform.js.map +1 -0
  130. package/dist/services/document-service/transform/id-transform.mjs +27 -0
  131. package/dist/services/document-service/transform/id-transform.mjs.map +1 -0
  132. package/dist/services/document-service/transform/populate.d.ts +3 -0
  133. package/dist/services/document-service/transform/populate.d.ts.map +1 -0
  134. package/dist/services/document-service/transform/populate.js +21 -0
  135. package/dist/services/document-service/transform/populate.js.map +1 -0
  136. package/dist/services/document-service/transform/populate.mjs +21 -0
  137. package/dist/services/document-service/transform/populate.mjs.map +1 -0
  138. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +13 -0
  139. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -0
  140. package/dist/services/document-service/transform/relations/extract/data-ids.js +79 -0
  141. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -0
  142. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +79 -0
  143. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -0
  144. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts +10 -0
  145. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -0
  146. package/dist/services/document-service/transform/relations/transform/data-ids.js +117 -0
  147. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -0
  148. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +117 -0
  149. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -0
  150. package/dist/services/document-service/transform/relations/utils/data.d.ts +4 -0
  151. package/dist/services/document-service/transform/relations/utils/data.d.ts.map +1 -0
  152. package/dist/services/document-service/transform/relations/utils/data.js +12 -0
  153. package/dist/services/document-service/transform/relations/utils/data.js.map +1 -0
  154. package/dist/services/document-service/transform/relations/utils/data.mjs +12 -0
  155. package/dist/services/document-service/transform/relations/utils/data.mjs.map +1 -0
  156. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +10 -0
  157. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -0
  158. package/dist/services/document-service/transform/relations/utils/i18n.js +31 -0
  159. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -0
  160. package/dist/services/document-service/transform/relations/utils/i18n.mjs +31 -0
  161. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -0
  162. package/dist/services/document-service/transform/relations/utils/types.d.ts +12 -0
  163. package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -0
  164. package/dist/services/document-service/transform/types.d.ts +13 -0
  165. package/dist/services/document-service/transform/types.d.ts.map +1 -0
  166. package/dist/services/document-service/utils/populate.d.ts +3 -0
  167. package/dist/services/document-service/utils/populate.d.ts.map +1 -0
  168. package/dist/services/document-service/utils/populate.js +41 -0
  169. package/dist/services/document-service/utils/populate.js.map +1 -0
  170. package/dist/services/document-service/utils/populate.mjs +41 -0
  171. package/dist/services/document-service/utils/populate.mjs.map +1 -0
  172. package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
  173. package/dist/services/entity-validator/blocks-validator.js +22 -2
  174. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  175. package/dist/services/entity-validator/blocks-validator.mjs +22 -2
  176. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  177. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  178. package/dist/services/entity-validator/validators.js +7 -8
  179. package/dist/services/entity-validator/validators.js.map +1 -1
  180. package/dist/services/entity-validator/validators.mjs +7 -8
  181. package/dist/services/entity-validator/validators.mjs.map +1 -1
  182. package/dist/services/server/compose-endpoint.d.ts.map +1 -1
  183. package/dist/services/server/compose-endpoint.js +3 -0
  184. package/dist/services/server/compose-endpoint.js.map +1 -1
  185. package/dist/services/server/compose-endpoint.mjs +3 -0
  186. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  187. package/dist/services/webhook-store.js +2 -2
  188. package/dist/services/webhook-store.js.map +1 -1
  189. package/dist/services/webhook-store.mjs +2 -2
  190. package/dist/services/webhook-store.mjs.map +1 -1
  191. package/dist/utils/transform-content-types-to-models.d.ts +174 -3
  192. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  193. package/dist/utils/transform-content-types-to-models.js +80 -41
  194. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  195. package/dist/utils/transform-content-types-to-models.mjs +79 -41
  196. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  197. package/package.json +14 -14
  198. package/dist/core-api/service/get-fetch-params.d.ts +0 -7
  199. package/dist/core-api/service/get-fetch-params.d.ts.map +0 -1
  200. package/dist/core-api/service/get-fetch-params.js +0 -14
  201. package/dist/core-api/service/get-fetch-params.js.map +0 -1
  202. package/dist/core-api/service/get-fetch-params.mjs +0 -14
  203. package/dist/core-api/service/get-fetch-params.mjs.map +0 -1
  204. package/dist/services/document-service/document-service.d.ts.map +0 -1
  205. package/dist/services/document-service/document-service.js +0 -132
  206. package/dist/services/document-service/document-service.js.map +0 -1
  207. package/dist/services/document-service/document-service.mjs +0 -132
  208. package/dist/services/document-service/document-service.mjs.map +0 -1
  209. package/dist/services/document-service/middlewares/defaults/draft-and-publish.d.ts +0 -26
  210. package/dist/services/document-service/middlewares/defaults/draft-and-publish.d.ts.map +0 -1
  211. package/dist/services/document-service/middlewares/defaults/draft-and-publish.js +0 -58
  212. package/dist/services/document-service/middlewares/defaults/draft-and-publish.js.map +0 -1
  213. package/dist/services/document-service/middlewares/defaults/draft-and-publish.mjs +0 -58
  214. package/dist/services/document-service/middlewares/defaults/draft-and-publish.mjs.map +0 -1
  215. package/dist/services/document-service/middlewares/defaults/index.d.ts +0 -3
  216. package/dist/services/document-service/middlewares/defaults/index.d.ts.map +0 -1
  217. package/dist/services/document-service/middlewares/defaults/index.js +0 -82
  218. package/dist/services/document-service/middlewares/defaults/index.js.map +0 -1
  219. package/dist/services/document-service/middlewares/defaults/index.mjs +0 -82
  220. package/dist/services/document-service/middlewares/defaults/index.mjs.map +0 -1
  221. package/dist/services/document-service/middlewares/defaults/locales.d.ts +0 -18
  222. package/dist/services/document-service/middlewares/defaults/locales.d.ts.map +0 -1
  223. package/dist/services/document-service/middlewares/defaults/locales.js +0 -50
  224. package/dist/services/document-service/middlewares/defaults/locales.js.map +0 -1
  225. package/dist/services/document-service/middlewares/defaults/locales.mjs +0 -50
  226. package/dist/services/document-service/middlewares/defaults/locales.mjs.map +0 -1
  227. package/dist/services/document-service/middlewares/index.d.ts +0 -11
  228. package/dist/services/document-service/middlewares/index.d.ts.map +0 -1
  229. package/dist/services/document-service/middlewares/index.js +0 -59
  230. package/dist/services/document-service/middlewares/index.js.map +0 -1
  231. package/dist/services/document-service/middlewares/index.mjs +0 -59
  232. package/dist/services/document-service/middlewares/index.mjs.map +0 -1
@@ -0,0 +1,79 @@
1
+ import { isObject } from "lodash/fp";
2
+ import { traverseEntity } from "@strapi/utils";
3
+ import { isShortHand, isLongHand } from "../utils/data.mjs";
4
+ import { getRelationTargetLocale } from "../utils/i18n.mjs";
5
+ const handlePrimitive = (relation) => {
6
+ if (!relation) {
7
+ return [];
8
+ }
9
+ if (isShortHand(relation)) {
10
+ return [{ documentId: relation }];
11
+ }
12
+ if (isLongHand(relation)) {
13
+ if ("documentId" in relation) {
14
+ return [{ documentId: relation.documentId, locale: relation.locale }];
15
+ }
16
+ return [];
17
+ }
18
+ if (Array.isArray(relation)) {
19
+ return relation.map((item) => isShortHand(item) ? { documentId: item } : item);
20
+ }
21
+ return [];
22
+ };
23
+ const extractRelationIds = (relation) => {
24
+ const ids = handlePrimitive(relation);
25
+ if (!isObject(relation))
26
+ return ids;
27
+ if ("set" in relation)
28
+ ids.push(...handlePrimitive(relation.set));
29
+ if ("disconnect" in relation)
30
+ ids.push(...handlePrimitive(relation.disconnect));
31
+ if ("connect" in relation) {
32
+ if (!relation.connect)
33
+ return [];
34
+ ids.push(...handlePrimitive(relation.connect));
35
+ const connect = Array.isArray(relation.connect) ? relation.connect : [relation.connect];
36
+ connect.forEach((relation2) => {
37
+ if (isShortHand(relation2) || !("position" in relation2))
38
+ return;
39
+ const { position } = relation2;
40
+ if (position?.before) {
41
+ ids.push(...handlePrimitive({ ...position, id: position.before }));
42
+ }
43
+ if (position?.after) {
44
+ ids.push(...handlePrimitive({ ...position, id: position.after }));
45
+ }
46
+ });
47
+ }
48
+ return ids;
49
+ };
50
+ const extractDataIds = (idMap, data, opts) => {
51
+ return traverseEntity(
52
+ ({ value, attribute }) => {
53
+ if (attribute.type === "relation") {
54
+ const extractedIds = extractRelationIds(value);
55
+ const target = attribute.target;
56
+ if (!target)
57
+ return;
58
+ extractedIds.forEach((relation) => {
59
+ idMap.add({
60
+ uid: target,
61
+ documentId: relation.documentId,
62
+ locale: getRelationTargetLocale(relation, {
63
+ targetUid: target,
64
+ sourceUid: opts.uid,
65
+ sourceLocale: opts.locale
66
+ }),
67
+ isDraft: opts.isDraft
68
+ });
69
+ });
70
+ }
71
+ },
72
+ { schema: strapi.getModel(opts.uid) },
73
+ data
74
+ );
75
+ };
76
+ export {
77
+ extractDataIds
78
+ };
79
+ //# sourceMappingURL=data-ids.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-ids.mjs","sources":["../../../../../../src/services/document-service/transform/relations/extract/data-ids.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { EntityService, Attribute, Common } from '@strapi/types';\nimport { traverseEntity } from '@strapi/utils';\nimport { IdMap } from '../../id-map';\nimport { ShortHand, LongHand, LongHandDocument } from '../utils/types';\nimport { isShortHand, isLongHand } from '../utils/data';\nimport { getRelationTargetLocale } from '../utils/i18n';\n\n/**\n * Get relation ids from primitive representation (id, id[], {id}, {id}[])\n */\nconst handlePrimitive = (\n relation: ShortHand | LongHand | ShortHand[] | LongHand[] | null | undefined | any\n): LongHandDocument[] => {\n if (!relation) {\n return []; // null\n }\n\n if (isShortHand(relation)) {\n return [{ documentId: relation }]; // id\n }\n\n if (isLongHand(relation)) {\n // { documentId, locale? }\n if ('documentId' in relation) {\n return [{ documentId: relation.documentId, locale: relation.locale }];\n }\n // { id }\n return [];\n }\n\n if (Array.isArray(relation)) {\n return relation.map((item) => (isShortHand(item) ? { documentId: item } : item)); // id[]\n }\n\n return [];\n};\n\n/**\n * Get all relations document ids from a relation input value\n */\nconst extractRelationIds = <T extends Attribute.RelationKind.Any>(\n relation: EntityService.Params.Attribute.RelationInputValue<T>\n): LongHandDocument[] => {\n const ids = handlePrimitive(relation);\n if (!isObject(relation)) return ids;\n\n if ('set' in relation) ids.push(...handlePrimitive(relation.set)); // set: id[]\n if ('disconnect' in relation) ids.push(...handlePrimitive(relation.disconnect)); // disconnect: id[]\n if ('connect' in relation) {\n // connect: id[] | { id } | ...\n if (!relation.connect) return [];\n ids.push(...handlePrimitive(relation.connect));\n\n // handle positional arguments\n const connect = Array.isArray(relation.connect) ? relation.connect : [relation.connect];\n connect.forEach((relation) => {\n if (isShortHand(relation) || !('position' in relation)) return;\n\n const { position } = relation;\n\n // { connect: { id: id, position: { before: id } } }\n if (position?.before) {\n ids.push(...handlePrimitive({ ...position, id: position.before }));\n }\n\n // { connect: { id: id, position: { after: id } } }\n if (position?.after) {\n ids.push(...handlePrimitive({ ...position, id: position.after }));\n }\n });\n }\n\n return ids;\n};\n\n/**\n * Iterate over all attributes of a Data object and extract all relational document ids.\n * Those will later be transformed to entity ids.\n */\nconst extractDataIds = (\n idMap: IdMap,\n data: Record<string, any>,\n opts: { uid: Common.UID.Schema; locale?: string | null; isDraft?: boolean }\n) => {\n return traverseEntity(\n ({ value, attribute }) => {\n // Find relational attributes, and return the document ids\n if (attribute.type === 'relation') {\n const extractedIds = extractRelationIds(value as any);\n\n // TODO: Handle morph relations (they have multiple targets)\n const target = attribute.target;\n if (!target) return;\n\n extractedIds.forEach((relation) => {\n idMap.add({\n uid: target,\n documentId: relation.documentId,\n locale: getRelationTargetLocale(relation, {\n targetUid: target as Common.UID.Schema,\n sourceUid: opts.uid,\n sourceLocale: opts.locale,\n }),\n isDraft: opts.isDraft,\n });\n });\n }\n },\n { schema: strapi.getModel(opts.uid) },\n data\n );\n};\n\nexport { extractDataIds };\n"],"names":["relation"],"mappings":";;;;AAWA,MAAM,kBAAkB,CACtB,aACuB;AACvB,MAAI,CAAC,UAAU;AACb,WAAO;EACT;AAEI,MAAA,YAAY,QAAQ,GAAG;AACzB,WAAO,CAAC,EAAE,YAAY,SAAA,CAAU;AAAA,EAClC;AAEI,MAAA,WAAW,QAAQ,GAAG;AAExB,QAAI,gBAAgB,UAAU;AACrB,aAAA,CAAC,EAAE,YAAY,SAAS,YAAY,QAAQ,SAAS,QAAQ;AAAA,IACtE;AAEA,WAAO;EACT;AAEI,MAAA,MAAM,QAAQ,QAAQ,GAAG;AACpB,WAAA,SAAS,IAAI,CAAC,SAAU,YAAY,IAAI,IAAI,EAAE,YAAY,KAAK,IAAI,IAAK;AAAA,EACjF;AAEA,SAAO;AACT;AAKA,MAAM,qBAAqB,CACzB,aACuB;AACjB,QAAA,MAAM,gBAAgB,QAAQ;AAChC,MAAA,CAAC,SAAS,QAAQ;AAAU,WAAA;AAEhC,MAAI,SAAS;AAAU,QAAI,KAAK,GAAG,gBAAgB,SAAS,GAAG,CAAC;AAChE,MAAI,gBAAgB;AAAU,QAAI,KAAK,GAAG,gBAAgB,SAAS,UAAU,CAAC;AAC9E,MAAI,aAAa,UAAU;AAEzB,QAAI,CAAC,SAAS;AAAS,aAAO;AAC9B,QAAI,KAAK,GAAG,gBAAgB,SAAS,OAAO,CAAC;AAGvC,UAAA,UAAU,MAAM,QAAQ,SAAS,OAAO,IAAI,SAAS,UAAU,CAAC,SAAS,OAAO;AAC9E,YAAA,QAAQ,CAACA,cAAa;AAC5B,UAAI,YAAYA,SAAQ,KAAK,EAAE,cAAcA;AAAW;AAElD,YAAA,EAAE,SAAaA,IAAAA;AAGrB,UAAI,UAAU,QAAQ;AAChB,YAAA,KAAK,GAAG,gBAAgB,EAAE,GAAG,UAAU,IAAI,SAAS,OAAQ,CAAA,CAAC;AAAA,MACnE;AAGA,UAAI,UAAU,OAAO;AACf,YAAA,KAAK,GAAG,gBAAgB,EAAE,GAAG,UAAU,IAAI,SAAS,MAAO,CAAA,CAAC;AAAA,MAClE;AAAA,IAAA,CACD;AAAA,EACH;AAEO,SAAA;AACT;AAMA,MAAM,iBAAiB,CACrB,OACA,MACA,SACG;AACI,SAAA;AAAA,IACL,CAAC,EAAE,OAAO,gBAAgB;AAEpB,UAAA,UAAU,SAAS,YAAY;AAC3B,cAAA,eAAe,mBAAmB,KAAY;AAGpD,cAAM,SAAS,UAAU;AACzB,YAAI,CAAC;AAAQ;AAEA,qBAAA,QAAQ,CAAC,aAAa;AACjC,gBAAM,IAAI;AAAA,YACR,KAAK;AAAA,YACL,YAAY,SAAS;AAAA,YACrB,QAAQ,wBAAwB,UAAU;AAAA,cACxC,WAAW;AAAA,cACX,WAAW,KAAK;AAAA,cAChB,cAAc,KAAK;AAAA,YAAA,CACpB;AAAA,YACD,SAAS,KAAK;AAAA,UAAA,CACf;AAAA,QAAA,CACF;AAAA,MACH;AAAA,IACF;AAAA,IACA,EAAE,QAAQ,OAAO,SAAS,KAAK,GAAG,EAAE;AAAA,IACpC;AAAA,EAAA;AAEJ;"}
@@ -0,0 +1,10 @@
1
+ import { Common } from '@strapi/types';
2
+ import { IdMap } from '../../id-map';
3
+ declare const transformDataIdsVisitor: (idMap: IdMap, data: Record<string, any>, opts: {
4
+ uid: Common.UID.Schema;
5
+ locale?: string | null;
6
+ isDraft?: boolean;
7
+ allowMissingId?: boolean;
8
+ }) => Promise<import("@strapi/utils/dist/types").Data>;
9
+ export { transformDataIdsVisitor };
10
+ //# sourceMappingURL=data-ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-ids.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/transform/data-ids.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,MAAM,EAAE,MAAM,eAAe,CAAC;AAKjE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AA8GrC,QAAA,MAAM,uBAAuB,UACpB,KAAK,QACN,OAAO,MAAM,EAAE,GAAG,CAAC,QACnB;IACJ,GAAG,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,qDAwCF,CAAC;AAEF,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const _ = require("lodash/fp");
4
+ const strapiUtils = require("@strapi/utils");
5
+ const data = require("../utils/data.js");
6
+ const i18n = require("../utils/i18n.js");
7
+ const isNumeric = (value) => {
8
+ if (Array.isArray(value))
9
+ return false;
10
+ const parsed = parseInt(value, 10);
11
+ return !Number.isNaN(parsed);
12
+ };
13
+ const transformPrimitive = (relation, getId) => {
14
+ if (isNumeric(relation)) {
15
+ return relation;
16
+ }
17
+ if (_.isNil(relation)) {
18
+ return relation;
19
+ }
20
+ if (data.isShortHand(relation)) {
21
+ return getId(relation);
22
+ }
23
+ if (data.isLongHand(relation)) {
24
+ if (!("documentId" in relation))
25
+ return relation;
26
+ const entryId = getId(relation.documentId, relation.locale);
27
+ if (!entryId)
28
+ return void 0;
29
+ return { ...relation, id: entryId };
30
+ }
31
+ if (Array.isArray(relation)) {
32
+ return relation.map((item) => transformPrimitive(item, getId)).filter(Boolean);
33
+ }
34
+ return void 0;
35
+ };
36
+ const transformRelationIdsVisitor = (relation, getId) => {
37
+ const map = transformPrimitive(relation, getId);
38
+ if (map)
39
+ return map;
40
+ if (!_.isObject(relation))
41
+ return relation;
42
+ if ("set" in relation) {
43
+ relation.set = transformPrimitive(relation.set, getId);
44
+ }
45
+ if ("disconnect" in relation) {
46
+ relation.disconnect = transformPrimitive(relation.disconnect, getId);
47
+ }
48
+ if ("connect" in relation) {
49
+ relation.connect = transformPrimitive(relation.connect, getId);
50
+ const mapPosition = (relation2) => {
51
+ if (data.isShortHand(relation2) || !("position" in relation2))
52
+ return relation2;
53
+ const { position } = relation2;
54
+ if (position?.before) {
55
+ const { id } = transformPrimitive({ ...position, documentId: position.before }, getId);
56
+ position.before = id;
57
+ }
58
+ if (position?.after) {
59
+ const { id } = transformPrimitive({ ...position, documentId: position.after }, getId);
60
+ position.after = id;
61
+ }
62
+ return relation2;
63
+ };
64
+ if (Array.isArray(relation.connect)) {
65
+ relation.connect = relation.connect.map(mapPosition);
66
+ } else {
67
+ relation.connect = mapPosition(relation.connect);
68
+ }
69
+ }
70
+ return relation;
71
+ };
72
+ const EXCLUDED_FIELDS = [
73
+ "createdBy",
74
+ "updatedBy",
75
+ "localizations",
76
+ "strapi_stage",
77
+ "strapi_assignee"
78
+ ];
79
+ const transformDataIdsVisitor = (idMap, data2, opts) => {
80
+ return strapiUtils.traverseEntity(
81
+ ({ key, value, attribute }, { set }) => {
82
+ if (attribute.type === "relation") {
83
+ const target = attribute.target;
84
+ if (!target)
85
+ return;
86
+ if (EXCLUDED_FIELDS.includes(key))
87
+ return;
88
+ const getId = (documentId, locale) => {
89
+ const entryId = idMap.get({
90
+ uid: target,
91
+ documentId,
92
+ locale: i18n.getRelationTargetLocale(
93
+ { documentId, locale },
94
+ {
95
+ targetUid: target,
96
+ sourceUid: opts.uid,
97
+ sourceLocale: opts.locale
98
+ }
99
+ ),
100
+ isDraft: opts.isDraft
101
+ });
102
+ if (entryId)
103
+ return entryId;
104
+ if (opts.allowMissingId)
105
+ return null;
106
+ throw new strapiUtils.errors.ValidationError(`Document with id "${documentId}" not found`);
107
+ };
108
+ const newRelation = transformRelationIdsVisitor(value, getId);
109
+ set(key, newRelation);
110
+ }
111
+ },
112
+ { schema: strapi.getModel(opts.uid) },
113
+ data2
114
+ );
115
+ };
116
+ exports.transformDataIdsVisitor = transformDataIdsVisitor;
117
+ //# sourceMappingURL=data-ids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-ids.js","sources":["../../../../../../src/services/document-service/transform/relations/transform/data-ids.ts"],"sourcesContent":["import { isObject, isNil } from 'lodash/fp';\n\nimport { EntityService, Attribute, Common } from '@strapi/types';\nimport { traverseEntity, errors } from '@strapi/utils';\n\nimport { ShortHand, LongHand, ID, GetId } from '../utils/types';\nimport { isShortHand, isLongHand } from '../utils/data';\nimport { IdMap } from '../../id-map';\nimport { getRelationTargetLocale } from '../utils/i18n';\n\nconst isNumeric = (value: any): value is number => {\n if (Array.isArray(value)) return false; // Handle [1, 'docId'] case\n const parsed = parseInt(value, 10);\n return !Number.isNaN(parsed);\n};\n\nconst transformPrimitive = <T extends ShortHand | LongHand>(\n relation: T | T[] | null | undefined,\n getId: GetId\n): T | T[] | undefined => {\n // TODO: Remove this, we should use the long hand version with 'id' for this case\n // If id value is a number, return it as is, it's already an entry id\n if (isNumeric(relation)) {\n return relation;\n }\n\n // null\n if (isNil(relation)) {\n return relation as T | undefined;\n }\n\n // id\n if (isShortHand(relation)) {\n return getId(relation) as T;\n }\n\n // { id }\n if (isLongHand(relation)) {\n // If the id is already an entry id, return it as is\n if (!('documentId' in relation)) return relation;\n\n // @ts-expect-error - TODO: Add relation type\n const entryId = getId(relation.documentId, relation.locale) as T;\n\n // If the id is not found, return undefined\n if (!entryId) return undefined;\n\n return { ...(relation as object), id: entryId } as T;\n }\n\n // id[]\n if (Array.isArray(relation)) {\n return relation.map((item) => transformPrimitive(item, getId)).filter(Boolean) as T[];\n }\n return undefined;\n};\n\nconst transformRelationIdsVisitor = <T extends Attribute.RelationKind.Any>(\n relation: EntityService.Params.Attribute.RelationInputValue<T>,\n getId: GetId\n): EntityService.Params.Attribute.RelationInputValue<T> => {\n const map = transformPrimitive(relation as any, getId);\n if (map) return map;\n\n if (!isObject(relation)) return relation;\n\n // set: id[]\n // what if result of mapPrimitive is undefined?\n if ('set' in relation) {\n relation.set = transformPrimitive(relation.set as any, getId);\n }\n if ('disconnect' in relation) {\n relation.disconnect = transformPrimitive(relation.disconnect as any, getId);\n }\n\n if ('connect' in relation) {\n // connect: id[] | { id } | ...\n relation.connect = transformPrimitive(relation.connect as any, getId);\n\n const mapPosition = (relation: any) => {\n if (isShortHand(relation) || !('position' in relation)) return relation;\n\n const { position } = relation;\n\n // { connect: { id: id, position: { before: id } } }\n if (position?.before) {\n const { id } = transformPrimitive({ ...position, documentId: position.before }, getId);\n position.before = id;\n }\n\n // { connect: { id: id, position: { after: id } } }\n if (position?.after) {\n const { id } = transformPrimitive({ ...position, documentId: position.after }, getId);\n position.after = id;\n }\n\n return relation;\n };\n\n if (Array.isArray(relation.connect)) {\n relation.connect = relation.connect.map(mapPosition);\n } else {\n relation.connect = mapPosition(relation.connect);\n }\n }\n\n return relation;\n};\n\nconst EXCLUDED_FIELDS = [\n 'createdBy',\n 'updatedBy',\n 'localizations',\n 'strapi_stage',\n 'strapi_assignee',\n];\n\nconst transformDataIdsVisitor = (\n idMap: IdMap,\n data: Record<string, any>,\n opts: {\n uid: Common.UID.Schema;\n locale?: string | null;\n isDraft?: boolean;\n allowMissingId?: boolean; // Whether to ignore missing ids and not throw any error\n }\n) => {\n return traverseEntity(\n ({ key, value, attribute }, { set }) => {\n // Find relational attributes, and return the document ids\n if (attribute.type === 'relation') {\n const target = attribute.target;\n // TODO: Handle polymorphic relations\n if (!target) return;\n // TODO: Handle this differently\n if (EXCLUDED_FIELDS.includes(key)) return;\n\n const getId = (documentId: ID, locale?: string): ID | null => {\n const entryId = idMap.get({\n uid: target,\n documentId,\n locale: getRelationTargetLocale(\n { documentId, locale },\n {\n targetUid: target as Common.UID.Schema,\n sourceUid: opts.uid,\n sourceLocale: opts.locale,\n }\n ),\n isDraft: opts.isDraft,\n });\n\n if (entryId) return entryId;\n if (opts.allowMissingId) return null;\n\n throw new errors.ValidationError(`Document with id \"${documentId}\" not found`);\n };\n\n const newRelation = transformRelationIdsVisitor(value as any, getId);\n set(key, newRelation as any);\n }\n },\n { schema: strapi.getModel(opts.uid) },\n data\n );\n};\n\nexport { transformDataIdsVisitor };\n"],"names":["isNil","isShortHand","isLongHand","isObject","relation","data","traverseEntity","getRelationTargetLocale","errors"],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import { isObject, isNil } from "lodash/fp";
2
+ import { traverseEntity, errors } from "@strapi/utils";
3
+ import { isShortHand, isLongHand } from "../utils/data.mjs";
4
+ import { getRelationTargetLocale } from "../utils/i18n.mjs";
5
+ const isNumeric = (value) => {
6
+ if (Array.isArray(value))
7
+ return false;
8
+ const parsed = parseInt(value, 10);
9
+ return !Number.isNaN(parsed);
10
+ };
11
+ const transformPrimitive = (relation, getId) => {
12
+ if (isNumeric(relation)) {
13
+ return relation;
14
+ }
15
+ if (isNil(relation)) {
16
+ return relation;
17
+ }
18
+ if (isShortHand(relation)) {
19
+ return getId(relation);
20
+ }
21
+ if (isLongHand(relation)) {
22
+ if (!("documentId" in relation))
23
+ return relation;
24
+ const entryId = getId(relation.documentId, relation.locale);
25
+ if (!entryId)
26
+ return void 0;
27
+ return { ...relation, id: entryId };
28
+ }
29
+ if (Array.isArray(relation)) {
30
+ return relation.map((item) => transformPrimitive(item, getId)).filter(Boolean);
31
+ }
32
+ return void 0;
33
+ };
34
+ const transformRelationIdsVisitor = (relation, getId) => {
35
+ const map = transformPrimitive(relation, getId);
36
+ if (map)
37
+ return map;
38
+ if (!isObject(relation))
39
+ return relation;
40
+ if ("set" in relation) {
41
+ relation.set = transformPrimitive(relation.set, getId);
42
+ }
43
+ if ("disconnect" in relation) {
44
+ relation.disconnect = transformPrimitive(relation.disconnect, getId);
45
+ }
46
+ if ("connect" in relation) {
47
+ relation.connect = transformPrimitive(relation.connect, getId);
48
+ const mapPosition = (relation2) => {
49
+ if (isShortHand(relation2) || !("position" in relation2))
50
+ return relation2;
51
+ const { position } = relation2;
52
+ if (position?.before) {
53
+ const { id } = transformPrimitive({ ...position, documentId: position.before }, getId);
54
+ position.before = id;
55
+ }
56
+ if (position?.after) {
57
+ const { id } = transformPrimitive({ ...position, documentId: position.after }, getId);
58
+ position.after = id;
59
+ }
60
+ return relation2;
61
+ };
62
+ if (Array.isArray(relation.connect)) {
63
+ relation.connect = relation.connect.map(mapPosition);
64
+ } else {
65
+ relation.connect = mapPosition(relation.connect);
66
+ }
67
+ }
68
+ return relation;
69
+ };
70
+ const EXCLUDED_FIELDS = [
71
+ "createdBy",
72
+ "updatedBy",
73
+ "localizations",
74
+ "strapi_stage",
75
+ "strapi_assignee"
76
+ ];
77
+ const transformDataIdsVisitor = (idMap, data, opts) => {
78
+ return traverseEntity(
79
+ ({ key, value, attribute }, { set }) => {
80
+ if (attribute.type === "relation") {
81
+ const target = attribute.target;
82
+ if (!target)
83
+ return;
84
+ if (EXCLUDED_FIELDS.includes(key))
85
+ return;
86
+ const getId = (documentId, locale) => {
87
+ const entryId = idMap.get({
88
+ uid: target,
89
+ documentId,
90
+ locale: getRelationTargetLocale(
91
+ { documentId, locale },
92
+ {
93
+ targetUid: target,
94
+ sourceUid: opts.uid,
95
+ sourceLocale: opts.locale
96
+ }
97
+ ),
98
+ isDraft: opts.isDraft
99
+ });
100
+ if (entryId)
101
+ return entryId;
102
+ if (opts.allowMissingId)
103
+ return null;
104
+ throw new errors.ValidationError(`Document with id "${documentId}" not found`);
105
+ };
106
+ const newRelation = transformRelationIdsVisitor(value, getId);
107
+ set(key, newRelation);
108
+ }
109
+ },
110
+ { schema: strapi.getModel(opts.uid) },
111
+ data
112
+ );
113
+ };
114
+ export {
115
+ transformDataIdsVisitor
116
+ };
117
+ //# sourceMappingURL=data-ids.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-ids.mjs","sources":["../../../../../../src/services/document-service/transform/relations/transform/data-ids.ts"],"sourcesContent":["import { isObject, isNil } from 'lodash/fp';\n\nimport { EntityService, Attribute, Common } from '@strapi/types';\nimport { traverseEntity, errors } from '@strapi/utils';\n\nimport { ShortHand, LongHand, ID, GetId } from '../utils/types';\nimport { isShortHand, isLongHand } from '../utils/data';\nimport { IdMap } from '../../id-map';\nimport { getRelationTargetLocale } from '../utils/i18n';\n\nconst isNumeric = (value: any): value is number => {\n if (Array.isArray(value)) return false; // Handle [1, 'docId'] case\n const parsed = parseInt(value, 10);\n return !Number.isNaN(parsed);\n};\n\nconst transformPrimitive = <T extends ShortHand | LongHand>(\n relation: T | T[] | null | undefined,\n getId: GetId\n): T | T[] | undefined => {\n // TODO: Remove this, we should use the long hand version with 'id' for this case\n // If id value is a number, return it as is, it's already an entry id\n if (isNumeric(relation)) {\n return relation;\n }\n\n // null\n if (isNil(relation)) {\n return relation as T | undefined;\n }\n\n // id\n if (isShortHand(relation)) {\n return getId(relation) as T;\n }\n\n // { id }\n if (isLongHand(relation)) {\n // If the id is already an entry id, return it as is\n if (!('documentId' in relation)) return relation;\n\n // @ts-expect-error - TODO: Add relation type\n const entryId = getId(relation.documentId, relation.locale) as T;\n\n // If the id is not found, return undefined\n if (!entryId) return undefined;\n\n return { ...(relation as object), id: entryId } as T;\n }\n\n // id[]\n if (Array.isArray(relation)) {\n return relation.map((item) => transformPrimitive(item, getId)).filter(Boolean) as T[];\n }\n return undefined;\n};\n\nconst transformRelationIdsVisitor = <T extends Attribute.RelationKind.Any>(\n relation: EntityService.Params.Attribute.RelationInputValue<T>,\n getId: GetId\n): EntityService.Params.Attribute.RelationInputValue<T> => {\n const map = transformPrimitive(relation as any, getId);\n if (map) return map;\n\n if (!isObject(relation)) return relation;\n\n // set: id[]\n // what if result of mapPrimitive is undefined?\n if ('set' in relation) {\n relation.set = transformPrimitive(relation.set as any, getId);\n }\n if ('disconnect' in relation) {\n relation.disconnect = transformPrimitive(relation.disconnect as any, getId);\n }\n\n if ('connect' in relation) {\n // connect: id[] | { id } | ...\n relation.connect = transformPrimitive(relation.connect as any, getId);\n\n const mapPosition = (relation: any) => {\n if (isShortHand(relation) || !('position' in relation)) return relation;\n\n const { position } = relation;\n\n // { connect: { id: id, position: { before: id } } }\n if (position?.before) {\n const { id } = transformPrimitive({ ...position, documentId: position.before }, getId);\n position.before = id;\n }\n\n // { connect: { id: id, position: { after: id } } }\n if (position?.after) {\n const { id } = transformPrimitive({ ...position, documentId: position.after }, getId);\n position.after = id;\n }\n\n return relation;\n };\n\n if (Array.isArray(relation.connect)) {\n relation.connect = relation.connect.map(mapPosition);\n } else {\n relation.connect = mapPosition(relation.connect);\n }\n }\n\n return relation;\n};\n\nconst EXCLUDED_FIELDS = [\n 'createdBy',\n 'updatedBy',\n 'localizations',\n 'strapi_stage',\n 'strapi_assignee',\n];\n\nconst transformDataIdsVisitor = (\n idMap: IdMap,\n data: Record<string, any>,\n opts: {\n uid: Common.UID.Schema;\n locale?: string | null;\n isDraft?: boolean;\n allowMissingId?: boolean; // Whether to ignore missing ids and not throw any error\n }\n) => {\n return traverseEntity(\n ({ key, value, attribute }, { set }) => {\n // Find relational attributes, and return the document ids\n if (attribute.type === 'relation') {\n const target = attribute.target;\n // TODO: Handle polymorphic relations\n if (!target) return;\n // TODO: Handle this differently\n if (EXCLUDED_FIELDS.includes(key)) return;\n\n const getId = (documentId: ID, locale?: string): ID | null => {\n const entryId = idMap.get({\n uid: target,\n documentId,\n locale: getRelationTargetLocale(\n { documentId, locale },\n {\n targetUid: target as Common.UID.Schema,\n sourceUid: opts.uid,\n sourceLocale: opts.locale,\n }\n ),\n isDraft: opts.isDraft,\n });\n\n if (entryId) return entryId;\n if (opts.allowMissingId) return null;\n\n throw new errors.ValidationError(`Document with id \"${documentId}\" not found`);\n };\n\n const newRelation = transformRelationIdsVisitor(value as any, getId);\n set(key, newRelation as any);\n }\n },\n { schema: strapi.getModel(opts.uid) },\n data\n );\n};\n\nexport { transformDataIdsVisitor };\n"],"names":["relation"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { ID, LongHand } from './types';
2
+ export declare const isShortHand: (relation: any) => relation is ID;
3
+ export declare const isLongHand: (relation: any) => relation is LongHand;
4
+ //# sourceMappingURL=data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/utils/data.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEvC,eAAO,MAAM,WAAW,aAAc,GAAG,mBAExC,CAAC;AAEF,eAAO,MAAM,UAAU,aAAc,GAAG,yBAEvC,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const _ = require("lodash/fp");
4
+ const isShortHand = (relation) => {
5
+ return typeof relation === "string" || typeof relation === "number";
6
+ };
7
+ const isLongHand = (relation) => {
8
+ return _.isObject(relation) && ("id" in relation || "documentId" in relation);
9
+ };
10
+ exports.isLongHand = isLongHand;
11
+ exports.isShortHand = isShortHand;
12
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.js","sources":["../../../../../../src/services/document-service/transform/relations/utils/data.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { ID, LongHand } from './types';\n\nexport const isShortHand = (relation: any): relation is ID => {\n return typeof relation === 'string' || typeof relation === 'number';\n};\n\nexport const isLongHand = (relation: any): relation is LongHand => {\n return isObject(relation) && ('id' in relation || 'documentId' in relation);\n};\n"],"names":["isObject"],"mappings":";;;AAGa,MAAA,cAAc,CAAC,aAAkC;AAC5D,SAAO,OAAO,aAAa,YAAY,OAAO,aAAa;AAC7D;AAEa,MAAA,aAAa,CAAC,aAAwC;AACjE,SAAOA,EAAAA,SAAS,QAAQ,MAAM,QAAQ,YAAY,gBAAgB;AACpE;;;"}
@@ -0,0 +1,12 @@
1
+ import { isObject } from "lodash/fp";
2
+ const isShortHand = (relation) => {
3
+ return typeof relation === "string" || typeof relation === "number";
4
+ };
5
+ const isLongHand = (relation) => {
6
+ return isObject(relation) && ("id" in relation || "documentId" in relation);
7
+ };
8
+ export {
9
+ isLongHand,
10
+ isShortHand
11
+ };
12
+ //# sourceMappingURL=data.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.mjs","sources":["../../../../../../src/services/document-service/transform/relations/utils/data.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { ID, LongHand } from './types';\n\nexport const isShortHand = (relation: any): relation is ID => {\n return typeof relation === 'string' || typeof relation === 'number';\n};\n\nexport const isLongHand = (relation: any): relation is LongHand => {\n return isObject(relation) && ('id' in relation || 'documentId' in relation);\n};\n"],"names":[],"mappings":";AAGa,MAAA,cAAc,CAAC,aAAkC;AAC5D,SAAO,OAAO,aAAa,YAAY,OAAO,aAAa;AAC7D;AAEa,MAAA,aAAa,CAAC,aAAwC;AACjE,SAAO,SAAS,QAAQ,MAAM,QAAQ,YAAY,gBAAgB;AACpE;"}
@@ -0,0 +1,10 @@
1
+ import { Common } from '@strapi/types';
2
+ import { LongHandDocument } from './types';
3
+ export declare const isLocalizedContentType: (uid: Common.UID.Schema) => any;
4
+ export declare const getDefaultLocale: () => string;
5
+ export declare const getRelationTargetLocale: (relation: LongHandDocument, opts: {
6
+ targetUid: Common.UID.Schema;
7
+ sourceUid: Common.UID.Schema;
8
+ sourceLocale?: string | null;
9
+ }) => string | null;
10
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,sBAAsB,QAAS,OAAO,GAAG,CAAC,MAAM,QAG5D,CAAC;AAEF,eAAO,MAAM,gBAAgB,cAI5B,CAAC;AAEF,eAAO,MAAM,uBAAuB,aACxB,gBAAgB,QACpB;IACJ,SAAS,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IAC7B,SAAS,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,kBAuBF,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const strapiUtils = require("@strapi/utils");
4
+ const isLocalizedContentType = (uid) => {
5
+ const model = strapi.getModel(uid);
6
+ return strapi.plugin("i18n").service("content-types").isLocalizedContentType(model);
7
+ };
8
+ const getDefaultLocale = () => {
9
+ return "en";
10
+ };
11
+ const getRelationTargetLocale = (relation, opts) => {
12
+ const defaultLocale = getDefaultLocale();
13
+ const targetLocale = relation.locale || opts.sourceLocale || defaultLocale;
14
+ const isTargetLocalized = isLocalizedContentType(opts.targetUid);
15
+ const isSourceLocalized = isLocalizedContentType(opts.sourceUid);
16
+ if (isSourceLocalized && isTargetLocalized) {
17
+ if (targetLocale !== opts.sourceLocale) {
18
+ throw new strapiUtils.errors.ValidationError(
19
+ `Relation locale does not match the source locale ${JSON.stringify(relation)}`
20
+ );
21
+ }
22
+ }
23
+ if (isTargetLocalized) {
24
+ return targetLocale;
25
+ }
26
+ return null;
27
+ };
28
+ exports.getDefaultLocale = getDefaultLocale;
29
+ exports.getRelationTargetLocale = getRelationTargetLocale;
30
+ exports.isLocalizedContentType = isLocalizedContentType;
31
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport { LongHandDocument } from './types';\n\nexport const isLocalizedContentType = (uid: Common.UID.Schema) => {\n const model = strapi.getModel(uid);\n return strapi.plugin('i18n').service('content-types').isLocalizedContentType(model);\n};\n\nexport const getDefaultLocale = () => {\n // TODO: Fix this\n // return strapi.plugin('i18n').service('locales').getDefaultLocale();\n return 'en';\n};\n\nexport const getRelationTargetLocale = (\n relation: LongHandDocument,\n opts: {\n targetUid: Common.UID.Schema;\n sourceUid: Common.UID.Schema;\n sourceLocale?: string | null;\n }\n) => {\n const defaultLocale = getDefaultLocale();\n const targetLocale = relation.locale || opts.sourceLocale || defaultLocale;\n\n const isTargetLocalized = isLocalizedContentType(opts.targetUid);\n const isSourceLocalized = isLocalizedContentType(opts.sourceUid);\n\n // Locale validations\n if (isSourceLocalized && isTargetLocalized) {\n // Check the targetLocale matches\n if (targetLocale !== opts.sourceLocale) {\n throw new errors.ValidationError(\n `Relation locale does not match the source locale ${JSON.stringify(relation)}`\n );\n }\n }\n\n if (isTargetLocalized) {\n return targetLocale;\n }\n\n return null;\n};\n"],"names":["errors"],"mappings":";;;AAIa,MAAA,yBAAyB,CAAC,QAA2B;AAC1D,QAAA,QAAQ,OAAO,SAAS,GAAG;AAC1B,SAAA,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,KAAK;AACpF;AAEO,MAAM,mBAAmB,MAAM;AAG7B,SAAA;AACT;AAEa,MAAA,0BAA0B,CACrC,UACA,SAKG;AACH,QAAM,gBAAgB;AACtB,QAAM,eAAe,SAAS,UAAU,KAAK,gBAAgB;AAEvD,QAAA,oBAAoB,uBAAuB,KAAK,SAAS;AACzD,QAAA,oBAAoB,uBAAuB,KAAK,SAAS;AAG/D,MAAI,qBAAqB,mBAAmB;AAEtC,QAAA,iBAAiB,KAAK,cAAc;AACtC,YAAM,IAAIA,YAAO,OAAA;AAAA,QACf,oDAAoD,KAAK,UAAU,QAAQ,CAAC;AAAA,MAAA;AAAA,IAEhF;AAAA,EACF;AAEA,MAAI,mBAAmB;AACd,WAAA;AAAA,EACT;AAEO,SAAA;AACT;;;;"}
@@ -0,0 +1,31 @@
1
+ import { errors } from "@strapi/utils";
2
+ const isLocalizedContentType = (uid) => {
3
+ const model = strapi.getModel(uid);
4
+ return strapi.plugin("i18n").service("content-types").isLocalizedContentType(model);
5
+ };
6
+ const getDefaultLocale = () => {
7
+ return "en";
8
+ };
9
+ const getRelationTargetLocale = (relation, opts) => {
10
+ const defaultLocale = getDefaultLocale();
11
+ const targetLocale = relation.locale || opts.sourceLocale || defaultLocale;
12
+ const isTargetLocalized = isLocalizedContentType(opts.targetUid);
13
+ const isSourceLocalized = isLocalizedContentType(opts.sourceUid);
14
+ if (isSourceLocalized && isTargetLocalized) {
15
+ if (targetLocale !== opts.sourceLocale) {
16
+ throw new errors.ValidationError(
17
+ `Relation locale does not match the source locale ${JSON.stringify(relation)}`
18
+ );
19
+ }
20
+ }
21
+ if (isTargetLocalized) {
22
+ return targetLocale;
23
+ }
24
+ return null;
25
+ };
26
+ export {
27
+ getDefaultLocale,
28
+ getRelationTargetLocale,
29
+ isLocalizedContentType
30
+ };
31
+ //# sourceMappingURL=i18n.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.mjs","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport { LongHandDocument } from './types';\n\nexport const isLocalizedContentType = (uid: Common.UID.Schema) => {\n const model = strapi.getModel(uid);\n return strapi.plugin('i18n').service('content-types').isLocalizedContentType(model);\n};\n\nexport const getDefaultLocale = () => {\n // TODO: Fix this\n // return strapi.plugin('i18n').service('locales').getDefaultLocale();\n return 'en';\n};\n\nexport const getRelationTargetLocale = (\n relation: LongHandDocument,\n opts: {\n targetUid: Common.UID.Schema;\n sourceUid: Common.UID.Schema;\n sourceLocale?: string | null;\n }\n) => {\n const defaultLocale = getDefaultLocale();\n const targetLocale = relation.locale || opts.sourceLocale || defaultLocale;\n\n const isTargetLocalized = isLocalizedContentType(opts.targetUid);\n const isSourceLocalized = isLocalizedContentType(opts.sourceUid);\n\n // Locale validations\n if (isSourceLocalized && isTargetLocalized) {\n // Check the targetLocale matches\n if (targetLocale !== opts.sourceLocale) {\n throw new errors.ValidationError(\n `Relation locale does not match the source locale ${JSON.stringify(relation)}`\n );\n }\n }\n\n if (isTargetLocalized) {\n return targetLocale;\n }\n\n return null;\n};\n"],"names":[],"mappings":";AAIa,MAAA,yBAAyB,CAAC,QAA2B;AAC1D,QAAA,QAAQ,OAAO,SAAS,GAAG;AAC1B,SAAA,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,KAAK;AACpF;AAEO,MAAM,mBAAmB,MAAM;AAG7B,SAAA;AACT;AAEa,MAAA,0BAA0B,CACrC,UACA,SAKG;AACH,QAAM,gBAAgB;AACtB,QAAM,eAAe,SAAS,UAAU,KAAK,gBAAgB;AAEvD,QAAA,oBAAoB,uBAAuB,KAAK,SAAS;AACzD,QAAA,oBAAoB,uBAAuB,KAAK,SAAS;AAG/D,MAAI,qBAAqB,mBAAmB;AAEtC,QAAA,iBAAiB,KAAK,cAAc;AACtC,YAAM,IAAI,OAAO;AAAA,QACf,oDAAoD,KAAK,UAAU,QAAQ,CAAC;AAAA,MAAA;AAAA,IAEhF;AAAA,EACF;AAEA,MAAI,mBAAmB;AACd,WAAA;AAAA,EACT;AAEO,SAAA;AACT;"}
@@ -0,0 +1,12 @@
1
+ export type ID = string | number;
2
+ export type ShortHand = ID;
3
+ export type LongHandEntity = {
4
+ id: ID;
5
+ };
6
+ export type LongHandDocument = {
7
+ documentId: ID;
8
+ locale?: string;
9
+ };
10
+ export type LongHand = LongHandEntity | LongHandDocument;
11
+ export type GetId = (relation: ID) => ID | null;
12
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/utils/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;AACjC,MAAM,MAAM,SAAS,GAAG,EAAE,CAAC;AAE3B,MAAM,MAAM,cAAc,GAAG;IAAE,EAAE,EAAE,EAAE,CAAA;CAAE,CAAC;AACxC,MAAM,MAAM,gBAAgB,GAAG;IAAE,UAAU,EAAE,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACnE,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAEzD,MAAM,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Common } from '@strapi/types';
2
+ import { type ID } from './relations/utils/types';
3
+ export type Data = {
4
+ id?: ID | object;
5
+ documentId?: ID | object;
6
+ [key: string]: any;
7
+ };
8
+ export type Options = {
9
+ uid: Common.UID.Schema;
10
+ locale?: string | null;
11
+ isDraft: boolean;
12
+ };
13
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/services/document-service/transform/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAElD,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Common } from '@strapi/types';
2
+ export declare const getDeepPopulate: (uid: Common.UID.Schema) => any;
3
+ //# sourceMappingURL=populate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"populate.d.ts","sourceRoot":"","sources":["../../../../src/services/document-service/utils/populate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAIvC,eAAO,MAAM,eAAe,QAAS,OAAO,GAAG,CAAC,MAAM,QA8CrD,CAAC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const strapiUtils = require("@strapi/utils");
4
+ const getDeepPopulate = (uid) => {
5
+ const model = strapi.getModel(uid);
6
+ const attributes = Object.entries(model.attributes);
7
+ return attributes.reduce((acc, [attributeName, attribute]) => {
8
+ switch (attribute.type) {
9
+ case "relation": {
10
+ const isVisible = strapiUtils.contentTypes.isVisibleAttribute(model, attributeName);
11
+ if (isVisible) {
12
+ acc[attributeName] = { fields: ["document_id", "locale"] };
13
+ }
14
+ break;
15
+ }
16
+ case "media": {
17
+ acc[attributeName] = { fields: ["id"] };
18
+ break;
19
+ }
20
+ case "component": {
21
+ const populate = getDeepPopulate(attribute.component);
22
+ acc[attributeName] = { populate };
23
+ break;
24
+ }
25
+ case "dynamiczone": {
26
+ const populatedComponents = (attribute.components || []).reduce(
27
+ (acc2, componentUID) => {
28
+ acc2[componentUID] = { populate: getDeepPopulate(componentUID) };
29
+ return acc2;
30
+ },
31
+ {}
32
+ );
33
+ acc[attributeName] = { on: populatedComponents };
34
+ break;
35
+ }
36
+ }
37
+ return acc;
38
+ }, {});
39
+ };
40
+ exports.getDeepPopulate = getDeepPopulate;
41
+ //# sourceMappingURL=populate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"populate.js","sources":["../../../../src/services/document-service/utils/populate.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\n// We want to build a populate object based on the schema\nexport const getDeepPopulate = (uid: Common.UID.Schema) => {\n const model = strapi.getModel(uid);\n const attributes = Object.entries(model.attributes);\n\n return attributes.reduce((acc: any, [attributeName, attribute]) => {\n switch (attribute.type) {\n case 'relation': {\n // TODO: Should this just be a plain list?\n // Ignore createdBy, updatedBy, ...\n const isVisible = contentTypes.isVisibleAttribute(model, attributeName);\n if (isVisible) {\n acc[attributeName] = { fields: ['document_id', 'locale'] };\n }\n break;\n }\n\n case 'media': {\n acc[attributeName] = { fields: ['id'] };\n break;\n }\n\n case 'component': {\n const populate = getDeepPopulate(attribute.component);\n acc[attributeName] = { populate };\n break;\n }\n\n case 'dynamiczone': {\n // Use fragments to populate the dynamic zone components\n const populatedComponents = (attribute.components || []).reduce(\n (acc: any, componentUID: Common.UID.Component) => {\n acc[componentUID] = { populate: getDeepPopulate(componentUID) };\n return acc;\n },\n {}\n );\n\n acc[attributeName] = { on: populatedComponents };\n break;\n }\n default:\n break;\n }\n\n return acc;\n }, {});\n};\n"],"names":["contentTypes","acc"],"mappings":";;;AAIa,MAAA,kBAAkB,CAAC,QAA2B;AACnD,QAAA,QAAQ,OAAO,SAAS,GAAG;AACjC,QAAM,aAAa,OAAO,QAAQ,MAAM,UAAU;AAElD,SAAO,WAAW,OAAO,CAAC,KAAU,CAAC,eAAe,SAAS,MAAM;AACjE,YAAQ,UAAU,MAAM;AAAA,MACtB,KAAK,YAAY;AAGf,cAAM,YAAYA,YAAA,aAAa,mBAAmB,OAAO,aAAa;AACtE,YAAI,WAAW;AACb,cAAI,aAAa,IAAI,EAAE,QAAQ,CAAC,eAAe,QAAQ;QACzD;AACA;AAAA,MACF;AAAA,MAEA,KAAK,SAAS;AACZ,YAAI,aAAa,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;AACtC;AAAA,MACF;AAAA,MAEA,KAAK,aAAa;AACV,cAAA,WAAW,gBAAgB,UAAU,SAAS;AAChD,YAAA,aAAa,IAAI,EAAE;AACvB;AAAA,MACF;AAAA,MAEA,KAAK,eAAe;AAElB,cAAM,uBAAuB,UAAU,cAAc,CAAI,GAAA;AAAA,UACvD,CAACC,MAAU,iBAAuC;AAChDA,iBAAI,YAAY,IAAI,EAAE,UAAU,gBAAgB,YAAY;AACrDA,mBAAAA;AAAAA,UACT;AAAA,UACA,CAAC;AAAA,QAAA;AAGH,YAAI,aAAa,IAAI,EAAE,IAAI,oBAAoB;AAC/C;AAAA,MACF;AAAA,IAGF;AAEO,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;;"}