@kontent-ai/migration-toolkit 1.0.0

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 (240) hide show
  1. package/.npmignore +13 -0
  2. package/LICENSE.md +9 -0
  3. package/README.md +272 -0
  4. package/dist/es2022/core/helpers/workflow-helper.d.ts +37 -0
  5. package/dist/es2022/core/helpers/workflow-helper.js +67 -0
  6. package/dist/es2022/core/helpers/workflow-helper.js.map +1 -0
  7. package/dist/es2022/core/index.d.ts +15 -0
  8. package/dist/es2022/core/index.js +16 -0
  9. package/dist/es2022/core/index.js.map +1 -0
  10. package/dist/es2022/core/logs/loggers.d.ts +2 -0
  11. package/dist/es2022/core/logs/loggers.js +69 -0
  12. package/dist/es2022/core/logs/loggers.js.map +1 -0
  13. package/dist/es2022/core/models/core.models.d.ts +91 -0
  14. package/dist/es2022/core/models/core.models.js +2 -0
  15. package/dist/es2022/core/models/core.models.js.map +1 -0
  16. package/dist/es2022/core/models/log.models.d.ts +15 -0
  17. package/dist/es2022/core/models/log.models.js +2 -0
  18. package/dist/es2022/core/models/log.models.js.map +1 -0
  19. package/dist/es2022/core/models/migration.models.d.ts +136 -0
  20. package/dist/es2022/core/models/migration.models.js +2 -0
  21. package/dist/es2022/core/models/migration.models.js.map +1 -0
  22. package/dist/es2022/core/utils/array.utils.d.ts +5 -0
  23. package/dist/es2022/core/utils/array.utils.js +27 -0
  24. package/dist/es2022/core/utils/array.utils.js.map +1 -0
  25. package/dist/es2022/core/utils/binary-data.utils.d.ts +5 -0
  26. package/dist/es2022/core/utils/binary-data.utils.js +21 -0
  27. package/dist/es2022/core/utils/binary-data.utils.js.map +1 -0
  28. package/dist/es2022/core/utils/confirm.utils.d.ts +31 -0
  29. package/dist/es2022/core/utils/confirm.utils.js +73 -0
  30. package/dist/es2022/core/utils/confirm.utils.js.map +1 -0
  31. package/dist/es2022/core/utils/error.utils.d.ts +4 -0
  32. package/dist/es2022/core/utils/error.utils.js +50 -0
  33. package/dist/es2022/core/utils/error.utils.js.map +1 -0
  34. package/dist/es2022/core/utils/external-id.utils.d.ts +5 -0
  35. package/dist/es2022/core/utils/external-id.utils.js +5 -0
  36. package/dist/es2022/core/utils/external-id.utils.js.map +1 -0
  37. package/dist/es2022/core/utils/global.utils.d.ts +14 -0
  38. package/dist/es2022/core/utils/global.utils.js +45 -0
  39. package/dist/es2022/core/utils/global.utils.js.map +1 -0
  40. package/dist/es2022/core/utils/http.utils.d.ts +3 -0
  41. package/dist/es2022/core/utils/http.utils.js +29 -0
  42. package/dist/es2022/core/utils/http.utils.js.map +1 -0
  43. package/dist/es2022/core/utils/management-client-utils.d.ts +19 -0
  44. package/dist/es2022/core/utils/management-client-utils.js +129 -0
  45. package/dist/es2022/core/utils/management-client-utils.js.map +1 -0
  46. package/dist/es2022/core/utils/processing-utils.d.ts +12 -0
  47. package/dist/es2022/core/utils/processing-utils.js +39 -0
  48. package/dist/es2022/core/utils/processing-utils.js.map +1 -0
  49. package/dist/es2022/core/utils/run.utils.d.ts +10 -0
  50. package/dist/es2022/core/utils/run.utils.js +37 -0
  51. package/dist/es2022/core/utils/run.utils.js.map +1 -0
  52. package/dist/es2022/export/context/export-context-fetcher.d.ts +4 -0
  53. package/dist/es2022/export/context/export-context-fetcher.js +289 -0
  54. package/dist/es2022/export/context/export-context-fetcher.js.map +1 -0
  55. package/dist/es2022/export/export-manager.d.ts +5 -0
  56. package/dist/es2022/export/export-manager.js +167 -0
  57. package/dist/es2022/export/export-manager.js.map +1 -0
  58. package/dist/es2022/export/export.models.d.ts +55 -0
  59. package/dist/es2022/export/export.models.js +2 -0
  60. package/dist/es2022/export/export.models.js.map +1 -0
  61. package/dist/es2022/export/index.d.ts +2 -0
  62. package/dist/es2022/export/index.js +3 -0
  63. package/dist/es2022/export/index.js.map +1 -0
  64. package/dist/es2022/export/utils/export.utils.d.ts +2 -0
  65. package/dist/es2022/export/utils/export.utils.js +5 -0
  66. package/dist/es2022/export/utils/export.utils.js.map +1 -0
  67. package/dist/es2022/file/file-manager.d.ts +5 -0
  68. package/dist/es2022/file/file-manager.js +29 -0
  69. package/dist/es2022/file/file-manager.js.map +1 -0
  70. package/dist/es2022/file/index.d.ts +1 -0
  71. package/dist/es2022/file/index.js +2 -0
  72. package/dist/es2022/file/index.js.map +1 -0
  73. package/dist/es2022/import/comparers/asset-comparer.d.ts +12 -0
  74. package/dist/es2022/import/comparers/asset-comparer.js +65 -0
  75. package/dist/es2022/import/comparers/asset-comparer.js.map +1 -0
  76. package/dist/es2022/import/context/import-context-fetcher.d.ts +4 -0
  77. package/dist/es2022/import/context/import-context-fetcher.js +235 -0
  78. package/dist/es2022/import/context/import-context-fetcher.js.map +1 -0
  79. package/dist/es2022/import/import-manager.d.ts +4 -0
  80. package/dist/es2022/import/import-manager.js +80 -0
  81. package/dist/es2022/import/import-manager.js.map +1 -0
  82. package/dist/es2022/import/import.models.d.ts +45 -0
  83. package/dist/es2022/import/import.models.js +2 -0
  84. package/dist/es2022/import/import.models.js.map +1 -0
  85. package/dist/es2022/import/importers/assets-importer.d.ts +10 -0
  86. package/dist/es2022/import/importers/assets-importer.js +175 -0
  87. package/dist/es2022/import/importers/assets-importer.js.map +1 -0
  88. package/dist/es2022/import/importers/content-items-importer.d.ts +10 -0
  89. package/dist/es2022/import/importers/content-items-importer.js +97 -0
  90. package/dist/es2022/import/importers/content-items-importer.js.map +1 -0
  91. package/dist/es2022/import/importers/language-variant-importer.d.ts +11 -0
  92. package/dist/es2022/import/importers/language-variant-importer.js +215 -0
  93. package/dist/es2022/import/importers/language-variant-importer.js.map +1 -0
  94. package/dist/es2022/import/importers/workflow-importer.d.ts +18 -0
  95. package/dist/es2022/import/importers/workflow-importer.js +122 -0
  96. package/dist/es2022/import/importers/workflow-importer.js.map +1 -0
  97. package/dist/es2022/import/index.d.ts +2 -0
  98. package/dist/es2022/import/index.js +3 -0
  99. package/dist/es2022/import/index.js.map +1 -0
  100. package/dist/es2022/import/utils/import.utils.d.ts +2 -0
  101. package/dist/es2022/import/utils/import.utils.js +5 -0
  102. package/dist/es2022/import/utils/import.utils.js.map +1 -0
  103. package/dist/es2022/index.d.ts +8 -0
  104. package/dist/es2022/index.js +10 -0
  105. package/dist/es2022/index.js.map +1 -0
  106. package/dist/es2022/metadata.d.ts +5 -0
  107. package/dist/es2022/metadata.js +6 -0
  108. package/dist/es2022/metadata.js.map +1 -0
  109. package/dist/es2022/node/cli/actions/export-action.d.ts +2 -0
  110. package/dist/es2022/node/cli/actions/export-action.js +40 -0
  111. package/dist/es2022/node/cli/actions/export-action.js.map +1 -0
  112. package/dist/es2022/node/cli/actions/import-action.d.ts +2 -0
  113. package/dist/es2022/node/cli/actions/import-action.js +29 -0
  114. package/dist/es2022/node/cli/actions/import-action.js.map +1 -0
  115. package/dist/es2022/node/cli/actions/migrate-action.d.ts +2 -0
  116. package/dist/es2022/node/cli/actions/migrate-action.js +47 -0
  117. package/dist/es2022/node/cli/actions/migrate-action.js.map +1 -0
  118. package/dist/es2022/node/cli/app.d.ts +2 -0
  119. package/dist/es2022/node/cli/app.js +27 -0
  120. package/dist/es2022/node/cli/app.js.map +1 -0
  121. package/dist/es2022/node/cli/args/args-fetcher.d.ts +2 -0
  122. package/dist/es2022/node/cli/args/args-fetcher.js +46 -0
  123. package/dist/es2022/node/cli/args/args-fetcher.js.map +1 -0
  124. package/dist/es2022/node/cli/args/args-setter.d.ts +2 -0
  125. package/dist/es2022/node/cli/args/args-setter.js +31 -0
  126. package/dist/es2022/node/cli/args/args-setter.js.map +1 -0
  127. package/dist/es2022/node/cli/cli.models.d.ts +24 -0
  128. package/dist/es2022/node/cli/cli.models.js +2 -0
  129. package/dist/es2022/node/cli/cli.models.js.map +1 -0
  130. package/dist/es2022/node/cli/commands.d.ts +1 -0
  131. package/dist/es2022/node/cli/commands.js +157 -0
  132. package/dist/es2022/node/cli/commands.js.map +1 -0
  133. package/dist/es2022/toolkit/elements-builder.d.ts +14 -0
  134. package/dist/es2022/toolkit/elements-builder.js +69 -0
  135. package/dist/es2022/toolkit/elements-builder.js.map +1 -0
  136. package/dist/es2022/toolkit/export.d.ts +3 -0
  137. package/dist/es2022/toolkit/export.js +21 -0
  138. package/dist/es2022/toolkit/export.js.map +1 -0
  139. package/dist/es2022/toolkit/file.d.ts +12 -0
  140. package/dist/es2022/toolkit/file.js +50 -0
  141. package/dist/es2022/toolkit/file.js.map +1 -0
  142. package/dist/es2022/toolkit/import.d.ts +2 -0
  143. package/dist/es2022/toolkit/import.js +21 -0
  144. package/dist/es2022/toolkit/import.js.map +1 -0
  145. package/dist/es2022/toolkit/index.d.ts +5 -0
  146. package/dist/es2022/toolkit/index.js +6 -0
  147. package/dist/es2022/toolkit/index.js.map +1 -0
  148. package/dist/es2022/toolkit/migrate.d.ts +21 -0
  149. package/dist/es2022/toolkit/migrate.js +39 -0
  150. package/dist/es2022/toolkit/migrate.js.map +1 -0
  151. package/dist/es2022/translation/extraction/items-extraction.processor.d.ts +24 -0
  152. package/dist/es2022/translation/extraction/items-extraction.processor.js +108 -0
  153. package/dist/es2022/translation/extraction/items-extraction.processor.js.map +1 -0
  154. package/dist/es2022/translation/helpers/rich-text.processor.d.ts +22 -0
  155. package/dist/es2022/translation/helpers/rich-text.processor.js +209 -0
  156. package/dist/es2022/translation/helpers/rich-text.processor.js.map +1 -0
  157. package/dist/es2022/translation/index.d.ts +4 -0
  158. package/dist/es2022/translation/index.js +5 -0
  159. package/dist/es2022/translation/index.js.map +1 -0
  160. package/dist/es2022/translation/transforms/export-transforms.d.ts +3 -0
  161. package/dist/es2022/translation/transforms/export-transforms.js +196 -0
  162. package/dist/es2022/translation/transforms/export-transforms.js.map +1 -0
  163. package/dist/es2022/translation/transforms/import-transforms.d.ts +7 -0
  164. package/dist/es2022/translation/transforms/import-transforms.js +183 -0
  165. package/dist/es2022/translation/transforms/import-transforms.js.map +1 -0
  166. package/dist/es2022/zip/index.d.ts +4 -0
  167. package/dist/es2022/zip/index.js +5 -0
  168. package/dist/es2022/zip/index.js.map +1 -0
  169. package/dist/es2022/zip/zip-manager.d.ts +6 -0
  170. package/dist/es2022/zip/zip-manager.js +27 -0
  171. package/dist/es2022/zip/zip-manager.js.map +1 -0
  172. package/dist/es2022/zip/zip-packager.d.ts +3 -0
  173. package/dist/es2022/zip/zip-packager.js +69 -0
  174. package/dist/es2022/zip/zip-packager.js.map +1 -0
  175. package/dist/es2022/zip/zip-transformer.d.ts +6 -0
  176. package/dist/es2022/zip/zip-transformer.js +82 -0
  177. package/dist/es2022/zip/zip-transformer.js.map +1 -0
  178. package/dist/es2022/zip/zip.models.d.ts +13 -0
  179. package/dist/es2022/zip/zip.models.js +2 -0
  180. package/dist/es2022/zip/zip.models.js.map +1 -0
  181. package/lib/core/helpers/workflow-helper.ts +104 -0
  182. package/lib/core/index.ts +17 -0
  183. package/lib/core/logs/loggers.ts +80 -0
  184. package/lib/core/models/core.models.ts +134 -0
  185. package/lib/core/models/log.models.ts +31 -0
  186. package/lib/core/models/migration.models.ts +165 -0
  187. package/lib/core/utils/array.utils.ts +49 -0
  188. package/lib/core/utils/binary-data.utils.ts +29 -0
  189. package/lib/core/utils/confirm.utils.ts +139 -0
  190. package/lib/core/utils/error.utils.ts +65 -0
  191. package/lib/core/utils/external-id.utils.ts +9 -0
  192. package/lib/core/utils/global.utils.ts +59 -0
  193. package/lib/core/utils/http.utils.ts +35 -0
  194. package/lib/core/utils/management-client-utils.ts +182 -0
  195. package/lib/core/utils/processing-utils.ts +71 -0
  196. package/lib/core/utils/run.utils.ts +51 -0
  197. package/lib/export/context/export-context-fetcher.ts +475 -0
  198. package/lib/export/export-manager.ts +249 -0
  199. package/lib/export/export.models.ts +87 -0
  200. package/lib/export/index.ts +2 -0
  201. package/lib/export/utils/export.utils.ts +10 -0
  202. package/lib/file/file-manager.ts +37 -0
  203. package/lib/file/index.ts +1 -0
  204. package/lib/import/comparers/asset-comparer.ts +113 -0
  205. package/lib/import/context/import-context-fetcher.ts +367 -0
  206. package/lib/import/import-manager.ts +103 -0
  207. package/lib/import/import.models.ts +84 -0
  208. package/lib/import/importers/assets-importer.ts +239 -0
  209. package/lib/import/importers/content-items-importer.ts +142 -0
  210. package/lib/import/importers/language-variant-importer.ts +342 -0
  211. package/lib/import/importers/workflow-importer.ts +159 -0
  212. package/lib/import/index.ts +2 -0
  213. package/lib/import/utils/import.utils.ts +10 -0
  214. package/lib/index.ts +9 -0
  215. package/lib/metadata.ts +6 -0
  216. package/lib/node/cli/actions/export-action.ts +45 -0
  217. package/lib/node/cli/actions/import-action.ts +34 -0
  218. package/lib/node/cli/actions/migrate-action.ts +52 -0
  219. package/lib/node/cli/app.ts +29 -0
  220. package/lib/node/cli/args/args-fetcher.ts +61 -0
  221. package/lib/node/cli/args/args-setter.ts +35 -0
  222. package/lib/node/cli/cli.models.ts +28 -0
  223. package/lib/node/cli/commands.ts +161 -0
  224. package/lib/toolkit/elements-builder.ts +84 -0
  225. package/lib/toolkit/export.ts +21 -0
  226. package/lib/toolkit/file.ts +70 -0
  227. package/lib/toolkit/import.ts +21 -0
  228. package/lib/toolkit/index.ts +5 -0
  229. package/lib/toolkit/migrate.ts +71 -0
  230. package/lib/translation/extraction/items-extraction.processor.ts +181 -0
  231. package/lib/translation/helpers/rich-text.processor.ts +300 -0
  232. package/lib/translation/index.ts +4 -0
  233. package/lib/translation/transforms/export-transforms.ts +253 -0
  234. package/lib/translation/transforms/import-transforms.ts +215 -0
  235. package/lib/zip/index.ts +4 -0
  236. package/lib/zip/zip-manager.ts +33 -0
  237. package/lib/zip/zip-packager.ts +86 -0
  238. package/lib/zip/zip-transformer.ts +105 -0
  239. package/lib/zip/zip.models.ts +12 -0
  240. package/package.json +88 -0
@@ -0,0 +1,129 @@
1
+ import { createManagementClient } from '@kontent-ai/management-sdk';
2
+ import { runMapiRequestAsync } from './run.utils.js';
3
+ import { isNotUndefined } from './global.utils.js';
4
+ import chalk from 'chalk';
5
+ import { defaultHttpService, defaultRetryStrategy } from './http.utils.js';
6
+ import { findRequired } from './array.utils.js';
7
+ export function getMigrationManagementClient(config) {
8
+ return createManagementClient({
9
+ environmentId: config.environmentId,
10
+ retryStrategy: config.retryStrategy ?? defaultRetryStrategy,
11
+ httpService: defaultHttpService,
12
+ apiKey: config.apiKey
13
+ });
14
+ }
15
+ export function managementClientUtils(client, logger) {
16
+ const getEnvironmentAsync = async () => {
17
+ return (await client.environmentInformation().toPromise()).data.project;
18
+ };
19
+ const getAllLanguagesAsync = async (logSpinner) => {
20
+ return await runMapiRequestAsync({
21
+ logSpinner: logSpinner,
22
+ logger: logger,
23
+ func: async () => (await client.listLanguages().toAllPromise()).data.items,
24
+ action: 'list',
25
+ type: 'language'
26
+ });
27
+ };
28
+ const getAllCollectionsAsync = async (logSpinner) => {
29
+ return await runMapiRequestAsync({
30
+ logger: logger,
31
+ logSpinner: logSpinner,
32
+ func: async () => (await client.listCollections().toPromise()).data.collections,
33
+ action: 'list',
34
+ type: 'collection'
35
+ });
36
+ };
37
+ const getAllWorkflowsAsync = async (logSpinner) => {
38
+ return await runMapiRequestAsync({
39
+ logger: logger,
40
+ logSpinner: logSpinner,
41
+ func: async () => (await client.listWorkflows().toPromise()).data,
42
+ action: 'list',
43
+ type: 'workflow'
44
+ });
45
+ };
46
+ const getAllTaxonomiesAsync = async (logSpinner) => {
47
+ return await runMapiRequestAsync({
48
+ logger: logger,
49
+ logSpinner: logSpinner,
50
+ func: async () => (await client.listTaxonomies().toAllPromise()).data.items,
51
+ action: 'list',
52
+ type: 'taxonomy'
53
+ });
54
+ };
55
+ const getContentTypeElements = (contentType, contentTypeSnippets) => {
56
+ return contentType.elements
57
+ .flatMap((element) => {
58
+ if (!element.codename || !element.id) {
59
+ return undefined;
60
+ }
61
+ if (element.type === 'guidelines') {
62
+ return undefined;
63
+ }
64
+ if (element.type === 'snippet') {
65
+ const snippetElement = element;
66
+ // replace snippet element with actual elements
67
+ const contentTypeSnippet = findRequired(contentTypeSnippets, (snippet) => snippet.id === snippetElement.snippet.id, `Could not find content type snippet for element. This snippet is referenced in type '${chalk.red(contentType.codename)}'`);
68
+ return contentTypeSnippet.elements.map((snippetElement) => {
69
+ if (snippetElement.type === 'guidelines' || snippetElement.type === 'snippet') {
70
+ return undefined;
71
+ }
72
+ if (!snippetElement.codename || !snippetElement.id) {
73
+ return undefined;
74
+ }
75
+ const flattenedElement = {
76
+ codename: snippetElement.codename,
77
+ type: snippetElement.type,
78
+ id: snippetElement.id,
79
+ element: element
80
+ };
81
+ return flattenedElement;
82
+ });
83
+ }
84
+ const flattenedElement = {
85
+ codename: element.codename,
86
+ id: element.id,
87
+ type: element.type,
88
+ element: element
89
+ };
90
+ return flattenedElement;
91
+ })
92
+ .filter(isNotUndefined);
93
+ };
94
+ const getFlattenedContentTypesAsync = async (logSpinner) => {
95
+ const contentTypes = await runMapiRequestAsync({
96
+ logger: logger,
97
+ logSpinner: logSpinner,
98
+ func: async () => (await client.listContentTypes().toAllPromise()).data.items,
99
+ action: 'list',
100
+ type: 'contentType'
101
+ });
102
+ const contentTypeSnippets = await runMapiRequestAsync({
103
+ logger: logger,
104
+ logSpinner: logSpinner,
105
+ func: async () => (await client.listContentTypeSnippets().toAllPromise()).data.items,
106
+ action: 'list',
107
+ type: 'contentTypeSnippet'
108
+ });
109
+ return [
110
+ ...contentTypes.map((contentType) => {
111
+ const importType = {
112
+ contentTypeCodename: contentType.codename,
113
+ contentTypeId: contentType.id,
114
+ elements: getContentTypeElements(contentType, contentTypeSnippets)
115
+ };
116
+ return importType;
117
+ })
118
+ ];
119
+ };
120
+ return {
121
+ getAllCollectionsAsync,
122
+ getAllLanguagesAsync,
123
+ getAllWorkflowsAsync,
124
+ getAllTaxonomiesAsync,
125
+ getFlattenedContentTypesAsync,
126
+ getEnvironmentAsync
127
+ };
128
+ }
129
+ //# sourceMappingURL=management-client-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"management-client-utils.js","sourceRoot":"","sources":["../../../../lib/core/utils/management-client-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EASH,sBAAsB,EACzB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAShD,MAAM,UAAU,4BAA4B,CAAC,MAA8B;IACvE,OAAO,sBAAsB,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,oBAAoB;QAC3D,WAAW,EAAE,kBAAkB;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;KACxB,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAkC,EAAE,MAAc;IACpF,MAAM,mBAAmB,GAAG,KAAK,IAA4D,EAAE;QAC3F,OAAO,CAAC,MAAM,MAAM,CAAC,sBAAsB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5E,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,KAAK,EAC9B,UAA0B,EACsB,EAAE;QAClD,OAAO,MAAM,mBAAmB,CAAC;YAC7B,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK;YAC1E,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,UAAU;SACnB,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,KAAK,EAChC,UAA0B,EACqB,EAAE;QACjD,OAAO,MAAM,mBAAmB,CAAC;YAC7B,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,UAAU;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW;YAC/E,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY;SACrB,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,KAAK,EAAE,UAA0B,EAA+C,EAAE;QAC3G,OAAO,MAAM,mBAAmB,CAAC;YAC7B,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,UAAU;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI;YACjE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,UAAU;SACnB,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,KAAK,EAAE,UAA0B,EAA+C,EAAE;QAC5G,OAAO,MAAM,mBAAmB,CAAC;YAC7B,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,UAAU;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK;YAC3E,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,UAAU;SACnB,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,CAC3B,WAA0C,EAC1C,mBAA2E,EACrC,EAAE;QACxC,OAAO,WAAW,CAAC,QAAQ;aACtB,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACjB,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBACnC,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAChC,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,cAAc,GAAG,OAAO,CAAC;gBAE/B,+CAA+C;gBAC/C,MAAM,kBAAkB,GAAG,YAAY,CACnC,mBAAmB,EACnB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,cAAc,CAAC,OAAO,CAAC,EAAE,EACrD,wFAAwF,KAAK,CAAC,GAAG,CAC7F,WAAW,CAAC,QAAQ,CACvB,GAAG,CACP,CAAC;gBAEF,OAAO,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE;oBACtD,IAAI,cAAc,CAAC,IAAI,KAAK,YAAY,IAAI,cAAc,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBAC5E,OAAO,SAAS,CAAC;oBACrB,CAAC;oBACD,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;wBACjD,OAAO,SAAS,CAAC;oBACrB,CAAC;oBAED,MAAM,gBAAgB,GAAgC;wBAClD,QAAQ,EAAE,cAAc,CAAC,QAAQ;wBACjC,IAAI,EAAE,cAAc,CAAC,IAAI;wBACzB,EAAE,EAAE,cAAc,CAAC,EAAE;wBACrB,OAAO,EAAE,OAAO;qBACnB,CAAC;oBAEF,OAAO,gBAAgB,CAAC;gBAC5B,CAAC,CAAC,CAAC;YACP,CAAC;YACD,MAAM,gBAAgB,GAAgC;gBAClD,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO;aACnB,CAAC;YAEF,OAAO,gBAAgB,CAAC;QAC5B,CAAC,CAAC;aACD,MAAM,CAAC,cAAc,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,MAAM,6BAA6B,GAAG,KAAK,EACvC,UAA0B,EACc,EAAE;QAC1C,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC;YAC3C,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,UAAU;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK;YAC7E,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,aAAa;SACtB,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,MAAM,mBAAmB,CAAC;YAClD,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,UAAU;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,uBAAuB,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK;YACpF,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,oBAAoB;SAC7B,CAAC,CAAC;QAEH,OAAO;YACH,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;gBAChC,MAAM,UAAU,GAAyB;oBACrC,mBAAmB,EAAE,WAAW,CAAC,QAAQ;oBACzC,aAAa,EAAE,WAAW,CAAC,EAAE;oBAC7B,QAAQ,EAAE,sBAAsB,CAAC,WAAW,EAAE,mBAAmB,CAAC;iBACrE,CAAC;gBAEF,OAAO,UAAU,CAAC;YACtB,CAAC,CAAC;SACL,CAAC;IACN,CAAC,CAAC;IAEF,OAAO;QACH,sBAAsB;QACtB,oBAAoB;QACpB,oBAAoB;QACpB,qBAAqB;QACrB,6BAA6B;QAC7B,mBAAmB;KACtB,CAAC;AACN,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { ItemInfo } from '../models/core.models.js';
2
+ import { LogSpinnerData, Logger } from '../models/log.models.js';
3
+ type ProcessSetAction = 'Fetching assets' | 'Downloading assets' | 'Fetching content items' | 'Preparing content items & language variants' | 'Importing content items' | 'Importing language variants' | 'Fetching language variants' | 'Upserting assets' | 'Uploading assets';
4
+ export declare function processItemsAsync<InputItem, OutputItem>(data: {
5
+ readonly action: ProcessSetAction;
6
+ readonly logger: Logger;
7
+ readonly items: Readonly<InputItem[]>;
8
+ readonly parallelLimit: number;
9
+ readonly processAsync: (item: Readonly<InputItem>, logSpinner: LogSpinnerData) => Promise<Readonly<OutputItem>>;
10
+ readonly itemInfo: (item: Readonly<InputItem>) => ItemInfo;
11
+ }): Promise<readonly OutputItem[]>;
12
+ export {};
@@ -0,0 +1,39 @@
1
+ import chalk from 'chalk';
2
+ import pLimit from 'p-limit';
3
+ export async function processItemsAsync(data) {
4
+ if (!data.items.length) {
5
+ return [];
6
+ }
7
+ const firstItemInfo = data.itemInfo(data.items[0]);
8
+ return await data.logger.logWithSpinnerAsync(async (logSpinner) => {
9
+ const limit = pLimit(data.parallelLimit);
10
+ let processedItemsCount = 1;
11
+ const requests = data.items.map((item) => limit(() => {
12
+ return data.processAsync(item, logSpinner).then((output) => {
13
+ const itemInfo = data.itemInfo(item);
14
+ const prefix = getPercentagePrefix(processedItemsCount, data.items.length);
15
+ logSpinner({
16
+ prefix: prefix,
17
+ message: itemInfo.title,
18
+ type: itemInfo.itemType
19
+ });
20
+ processedItemsCount++;
21
+ return output;
22
+ });
23
+ }));
24
+ // log processing of first item as progress is set after each item finishes
25
+ logSpinner({
26
+ prefix: getPercentagePrefix(0, data.items.length),
27
+ message: firstItemInfo.title,
28
+ type: firstItemInfo.itemType
29
+ });
30
+ // Only '<parallelLimit>' promises at a time
31
+ const outputItems = await Promise.all(requests);
32
+ logSpinner({ type: 'info', message: `Completed '${chalk.yellow(data.action)}' (${outputItems.length})` });
33
+ return outputItems;
34
+ });
35
+ }
36
+ function getPercentagePrefix(processedItems, totalCount) {
37
+ return chalk.gray(`${Math.round((processedItems / totalCount) * 100)}%`);
38
+ }
39
+ //# sourceMappingURL=processing-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processing-utils.js","sourceRoot":"","sources":["../../../../lib/core/utils/processing-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,SAAS,CAAC;AAe7B,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAwB,IAO9D;IACG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;QAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzC,IAAI,mBAAmB,GAAW,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAA0B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5D,KAAK,CAAC,GAAG,EAAE;YACP,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACrC,MAAM,MAAM,GAAG,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAE3E,UAAU,CAAC;oBACP,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,QAAQ,CAAC,KAAK;oBACvB,IAAI,EAAE,QAAQ,CAAC,QAAQ;iBAC1B,CAAC,CAAC;gBAEH,mBAAmB,EAAE,CAAC;gBACtB,OAAO,MAAM,CAAC;YAClB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CACL,CAAC;QAEF,2EAA2E;QAC3E,UAAU,CAAC;YACP,MAAM,EAAE,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACjD,OAAO,EAAE,aAAa,CAAC,KAAK;YAC5B,IAAI,EAAE,aAAa,CAAC,QAAQ;SAC/B,CAAC,CAAC;QAEH,4CAA4C;QAC5C,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEhD,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QAE1G,OAAO,WAAW,CAAC;IACvB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,mBAAmB,CAAC,cAAsB,EAAE,UAAkB;IACnE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { MapiAction, MapiType } from '../models/core.models.js';
2
+ import { LogSpinnerData, Logger } from '../models/log.models.js';
3
+ export declare function runMapiRequestAsync<TResult>(data: {
4
+ readonly logger: Logger;
5
+ readonly logSpinner?: LogSpinnerData;
6
+ readonly action: MapiAction;
7
+ readonly type: MapiType;
8
+ readonly func: () => Promise<TResult>;
9
+ readonly itemName?: string;
10
+ }): Promise<TResult>;
@@ -0,0 +1,37 @@
1
+ import chalk from 'chalk';
2
+ export async function runMapiRequestAsync(data) {
3
+ let logData;
4
+ if (data.action === 'list') {
5
+ logData = {
6
+ message: `Fetching objects of type '${chalk.yellow(data.type)}'`,
7
+ type: data.action
8
+ };
9
+ }
10
+ else if (data.itemName) {
11
+ logData = {
12
+ message: `${data.type} -> ${data.itemName}`,
13
+ type: data.action
14
+ };
15
+ }
16
+ else {
17
+ logData = {
18
+ message: `${data.type}`,
19
+ type: data.action
20
+ };
21
+ }
22
+ logSpinnerOrDefault({
23
+ logSpinner: data.logSpinner,
24
+ logger: data.logger,
25
+ logData: logData
26
+ });
27
+ return await data.func();
28
+ }
29
+ function logSpinnerOrDefault(data) {
30
+ if (data.logSpinner) {
31
+ data.logSpinner(data.logData);
32
+ }
33
+ else {
34
+ data.logger.log(data.logData);
35
+ }
36
+ }
37
+ //# sourceMappingURL=run.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.utils.js","sourceRoot":"","sources":["../../../../lib/core/utils/run.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAU,IAOlD;IACG,IAAI,OAA+B,CAAC;IAEpC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,GAAG;YACN,OAAO,EAAE,6BAA6B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAChE,IAAI,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACN,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvB,OAAO,GAAG;YACN,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE;YAC3C,IAAI,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,OAAO,GAAG;YACN,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;YACvB,IAAI,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACN,CAAC;IAED,mBAAmB,CAAC;QAChB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,OAAO;KACnB,CAAC,CAAC;IAEH,OAAO,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,mBAAmB,CAAC,IAI5B;IACG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACJ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { DefaultExportContextConfig, ExportContext } from '../export.models.js';
2
+ export declare function exportContextFetcherAsync(config: DefaultExportContextConfig): Promise<{
3
+ getExportContextAsync: () => Promise<ExportContext>;
4
+ }>;
@@ -0,0 +1,289 @@
1
+ import chalk from 'chalk';
2
+ import { processItemsAsync, runMapiRequestAsync, is404Error, isNotUndefined, managementClientUtils, findRequired, workflowHelper } from '../../core/index.js';
3
+ import { itemsExtractionProcessor } from '../../translation/index.js';
4
+ import { throwErrorForItemRequest } from '../utils/export.utils.js';
5
+ export async function exportContextFetcherAsync(config) {
6
+ const getEnvironmentDataAsync = async () => {
7
+ const mapiUtils = managementClientUtils(config.managementClient, config.logger);
8
+ return await config.logger.logWithSpinnerAsync(async (spinnerData) => {
9
+ spinnerData({ type: 'info', message: `Loading environment data` });
10
+ const environmentData = {
11
+ collections: await mapiUtils.getAllCollectionsAsync(spinnerData),
12
+ contentTypes: await mapiUtils.getFlattenedContentTypesAsync(spinnerData),
13
+ languages: await mapiUtils.getAllLanguagesAsync(spinnerData),
14
+ workflows: await mapiUtils.getAllWorkflowsAsync(spinnerData),
15
+ taxonomies: await mapiUtils.getAllTaxonomiesAsync(spinnerData)
16
+ };
17
+ spinnerData({ type: 'info', message: `Environmental data loaded` });
18
+ return environmentData;
19
+ });
20
+ };
21
+ const environmentData = await getEnvironmentDataAsync();
22
+ const getContentItemAsync = async (sourceItem, logSpinner) => {
23
+ return await runMapiRequestAsync({
24
+ logger: config.logger,
25
+ logSpinner: logSpinner,
26
+ func: async () => (await config.managementClient.viewContentItem().byItemCodename(sourceItem.itemCodename).toPromise()).data,
27
+ action: 'view',
28
+ type: 'contentItem',
29
+ itemName: `codename -> ${sourceItem.itemCodename}`
30
+ });
31
+ };
32
+ const getLatestLanguageVariantAsync = async (sourceItem, logSpinner) => {
33
+ return await runMapiRequestAsync({
34
+ logger: config.logger,
35
+ logSpinner: logSpinner,
36
+ func: async () => (await config.managementClient
37
+ .viewLanguageVariant()
38
+ .byItemCodename(sourceItem.itemCodename)
39
+ .byLanguageCodename(sourceItem.languageCodename)
40
+ .toPromise()).data,
41
+ action: 'view',
42
+ type: 'languageVariant',
43
+ itemName: `codename -> ${sourceItem.itemCodename} -> latest (${sourceItem.languageCodename})`
44
+ });
45
+ };
46
+ const isLanguageVariantPublished = (languageVariant) => {
47
+ return environmentData.workflows.find((workflow) => workflow.publishedStep.id === languageVariant.workflow.stepIdentifier.id)
48
+ ? true
49
+ : false;
50
+ };
51
+ const mapToExportVersionItem = (sourceItem, contentItem, languageVariant) => {
52
+ return {
53
+ languageVariant: languageVariant,
54
+ workflowStepCodename: validateExportItem({
55
+ sourceItem: sourceItem,
56
+ contentItem: contentItem,
57
+ languageVariant: languageVariant
58
+ }).workflowStepCodename
59
+ };
60
+ };
61
+ const getExportItemVersionsAsync = async (sourceItem, contentItem, logSpinner) => {
62
+ const latestLanguageVariant = await getLatestLanguageVariantAsync(sourceItem, logSpinner);
63
+ const latestExportVersion = mapToExportVersionItem(sourceItem, contentItem, latestLanguageVariant);
64
+ if (isLanguageVariantPublished(latestLanguageVariant)) {
65
+ // latest language variant is also published = no need to fetch published version
66
+ return [latestExportVersion];
67
+ }
68
+ const publishedLanguageVariant = await getPublishedLanguageVariantAsync(sourceItem, logSpinner);
69
+ if (!publishedLanguageVariant) {
70
+ return [latestExportVersion];
71
+ }
72
+ return [latestExportVersion, mapToExportVersionItem(sourceItem, contentItem, publishedLanguageVariant)];
73
+ };
74
+ const getPublishedLanguageVariantAsync = async (sourceItem, logSpinner) => {
75
+ return await runMapiRequestAsync({
76
+ logger: config.logger,
77
+ logSpinner: logSpinner,
78
+ func: async () => {
79
+ try {
80
+ return (await config.managementClient
81
+ .viewLanguageVariant()
82
+ .byItemCodename(sourceItem.itemCodename)
83
+ .byLanguageCodename(sourceItem.languageCodename)
84
+ .published()
85
+ .toPromise()).data;
86
+ }
87
+ catch (error) {
88
+ if (is404Error(error)) {
89
+ return undefined;
90
+ }
91
+ throw error;
92
+ }
93
+ },
94
+ action: 'view',
95
+ type: 'languageVariant',
96
+ itemName: `codename -> ${sourceItem.itemCodename} -> published (${sourceItem.languageCodename})`
97
+ });
98
+ };
99
+ const validateExportItem = (data) => {
100
+ const collection = findRequired(environmentData.collections, (collection) => collection.id === data.contentItem.collection.id, () => {
101
+ throwErrorForItemRequest(data.sourceItem, `Invalid collection '${chalk.yellow(data.contentItem.collection.id ?? '')}'`);
102
+ });
103
+ const contentType = findRequired(environmentData.contentTypes, (contentType) => contentType.contentTypeId === data.contentItem.type.id, () => {
104
+ throwErrorForItemRequest(data.sourceItem, `Invalid content type '${chalk.red(data.contentItem.type.id)}'`);
105
+ });
106
+ const language = findRequired(environmentData.languages, (language) => language.id === data.languageVariant.language.id, () => {
107
+ throwErrorForItemRequest(data.sourceItem, `Invalid language '${chalk.red(data.languageVariant.language.id ?? '')}'`);
108
+ });
109
+ const workflow = findRequired(environmentData.workflows, (workflow) => workflow.id === data.languageVariant.workflow.workflowIdentifier.id, () => {
110
+ throwErrorForItemRequest(data.sourceItem, `Invalid workflow '${chalk.red(data.languageVariant.workflow.workflowIdentifier.id ?? '')}'`);
111
+ });
112
+ const workflowStep = workflowHelper(environmentData.workflows).getWorkflowStep(workflow, {
113
+ match: (step) => step.id === data.languageVariant.workflow.stepIdentifier.id,
114
+ errorMessage: `Invalid workflow step '${chalk.red(data.languageVariant.workflow.stepIdentifier.id ?? '')}'`
115
+ });
116
+ return {
117
+ collection,
118
+ language,
119
+ workflow,
120
+ contentType,
121
+ workflowStepCodename: workflowStep.codename
122
+ };
123
+ };
124
+ const prepareExportItemsAsync = async (exportItems) => {
125
+ config.logger.log({
126
+ type: 'info',
127
+ message: `Preparing '${chalk.yellow(config.exportItems.length.toString())}' items for export`
128
+ });
129
+ return await processItemsAsync({
130
+ logger: config.logger,
131
+ action: 'Preparing content items & language variants',
132
+ parallelLimit: 1,
133
+ itemInfo: (input) => {
134
+ return {
135
+ title: `${input.itemCodename} (${input.languageCodename})`,
136
+ itemType: 'exportedItem'
137
+ };
138
+ },
139
+ items: exportItems,
140
+ processAsync: async (requestItem, logSpinner) => {
141
+ const contentItem = await getContentItemAsync(requestItem, logSpinner);
142
+ const versions = await getExportItemVersionsAsync(requestItem, contentItem, logSpinner);
143
+ // get shared attributes from any version
144
+ const anyVersion = versions[0];
145
+ if (!anyVersion) {
146
+ throwErrorForItemRequest(requestItem, `Expected at least 1 version of the content item`);
147
+ }
148
+ const { collection, contentType, language, workflow } = validateExportItem({
149
+ sourceItem: requestItem,
150
+ contentItem: contentItem,
151
+ languageVariant: anyVersion.languageVariant
152
+ });
153
+ return {
154
+ contentItem,
155
+ versions,
156
+ contentType,
157
+ requestItem,
158
+ workflow,
159
+ collection,
160
+ language
161
+ };
162
+ }
163
+ });
164
+ };
165
+ const getContentItemsByIdsAsync = async (itemIds) => {
166
+ return (await processItemsAsync({
167
+ logger: config.logger,
168
+ action: 'Fetching content items',
169
+ parallelLimit: 1,
170
+ items: Array.from(itemIds),
171
+ itemInfo: (id) => {
172
+ return {
173
+ itemType: 'contentItem',
174
+ title: id
175
+ };
176
+ },
177
+ processAsync: async (id, logSpinner) => {
178
+ try {
179
+ return await runMapiRequestAsync({
180
+ logSpinner: logSpinner,
181
+ logger: config.logger,
182
+ func: async () => (await config.managementClient.viewContentItem().byItemId(id).toPromise()).data,
183
+ action: 'view',
184
+ type: 'contentItem',
185
+ itemName: `id -> ${id}`
186
+ });
187
+ }
188
+ catch (error) {
189
+ if (!is404Error(error)) {
190
+ throw error;
191
+ }
192
+ return undefined;
193
+ }
194
+ }
195
+ })).filter(isNotUndefined);
196
+ };
197
+ const getAssetsByIdsAsync = async (itemIds) => {
198
+ return (await processItemsAsync({
199
+ logger: config.logger,
200
+ action: 'Fetching assets',
201
+ parallelLimit: 1,
202
+ items: Array.from(itemIds),
203
+ itemInfo: (id) => {
204
+ return {
205
+ itemType: 'asset',
206
+ title: id
207
+ };
208
+ },
209
+ processAsync: async (id, logSpinner) => {
210
+ try {
211
+ return await runMapiRequestAsync({
212
+ logger: config.logger,
213
+ logSpinner: logSpinner,
214
+ func: async () => (await config.managementClient.viewAsset().byAssetId(id).toPromise()).data,
215
+ action: 'view',
216
+ type: 'asset',
217
+ itemName: `id -> ${id}`
218
+ });
219
+ }
220
+ catch (error) {
221
+ if (!is404Error(error)) {
222
+ throw error;
223
+ }
224
+ return undefined;
225
+ }
226
+ }
227
+ })).filter(isNotUndefined);
228
+ };
229
+ const getItemStatesAsync = async (itemIds) => {
230
+ const items = await getContentItemsByIdsAsync(itemIds);
231
+ return Array.from(itemIds).map((itemId) => {
232
+ const item = items.find((m) => m.id === itemId);
233
+ return {
234
+ id: itemId,
235
+ item: item,
236
+ state: item ? 'exists' : 'doesNotExists'
237
+ };
238
+ });
239
+ };
240
+ const getAssetStatesAsync = async (assetIds) => {
241
+ const assets = await getAssetsByIdsAsync(assetIds);
242
+ return Array.from(assetIds).map((assetId) => {
243
+ const asset = assets.find((m) => m.id === assetId);
244
+ return {
245
+ id: assetId,
246
+ asset: asset,
247
+ state: asset ? 'exists' : 'doesNotExists'
248
+ };
249
+ });
250
+ };
251
+ const getElementByIds = () => {
252
+ const getFunc = (contentTypeId, elementId) => {
253
+ const contentType = findRequired(environmentData.contentTypes, (contentType) => contentType.contentTypeId === contentTypeId, `Could not find content type with id '${chalk.red(contentTypeId)}'`);
254
+ const element = findRequired(contentType.elements, (element) => element.id === elementId, `Could not find element with id '${chalk.red(elementId)}' in content type '${chalk.red(contentType.contentTypeCodename)}'`);
255
+ return element;
256
+ };
257
+ return getFunc;
258
+ };
259
+ const getExportContextAsync = async () => {
260
+ const preparedItems = await prepareExportItemsAsync(config.exportItems);
261
+ config.logger.log({
262
+ type: 'info',
263
+ message: `Extracting referenced items & assets from content`
264
+ });
265
+ const referencedData = itemsExtractionProcessor().extractReferencedDataFromExtractItems(preparedItems.map((exportItem) => {
266
+ return {
267
+ contentTypeId: exportItem.contentType.contentTypeId,
268
+ elements: exportItem.versions.flatMap((m) => m.languageVariant).flatMap((s) => s.elements)
269
+ };
270
+ }), getElementByIds());
271
+ const itemStates = await getItemStatesAsync(
272
+ // fetch both referenced items and items that are set to be exported
273
+ new Set([...referencedData.itemIds, ...preparedItems.map((m) => m.contentItem.id)]));
274
+ const assetStates = await getAssetStatesAsync(new Set([...referencedData.assetIds]));
275
+ const exportContext = {
276
+ getElement: getElementByIds(),
277
+ exportItems: preparedItems,
278
+ environmentData: environmentData,
279
+ referencedData: referencedData,
280
+ getAssetStateInSourceEnvironment: (id) => findRequired(assetStates, (m) => m.id === id, `Invalid state for asset '${chalk.red(id)}'. It is expected that all asset states will be initialized`),
281
+ getItemStateInSourceEnvironment: (id) => findRequired(itemStates, (m) => m.id === id, `Invalid state for item '${chalk.red(id)}'. It is expected that all item states will be initialized`)
282
+ };
283
+ return exportContext;
284
+ };
285
+ return {
286
+ getExportContextAsync
287
+ };
288
+ }
289
+ //# sourceMappingURL=export-context-fetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-context-fetcher.js","sourceRoot":"","sources":["../../../../lib/export/context/export-context-fetcher.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACH,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EAIV,cAAc,EACd,qBAAqB,EAErB,YAAY,EACZ,cAAc,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAUtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,MAAkC;IAC9E,MAAM,uBAAuB,GAAG,KAAK,IAA2C,EAAE;QAC9E,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAEhF,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;YACjE,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC;YAEnE,MAAM,eAAe,GAAiC;gBAClD,WAAW,EAAE,MAAM,SAAS,CAAC,sBAAsB,CAAC,WAAW,CAAC;gBAChE,YAAY,EAAE,MAAM,SAAS,CAAC,6BAA6B,CAAC,WAAW,CAAC;gBACxE,SAAS,EAAE,MAAM,SAAS,CAAC,oBAAoB,CAAC,WAAW,CAAC;gBAC5D,SAAS,EAAE,MAAM,SAAS,CAAC,oBAAoB,CAAC,WAAW,CAAC;gBAC5D,UAAU,EAAE,MAAM,SAAS,CAAC,qBAAqB,CAAC,WAAW,CAAC;aACjE,CAAC;YAEF,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;YAEpE,OAAO,eAAe,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,MAAM,uBAAuB,EAAE,CAAC;IAExD,MAAM,mBAAmB,GAAG,KAAK,EAC7B,UAA4B,EAC5B,UAA0B,EACsB,EAAE;QAClD,OAAO,MAAM,mBAAmB,CAAC;YAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,UAAU;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,CACb,CACI,MAAM,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CACtG,CAAC,IAAI;YACV,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,eAAe,UAAU,CAAC,YAAY,EAAE;SACrD,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,6BAA6B,GAAG,KAAK,EACvC,UAA4B,EAC5B,UAA0B,EACyC,EAAE;QACrE,OAAO,MAAM,mBAAmB,CAAC;YAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,UAAU;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,CACb,CACI,MAAM,MAAM,CAAC,gBAAgB;iBACxB,mBAAmB,EAAE;iBACrB,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC;iBACvC,kBAAkB,CAAC,UAAU,CAAC,gBAAgB,CAAC;iBAC/C,SAAS,EAAE,CACnB,CAAC,IAAI;YACV,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,eAAe,UAAU,CAAC,YAAY,eAAe,UAAU,CAAC,gBAAgB,GAAG;SAChG,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,0BAA0B,GAAG,CAC/B,eAA2E,EACpE,EAAE;QACT,OAAO,eAAe,CAAC,SAAS,CAAC,IAAI,CACjC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CACzF;YACG,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,KAAK,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,CAC3B,UAA4B,EAC5B,WAAoD,EACpD,eAA2E,EAC1D,EAAE;QACnB,OAAO;YACH,eAAe,EAAE,eAAe;YAChC,oBAAoB,EAAE,kBAAkB,CAAC;gBACrC,UAAU,EAAE,UAAU;gBACtB,WAAW,EAAE,WAAW;gBACxB,eAAe,EAAE,eAAe;aACnC,CAAC,CAAC,oBAAoB;SAC1B,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,0BAA0B,GAAG,KAAK,EACpC,UAA4B,EAC5B,WAAoD,EACpD,UAA0B,EACW,EAAE;QACvC,MAAM,qBAAqB,GAAG,MAAM,6BAA6B,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1F,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,UAAU,EAAE,WAAW,EAAE,qBAAqB,CAAC,CAAC;QAEnG,IAAI,0BAA0B,CAAC,qBAAqB,CAAC,EAAE,CAAC;YACpD,iFAAiF;YACjF,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,wBAAwB,GAAG,MAAM,gCAAgC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEhG,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC5B,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,UAAU,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAC5G,CAAC,CAAC;IAEF,MAAM,gCAAgC,GAAG,KAAK,EAC1C,UAA4B,EAC5B,UAA0B,EACqD,EAAE;QACjF,OAAO,MAAM,mBAAmB,CAAC;YAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,UAAU;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE;gBACb,IAAI,CAAC;oBACD,OAAO,CACH,MAAM,MAAM,CAAC,gBAAgB;yBACxB,mBAAmB,EAAE;yBACrB,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC;yBACvC,kBAAkB,CAAC,UAAU,CAAC,gBAAgB,CAAC;yBAC/C,SAAS,EAAE;yBACX,SAAS,EAAE,CACnB,CAAC,IAAI,CAAC;gBACX,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;wBACpB,OAAO,SAAS,CAAC;oBACrB,CAAC;oBACD,MAAM,KAAK,CAAC;gBAChB,CAAC;YACL,CAAC;YACD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,eAAe,UAAU,CAAC,YAAY,kBAAkB,UAAU,CAAC,gBAAgB,GAAG;SACnG,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,IAI3B,EAMC,EAAE;QACA,MAAM,UAAU,GAAG,YAAY,CAC3B,eAAe,CAAC,WAAW,EAC3B,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,EAChE,GAAG,EAAE;YACD,wBAAwB,CACpB,IAAI,CAAC,UAAU,EACf,uBAAuB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAC/E,CAAC;QACN,CAAC,CACJ,CAAC;QAEF,MAAM,WAAW,GAAG,YAAY,CAC5B,eAAe,CAAC,YAAY,EAC5B,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,aAAa,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EACvE,GAAG,EAAE;YACD,wBAAwB,CACpB,IAAI,CAAC,UAAU,EACf,yBAAyB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAClE,CAAC;QACN,CAAC,CACJ,CAAC;QAEF,MAAM,QAAQ,GAAG,YAAY,CACzB,eAAe,CAAC,SAAS,EACzB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,EAC9D,GAAG,EAAE;YACD,wBAAwB,CACpB,IAAI,CAAC,UAAU,EACf,qBAAqB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAC5E,CAAC;QACN,CAAC,CACJ,CAAC;QAEF,MAAM,QAAQ,GAAG,YAAY,CACzB,eAAe,CAAC,SAAS,EACzB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,EACjF,GAAG,EAAE;YACD,wBAAwB,CACpB,IAAI,CAAC,UAAU,EACf,qBAAqB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAC/F,CAAC;QACN,CAAC,CACJ,CAAC;QAEF,MAAM,YAAY,GAAG,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE;YACrF,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;YAC5E,YAAY,EAAE,0BAA0B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG;SAC9G,CAAC,CAAC;QAEH,OAAO;YACH,UAAU;YACV,QAAQ;YACR,QAAQ;YACR,WAAW;YACX,oBAAoB,EAAE,YAAY,CAAC,QAAQ;SAC9C,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAAG,KAAK,EACjC,WAAwC,EACV,EAAE;QAChC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;YACd,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,cAAc,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,oBAAoB;SAChG,CAAC,CAAC;QAEH,OAAO,MAAM,iBAAiB,CAA+B;YACzD,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,6CAA6C;YACrD,aAAa,EAAE,CAAC;YAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAChB,OAAO;oBACH,KAAK,EAAE,GAAG,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,gBAAgB,GAAG;oBAC1D,QAAQ,EAAE,cAAc;iBAC3B,CAAC;YACN,CAAC;YACD,KAAK,EAAE,WAAW;YAClB,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;gBAC5C,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBACvE,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;gBAExF,yCAAyC;gBACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;oBACd,wBAAwB,CAAC,WAAW,EAAE,iDAAiD,CAAC,CAAC;gBAC7F,CAAC;gBAED,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC;oBACvE,UAAU,EAAE,WAAW;oBACvB,WAAW,EAAE,WAAW;oBACxB,eAAe,EAAE,UAAU,CAAC,eAAe;iBAC9C,CAAC,CAAC;gBAEH,OAAO;oBACH,WAAW;oBACX,QAAQ;oBACR,WAAW;oBACX,WAAW;oBACX,QAAQ;oBACR,UAAU;oBACV,QAAQ;iBACX,CAAC;YACN,CAAC;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,yBAAyB,GAAG,KAAK,EACnC,OAA4B,EAC+B,EAAE;QAC7D,OAAO,CACH,MAAM,iBAAiB,CAA8D;YACjF,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,wBAAwB;YAChC,aAAa,EAAE,CAAC;YAChB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YAC1B,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE;gBACb,OAAO;oBACH,QAAQ,EAAE,aAAa;oBACvB,KAAK,EAAE,EAAE;iBACZ,CAAC;YACN,CAAC;YACD,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE;gBACnC,IAAI,CAAC;oBACD,OAAO,MAAM,mBAAmB,CAAC;wBAC7B,UAAU,EAAE,UAAU;wBACtB,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,IAAI,EAAE,KAAK,IAAI,EAAE,CACb,CACI,MAAM,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAC3E,CAAC,IAAI;wBACV,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,aAAa;wBACnB,QAAQ,EAAE,SAAS,EAAE,EAAE;qBAC1B,CAAC,CAAC;gBACP,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;wBACrB,MAAM,KAAK,CAAC;oBAChB,CAAC;oBAED,OAAO,SAAS,CAAC;gBACrB,CAAC;YACL,CAAC;SACJ,CAAC,CACL,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,KAAK,EAC7B,OAA4B,EACmB,EAAE;QACjD,OAAO,CACH,MAAM,iBAAiB,CAAkD;YACrE,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,iBAAiB;YACzB,aAAa,EAAE,CAAC;YAChB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YAC1B,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE;gBACb,OAAO;oBACH,QAAQ,EAAE,OAAO;oBACjB,KAAK,EAAE,EAAE;iBACZ,CAAC;YACN,CAAC;YACD,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE;gBACnC,IAAI,CAAC;oBACD,OAAO,MAAM,mBAAmB,CAAC;wBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,UAAU,EAAE,UAAU;wBACtB,IAAI,EAAE,KAAK,IAAI,EAAE,CACb,CACI,MAAM,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CACtE,CAAC,IAAI;wBACV,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,OAAO;wBACb,QAAQ,EAAE,SAAS,EAAE,EAAE;qBAC1B,CAAC,CAAC;gBACP,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;wBACrB,MAAM,KAAK,CAAC;oBAChB,CAAC;oBAED,OAAO,SAAS,CAAC;gBACrB,CAAC;YACL,CAAC;SACJ,CAAC,CACL,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,KAAK,EAC5B,OAA4B,EACwB,EAAE;QACtD,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAEvD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAmC,CAAC,MAAM,EAAE,EAAE;YACxE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;YAChD,OAAO;gBACH,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe;aAC3C,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,KAAK,EAC7B,QAA6B,EACwB,EAAE;QACvD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAEnD,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAoC,CAAC,OAAO,EAAE,EAAE;YAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YACnD,OAAO;gBACH,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe;aAC5C,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,GAA6B,EAAE;QACnD,MAAM,OAAO,GAA6B,CAAC,aAAqB,EAAE,SAAiB,EAAE,EAAE;YACnF,MAAM,WAAW,GAAG,YAAY,CAC5B,eAAe,CAAC,YAAY,EAC5B,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,aAAa,KAAK,aAAa,EAC5D,wCAAwC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CACtE,CAAC;YAEF,MAAM,OAAO,GAAG,YAAY,CACxB,WAAW,CAAC,QAAQ,EACpB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,EACrC,mCAAmC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,sBAAsB,KAAK,CAAC,GAAG,CAClF,WAAW,CAAC,mBAAmB,CAClC,GAAG,CACP,CAAC;YAEF,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC;QAEF,OAAO,OAAO,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,KAAK,IAA4B,EAAE;QAC7D,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAExE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;YACd,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,mDAAmD;SAC/D,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,wBAAwB,EAAE,CAAC,qCAAqC,CACnF,aAAa,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;YAC7B,OAAO;gBACH,aAAa,EAAE,UAAU,CAAC,WAAW,CAAC,aAAa;gBACnD,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;aAC7F,CAAC;QACN,CAAC,CAAC,EACF,eAAe,EAAE,CACpB,CAAC;QAEF,MAAM,UAAU,GAAgD,MAAM,kBAAkB;QACpF,oEAAoE;QACpE,IAAI,GAAG,CAAS,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAC9F,CAAC;QACF,MAAM,WAAW,GAAiD,MAAM,mBAAmB,CACvF,IAAI,GAAG,CAAS,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,CAChD,CAAC;QAEF,MAAM,aAAa,GAAkB;YACjC,UAAU,EAAE,eAAe,EAAE;YAC7B,WAAW,EAAE,aAAa;YAC1B,eAAe,EAAE,eAAe;YAChC,cAAc,EAAE,cAAc;YAC9B,gCAAgC,EAAE,CAAC,EAAE,EAAE,EAAE,CACrC,YAAY,CACR,WAAW,EACX,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAClB,4BAA4B,KAAK,CAAC,GAAG,CACjC,EAAE,CACL,6DAA6D,CACjE;YACL,+BAA+B,EAAE,CAAC,EAAE,EAAE,EAAE,CACpC,YAAY,CACR,UAAU,EACV,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAClB,2BAA2B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,4DAA4D,CACvG;SACR,CAAC;QAEF,OAAO,aAAa,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO;QACH,qBAAqB;KACxB,CAAC;AACN,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { ExportConfig } from './export.models.js';
2
+ import { MigrationData } from '../core/index.js';
3
+ export declare function exportManager(config: ExportConfig): {
4
+ exportAsync(): Promise<MigrationData>;
5
+ };