@kontent-ai/migration-toolkit 2.9.1 → 3.0.0-1

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 (239) hide show
  1. package/README.md +19 -17
  2. package/dist/core/config.js +3 -3
  3. package/dist/core/config.js.map +1 -1
  4. package/dist/core/helpers/workflow-helper.d.ts +1 -1
  5. package/dist/core/helpers/workflow-helper.js +28 -26
  6. package/dist/core/helpers/workflow-helper.js.map +1 -1
  7. package/dist/core/logs/loggers.d.ts +1 -1
  8. package/dist/core/logs/loggers.js +15 -15
  9. package/dist/core/logs/loggers.js.map +1 -1
  10. package/dist/core/models/core.models.d.ts +29 -22
  11. package/dist/core/models/error.models.d.ts +26 -0
  12. package/dist/core/models/error.models.js +104 -0
  13. package/dist/core/models/error.models.js.map +1 -0
  14. package/dist/core/models/log.models.d.ts +2 -2
  15. package/dist/core/models/migration.models.d.ts +17 -19
  16. package/dist/core/models/migration.schema.d.ts +9 -9
  17. package/dist/core/models/migration.schema.js +28 -28
  18. package/dist/core/models/migration.schema.js.map +1 -1
  19. package/dist/core/utils/array.utils.d.ts +1 -1
  20. package/dist/core/utils/array.utils.js +4 -3
  21. package/dist/core/utils/array.utils.js.map +1 -1
  22. package/dist/core/utils/binary-data.utils.d.ts +1 -1
  23. package/dist/core/utils/binary-data.utils.js +6 -6
  24. package/dist/core/utils/binary-data.utils.js.map +1 -1
  25. package/dist/core/utils/confirm.utils.d.ts +3 -1
  26. package/dist/core/utils/confirm.utils.js +92 -24
  27. package/dist/core/utils/confirm.utils.js.map +1 -1
  28. package/dist/core/utils/error.utils.d.ts +1 -1
  29. package/dist/core/utils/error.utils.js +16 -14
  30. package/dist/core/utils/error.utils.js.map +1 -1
  31. package/dist/core/utils/external-id.utils.js +1 -1
  32. package/dist/core/utils/external-id.utils.js.map +1 -1
  33. package/dist/core/utils/global.utils.d.ts +3 -3
  34. package/dist/core/utils/global.utils.js +20 -18
  35. package/dist/core/utils/global.utils.js.map +1 -1
  36. package/dist/core/utils/http.utils.d.ts +2 -2
  37. package/dist/core/utils/http.utils.js +4 -4
  38. package/dist/core/utils/http.utils.js.map +1 -1
  39. package/dist/core/utils/management-client-utils.d.ts +4 -4
  40. package/dist/core/utils/management-client-utils.js +37 -34
  41. package/dist/core/utils/management-client-utils.js.map +1 -1
  42. package/dist/core/utils/processing-utils.d.ts +4 -4
  43. package/dist/core/utils/processing-utils.js +13 -13
  44. package/dist/core/utils/processing-utils.js.map +1 -1
  45. package/dist/core/utils/run.utils.d.ts +2 -2
  46. package/dist/core/utils/run.utils.js +7 -7
  47. package/dist/core/utils/run.utils.js.map +1 -1
  48. package/dist/core/utils/try.utils.d.ts +14 -0
  49. package/dist/core/utils/try.utils.js +18 -0
  50. package/dist/core/utils/try.utils.js.map +1 -0
  51. package/dist/export/context/export-context-fetcher.d.ts +1 -1
  52. package/dist/export/context/export-context-fetcher.js +92 -62
  53. package/dist/export/context/export-context-fetcher.js.map +1 -1
  54. package/dist/export/export-manager.d.ts +2 -2
  55. package/dist/export/export-manager.js +73 -59
  56. package/dist/export/export-manager.js.map +1 -1
  57. package/dist/export/export.models.d.ts +21 -2
  58. package/dist/export/utils/export.utils.d.ts +1 -1
  59. package/dist/export/utils/export.utils.js +3 -2
  60. package/dist/export/utils/export.utils.js.map +1 -1
  61. package/dist/file/file-manager.d.ts +2 -2
  62. package/dist/file/file-manager.js +7 -7
  63. package/dist/file/file-manager.js.map +1 -1
  64. package/dist/import/comparers/asset-comparer.d.ts +2 -2
  65. package/dist/import/comparers/asset-comparer.js +12 -11
  66. package/dist/import/comparers/asset-comparer.js.map +1 -1
  67. package/dist/import/context/import-context-fetcher.d.ts +1 -1
  68. package/dist/import/context/import-context-fetcher.js +77 -73
  69. package/dist/import/context/import-context-fetcher.js.map +1 -1
  70. package/dist/import/import-manager.d.ts +1 -1
  71. package/dist/import/import-manager.js +59 -56
  72. package/dist/import/import-manager.js.map +1 -1
  73. package/dist/import/import.models.d.ts +6 -2
  74. package/dist/import/importers/assets-importer.d.ts +3 -3
  75. package/dist/import/importers/assets-importer.js +46 -43
  76. package/dist/import/importers/assets-importer.js.map +1 -1
  77. package/dist/import/importers/content-items-importer.d.ts +3 -3
  78. package/dist/import/importers/content-items-importer.js +28 -25
  79. package/dist/import/importers/content-items-importer.js.map +1 -1
  80. package/dist/import/importers/language-variant-importer.d.ts +3 -3
  81. package/dist/import/importers/language-variant-importer.js +45 -45
  82. package/dist/import/importers/language-variant-importer.js.map +1 -1
  83. package/dist/import/importers/workflow-importer.d.ts +3 -2
  84. package/dist/import/importers/workflow-importer.js +58 -54
  85. package/dist/import/importers/workflow-importer.js.map +1 -1
  86. package/dist/import/utils/import.utils.d.ts +1 -1
  87. package/dist/import/utils/import.utils.js +3 -2
  88. package/dist/import/utils/import.utils.js.map +1 -1
  89. package/dist/index.d.ts +11 -7
  90. package/dist/index.js +10 -8
  91. package/dist/index.js.map +1 -1
  92. package/dist/metadata.js +3 -3
  93. package/dist/metadata.js.map +1 -1
  94. package/dist/node/cli/actions/export-action.d.ts +1 -1
  95. package/dist/node/cli/actions/export-action.js +29 -23
  96. package/dist/node/cli/actions/export-action.js.map +1 -1
  97. package/dist/node/cli/actions/import-action.d.ts +1 -1
  98. package/dist/node/cli/actions/import-action.js +15 -12
  99. package/dist/node/cli/actions/import-action.js.map +1 -1
  100. package/dist/node/cli/actions/migrate-action.d.ts +1 -1
  101. package/dist/node/cli/actions/migrate-action.js +26 -22
  102. package/dist/node/cli/actions/migrate-action.js.map +1 -1
  103. package/dist/node/cli/app.js +13 -12
  104. package/dist/node/cli/app.js.map +1 -1
  105. package/dist/node/cli/args/args-fetcher.d.ts +1 -1
  106. package/dist/node/cli/args/args-fetcher.js +14 -13
  107. package/dist/node/cli/args/args-fetcher.js.map +1 -1
  108. package/dist/node/cli/args/args-setter.d.ts +1 -1
  109. package/dist/node/cli/args/args-setter.js +8 -6
  110. package/dist/node/cli/args/args-setter.js.map +1 -1
  111. package/dist/node/cli/cli.models.d.ts +2 -2
  112. package/dist/node/cli/commands.js +68 -56
  113. package/dist/node/cli/commands.js.map +1 -1
  114. package/dist/toolkit/elements-builder.d.ts +1 -1
  115. package/dist/toolkit/elements-builder.js +12 -12
  116. package/dist/toolkit/elements-builder.js.map +1 -1
  117. package/dist/toolkit/export.d.ts +2 -2
  118. package/dist/toolkit/export.js +8 -8
  119. package/dist/toolkit/export.js.map +1 -1
  120. package/dist/toolkit/file.d.ts +2 -1
  121. package/dist/toolkit/file.js +18 -16
  122. package/dist/toolkit/file.js.map +1 -1
  123. package/dist/toolkit/import.d.ts +1 -1
  124. package/dist/toolkit/import.js +12 -12
  125. package/dist/toolkit/import.js.map +1 -1
  126. package/dist/toolkit/migrate.d.ts +13 -4
  127. package/dist/toolkit/migrate.js +15 -13
  128. package/dist/toolkit/migrate.js.map +1 -1
  129. package/dist/translation/extraction/items-extraction.processor.d.ts +5 -4
  130. package/dist/translation/extraction/items-extraction.processor.js +73 -35
  131. package/dist/translation/extraction/items-extraction.processor.js.map +1 -1
  132. package/dist/translation/helpers/export-placeholder.utils.d.ts +11 -0
  133. package/dist/translation/helpers/export-placeholder.utils.js +11 -0
  134. package/dist/translation/helpers/export-placeholder.utils.js.map +1 -0
  135. package/dist/translation/helpers/rich-text.processor.d.ts +6 -6
  136. package/dist/translation/helpers/rich-text.processor.js +38 -38
  137. package/dist/translation/helpers/rich-text.processor.js.map +1 -1
  138. package/dist/translation/transforms/export-transforms.d.ts +2 -2
  139. package/dist/translation/transforms/export-transforms.js +93 -67
  140. package/dist/translation/transforms/export-transforms.js.map +1 -1
  141. package/dist/translation/transforms/import-transforms.d.ts +2 -2
  142. package/dist/translation/transforms/import-transforms.js +38 -40
  143. package/dist/translation/transforms/import-transforms.js.map +1 -1
  144. package/dist/zip/zip-manager.d.ts +4 -3
  145. package/dist/zip/zip-manager.js +9 -9
  146. package/dist/zip/zip-manager.js.map +1 -1
  147. package/dist/zip/zip-packager.d.ts +2 -2
  148. package/dist/zip/zip-packager.js +19 -17
  149. package/dist/zip/zip-packager.js.map +1 -1
  150. package/dist/zip/zip-transformer.d.ts +3 -2
  151. package/dist/zip/zip-transformer.js +16 -15
  152. package/dist/zip/zip-transformer.js.map +1 -1
  153. package/dist/zip/zip.models.d.ts +2 -2
  154. package/lib/core/config.ts +6 -6
  155. package/lib/core/helpers/workflow-helper.ts +190 -185
  156. package/lib/core/logs/loggers.ts +52 -52
  157. package/lib/core/models/core.models.ts +130 -119
  158. package/lib/core/models/error.models.ts +148 -0
  159. package/lib/core/models/log.models.ts +20 -20
  160. package/lib/core/models/migration.models.ts +54 -57
  161. package/lib/core/models/migration.schema.ts +108 -108
  162. package/lib/core/utils/array.utils.ts +43 -42
  163. package/lib/core/utils/binary-data.utils.ts +16 -16
  164. package/lib/core/utils/confirm.utils.ts +184 -106
  165. package/lib/core/utils/error.utils.ts +69 -72
  166. package/lib/core/utils/external-id.utils.ts +4 -4
  167. package/lib/core/utils/global.utils.ts +81 -75
  168. package/lib/core/utils/http.utils.ts +23 -23
  169. package/lib/core/utils/management-client-utils.ts +189 -186
  170. package/lib/core/utils/processing-utils.ts +82 -82
  171. package/lib/core/utils/run.utils.ts +50 -50
  172. package/lib/core/utils/try.utils.ts +30 -0
  173. package/lib/export/context/export-context-fetcher.ts +472 -447
  174. package/lib/export/export-manager.ts +250 -232
  175. package/lib/export/export.models.ts +71 -56
  176. package/lib/export/utils/export.utils.ts +9 -7
  177. package/lib/file/file-manager.ts +28 -28
  178. package/lib/import/comparers/asset-comparer.ts +107 -106
  179. package/lib/import/context/import-context-fetcher.ts +462 -462
  180. package/lib/import/import-manager.ts +243 -240
  181. package/lib/import/import.models.ts +69 -67
  182. package/lib/import/importers/assets-importer.ts +240 -236
  183. package/lib/import/importers/content-items-importer.ts +126 -122
  184. package/lib/import/importers/language-variant-importer.ts +324 -328
  185. package/lib/import/importers/workflow-importer.ts +372 -367
  186. package/lib/import/utils/import.utils.ts +9 -7
  187. package/lib/index.ts +12 -8
  188. package/lib/metadata.ts +3 -4
  189. package/lib/node/cli/actions/export-action.ts +44 -38
  190. package/lib/node/cli/actions/import-action.ts +32 -29
  191. package/lib/node/cli/actions/migrate-action.ts +50 -46
  192. package/lib/node/cli/app.ts +21 -21
  193. package/lib/node/cli/args/args-fetcher.ts +55 -54
  194. package/lib/node/cli/args/args-setter.ts +34 -32
  195. package/lib/node/cli/cli.models.ts +17 -17
  196. package/lib/node/cli/commands.ts +165 -153
  197. package/lib/toolkit/elements-builder.ts +69 -69
  198. package/lib/toolkit/export.ts +21 -21
  199. package/lib/toolkit/file.ts +59 -53
  200. package/lib/toolkit/import.ts +32 -32
  201. package/lib/toolkit/migrate.ts +60 -49
  202. package/lib/translation/extraction/items-extraction.processor.ts +203 -173
  203. package/lib/translation/helpers/export-placeholder.utils.ts +10 -0
  204. package/lib/translation/helpers/rich-text.processor.ts +311 -311
  205. package/lib/translation/transforms/export-transforms.ts +313 -279
  206. package/lib/translation/transforms/import-transforms.ts +188 -191
  207. package/lib/zip/zip-manager.ts +28 -27
  208. package/lib/zip/zip-packager.ts +75 -73
  209. package/lib/zip/zip-transformer.ts +112 -107
  210. package/lib/zip/zip.models.ts +7 -7
  211. package/package.json +91 -84
  212. package/dist/core/index.d.ts +0 -16
  213. package/dist/core/index.js +0 -17
  214. package/dist/core/index.js.map +0 -1
  215. package/dist/export/index.d.ts +0 -2
  216. package/dist/export/index.js +0 -3
  217. package/dist/export/index.js.map +0 -1
  218. package/dist/file/index.d.ts +0 -1
  219. package/dist/file/index.js +0 -2
  220. package/dist/file/index.js.map +0 -1
  221. package/dist/import/index.d.ts +0 -2
  222. package/dist/import/index.js +0 -3
  223. package/dist/import/index.js.map +0 -1
  224. package/dist/toolkit/index.d.ts +0 -5
  225. package/dist/toolkit/index.js +0 -6
  226. package/dist/toolkit/index.js.map +0 -1
  227. package/dist/translation/index.d.ts +0 -4
  228. package/dist/translation/index.js +0 -5
  229. package/dist/translation/index.js.map +0 -1
  230. package/dist/zip/index.d.ts +0 -4
  231. package/dist/zip/index.js +0 -5
  232. package/dist/zip/index.js.map +0 -1
  233. package/lib/core/index.ts +0 -18
  234. package/lib/export/index.ts +0 -2
  235. package/lib/file/index.ts +0 -1
  236. package/lib/import/index.ts +0 -2
  237. package/lib/toolkit/index.ts +0 -5
  238. package/lib/translation/index.ts +0 -4
  239. package/lib/zip/index.ts +0 -4
@@ -1,264 +1,267 @@
1
- import type { ManagementClient } from '@kontent-ai/management-sdk';
2
- import chalk from 'chalk';
3
- import type { Logger } from '../core/index.js';
4
- import { defaultExternalIdGenerator, extractErrorData, getDefaultLogger, getMigrationManagementClient } from '../core/index.js';
5
- import { importContextFetcherAsync } from './context/import-context-fetcher.js';
6
- import type { ImportConfig, ImportContext, ImportedItem, ImportedLanguageVariant, ImportResult } from './import.models.js';
7
- import { assetsImporter } from './importers/assets-importer.js';
8
- import { contentItemsImporter } from './importers/content-items-importer.js';
9
- import { languageVariantImporter } from './importers/language-variant-importer.js';
1
+ import type { ManagementClient } from "@kontent-ai/management-sdk";
2
+ import chalk from "chalk";
3
+ import { getDefaultLogger } from "../core/logs/loggers.js";
4
+ import type { Logger } from "../core/models/log.models.js";
5
+ import { extractErrorData } from "../core/utils/error.utils.js";
6
+ import { defaultExternalIdGenerator } from "../core/utils/external-id.utils.js";
7
+ import { getMigrationManagementClient } from "../core/utils/management-client-utils.js";
8
+ import { importContextFetcherAsync } from "./context/import-context-fetcher.js";
9
+ import type { ImportConfig, ImportContext, ImportedItem, ImportedLanguageVariant, ImportResult } from "./import.models.js";
10
+ import { assetsImporter } from "./importers/assets-importer.js";
11
+ import { contentItemsImporter } from "./importers/content-items-importer.js";
12
+ import { languageVariantImporter } from "./importers/language-variant-importer.js";
10
13
 
11
14
  const reportFilename: string = `import-report.json`;
12
15
 
13
16
  type ReportResult = {
14
- readonly errorsCount: number;
15
- readonly assets: {
16
- readonly count: number;
17
- readonly successful: Array<{ readonly codename: string }>;
18
- readonly failed: Array<{ readonly codename: string; readonly error: string }>;
19
- };
20
- readonly languageVariants: {
21
- readonly count: number;
22
- readonly successful: Array<{
23
- readonly codename: string;
24
- readonly language: { readonly codename: string };
25
- readonly type: { readonly codename: string };
26
- }>;
27
- readonly failed: Array<{
28
- readonly codename: string;
29
- readonly language: { readonly codename: string };
30
- readonly type: { readonly codename: string };
31
- readonly error: string;
32
- }>;
33
- };
34
- readonly contentItems: {
35
- readonly count: number;
36
- readonly successful: Array<{ readonly codename: string }>;
37
- readonly failed: Array<{ readonly codename: string; readonly type: { readonly codename: string }; readonly error: string }>;
38
- };
17
+ readonly errorsCount: number;
18
+ readonly assets: {
19
+ readonly count: number;
20
+ readonly successful: Array<{ readonly codename: string }>;
21
+ readonly failed: Array<{ readonly codename: string; readonly error: string }>;
22
+ };
23
+ readonly languageVariants: {
24
+ readonly count: number;
25
+ readonly successful: Array<{
26
+ readonly codename: string;
27
+ readonly language: { readonly codename: string };
28
+ readonly type: { readonly codename: string };
29
+ }>;
30
+ readonly failed: Array<{
31
+ readonly codename: string;
32
+ readonly language: { readonly codename: string };
33
+ readonly type: { readonly codename: string };
34
+ readonly error: string;
35
+ }>;
36
+ };
37
+ readonly contentItems: {
38
+ readonly count: number;
39
+ readonly successful: Array<{ readonly codename: string }>;
40
+ readonly failed: Array<{ readonly codename: string; readonly type: { readonly codename: string }; readonly error: string }>;
41
+ };
39
42
  };
40
43
 
41
44
  export function importManager(config: ImportConfig) {
42
- const logger: Logger = config.logger ?? getDefaultLogger();
43
- const targetEnvironmentClient: Readonly<ManagementClient> = getMigrationManagementClient(config);
45
+ const logger: Logger = config.logger ?? getDefaultLogger();
46
+ const targetEnvironmentClient: Readonly<ManagementClient> = getMigrationManagementClient(config);
44
47
 
45
- const importAssetsAsync = async (importContext: ImportContext): Promise<Pick<ImportResult, 'editedAssets' | 'uploadedAssets'>> => {
46
- if (!importContext.categorizedImportData.assets.length) {
47
- logger.log({
48
- type: 'info',
49
- message: `There are no assets to import`
50
- });
51
- return {
52
- editedAssets: [],
53
- uploadedAssets: []
54
- };
55
- }
48
+ const importAssetsAsync = async (importContext: ImportContext): Promise<Pick<ImportResult, "editedAssets" | "uploadedAssets">> => {
49
+ if (!importContext.categorizedImportData.assets.length) {
50
+ logger.log({
51
+ type: "info",
52
+ message: `There are no assets to import`,
53
+ });
54
+ return {
55
+ editedAssets: [],
56
+ uploadedAssets: [],
57
+ };
58
+ }
56
59
 
57
- return await assetsImporter({
58
- client: targetEnvironmentClient,
59
- importContext: importContext,
60
- logger: logger
61
- }).importAsync();
62
- };
60
+ return await assetsImporter({
61
+ client: targetEnvironmentClient,
62
+ importContext: importContext,
63
+ logger: logger,
64
+ }).importAsync();
65
+ };
63
66
 
64
- const importContentItemsAsync = async (importContext: ImportContext): Promise<readonly ImportedItem[]> => {
65
- if (!importContext.categorizedImportData.contentItems.length) {
66
- logger.log({
67
- type: 'info',
68
- message: `There are no content items to import`
69
- });
70
- }
67
+ const importContentItemsAsync = async (importContext: ImportContext): Promise<readonly ImportedItem[]> => {
68
+ if (!importContext.categorizedImportData.contentItems.length) {
69
+ logger.log({
70
+ type: "info",
71
+ message: `There are no content items to import`,
72
+ });
73
+ }
71
74
 
72
- return await contentItemsImporter({
73
- client: targetEnvironmentClient,
74
- importContext: importContext,
75
- logger: logger
76
- }).importAsync();
77
- };
75
+ return await contentItemsImporter({
76
+ client: targetEnvironmentClient,
77
+ importContext: importContext,
78
+ logger: logger,
79
+ }).importAsync();
80
+ };
78
81
 
79
- const importLanguageVariantsAsync = async (
80
- importContext: ImportContext,
81
- contentItems: readonly ImportedItem[]
82
- ): Promise<readonly ImportedLanguageVariant[]> => {
83
- if (!importContext.categorizedImportData.contentItems.length) {
84
- logger.log({
85
- type: 'info',
86
- message: `There are no language variants to import`
87
- });
88
- }
82
+ const importLanguageVariantsAsync = async (
83
+ importContext: ImportContext,
84
+ contentItems: readonly ImportedItem[],
85
+ ): Promise<readonly ImportedLanguageVariant[]> => {
86
+ if (!importContext.categorizedImportData.contentItems.length) {
87
+ logger.log({
88
+ type: "info",
89
+ message: `There are no language variants to import`,
90
+ });
91
+ }
89
92
 
90
- return await languageVariantImporter({
91
- client: targetEnvironmentClient,
92
- importContext: importContext,
93
- logger: logger,
94
- preparedContentItems: contentItems
95
- }).importAsync();
96
- };
93
+ return await languageVariantImporter({
94
+ client: targetEnvironmentClient,
95
+ importContext: importContext,
96
+ logger: logger,
97
+ preparedContentItems: contentItems,
98
+ }).importAsync();
99
+ };
97
100
 
98
- const getReportResult = (importResult: ImportResult): ReportResult => {
99
- return {
100
- errorsCount:
101
- importResult.editedAssets.filter((m) => m.state === 'error').length +
102
- importResult.uploadedAssets.filter((m) => m.state === 'error').length +
103
- importResult.contentItems.filter((m) => m.state === 'error').length +
104
- importResult.languageVariants.filter((m) => m.state === 'error').length,
105
- assets: {
106
- count: importResult.uploadedAssets.length + importResult.editedAssets.length,
107
- successful: [
108
- ...importResult.uploadedAssets.filter((m) => m.state === 'valid').map((m) => m.inputItem.codename),
109
- ...importResult.editedAssets.filter((m) => m.state === 'valid').map((m) => m.inputItem.migrationAsset.codename)
110
- ].map((m) => {
111
- return {
112
- codename: m
113
- };
114
- }),
115
- failed: [
116
- ...importResult.uploadedAssets
117
- .filter((m) => m.state === 'error')
118
- .map((m) => {
119
- return {
120
- codename: m.inputItem.codename,
121
- error: extractErrorData(m.error).message
122
- };
123
- }),
124
- ...importResult.editedAssets
125
- .filter((m) => m.state === 'error')
126
- .map((m) => {
127
- return {
128
- codename: m.inputItem.migrationAsset.codename,
129
- error: extractErrorData(m.error).message
130
- };
131
- })
132
- ]
133
- },
134
- contentItems: {
135
- count: importResult.contentItems.length,
136
- successful: importResult.contentItems
137
- .filter((m) => m.state === 'valid')
138
- .map((m) => {
139
- return {
140
- codename: m.inputItem.system.codename
141
- };
142
- }),
143
- failed: importResult.contentItems
144
- .filter((m) => m.state === 'error')
145
- .map((m) => {
146
- return {
147
- codename: m.inputItem.system.codename,
148
- type: m.inputItem.system.type,
149
- error: extractErrorData(m.error).message
150
- };
151
- })
152
- },
153
- languageVariants: {
154
- count: importResult.languageVariants.length,
155
- successful: importResult.languageVariants
156
- .filter((m) => m.state === 'valid')
157
- .map((m) => {
158
- return {
159
- codename: m.inputItem.system.codename,
160
- language: m.inputItem.system.language,
161
- type: m.inputItem.system.type
162
- };
163
- }),
164
- failed: importResult.languageVariants
165
- .filter((m) => m.state === 'error')
166
- .map((m) => {
167
- return {
168
- codename: m.inputItem.system.codename,
169
- language: m.inputItem.system.language,
170
- type: m.inputItem.system.type,
171
- error: extractErrorData(m.error).message
172
- };
173
- })
174
- }
175
- };
176
- };
101
+ const getReportResult = (importResult: ImportResult): ReportResult => {
102
+ return {
103
+ errorsCount:
104
+ importResult.editedAssets.filter((m) => m.state === "error").length +
105
+ importResult.uploadedAssets.filter((m) => m.state === "error").length +
106
+ importResult.contentItems.filter((m) => m.state === "error").length +
107
+ importResult.languageVariants.filter((m) => m.state === "error").length,
108
+ assets: {
109
+ count: importResult.uploadedAssets.length + importResult.editedAssets.length,
110
+ successful: [
111
+ ...importResult.uploadedAssets.filter((m) => m.state === "valid").map((m) => m.inputItem.codename),
112
+ ...importResult.editedAssets.filter((m) => m.state === "valid").map((m) => m.inputItem.migrationAsset.codename),
113
+ ].map((m) => {
114
+ return {
115
+ codename: m,
116
+ };
117
+ }),
118
+ failed: [
119
+ ...importResult.uploadedAssets
120
+ .filter((m) => m.state === "error")
121
+ .map((m) => {
122
+ return {
123
+ codename: m.inputItem.codename,
124
+ error: extractErrorData(m.error).message,
125
+ };
126
+ }),
127
+ ...importResult.editedAssets
128
+ .filter((m) => m.state === "error")
129
+ .map((m) => {
130
+ return {
131
+ codename: m.inputItem.migrationAsset.codename,
132
+ error: extractErrorData(m.error).message,
133
+ };
134
+ }),
135
+ ],
136
+ },
137
+ contentItems: {
138
+ count: importResult.contentItems.length,
139
+ successful: importResult.contentItems
140
+ .filter((m) => m.state === "valid")
141
+ .map((m) => {
142
+ return {
143
+ codename: m.inputItem.system.codename,
144
+ };
145
+ }),
146
+ failed: importResult.contentItems
147
+ .filter((m) => m.state === "error")
148
+ .map((m) => {
149
+ return {
150
+ codename: m.inputItem.system.codename,
151
+ type: m.inputItem.system.type,
152
+ error: extractErrorData(m.error).message,
153
+ };
154
+ }),
155
+ },
156
+ languageVariants: {
157
+ count: importResult.languageVariants.length,
158
+ successful: importResult.languageVariants
159
+ .filter((m) => m.state === "valid")
160
+ .map((m) => {
161
+ return {
162
+ codename: m.inputItem.system.codename,
163
+ language: m.inputItem.system.language,
164
+ type: m.inputItem.system.type,
165
+ };
166
+ }),
167
+ failed: importResult.languageVariants
168
+ .filter((m) => m.state === "error")
169
+ .map((m) => {
170
+ return {
171
+ codename: m.inputItem.system.codename,
172
+ language: m.inputItem.system.language,
173
+ type: m.inputItem.system.type,
174
+ error: extractErrorData(m.error).message,
175
+ };
176
+ }),
177
+ },
178
+ };
179
+ };
177
180
 
178
- const printReportToConsole = (reportResult: ReportResult, logger: Logger): void => {
179
- const errors: readonly string[][] = [
180
- ...reportResult.assets.failed.map((m) => [
181
- `Object type: ${chalk.yellow('Asset')}`,
182
- `Codename: ${chalk.yellow(m.codename)}`,
183
- `${chalk.red(m.error)}`
184
- ]),
185
- ...reportResult.contentItems.failed.map((m) => [
186
- `Object type: ${chalk.yellow('Content item')}`,
187
- `Codename:${chalk.yellow(m.codename)}`,
188
- `Content Type: ${chalk.yellow(m.type.codename)}`,
189
- `${chalk.red(m.error)}`
190
- ]),
191
- ...reportResult.languageVariants.failed.map((m) => [
192
- `Object type: ${chalk.yellow('Language variant')}`,
193
- `Codename: ${chalk.yellow(m.codename)}`,
194
- `Language: ${chalk.yellow(m.language.codename)}`,
195
- `Content Type: ${chalk.yellow(m.type.codename)}`,
196
- `${chalk.red(m.error)}`
197
- ])
198
- ];
181
+ const printReportToConsole = (reportResult: ReportResult, logger: Logger): void => {
182
+ const errors: readonly string[][] = [
183
+ ...reportResult.assets.failed.map((m) => [
184
+ `Object type: ${chalk.yellow("Asset")}`,
185
+ `Codename: ${chalk.yellow(m.codename)}`,
186
+ `${chalk.red(m.error)}`,
187
+ ]),
188
+ ...reportResult.contentItems.failed.map((m) => [
189
+ `Object type: ${chalk.yellow("Content item")}`,
190
+ `Codename:${chalk.yellow(m.codename)}`,
191
+ `Content Type: ${chalk.yellow(m.type.codename)}`,
192
+ `${chalk.red(m.error)}`,
193
+ ]),
194
+ ...reportResult.languageVariants.failed.map((m) => [
195
+ `Object type: ${chalk.yellow("Language variant")}`,
196
+ `Codename: ${chalk.yellow(m.codename)}`,
197
+ `Language: ${chalk.yellow(m.language.codename)}`,
198
+ `Content Type: ${chalk.yellow(m.type.codename)}`,
199
+ `${chalk.red(m.error)}`,
200
+ ]),
201
+ ];
199
202
 
200
- errors.forEach((error, index) => {
201
- logger.log({ message: `${chalk.red(`\nError #${index + 1}`)}` });
202
- error.forEach((m) => {
203
- logger.log({ message: m });
204
- });
205
- });
206
- };
203
+ errors.forEach((error, index) => {
204
+ logger.log({ message: `${chalk.red(`\nError #${index + 1}`)}` });
205
+ error.forEach((m) => {
206
+ logger.log({ message: m });
207
+ });
208
+ });
209
+ };
207
210
 
208
- return {
209
- async importAsync(): Promise<ImportResult> {
210
- const importContext = await (
211
- await importContextFetcherAsync({
212
- migrationData: config.data,
213
- externalIdGenerator: config.externalIdGenerator ?? defaultExternalIdGenerator,
214
- logger: logger,
215
- managementClient: targetEnvironmentClient
216
- })
217
- ).getImportContextAsync();
211
+ return {
212
+ async importAsync(): Promise<ImportResult> {
213
+ const importContext = await (
214
+ await importContextFetcherAsync({
215
+ migrationData: config.data,
216
+ externalIdGenerator: config.externalIdGenerator ?? defaultExternalIdGenerator,
217
+ logger: logger,
218
+ managementClient: targetEnvironmentClient,
219
+ })
220
+ ).getImportContextAsync();
218
221
 
219
- // #1 Assets
220
- const { editedAssets, uploadedAssets } = await importAssetsAsync(importContext);
222
+ // #1 Assets
223
+ const { editedAssets, uploadedAssets } = await importAssetsAsync(importContext);
221
224
 
222
- // #2 Content items
223
- const contentItems = await importContentItemsAsync(importContext);
225
+ // #2 Content items
226
+ const contentItems = await importContentItemsAsync(importContext);
224
227
 
225
- // #3 Language variants
226
- const languageVariants = await importLanguageVariantsAsync(importContext, contentItems);
228
+ // #3 Language variants
229
+ const languageVariants = await importLanguageVariantsAsync(importContext, contentItems);
227
230
 
228
- const reportResult = getReportResult({
229
- contentItems,
230
- editedAssets,
231
- languageVariants,
232
- uploadedAssets
233
- });
231
+ const reportResult = getReportResult({
232
+ contentItems,
233
+ editedAssets,
234
+ languageVariants,
235
+ uploadedAssets,
236
+ });
234
237
 
235
- if (reportResult.errorsCount) {
236
- printReportToConsole(reportResult, logger);
237
- logger.log({
238
- type: 'completed',
239
- message: `Finished import with '${chalk.red(reportResult.errorsCount)}' ${
240
- reportResult.errorsCount === 1 ? 'error' : 'errors'
241
- }`
242
- });
243
- } else {
244
- logger.log({
245
- type: 'completed',
246
- message: `Finished import`
247
- });
248
- }
238
+ if (reportResult.errorsCount) {
239
+ printReportToConsole(reportResult, logger);
240
+ logger.log({
241
+ type: "completed",
242
+ message: `Finished import with '${chalk.red(reportResult.errorsCount)}' ${
243
+ reportResult.errorsCount === 1 ? "error" : "errors"
244
+ }`,
245
+ });
246
+ } else {
247
+ logger.log({
248
+ type: "completed",
249
+ message: `Finished import`,
250
+ });
251
+ }
249
252
 
250
- return {
251
- editedAssets,
252
- uploadedAssets,
253
- contentItems,
254
- languageVariants
255
- };
256
- },
257
- getReportFile(importResult: ImportResult): { readonly filename: string; readonly content: string } {
258
- return {
259
- filename: reportFilename,
260
- content: JSON.stringify(getReportResult(importResult))
261
- };
262
- }
263
- };
253
+ return {
254
+ editedAssets,
255
+ uploadedAssets,
256
+ contentItems,
257
+ languageVariants,
258
+ };
259
+ },
260
+ getReportFile(importResult: ImportResult): { readonly filename: string; readonly content: string } {
261
+ return {
262
+ filename: reportFilename,
263
+ content: JSON.stringify(getReportResult(importResult)),
264
+ };
265
+ },
266
+ };
264
267
  }