@strapi/core 0.0.0-experimental.90ca9123352ed07e0a9cedaf4bcad1475e74137f → 0.0.0-experimental.a407f3bc8fb79a53cf7975140864526b6ddbac4b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/dist/core-api/controller/collection-type.js.map +1 -1
  2. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  3. package/dist/core-api/controller/single-type.js.map +1 -1
  4. package/dist/core-api/controller/single-type.mjs.map +1 -1
  5. package/dist/core-api/controller/transform.js +2 -2
  6. package/dist/core-api/controller/transform.js.map +1 -1
  7. package/dist/core-api/controller/transform.mjs +2 -2
  8. package/dist/core-api/controller/transform.mjs.map +1 -1
  9. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  10. package/dist/core-api/service/collection-type.js.map +1 -1
  11. package/dist/core-api/service/collection-type.mjs.map +1 -1
  12. package/dist/core-api/service/single-type.d.ts +3 -2
  13. package/dist/core-api/service/single-type.d.ts.map +1 -1
  14. package/dist/core-api/service/single-type.js +15 -3
  15. package/dist/core-api/service/single-type.js.map +1 -1
  16. package/dist/core-api/service/single-type.mjs +15 -3
  17. package/dist/core-api/service/single-type.mjs.map +1 -1
  18. package/dist/services/document-service/common.d.ts +2 -2
  19. package/dist/services/document-service/common.d.ts.map +1 -1
  20. package/dist/services/document-service/common.js.map +1 -1
  21. package/dist/services/document-service/common.mjs.map +1 -1
  22. package/dist/services/document-service/document-engine.d.ts.map +1 -1
  23. package/dist/services/document-service/document-engine.js +12 -20
  24. package/dist/services/document-service/document-engine.js.map +1 -1
  25. package/dist/services/document-service/document-engine.mjs +13 -21
  26. package/dist/services/document-service/document-engine.mjs.map +1 -1
  27. package/dist/services/document-service/index.d.ts.map +1 -1
  28. package/dist/services/document-service/index.js +4 -4
  29. package/dist/services/document-service/index.js.map +1 -1
  30. package/dist/services/document-service/index.mjs +2 -2
  31. package/dist/services/document-service/index.mjs.map +1 -1
  32. package/dist/services/document-service/internationalization.d.ts +2 -1
  33. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  34. package/dist/services/document-service/internationalization.js +14 -0
  35. package/dist/services/document-service/internationalization.js.map +1 -1
  36. package/dist/services/document-service/internationalization.mjs +15 -1
  37. package/dist/services/document-service/internationalization.mjs.map +1 -1
  38. package/dist/services/document-service/repositories/content-type.d.ts +3 -0
  39. package/dist/services/document-service/repositories/content-type.d.ts.map +1 -0
  40. package/dist/services/document-service/{collection-type.js → repositories/content-type.js} +27 -33
  41. package/dist/services/document-service/repositories/content-type.js.map +1 -0
  42. package/dist/services/document-service/{collection-type.mjs → repositories/content-type.mjs} +27 -33
  43. package/dist/services/document-service/repositories/content-type.mjs.map +1 -0
  44. package/dist/services/document-service/transform/fields.d.ts.map +1 -1
  45. package/dist/services/document-service/transform/fields.js +11 -10
  46. package/dist/services/document-service/transform/fields.js.map +1 -1
  47. package/dist/services/document-service/transform/fields.mjs +11 -10
  48. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  49. package/dist/services/document-service/transform/id-transform.d.ts +2 -9
  50. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  51. package/dist/services/document-service/transform/id-transform.js +2 -32
  52. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  53. package/dist/services/document-service/transform/id-transform.mjs +2 -32
  54. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  55. package/dist/services/document-service/transform/populate.d.ts.map +1 -1
  56. package/dist/services/document-service/transform/populate.js +0 -10
  57. package/dist/services/document-service/transform/populate.js.map +1 -1
  58. package/dist/services/document-service/transform/populate.mjs +0 -10
  59. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  60. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  61. package/dist/services/document-service/transform/relations/extract/data-ids.js +7 -4
  62. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  63. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +7 -4
  64. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  65. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  66. package/dist/services/document-service/transform/relations/transform/data-ids.js +11 -9
  67. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  68. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +11 -9
  69. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  70. package/dist/services/document-service/transform/relations/utils/data.d.ts +2 -4
  71. package/dist/services/document-service/transform/relations/utils/data.d.ts.map +1 -1
  72. package/dist/services/document-service/transform/relations/utils/data.js +1 -1
  73. package/dist/services/document-service/transform/relations/utils/data.js.map +1 -1
  74. package/dist/services/document-service/transform/relations/utils/data.mjs +1 -1
  75. package/dist/services/document-service/transform/relations/utils/data.mjs.map +1 -1
  76. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +2 -2
  77. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  78. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  79. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  80. package/dist/services/document-service/transform/relations/utils/types.d.ts +5 -1
  81. package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -1
  82. package/dist/utils/transform-content-types-to-models.d.ts +174 -3
  83. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  84. package/dist/utils/transform-content-types-to-models.js +80 -41
  85. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  86. package/dist/utils/transform-content-types-to-models.mjs +79 -41
  87. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  88. package/package.json +14 -14
  89. package/dist/services/document-service/collection-type.d.ts +0 -4
  90. package/dist/services/document-service/collection-type.d.ts.map +0 -1
  91. package/dist/services/document-service/collection-type.js.map +0 -1
  92. package/dist/services/document-service/collection-type.mjs.map +0 -1
  93. package/dist/services/document-service/repository-factory.d.ts +0 -3
  94. package/dist/services/document-service/repository-factory.d.ts.map +0 -1
  95. package/dist/services/document-service/repository-factory.js +0 -12
  96. package/dist/services/document-service/repository-factory.js.map +0 -1
  97. package/dist/services/document-service/repository-factory.mjs +0 -12
  98. package/dist/services/document-service/repository-factory.mjs.map +0 -1
  99. package/dist/services/document-service/single-type.d.ts +0 -4
  100. package/dist/services/document-service/single-type.d.ts.map +0 -1
  101. package/dist/services/document-service/single-type.js +0 -92
  102. package/dist/services/document-service/single-type.js.map +0 -1
  103. package/dist/services/document-service/single-type.mjs +0 -92
  104. package/dist/services/document-service/single-type.mjs.map +0 -1
  105. package/dist/services/document-service/transform/filters.js +0 -49
  106. package/dist/services/document-service/transform/filters.js.map +0 -1
  107. package/dist/services/document-service/transform/filters.mjs +0 -49
  108. package/dist/services/document-service/transform/filters.mjs.map +0 -1
  109. package/dist/services/document-service/transform/relations/transform/output-ids.js +0 -26
  110. package/dist/services/document-service/transform/relations/transform/output-ids.js.map +0 -1
  111. package/dist/services/document-service/transform/relations/transform/output-ids.mjs +0 -26
  112. package/dist/services/document-service/transform/relations/transform/output-ids.mjs.map +0 -1
  113. package/dist/services/document-service/transform/sort.js +0 -44
  114. package/dist/services/document-service/transform/sort.js.map +0 -1
  115. package/dist/services/document-service/transform/sort.mjs +0 -44
  116. package/dist/services/document-service/transform/sort.mjs.map +0 -1
  117. package/dist/services/document-service/transform/utils.js +0 -23
  118. package/dist/services/document-service/transform/utils.js.map +0 -1
  119. package/dist/services/document-service/transform/utils.mjs +0 -23
  120. package/dist/services/document-service/transform/utils.mjs.map +0 -1
@@ -1,11 +1,11 @@
1
1
  import { omit } from "lodash/fp";
2
2
  import { pipeAsync } from "@strapi/utils";
3
- import { wrapInTransaction } from "./common.mjs";
4
- import createDocumentEngine from "./document-engine.mjs";
5
- import { defaultToDraft, statusToLookup, setStatusToDraft, statusToData, filterDataPublishedAt } from "./draft-and-publish.mjs";
6
- import { defaultLocale as defaultLocaleCurry, localeToLookup as localeToLookupCurry, localeToData as localeToDataCurry } from "./internationalization.mjs";
7
- const createCollectionTypeRepository = (contentType) => {
8
- const { uid } = contentType;
3
+ import { wrapInTransaction } from "../common.mjs";
4
+ import createDocumentEngine from "../document-engine.mjs";
5
+ import { defaultToDraft, statusToLookup, setStatusToDraft, statusToData, filterDataPublishedAt } from "../draft-and-publish.mjs";
6
+ import { defaultLocale as defaultLocaleCurry, localeToLookup as localeToLookupCurry, multiLocaleToLookup as multiLocaleToLookupCurry, localeToData as localeToDataCurry } from "../internationalization.mjs";
7
+ const createContentTypeRepository = (uid) => {
8
+ const contentType = strapi.contentType(uid);
9
9
  const documents = createDocumentEngine({ strapi, db: strapi?.db });
10
10
  async function findMany(params = {}) {
11
11
  const queryParams = await pipeAsync(
@@ -35,7 +35,11 @@ const createCollectionTypeRepository = (contentType) => {
35
35
  return documents.findOne(uid, id, queryParams);
36
36
  }
37
37
  async function deleteFn(id, params = {}) {
38
- const queryParams = await pipeAsync(omit("status"), localeToLookupCurry(contentType))(params);
38
+ const queryParams = await pipeAsync(
39
+ omit("status"),
40
+ defaultLocaleCurry(contentType),
41
+ multiLocaleToLookupCurry(contentType)
42
+ )(params);
39
43
  return documents.delete(uid, id, queryParams);
40
44
  }
41
45
  async function create(params = {}) {
@@ -48,14 +52,7 @@ const createCollectionTypeRepository = (contentType) => {
48
52
  )(params);
49
53
  const doc = await documents.create(uid, queryParams);
50
54
  if (params.status === "published") {
51
- return documents.create(uid, {
52
- ...queryParams,
53
- data: {
54
- ...queryParams.data,
55
- documentId: doc.id,
56
- publishedAt: params?.data?.publishedAt ?? /* @__PURE__ */ new Date()
57
- }
58
- });
55
+ return publish(doc.documentId, params).then((doc2) => doc2.versions[0]);
59
56
  }
60
57
  return doc;
61
58
  }
@@ -88,19 +85,7 @@ const createCollectionTypeRepository = (contentType) => {
88
85
  }
89
86
  }
90
87
  if (updatedDraft && params.status === "published") {
91
- await documents.delete(uid, id, {
92
- ...queryParams,
93
- status: "published",
94
- lookup: { ...params?.lookup, publishedAt: { $notNull: true } }
95
- });
96
- return documents.create(uid, {
97
- ...queryParams,
98
- data: {
99
- ...queryParams.data,
100
- documentId: updatedDraft.id,
101
- publishedAt: params?.data?.publishedAt ?? /* @__PURE__ */ new Date()
102
- }
103
- });
88
+ return publish(id, params).then((doc) => doc.versions[0]);
104
89
  }
105
90
  return updatedDraft;
106
91
  }
@@ -114,15 +99,24 @@ const createCollectionTypeRepository = (contentType) => {
114
99
  return documents.count(uid, queryParams);
115
100
  }
116
101
  async function publish(id, params = {}) {
117
- const queryParams = localeToLookupCurry(contentType, params);
102
+ const queryParams = await pipeAsync(
103
+ defaultLocaleCurry(contentType),
104
+ multiLocaleToLookupCurry(contentType)
105
+ )(params);
118
106
  return documents.publish(uid, id, queryParams);
119
107
  }
120
108
  async function unpublish(id, params = {}) {
121
- const queryParams = localeToLookupCurry(contentType, params);
109
+ const queryParams = await pipeAsync(
110
+ defaultLocaleCurry(contentType),
111
+ multiLocaleToLookupCurry(contentType)
112
+ )(params);
122
113
  return documents.unpublish(uid, id, queryParams);
123
114
  }
124
115
  async function discardDraft(id, params = {}) {
125
- const queryParams = localeToLookupCurry(contentType, params);
116
+ const queryParams = await pipeAsync(
117
+ defaultLocaleCurry(contentType),
118
+ multiLocaleToLookupCurry(contentType)
119
+ )(params);
126
120
  return documents.discardDraft(uid, id, queryParams);
127
121
  }
128
122
  return {
@@ -140,6 +134,6 @@ const createCollectionTypeRepository = (contentType) => {
140
134
  };
141
135
  };
142
136
  export {
143
- createCollectionTypeRepository
137
+ createContentTypeRepository
144
138
  };
145
- //# sourceMappingURL=collection-type.mjs.map
139
+ //# sourceMappingURL=content-type.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-type.mjs","sources":["../../../../src/services/document-service/repositories/content-type.ts"],"sourcesContent":["import { omit } from 'lodash/fp';\n\nimport { pipeAsync } from '@strapi/utils';\n\nimport { wrapInTransaction, type RepositoryFactoryMethod } from '../common';\nimport createDocumentEngine from '../document-engine';\nimport * as DP from '../draft-and-publish';\nimport * as i18n from '../internationalization';\n\nexport const createContentTypeRepository: RepositoryFactoryMethod = (uid) => {\n const contentType = strapi.contentType(uid);\n\n // TODO: move the code back into here instead of using the document-engine\n const documents = createDocumentEngine({ strapi, db: strapi?.db });\n\n async function findMany(params = {} as any) {\n // TODO: replace with chaining\n const queryParams = await pipeAsync(\n DP.defaultToDraft,\n DP.statusToLookup,\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.findMany(uid, queryParams);\n }\n\n async function findFirst(params = {} as any) {\n const queryParams = await pipeAsync(\n DP.defaultToDraft,\n DP.statusToLookup,\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.findFirst(uid, queryParams);\n }\n\n async function findOne(id: string, params = {} as any) {\n const queryParams = await pipeAsync(\n DP.defaultToDraft,\n DP.statusToLookup,\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.findOne(uid, id, queryParams);\n }\n\n async function deleteFn(id: string, params = {} as any) {\n const queryParams = await pipeAsync(\n omit('status'),\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n return documents.delete(uid, id, queryParams);\n }\n\n async function create(params = {} as any) {\n const queryParams = await pipeAsync(\n DP.setStatusToDraft,\n DP.statusToData,\n DP.filterDataPublishedAt,\n i18n.defaultLocale(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const doc = await documents.create(uid, queryParams);\n\n if (params.status === 'published') {\n return publish(doc.documentId, params).then((doc) => doc.versions[0]);\n }\n\n return doc;\n }\n\n async function clone(id: string, params = {} as any) {\n const queryParams = await pipeAsync(\n DP.filterDataPublishedAt,\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.clone(uid, id, queryParams);\n }\n\n async function update(id: string, params = {} as any) {\n const queryParams = await pipeAsync(\n DP.setStatusToDraft,\n DP.statusToLookup,\n DP.statusToData,\n DP.filterDataPublishedAt,\n // Default locale will be set if not provided\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n let updatedDraft: any = await documents.update(uid, id, queryParams);\n\n if (!updatedDraft) {\n const documentExists = await strapi.db\n .query(contentType.uid)\n .findOne({ where: { documentId: id } });\n\n if (documentExists) {\n updatedDraft = await create({\n ...queryParams,\n data: { ...queryParams.data, documentId: id },\n });\n }\n }\n\n if (updatedDraft && params.status === 'published') {\n return publish(id, params).then((doc) => doc.versions[0]);\n }\n\n return updatedDraft;\n }\n\n async function count(params = {} as any) {\n const queryParams = await pipeAsync(\n DP.defaultToDraft,\n DP.statusToLookup,\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType)\n )(params);\n\n return documents.count(uid, queryParams);\n }\n\n async function publish(id: string, params = {} as any) {\n const queryParams = await pipeAsync(\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n return documents.publish(uid, id, queryParams);\n }\n\n async function unpublish(id: string, params = {} as any) {\n const queryParams = await pipeAsync(\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n return documents.unpublish(uid, id, queryParams);\n }\n\n async function discardDraft(id: string, params = {} as any) {\n const queryParams = await pipeAsync(\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n return documents.discardDraft(uid, id, queryParams);\n }\n\n return {\n findMany: wrapInTransaction(findMany),\n findFirst: wrapInTransaction(findFirst),\n findOne: wrapInTransaction(findOne),\n delete: wrapInTransaction(deleteFn),\n create: wrapInTransaction(create),\n clone: wrapInTransaction(clone),\n update: wrapInTransaction(update),\n count: wrapInTransaction(count),\n publish: wrapInTransaction(publish),\n unpublish: wrapInTransaction(unpublish),\n discardDraft: wrapInTransaction(discardDraft),\n };\n};\n"],"names":["DP.defaultToDraft","DP.statusToLookup","i18n.defaultLocale","i18n.localeToLookup","i18n.multiLocaleToLookup","DP.setStatusToDraft","DP.statusToData","DP.filterDataPublishedAt","i18n.localeToData","doc"],"mappings":";;;;;;AASa,MAAA,8BAAuD,CAAC,QAAQ;AACrE,QAAA,cAAc,OAAO,YAAY,GAAG;AAG1C,QAAM,YAAY,qBAAqB,EAAE,QAAQ,IAAI,QAAQ,IAAI;AAElD,iBAAA,SAAS,SAAS,IAAW;AAE1C,UAAM,cAAc,MAAM;AAAA,MACxBA;AAAAA,MACAC;AAAAA,MACAC,mBAAmB,WAAW;AAAA,MAC9BC,oBAAoB,WAAW;AAAA,MAC/B,MAAM;AAED,WAAA,UAAU,SAAS,KAAK,WAAW;AAAA,EAC5C;AAEe,iBAAA,UAAU,SAAS,IAAW;AAC3C,UAAM,cAAc,MAAM;AAAA,MACxBH;AAAAA,MACAC;AAAAA,MACAC,mBAAmB,WAAW;AAAA,MAC9BC,oBAAoB,WAAW;AAAA,MAC/B,MAAM;AAED,WAAA,UAAU,UAAU,KAAK,WAAW;AAAA,EAC7C;AAEA,iBAAe,QAAQ,IAAY,SAAS,IAAW;AACrD,UAAM,cAAc,MAAM;AAAA,MACxBH;AAAAA,MACAC;AAAAA,MACAC,mBAAmB,WAAW;AAAA,MAC9BC,oBAAoB,WAAW;AAAA,MAC/B,MAAM;AAER,WAAO,UAAU,QAAQ,KAAK,IAAI,WAAW;AAAA,EAC/C;AAEA,iBAAe,SAAS,IAAY,SAAS,IAAW;AACtD,UAAM,cAAc,MAAM;AAAA,MACxB,KAAK,QAAQ;AAAA,MACbD,mBAAmB,WAAW;AAAA,MAC9BE,yBAAyB,WAAW;AAAA,MACpC,MAAM;AAER,WAAO,UAAU,OAAO,KAAK,IAAI,WAAW;AAAA,EAC9C;AAEe,iBAAA,OAAO,SAAS,IAAW;AACxC,UAAM,cAAc,MAAM;AAAA,MACxBC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAL,mBAAmB,WAAW;AAAA,MAC9BM,kBAAkB,WAAW;AAAA,MAC7B,MAAM;AAER,UAAM,MAAM,MAAM,UAAU,OAAO,KAAK,WAAW;AAE/C,QAAA,OAAO,WAAW,aAAa;AAC1B,aAAA,QAAQ,IAAI,YAAY,MAAM,EAAE,KAAK,CAACC,SAAQA,KAAI,SAAS,CAAC,CAAC;AAAA,IACtE;AAEO,WAAA;AAAA,EACT;AAEA,iBAAe,MAAM,IAAY,SAAS,IAAW;AACnD,UAAM,cAAc,MAAM;AAAA,MACxBF;AAAAA,MACAJ,oBAAoB,WAAW;AAAA,MAC/B,MAAM;AAER,WAAO,UAAU,MAAM,KAAK,IAAI,WAAW;AAAA,EAC7C;AAEA,iBAAe,OAAO,IAAY,SAAS,IAAW;AACpD,UAAM,cAAc,MAAM;AAAA,MACxBE;AAAAA,MACAJ;AAAAA,MACAK;AAAAA,MACAC;AAAAA;AAAAA,MAEAL,mBAAmB,WAAW;AAAA,MAC9BC,oBAAoB,WAAW;AAAA,MAC/BK,kBAAkB,WAAW;AAAA,MAC7B,MAAM;AAER,QAAI,eAAoB,MAAM,UAAU,OAAO,KAAK,IAAI,WAAW;AAEnE,QAAI,CAAC,cAAc;AACjB,YAAM,iBAAiB,MAAM,OAAO,GACjC,MAAM,YAAY,GAAG,EACrB,QAAQ,EAAE,OAAO,EAAE,YAAY,GAAA,EAAM,CAAA;AAExC,UAAI,gBAAgB;AAClB,uBAAe,MAAM,OAAO;AAAA,UAC1B,GAAG;AAAA,UACH,MAAM,EAAE,GAAG,YAAY,MAAM,YAAY,GAAG;AAAA,QAAA,CAC7C;AAAA,MACH;AAAA,IACF;AAEI,QAAA,gBAAgB,OAAO,WAAW,aAAa;AAC1C,aAAA,QAAQ,IAAI,MAAM,EAAE,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC;AAAA,IAC1D;AAEO,WAAA;AAAA,EACT;AAEe,iBAAA,MAAM,SAAS,IAAW;AACvC,UAAM,cAAc,MAAM;AAAA,MACxBR;AAAAA,MACAC;AAAAA,MACAC,mBAAmB,WAAW;AAAA,MAC9BC,oBAAoB,WAAW;AAAA,MAC/B,MAAM;AAED,WAAA,UAAU,MAAM,KAAK,WAAW;AAAA,EACzC;AAEA,iBAAe,QAAQ,IAAY,SAAS,IAAW;AACrD,UAAM,cAAc,MAAM;AAAA,MACxBD,mBAAmB,WAAW;AAAA,MAC9BE,yBAAyB,WAAW;AAAA,MACpC,MAAM;AAER,WAAO,UAAU,QAAQ,KAAK,IAAI,WAAW;AAAA,EAC/C;AAEA,iBAAe,UAAU,IAAY,SAAS,IAAW;AACvD,UAAM,cAAc,MAAM;AAAA,MACxBF,mBAAmB,WAAW;AAAA,MAC9BE,yBAAyB,WAAW;AAAA,MACpC,MAAM;AAER,WAAO,UAAU,UAAU,KAAK,IAAI,WAAW;AAAA,EACjD;AAEA,iBAAe,aAAa,IAAY,SAAS,IAAW;AAC1D,UAAM,cAAc,MAAM;AAAA,MACxBF,mBAAmB,WAAW;AAAA,MAC9BE,yBAAyB,WAAW;AAAA,MACpC,MAAM;AAER,WAAO,UAAU,aAAa,KAAK,IAAI,WAAW;AAAA,EACpD;AAEO,SAAA;AAAA,IACL,UAAU,kBAAkB,QAAQ;AAAA,IACpC,WAAW,kBAAkB,SAAS;AAAA,IACtC,SAAS,kBAAkB,OAAO;AAAA,IAClC,QAAQ,kBAAkB,QAAQ;AAAA,IAClC,QAAQ,kBAAkB,MAAM;AAAA,IAChC,OAAO,kBAAkB,KAAK;AAAA,IAC9B,QAAQ,kBAAkB,MAAM;AAAA,IAChC,OAAO,kBAAkB,KAAK;AAAA,IAC9B,SAAS,kBAAkB,OAAO;AAAA,IAClC,WAAW,kBAAkB,SAAS;AAAA,IACtC,cAAc,kBAAkB,YAAY;AAAA,EAAA;AAEhD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../../src/services/document-service/transform/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAElD,KAAK,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE3E,eAAO,MAAM,eAAe,WAAY,MAAM,KAAG,MA+BhD,CAAC"}
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../../src/services/document-service/transform/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAElD,KAAK,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE3E,eAAO,MAAM,eAAe,WAAY,MAAM,KAAG,MAgChD,CAAC"}
@@ -2,22 +2,23 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const transformFields = (fields) => {
4
4
  if (typeof fields === "string") {
5
- if (fields === "*")
5
+ if (fields === "*") {
6
6
  return fields;
7
- if (fields === "documentId" || fields.startsWith("documentId,"))
8
- return fields;
9
- if (fields === "id")
7
+ }
8
+ if (fields === "") {
10
9
  return "documentId";
11
- return [fields, "documentId"];
10
+ }
11
+ if (!fields.split(",").includes("documentId")) {
12
+ return `${fields},documentId`;
13
+ }
12
14
  }
13
- if (!fields || fields.length === 0) {
15
+ if (!fields || !Array.isArray(fields)) {
14
16
  return fields;
15
17
  }
16
- const mappedFields = fields.map((field) => field === "id" ? "documentId" : field);
17
- if (!mappedFields.includes("documentId")) {
18
- mappedFields.push("documentId");
18
+ if (!fields.includes("documentId")) {
19
+ fields.push("documentId");
19
20
  }
20
- return mappedFields;
21
+ return fields;
21
22
  };
22
23
  exports.transformFields = transformFields;
23
24
  //# sourceMappingURL=fields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sources":["../../../../src/services/document-service/transform/fields.ts"],"sourcesContent":["import { Documents, Common } from '@strapi/types';\n\ntype Fields = Documents.Params.Pick<Common.UID.Schema, 'fields'>['fields'];\n\nexport const transformFields = (fields: Fields): Fields => {\n // If it's a string, and it doesn't contain documentId, should be an array\n // '*' => '*'\n // 'documentId' => 'documentId' , 'documentId,name' => 'documentId,name'\n // 'name' => ['name', 'documentId']\n // 'id' => 'documentId'\n if (typeof fields === 'string') {\n if (fields === '*') return fields;\n if (fields === 'documentId' || fields.startsWith('documentId,')) return fields;\n if (fields === 'id') return 'documentId';\n return [fields, 'documentId'];\n }\n\n // It's an array\n // [] => []\n if (!fields || fields.length === 0) {\n // If fields is empty, return it as is\n return fields;\n }\n\n // Map any id fields to documentId\n // ['id', 'name'] => ['documentId', 'name']\n const mappedFields = fields.map((field) => (field === 'id' ? 'documentId' : field));\n\n // Ensure we are always selecting the documentId\n // ['name', 'description'] => ['name', 'description', 'documentId']\n if (!mappedFields.includes('documentId')) {\n mappedFields.push('documentId');\n }\n\n return mappedFields;\n};\n"],"names":[],"mappings":";;AAIa,MAAA,kBAAkB,CAAC,WAA2B;AAMrD,MAAA,OAAO,WAAW,UAAU;AAC9B,QAAI,WAAW;AAAY,aAAA;AAC3B,QAAI,WAAW,gBAAgB,OAAO,WAAW,aAAa;AAAU,aAAA;AACxE,QAAI,WAAW;AAAa,aAAA;AACrB,WAAA,CAAC,QAAQ,YAAY;AAAA,EAC9B;AAIA,MAAI,CAAC,UAAU,OAAO,WAAW,GAAG;AAE3B,WAAA;AAAA,EACT;AAIM,QAAA,eAAe,OAAO,IAAI,CAAC,UAAW,UAAU,OAAO,eAAe,KAAM;AAIlF,MAAI,CAAC,aAAa,SAAS,YAAY,GAAG;AACxC,iBAAa,KAAK,YAAY;AAAA,EAChC;AAEO,SAAA;AACT;;"}
1
+ {"version":3,"file":"fields.js","sources":["../../../../src/services/document-service/transform/fields.ts"],"sourcesContent":["import { Documents, Common } from '@strapi/types';\n\ntype Fields = Documents.Params.Pick<Common.UID.Schema, 'fields'>['fields'];\n\nexport const transformFields = (fields: Fields): Fields => {\n // If it's a string, and it doesn't contain documentId, should be an array\n if (typeof fields === 'string') {\n // '*' => '*'\n if (fields === '*') {\n return fields;\n }\n\n // '' => 'documentId'\n if (fields === '') {\n return 'documentId';\n }\n\n // 'name,description' => 'name,description,documentId'\n if (!fields.split(',').includes('documentId')) {\n return `${fields},documentId`;\n }\n }\n\n // It's not an array, ignore it\n if (!fields || !Array.isArray(fields)) {\n // If fields is empty, return it as is\n return fields;\n }\n\n // Ensure we are always selecting the documentId\n // ['name', 'description'] => ['name', 'description', 'documentId']\n if (!fields.includes('documentId')) {\n fields.push('documentId');\n }\n\n return fields;\n};\n"],"names":[],"mappings":";;AAIa,MAAA,kBAAkB,CAAC,WAA2B;AAErD,MAAA,OAAO,WAAW,UAAU;AAE9B,QAAI,WAAW,KAAK;AACX,aAAA;AAAA,IACT;AAGA,QAAI,WAAW,IAAI;AACV,aAAA;AAAA,IACT;AAGA,QAAI,CAAC,OAAO,MAAM,GAAG,EAAE,SAAS,YAAY,GAAG;AAC7C,aAAO,GAAG,MAAM;AAAA,IAClB;AAAA,EACF;AAGA,MAAI,CAAC,UAAU,CAAC,MAAM,QAAQ,MAAM,GAAG;AAE9B,WAAA;AAAA,EACT;AAIA,MAAI,CAAC,OAAO,SAAS,YAAY,GAAG;AAClC,WAAO,KAAK,YAAY;AAAA,EAC1B;AAEO,SAAA;AACT;;"}
@@ -1,21 +1,22 @@
1
1
  const transformFields = (fields) => {
2
2
  if (typeof fields === "string") {
3
- if (fields === "*")
3
+ if (fields === "*") {
4
4
  return fields;
5
- if (fields === "documentId" || fields.startsWith("documentId,"))
6
- return fields;
7
- if (fields === "id")
5
+ }
6
+ if (fields === "") {
8
7
  return "documentId";
9
- return [fields, "documentId"];
8
+ }
9
+ if (!fields.split(",").includes("documentId")) {
10
+ return `${fields},documentId`;
11
+ }
10
12
  }
11
- if (!fields || fields.length === 0) {
13
+ if (!fields || !Array.isArray(fields)) {
12
14
  return fields;
13
15
  }
14
- const mappedFields = fields.map((field) => field === "id" ? "documentId" : field);
15
- if (!mappedFields.includes("documentId")) {
16
- mappedFields.push("documentId");
16
+ if (!fields.includes("documentId")) {
17
+ fields.push("documentId");
17
18
  }
18
- return mappedFields;
19
+ return fields;
19
20
  };
20
21
  export {
21
22
  transformFields
@@ -1 +1 @@
1
- {"version":3,"file":"fields.mjs","sources":["../../../../src/services/document-service/transform/fields.ts"],"sourcesContent":["import { Documents, Common } from '@strapi/types';\n\ntype Fields = Documents.Params.Pick<Common.UID.Schema, 'fields'>['fields'];\n\nexport const transformFields = (fields: Fields): Fields => {\n // If it's a string, and it doesn't contain documentId, should be an array\n // '*' => '*'\n // 'documentId' => 'documentId' , 'documentId,name' => 'documentId,name'\n // 'name' => ['name', 'documentId']\n // 'id' => 'documentId'\n if (typeof fields === 'string') {\n if (fields === '*') return fields;\n if (fields === 'documentId' || fields.startsWith('documentId,')) return fields;\n if (fields === 'id') return 'documentId';\n return [fields, 'documentId'];\n }\n\n // It's an array\n // [] => []\n if (!fields || fields.length === 0) {\n // If fields is empty, return it as is\n return fields;\n }\n\n // Map any id fields to documentId\n // ['id', 'name'] => ['documentId', 'name']\n const mappedFields = fields.map((field) => (field === 'id' ? 'documentId' : field));\n\n // Ensure we are always selecting the documentId\n // ['name', 'description'] => ['name', 'description', 'documentId']\n if (!mappedFields.includes('documentId')) {\n mappedFields.push('documentId');\n }\n\n return mappedFields;\n};\n"],"names":[],"mappings":"AAIa,MAAA,kBAAkB,CAAC,WAA2B;AAMrD,MAAA,OAAO,WAAW,UAAU;AAC9B,QAAI,WAAW;AAAY,aAAA;AAC3B,QAAI,WAAW,gBAAgB,OAAO,WAAW,aAAa;AAAU,aAAA;AACxE,QAAI,WAAW;AAAa,aAAA;AACrB,WAAA,CAAC,QAAQ,YAAY;AAAA,EAC9B;AAIA,MAAI,CAAC,UAAU,OAAO,WAAW,GAAG;AAE3B,WAAA;AAAA,EACT;AAIM,QAAA,eAAe,OAAO,IAAI,CAAC,UAAW,UAAU,OAAO,eAAe,KAAM;AAIlF,MAAI,CAAC,aAAa,SAAS,YAAY,GAAG;AACxC,iBAAa,KAAK,YAAY;AAAA,EAChC;AAEO,SAAA;AACT;"}
1
+ {"version":3,"file":"fields.mjs","sources":["../../../../src/services/document-service/transform/fields.ts"],"sourcesContent":["import { Documents, Common } from '@strapi/types';\n\ntype Fields = Documents.Params.Pick<Common.UID.Schema, 'fields'>['fields'];\n\nexport const transformFields = (fields: Fields): Fields => {\n // If it's a string, and it doesn't contain documentId, should be an array\n if (typeof fields === 'string') {\n // '*' => '*'\n if (fields === '*') {\n return fields;\n }\n\n // '' => 'documentId'\n if (fields === '') {\n return 'documentId';\n }\n\n // 'name,description' => 'name,description,documentId'\n if (!fields.split(',').includes('documentId')) {\n return `${fields},documentId`;\n }\n }\n\n // It's not an array, ignore it\n if (!fields || !Array.isArray(fields)) {\n // If fields is empty, return it as is\n return fields;\n }\n\n // Ensure we are always selecting the documentId\n // ['name', 'description'] => ['name', 'description', 'documentId']\n if (!fields.includes('documentId')) {\n fields.push('documentId');\n }\n\n return fields;\n};\n"],"names":[],"mappings":"AAIa,MAAA,kBAAkB,CAAC,WAA2B;AAErD,MAAA,OAAO,WAAW,UAAU;AAE9B,QAAI,WAAW,KAAK;AACX,aAAA;AAAA,IACT;AAGA,QAAI,WAAW,IAAI;AACV,aAAA;AAAA,IACT;AAGA,QAAI,CAAC,OAAO,MAAM,GAAG,EAAE,SAAS,YAAY,GAAG;AAC7C,aAAO,GAAG,MAAM;AAAA,IAClB;AAAA,EACF;AAGA,MAAI,CAAC,UAAU,CAAC,MAAM,QAAQ,MAAM,GAAG;AAE9B,WAAA;AAAA,EACT;AAIA,MAAI,CAAC,OAAO,SAAS,YAAY,GAAG;AAClC,WAAO,KAAK,YAAY;AAAA,EAC1B;AAEO,SAAA;AACT;"}
@@ -5,22 +5,15 @@ import { Common } from '@strapi/types';
5
5
  declare function transformParamsDocumentId(uid: Common.UID.Schema, input: {
6
6
  data?: any;
7
7
  fields?: any;
8
- filters?: any;
9
8
  populate?: any;
10
- sort?: any;
9
+ [key: string]: any;
11
10
  }, opts: {
12
11
  locale?: string | null;
13
12
  isDraft: boolean;
14
13
  }): Promise<{
15
14
  data: any;
16
15
  fields: any;
17
- filters: any;
18
16
  populate: any;
19
- sort: any;
20
17
  }>;
21
- /**
22
- * Transform response of a query to map entity ids to document ids.
23
- */
24
- declare function transformOutputDocumentId(uid: Common.UID.Schema, output: Record<string, any> | Record<string, any>[]): Promise<any>;
25
- export { transformParamsDocumentId, transformOutputDocumentId };
18
+ export { transformParamsDocumentId };
26
19
  //# sourceMappingURL=id-transform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"id-transform.d.ts","sourceRoot":"","sources":["../../../../src/services/document-service/transform/id-transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAWvC;;GAEG;AACH,iBAAe,yBAAyB,CACtC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EACtB,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAC;IAAC,OAAO,CAAC,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAA;CAAE,EAC9E,IAAI,EAAE;IACJ,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;;;;;;GAoCF;AAED;;GAEG;AACH,iBAAe,yBAAyB,CACtC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,gBAepD;AAED,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,CAAC"}
1
+ {"version":3,"file":"id-transform.d.ts","sourceRoot":"","sources":["../../../../src/services/document-service/transform/id-transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAKvC;;GAEG;AACH,iBAAe,yBAAyB,CACtC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EACtB,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EACvE,IAAI,EAAE;IACJ,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;;;;GAyBF;AAED,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
@@ -1,14 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const strapiUtils = require("@strapi/utils");
4
- const _ = require("lodash/fp");
5
- const outputIds = require("./relations/transform/output-ids.js");
6
- const utils = require("./utils.js");
7
- const filters = require("./filters.js");
8
- const sort = require("./sort.js");
3
+ const data = require("./data.js");
9
4
  const fields = require("./fields.js");
10
5
  const populate = require("./populate.js");
11
- const data = require("./data.js");
12
6
  async function transformParamsDocumentId(uid, input, opts) {
13
7
  let data$1 = input.data;
14
8
  if (input.data) {
@@ -18,40 +12,16 @@ async function transformParamsDocumentId(uid, input, opts) {
18
12
  if (input.fields) {
19
13
  fields$1 = fields.transformFields(input.fields);
20
14
  }
21
- let filters$1 = input.filters;
22
- if (input.filters) {
23
- filters$1 = await filters.transformFilters(input.filters, { ...opts, uid });
24
- }
25
15
  let populate$1 = input.populate;
26
16
  if (input.populate) {
27
17
  populate$1 = await populate.transformPopulate(input.populate, { ...opts, uid });
28
18
  }
29
- let sort$1 = input.sort;
30
- if (input.sort) {
31
- sort$1 = await sort.transformSort(input.sort, { ...opts, uid });
32
- }
33
19
  return {
34
20
  ...input,
35
21
  data: data$1,
36
22
  fields: fields$1,
37
- filters: filters$1,
38
- populate: populate$1,
39
- sort: sort$1
23
+ populate: populate$1
40
24
  };
41
25
  }
42
- async function transformOutputDocumentId(uid, output) {
43
- if (Array.isArray(output)) {
44
- return strapiUtils.mapAsync(output, (o) => transformOutputDocumentId(uid, o));
45
- }
46
- if (!_.isObject(output) || !output?.documentId)
47
- return output;
48
- return strapiUtils.pipeAsync(
49
- // Switch top level id -> documentId
50
- utils.switchIdForDocumentId,
51
- // Switch relations id -> documentId
52
- (output2) => outputIds.transformOutputIds(uid, output2)
53
- )(output);
54
- }
55
- exports.transformOutputDocumentId = transformOutputDocumentId;
56
26
  exports.transformParamsDocumentId = transformParamsDocumentId;
57
27
  //# sourceMappingURL=id-transform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"id-transform.js","sources":["../../../../src/services/document-service/transform/id-transform.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { mapAsync, pipeAsync } from '@strapi/utils';\nimport { isObject } from 'lodash/fp';\nimport { transformOutputIds as transformRelationOutputIds } from './relations/transform/output-ids';\nimport { switchIdForDocumentId } from './utils';\nimport { transformFilters } from './filters';\nimport { transformSort } from './sort';\nimport { transformFields } from './fields';\nimport { transformPopulate } from './populate';\nimport { transformData } from './data';\n\n/**\n * Transform input of a query to map document ids to entity ids.\n */\nasync function transformParamsDocumentId(\n uid: Common.UID.Schema,\n input: { data?: any; fields?: any; filters?: any; populate?: any; sort?: any },\n opts: {\n locale?: string | null;\n isDraft: boolean;\n }\n) {\n let data = input.data;\n if (input.data) {\n data = await transformData(input.data, { ...opts, uid });\n }\n\n // Transform any relation ids to entity ids\n let fields = input.fields;\n if (input.fields) {\n fields = transformFields(input.fields);\n }\n\n let filters = input.filters;\n if (input.filters) {\n filters = await transformFilters(input.filters, { ...opts, uid });\n }\n\n let populate = input.populate;\n if (input.populate) {\n populate = await transformPopulate(input.populate, { ...opts, uid });\n }\n\n let sort = input.sort;\n if (input.sort) {\n sort = await transformSort(input.sort, { ...opts, uid });\n }\n\n return {\n ...input,\n data,\n fields,\n filters,\n populate,\n sort,\n };\n}\n\n/**\n * Transform response of a query to map entity ids to document ids.\n */\nasync function transformOutputDocumentId(\n uid: Common.UID.Schema,\n output: Record<string, any> | Record<string, any>[]\n) {\n if (Array.isArray(output)) {\n return mapAsync(output, (o: Record<string, any>) => transformOutputDocumentId(uid, o));\n }\n\n // TODO: Ensure we always have documentId on output\n if (!isObject(output) || !output?.documentId) return output;\n\n return pipeAsync(\n // Switch top level id -> documentId\n switchIdForDocumentId,\n // Switch relations id -> documentId\n (output) => transformRelationOutputIds(uid, output)\n )(output);\n}\n\nexport { transformParamsDocumentId, transformOutputDocumentId };\n"],"names":["data","transformData","fields","transformFields","filters","transformFilters","populate","transformPopulate","sort","transformSort","mapAsync","isObject","pipeAsync","switchIdForDocumentId","output","transformRelationOutputIds"],"mappings":";;;;;;;;;;;AAcA,eAAe,0BACb,KACA,OACA,MAIA;AACA,MAAIA,SAAO,MAAM;AACjB,MAAI,MAAM,MAAM;AACPA,aAAA,MAAMC,mBAAc,MAAM,MAAM,EAAE,GAAG,MAAM,KAAK;AAAA,EACzD;AAGA,MAAIC,WAAS,MAAM;AACnB,MAAI,MAAM,QAAQ;AACPA,eAAAC,OAAA,gBAAgB,MAAM,MAAM;AAAA,EACvC;AAEA,MAAIC,YAAU,MAAM;AACpB,MAAI,MAAM,SAAS;AACPA,gBAAA,MAAMC,yBAAiB,MAAM,SAAS,EAAE,GAAG,MAAM,KAAK;AAAA,EAClE;AAEA,MAAIC,aAAW,MAAM;AACrB,MAAI,MAAM,UAAU;AACPA,iBAAA,MAAMC,2BAAkB,MAAM,UAAU,EAAE,GAAG,MAAM,KAAK;AAAA,EACrE;AAEA,MAAIC,SAAO,MAAM;AACjB,MAAI,MAAM,MAAM;AACPA,aAAA,MAAMC,mBAAc,MAAM,MAAM,EAAE,GAAG,MAAM,KAAK;AAAA,EACzD;AAEO,SAAA;AAAA,IACL,GAAG;AAAA,IAAA,MACHT;AAAAA,IAAA,QACAE;AAAAA,IAAA,SACAE;AAAAA,IAAA,UACAE;AAAAA,IAAA,MACAE;AAAAA,EAAA;AAEJ;AAKA,eAAe,0BACb,KACA,QACA;AACI,MAAA,MAAM,QAAQ,MAAM,GAAG;AACzB,WAAOE,YAAAA,SAAS,QAAQ,CAAC,MAA2B,0BAA0B,KAAK,CAAC,CAAC;AAAA,EACvF;AAGA,MAAI,CAACC,EAAAA,SAAS,MAAM,KAAK,CAAC,QAAQ;AAAmB,WAAA;AAE9C,SAAAC,YAAA;AAAA;AAAA,IAELC,MAAA;AAAA;AAAA,IAEA,CAACC,YAAWC,UAAAA,mBAA2B,KAAKD,OAAM;AAAA,IAClD,MAAM;AACV;;;"}
1
+ {"version":3,"file":"id-transform.js","sources":["../../../../src/services/document-service/transform/id-transform.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { transformData } from './data';\nimport { transformFields } from './fields';\nimport { transformPopulate } from './populate';\n\n/**\n * Transform input of a query to map document ids to entity ids.\n */\nasync function transformParamsDocumentId(\n uid: Common.UID.Schema,\n input: { data?: any; fields?: any; populate?: any; [key: string]: any },\n opts: {\n locale?: string | null;\n isDraft: boolean;\n }\n) {\n // Transform relational documentIds to entity ids\n let data = input.data;\n if (input.data) {\n data = await transformData(input.data, { ...opts, uid });\n }\n\n // Make sure documentId is always present in the response\n let fields = input.fields;\n if (input.fields) {\n fields = transformFields(input.fields);\n }\n\n let populate = input.populate;\n if (input.populate) {\n populate = await transformPopulate(input.populate, { ...opts, uid });\n }\n\n return {\n ...input,\n data,\n fields,\n populate,\n };\n}\n\nexport { transformParamsDocumentId };\n"],"names":["data","transformData","fields","transformFields","populate","transformPopulate"],"mappings":";;;;;AAQA,eAAe,0BACb,KACA,OACA,MAIA;AAEA,MAAIA,SAAO,MAAM;AACjB,MAAI,MAAM,MAAM;AACPA,aAAA,MAAMC,mBAAc,MAAM,MAAM,EAAE,GAAG,MAAM,KAAK;AAAA,EACzD;AAGA,MAAIC,WAAS,MAAM;AACnB,MAAI,MAAM,QAAQ;AACPA,eAAAC,OAAA,gBAAgB,MAAM,MAAM;AAAA,EACvC;AAEA,MAAIC,aAAW,MAAM;AACrB,MAAI,MAAM,UAAU;AACPA,iBAAA,MAAMC,2BAAkB,MAAM,UAAU,EAAE,GAAG,MAAM,KAAK;AAAA,EACrE;AAEO,SAAA;AAAA,IACL,GAAG;AAAA,IAAA,MACHL;AAAAA,IAAA,QACAE;AAAAA,IAAA,UACAE;AAAAA,EAAA;AAEJ;;"}
@@ -1,12 +1,6 @@
1
- import { mapAsync, pipeAsync } from "@strapi/utils";
2
- import { isObject } from "lodash/fp";
3
- import { transformOutputIds } from "./relations/transform/output-ids.mjs";
4
- import { switchIdForDocumentId } from "./utils.mjs";
5
- import { transformFilters } from "./filters.mjs";
6
- import { transformSort } from "./sort.mjs";
1
+ import { transformData } from "./data.mjs";
7
2
  import { transformFields } from "./fields.mjs";
8
3
  import { transformPopulate } from "./populate.mjs";
9
- import { transformData } from "./data.mjs";
10
4
  async function transformParamsDocumentId(uid, input, opts) {
11
5
  let data = input.data;
12
6
  if (input.data) {
@@ -16,42 +10,18 @@ async function transformParamsDocumentId(uid, input, opts) {
16
10
  if (input.fields) {
17
11
  fields = transformFields(input.fields);
18
12
  }
19
- let filters = input.filters;
20
- if (input.filters) {
21
- filters = await transformFilters(input.filters, { ...opts, uid });
22
- }
23
13
  let populate = input.populate;
24
14
  if (input.populate) {
25
15
  populate = await transformPopulate(input.populate, { ...opts, uid });
26
16
  }
27
- let sort = input.sort;
28
- if (input.sort) {
29
- sort = await transformSort(input.sort, { ...opts, uid });
30
- }
31
17
  return {
32
18
  ...input,
33
19
  data,
34
20
  fields,
35
- filters,
36
- populate,
37
- sort
21
+ populate
38
22
  };
39
23
  }
40
- async function transformOutputDocumentId(uid, output) {
41
- if (Array.isArray(output)) {
42
- return mapAsync(output, (o) => transformOutputDocumentId(uid, o));
43
- }
44
- if (!isObject(output) || !output?.documentId)
45
- return output;
46
- return pipeAsync(
47
- // Switch top level id -> documentId
48
- switchIdForDocumentId,
49
- // Switch relations id -> documentId
50
- (output2) => transformOutputIds(uid, output2)
51
- )(output);
52
- }
53
24
  export {
54
- transformOutputDocumentId,
55
25
  transformParamsDocumentId
56
26
  };
57
27
  //# sourceMappingURL=id-transform.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"id-transform.mjs","sources":["../../../../src/services/document-service/transform/id-transform.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { mapAsync, pipeAsync } from '@strapi/utils';\nimport { isObject } from 'lodash/fp';\nimport { transformOutputIds as transformRelationOutputIds } from './relations/transform/output-ids';\nimport { switchIdForDocumentId } from './utils';\nimport { transformFilters } from './filters';\nimport { transformSort } from './sort';\nimport { transformFields } from './fields';\nimport { transformPopulate } from './populate';\nimport { transformData } from './data';\n\n/**\n * Transform input of a query to map document ids to entity ids.\n */\nasync function transformParamsDocumentId(\n uid: Common.UID.Schema,\n input: { data?: any; fields?: any; filters?: any; populate?: any; sort?: any },\n opts: {\n locale?: string | null;\n isDraft: boolean;\n }\n) {\n let data = input.data;\n if (input.data) {\n data = await transformData(input.data, { ...opts, uid });\n }\n\n // Transform any relation ids to entity ids\n let fields = input.fields;\n if (input.fields) {\n fields = transformFields(input.fields);\n }\n\n let filters = input.filters;\n if (input.filters) {\n filters = await transformFilters(input.filters, { ...opts, uid });\n }\n\n let populate = input.populate;\n if (input.populate) {\n populate = await transformPopulate(input.populate, { ...opts, uid });\n }\n\n let sort = input.sort;\n if (input.sort) {\n sort = await transformSort(input.sort, { ...opts, uid });\n }\n\n return {\n ...input,\n data,\n fields,\n filters,\n populate,\n sort,\n };\n}\n\n/**\n * Transform response of a query to map entity ids to document ids.\n */\nasync function transformOutputDocumentId(\n uid: Common.UID.Schema,\n output: Record<string, any> | Record<string, any>[]\n) {\n if (Array.isArray(output)) {\n return mapAsync(output, (o: Record<string, any>) => transformOutputDocumentId(uid, o));\n }\n\n // TODO: Ensure we always have documentId on output\n if (!isObject(output) || !output?.documentId) return output;\n\n return pipeAsync(\n // Switch top level id -> documentId\n switchIdForDocumentId,\n // Switch relations id -> documentId\n (output) => transformRelationOutputIds(uid, output)\n )(output);\n}\n\nexport { transformParamsDocumentId, transformOutputDocumentId };\n"],"names":["output","transformRelationOutputIds"],"mappings":";;;;;;;;;AAcA,eAAe,0BACb,KACA,OACA,MAIA;AACA,MAAI,OAAO,MAAM;AACjB,MAAI,MAAM,MAAM;AACP,WAAA,MAAM,cAAc,MAAM,MAAM,EAAE,GAAG,MAAM,KAAK;AAAA,EACzD;AAGA,MAAI,SAAS,MAAM;AACnB,MAAI,MAAM,QAAQ;AACP,aAAA,gBAAgB,MAAM,MAAM;AAAA,EACvC;AAEA,MAAI,UAAU,MAAM;AACpB,MAAI,MAAM,SAAS;AACP,cAAA,MAAM,iBAAiB,MAAM,SAAS,EAAE,GAAG,MAAM,KAAK;AAAA,EAClE;AAEA,MAAI,WAAW,MAAM;AACrB,MAAI,MAAM,UAAU;AACP,eAAA,MAAM,kBAAkB,MAAM,UAAU,EAAE,GAAG,MAAM,KAAK;AAAA,EACrE;AAEA,MAAI,OAAO,MAAM;AACjB,MAAI,MAAM,MAAM;AACP,WAAA,MAAM,cAAc,MAAM,MAAM,EAAE,GAAG,MAAM,KAAK;AAAA,EACzD;AAEO,SAAA;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAKA,eAAe,0BACb,KACA,QACA;AACI,MAAA,MAAM,QAAQ,MAAM,GAAG;AACzB,WAAO,SAAS,QAAQ,CAAC,MAA2B,0BAA0B,KAAK,CAAC,CAAC;AAAA,EACvF;AAGA,MAAI,CAAC,SAAS,MAAM,KAAK,CAAC,QAAQ;AAAmB,WAAA;AAE9C,SAAA;AAAA;AAAA,IAEL;AAAA;AAAA,IAEA,CAACA,YAAWC,mBAA2B,KAAKD,OAAM;AAAA,IAClD,MAAM;AACV;"}
1
+ {"version":3,"file":"id-transform.mjs","sources":["../../../../src/services/document-service/transform/id-transform.ts"],"sourcesContent":["import { Common } from '@strapi/types';\nimport { transformData } from './data';\nimport { transformFields } from './fields';\nimport { transformPopulate } from './populate';\n\n/**\n * Transform input of a query to map document ids to entity ids.\n */\nasync function transformParamsDocumentId(\n uid: Common.UID.Schema,\n input: { data?: any; fields?: any; populate?: any; [key: string]: any },\n opts: {\n locale?: string | null;\n isDraft: boolean;\n }\n) {\n // Transform relational documentIds to entity ids\n let data = input.data;\n if (input.data) {\n data = await transformData(input.data, { ...opts, uid });\n }\n\n // Make sure documentId is always present in the response\n let fields = input.fields;\n if (input.fields) {\n fields = transformFields(input.fields);\n }\n\n let populate = input.populate;\n if (input.populate) {\n populate = await transformPopulate(input.populate, { ...opts, uid });\n }\n\n return {\n ...input,\n data,\n fields,\n populate,\n };\n}\n\nexport { transformParamsDocumentId };\n"],"names":[],"mappings":";;;AAQA,eAAe,0BACb,KACA,OACA,MAIA;AAEA,MAAI,OAAO,MAAM;AACjB,MAAI,MAAM,MAAM;AACP,WAAA,MAAM,cAAc,MAAM,MAAM,EAAE,GAAG,MAAM,KAAK;AAAA,EACzD;AAGA,MAAI,SAAS,MAAM;AACnB,MAAI,MAAM,QAAQ;AACP,aAAA,gBAAgB,MAAM,MAAM;AAAA,EACvC;AAEA,MAAI,WAAW,MAAM;AACrB,MAAI,MAAM,UAAU;AACP,eAAA,MAAM,kBAAkB,MAAM,UAAU,EAAE,GAAG,MAAM,KAAK;AAAA,EACrE;AAEO,SAAA;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"populate.d.ts","sourceRoot":"","sources":["../../../../src/services/document-service/transform/populate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAKlD,eAAO,MAAM,iBAAiB,SAAgB,IAAI,QAAQ,OAAO,qBAkChE,CAAC"}
1
+ {"version":3,"file":"populate.d.ts","sourceRoot":"","sources":["../../../../src/services/document-service/transform/populate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlD,eAAO,MAAM,iBAAiB,SAAgB,IAAI,QAAQ,OAAO,qBAqBhE,CAAC"}
@@ -1,23 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const strapiUtils = require("@strapi/utils");
4
- const utils = require("./utils.js");
5
- const filters = require("./filters.js");
6
4
  const fields = require("./fields.js");
7
5
  const transformPopulate = async (data, opts) => {
8
- utils.switchDocumentIdForId(data);
9
- const allKeysAreDocumentId = Object.keys(data).every((key) => key === "documentId");
10
- if (allKeysAreDocumentId) {
11
- return data;
12
- }
13
6
  return strapiUtils.traverse.traverseQueryPopulate(
14
7
  async ({ attribute, key, value }, { set }) => {
15
8
  if (!value || typeof value !== "object" || attribute?.type !== "relation") {
16
9
  return;
17
10
  }
18
- if ("filters" in value) {
19
- value.filters = await filters.transformFilters(value.filters, opts);
20
- }
21
11
  if ("fields" in value && Array.isArray(value.fields)) {
22
12
  value.fields = fields.transformFields(value.fields);
23
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"populate.js","sources":["../../../../src/services/document-service/transform/populate.ts"],"sourcesContent":["import { traverse } from '@strapi/utils';\nimport { type Data, type Options } from './types';\nimport { switchDocumentIdForId } from './utils';\nimport { transformFilters } from './filters';\nimport { transformFields } from './fields';\n\nexport const transformPopulate = async (data: Data, opts: Options) => {\n // Before doing the filters traversal change any top level 'id' properties to 'documentId'\n switchDocumentIdForId(data);\n\n const allKeysAreDocumentId = Object.keys(data).every((key) => key === 'documentId');\n if (allKeysAreDocumentId) {\n // If every key is a documentId, skip the traversal\n return data;\n }\n\n return traverse.traverseQueryPopulate(\n async ({ attribute, key, value }, { set }) => {\n if (!value || typeof value !== 'object' || attribute?.type !== 'relation') {\n return;\n }\n\n /*\n If the attribute is a relation\n Look for filters or fields in the value \n and apply the relevant transformation to these objects\n */\n if ('filters' in value) {\n value.filters = await transformFilters(value.filters as Data, opts);\n }\n\n if ('fields' in value && Array.isArray(value.fields)) {\n value.fields = transformFields(value.fields);\n }\n\n set(key, value);\n },\n { schema: strapi.getModel(opts.uid) },\n data\n );\n};\n"],"names":["switchDocumentIdForId","traverse","transformFilters","transformFields"],"mappings":";;;;;;AAMa,MAAA,oBAAoB,OAAO,MAAY,SAAkB;AAEpEA,QAAA,sBAAsB,IAAI;AAEpB,QAAA,uBAAuB,OAAO,KAAK,IAAI,EAAE,MAAM,CAAC,QAAQ,QAAQ,YAAY;AAClF,MAAI,sBAAsB;AAEjB,WAAA;AAAA,EACT;AAEA,SAAOC,YAAS,SAAA;AAAA,IACd,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,UAAU;AAC5C,UAAI,CAAC,SAAS,OAAO,UAAU,YAAY,WAAW,SAAS,YAAY;AACzE;AAAA,MACF;AAOA,UAAI,aAAa,OAAO;AACtB,cAAM,UAAU,MAAMC,QAAAA,iBAAiB,MAAM,SAAiB,IAAI;AAAA,MACpE;AAEA,UAAI,YAAY,SAAS,MAAM,QAAQ,MAAM,MAAM,GAAG;AAC9C,cAAA,SAASC,OAAAA,gBAAgB,MAAM,MAAM;AAAA,MAC7C;AAEA,UAAI,KAAK,KAAK;AAAA,IAChB;AAAA,IACA,EAAE,QAAQ,OAAO,SAAS,KAAK,GAAG,EAAE;AAAA,IACpC;AAAA,EAAA;AAEJ;;"}
1
+ {"version":3,"file":"populate.js","sources":["../../../../src/services/document-service/transform/populate.ts"],"sourcesContent":["import { traverse } from '@strapi/utils';\nimport { type Data, type Options } from './types';\nimport { transformFields } from './fields';\n\nexport const transformPopulate = async (data: Data, opts: Options) => {\n return traverse.traverseQueryPopulate(\n async ({ attribute, key, value }, { set }) => {\n if (!value || typeof value !== 'object' || attribute?.type !== 'relation') {\n return;\n }\n\n /*\n If the attribute is a relation\n Look for fields in the value\n and apply the relevant transformation to these objects\n */\n if ('fields' in value && Array.isArray(value.fields)) {\n value.fields = transformFields(value.fields);\n }\n\n set(key, value);\n },\n { schema: strapi.getModel(opts.uid) },\n data\n );\n};\n"],"names":["traverse","transformFields"],"mappings":";;;;AAIa,MAAA,oBAAoB,OAAO,MAAY,SAAkB;AACpE,SAAOA,YAAS,SAAA;AAAA,IACd,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,UAAU;AAC5C,UAAI,CAAC,SAAS,OAAO,UAAU,YAAY,WAAW,SAAS,YAAY;AACzE;AAAA,MACF;AAOA,UAAI,YAAY,SAAS,MAAM,QAAQ,MAAM,MAAM,GAAG;AAC9C,cAAA,SAASC,OAAAA,gBAAgB,MAAM,MAAM;AAAA,MAC7C;AAEA,UAAI,KAAK,KAAK;AAAA,IAChB;AAAA,IACA,EAAE,QAAQ,OAAO,SAAS,KAAK,GAAG,EAAE;AAAA,IACpC;AAAA,EAAA;AAEJ;;"}
@@ -1,21 +1,11 @@
1
1
  import { traverse } from "@strapi/utils";
2
- import { switchDocumentIdForId } from "./utils.mjs";
3
- import { transformFilters } from "./filters.mjs";
4
2
  import { transformFields } from "./fields.mjs";
5
3
  const transformPopulate = async (data, opts) => {
6
- switchDocumentIdForId(data);
7
- const allKeysAreDocumentId = Object.keys(data).every((key) => key === "documentId");
8
- if (allKeysAreDocumentId) {
9
- return data;
10
- }
11
4
  return traverse.traverseQueryPopulate(
12
5
  async ({ attribute, key, value }, { set }) => {
13
6
  if (!value || typeof value !== "object" || attribute?.type !== "relation") {
14
7
  return;
15
8
  }
16
- if ("filters" in value) {
17
- value.filters = await transformFilters(value.filters, opts);
18
- }
19
9
  if ("fields" in value && Array.isArray(value.fields)) {
20
10
  value.fields = transformFields(value.fields);
21
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"populate.mjs","sources":["../../../../src/services/document-service/transform/populate.ts"],"sourcesContent":["import { traverse } from '@strapi/utils';\nimport { type Data, type Options } from './types';\nimport { switchDocumentIdForId } from './utils';\nimport { transformFilters } from './filters';\nimport { transformFields } from './fields';\n\nexport const transformPopulate = async (data: Data, opts: Options) => {\n // Before doing the filters traversal change any top level 'id' properties to 'documentId'\n switchDocumentIdForId(data);\n\n const allKeysAreDocumentId = Object.keys(data).every((key) => key === 'documentId');\n if (allKeysAreDocumentId) {\n // If every key is a documentId, skip the traversal\n return data;\n }\n\n return traverse.traverseQueryPopulate(\n async ({ attribute, key, value }, { set }) => {\n if (!value || typeof value !== 'object' || attribute?.type !== 'relation') {\n return;\n }\n\n /*\n If the attribute is a relation\n Look for filters or fields in the value \n and apply the relevant transformation to these objects\n */\n if ('filters' in value) {\n value.filters = await transformFilters(value.filters as Data, opts);\n }\n\n if ('fields' in value && Array.isArray(value.fields)) {\n value.fields = transformFields(value.fields);\n }\n\n set(key, value);\n },\n { schema: strapi.getModel(opts.uid) },\n data\n );\n};\n"],"names":[],"mappings":";;;;AAMa,MAAA,oBAAoB,OAAO,MAAY,SAAkB;AAEpE,wBAAsB,IAAI;AAEpB,QAAA,uBAAuB,OAAO,KAAK,IAAI,EAAE,MAAM,CAAC,QAAQ,QAAQ,YAAY;AAClF,MAAI,sBAAsB;AAEjB,WAAA;AAAA,EACT;AAEA,SAAO,SAAS;AAAA,IACd,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,UAAU;AAC5C,UAAI,CAAC,SAAS,OAAO,UAAU,YAAY,WAAW,SAAS,YAAY;AACzE;AAAA,MACF;AAOA,UAAI,aAAa,OAAO;AACtB,cAAM,UAAU,MAAM,iBAAiB,MAAM,SAAiB,IAAI;AAAA,MACpE;AAEA,UAAI,YAAY,SAAS,MAAM,QAAQ,MAAM,MAAM,GAAG;AAC9C,cAAA,SAAS,gBAAgB,MAAM,MAAM;AAAA,MAC7C;AAEA,UAAI,KAAK,KAAK;AAAA,IAChB;AAAA,IACA,EAAE,QAAQ,OAAO,SAAS,KAAK,GAAG,EAAE;AAAA,IACpC;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"populate.mjs","sources":["../../../../src/services/document-service/transform/populate.ts"],"sourcesContent":["import { traverse } from '@strapi/utils';\nimport { type Data, type Options } from './types';\nimport { transformFields } from './fields';\n\nexport const transformPopulate = async (data: Data, opts: Options) => {\n return traverse.traverseQueryPopulate(\n async ({ attribute, key, value }, { set }) => {\n if (!value || typeof value !== 'object' || attribute?.type !== 'relation') {\n return;\n }\n\n /*\n If the attribute is a relation\n Look for fields in the value\n and apply the relevant transformation to these objects\n */\n if ('fields' in value && Array.isArray(value.fields)) {\n value.fields = transformFields(value.fields);\n }\n\n set(key, value);\n },\n { schema: strapi.getModel(opts.uid) },\n data\n );\n};\n"],"names":[],"mappings":";;AAIa,MAAA,oBAAoB,OAAO,MAAY,SAAkB;AACpE,SAAO,SAAS;AAAA,IACd,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,UAAU;AAC5C,UAAI,CAAC,SAAS,OAAO,UAAU,YAAY,WAAW,SAAS,YAAY;AACzE;AAAA,MACF;AAOA,UAAI,YAAY,SAAS,MAAM,QAAQ,MAAM,MAAM,GAAG;AAC9C,cAAA,SAAS,gBAAgB,MAAM,MAAM;AAAA,MAC7C;AAEA,UAAI,KAAK,KAAK;AAAA,IAChB;AAAA,IACA,EAAE,QAAQ,OAAO,SAAS,KAAK,GAAG,EAAE;AAAA,IACpC;AAAA,EAAA;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"data-ids.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/extract/data-ids.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,MAAM,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAoErC;;;GAGG;AACH,QAAA,MAAM,cAAc,UACX,KAAK,QACN,OAAO,MAAM,EAAE,GAAG,CAAC,QACnB;IAAE,GAAG,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,qDA6B5E,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"data-ids.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/extract/data-ids.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,MAAM,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAyErC;;;GAGG;AACH,QAAA,MAAM,cAAc,UACX,KAAK,QACN,OAAO,MAAM,EAAE,GAAG,CAAC,QACnB;IAAE,GAAG,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,qDA6B5E,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -9,13 +9,16 @@ const handlePrimitive = (relation) => {
9
9
  return [];
10
10
  }
11
11
  if (data.isShortHand(relation)) {
12
- return [{ id: relation }];
12
+ return [{ documentId: relation }];
13
13
  }
14
14
  if (data.isLongHand(relation)) {
15
- return [{ id: relation.id, locale: relation.locale }];
15
+ if ("documentId" in relation) {
16
+ return [{ documentId: relation.documentId, locale: relation.locale }];
17
+ }
18
+ return [];
16
19
  }
17
20
  if (Array.isArray(relation)) {
18
- return relation.map((item) => data.isShortHand(item) ? { id: item } : item);
21
+ return relation.map((item) => data.isShortHand(item) ? { documentId: item } : item);
19
22
  }
20
23
  return [];
21
24
  };
@@ -57,7 +60,7 @@ const extractDataIds = (idMap, data2, opts) => {
57
60
  extractedIds.forEach((relation) => {
58
61
  idMap.add({
59
62
  uid: target,
60
- documentId: relation.id,
63
+ documentId: relation.documentId,
61
64
  locale: i18n.getRelationTargetLocale(relation, {
62
65
  targetUid: target,
63
66
  sourceUid: opts.uid,
@@ -1 +1 @@
1
- {"version":3,"file":"data-ids.js","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, ID } from '../utils/types';\nimport { isShortHand, isLongHand } from '../utils/data';\nimport { getRelationTargetLocale } from '../utils/i18n';\n\ntype ExtractedId = { id: ID; locale?: string };\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): LongHand[] => {\n if (!relation) {\n return []; // null\n }\n if (isShortHand(relation)) {\n return [{ id: relation }]; // id\n }\n if (isLongHand(relation)) {\n // @ts-expect-error - TODO: Add relation type\n return [{ id: relation.id, locale: relation.locale }]; // { id, locale? }\n }\n if (Array.isArray(relation)) {\n return relation.map((item) => (isShortHand(item) ? { id: 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): ExtractedId[] => {\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.id as string,\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":["isShortHand","isLongHand","isObject","relation","data","traverseEntity","getRelationTargetLocale"],"mappings":";;;;;;AAaA,MAAM,kBAAkB,CACtB,aACe;AACf,MAAI,CAAC,UAAU;AACb,WAAO;EACT;AACI,MAAAA,KAAAA,YAAY,QAAQ,GAAG;AACzB,WAAO,CAAC,EAAE,IAAI,SAAA,CAAU;AAAA,EAC1B;AACI,MAAAC,KAAAA,WAAW,QAAQ,GAAG;AAEjB,WAAA,CAAC,EAAE,IAAI,SAAS,IAAI,QAAQ,SAAS,QAAQ;AAAA,EACtD;AACI,MAAA,MAAM,QAAQ,QAAQ,GAAG;AACpB,WAAA,SAAS,IAAI,CAAC,SAAUD,KAAA,YAAY,IAAI,IAAI,EAAE,IAAI,KAAK,IAAI,IAAK;AAAA,EACzE;AAEA,SAAO;AACT;AAKA,MAAM,qBAAqB,CACzB,aACkB;AACZ,QAAA,MAAM,gBAAgB,QAAQ;AAChC,MAAA,CAACE,WAAS,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,CAACC,cAAa;AAC5B,UAAIH,KAAYG,YAAAA,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,OACAC,OACA,SACG;AACI,SAAAC,YAAA;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,QAAQC,6BAAwB,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,IACpCF;AAAA,EAAA;AAEJ;;"}
1
+ {"version":3,"file":"data-ids.js","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":["isShortHand","isLongHand","isObject","relation","data","traverseEntity","getRelationTargetLocale"],"mappings":";;;;;;AAWA,MAAM,kBAAkB,CACtB,aACuB;AACvB,MAAI,CAAC,UAAU;AACb,WAAO;EACT;AAEI,MAAAA,KAAAA,YAAY,QAAQ,GAAG;AACzB,WAAO,CAAC,EAAE,YAAY,SAAA,CAAU;AAAA,EAClC;AAEI,MAAAC,KAAAA,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,SAAUD,KAAA,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,CAACE,WAAS,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,CAACC,cAAa;AAC5B,UAAIH,KAAYG,YAAAA,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,OACAC,OACA,SACG;AACI,SAAAC,YAAA;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,QAAQC,6BAAwB,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,IACpCF;AAAA,EAAA;AAEJ;;"}
@@ -7,13 +7,16 @@ const handlePrimitive = (relation) => {
7
7
  return [];
8
8
  }
9
9
  if (isShortHand(relation)) {
10
- return [{ id: relation }];
10
+ return [{ documentId: relation }];
11
11
  }
12
12
  if (isLongHand(relation)) {
13
- return [{ id: relation.id, locale: relation.locale }];
13
+ if ("documentId" in relation) {
14
+ return [{ documentId: relation.documentId, locale: relation.locale }];
15
+ }
16
+ return [];
14
17
  }
15
18
  if (Array.isArray(relation)) {
16
- return relation.map((item) => isShortHand(item) ? { id: item } : item);
19
+ return relation.map((item) => isShortHand(item) ? { documentId: item } : item);
17
20
  }
18
21
  return [];
19
22
  };
@@ -55,7 +58,7 @@ const extractDataIds = (idMap, data, opts) => {
55
58
  extractedIds.forEach((relation) => {
56
59
  idMap.add({
57
60
  uid: target,
58
- documentId: relation.id,
61
+ documentId: relation.documentId,
59
62
  locale: getRelationTargetLocale(relation, {
60
63
  targetUid: target,
61
64
  sourceUid: opts.uid,
@@ -1 +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, ID } from '../utils/types';\nimport { isShortHand, isLongHand } from '../utils/data';\nimport { getRelationTargetLocale } from '../utils/i18n';\n\ntype ExtractedId = { id: ID; locale?: string };\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): LongHand[] => {\n if (!relation) {\n return []; // null\n }\n if (isShortHand(relation)) {\n return [{ id: relation }]; // id\n }\n if (isLongHand(relation)) {\n // @ts-expect-error - TODO: Add relation type\n return [{ id: relation.id, locale: relation.locale }]; // { id, locale? }\n }\n if (Array.isArray(relation)) {\n return relation.map((item) => (isShortHand(item) ? { id: 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): ExtractedId[] => {\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.id as string,\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":";;;;AAaA,MAAM,kBAAkB,CACtB,aACe;AACf,MAAI,CAAC,UAAU;AACb,WAAO;EACT;AACI,MAAA,YAAY,QAAQ,GAAG;AACzB,WAAO,CAAC,EAAE,IAAI,SAAA,CAAU;AAAA,EAC1B;AACI,MAAA,WAAW,QAAQ,GAAG;AAEjB,WAAA,CAAC,EAAE,IAAI,SAAS,IAAI,QAAQ,SAAS,QAAQ;AAAA,EACtD;AACI,MAAA,MAAM,QAAQ,QAAQ,GAAG;AACpB,WAAA,SAAS,IAAI,CAAC,SAAU,YAAY,IAAI,IAAI,EAAE,IAAI,KAAK,IAAI,IAAK;AAAA,EACzE;AAEA,SAAO;AACT;AAKA,MAAM,qBAAqB,CACzB,aACkB;AACZ,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;"}
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;"}