@kontent-ai/migration-toolkit 2.2.2 → 2.3.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.
- package/README.md +10 -9
- package/dist/es2022/core/logs/loggers.js +4 -1
- package/dist/es2022/core/logs/loggers.js.map +1 -1
- package/dist/es2022/core/models/core.models.d.ts +12 -0
- package/dist/es2022/core/models/log.models.d.ts +1 -1
- package/dist/es2022/core/models/migration.schema.d.ts +12 -12
- package/dist/es2022/core/models/migration.schema.js +2 -2
- package/dist/es2022/core/models/migration.schema.js.map +1 -1
- package/dist/es2022/core/utils/binary-data.utils.d.ts +4 -4
- package/dist/es2022/core/utils/binary-data.utils.js +2 -2
- package/dist/es2022/core/utils/binary-data.utils.js.map +1 -1
- package/dist/es2022/core/utils/global.utils.d.ts +3 -3
- package/dist/es2022/core/utils/global.utils.js +1 -1
- package/dist/es2022/core/utils/global.utils.js.map +1 -1
- package/dist/es2022/core/utils/http.utils.js +0 -3
- package/dist/es2022/core/utils/http.utils.js.map +1 -1
- package/dist/es2022/core/utils/processing-utils.d.ts +3 -3
- package/dist/es2022/core/utils/processing-utils.js +31 -4
- package/dist/es2022/core/utils/processing-utils.js.map +1 -1
- package/dist/es2022/export/context/export-context-fetcher.js +13 -7
- package/dist/es2022/export/context/export-context-fetcher.js.map +1 -1
- package/dist/es2022/export/export-manager.js +5 -4
- package/dist/es2022/export/export-manager.js.map +1 -1
- package/dist/es2022/file/file-manager.d.ts +3 -2
- package/dist/es2022/file/file-manager.js.map +1 -1
- package/dist/es2022/import/context/import-context-fetcher.js +14 -8
- package/dist/es2022/import/context/import-context-fetcher.js.map +1 -1
- package/dist/es2022/import/import-manager.d.ts +4 -0
- package/dist/es2022/import/import-manager.js +133 -4
- package/dist/es2022/import/import-manager.js.map +1 -1
- package/dist/es2022/import/import.models.d.ts +15 -5
- package/dist/es2022/import/importers/assets-importer.js.map +1 -1
- package/dist/es2022/import/importers/content-items-importer.d.ts +3 -3
- package/dist/es2022/import/importers/content-items-importer.js +11 -5
- package/dist/es2022/import/importers/content-items-importer.js.map +1 -1
- package/dist/es2022/import/importers/language-variant-importer.d.ts +4 -4
- package/dist/es2022/import/importers/language-variant-importer.js +4 -4
- package/dist/es2022/import/importers/language-variant-importer.js.map +1 -1
- package/dist/es2022/metadata.js +2 -2
- package/dist/es2022/node/cli/actions/import-action.js +3 -1
- package/dist/es2022/node/cli/actions/import-action.js.map +1 -1
- package/dist/es2022/toolkit/file.js +2 -2
- package/dist/es2022/toolkit/file.js.map +1 -1
- package/dist/es2022/toolkit/import.js +14 -2
- package/dist/es2022/toolkit/import.js.map +1 -1
- package/dist/es2022/translation/extraction/items-extraction.processor.d.ts +1 -1
- package/dist/es2022/translation/extraction/items-extraction.processor.js.map +1 -1
- package/dist/es2022/zip/zip-manager.d.ts +2 -2
- package/dist/es2022/zip/zip-manager.js.map +1 -1
- package/dist/es2022/zip/zip-packager.js +3 -4
- package/dist/es2022/zip/zip-packager.js.map +1 -1
- package/dist/es2022/zip/zip-transformer.js.map +1 -1
- package/dist/es2022/zip/zip.models.d.ts +4 -4
- package/lib/core/logs/loggers.ts +5 -1
- package/lib/core/models/core.models.ts +16 -0
- package/lib/core/models/log.models.ts +1 -1
- package/lib/core/models/migration.schema.ts +2 -2
- package/lib/core/utils/binary-data.utils.ts +6 -6
- package/lib/core/utils/global.utils.ts +8 -5
- package/lib/core/utils/http.utils.ts +1 -4
- package/lib/core/utils/processing-utils.ts +48 -18
- package/lib/export/context/export-context-fetcher.ts +67 -60
- package/lib/export/export-manager.ts +58 -56
- package/lib/file/file-manager.ts +4 -3
- package/lib/import/context/import-context-fetcher.ts +18 -13
- package/lib/import/import-manager.ts +174 -10
- package/lib/import/import.models.ts +20 -4
- package/lib/import/importers/assets-importer.ts +3 -9
- package/lib/import/importers/content-items-importer.ts +18 -17
- package/lib/import/importers/language-variant-importer.ts +32 -34
- package/lib/metadata.ts +2 -2
- package/lib/node/cli/actions/import-action.ts +3 -1
- package/lib/toolkit/file.ts +2 -2
- package/lib/toolkit/import.ts +16 -2
- package/lib/translation/extraction/items-extraction.processor.ts +3 -3
- package/lib/zip/zip-manager.ts +2 -2
- package/lib/zip/zip-packager.ts +3 -4
- package/lib/zip/zip-transformer.ts +1 -1
- package/lib/zip/zip.models.ts +3 -3
- package/package.json +13 -13
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ElementContracts, LanguageVariantModels, ManagementClient, WorkflowModels } from '@kontent-ai/management-sdk';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { match } from 'ts-pattern';
|
|
4
4
|
import {
|
|
@@ -16,13 +16,13 @@ import {
|
|
|
16
16
|
workflowHelper
|
|
17
17
|
} from '../../core/index.js';
|
|
18
18
|
import { importTransforms } from '../../translation/index.js';
|
|
19
|
-
import { ImportContext } from '../import.models.js';
|
|
19
|
+
import { ImportContext, ImportedItem, ImportedLanguageVariant } from '../import.models.js';
|
|
20
20
|
import { throwErrorForMigrationItem } from '../utils/import.utils.js';
|
|
21
21
|
import { workflowImporter as workflowImporterInit } from './workflow-importer.js';
|
|
22
22
|
|
|
23
23
|
export function languageVariantImporter(config: {
|
|
24
24
|
readonly logger: Logger;
|
|
25
|
-
readonly preparedContentItems: readonly
|
|
25
|
+
readonly preparedContentItems: readonly ImportedItem[];
|
|
26
26
|
readonly importContext: ImportContext;
|
|
27
27
|
readonly client: Readonly<ManagementClient>;
|
|
28
28
|
}) {
|
|
@@ -37,7 +37,7 @@ export function languageVariantImporter(config: {
|
|
|
37
37
|
readonly logSpinner: LogSpinnerData;
|
|
38
38
|
readonly migrationItem: MigrationItem;
|
|
39
39
|
readonly migrationItemVersion: MigrationItemVersion;
|
|
40
|
-
readonly preparedContentItem:
|
|
40
|
+
readonly preparedContentItem: ImportedItem;
|
|
41
41
|
}): Promise<Readonly<LanguageVariantModels.ContentItemLanguageVariant>> => {
|
|
42
42
|
return await runMapiRequestAsync({
|
|
43
43
|
logger: config.logger,
|
|
@@ -45,7 +45,7 @@ export function languageVariantImporter(config: {
|
|
|
45
45
|
return (
|
|
46
46
|
await config.client
|
|
47
47
|
.upsertLanguageVariant()
|
|
48
|
-
.byItemCodename(data.preparedContentItem.codename)
|
|
48
|
+
.byItemCodename(data.preparedContentItem.inputItem.system.codename)
|
|
49
49
|
.byLanguageCodename(data.migrationItem.system.language.codename)
|
|
50
50
|
.withData(() => {
|
|
51
51
|
return {
|
|
@@ -110,7 +110,7 @@ export function languageVariantImporter(config: {
|
|
|
110
110
|
readonly logSpinner: LogSpinnerData;
|
|
111
111
|
readonly migrationItem: MigrationItem;
|
|
112
112
|
readonly migrationItemVersion: MigrationItemVersion;
|
|
113
|
-
readonly preparedContentItem:
|
|
113
|
+
readonly preparedContentItem: ImportedItem;
|
|
114
114
|
readonly createNewVersion?: boolean;
|
|
115
115
|
}): Promise<Readonly<LanguageVariantModels.ContentItemLanguageVariant>> => {
|
|
116
116
|
// validate workflow
|
|
@@ -158,7 +158,7 @@ export function languageVariantImporter(config: {
|
|
|
158
158
|
const importLanguageVariantAsync = async (
|
|
159
159
|
logSpinner: LogSpinnerData,
|
|
160
160
|
migrationItem: MigrationItem,
|
|
161
|
-
preparedContentItem:
|
|
161
|
+
preparedContentItem: ImportedItem
|
|
162
162
|
): Promise<readonly LanguageVariantModels.ContentItemLanguageVariant[]> => {
|
|
163
163
|
const { draftVersion, publishedVersion } = categorizeVersions(migrationItem);
|
|
164
164
|
|
|
@@ -297,7 +297,7 @@ export function languageVariantImporter(config: {
|
|
|
297
297
|
return importTransformResult;
|
|
298
298
|
};
|
|
299
299
|
|
|
300
|
-
const importAsync = async (): Promise<readonly
|
|
300
|
+
const importAsync = async (): Promise<readonly ImportedLanguageVariant[]> => {
|
|
301
301
|
config.logger.log({
|
|
302
302
|
type: 'info',
|
|
303
303
|
message: `Importing '${chalk.yellow(
|
|
@@ -305,32 +305,30 @@ export function languageVariantImporter(config: {
|
|
|
305
305
|
)}' language variants`
|
|
306
306
|
});
|
|
307
307
|
|
|
308
|
-
return (
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
})
|
|
333
|
-
).flatMap((m) => m.map((s) => s));
|
|
308
|
+
return await processItemsAsync<MigrationItem, readonly Readonly<LanguageVariantModels.ContentItemLanguageVariant>[]>({
|
|
309
|
+
action: 'Importing language variants',
|
|
310
|
+
logger: config.logger,
|
|
311
|
+
parallelLimit: 1,
|
|
312
|
+
items: config.importContext.categorizedImportData.contentItems,
|
|
313
|
+
itemInfo: (input) => {
|
|
314
|
+
return {
|
|
315
|
+
itemType: 'languageVariant',
|
|
316
|
+
title: input.system.name,
|
|
317
|
+
partA: input.system.language.codename
|
|
318
|
+
};
|
|
319
|
+
},
|
|
320
|
+
processAsync: async (migrationItem, logSpinner) => {
|
|
321
|
+
const contentItem = findRequired(
|
|
322
|
+
config.preparedContentItems,
|
|
323
|
+
(item) => item.inputItem.system.codename === migrationItem.system.codename,
|
|
324
|
+
`Missing content item with codename '${chalk.red(
|
|
325
|
+
migrationItem.system.codename
|
|
326
|
+
)}'. Content item should have been prepepared.`
|
|
327
|
+
);
|
|
328
|
+
|
|
329
|
+
return await importLanguageVariantAsync(logSpinner, migrationItem, contentItem);
|
|
330
|
+
}
|
|
331
|
+
});
|
|
334
332
|
};
|
|
335
333
|
|
|
336
334
|
return {
|
package/lib/metadata.ts
CHANGED
|
@@ -7,6 +7,7 @@ export async function importActionAsync(argsFetcher: CliArgumentsFetcher): Promi
|
|
|
7
7
|
const environmentId = argsFetcher.getRequiredArgumentValue('targetEnvironmentId');
|
|
8
8
|
const apiKey = argsFetcher.getRequiredArgumentValue('targetApiKey');
|
|
9
9
|
const baseUrl = argsFetcher.getOptionalArgumentValue('baseUrl');
|
|
10
|
+
const createReportFile = argsFetcher.getBooleanArgumentValue('createReportFile', false);
|
|
10
11
|
const force = argsFetcher.getBooleanArgumentValue('force', false);
|
|
11
12
|
const filename = argsFetcher.getOptionalArgumentValue('filename') ?? defaultZipFilename;
|
|
12
13
|
|
|
@@ -27,7 +28,8 @@ export async function importActionAsync(argsFetcher: CliArgumentsFetcher): Promi
|
|
|
27
28
|
data: importData,
|
|
28
29
|
baseUrl: baseUrl,
|
|
29
30
|
environmentId: environmentId,
|
|
30
|
-
apiKey: apiKey
|
|
31
|
+
apiKey: apiKey,
|
|
32
|
+
createReportFile: createReportFile
|
|
31
33
|
});
|
|
32
34
|
|
|
33
35
|
log.log({ type: 'completed', message: `Import has been successful` });
|
package/lib/toolkit/file.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Buffer } from 'buffer';
|
|
1
|
+
import { Buffer as BufferProxy } from 'buffer';
|
|
2
2
|
import { defaultZipFilename, executeWithTrackingAsync, getDefaultLogger, Logger, MigrationData } from '../core/index.js';
|
|
3
3
|
import { fileManager } from '../file/index.js';
|
|
4
4
|
import { libMetadata } from '../metadata.js';
|
|
@@ -33,7 +33,7 @@ export async function storeAsync(config: StoreConfig): Promise<void> {
|
|
|
33
33
|
func: async () => {
|
|
34
34
|
const zipData = await zipManager(logger).createZipAsync(config.data);
|
|
35
35
|
|
|
36
|
-
if (zipData instanceof
|
|
36
|
+
if (zipData instanceof BufferProxy) {
|
|
37
37
|
await fileManager(logger).writeFileAsync(filename, zipData);
|
|
38
38
|
} else {
|
|
39
39
|
throw Error(`Cannot store '${filename}' on File system because the provided zip is not a Buffer`);
|
package/lib/toolkit/import.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { writeFile } from 'fs/promises';
|
|
1
3
|
import { executeWithTrackingAsync } from '../core/index.js';
|
|
2
|
-
import { ImportConfig, ImportResult, importManager } from '../import/index.js';
|
|
4
|
+
import { ImportConfig, ImportResult, importManager as _importManager } from '../import/index.js';
|
|
3
5
|
import { libMetadata } from '../metadata.js';
|
|
4
6
|
|
|
5
7
|
export async function importAsync(config: ImportConfig): Promise<ImportResult> {
|
|
@@ -15,7 +17,19 @@ export async function importAsync(config: ImportConfig): Promise<ImportResult> {
|
|
|
15
17
|
details: {}
|
|
16
18
|
},
|
|
17
19
|
func: async () => {
|
|
18
|
-
|
|
20
|
+
const importManager = _importManager(config);
|
|
21
|
+
const importResult = await importManager.importAsync();
|
|
22
|
+
|
|
23
|
+
if (config.createReportFile) {
|
|
24
|
+
const reportFile = importManager.getReportFile(importResult);
|
|
25
|
+
await writeFile(reportFile.filename, reportFile.content);
|
|
26
|
+
config.logger?.log({
|
|
27
|
+
type: 'writeFs',
|
|
28
|
+
message: `Report '${chalk.yellow(reportFile.filename)}' was created`
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return importResult;
|
|
19
33
|
},
|
|
20
34
|
logger: config.logger
|
|
21
35
|
});
|
|
@@ -12,7 +12,7 @@ import { GetFlattenedElementByCodenames } from '../../import/index.js';
|
|
|
12
12
|
import { richTextProcessor } from '../index.js';
|
|
13
13
|
|
|
14
14
|
export interface ExtractItemById {
|
|
15
|
-
readonly elements: Readonly<ElementModels.ContentItemElement>[];
|
|
15
|
+
readonly elements: readonly Readonly<ElementModels.ContentItemElement>[];
|
|
16
16
|
readonly contentTypeId: string;
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -95,7 +95,7 @@ export function itemsExtractionProcessor() {
|
|
|
95
95
|
{ itemIds: new Set(), assetIds: new Set() }
|
|
96
96
|
);
|
|
97
97
|
|
|
98
|
-
return
|
|
98
|
+
return {
|
|
99
99
|
itemIds: extractedIds.itemIds,
|
|
100
100
|
assetIds: extractedIds.assetIds
|
|
101
101
|
};
|
|
@@ -175,7 +175,7 @@ export function itemsExtractionProcessor() {
|
|
|
175
175
|
}
|
|
176
176
|
);
|
|
177
177
|
|
|
178
|
-
return
|
|
178
|
+
return {
|
|
179
179
|
itemCodenames: extractedCodenames.itemCodenames,
|
|
180
180
|
assetCodenames: extractedCodenames.assetCodenames
|
|
181
181
|
};
|
package/lib/zip/zip-manager.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Buffer } from 'buffer';
|
|
1
|
+
import { Buffer as BufferProxy } from 'buffer';
|
|
2
2
|
import JSZip from 'jszip';
|
|
3
3
|
import { Logger, MigrationData, getDefaultLogger } from '../core/index.js';
|
|
4
4
|
import { zipPackager } from './zip-packager.js';
|
|
@@ -17,7 +17,7 @@ export function zipManager(logger?: Logger) {
|
|
|
17
17
|
return await zipTransformer(zipPackager(new JSZip()), loggerToUse).transformAsync(migrationData);
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
const parseZipAsync = async (zipFile:
|
|
20
|
+
const parseZipAsync = async (zipFile: BufferProxy): Promise<MigrationData> => {
|
|
21
21
|
loggerToUse.log({
|
|
22
22
|
type: 'info',
|
|
23
23
|
message: `Parsing zip file`
|
package/lib/zip/zip-packager.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Buffer } from 'buffer';
|
|
1
|
+
import { Buffer as BufferProxy } from 'buffer';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import JSZip from 'jszip';
|
|
4
4
|
import { match } from 'ts-pattern';
|
|
@@ -23,7 +23,7 @@ export function zipPackager(jsZip: JSZip): ZipPackager {
|
|
|
23
23
|
(data) => data.size
|
|
24
24
|
)
|
|
25
25
|
.when(
|
|
26
|
-
(data) => data instanceof
|
|
26
|
+
(data) => data instanceof BufferProxy,
|
|
27
27
|
(data) => data.byteLength
|
|
28
28
|
)
|
|
29
29
|
.otherwise(() => {
|
|
@@ -75,8 +75,7 @@ export function zipPackager(jsZip: JSZip): ZipPackager {
|
|
|
75
75
|
return result;
|
|
76
76
|
},
|
|
77
77
|
async getBinaryDataAsync(filePath: string): Promise<FileBinaryData | undefined> {
|
|
78
|
-
|
|
79
|
-
return binaryData;
|
|
78
|
+
return await jsZip.file(filePath)?.async(getZipOutputType());
|
|
80
79
|
},
|
|
81
80
|
async getFileContentAsync(filePath: string): Promise<string | undefined> {
|
|
82
81
|
return await jsZip.file(filePath)?.async('string');
|
|
@@ -21,7 +21,7 @@ export function zipTransformer(zip: ZipPackager, logger?: Logger) {
|
|
|
21
21
|
const assetsFilename: string = 'assets.json';
|
|
22
22
|
const assetsBinaryFolderName: string = 'binary_data';
|
|
23
23
|
|
|
24
|
-
const getAssetFolderConfig = (asset: MigrationAsset): { partialColder: string; fullPath: string } => {
|
|
24
|
+
const getAssetFolderConfig = (asset: MigrationAsset): { readonly partialColder: string; readonly fullPath: string } => {
|
|
25
25
|
const codenamePartialFolder: string = asset.codename.slice(0, 2);
|
|
26
26
|
return {
|
|
27
27
|
partialColder: codenamePartialFolder,
|
package/lib/zip/zip.models.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Buffer } from 'buffer';
|
|
1
|
+
import { Buffer as BufferProxy } from 'buffer';
|
|
2
2
|
import { Logger } from '../core/index.js';
|
|
3
3
|
|
|
4
|
-
export type FileBinaryData =
|
|
4
|
+
export type FileBinaryData = BufferProxy | Blob;
|
|
5
5
|
export type ZipCompressionLevel = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
|
|
6
6
|
|
|
7
7
|
export type ZipPackager = {
|
|
8
8
|
addFile(filePath: string, data: string | FileBinaryData): void;
|
|
9
9
|
addFolder(name: string): ZipPackager;
|
|
10
|
-
generateZipAsync(config: { logger?: Logger; compressionLevel?: ZipCompressionLevel }): Promise<FileBinaryData>;
|
|
10
|
+
generateZipAsync(config: { readonly logger?: Logger; readonly compressionLevel?: ZipCompressionLevel }): Promise<FileBinaryData>;
|
|
11
11
|
getBinaryDataAsync(filePath: string): Promise<FileBinaryData | undefined>;
|
|
12
12
|
getFileContentAsync(filePath: string): Promise<string | undefined>;
|
|
13
13
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kontent-ai/migration-toolkit",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "This program can be used to import content related data into Kontent.ai from various formats. Additionally, it can also be used to export Kontent.ai data using Delivery API.",
|
|
5
5
|
"preferGlobal": true,
|
|
6
6
|
"private": false,
|
|
@@ -60,33 +60,33 @@
|
|
|
60
60
|
"bytes": "3.1.2",
|
|
61
61
|
"chalk": "5.3.0",
|
|
62
62
|
"deep-equal": "2.2.3",
|
|
63
|
-
"dotenv": "16.4.
|
|
63
|
+
"dotenv": "16.4.7",
|
|
64
64
|
"jszip": "3.10.1",
|
|
65
65
|
"mime": "4.0.4",
|
|
66
|
-
"ora": "8.1.
|
|
66
|
+
"ora": "8.1.1",
|
|
67
67
|
"p-limit": "6.1.0",
|
|
68
68
|
"prompts": "2.4.2",
|
|
69
69
|
"ts-pattern": "5.5.0",
|
|
70
70
|
"yargs": "17.7.2",
|
|
71
|
-
"zod": "3.
|
|
71
|
+
"zod": "3.24.1"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
|
-
"@eslint/js": "9.
|
|
74
|
+
"@eslint/js": "9.16.0",
|
|
75
75
|
"@types/browser-or-node": "1.3.2",
|
|
76
|
-
"@types/bytes": "3.1.
|
|
76
|
+
"@types/bytes": "3.1.5",
|
|
77
77
|
"@types/deep-equal": "1.0.4",
|
|
78
78
|
"@types/eslint__js": "8.42.3",
|
|
79
|
-
"@types/node": "22.
|
|
79
|
+
"@types/node": "22.10.2",
|
|
80
80
|
"@types/prompts": "2.4.9",
|
|
81
81
|
"@types/yargs": "17.0.33",
|
|
82
|
-
"@typescript-eslint/eslint-plugin": "8.
|
|
83
|
-
"@typescript-eslint/parser": "8.
|
|
84
|
-
"eslint": "9.
|
|
82
|
+
"@typescript-eslint/eslint-plugin": "8.18.0",
|
|
83
|
+
"@typescript-eslint/parser": "8.18.0",
|
|
84
|
+
"eslint": "9.16.0",
|
|
85
85
|
"standard-version": "9.5.0",
|
|
86
|
-
"tslib": "2.8.
|
|
86
|
+
"tslib": "2.8.1",
|
|
87
87
|
"tsx": "4.19.2",
|
|
88
88
|
"typescript": "5.6.3",
|
|
89
|
-
"typescript-eslint": "8.
|
|
90
|
-
"vitest": "2.1.
|
|
89
|
+
"typescript-eslint": "8.18.0",
|
|
90
|
+
"vitest": "2.1.8"
|
|
91
91
|
}
|
|
92
92
|
}
|