@kontent-ai/migration-toolkit 2.9.0 → 3.0.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 (235) 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 +27 -22
  11. package/dist/core/models/error.models.d.ts +14 -0
  12. package/dist/core/models/error.models.js +25 -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 +14 -14
  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 +1 -1
  26. package/dist/core/utils/confirm.utils.js +21 -20
  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 +8 -1
  34. package/dist/core/utils/global.utils.js +64 -9
  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 +34 -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/export/context/export-context-fetcher.d.ts +1 -1
  49. package/dist/export/context/export-context-fetcher.js +92 -62
  50. package/dist/export/context/export-context-fetcher.js.map +1 -1
  51. package/dist/export/export-manager.d.ts +2 -2
  52. package/dist/export/export-manager.js +46 -37
  53. package/dist/export/export-manager.js.map +1 -1
  54. package/dist/export/export.models.d.ts +21 -2
  55. package/dist/export/utils/export.utils.d.ts +1 -1
  56. package/dist/export/utils/export.utils.js +3 -2
  57. package/dist/export/utils/export.utils.js.map +1 -1
  58. package/dist/file/file-manager.d.ts +2 -2
  59. package/dist/file/file-manager.js +7 -7
  60. package/dist/file/file-manager.js.map +1 -1
  61. package/dist/import/comparers/asset-comparer.d.ts +2 -2
  62. package/dist/import/comparers/asset-comparer.js +12 -11
  63. package/dist/import/comparers/asset-comparer.js.map +1 -1
  64. package/dist/import/context/import-context-fetcher.d.ts +1 -1
  65. package/dist/import/context/import-context-fetcher.js +77 -73
  66. package/dist/import/context/import-context-fetcher.js.map +1 -1
  67. package/dist/import/import-manager.d.ts +1 -1
  68. package/dist/import/import-manager.js +59 -56
  69. package/dist/import/import-manager.js.map +1 -1
  70. package/dist/import/import.models.d.ts +6 -2
  71. package/dist/import/importers/assets-importer.d.ts +3 -3
  72. package/dist/import/importers/assets-importer.js +46 -43
  73. package/dist/import/importers/assets-importer.js.map +1 -1
  74. package/dist/import/importers/content-items-importer.d.ts +3 -3
  75. package/dist/import/importers/content-items-importer.js +28 -25
  76. package/dist/import/importers/content-items-importer.js.map +1 -1
  77. package/dist/import/importers/language-variant-importer.d.ts +3 -3
  78. package/dist/import/importers/language-variant-importer.js +45 -45
  79. package/dist/import/importers/language-variant-importer.js.map +1 -1
  80. package/dist/import/importers/workflow-importer.d.ts +3 -2
  81. package/dist/import/importers/workflow-importer.js +58 -54
  82. package/dist/import/importers/workflow-importer.js.map +1 -1
  83. package/dist/import/utils/import.utils.d.ts +1 -1
  84. package/dist/import/utils/import.utils.js +3 -2
  85. package/dist/import/utils/import.utils.js.map +1 -1
  86. package/dist/index.d.ts +11 -7
  87. package/dist/index.js +10 -8
  88. package/dist/index.js.map +1 -1
  89. package/dist/metadata.js +3 -3
  90. package/dist/metadata.js.map +1 -1
  91. package/dist/node/cli/actions/export-action.d.ts +1 -1
  92. package/dist/node/cli/actions/export-action.js +28 -23
  93. package/dist/node/cli/actions/export-action.js.map +1 -1
  94. package/dist/node/cli/actions/import-action.d.ts +1 -1
  95. package/dist/node/cli/actions/import-action.js +15 -12
  96. package/dist/node/cli/actions/import-action.js.map +1 -1
  97. package/dist/node/cli/actions/migrate-action.d.ts +1 -1
  98. package/dist/node/cli/actions/migrate-action.js +25 -22
  99. package/dist/node/cli/actions/migrate-action.js.map +1 -1
  100. package/dist/node/cli/app.js +13 -12
  101. package/dist/node/cli/app.js.map +1 -1
  102. package/dist/node/cli/args/args-fetcher.d.ts +1 -1
  103. package/dist/node/cli/args/args-fetcher.js +14 -13
  104. package/dist/node/cli/args/args-fetcher.js.map +1 -1
  105. package/dist/node/cli/args/args-setter.d.ts +1 -1
  106. package/dist/node/cli/args/args-setter.js +8 -6
  107. package/dist/node/cli/args/args-setter.js.map +1 -1
  108. package/dist/node/cli/cli.models.d.ts +2 -2
  109. package/dist/node/cli/commands.js +68 -56
  110. package/dist/node/cli/commands.js.map +1 -1
  111. package/dist/toolkit/elements-builder.d.ts +1 -1
  112. package/dist/toolkit/elements-builder.js +12 -12
  113. package/dist/toolkit/elements-builder.js.map +1 -1
  114. package/dist/toolkit/export.d.ts +2 -2
  115. package/dist/toolkit/export.js +19 -2
  116. package/dist/toolkit/export.js.map +1 -1
  117. package/dist/toolkit/file.d.ts +2 -1
  118. package/dist/toolkit/file.js +46 -13
  119. package/dist/toolkit/file.js.map +1 -1
  120. package/dist/toolkit/import.d.ts +1 -1
  121. package/dist/toolkit/import.js +31 -14
  122. package/dist/toolkit/import.js.map +1 -1
  123. package/dist/toolkit/migrate.d.ts +13 -4
  124. package/dist/toolkit/migrate.js +37 -17
  125. package/dist/toolkit/migrate.js.map +1 -1
  126. package/dist/translation/extraction/items-extraction.processor.d.ts +5 -4
  127. package/dist/translation/extraction/items-extraction.processor.js +73 -35
  128. package/dist/translation/extraction/items-extraction.processor.js.map +1 -1
  129. package/dist/translation/helpers/export-placeholder.utils.d.ts +11 -0
  130. package/dist/translation/helpers/export-placeholder.utils.js +11 -0
  131. package/dist/translation/helpers/export-placeholder.utils.js.map +1 -0
  132. package/dist/translation/helpers/rich-text.processor.d.ts +6 -6
  133. package/dist/translation/helpers/rich-text.processor.js +38 -38
  134. package/dist/translation/helpers/rich-text.processor.js.map +1 -1
  135. package/dist/translation/transforms/export-transforms.d.ts +2 -2
  136. package/dist/translation/transforms/export-transforms.js +93 -67
  137. package/dist/translation/transforms/export-transforms.js.map +1 -1
  138. package/dist/translation/transforms/import-transforms.d.ts +2 -2
  139. package/dist/translation/transforms/import-transforms.js +38 -40
  140. package/dist/translation/transforms/import-transforms.js.map +1 -1
  141. package/dist/zip/zip-manager.d.ts +4 -3
  142. package/dist/zip/zip-manager.js +9 -9
  143. package/dist/zip/zip-manager.js.map +1 -1
  144. package/dist/zip/zip-packager.d.ts +2 -2
  145. package/dist/zip/zip-packager.js +19 -17
  146. package/dist/zip/zip-packager.js.map +1 -1
  147. package/dist/zip/zip-transformer.d.ts +3 -2
  148. package/dist/zip/zip-transformer.js +16 -15
  149. package/dist/zip/zip-transformer.js.map +1 -1
  150. package/dist/zip/zip.models.d.ts +2 -2
  151. package/lib/core/config.ts +6 -6
  152. package/lib/core/helpers/workflow-helper.ts +190 -185
  153. package/lib/core/logs/loggers.ts +52 -52
  154. package/lib/core/models/core.models.ts +128 -119
  155. package/lib/core/models/error.models.ts +41 -0
  156. package/lib/core/models/log.models.ts +20 -20
  157. package/lib/core/models/migration.models.ts +54 -54
  158. package/lib/core/models/migration.schema.ts +108 -108
  159. package/lib/core/utils/array.utils.ts +43 -42
  160. package/lib/core/utils/binary-data.utils.ts +16 -16
  161. package/lib/core/utils/confirm.utils.ts +106 -105
  162. package/lib/core/utils/error.utils.ts +69 -72
  163. package/lib/core/utils/external-id.utils.ts +4 -4
  164. package/lib/core/utils/global.utils.ts +86 -15
  165. package/lib/core/utils/http.utils.ts +23 -23
  166. package/lib/core/utils/management-client-utils.ts +186 -186
  167. package/lib/core/utils/processing-utils.ts +82 -82
  168. package/lib/core/utils/run.utils.ts +50 -50
  169. package/lib/export/context/export-context-fetcher.ts +472 -447
  170. package/lib/export/export-manager.ts +233 -232
  171. package/lib/export/export.models.ts +71 -56
  172. package/lib/export/utils/export.utils.ts +9 -7
  173. package/lib/file/file-manager.ts +28 -28
  174. package/lib/import/comparers/asset-comparer.ts +107 -106
  175. package/lib/import/context/import-context-fetcher.ts +462 -462
  176. package/lib/import/import-manager.ts +243 -240
  177. package/lib/import/import.models.ts +69 -67
  178. package/lib/import/importers/assets-importer.ts +240 -236
  179. package/lib/import/importers/content-items-importer.ts +126 -122
  180. package/lib/import/importers/language-variant-importer.ts +324 -328
  181. package/lib/import/importers/workflow-importer.ts +372 -367
  182. package/lib/import/utils/import.utils.ts +9 -7
  183. package/lib/index.ts +12 -8
  184. package/lib/metadata.ts +3 -4
  185. package/lib/node/cli/actions/export-action.ts +43 -38
  186. package/lib/node/cli/actions/import-action.ts +32 -29
  187. package/lib/node/cli/actions/migrate-action.ts +49 -46
  188. package/lib/node/cli/app.ts +21 -21
  189. package/lib/node/cli/args/args-fetcher.ts +55 -54
  190. package/lib/node/cli/args/args-setter.ts +34 -32
  191. package/lib/node/cli/cli.models.ts +17 -17
  192. package/lib/node/cli/commands.ts +165 -153
  193. package/lib/toolkit/elements-builder.ts +69 -69
  194. package/lib/toolkit/export.ts +21 -4
  195. package/lib/toolkit/file.ts +59 -22
  196. package/lib/toolkit/import.ts +32 -15
  197. package/lib/toolkit/migrate.ts +60 -31
  198. package/lib/translation/extraction/items-extraction.processor.ts +203 -173
  199. package/lib/translation/helpers/export-placeholder.utils.ts +10 -0
  200. package/lib/translation/helpers/rich-text.processor.ts +311 -311
  201. package/lib/translation/transforms/export-transforms.ts +313 -279
  202. package/lib/translation/transforms/import-transforms.ts +188 -191
  203. package/lib/zip/zip-manager.ts +28 -27
  204. package/lib/zip/zip-packager.ts +75 -73
  205. package/lib/zip/zip-transformer.ts +112 -107
  206. package/lib/zip/zip.models.ts +7 -7
  207. package/package.json +91 -85
  208. package/dist/core/index.d.ts +0 -16
  209. package/dist/core/index.js +0 -17
  210. package/dist/core/index.js.map +0 -1
  211. package/dist/export/index.d.ts +0 -2
  212. package/dist/export/index.js +0 -3
  213. package/dist/export/index.js.map +0 -1
  214. package/dist/file/index.d.ts +0 -1
  215. package/dist/file/index.js +0 -2
  216. package/dist/file/index.js.map +0 -1
  217. package/dist/import/index.d.ts +0 -2
  218. package/dist/import/index.js +0 -3
  219. package/dist/import/index.js.map +0 -1
  220. package/dist/toolkit/index.d.ts +0 -5
  221. package/dist/toolkit/index.js +0 -6
  222. package/dist/toolkit/index.js.map +0 -1
  223. package/dist/translation/index.d.ts +0 -4
  224. package/dist/translation/index.js +0 -5
  225. package/dist/translation/index.js.map +0 -1
  226. package/dist/zip/index.d.ts +0 -4
  227. package/dist/zip/index.js +0 -5
  228. package/dist/zip/index.js.map +0 -1
  229. package/lib/core/index.ts +0 -18
  230. package/lib/export/index.ts +0 -2
  231. package/lib/file/index.ts +0 -1
  232. package/lib/import/index.ts +0 -2
  233. package/lib/toolkit/index.ts +0 -5
  234. package/lib/translation/index.ts +0 -4
  235. package/lib/zip/index.ts +0 -4
@@ -1,139 +1,143 @@
1
- import type { ContentItemModels, ManagementClient } from '@kontent-ai/management-sdk';
2
- import chalk from 'chalk';
3
- import type { LogSpinnerData, Logger, MigrationItem } from '../../core/index.js';
4
- import { findRequired, processItemsAsync, runMapiRequestAsync } from '../../core/index.js';
5
- import type { ImportContext, ImportedItem } from '../import.models.js';
1
+ import type { ContentItemModels, ManagementClient } from "@kontent-ai/management-sdk";
2
+ import chalk from "chalk";
3
+ import type { Logger, LogSpinnerData } from "../../core/models/log.models.js";
4
+ import type { MigrationItem } from "../../core/models/migration.models.js";
5
+ import { findRequired } from "../../core/utils/array.utils.js";
6
+ import { processItemsAsync } from "../../core/utils/processing-utils.js";
7
+ import { runMapiRequestAsync } from "../../core/utils/run.utils.js";
8
+ import type { ImportContext, ImportedItem } from "../import.models.js";
6
9
 
7
10
  export function contentItemsImporter(data: {
8
- readonly logger: Logger;
9
- readonly client: Readonly<ManagementClient>;
10
- readonly importContext: ImportContext;
11
+ readonly logger: Logger;
12
+ readonly client: Readonly<ManagementClient>;
13
+ readonly importContext: ImportContext;
11
14
  }) {
12
- const shouldUpdateContentItem = (migrationItem: MigrationItem, contentItem: Readonly<ContentItemModels.ContentItem>): boolean => {
13
- const collection = findRequired(
14
- data.importContext.environmentData.collections,
15
- (collection) => collection.id === contentItem.collection.id,
16
- `Invalid collection with id '${contentItem.collection.id}' for content item '${contentItem.codename}'`
17
- );
15
+ const shouldUpdateContentItem = (migrationItem: MigrationItem, contentItem: Readonly<ContentItemModels.ContentItem>): boolean => {
16
+ const collection = findRequired(
17
+ data.importContext.environmentData.collections,
18
+ (collection) => collection.id === contentItem.collection.id,
19
+ `Invalid collection with id '${contentItem.collection.id}' for content item '${contentItem.codename}'`,
20
+ );
18
21
 
19
- return migrationItem.system.name !== contentItem.name || migrationItem.system.collection.codename !== collection.codename;
20
- };
22
+ return migrationItem.system.name !== contentItem.name || migrationItem.system.collection.codename !== collection.codename;
23
+ };
21
24
 
22
- const prepareContentItemAsync = async (
23
- logSpinner: LogSpinnerData,
24
- migrationItem: MigrationItem
25
- ): Promise<{ contentItem: Readonly<ContentItemModels.ContentItem>; status: 'created' | 'itemAlreadyExists' }> => {
26
- const itemStateInTargetEnv = data.importContext.getItemStateInTargetEnvironment(migrationItem.system.codename);
25
+ const prepareContentItemAsync = async (
26
+ logSpinner: LogSpinnerData,
27
+ migrationItem: MigrationItem,
28
+ ): Promise<{ contentItem: Readonly<ContentItemModels.ContentItem>; status: "created" | "itemAlreadyExists" }> => {
29
+ const itemStateInTargetEnv = data.importContext.getItemStateInTargetEnvironment(migrationItem.system.codename);
27
30
 
28
- if (itemStateInTargetEnv.state === 'exists' && itemStateInTargetEnv.item) {
29
- return {
30
- contentItem: itemStateInTargetEnv.item,
31
- status: 'itemAlreadyExists'
32
- };
33
- }
31
+ if (itemStateInTargetEnv.state === "exists" && itemStateInTargetEnv.item) {
32
+ return {
33
+ contentItem: itemStateInTargetEnv.item,
34
+ status: "itemAlreadyExists",
35
+ };
36
+ }
34
37
 
35
- const createdContentItem = await runMapiRequestAsync({
36
- logger: data.logger,
37
- func: async () =>
38
- (
39
- await data.client
40
- .addContentItem()
41
- .withData({
42
- name: migrationItem.system.name,
43
- type: {
44
- codename: migrationItem.system.type.codename
45
- },
46
- external_id: itemStateInTargetEnv.externalIdToUse,
47
- codename: migrationItem.system.codename,
48
- collection: {
49
- codename: migrationItem.system.collection.codename
50
- }
51
- })
52
- .toPromise()
53
- ).data,
54
- action: 'create',
55
- type: 'contentItem',
56
- logSpinner: logSpinner,
57
- itemName: `${migrationItem.system.codename} (${migrationItem.system.language.codename})`
58
- });
38
+ const createdContentItem = await runMapiRequestAsync({
39
+ logger: data.logger,
40
+ func: async () =>
41
+ (
42
+ await data.client
43
+ .addContentItem()
44
+ .withData({
45
+ name: migrationItem.system.name,
46
+ type: {
47
+ codename: migrationItem.system.type.codename,
48
+ },
49
+ external_id: itemStateInTargetEnv.externalIdToUse,
50
+ codename: migrationItem.system.codename,
51
+ collection: {
52
+ codename: migrationItem.system.collection.codename,
53
+ },
54
+ })
55
+ .toPromise()
56
+ ).data,
57
+ action: "create",
58
+ type: "contentItem",
59
+ logSpinner: logSpinner,
60
+ itemName: `${migrationItem.system.codename} (${migrationItem.system.language.codename})`,
61
+ });
59
62
 
60
- return {
61
- contentItem: createdContentItem,
62
- status: 'created'
63
- };
64
- };
63
+ return {
64
+ contentItem: createdContentItem,
65
+ status: "created",
66
+ };
67
+ };
65
68
 
66
- const importContentItemAsync = async (
67
- logSpinner: LogSpinnerData,
68
- migrationItem: MigrationItem
69
- ): Promise<Readonly<ContentItemModels.ContentItem>> => {
70
- const preparedContentItemResult = await prepareContentItemAsync(logSpinner, migrationItem);
69
+ const importContentItemAsync = async (
70
+ logSpinner: LogSpinnerData,
71
+ migrationItem: MigrationItem,
72
+ ): Promise<Readonly<ContentItemModels.ContentItem>> => {
73
+ const preparedContentItemResult = await prepareContentItemAsync(logSpinner, migrationItem);
71
74
 
72
- // check if name should be updated, no other changes are supported
73
- if (preparedContentItemResult.status === 'itemAlreadyExists') {
74
- if (shouldUpdateContentItem(migrationItem, preparedContentItemResult.contentItem)) {
75
- await runMapiRequestAsync({
76
- logger: data.logger,
77
- func: async () => {
78
- await data.client
79
- .upsertContentItem()
80
- .byItemCodename(migrationItem.system.codename)
81
- .withData({
82
- name: migrationItem.system.name,
83
- collection: {
84
- codename: migrationItem.system.collection.codename
85
- }
86
- })
87
- .toPromise();
88
- },
89
- action: 'upsert',
90
- type: 'contentItem',
91
- logSpinner: logSpinner,
92
- itemName: `${migrationItem.system.codename} (${migrationItem.system.language.codename})`
93
- });
94
- }
95
- }
75
+ // check if name should be updated, no other changes are supported
76
+ if (preparedContentItemResult.status === "itemAlreadyExists") {
77
+ if (shouldUpdateContentItem(migrationItem, preparedContentItemResult.contentItem)) {
78
+ await runMapiRequestAsync({
79
+ logger: data.logger,
80
+ func: async () => {
81
+ await data.client
82
+ .upsertContentItem()
83
+ .byItemCodename(migrationItem.system.codename)
84
+ .withData({
85
+ name: migrationItem.system.name,
86
+ collection: {
87
+ codename: migrationItem.system.collection.codename,
88
+ },
89
+ })
90
+ .toPromise();
91
+ },
92
+ action: "upsert",
93
+ type: "contentItem",
94
+ logSpinner: logSpinner,
95
+ itemName: `${migrationItem.system.codename} (${migrationItem.system.language.codename})`,
96
+ });
97
+ }
98
+ }
96
99
 
97
- return preparedContentItemResult.contentItem;
98
- };
100
+ return preparedContentItemResult.contentItem;
101
+ };
99
102
 
100
- const importAsync = async (): Promise<readonly ImportedItem[]> => {
101
- // Only import unique content items based on their codename. The input may contain items in various language variants which share
102
- // the same underlying content item.
103
- const contentItemsToImport = data.importContext.categorizedImportData.contentItems.reduce<Readonly<MigrationItem[]>>(
104
- (filteredItems, item) => {
105
- if (filteredItems.some((m) => m.system.codename === item.system.codename)) {
106
- return filteredItems;
107
- }
103
+ const importAsync = async (): Promise<readonly ImportedItem[]> => {
104
+ // Only import unique content items based on their codename. The input may contain items in various language variants which share
105
+ // the same underlying content item.
106
+ const contentItemsToImport = data.importContext.categorizedImportData.contentItems.reduce<MigrationItem[]>(
107
+ (filteredItems, item) => {
108
+ if (filteredItems.some((m) => m.system.codename === item.system.codename)) {
109
+ return filteredItems;
110
+ }
108
111
 
109
- return [...filteredItems, item];
110
- },
111
- []
112
- );
112
+ filteredItems.push(item);
113
+ return filteredItems;
114
+ },
115
+ [],
116
+ );
113
117
 
114
- data.logger.log({
115
- type: 'info',
116
- message: `Importing '${chalk.yellow(contentItemsToImport.length.toString())}' content items`
117
- });
118
+ data.logger.log({
119
+ type: "info",
120
+ message: `Importing '${chalk.yellow(contentItemsToImport.length.toString())}' content items`,
121
+ });
118
122
 
119
- return await processItemsAsync<MigrationItem, Readonly<ContentItemModels.ContentItem>>({
120
- action: 'Importing content items',
121
- logger: data.logger,
122
- parallelLimit: 1,
123
- items: contentItemsToImport,
124
- itemInfo: (item) => {
125
- return {
126
- itemType: 'contentItem',
127
- title: `${item.system.codename} -> ${item.system.type.codename}`
128
- };
129
- },
130
- processAsync: async (item, logSpinner) => {
131
- return await importContentItemAsync(logSpinner, item);
132
- }
133
- });
134
- };
123
+ return await processItemsAsync<MigrationItem, Readonly<ContentItemModels.ContentItem>>({
124
+ action: "Importing content items",
125
+ logger: data.logger,
126
+ parallelLimit: 1,
127
+ items: contentItemsToImport,
128
+ itemInfo: (item) => {
129
+ return {
130
+ itemType: "contentItem",
131
+ title: `${item.system.codename} -> ${item.system.type.codename}`,
132
+ };
133
+ },
134
+ processAsync: async (item, logSpinner) => {
135
+ return await importContentItemAsync(logSpinner, item);
136
+ },
137
+ });
138
+ };
135
139
 
136
- return {
137
- importAsync
138
- };
140
+ return {
141
+ importAsync,
142
+ };
139
143
  }